接口测试的关注点
接口测试详解
接口测试的定义
接口测试就是通过接口的不同情况下的输入和与对应的输出之间的关系,看看是否满足接口规范所规定的功能性,安全性以及性能方面的要求。
简单的来说,就是在没有前端页面或者前端还没有完成的情况下,代替前端页面或者第三方使用者,来验证后端的接口是否符合接口规范。
不管是哪种接口,其本质就是发送一个请求,然后服务器返回一个响应,我们对响应进行分析,就是接口测试。
接口测试的优势
接口测试时一种尽早发现错误,提高工作效率的测试手段,从这一层面出发,接口测试有以下几个优势:
1、越在底层发现Bug,修复的成本越低;
2、前端UI界面不稳定,经常发生变化。如果做UI自动化测试,维护成本太高,对测试人员的要求也高--测试人员不仅需要会编码,而且需要花费大量的时间去维护自动化脚本。相对而言,接口测试就简单很多,直接用Postman和JMeter这样的工具就能实现;
3、接口测试更容易实现自动化持续集成,在很大的程度上减少了测试人员的工作量;
4、只依赖前端进行限制已经完全不可能满足系统的安全需求(绕过前端实在太容易),此时需要后端也进行控制,在这种情况下就需要从接口层面进行验证;
5、前后端传输,日志打印等信息是否加密传输也是需要验证的,特别是设计用户的隐私信息(如身份证,银行卡等)时。
接口文档的内容以及维护
接口测试的关注点
功能
1、接口的功能是否实现,接口是否按设计文档实现
参数测试
1、通过性验证,根据接口文档输入正确的参数,是否返回正常的结果;
2、异常参数测试,比如说错误参数,多参,少参,无参,参数长度不一致;
3、入参的默认值,比如说这个参数有没有默认值,如果没有默认值是怎么处理的;
4、参数的异常类型,比如说,传参为int类型,如果输入string类型,接口会怎么返回(接口输出,入参为int类型,出参必须为int类型);
5、非空校验,比如说这个参数必须要输入值,如果不输,接口会怎么返回;
6、参数个数的边界值,入参支持多个值得时候,要考虑传的值的个数多的情况下,接口会不会报错;
7、参数组合。
返回值验证
返回值要保证内容需要的正确性和类型的正确性,保证调用方获取参数能正确的解析。
逻辑业务
1、是否有依赖业务,比如说查看某个用户信息,需要用户登录;
2、逻辑业务测试:传递正确的参数,接口对数据进行查询操作,需要去验证数据库查询是否正确,接口对数据库进行增删改操作也需要验证数据库是否同步了这些操作。
数据库验证
数据库的增删查改,比如说在进行某一个功能的接口修改的时候,数据库是否同步。
性能测试
1、响应时间;
2、吞吐量;
3、并发用户数;
4、占用内存,CPU等。
5、幂等测试(重复提交)
安全测试
1、敏感信息是否加密,比如说传参以及返回值;
2、越权访问,绕过身份验证,比如说某个功能只有有特殊权限的用户才能操作,那我传递一个普通的用户,是不是也能操作;
3、绕过验证。比如说我传递商品价格参数时,修改商品价格,就要看后端有没有验证,或者我支付时,抓包将订单金额一改,如果能以我改后的金额支付,说明这个接口就有问题了;
4、密码安全规则,设置密码时复杂程度的校验;
5、必要的参数是否前后端都进行了限制;
6、唯一识别码:删除修改唯一识别码的测试;
7、cookie:将header中的cookie删除或者修改是否能返回响应的error code。
8、访问频率限制
是否做了容错处理
容错测试的目的:当接口返回的参数为空,或者返回的不是我规定的参数时,客户端对接口的判断执行后是否会引起crash或白屏等异常状态
测试接口的健壮性(容错性),比如说传递的数据类型是错误或者传递空数据,特殊字符等,于接口不符的能否正确处理
http协议与https协议的区别
HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头
HTTP 是不安全的,而 HTTPS 是安全的
HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 443
HTTP 无需加密,而HTTPS对传输的数据进行加密
HTTP 无需证书,而 HTTPS 需要认证证书
HTTP 免费,HTTPS收费
会话管理
Get与Post请求方式的区别
1、Get请求参数是通过URL进行传递的,Post请求的参数在请求体中;
2、Get请求参数直接暴露在URL中,Get请求的安全性没有Post请求的高,所以Get请求不能用来传递敏感信息;
3、Get请求在URL中传递的参数是有长度限制的,Post请求对长度没有限制;
4、Get请求参数会完整的保留在浏览器的历史记录中,Post请求的参数不会保留;
5、Get请求在浏览器退回的时候是无害的,Post请求会再次提交数据;
6、Get可以进行幂等测试(重复提交),Post请求不可以,否则会出错误。因为Get请求多为查询类接口,而Post请求多为新增,修改接口,比如说支付接口,同一笔订单如果支付两次成功,那就是有问题的。