测试一个两位数的加法计算器
测试需求:
- 测试两个参数的值相加后的结果是否正确
- 其中:输入的数值在-99到99之间大于99或小于-99的输入应被拒绝,并显示错误信息
开始测试
- 根据测试需求,我们开始测试
- 分别给第一个参数和第二个参数输入表中的值,得到的测试结果如表所示:
- 很明显,如果我们对第一个参数的值分别取从-99到99的199个数,第二个参数的值分别取从-99到99的199个数,我们不可能对两位数相加的所有情况进行穷举测试。
解决方法:
等价类划分法
- 等价类划分的办法就是把程序的输入域划分成若干部分
- 然后从每个部分中选取少数代表性数据当作测试用例
- 每一类的代表性数据在测试中的作用等价于这一类的其他值
- 也就是说,如果某一类中的一个例子发现了错误,这一等价类中的其他例子也能发现同样的错误
- 反之,如果某一类中的一个例子没有发现错误,则这一类中的其他例子也不会查出错误
- 如果输入条件规定了取值的范围或值的个数,则可确定一个有效等价类和两个无效等价类
- 如果一个输入条件说明了一个 "必须成立" 的情况,则可划分一个有效等价类和一个无效等价类
- 如果输入条件规定了输入数据的一组可能的值,而且程序是不同的方式处理每一种值,则可为每一种值划分一个有效等价类,并划分一个无效等价类
- 如果我们确知,已划分的某等价类中的各元素(例子)在程序中的处理方式是不同的,则应据此将等价类进一步划分成更小的等价类
- 在确立了等价类之后,建立等价类表,列出所有划分出的等价
基于等价类划分的用列设计
- 明确测试对象,非测试对象保证正确
- 为每个等价类规定一个唯一的编号
- 设计一个新的测试用列,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效等价类均被测试用例所覆盖
- 设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步使所有无效等价类均被覆盖
等价类划分实战
STEP1: 根据测试需求可以分为三个等价类:
- 一个有效数据的等价类,两个无效数据等价类
- 有效数据等价类就是:由那些对程序的规格说明有意义的、合理的输入数据结构所构成的集合
- 无效数据等价类就是:那些对程序的规格说明不合理的或无意义的输入数据所构成的集合
?STEP2:建立等价类表
- 在实际工作中,我们通常在确立了等价类以后,把程序中所有的等价类建立等价类表,以便在编写测试用列的时候有所依据
?STEP3:确定测试用例
- 为等价类表中的每一个等价类分配一个唯一的编号
- 设计一个新的测试用例,使它能够尽量覆盖尚未覆盖的有效等价类
- 重复这一步骤,从而使所有有效等价类均被测试用例所覆盖
- 与上步类似,设计一个新的测试用例,使它只覆盖一个无效等价类
- 重复这一步骤,从而使所有无效等价类均被测试用例所覆盖
?STEP4:细化等价类划分
- 在测试 "-99<=数值<=99" 的这个等价类区间的时候
- 我们会发现如10 + 40,-20 + 30 和 - 30 +(-30)这类的正数相加,正数负数相加,负数相加也是不同的等价区间
- 根据以上等价类划分的结果,得出一下表的等价类表
?STEP5:完善测试用例
- 根据上面划分的4个等价类,我们至少需要有5个测试用例
?
等价类的特点
- 测试相同的内容
- 如果等价类的一个测试能够捕获一个缺陷,那么选择该等价类中的其他测试也能捕获该缺陷
- 如果等价类中的一个测试不能捕获缺陷,那么选择该等价类中的其他测试也不会捕获缺陷
- 如果正确的划分等价类,阔以大大降低测试用例的数量,测试会准确有效
- 如果错误的将两个不同的等价类当作一个等价类,那就会遗漏一种测试情况
等价类划分要注意的问题
- 不但要考虑有效等价类,也要考虑无效等价类
- 仔细划分,审查划分
- 过于粗略可能会漏掉软件缺陷
等价类用例设计联系
- 测试需求:余额宝体现到银行卡增加新规则:快速到账(2小时)日限额1w元
- 超过1w元只能选择普通到账
分析过程
?
经典等价类划分面试题
- 问题:根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例
- "一个程序读入3个整数,把这三个数值看做一个三角形的3条边的长度值
- 这个程序要打印出信息,说明这个三角形是不等边的、是等腰的、还是等边的
1、把得出三角形的条件列好
2、覆盖测试用例即可
|