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

自动生成 API 测试代码

        自动生成 API 测试代码是指,基于 Postman 的 Collection 生成基于代码的 API 测试用例。

        有两个问题需要解决:

  •         测试中的断言(assert)部分不会生成代码,也就是说测试代码的生成只支持发起 request 的部分,而不会自动生成测试验证点的代码;
  •         很多中大型互联网企业都是使用自己开发的 API 测试框架,那么测试代码的实现就会和自研 API 测试框架绑定在一起,显然 Postman 并不支持这类代码的自动生成。 

工具实现思路:

        本质就是解析 Collection JSON 文件的各个部分,然后根据自研 API 框架的代码模板实现变量替换。 具体来讲,实现过程大致可以分为以下三步:

  1.         首先,根据 API 框架的代码结构建立带有变量占位符的模板文件
  2.         然后,通过 JSON 解析程序,按照 Collection JSON 文件的格式定义去提取 header、method 等信息;
  3.         最后,用提取得到的具体值替换之前模板文件中的变量占位符,这样就得到了可执行的自研框架的 API 测试用例代码。

有了工具之后的工作模式:

  1.         对于 Postman 中已经累积的 Collection,全部由这个工具统一转换成基于代码的 API 测试用例;
  2.         开发人员继续使用 Postman 执行基本的测试,并将所有测试用例保存成 Collection,后续统一由工具转换成基于代码的 API 测试用例;
  3.         对于复杂测试场景(比如,顺序调用多个 API 的测试),可以组装由工具转换得到的 API 测试用例代码,完成测试工作

Response 结果发生变化时的自动识别

        目的:既可以不对所有的 response 字段都去写 assert,又可以监测到 response 的结构以及没有写 assert 的字段值的变化。

        具体实现的思路:在 API 测试框架里引入一个内建数据库,推荐采用非关系型数据库(比如 MongoDB),然后用这个数据库记录每次调用的 request 和 response 的组合,当下次发送相同 request 时,API 测试框架就会自动和上次的 response 做差异检测,对于有变化的字段给出告警。

        response结果变化的自动识别,有json schema自动校验。每次运⾏的时候保存当前的schema,下次运⾏对⽐上次的schema如果发现变更就报错。

        对于每次调用都不同的值,比如token、时间戳等,可以通过规则配置“白名单”的方式解决,把动态字段排除在外。

        

API自动化测试平台实践

        根据httprunner的yml的脚本规则,加上一些开源的组件,做了一个web页面可以进行代理抓包,测试人员无论从web页面还是app操作只要设置代理过来,就可以看到自己的所有请求,然后选择想自动化的请求,后台自动转成测试脚本,再在管理界面上通过拖拽等性质组装成自动化测试集,并可以执行调试、定时任务等。

你可能感兴趣的:(测试,接口测试,API自动化测试,软件测试,接口测试)