1

我有一个考试并试图找到这个问题的答案,但到目前为止我没有成功。问题是:

举个例子白盒测试说一切正常,但黑盒测试说有错误。一个示例黑盒测试表明一切正常,但白盒测试表明存在错误。

4

1 回答 1

2

假设“黑盒测试”是指某种集成测试(即仅使用公共可见 UI),而“白盒测试”是指某种单元测试(即暴露技术内部) :

考虑一个场景,您希望向用户显示的结果是10,可能是发票或类似的计算。
这在您的集成测试中工作正常,但是当您进行单元测试时,负责获取的函数10实际上正在返回9
可能发生这种情况的一个原因是集成测试运行的代码比单元测试多得多,例如,您可能会这样做:

def _function_responsible_for_10
   return 9
end

def output_to_user
  value = _function_responsible_for_10()
  return value + 1
end

看到了return value + 1吗?这会为您提供正确的输出,但您会以错误的方式获得它。这仅在这种情况下发生,但是当您稍后添加更多依赖function_responsible_for_10(或更改output_to_user)的代码时,您会突然得到不同的(意外)结果。也许更糟糕的是,您可以_function_responsible_for_10在某个时候修复正确的 return 10,这实际上会破坏这段代码!

该示例已简化,这只是可能发生的一个问题,但它应该让您朝着正确的方向思考 :-) 我鼓励您自己考虑其他(可能更好!)示例。

于 2015-01-02T17:01:31.317 回答