首先汇总日常最常用的三种方法:等价类划分、边界值分析法、错误推断法。
1.等价类划分
在软件测试中,穷举法虽然是最安全最保险的一种方法但成本代价高,一般是不可取的。我们可以通过等价类划分方法花费最小的代价来完成最高效的测试。
等价类划分是把程序输入域划分成若干子集,然后从子集中选取少数具有代表性的数据进行测试。在子集集合中,各个输入数据对于揭露程序中的错误是等价的。等价类分为有效等价类和无效等价类。
1.1有效等价类
对于程序规格来说合理的、有意义的输入数据的集合,检验程序是否实现了规格说明中的功能和性能。
1.2无效等价类
不合理的、无意义的输入数据集合,验证程序处理意外数据的能力。
1.3划分方法
划分等价类时,可分为按区间划分、按数值划分、按数值集合划分、按限制条件和规则划分、按处理方式划分。除了应掌握必须使同类数据的处理过程及处理结果完全一致的大原则,可参考以下划分方法:
1) 输入条件规定了取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类,如合格成绩取值范围为[60,100],则范围内取值为有效等价类,范围外<60和>100为无效等价类
2) 输入条件规定了输入值的集合或“必须如何”的情况下,可以确定一个有效等价类和一个无效等价类,如:规定数据库类型必须选择oracle,则选择oracle时为有效等价类,否则为无效等价类
3) 输入条件是一个布尔量的情况下,可以确定一个有效等价类和一个无效等价类
4) 输入条件规定必须遵守某种规则的情况下,可以确定一个有效等价类和若干个无效等价类(从不同角度违法规则),如:规定输入必须为非0正整数,则无效等价类可以分为空、0、负整数、小数、字符等
5) 在规定了输入数据的一组值(假定N个),并且程序要对每个输入值分别处理的情况下,可以确立N个有效等价类和一个无效等价类。如下列框选择“科目”,每个科目所显示的信息不同。
6) 在确知已划分的等价类中各元素在程序处理镇南关的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类
1.4等价类表
在确立了等价类后,可以建立等价类表,列出所有划分出的等价类
输入条件 | 有效等价类 | 无效等价类 |
成绩为[0,100]之间整数 | [0,100]之间整数
| 大于100的整数 小于0的整数(负数) 带小数位,如98.5 含有字母的字符串 空 |
1.5设计测试用例
然后从划分出的等价类中按以下原则设计测试用例:
1)为每个等价类规定一个唯一编号
2)设计一个新的测试用例,使其尽可能多得覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止
3)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有无效等价类都被覆盖为止
2.边界值分析法
以往的测试经验表明,由于需求界定不准确、设计不严密、程序书写手误等等原因,对于这些数据范围边界的判断是软件极容易出错的地方。大量的错误往往发生在输入或输出范围的边界上,因此针对各种边界情况设计测试用例,可以检查出更多的错误。
2.1边界值适用场景
边界值法多被应用于以上几个场景中:
输入(输出)条件规定了取值范围
输入(输出)条件规定了值的个数
程序规格说明书中提到的输入或输出是一个有序的集合
程序中使用了一个内部数据结构
边界值取值应当选取正好等于、刚刚大于最大边界值和刚刚小于最小边界值最为测试数据。
2.2边界值选择测试用例原则
1) 如果输入条件规定了值的范围,则应取刚达到这个范围的边界值、以及刚超越这个范围边界的值作为测试输入数据
2) 如果输入条件规定了值的个数,则选取最大个数、最小个数、比最大个数多一、比最小个数少一的数作为测试数据
3) 根据规格说明的每个输出条件,使用规则1)
4) 根据规格说明的每个输出条件,使用规则2)
5) 若输入域是有序集合,则选取集合的第一个元素和最后一个元素作为测试用例
6) 如果程序使用了一个内部数据结构,则应当选择内部数据结构上得边界值作为测试用例
7) 分析规格说明,找出其他可能的边界条件
3.错误推断法
错误推断法一般基于以往的测试经验和直觉,参照以往的软件系统出现的错误,推测程序中可能存在的各种错误,列出程序中所有可能有的错误和容易发生错误的情况,有针对性的设计测试用例。
例如:
单元测试用例中列出许多在模块中常见的错误、以前产品测试中曾经发现的错误等
输入数据为0或字符为空
各种情况在产品说明中常常被忽视,也可能被程序员遗忘,但在实际使用中却经常发生。测试人员要站在用户的角度,考虑他们要输入的信息,而不管这些信息看起来是合法的输入还是非法的输入。