毕业后就开始做软件测试工作,一直想把自己工作中遇到坑、实践以及经验进行总结,但苦于知识、能力有限,无法深入,就一推再推,至今也没开始。“不管你怎么准备,永远都不会有准备好的那一天。所以准备好了再做其实是一个很坑爹的思维。不管你如何准备,如果没有行动,永远都不会都准备的那一天”,开始一点一点的做,去完善。
主要摘自(https://blog.youkuaiyun.com/jiary5201314/article/details/51429347)
从what、why、how去梳理接口测试
什么是接口测试(what)
接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
为什么要做接口测试(why)
怎么进行接口测试(how)
下面来说说时间测试过程中系统的接口测试从哪些方面进行考虑:
1、参数输入(入参)
特殊字符
参数类型
参数为空格、空、NULL
非必填参数组合
边界值校验(字符长度极限值验证、数值型边界值、枚举值超范围验证)
……等等
2、接口逻辑处理:
2.1约束条件分析:
枚举值限制:
数值限制:分数限制、金币限制、等级限制
状态限制:登录状态、失效等
权限限制:管理员、权限绑定关系、主从关系等
关系限制:好友关系、绑定换下
常见问题和风险:约束条件判断不足,导致用户可以通过特殊手段获取利益
2.2操作对象分析:操作通常是针对对象的,例如用户绑定手机号码,手机号码就是操作对象,二这个手机号码的信用等级、流量、话费,套餐余量也是对象
常见问题和风险:用户可以访问非权限内的其他对象的信息、敏感信息,从而利用这些信息谋取利益
2.3状态转换分析:如已提交,未审核,已审核,正常态:提交后,转为未审核,未审核的审核后转换为已审核;异常状态切换,未提交就可以审核
2.4处理时序分析:如某流程要先登录,刷新,再变更;若数据顺序打乱后,导致其他系统或业务异常,从而谋利
3、接口返回(出参):接口正确处理的接口只有一个,而错误异常返回的结果却有很多种情况,甚至奇葩、出乎意料的的返回,比较不同开发人员有不同的书写习惯;返回状态码和信息
4、性能测试:响应时间(time)、并发数、吞吐量(--)、服务器资源使用情况(cpu、内存、io、)
超时处理(未做超时处理;阻塞)
5、安全性测试:敏感信息加密(sign签名、时间戳、token机制、验证码、)
6、兼容性测试:(废弃接口、老接口、新接口)
接口测试中发现的典型问题:
1、传入参数处理不当,导致程序crash
2、类型溢出,导致写入如读取的不一致
3、对象权限未进行校验,可以访问其他敏感信息
4、状态处理不当,导致逻辑处理错乱
5、逻辑校验不完善,可利用漏洞获取利益
一、接口参数数据类型:
1. 数值型
2. 字符串类型
3. 数组或者 链表类型
4. 结构体
二、接口测试常见bug:
1. 特殊值处理不当导致程序异常退出或者崩溃
2. 类型边界溢出,导致数据读出和写入不一致
3. 取值边界外值未返回正确的错误信息
4. 参数 为null或空字符串“”等
5. 权限未处理,可以访问其他用户的信息
例如:无权限可以访问,或者 一般用户可以访问管理员权限)
6. 逻辑校验不完善,可利用漏洞获取非正当利益
例如:某网站兑换1块钱需要100币,当小于100币时调用后台 接口是否可以兑换
例如:购物结算时为100元,调用 后台接口设为0元,哈哈
7. 状态处理不当,导致逻辑出现错误(可能程序员123都搞懵了)
8. 数组类型item个数为0或者item重复时程序异常退出
9. 超时问题,超时后处理
10. 潜在性能问题(后台提交处理或者把性能风险提前提出)