我有考试并试图找到这个问题的答案,但到目前为止我没有成功。问题是:
举个例子 白盒测试说一切都好,但黑盒 测试显示有错误。黑盒测试示例说 一切正常,但白盒测试显示有错误。
假设"黑盒测试"是指某种集成测试(即仅使用公共可见的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
以正确返回10
,这实际上会破坏此代码!
该示例已简化,这只是可能发生的一个问题,但它应该让您朝着正确的方向思考:-)我鼓励你想想其他(可能更好!)的例子。