软件测试 52 讲
茹炳晟
腾讯 TEG 基础架构部 T4 级专家
71691 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 63 讲
结束语 (1讲)
软件测试 52 讲
15
15
1.0x
00:00/00:00
登录|注册

23 | 知其然知其所以然:聊聊API自动化测试框架的前世今生

基于配置文件的API测试框架
Response结果变化时的自动识别的重要性
自动生成API测试代码的问题和解决方法
基于代码的API测试的优点和问题
基于Postman和Newman的API测试的限制
早期的基于Postman的API测试的问题
API自动化测试框架的发展历程
解决方法:引入内建数据库,自动和上次的response做差异检测
问题:无法对所有的response字段都写assert
解决方法:自己实现一个代码生成工具
问题:测试中的断言部分不会生成代码、无法与自研API测试框架绑定
问题:工作量大、无法重用Postman中的Collection
优点:灵活性、灵活支持多个API的顺序调用、数据驱动测试、灵活处理测试验证的断言、命令行测试执行方式
解决问题:灵活支持多个API的顺序调用、数据传递、数据驱动测试、灵活处理测试验证的断言、命令行测试执行方式
无法满足连续调用多个API并涉及参数传递的情况
Newman的作用
问题:界面操作的笨拙性和难以与CI/CD流水线集成
思考题
总结
Response结果发生变化时的自动识别
自动生成API测试代码
基于代码的API测试
基于Postman和Newman的API测试
早期的基于Postman的API测试
API自动化测试框架的发展历史

该思维导图由 AI 生成,仅供参考

你好,我是茹炳晟,今天我和你分享的主题是“知其然知其所以然:聊聊 API 自动化测试框架的前世今生”。
在上一篇文章中,我以一个简单的 Restful API 为例,分别介绍了 cURL 和 Postman 的使用方法,相信你已经对 API 测试有个感性认识了。
但是,我们不能仅仅停留在感性认识的层面,还需要熟悉并掌握这些测试方法,完成相应的 API 测试工作。所以,也就有了我今天分享的主题,希望可以通过对 API 自动化测试框架发展的介绍,让你理解 API 测试是如何一步一步地发展成今天的样子,以“知其所以然”的方式加深你对 API 自动化测试的理解。
接下来,我将会遵循由简入繁的原则,为你介绍 API 测试框架,以发现问题然后解决问题的思路为主线,展开今天的分享。

早期的基于 Postman 的 API 测试

早期的 API 测试,往往都是通过类似 Postman 的工具完成的。但是,由于这类工具都是基于界面操作的,所以有以下两个问题亟待解决:
当需要频繁执行大量的测试用例时,基于界面的 API 测试就显得有些笨拙;
基于界面操作的测试难以与 CI/CD 流水线集成。
所以,我们迫切需要一套可以基于命令行执行的 API 测试方案。这样,API 测试可以直接通过命令行发起,与 CI/CD 流水线的整合也就方便得多了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

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-07
    3
    76
  • Cynthia🌸
    感觉本篇对我最有用的,就是Response结果发生变化时的自动识别这块啊!自己在项目中遇到过类似的问题,虽然采取了一定的措施,但是没有想到作者这个解决方案。准备顺着作者的思路捋一捋,看看把他具体实现一下。

    作者回复: 哈哈,这的确是个很好的方法,非常值得落地

    2018-08-21
    2
    9
  • 口水窝
    以前有用过locust,但不知道什么原理,就知道能压测,今天查了下可以和httprunner完美组合,先记下来,后面实践。

    作者回复: 值得一试,学习成本是很低的

    2019-04-12
    4
  • 静静张
    老师你好,基于配置文件的api测试,和将数据外化到文件是一回事吗?

    作者回复: 不是一回事,基于配置的api测试,是不需要写任何代码的,测试用例本身就是配置文件,api框架会去解析配置文件并发起调用,典型的框架是httprunner

    2018-08-25
    4
  • zhangliqun
    老师,接口自动化测试我看过robotframeworker接口自动化框架,老师RF框架和您讲的有差异呢?

    作者回复: 不同的工具间都有差异,但是本质的东西是一样的

    2018-12-26
    2
  • Yaoqi😀
    loadrunner怎么没有提及,也可以做api啊

    作者回复: loadrunner主要是做性能测试的,当然也可以用来做api测试,但lr的强项和关注点是性能,后面讲性能测试的时候会详细介绍

    2018-08-22
  • 楚耳
    我觉得老师对api的测试都是基于单个api的测试,我是做P2P这块的,公司的api执行后都会去操作数据库,操作各种表,api调用后,需要验证的是各表的字段是否修改正确,这个才是我们验证的重点,我想如果业务复杂的api基本都是跟数据库关联很大,Response的返回值验证都是次要的了。所以我觉得老师这个api测试的讲解不够深入
    2019-03-22
    2
    20
  • yudi5158
    response结果变化的自动识别,我目前项目使用了大量的json schema验证 效果还不错
    2019-03-30
    11
  • 不错的葱
    老师请教两个问题: 1.做api测试时,是否有必要对数据库做验证?比如测试添加接口,添加成功后是否需要逐一验证数据库字段是否正确;再比如,测试获取详情接口,是否需要把接口的返回和数据库中数据做对比验证。 2.引入数据驱动后,对于不同的输入,验证的步骤相差很大。比如:可能有的输入直接验证responseCode即可,而有的输入需要验证更多字段。这种情况应该如何处理呢?由于这个问题,我这里没有使用数据驱动,而是不同的数据写了不同的用例。
    2018-12-19
    1
    11
  • sylan215
    确实,Postman 作为自测工具或者开发之间的接口对接,还是很方便的,但是涉及批量每日回归执行,或者同一个接口的多参数验证等,稍微有点不方便,这应该也是那么的代码级 API 测试框架出现的原因吧。 相对于自动生成 API 测试代码,我更倾向于配置文件的方式,毕竟通过工具把 JSON 转换为自己需要的格式,说到底也是配置文件而已,只是还要增加一个转换的过程。 Response 结果发生变化时的自动识别,这个很赞,也给我提供了一些思路,目前我都是只校验不变的部分,这样会有覆盖不全的情况,后面我也会考虑这种自适应的实现。 以上,欢迎沟通交流,公众号「sylan215」
    2018-08-20
    8
收起评论
显示
设置
留言
35
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部