最近测试碰到一个困难:A系统要调用我们系统的一个服务进行询价。我们返回的结果很依赖系统当前的多套互相关联的基础数据,还有一些计算逻辑。判断结果是否正确得细心查看,费点脑子。一旦询价之后调用我们提供的另外一个服务下单,就会修改运力这个基础数据。如果接下来再用和第一步一样的参数再次询价,返回的结果也和第一次询价的结果不同了。更糟糕的是如果测试环境还有别人无意间也在下单或者修改了基础数据,那么返回结果就更不可控了。
手工测试阶段,傻傻的我只好通过把时间放到2021年去规避大部分的无意修改带来的干扰。但是随着这个功能的稳定,如何通过自动化测试快速验证这个功能的正确性呢?
上周我用的方法是:去掉每次调用返回的值肯定不同的节点,比较一个预期的和一个实际的json字符串是否完全相等。这个校验十分严格。严格到我担心它会因为基础数据的变化而经常失败。万一失败,万一逻辑有调整,要去定位到底是bug还是数据影响还是逻辑影响,会很耗时。
今天偶然间看到契约测试的一点介绍(https://testerhome.com/topics/22561)(https://martinfowler.com/bliki/ContractTest.html),觉得里面的根据具体情况进行精确和模式匹配结合的思路挺有意思。如果分离这两部分,那么出错的时候就可以更快地选择正确的方向去定位了吧!值得一试。