23 | 知其然知其所以然:聊聊API自动化测试框架的前世今生
该思维导图由 AI 生成,仅供参考
早期的基于 Postman 的 API 测试
- 深入了解
- 翻译
- 解释
- 总结
API自动化测试框架的发展历程经历了由简入繁的过程。早期的API测试依赖于界面操作工具,如Postman,但随着测试用例数量增多和CI/CD集成需求的提出,基于命令行执行的API测试方案迫在眉睫。随后,基于Postman和Newman的集成方案应运而生,但对于复杂的测试场景仍存在不足。为了解决这些问题,基于代码的API测试框架应运而生,提供了更灵活的测试方式和更好的集成性。然而,基于代码的测试也引入了一些新的问题,如工作量增加和无法重用Postman中已有的Collection。为了解决这些问题,自动生成API测试代码的技术应运而生,通过解析Postman中的Collection JSON文件,生成基于自研API框架的测试代码,同时将测试的断言一并转化为代码。这一技术的出现,使得API自动化测试框架的发展达到了一个相对成熟的阶段。 在实际的工程项目中,开发了大量的基于代码的API测试用例后,一个让人很纠结的问题是:到底应该验证API返回结果中的哪些字段?针对这一问题,诞生了“Response结果变化时的自动识别”技术,通过内建数据库记录每次调用的request和response的组合,实现自动和上次的response做差异检测,对于有变化的字段给出告警。同时,通过规则配置设立一个“白名单列表”,排除动态值的字段,解决了动态值带来的问题。 总结来看,API测试框架经历了从基于界面操作到基于代码的发展阶段,解决了测试用例开发效率低下和无法重用Postman中Collection的问题。随着基于代码的API测试框架的成熟,又出现了基于配置文件的API测试框架,如HttpRunner,使得测试用例本身往往成为纯粹的配置文件。这一技术发展历程和新兴趋势,为读者提供了对API自动化测试框架的全面了解和思考。
《软件测试 52 讲》,新⼈⾸单¥68
全部留言(35)
- 最新
- 精选
- Martin 龚平用postman转python或者java测试脚本还是太慢了,而且需要一定编程技能,感觉已经是上一代了,我现在根据httprunner的yml的脚本规则,加上一些开源的组件,做了一个web页面可以进行代理抓包,测试人员无论从web页面还是app操作只要设置代理过来,就可以看到自己的所有请求,然后选择想自动化的请求,后台自动转成测试脚本,再在管理界面上通过拖拽等性质组装成自动化测试集,并可以执行调试、定时任务等。这样的自动化程度基本对编程技能降到了最低,而且生成测试脚本的成本比上一代低了很多
作者回复: 非常好的实践,其实这个我们也有在做,基于httprunner基本没有代码工作量,全部基于yaml或json的配置,而且就像你说的是通过har直接转换json或者yaml,结合locust还可以直接做性能测试。
2018-09-07376 - Cynthia🌸感觉本篇对我最有用的,就是Response结果发生变化时的自动识别这块啊!自己在项目中遇到过类似的问题,虽然采取了一定的措施,但是没有想到作者这个解决方案。准备顺着作者的思路捋一捋,看看把他具体实现一下。
作者回复: 哈哈,这的确是个很好的方法,非常值得落地
2018-08-2129 - 口水窝以前有用过locust,但不知道什么原理,就知道能压测,今天查了下可以和httprunner完美组合,先记下来,后面实践。
作者回复: 值得一试,学习成本是很低的
2019-04-124 - 静静张老师你好,基于配置文件的api测试,和将数据外化到文件是一回事吗?
作者回复: 不是一回事,基于配置的api测试,是不需要写任何代码的,测试用例本身就是配置文件,api框架会去解析配置文件并发起调用,典型的框架是httprunner
2018-08-254 - zhangliqun老师,接口自动化测试我看过robotframeworker接口自动化框架,老师RF框架和您讲的有差异呢?
作者回复: 不同的工具间都有差异,但是本质的东西是一样的
2018-12-262 - Yaoqi😀loadrunner怎么没有提及,也可以做api啊
作者回复: loadrunner主要是做性能测试的,当然也可以用来做api测试,但lr的强项和关注点是性能,后面讲性能测试的时候会详细介绍
2018-08-22 - 楚耳我觉得老师对api的测试都是基于单个api的测试,我是做P2P这块的,公司的api执行后都会去操作数据库,操作各种表,api调用后,需要验证的是各表的字段是否修改正确,这个才是我们验证的重点,我想如果业务复杂的api基本都是跟数据库关联很大,Response的返回值验证都是次要的了。所以我觉得老师这个api测试的讲解不够深入2019-03-22220
- yudi5158response结果变化的自动识别,我目前项目使用了大量的json schema验证 效果还不错2019-03-3011
- 不错的葱老师请教两个问题: 1.做api测试时,是否有必要对数据库做验证?比如测试添加接口,添加成功后是否需要逐一验证数据库字段是否正确;再比如,测试获取详情接口,是否需要把接口的返回和数据库中数据做对比验证。 2.引入数据驱动后,对于不同的输入,验证的步骤相差很大。比如:可能有的输入直接验证responseCode即可,而有的输入需要验证更多字段。这种情况应该如何处理呢?由于这个问题,我这里没有使用数据驱动,而是不同的数据写了不同的用例。2018-12-19111
- sylan215确实,Postman 作为自测工具或者开发之间的接口对接,还是很方便的,但是涉及批量每日回归执行,或者同一个接口的多参数验证等,稍微有点不方便,这应该也是那么的代码级 API 测试框架出现的原因吧。 相对于自动生成 API 测试代码,我更倾向于配置文件的方式,毕竟通过工具把 JSON 转换为自己需要的格式,说到底也是配置文件而已,只是还要增加一个转换的过程。 Response 结果发生变化时的自动识别,这个很赞,也给我提供了一些思路,目前我都是只校验不变的部分,这样会有覆盖不全的情况,后面我也会考虑这种自适应的实现。 以上,欢迎沟通交流,公众号「sylan215」2018-08-208