接口测试的一些总结

接口测试是什么

个人认为接口测试就是输入参数,检验输出的正确性。简单的理解为一个接口就是一个url,可以有参数也可以没有参数,参数可以在url后面也可以在请求体里面,其实你只要理解http协议,就知道接口测试是什么了。

比如,我们有一个图书管理系统,有以下功能:

  • 新增图书:通过新增图书接口,新增一条图书数据
  • 查询图书:通过查询图书接口,正确过滤图书列表数据
  • 更新图书:通过更新图书接口,更新图书数据
  • 删除图书:通过删除图书接口,删除图书数据

从上面可以看出,用户在前端输入数据或者执行相关操作,会调用相应的接口,通过接口对后端的数据进行增删改查。

接口测试流程

需求分析阶段

  1. 参与需求评审会议,了解我们当前需求需要实现的具体功能,任务优先级,测试范围,上线时间等相关信息。
  2. 提问需求有疑惑的地方,尽量要做到心中有数。作为Test Lead,才能根据相关信息更好的分配任务,制定测试策略。

设计评审阶段

  1. 设计评审会议上前后端会约定好api规则,后端按照相关约定进行开发,前端只需要调用相应api获取后端数据进行展示。
  2. 测试需要了解api的设计规则,前端UI的表现。
  3. 测试需要了解不同api之间的依赖和调用关系,具体落地数据的位置。
  4. 熟悉系统的业务流程,画出数据业务流程图。

测试设计阶段

  1. 设计接口功能测试用例,正向和反向的用例,预期的输入输出,建议写成用例文件归档,便于后续的自动化接口测试,设计用例时有两个技巧:以输入为导向设计用例,以输出结果为导向设计用例
  2. 设计接口性能测试用例
  3. 设计接口兼容性测试用例
  4. UI和接口的交互测试(需要思考UI和接口存在重复测试的问题?)

测试执行阶段

  1. api文档测试,确保开发提供接口文档,检查文档内容是否正确,包括:URL,请求方法,Header,请求参数,返回值,字段描述等
  2. 开发提测后,并且后端代码已经部署到测试环境,可以通过postman或者swagger进行冒烟测试,冒烟测试可以对每个接口选择一条正向和反向的用例,保证每一条api都是能够运行成功,冒烟测试通过后,再对接口进行详细的功能测试
  3. 前端和接口的交互测试,通过抓包校验前端传参是否正确,后端返回是否符合预期,前端展示是否正确,
  4. 实时查看后端服务日志,Linux服务器可以通过tail命令,观察是否有error日志
  5. 提bug时,可以将请求和响应内容贴到bug描述中,这样开发就可以拿对应的请求直接进行调试,同时附上error日志截图,有利于开发做出判断

如何篡改测试数据

  1. 通过Charles & Fiddler接口工具抓包,篡改请求或者响应
  2. 修改数据库的数据
  3. 自动化测试的话可以通过第三方库,Java可以用RestAssured,WireMock,Python可以Faker等

接口功能测试要点

  1. 每个接口都要有正向和反向的用例
  2. 必填非必填
  3. 空参数,null
  4. 参数长度
  5. 参数范围,枚举参数,比如用户状态:激活,未激活,已删除等状态都需要遍历到
  6. 字符类型
  7. 边界值校验
  8. 接口返回的错误码校验
  9. 权限校验
  10. 落地数据的正确性
  11. 返回数据的正确性
  12. 安全性校验,参数加密,sql注入等
  13. 数据唯一性校验
  14. 查询数据量很大,分页查询或者只返回前多少条数据
  15. 逻辑校验

接口功能测试

  1. 查看接口文档,有哪些入参和出参,没有接口文档,直接用接口工具或者F12自己分析,厉害的可以自己看源码或者直接问开发。
  2. 设计测试数据,无非就是(字符类型,长度,必填非必填,前后空白格),写好预期结果是怎样
  3. 测试要点:接口的正常性验证,异常验证,参数组合,参数加密,篡改请求和响应等
  4. 验证返回结果的Response
  5. 提交Bug,回归测试

接口性能测试

  1. 单接口的基准性能
  2. 单接口的高并发性能
  3. 业务流程的高并发性能(多接口)

接口业务流程测试

比如登录购物流程:登录->选择商品->购物车->付款,假如这里面有4个接口,每个接口都有对应的依赖,那么我们需要一个全局变量来记录接口的返回值,用于后面的接口调用
Jmeter可以通过正则匹配取值用于下一个接口,也可以用Python Requests调用接口,将返回值赋值给一个关键字,下一个接口需要用到时直接调用该接口并使用它返回的关键字,可以避免接口直接的相互关联,这样代码更容易维护。

举例:

Jmeter如何使用依赖

1.选择商品接口需要用到登录接口返回的tokenid,首先调用登录接口,正则匹配取到tokenid赋值给全局变量

2.调用商品接口的时候使用这个全局变量即可

Python如何使用依赖

1.每个接口都写成一个方法,当接口A需要用到接口B的返回值时,直接先调用接口B,取出想要的值传给接口A

2.返回结果与预期结果进行对比

接口自动化测试(暂时先不展开讲)

  1. Python+pytest+requests框架
  2. Java+RestAssured+TestNG

Http协议常用状态码

200:请求返回正常
301:请求永久重定向
302:请求临时重定向
304:请求重定向至本地缓存
400:客户端请求错误
401:客户端请求没有经过授权
403:客户端请求被拒绝
404:客户端请求的资源在服务端不存在
500:服务端错误
503:服务端临时错误

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值