接口测试是通过工具或代码模拟http请求的发送与接收,看客户端与服务端之间的数据交换,一般用于检测前后端、外部系统与内部系统之间的连通性,或者内部各个子系统之间的交互。
衡量接口的质量一般是从业务逻辑、异常场景处理、性能指标和SLA服务稳定性,以及安全指标几个方面。
接口测试工具
常用的接口测试工具有postman、jmeter,也可以通过charles修改请求参数,或者通过python测试。
- postman
postman既支持单独的软件安装,也支持Chrome插件的形式使用。界面比较清爽直观,操作起来难度也比较低,比Jmeter上手容易很多。但Postman不支持并发和压测
- jmeter
Jmeter支持Windows和Linux系统,相比Postman来说,Jmeter的工具界面复杂,新手入门难度系数比较高。但Jmeter的优势在于支持压测,接口测试的脚本同时可用来做性能压测。
- Charles
Charles的使用,是测试同学必备的基础技能,使用Charles可以进行简单的参数修改和测试。
- 也可通过python测试
python的测试可以参考另一篇博客:Python实现接口测试:requests
接口测试常见问题
- 服务不通,可能是部署或者环境问题,也可能是代码问题
- 不合法的传参,导致接口响应出错或 crash
- 返回的数据不正确或符合业务逻辑
- 对象权限未校验,存在敏感信息未脱敏
- 前端存在无意义的重复调用
接口测试的方法
一般会从功能、异常、性能、安全几个纬度测试接口:
接口定义测试:
接口定义测试,主要是看接口的名称、出入参与接口文档的一致性。
因为接口文档是前端、后端、外部和内部系统对接时,开发联调的标准。只有跟文档协议保持一致,才能保证各方开发者的联调顺利。
功能测试:
主要包含两方面,输入和输出的准确性,以及各个接口承载的业务逻辑。
- 输入(入参)的测试:必传和非必传、参数长度、数值类型、特殊字符&%@#等、字符串类型、数组、正常和异常、有、无和为空,以及参数组合。
- 输出(返回)的测试:主要看正常返回的响应内容,和异常返回的响应码和提示语。
异常测试:
主要考虑重复提交、并发、环境异常、分布式测试、大数据量的表现,接口的幂等性。
- 重复提交:多次重复提交,连续重复提交,特别是涉及到支付、交易金额相关。
- 并发:两个以上用户操作同一场景,争夺资源、死锁等情况。
- 事务测试:多个连续步骤才能完成的业务流程。
- 大数据量测试:数据量较大时,能否处理正确和效率是否受影响。
- 幂等性:幂等性的定义是一次和多次请求某一个资源时,应该具有同样的结果(网络超时等问题除外)。也就是说,任意多次执行对资源本身所产生的影响,均与一次执行的影响相同。
幂等性的测试重点是,一次/多次请求对资源没有副作用(比如查询数据库操作,没有增删改,因此没有对数据库有任何影响)。并且第一次请求的时候对资源产生了副作用后,以后的多次请求不应该都再对资源产生副作用。
性能测试:
主要看响应时间、吞吐量、并发数、服务器资源使用率、cpu、内存、io、network等。
安全测试:
主要考虑接口的加密处理、前后端数据传输、日志信息、防刷机制。
参考的Xmind见下方: