接口测试经验
问题:
1)为什么要做接口测试
2)接口测试需要用到的流程和工具
3)接口测试点编写的思路
4)接口出现问题如何定位
5)接口疑问
答案:
一、为什么要做接口测试
a)提升测试工作的效率,一般来说前端对接完后端接口后需要提测2~3天,我们完全可以利用这个时间提前跑一下接口,提早发现bug;
b)防止恶意篡改数据,研发界中有一句话:页面由前端决定,数据由后端决定,所以往往篡改数据都是从接口层面进行的;
c)有助于接下来的功能测试业务稳定;
二、接口测试需要用到的流程和工具
流程:接口需求文档分析、编写测试点、执行测试点,发现bug并追踪、出接口测试报告、进行接口自动化
工具:postman或jmeter
三、接口测试点编写的思路
功能方面:
1)正常场景功能是否实现;
2)参数异常测试(例如少传参数、多传参数、不传参数、传错误参数等);
3)数据异常测试(为空、null、参数的边界值(例如接口要求只能传10字符,测试时传大于或者小于等于10字符测试)、传入错误格式参数(例如接口参数要求传JSON格式,测试时传入html格式));
4)检测接口返回数据是否正确;查看接口返回报文;
5)默认值测试,很多一些查询类的接口的参数都会有默认值,请求条数一般都是默认第一页10条;
6)依赖业务,比如说cookie或者token等,在不传这些数据时是否可正常请求接口;
7)数据库检查,当接口对数据进行了增删改查时,需检查数据库是否同步这些操作;
兼容性方面:
1)接口进行了调整后,前端没进行变更的时候,需要验证新的接口是否满足旧的调研方式
性能方面:
1)响应时间,检查是否在系统规定范围内;
2)吞吐量;
3)并发数;
4)服务器资源使用率,例如:占用内容,CPU等
5)接口错误率;
安全方面:
1)敏感信息是否加密,例如:登录密码,银行卡号等;
2)必填参数是否在后端进行校验,例如必填参数的字符长度等;
3)是否做越权访问校验,例如一些系统中会在URL地址中体现出admin/user/system/pwd等敏感目录;
4)接口是否防恶意请求,例如SQL注入、xss注入等;
5)修改cookie或header是否返还对应错误码;
四、接口出现问题如何定位
1)对比接口文档,检查请求URL、请求参数、是否传token或cookie、将这些基本信息排除后仍无误,则继续看下面;
2)对比需求文档,看请求和响应信息、看状态码并分析具体状态码是什么意思,从而判断接口报错的具体原因;
3)查看服务器日志是否有报错、具体看error、exception信息,判断出错的原因,截图给开发;
4)分析具体需求的业务逻辑,从而判断具体报错原因;
五、接口疑问
1、非业务的接口是否需要测试?
在接口测试中,我们大部分需要测试的接口都是业务接口,非业务的开发内部接口等我们不需要测试;
2、没有接口文档能进行接口测试吗?
没有接口文档的时候,我们可以通过UI界面使用抓包工具抓取系统使用过程的接口来进行接口测试;
3、http和https的区别是什么?
1)http使用的时候超文本传输协议,https使用的是ssl加密传输协议,从安全角度来说https更安全;
2)连接方式不同,http的连接方式是无状态的,而https是由ssl+http协议构建的加密传输、身份认证的网络协议;
3)端口不同,http的端口是80,https的端口是443;
4)证书申请方式不同,http是免费申请的,https是需要用到ca申请证书,需要交费;
4、接口测试必须要在功能测试前吗?
不一定,具体看情况;1)如果前端没有提测而后端开发已经提测,那么就需要先进行接口测试,等到前端也可以测试的时候再进行功能测试;2)如果是前后端一起提测的话就功能和接口一起进行测试;
5、接口经常发生变化,和系统前后端分离有关系吗?
关系不大,主要是业务需求改变了所以接口也得跟着改;
6、接口测试的本质是什么?
主要是针对数据的输入和输出进行测试;