高效的进行接口测试,非常好用!

上一篇 / 下一篇  2022-01-11 14:48:01

什么是接口测试

​ 接口测试是测试系统组件间接口的一种测试,主要用于检测外部系统与系统之间以及各子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

为什么要做接口测试

​ 从测试效率来说,随着系统功能复杂化,手工测试模式下测试效率较低,无法应对快速迭代的节奏。

接口测试可以解决这种问题,且接口测试相对界面自动化来说,更容易实现自动化持续集成且比较稳定,可以减少人工回归测试的人力成本,缩短测试周期,支持后端快速发版需求。

​ 从安全角度说,只验证前端入参限制是不够的, 需要对后端进行权限控制等等,在这种情况下就需要从接口层面进行验证。

接口测试的流程

​ 接口测试即模拟接口请求,验证接口是否返回期望的结果。根据接口的功能,设计出不同的组合场景下,接口的入参和期望,编写成接口用例。

​ 当设计好一系列接口用例,发起接口请求,并自动检查接口的响应输出判断结果。校验接口响应是否符合预期,需要验证2点:数据类型正确性以及值正确性。

如何做好接口测试

面临问题

​ 先分享一个对话~

以上是目前比较常见的模式,开发使用 swagger 做接口管理,使用 postman 做接口调试,测试使用 JMeter 或Python+Requests 做接口测试,不同的工具间存在的问题是接口同步、用例维护比较高,通知不及时可能导致用例失去意义。

另外还存在各自造轮子等不可忽视的测试框架研发成本及人员培训成本。为了保证能实现较高投入产出效率,我们团队在选择接口工具时,会考量以下几个点:

① 能减少数据同步成本:接口数据、测试脚本、用例数据都能实时同步

② 减少工具开发成本:能提供易用性高、实用性强的接口测试模块,降低培训成本

③ 可以满足持续集成的需求

​ 经过我们数月的调研和对比,终于找到一款契合我们需要的接口测试工具—— Apifox。

​ 根据官方介绍 Apifox = Postman + Swagger + Mock + JMeter,可以看出 Apifxo 直奔协作,通过一套系统、一份数据,解决多个系统之间的接口数据同步问题。

只要定义好接口文档,调试、Mock、接口测试可以直接进行,无需再次定义,当接口发生变更时,用例和 Mock 数据也会实时更新。接口文档和接口开发调试使用同一个工具,因此接口用例数据可以在团队共享,提高了用例的使用率。

此外, Apifox 提供了很多测试功能,可以让团队更专注在测试用例的设计上。最后,Apifox CLI 支持集成到 jenkins 满足我们定时构建的需求。

​ 今天我们主要介绍接口测试的功能,其他功能可以戳官网了解。 五、Apifox 接口测试步骤 接口定义

​ 为了方便演示,我们选择登录接口来演示。

​ 如图,我们先熟悉接口定义。在修改文档可以编辑接口信息:接口路径为/user/login.json,请求方式是 POST ,请求 body 参数有 account 和 password:

接口响应的数据类型、状态码、格式定义界面都是可视化的,可以通过输入一段 json 快捷识别数据结构。

点击预览可以看接口响应的mock数据,直观展示响应的结构。

接口调试

​ 在接口运行页,只需填写对应参数值,选择运行环境,点击发送,即可发起一个接口请求,实际请求和响应都可以点击查看。点击保存为用例,可以将调试信息保存为用例供下次使用。

结构自动校验

​ 上图中,我们发现 Apifox 的界面上有一个校验 Response,这是工具的特色功能——只要打开开关,系统会根据所选择的数据结构,自动比对响应状态码和字段类型

如下图所示,age 字段类型定义是 int ,实际上返回 string ,系统自动提示校验失败及错误详情。

零代码即可自动判断,非常省时。如果不需要自动校验,可以选择不校验~

选择保存用例可以把调试数据保存下来。接下来,就可以按照这个步骤在Apifox上添加用例。我们先来看看Apifox 用例提供了哪些好用的功能↓ 前后置操作

