抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

为什么要进行测试

程序中的功能限制,如果只有前端进行限制,那么有可能被伪造协议跳过前端限制,直接对后端发起请求

测试用例设计思路

测试用例设计分为三大类,分别是参数类型功能逻辑其他

参数类型

参数类型测试用例基于请求参数的类型出发设计,参数类型分为三种:

  1. 数值型
  1. 字符串型
  1. 对象型

数值型

数值型需要设计以下的用例类型:

  1. 取值范围边界
  1. 取值类型边界
  1. 特殊值(0、负数、其他类型、空)

例如:checkTask(int taskID)中taskID的取值范围是1-35,那么设计用例的时候可以考虑

  1. 1-35范围内和范围外的值
  1. 1-35的边界:0、1、35、36
  1. 类型的特殊值:-1、0、nil、其他类型
  1. 数据类型的边界:int的最小最大值

常见的问题和风险:

  1. 特殊值处理不当导致异常
  1. 类型边界溢出
  1. 取值范围外值未返回预期错误信息

字符串型

字符串型需要设计以下的用例类型:

  1. 字符串长度:边界长度、空字符串、null值
  1. 字符串内容:特殊类型(中文、英文、大小写等)、特殊字符串和敏感词

例如:getDayOfDDHH(String ddhh)中的ddhh可以考虑:

  1. 长度为4位,可以考虑4位多或者少的参数
  2. 边界值:String的最大长度
  3. 特殊值:空字符串、空值
  4. 字符串内容:数字、非数字、敏感字、特殊字符

可能出现的问题和风险:

  1. 传入非特定类型,程序异常退出
  1. 超长的字符串未进行特殊处理,导致存储、显示异常
  1. 其他用户可见的设置的敏感字

对象型

对象型需要设计以下的用例类型:

  1. 成员个数:范围边界,空对象,空值,其他类型
  1. 成员内容:类型合法成员,类型非法成员,重复成员

例如:submitTask(int[] taskID),taskID可以考虑:

  1. 正常取值:1-5个任务ID
  1. 边界值:0,1,5,6个任务ID
  1. 特殊值:负值、空值、0
  1. 合法ID和不合法的ID
  1. 重复ID

可能存在的问题和风险:

  1. 0个item时导致的结果风险
  1. 重复item未去重导致的结果异常

功能逻辑

功能逻辑用例设计需要考虑下面三个方面:

  1. 约束条件
  1. 操作对象
  1. 状态转换

约束条件

约束条件主要通过条件限制、数值限制两个方面进行测试

条件限制

  1. 关系限制:用户之间是好友、关注等
  2. 权限限制:拥有某种权限才能操作
  3. 距离、位置限制
  4. 时间约束
  5. 其他

数值限制

  1. 分数限制
  2. 等级限制
  3. 货币限制
  4. 次数限制
  5. 参数范围限制

操作对象

主要测试以下两个方面

  1. 不合法对象:接口应该操作指定的对象接口,但是可以传入其他类型的对象进行操作
  1. 不存在对象:指定操作的对象不存在

状态转换

状态转换主要测试以下两个方面

  1. 状态限制:用户进行某一操作时需要处在某个特殊的状态
  1. 状态转换:将被测逻辑抽象成状态机,各个状态之间根据功能逻辑从一个状态切换到另一个状态

其他测试

其他测试主要是协议连发和已废弃协议测试

协议连发

  1. 短时间内连续发送多次领取奖励、购买物品、抽奖协议,可能导致多发或者少发奖励、物品,多扣或者少扣物品
  2. 重复发送多次相同协议参数,可能会导致已领取过的奖励重复领取(幂等测试)

已废弃协议测试

  1. 已废弃协议测试主要为一些有定义,但是需要变动或其他原因,目前不可用,但是逻辑代码没有及时删除。如果调用这些协议,可以获得额外的利益

评论