当你准备给自己所负责的项目搭建接口自动化测试时,面对市面上多种多样的工具或者框架,是否遇到不知该选哪个工具的困惑?本片文章通过对时下使用广泛的接口自动化工具进行对比来介绍自动化工具或者框架选择策略,协助处于困惑中的小伙伴选择适合项目的接口自动化工具。

在讲工具选择策略前,我们先思考一下这三个问题

搭建自动化的价值是什么?

覆盖接口的哪些内容?

如何降低接口自动化测试维护成本?

对于以上三个问题,你有自己的答案了么?以下是笔者对以上三个问题的思考。

搭建自动化的价值

搭建自动化的目的是覆盖全面且能快速反馈被测应用质量。想像一下对于一个功能复杂的系统,开发在上线前刚刚修复了几个bug,测试问开发影响范围,开发可能会说“不好说,都测试一遍吧”。如果你遇到这样的答案是不是要抓狂,实际项目中这样的情况不仅存在,而且可能还比较频繁。此时如果有个覆盖全面的自动化脚本该多好,让自动化脚本跑起来,茶水间喝杯咖啡回来就知道质量结果了。

接口覆盖策略

1. 系统自己使用的接口覆盖测试场景而不是单个接口的response。

比如一个更新用户个人信息的接口,试想一下如果是手动测试,你会如何做?肯定是在页面上更新某个信息或某几个信息,然后查看对应的数据字段是否更新或者页面是否显示新的内容。你会单独查看接口的response是否和需求文档一致么?大部分情况下都不会。所以在搭建接口自动化测试时建议覆盖测试场景以此保证业务功能是否正确。

2. 对外提供的接口重点检查接口的response body和response schema。

有些小伙伴读到这里是否会犯迷糊,第二点似乎和第一点矛盾了呢?实际不矛盾,对于对外的接口,因为接口使用方是第三方,对于第三方在哪些业务场景下如何使用该接口不是接口提供方的测试范畴,故接口提供方只需保证接口返回的内容与格式与之前定义的一致即可。

3. 只要提供接口的地方就尝试进行覆盖,保证接口测试足够全面。

降低维护成本策略

1.管理测试数据,保证测试case独立性。即每一个测试案例需要的测试数据在案例运行前自动准备,案例运行完后自动清理。任何用例的执行不依赖其他用例是否执行成功。

2.管理配置信息,保证多环境运行无障碍。即当测试环境切换后,能通过环境变量简单快速切换到所测环境,无需任何手动介入,相同的一套测试脚本DEV环境能运行,切换到UAT环境同样能全部正常运行。

3.已实现的自动化脚本能快速重用。例如一个系统有3个角色,已经完成了“初始化用户为系统任意角色”的测试脚本,假设此时新增了一个功能,此功能只有系统某个角色才能操作,那么在准备测试数据时就可以调用之前的代码快速初始化所需用户。

4.清晰的代码分层。让新上项目的人也能快速上手开始自动化脚本编写。

5.默认等待机制,解决数据延迟问题。例如调用一个接口到数据全部落入数据库需要时间,如果没有默认等待机制,调用接口后立刻查询数据库数据可能出现错误假象。对于微服务,这类问题可能更突出。

6.Retry机制,对于部分不稳定的接口,适当的retry机制可以保证自动化用例成功率。

7.管理接口reqeust body,接口的request body修改频繁,要尽量引入其他工具协助更好的维护接口的request body,否则接口body的任何修改可能都会引起自动化的大面积修改。

8.集成到CICD平台,定时运行持续优化。

9.详细的日志打印,流水线上清晰知道错误原因。

10.测试工具是否支持脚本语言,是否有完善的帮助文档,github上start数量,是否还在持续维护。

在思考和回答了上面的问题后我们再来看目前市面上使用较广泛的能实现接口自动化的工具或者语言。

接口测试工具对比

Postman/SoapUI/Jmeter:

这三个工具放在一起的原因是都属于配置类工具,简单易上手,利用该工具可以很快调通一个接口,后续再学习一下如何配置测试集、如何进行断言、如何配置全局变量等,基本就可以实现接口的半自动化了。但如果要搭建覆盖全面且较低维护成本的接口自动化脚本,有太多理由否定采用postman或者soapUI。比如:无法连接数据库准备测试数据,即无法实施“降低维护成本”中第一条策略,一旦测试环境中测试数据遭破坏,case就会运行失败。再比如接口的request body都是写死在用例里面,即无法实施“降低维护成本”的第七条策略,开发修改任何一个接口,都可能需要修改多个测试用例的reqeust body。

Groovy+Rest-Assured

Rest-assured是一款测试REST api的自动化测试工具,除支持接口调用外,还提供了接口校验、日志打印、错误显示等功能,非常适合接口自动化脚本。Rest-assured配合脚本语言groovy前面提到的10点降低维护成本策略都能实施。例如利用脚本语言groovy可以方便连接数据库准备测试数据,可以用csv文件管理测试数据,yaml文件管理配置信息,轻松对接口返回的json格式或者xml格式数据进行解析处理等等。

Java+Httpclient

Httpclient是apache common下的一个子项目,引入该jar包即可完成接口调用,相比与rest-assured这类专门的接口测试工具,httpClient不提供接口response校验、接口request、response打印、错误信息显示等功能,这些都需要自己单独写代码实现。

Python+Request

Request是python下的一个包,引入该包后即可完成接口调用,和httpclient一样该包仅仅完成接口调用,如果需要接口response的校验、日志打印等都需要自己单独写代码实现。相比与java+httpClient组合,这个组合使用了脚本语言python,就实现接口测试而言,学习python的成本要远低于学习java的成本。相比groovy+rest-assured组合,python语言官网没有提供配套的BDD一类的框架,所以选用该组合还需要配合其他测试框架一起服用才行。

Python+Pyresttest

Pyresttest是一款rest api测试工具,和groovy+rest-assured的组合很像,都选用脚本语言作为编程语言,选用专门的接口测试框架调用接口。Pyresttest在github上的start是900+,rest-asssured在github上的star是4000+,要相信群众的眼睛是雪亮的,所以一定要选择,那肯定还是选择groovy+rest-assured组合。当然如果你一定要用python语言,那可以深入研究下pyresttest是否可实施前面“降低维护成本”的十个策略,如果可以,那选它也是ok的。

结束语

对比上述工具旨在告诉大家在选择工具或者框架时,首先需要明确你的项目需要完成怎样的自动化,然后再查看市面上的工具,看看这些工具以及支持的语言是否满足你的需求,只要有了明确的目标,选择就不再困难。比如要搭建覆盖全面且较低维护成本的接口自动化,选择工具时首先需要考虑是否能轻松获取到接口response body和校验response schema,另外还需考虑能否实施“降低维护成本”中提到的10个策略,如果都能实施,那就用它了。

如果对如何使用rest-assured+groovy编写接口自动化脚本感兴趣的小伙伴可以订阅gitchat上“接口自动化实战” 专栏约。https://gitbook.cn/gitchat/column/5dbbe297e29af65d1d01b8fc

如何选择接口自动化测试工具相关推荐

  1. 测试进阶必备,这5款http接口自动化测试工具简直不要太香~

    现在市场上能做接口自动化测试的工具有很多,一搜一大把,让人眼花缭乱.我们去选择对应实现方式时,不管是框架体系还是成熟稳定的工具,核心目的都是期望引入的技术能在最低投入的情况下达到最优效果. 那么我们选 ...

  2. 类似postman的接口自动化测试工具,为什么都在用 apifox

    接口测试很多人都会用到 postman,但实际上,在当下国内测试流程中,postman 有很多功能不符合国人的操作习惯,本文介绍一个接口自动化测试工具,已经在很多公司的测试团队中大量使用,它的主要应用 ...

  3. 国产化的接口测试、接口自动化测试工具apifox的介绍及使用

    一.Apifox的介绍 1.Apifox 是 API 文档.API 调试.API Mock.API 自动化测试一体化协作平台,它的定位 Postman + Swagger + Mock + JMete ...

  4. 接口自动化测试工具-Apifox 基础篇:简介

    1. 接口测试的需求 2. 常用解决方案 3. 存在的问题 存在的问题存在 开发人员在 Swagger 定义好文档后,接口调试的时候还需要去 Postman 再定义一遍. 前端开发 Mock 数据的时 ...

  5. 2022接口自动化测试工具Postman 使用教程

    一.Postman接口测试概述 1.1   接口测试 接口是指对协定进行定义的引用类型,通俗讲是就是软件系统不同组成部分衔接的约定.接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统 ...

  6. 【1个月快速学习自动化测试】接口自动化测试(4) —— 接口自动化测试工具介绍

    接口测试的全称是应用程序编程接口(API)测试,从原理上来说,接口测试是模拟客户端向服务器端发送请求,然后检查能否获得正确的返回信息.接口测试用于测试RESTful API.SOAP Web服务,这些 ...

  7. YAPI接口自动化测试工具---使用记录

    目录 1.前置条件 2.开始使用 2.1 用户管理 2.2 空间 2.3 项目 2.4 接口 2.4.1 接口管理 2.4.2 测试集合 1.前置条件 yapi自动化平台已经搭建完成 yapi的官网地 ...

  8. FastAPI + Vue 前后端分离 接口自动化测试工具 apiAutoTestWeb

    apiAutoTestWeb使用说明 apiAutoTestWeb 是为apiAutoTest的可视化版本,其采用前后端分离( FastAPI + Vue2 )方式实现 具体使用: Python3 + ...

  9. 接口自动化测试工具-Apifox 基础篇:配置环境

    1. 环境管理 一个项目在不同的阶段会处于不同的环境中,比如开发环境.测试环境.生产环境,通常不同的环境有不同的前置 URL.接口参数等.因环境不同而频繁的更改接口前置 URL 及参数,是非常的麻烦的 ...

最新文章

  1. SQL链表查询 数据库为空
  2. 产品创新必备方法论:国外系统的产品创新
  3. The jar file has no source attachment
  4. 如何查看电脑显卡配置_组装电脑:电脑配置显卡推荐
  5. Java用链表写图书管理_C语言链表实现图书管理系统
  6. 如何降低前端代码圈复杂度?
  7. kepware odata 接口访问地址
  8. python文件怎么打开_py文件怎么打开?
  9. LAMP架构简介与概述 及服务安装
  10. ssdp java_SSDP 简单服务发现协议
  11. 逆向、反编译、微信相关记录
  12. selenium 操作 IE11--无法开启新窗口
  13. django mysql sql语句_Django中使用mysql数据库并使用原生sql语句操作
  14. 关于Batch Normalization的理解和认识
  15. [指南]-DeepFaceLab 2.0说明和教程(推荐)
  16. ILDasm和ILAsm简单使用
  17. python 求pi_python下利用无穷级数计算pi值
  18. 三星s5 安装android,三星手机怎么安装软件?三星手机安装被阻止情况的解决办法介绍...
  19. 手机微信浏览器调用图片放大功能
  20. 电脑没有声音 | 电脑没有Realtek高清晰音频配置解决方法

热门文章

  1. 如何下载4K高清汽车视频素材
  2. 【IoT】 产品设计:机牙和自攻牙螺丝详解
  3. snagit截图工具的官方路径
  4. 迅雷下不了的它能下,账号被限速也能满速下载百度云 这就是你一直想要的
  5. 股票查询接口: 腾讯
  6. 《思考,快与慢》思维导图
  7. mysql 优化大师执行计划_魔方优化大师下载
  8. 實作解析:微信開發重點摘要 (3) - 刷新網頁存取授權碼有效期
  9. php 威盾加密解密,仿威盾PHP加密的解密方法
  10. 一文读懂安全攻防实战、CNVD漏洞平台