一、接口测试怎么做?
1、了解接口是做什么的
2、理清接口的业务处理逻辑(画业务流程图)
对接口功能的理解建立在需求的基础上,这个需求需要实现什么业务,什么逻辑,业务流程是怎么运转的,至于开发怎么实现代码,怎么逻辑实现可以先不用管,只从业务层次先了解,然后再了解物理逻辑,避免忽略需求本身
3、接口核心三大件:地址、入参、返回包
其中入参是接口测试中最重要的
4、依据参数校验和逻辑校验两块设计入参组合
5、检查接口返回数据包和日志(接口日志和数据库日志)
(1)返回包正常,日志可能异常
(2)现网出问题,可以通过日志分析问题原因
(3)数据库SQL执行日志,对于理解接口和底层数据之间的交互很有帮助
二、接口手工测试工具
1、Fiddler工具,缺点是不支持Mac,所以Mac就需要安装Charles了
详情见该工具的入门篇、使用进阶篇
2、Postman:chrome浏览器的一个插件,商业版功能很强大
3、Jmeter:Java开发的客户端,易用上手快(需要java环境,开源)
4、LoadRunner:性能测试利器,但也可以用来测试接口(工具太庞大,而且要收费)
5、自己通过代码写工具
三、接口测试用例设计关注点
1、接口的入参是参数的组合形式,那么不同的参数会有不同的返回结果,所以需要做参数校验
2、接口是传递数据、处理数据的业务逻辑的集中体现,所以需要做功能测试
3、两个维度:参数校验、逻辑校验
四、用例设计-参数校验:
对上面的接口协议文档分析可知
1、接口完整的请求地址是:
http://192.168.1.171:8082/api/search_name?content=test
2、参数要求: string类型、长度限制8位、必填
对业务逻辑分析可知
1、底层查询内容的语句是:
'SELECT * from event_manage where name like'+"'%"+search_name+"%'"
通过对接口入参要求和业务逻辑了解,可以按照以下几点设计入参组成:
1、必填参数存在 必填参数不存在
2、string类型 非string类型
3、长度7位、8位、9位
4、SQL注入
重点说下SQL注入,也借机强调接口测试重要性
底层查询内容的语句是: 'SELECT * from event_manage where name like'+"'%"+search_name+"%'"
如果接口入参是:contenet=test,那么最终在数据库中执行的语句就变成了 SELECT * from event_manage where name like'%test%'
如果接口入参是:content='or'1=1'or',那么最终在数据库中执行的语句就变成了 SELECT * from event_manage where name like '%' or '1=1' or '%'
测试模式:
1、前后端绝对分离:前端只关心业务、页面展示、数据展现
2、前后端半分离:比如接口入参校验是通过工具去模拟的,业务逻辑场景是通过页面进行测试
接口测试人员保证:
1、参数校验没有问题
2、业务逻辑正向没有问题
3、(业务层没法模拟)把页面中不能模拟出来的通过接口模拟,协助测试