1.等效类划分法
把程序的输入域分成若干个子集(即等效类),然后从子集中选取少量具有代表性的数据作为测试输入。对于划分出来的等效类而言,集合中所有的输入数据对于揭露程序中的错误都是等效的;
等效类可以划分为有效等价类和无效等价类,有效等价类为正面数据,也就是可以使程序正常输出的数据据,无效等价类则反之,是会使程序报错的数据
等效类划分法使用步骤如下:
- 确定需求,确定有效等价类和无效等价类
- 在确立了等效类之后建立等价类表,列举出划分出的等价类
- 从划分出的等效类中选择测试用例
选择测试用例原则如下:
对于有效等价类而言,设计测试用例时应该尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止。这样做一方面可以保证测试质量,同时也可以提高测试效率
对于无效等价类而言,设计测试用例时应该仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有无效等价类都被覆盖为止。这样做可以方便确认是由哪一个无效等价类引起的程序报错,确保每一个无效等价类都能够被程序处理。
适用场景:测试的数据量过大,且数据可以分类时。
2. 边界值分析法
边界值分析法是对等价类划分法的一个补充,边界值一般是从等价类的边缘值去寻找
根据人们的工作经验得知,大多数的错误是发生在边界值上,因此针对边界值设计测试用例,可以查出更多的bug。
使用原则:确定边界,选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据。一般有两点法(选取边缘值),四点法(选取两边缘值,以及两边缘值的边缘值),三点法(选取两边缘值以及中间值)
例如,对于[0.01~520]的范围,两点法可选取0.01和520,四点法可选取0.01,0.02,520和519.99,三点法可选取0.01,520和260;
注意:
- 在测试中需要留意生活中默认的边界,比如时间(0~24时),月份(1~12月),星期(1~7天)
- 特殊边界值:负数,0,空格/空,特殊字符
使用场景:需求规定了取值范围或规定了取值个数时,可以利用边界值测试,常见场景如下:
- 1输入条件规定了取值范围或值的个数(mininum<x<maximum,mininum<x, x<maximum),比如红包金额数值的输入范围
- 下拉列表所包含的多个选项,比如城市的下拉选项(第一个、最后一个、中间一个)
- 报表数据的第一行,最后一行、中间一行
- 屏幕上的光标在最左上角,最右下角的位置
举例:
3.场景法(流程图)
通过场景描述的业务流程图(业务逻辑),包括代码实现逻辑,设计用例来遍历场景,验证软件系统功能的正确性。
使用步骤:
- 画出流程图
- 遍历场景,提取测试用例(包括可以正常输出的流程和发生异常的流程)
- 覆盖正常的路径(冒烟测试)
- 走每一个分支(找判断语句)
- 如果出错步骤是重新回到主流程,需要走一步正确的步骤(虽然冒烟测试以及走过正确流程,但出错之后再回到主流程时程序入口和这里不一样,所有需要再走一次)
注意:场景法重在测试流程,梳理核心业务,每个流程用一个测试用例即可,但测试流程没有问题不代表系统功能没有问题,对于单个功能模块,还需要等效类法,边界值法等进行测试。
举例:
从以上流程图中列举的场景如下:
- 插入银行卡合法,输入密码正确输入金额合法,账户余额充足,ATM现金充足,取款成功
- 插入银行卡合法,输入密码正确输入金额合法,账户余额充足,ATM现金不充足,提示重新输入金额
- 插入银行卡合法,输入密码正确输入金额合法,账户余额不充足,提示重新输入金额
- 插入银行卡合法,输入密码正确输入金额不合法,提示重新输入金额
- 插入银行卡合法,输入密码不正确,出错不到三次,提示重新输入密码
- 插入银行卡合法,输入密码不正确,出错三次,吞卡
- 插入银行卡合法,用户取消输入密码,退卡
- 插入银行卡不合法,提示错误,退卡
在以上场景法分析中,并没有考虑到各个模块的细节,比如用户输入密码时长度是否符合,密码规则是什么样子的,所以场景法主要测试流程,对于单一的功能模块还需要使用边界值,等效类等测试,也就是说,场景法+等效类+边界值才是完整的测试。
4.错误推测法(反推法)
基于经验、直觉和知识储备等,不可直接使用,只能作为补充测试方法(从功能和非功能的角度考虑)。
举例:某平台出现登陆失败的情况,列出可能的出错结果如下:
- 用户名密码错误/没有注册
- 账号为空
- 验证码错误
- 浏览器不兼容
- 网络不好
- 用户太多,软件性能问题
- 数据库停止服务
- 账号被拉黑
- APP限制登陆
- 多次登陆失败被冻结
- 异地登陆