一、入参异常
1、关键字参数
将参数写为开发语言中的关键字,或某个参数值为开发语言中的关键字,接口是否兼容
2、多或少参数验证
必填字段未传,非必填字段未传
参数的值为空或NULL:兼容为空情况,为空给默认值,程序给对应的错误提示
3、错误参数
参数大小写验证,参数拼写错误,参数的值任意填写,或者填写不存在的值,参数包含特殊字符
4、字段类型
字段类型不对,可做转换的,不可做转换的
5、长度不一致
入参填写不符合的长度进行验证,超过数据库设置的字段长度
6、入参支持传多个值时,要考虑传的值的个数多的情况下,接口会不会报错
7、参数边界值测试
8、json格式测试
接口一般设计的都是传递json串, 如果传递非json的情况,程序会不会正确的处理,返回相应的 error code
二、接口响应异常
1、返回true,message中是异常错误
有时调用方开发未认真看接口协议,只要true就算成功,导致返回的数据没拿到异常
2、接口响应超时处理
案例1:统一配置超时/异常,未拿到数据,数据库的数据不能更新;统一配置接口正常,但未配置该字典,数据库更新
案例2:接口异常/超时,内存不能更新;接口正常,但未配置数据,内存更新
3、接口异常处理
案例:客户端调服务端网络中断,异常吃掉了,接口仍返回errorcode=0的空数据,应该返回异常的errorcode
4、接口重复提交处理
案例:后台退票页面自动退票,多次点击,会请求多次退票接口,导致航司收到多个退票请求
5、并行调多个接口,其中一个接口超时/异常,其他接口数据是否正常返回
案例:某个公告接口超时,查询主接口也挂了,不重要的接口异常/超时,直接抛弃,不能影响主接口的返回
6、错误码是否能够尽可能的全的覆盖所有的情况
不同错误码业务处理是否符合逻辑
7、数据库的增删改查,比如一个post接口操作完成后,通过列表页接口看下新的数据是否和刚才的post一致
8、接口有翻页时,页码与页数的异常值测试
9、接口返回的图片地址能否打开,图片尺寸是否符合需求
10、所有列表页接口必须考虑排序值
11、当输出参数有联动性时,需要校验返回两参数的实际结果是否都符合需求
三、接口调用方异常
1、接入方接口字段类型是否严格按协议接入
案例:某调用方调查询接口对象用string接,之前对象都是[]没问题,后面有数据后,调用方挂了
double用int接
2、返回接口字段由""改为字段不返回,调用方是否兼容
案例:有个字段由“”改为不返回,但前端未兼容,导致前端呈现undefined
3、接口新增了字段,调用方是否会出问题
案例:接口新增了字段,调用方反序列化失败
4、接口删除无用字段,需要和调用方确认无用
5、返回接口字段为""或者null,或字段不返回,调用方是否兼容
6、接口调整后,调用方新老是否都兼容
7、接口返回未知错误码时,是否做了兼容
四、接口安全性测试
1、接口是否防恶意请求(SQL注入)
2、重要参数是否后端也进行校验
如涉钱字段
3、敏感信息是否加密
如用户信息
4、cookie:就是将header中的cookie修改或删除后看是否能返回相应的error code
5、header:就是删除或修改header中部分参数的值,看是否能返回相应的error code
6、唯一识别码:删除修改唯一识别码测试
五、接口性能测试
1、响应时间
单接口测试响应时间过长肯定需要优化
2、接口并发测试
案例:新增邮寄接口,邮寄单号生成规则用的2位随机数,批量请求邮寄接口时,生成了部分相同的邮寄单号
3、过载压测,接口响应,超时率,接口是否报异常,系统资源是否有异常
六、事务测试
1、新增接口多表更新
测试方法:可以对最后或者中间表做手脚,删掉数据或者更新成错误数据,导致更新不成功,看是否会回滚(已插入成功的数据回滚回原样)
2、新增接口同时更新redis和数据库