T4龙带你体验零脚本实现自动化接口测试
Posted 测试百晓生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了T4龙带你体验零脚本实现自动化接口测试相关的知识,希望对你有一定的参考价值。
测试圈懂的最多的人,跟着百晓生一起学测试,你定会有收获。我就在你的口袋,你——有问题难得倒我吗?
PS:一颗安利,测试百晓生种子用户招募中,只要在每日一问中贴出你最想问的问题,就可以收到加入邀请了。至于有什么好处呢?
说到接口测试,很多人脑海里肯定浮现出各种流行的测试工具:postman,jmeter,soupui,robotframework+requests。这些工具虽然简单易用,但是都避免不了在测试用例的编写上花费大量时间。特别随着模块逐步增长,分支的增多,用户场景越来越复杂,用例数量也会呈几何级增长。如下图所示:模块和分支增加,由3个用例增长到了27个用例。
Postman提供了插件可以对接口进行录制,稍做扩展即可生成接口测试用例,但是还是避免不了编写断言。
系统太复杂有没有更好的办法,不用构造请求,也不需要写断言呢?
今天百晓生给大家送来福利了,介绍一款
不用写测试用例的接口测试工具Diffy
,它由twitter开发的并且在github上进行了开源(https://github.com/twitter/diffy)。
Diffy类似于tcpcopy可以将线上的请求进行录制保存,在对接口进行测试时回放这些请求,并自动对结果进行对比。那么肯定有人会问,怎么去自动对比的呢?
Diffy的方案是充当一个代理,将录制的请求分发到三个环境,通过对比三个环境的输出完成断言的操作。这里三个环境分别为提测版本,线上稳定版本,稳定版本副本(与稳定版代码相同),通过对比两个稳定版本的输出,判断接口的返回的噪音,去除噪音之后同提测版本的返回进行对比。架构如下图所示:
Diffy的优点就是搭建好环境之后,不需要进行测试用例的编写和维护了,给测试猿们节约了大量的时间,可以开心的去撩妹了。
俗话说人无完人,测试工具也没有完美的。这里得说说Diffy的缺点了,Diffy对于简单的读操作支持很好。但是有几个方面是没法完美的支持,需要自己进行改造或者开发代码进行修改。
1. 如果有过多的写操作,是需要保证数据的一致性。
3. 请求的参数需要时间戳+签名,这里回放就会出现时间戳跟当前时间差距太大的情况,请求安全校验不通过。
4. 请求中带需要计算的参数,比如csrf的token校验,回发时也会请求不成功。