接口思考点
首先声明,本篇内容为赵老师(赵国材)的分享内容,本人作为学习摘要记录。
接口测试该思考的方面:
功能性、易用性,安全性,可靠性,性能
可靠性:
1.API参数容错:API参数数据类型错误,缺省参数值,关键参数缺失以及参数为特殊值:Null,True,False等
2.API异常状态恢复:无论系统执行成功还是失败,都需要返回response。不合理的Timeout以及死锁情况会导致接口挂起影响关联系统稳定性
3.分布式系统,集群API可靠性测试需要关注数据一致性,分区容错性
功能性:
1.业务功能测试:结合业务逻辑使用等价类,边界值等设计方法设计正常场景,异常场景并进行参数组合测试和接口组合测试
2.事务测试:接口中如果启用了事务,用例需要关注事务提交失败的情况,验证接口事务回滚业务逻辑
3.API幂等:部分业务接口有幂等要求,需要保证多次以及并发调用返回结果一致
4.共享数据线程安全:接口中存在了共享数据,需要关注并发状态下共享数据线程安全
易用性:
1.设计:
API设计应当划分合适的业务粒度,不当的粒度会导致臃肿的接口;
参数个数最小化原则;
RESTFul架构需要关注URI的风格和正确的使用Http谓词,确保Get和Head方法是安全的,不对资源状态有所该Bain
2.错误提示信息:
API response中返回的错误信息需要给出准确的错误信息,不可以直接抛出函数内部异常错误信息。如果系统有基于系统错误码的设计,需要返回正确额错误码
3.文档
API文档内容的正确,易读易懂
安全性:
XSS:接口参数过滤html特殊标签等
CSRF:重要接口提交有CSRF_Token,以及验证码机制
加密策略:参数中的敏感信息如密码,身份证信息等需要进行加密
SQL Inject:验证用户输入合法性,并且数据层的异常不需要向上传递到表现层
错误信息脱敏:Response错误信息或异常信息需要屏蔽敏感信息
单接口性能
并发响应时间:主要关注接口可能存在的并发问题,如接口中的内存泄漏、线程锁和资源争用等问题
合理的性能设计:单接口避免消耗过多的内存,资源,流量等。比如在数据查询量大的接口中可以设计分页
响应时间:单接口响应时间
检查点:
1.Response中各项值得正确性,以及HTTP状态码
2.数据库中对应表信息检查
3.中间件以及关联系统中的状态和数据