前言

1、接口常遇见的bug和问题

传入不合规参数,导致程序crash;
数据类型溢出,导致数据读出和写入不一致;
因对象权限未进行校验,可以访问其他用户敏感信息;
状态处理不当,导致逻辑出现错乱;
逻辑校验不完善,可以利用漏洞获取非法利益;

2、测试用例设计

输入- 接口处理逻辑 – 输出-
一个接口通常有输入,输出,有时候输出也是没有的,
用例设计考虑,输入, 输出

针对输入,可以按照参数类型设计;
针对处理,可以按照逻辑进行用例设计;
针对输出,可根据结果进行分析设计;

详情:
针对输入设计:
数值型:
等价类:取值范围内,取值范围外
边界法:取值范围边界:边界最大,最小;边界最小-1,最大+1等
特殊值:0,负值等
遍历法:取值范围的所有数值遍历

举例:一个输入值的范围是int 1-12,需要考虑范围内的值;边界值0,1,12,13;类型的特殊值-1,0;还有int的最小,最大边界值也需要考虑; 如果1-12有指定含义代表,还需要遍历所有数值

风险:特殊值,边界值处理不当,程序退出,数据溢出,返回错误信息等
Int: 数据类型边界:-2147483648 ,2147483648。 (Integer.MAX_VALUE)

字符串型:
字符串长度:
等价法:取值范围内,取值范围外
边界法:规定范围边界,类型边界
特殊值:0,即空字符

字符串内容:
特定类型:英文,中文,大小写等
特殊字符:>,<*!@#$%等
敏感字符:“flg”“TMD""等

举例:接口的功能字符串长度为3位,测试长度:3位,比3多,比3少;
String的最大长度;特殊的空字符;字符串内容是数字,非数字等;特殊字符;是否需要过滤敏感字符;

风险:传入其他类型,超长字符,敏感字等,程序是否异常退出,是否显示,存储有问题,时候特殊处理敏感字

数组或链表类型:
成员个数:
等价法:取值范围内,取值范围外
边界法:规定范围边界,个数边界值
特殊值:0等

成员内容:
等价类:合法和非法成员
重复法:重复的成员
举例:接口接受的数组取值长度一般是5个,取值1-5个内,范围外6个
边界值,请求允许的最大,最小值;特殊值,0个;内容的合法,不合法;重复的内容是否可以
风险:0个是是否异常退出,重复的内容是否允许

针对逻辑设计
约束条件分析:
数值限制:分数限制,金币限制,等级限制等(满足条件才可以执行)
状态限制:需要先登录等(同步信息等)
关系限制:绑定的关系,好友关系等
权限限制:管理员等
风险:约束条件判断不足,用户可以特殊手段获利等

操作对象分析:
操作通常是针对对象的,针对合法和不合法对象进行操作,后台处理会如何
风险:用户可以非权限的操作

状态转换分析:
被测逻辑抽象成状态机,各个状态之间根据各功能逻辑切换,如果打乱这个顺序,跳转操作,就会有逻辑问题,验证正确性
风险:通过特殊手段达到原本不能的状态,从而获利等

时序分析:
在一些复杂的活动中,一个活动是由一系列动作按照指定顺序进行的,只有按照顺序依次执行完成,才能得到预期结果。正常的流程里,动作依次按序执行,不会打乱,但在接口测试时,需要考虑如果不按时序执行,是否会有问题。

例如:客户端数据同步是由客户端触发执行的,期间用户无法干预。功能测试的时候见到的就是,是否能正常同步,进一步拆解,同步流程就是一些列动作。

例如:获取用户信息,发起请求,后台返回登录信息,本地在上传本地数据,后台校验数据,生成diff和对应新增号,返回增量数据及编号,本地在上报冲突,后台处理冲突,返回客户端同步完成的信息。

接口需要依次调用才可以同步完成,但是接口测试的时候就可以测试打乱这个顺序的执行情况,是否异常等。
风险:非顺序执行后,数据出现异常,可能还有其他程序问题

针对输出设计:
针对输出结果:正确结果可能只有一个,但是错误的情况很多。可以根据返回结果列表或者类型,进行用例设计。

风险:
错误前端处理不足,导致前端异常;
错误提示处理不当,用户看到晦涩的程序码;
错误提示不当,用户不知道哪出现问题,如何解决

接口超时:
接口正常情况下是有返回的,如果接受不到返回呢?接口超时处理也是需要考虑的部分,如果处理不当,造成整个流程阻塞,超时后又接收到返回值,导致逻辑错乱。

其他测试合计:
已废弃接口测试:
废弃的接口,存在没有及时删除的情况,需要做好相关废弃接口的检查,以免出现问题。

接口设计合理性分析:
以下几个方面分析:
接口字段是否冗余;
接口是否冗余;
接口是否返回了调用方期望得到的信息;
接口定义是否可满足所有的调用需求;
接口定义调用是否方便;

安全性测试:
针对非专业的安全测试人员,更多的关注业务方面的安全,可以进行如下考虑:
接口是否使用了https协议;
接口的请求数据是否加密处理;
保存到库的关键信息是否做过加密处理;
是否对一些常用的工具请求做了限制;
接口是否对同一IP的访问次数做了限制;

测试项目:
重复提交,并发测试,分布式测试(负载均衡测试),环境异常测试,大数据量测试

性能测试关注点:
响应时间,吞吐量,并发数,服务器性能:(CPU,内容,IO,网络)

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

执着奋斗,拥抱挑战,勇往直前,勇敢闯荡。不畏困难,不惧失败,用智慧与勇气跨越障碍,在奋斗的道路上创造辉煌。相信自己的潜力,追逐梦想,成就非凡的人生旅程!

在每个黎明,奋斗的曙光照亮前路,与勇气为伴,向着梦想扬帆起航。不畏挑战,超越极限,让努力和汗水铺就成功之路。相信自己的坚持,不断奋斗,终将绽放属于自己的辉煌花朵!

勇往直前,坚持拼搏,奋斗的力量将开启无尽可能。不论起点如何,只要心怀梦想,努力向前,就能穿越风雨,迎接辉煌。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