能否讲一下diff怎么用

diff怎么用没太弄明白,能否讲一下呢

测试准则 (Test oracle)

测试准则,是软件测试员或软件工程师用来检测测试是否通过的一种机制。测试准则决定在给定的测试用例输入下产品应有的输出,从而与被测试系统的输出做比较。这一术语在威廉·豪登的《测试理论入门》一书中首次被使用和定义。艾琳·韦约克又对不同类型的测试准则给予了拓展。测试准则经常独立于被测试系统

判断一个被测产品的正确性,要有标的参考。传统测试用例中,是通过预期结果实现的,这个只是参考之一。如果预期结果动态化,把预期结果的定义,从写死的数字变成从另外一套运行系统中进行重新计划获取,就是diff测试思路了。

传统测试用例的思路模拟

test_manual():
  test_data=1
  real=dev(test_data)
  expect=2
  assert real == expect

dev(params):
  return param*2

基于diff的测试思路

test_manual():
  test_data=1
  real=dev(test_data)
  expect=prodc(test_data)
  assert real == expect

dev(params):
  return param*2

prod(params):
  return param*2

通过使用合理的对标体系,也可以完成验证,而且还不需要提前确定预期结果的细节,可以极大的降低测试的成本。

diff测试的参考标的或参考标准,可以是dev与prod进行diff,也可以是不同版本之间进行diff,甚至是前后两次不同的运行结果。

在比对算法上,例子中只是用了最简单的相等判断,实际上可以简单的value对比,也可以允许自动识别噪音的对比,可以允许通过规则进行一定的变异,也可以通过大数据进行推导。

谢谢老师的解答,底层原理上有了一些理解;
还想问几个问题
1.在appcrawler中的 -diff 参数 是怎么使用呢?能否展开讲一下呢?
2. “diff测试的参考标的或参考标准,可以是dev与prod进行diff,也可以是不同版本之间进行diff,甚至是前后两次不同的运行结果。
在比对算法上,例子中只是用了最简单的相等判断,实际上可以简单的value对比,也可以允许自动识别噪音的对比,可以允许通过规则进行一定的变异,也可以通过大数据进行推导。”
这一部分提到的这些在appcrawler中的 -diff是如何设计的呢,如果要应用的话要怎么配置调整呢?
谢谢老师

diff的具体思路,可以参考下twitter的diffy,设计的是最好的。appcrawler也是借鉴了它的思想。appcrawler里的diff在经过多轮版本后我没充分测试,我不保证功能是否还正常。这种涉及到业务细节相关的,我更建议是根据appcrawler保存的数据,自己编写对应的diff工具。比如deepdiff这类的工具可以辅助分析

2 个赞