​ Apifox为调试接口、用例提供了多种可视化的前后置操作。前置操作是在请求发送之前操作,例如签名**;后置操作在请求发送之后执行,例如数据校验和结果提取。 Apifox 的前后置操作有数据库操作、自定义脚本、公共脚本、断言、提取变量五种类型,每个用例都可以添加多个前后置操作,并且步骤右上角可以设置开(生效)、关(不生效)。 自定义脚本

​ Apifox 的脚本完全兼容 postman 的语法,完全可以无缝迁移过来,此外还支持调用外部代码、提供多种内置库,这点能满足我们更多拓展性的测试需求。

断言

​ 断言操作可以设定断言的对象和期望的结果,接口运行时验证返回结果是否符合预期,并提示结果是通过还是失败。这里我们写了一个例子,对响应的 JSON 数据提取 city 字段,断言该字段值="广州市"。这里的提取表达式遵循 JSON PATH 的规范。

​ 断言对象除了响应,还有cookie、header和各种变量,并且支持多种断言方式,包括等于、包含、正则、存在等等可以覆盖多种断言场景。 提取变量

​ 在测试过程中,我们有些前后关联的接口,即需要从接口响应提取出一些信息作为下一个接口的请求参数, Apifox 提取变量有多种来源:Response JSON、Response Header、Response Cookie、请求耗时等,可以提取为临时变量、环境变量、全局变量。

​ 以登陆接口为例,从响应中提取 token 存为变量,需要用到时用{{token}}即可引用该变量。提取成功之后,可以在控制台看到日志。

数据库操作

测试前后可能需要使用数据库进行增删改查, Apifox 的数据库操作是也非常友好,配置好连接信息后设置 SQL 语句(支持变量),查询结果支持提取为变量,结合调试功能,可以非常便捷地编写用例。

打开控制台打印开关,可在控制台查看查询结果

用例设计

在上一步的中我们已经熟悉了用例功能,拿到一个接口之后根据不同入参,接口应该有不同的响应。一般把一种场景设计成一个用例,登录接口我们设计用例如下:

用例期望校验点
正确邮箱+密码登陆成功返回正确的手机号和城市
错误密码登录失败提示密码错误
邮箱格式错误登录失败提示邮箱不对
黑名单账号登录失败提示账户已被禁用
已注销账户登录失败提示账户不存在

添加到登录接口,效果如下。如果想验证某个场景时,测试或者开发直接运行该用例即可。

集成测试

​ 希望一次性运行多个接口用例,可以在自动化测试中进行集成测试。 图片 ​ 测试用例可以设置分类和分级,方便管理和分级运行。以我们团队为例,我们对自动化测试采取分级保障及分级运行的策略,4种优先级设置对我们来说非常方便。

​ 添加好用例之后,在步骤页导入步骤,选择绑定模式,即可关联我们已经添加好的接口用例,并且做到两边数据更改时可以同步更新。

导入后,在右侧设置运行环境、循环轮次等数据,点击运行发起测试

运行完,可以查看测试报告的数据汇总,点击接口显示该接口的实际请求和响应情况。

​ 上述就完成了一个小功能的集成测试,当需要运行多个测试用例时,使用测试套件添加多个测试用例运行多回归测试。

​ 以上只是给出简单的思路,实际使用过程中可以结合 Apifox 的 Auth、前后置操作、全局参数、多服务管理、变量管理等功能进行更加细致的用例设计和验证,提高接口测试的覆盖度。 持续集成

​ Apifox 支持通过 ApifoxCLI 实现持续集成,只要在服务端安装 ApifoxCLI ,在 Apifox 上生成测试用例、测试套件的任务命令,运行时将实时从云端获取测试内容进行自动化测试。

小结

以上是对 Apifox 对于接口测试和自动化的一些介绍,在这一年里我们借助 Apifox 易上手、协作强、功能强大的特点,将它应用到接口管理和接口测试中,实现高效的接口协作,团队的协作效率有了极大的提升。你们的团队不妨也试试吧!


TAG:

 

评分:0

我来说两句

日历

« 2022-05-20  
1234567
891011121314
15161718192021
22232425262728
293031    

数据统计

  • 访问量: 2178
  • 日志数: 34
  • 建立时间: 2021-12-23
  • 更新时间: 2022-05-16

RSS订阅

Open Toolbar