白盒测试如何失败,而黑盒测试成功(反之亦然)



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

举个例子 白盒测试说一切都好,但黑盒 测试显示有错误。黑盒测试示例说 一切正常,但白盒测试显示有错误。

假设"黑盒测试"是指某种集成测试(即仅使用公共可见的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,这实际上会破坏此代码!

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

相关内容

  • 没有找到相关文章

最新更新