文章目录
3.3 基于组合技术和组合优化的方法
3.3.1 判定表(决策表)测试
使用决策表测试方法的原因:
因为等价类测试独立性假设,忽略输入条件的相互关联,所以测试用例存在严重的冗余。
决策表是功能性测试方法中最严格的。决策表的完备性保证一种完备的测试。
对于多因素,有时可以直接对输入条件进行组合设计,不需要进行因果分析,即直接采用判定表方法。
决策表的优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用决策表能够设计出完整的测试用例集合。基于决策表的测试是以等价类为基础的,测试的完备性和无冗余性通过决策表可以得到较为完美的体现。
判定表:由“条件和活动”两部分组成,即列出一个测试活动执行所需的条件组合,所有可能的条件组合定义了一系列的选择,而测试活动需要考虑每一个选择。
判定表 元素:
- 条件桩,列出问题的所有条件
- 动作桩:列出可能针对问题所采取的操作
- 条件项:针对所列条件的具体赋值
- 动作项:列出在条件项(各种取值)组合情况下应该采取的动作。
- 规则:任何一个条件组合的特定取值及其相应要执行的操作。
例:
判定表方法步骤:
决策表的化简:
前提条件:1.输出完全相同; 2.输入相似:仅一个输入条件可不同,其他完全相同。
例子:
例1
对功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应给予优先的维修处理
基于决策表的测试注意事项:
- 输入条件不存在相关性,不需要使用决策表测试方法。
- 不处理无效等价类。
- 针对输入域,需要对输出域进行细化,保证测试用例更加准确。
总结:
- 目标:在特定条件下消除等价类测试的冗余
- 基本思想:基于强组合等价类测试得到有效域上完整的测试用例集合,并通过合并化简消除用例间的冗余。
- 以强组合等价类测试为基础,遵循独立性假设
3.3.2 因果图法
适用于多种输入条件的组合,产生多种结果设计测试用例
使用步骤:
- 分析软件规格说明文档描述的哪些是原因(输入条件),哪些是结果(输出条件),给每个原因和结果赋予一个标示符。
- 找出原因与结果,原因与原因之间的对应关系,画出因果图
- 在因果图上标上哪些不可能发生的因果关系,表明约束或限制条件
- 根据因果图,创建判定表,将复杂的逻辑关系和多种条件组合很具体明确的表示出来
- 把判定表的每一行作为依据设计测试用例。
基本符号:
原因——》结果
原因——》原因
结果——》结果
例1:某个软件规格说明书中包含以下的要求:第一个字符必须是A或B,第二个字符必须是一个数字,在此情况下进行文件的修改;但如果第一列字符不正确,则输出信息L;如果第二列字符不是数字,则给出信息M。采用因果图方法进行分析,可根据下表获得图的各种组合。
3.3.3 两两组合(Pair-wise)方法
大部分缺陷是在两个变量取值冲突的测试时被发现的 。
“Pair-wise Testing”基本原理:不测试所有的组合,测试所有的“Pair-wise ”即可。
可使用一些测试工具:CATS,OATS,AETG等
3.3.4 正交实验法
测试步骤:
- 确定影响功能的因子与状态
- 选择一个合适的正交表
- 利用正交表构造测试数据集
使用原因:测试组合会变得很多,如果按照传统的测试方法,会导致很大的测试工作量
设计方法:从大量的(实验)数据(测试例)中挑选适量的、有代表性的点(条件组合),从而合理地安排实验(测试)的一种科学实验设计方法 。
例子:
3.3.5 基于场景的测试
基本原理:
基本流:从系统的某个初始状态开始,经一系列状态变化后到达终止状态的过程中最主要的一个业务流程
备选流:以基本流为基础,在经过基本流上每个判定节点(包括条件判定和循环判定)处满足不同的触发条件,而导致的其他事件流
区别:
场景设计的基本原则:
- 最少的场景数等于事件流的总数,即基本流与备选流的总数
- 有且唯一有一个场景仅包含基本流
- 对应某个备选流,至少应有一个场景覆盖该备选流,且在该场景中应尽量避免覆盖其他的备选流
例子:
测试用例设计:
测试数据设计:
总结:
该法主要用于功能测试
黑盒测试方法比较
-
测试工作量
测试执行工作量:
测试用例标识工作量:
容易使用的方法将生成大量测试用例,执行时间长,而若将工作量投入到更精细的测试方法,则执行时间会缩短。 -
测试效率:
局限性:存在未测试的功能漏洞和冗余测试。
结论:功能性测试有漏洞,使用更精细的手段可缩小这些漏洞。 -
测试有效性
研究测试有效性的困难:不知道程序中的所有缺陷,因此永远也不会知道给定方法所产生的测试用例是否能够发现这些缺陷。
黑盒测试使用方针:
- 若变量引用的是物理量§,可用定义域测试和等价类测试;
- 若变量是独立的,可采用定义域测试和等价类测试;
- 若变量不是独立的,可采用决策表测试;
- 若可保证单缺陷假设,可采用边界值分析和健壮性测试;
- 若保证多缺陷假设,可用最坏情况、健壮最坏和决策表测试;
- 若程序包含大量例外处理,可采用健壮性和决策表测试;
- 若变量引用的是逻辑量(L),可采用等价类和决策表测试。