1、通过性验证:
先按照接口文档传入所有必填字段并且字段值在正确范围内,预期返回正确结果
2、参数验证(正向/逆向):
- 必填参数:针对每个必填参数,都设计一条参数为空的测试用例,接口错误信息返回正确
- 非必填参数:设计一条用例所有非必填的参数都传入值,非必填参数(类型,范围)不正确,是否给出合理提示
- 参数值范围:参数的值在/不在接口文档中规定参数值范围内
- 长度边界值:符合长度范围内的,长度边界值,超过长度边界值的类型:符合参数类型的,不符合参数类型的(数组,字符串,正数,负数,整数,小数,小数点位数,中文,英文,特殊符号)
- 特殊值:空、null、"null"、""、" "、0、值的前后带有空格、特殊符号等
- 接口文档中不存在的参数:接口传入文档中不存在的参数不会异常
- 接口中传入的参数被覆盖:重复传入相同的key,但value不同
- 传入的参数格式不对:非json、少括号
- 参数个数:如果接受列表类型的参数,如果对列表大小没有进行限定则传入一个超大列表,如果对列表大小进行了规范则需要测试列表大小的边界值;接口能否正确返回数据;
PS:后端代码中一般会有专门的代码来处理接口入参的校验,可以通过查看研发的代码来帮助提高接口参数校验测试的效率,如java工程中的javax.validation.constraints。
接口入参size需要在[1 -3]内:
3、参数组合:
很多时候,接口中的参数有多个取值来满足不同的业务逻辑,当这样的参数>1时,就会出现参数组合的场景。例如参数A可传[1,2,3],
参数B可传["first","second","third"]
- 存在的组合:返回信息正确
- 不存在的组合:错误信息通俗易懂,错误码正确
- 参数组合中参数的个数:若多个参数组合,是否允许任意多个参数的随机组合(例如2个参数组合、3个参数组合、不传)
4、接口前提条件验证:
前提条件是否满足:
- token(token失效/token格式不对/token类型不对、登录退出登录其他账号)
- headers(例如Content-Type:application/json; charset=utf-8 、不填)
5、接口返回信息和状态码等正确:
- 状态码正确
- 错误信息没有歧义(增:调用了一次新增接口之后再调一次新增接口,删:调用了一次删除接口之后再调一次删除接口)
- 返回数据的结构正确
- 返回数据字段值类型正确
6、数据操作正确性验证:
如果接口是操作数据相关的,需要查看数据的流转和持久化是否正确完成,一般查看MySQL和Redis是否有相应的CUD操作即可
7、并发能力:
也就是对接口做性能测试,验证并发能力是否满足预期
8、接口权限/安全:
- 权限控制:当借口只有特定权限的用户才能操作时,验证不同权限的用户的处理逻辑
- 幂等校验:抓包工具拦截请求,修改敏感字断值
- 事务/锁校验:同时操作同一条数据的修改操作,给出正确信息
- 参数非明文:参数是否加密,加密规则是否易破解
- 密码复杂度:密码安全规则,密码的复杂程度校验
9、弱网验证:
弱网下,接口是否可以正常响应