等价类划分方法:
一.方法简介
1.定义
是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。
2.划分等价类:
等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。
1)有效等价类
是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
2)无效等价类
与有效等价类的定义恰巧相反。无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。
设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。
3.划分等价类的标准:
1)完备测试、避免冗余;
2)划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合;
3)并是整个集合:完备性;
4)子集互不相交:保证一种形式的无冗余性;
5)同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到"相同的执行路径"。
4.划分等价类的方法
1)在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。如:输入值是学生成绩,范围是0~100;
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image029.jpg
2.场景设计:下表所示是生成的场景。
表3-8 场景设计 场景1——成功提款 | 基本流 | | 场景2——ATM内没有现金 | 基本流 | 备选流2 | 场景3——ATM内现金不足 | 基本流 | 备选流3 | 场景4——PIN有误(还有输入机会) | 基本流 | 备选流4 | 场景5——PIN有误(不再有输入机会) | 基本流 | 备选流4 | 场景6——账户不存在/账户类型有误 | 基本流 | 备选流5 | 场景7——账户余额不足 | 基本流 | 备选流6 |
注:为方便起见,备选流3和6(场景3和7)内的循环以及循环组合未纳入上表。 3.用例设计 对于这7个场景中的每一个场景都需要确定测试用例。可以采用矩阵或决策表来确定和管理测试用例。下面显示了一种通用格式,其中各行代表各个测试用例,而各列则代表测试用例的信息。本示例中,对于每个测试用例,存在一个测试用例ID、条件(或说明)、测试用例中涉及的所有数据元素(作为输入或已经存在于数据库中)以及预期结果。 表3-9 测试用例表
TC(测试用例)ID号 | 场景/条件 | PIN | 账号 | 输入(或选择)的金额 | 账面 金额 | ATM内的金额 | 预期结果 | CW1 | 场景1:成功提款 | V | V | V | V | V | 成功提款 | CW2 | 场景2:ATM内没有现金 | V | V | V | V | I | 提款选项不可用,用例结束 | CW3 | 场景3:ATM内现金不足 | V | V | V | V | I | 警告消息,返回基本流步骤6,输入金额 | CW4 | 场景4:PIN有误(还有不止一次输入机会) | I | V | n/a | V | V | 警告消息,返回基本流步骤 4,输入 PIN | CW5 | 场景4:PIN有误(还有一次输入机会) | I | V | n/a | V | V | 警告消息,返回基本流步骤 4,输入 PIN | CW6 | 场景4:PIN有误(不再有输入机会) | I | V | n/a | V | V | 警告消息,卡予保留,用例结束 |
4.数据设计 一旦确定了所有的测试用例,则应对这些用例进行复审和验证以确保其准确且适度,并取消多余或等效的测试用例。 测试用例一经认可,就可以确定实际数据值(在测试用例实施矩阵中)并且设定测试数据,如表3-10所示。 表3-10 测试用例表 TC(测试用例)ID号 | 场景/条件 | PIN | 账号 | 输入(或选择)的金额 (元) | 账面
金额(元) | ATM内的金额(元) | 预期结果 | CW1 | 场景1:成功提款 | 4987 | 809-498 | 50.00 | 500.00 | 2 000 | 成功提款。账户余额被更新为450.00 | CW2 | 场景2:ATM内没有现金 | 4987 | 809-498 | 100.00 | 500.00 | 0.00 | 提款选项不可用,用例结束 | CW3 | 场景3:ATM内现金不足 | 4987 | 809-498 | 100.00 | 500.00 | 70.00 | 警告消息,返回基本流步骤6,输入金额 | CW4 | 场景4:PIN有误(还有不止一次输入机会) | 4978 | 809-498 | n/a | 500.00 | 2 000 | 警告消息,返回基本流步骤4,输入PIN | CW5 | 场景4:PIN有误(还有一次输入机会) | 4978 | 809-498 | n/a | 500.00 | 2 000 | 警告消息,返回基本流步骤4,输入PIN | CW6 | 场景4:PIN有误(不再有输入机会) | 4978 | 809-498 | n/a | 500.00 | 2 000 | 警告消息,卡予保留,用例结束 |
测试用例设计综合策略
1. Myers提出了使用各种测试方法的综合策略: 1)在任何情况下都必须使用边界值分析方法,经验表明用这种方法设计出测试用例发现程序错误的能力最强。 【文章来源:文斯测试技术研究中心 2)必要时用等价类划分方法补充一些测试用例。 3)用错误推测法再追加一些测试用例。 4)对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充足够的测试用例。 5)如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法。 2.测试用例的设计步骤 1)构造根据设计规格得出的基本功能测试用例; 2)边界值测试用例; 3)状态转换测试用例; 4)错误猜测测试用例; 5)异常测试用例; 6)性能测试用例; 7)压力测试用例。 3.优化测试用例的方法 1)利用设计测试用例的8种方法不断的对测试用例进行分解与合并; 2)采用遗传算法理论进化测试用例; 3)在测试时利用发散思维构造测试用例。
|