“组合“特性包括:
存在大量的参数(数据)
每个参数有很多值
参数之间可能存在一些逻辑关系
2)应用步骤
Step1:建模
”C-组合“可以使用因子状态表,组合测试【2】或者正交测试技术可以参考。
例如,给定四个因素,测试所有组合需要72个测试用例。我们可以通过确保每个因素的每个值和其他任何一个值的组合至少被测试过一次的方法来减少测试用例数量同时尽可能带来的风险。
Step2:设计基础用例
在http://www.pairwise.org/tools.asp站点里有很多关于结对测试的工具。其中,PICT是一款非常好用的工具。
使用PICT设计基础用例的的过程,就是使用PICT特殊的”语言“形成的表格。一旦我们定义这些规则,我们可以在DOS环境下运行这些脚本。所有的基础测试用例自动生成。
举例说明,在”model_test.txt”文件中定义了下面的规则:
Factor A:A1,A2
Factor B:B1,B2,B3
Factor C:C1,C2,C3,C4
Factor D:D1,D2,D3
当我们执行下面命令:
C:\>pict model_test.txt > output.xls
下面12个基础测试用例会被自动保存在output.xls中:
这12个组合就是我们所需要测试的确保每个因子的每个值都至少跟其他因子的值组合测试过一次。
Step3:补充测试数据
针对每个基础测试用例,为涉及到的每个参数定义一个值。例如,如果“A1″代表”>50″,那么用60代替。
Step4:拓展测试
基于经验补充特殊的测试用例。
F S-State
1) 应用条件
如果测试对象的设计规格中存在”状态“特征,”S-状态“方法可以被用来建模。
”状态“的特性包括:
测试对象的行为变化基于它内部的状态
确定的事件触发测试对象的状态
2)应用步骤
Step1:建模
”S-状态“可以通过”状态图“建模,可参看”基于状态测试“的技术。
在一个状态图中,状态可以通过节点表示,事件可以通过连接节点的弧表示。
建模步骤如下:
从规格中识别行为对象
对这些行为对象确定所有可能的状态
对每个状态,画出节点
识别所有在状态之间的节点传输
针对每个传输,确定触发的事件
针对每个事件,画出相关节点的链接
Step2:设计基础用例
很多方法可以用来设计基础用例覆盖状态图。其中之一就是Chow的方法【10】
TableXI 列举了用Chow’s的0-Switch的覆盖方法针对上图生成的基础测试用例。TableXII列举了使用Chow的1-Switch覆盖方法的基础测试用例。注意,基础测试用例的增加是考虑单个传输还是成对的传输路径。
distinguish=49AE1A9C29384643A18286B2962A6C6D data-media-type=image data-inited=true v:shapes=”_x0000_i1041″>
Step3:补充测试数据
针对每个基础数据,我们识别涉及的相关变量然后通过等价类划分和边界值定义测试数据。这个结果在每个抽象的测试用例里可以被扩展成一个或者多个可执行的具体测试用例。
Step4:拓展测试
基于经验补充特殊的测试用例。
这个章节讲述的是关于PPDCS方法。简单功能的测试分析和测试设计,第一件事就是识别简单功能(或称为单元或组件)的数目。针对每个简单功能,需要哪种测试分析:通过PPDCS方法建模,设计基础用例来覆盖模型,针对每个测试用例补充更多的测试数据,然后通过基于经验设计其他的测试用例。
V 结果
在华为,一些实验性质的项目开发者被教导使用MFQ&PPDCS方法。表格XIII在产品的一个特性使用传统设计方法和使用PPDCS方法比较了M 部分(MFQ框架的简单功能部分)的结果。
开发人员使用传统的测试方法(主要是基于经验的测试方法)设计了86个测试用例。由于在测试用例设计过程之前没有明显的测试分析过程,该特性的2个部件在开发人员设计测试用例过程被忽视了。(识别简单功能的数量的步骤没有施行好)。运行这86个用例后,只有1个缺陷被检测出来。
为了比较传统测试设计方法和PPDCS的新的测试方法的效用,一个新的测试者被指派重新使用PPDCS方法来进行这个特性的设计。结果是,设计了102个测试用例。4个部件全部被识别到,而且该特性的更多功能点被测试用例覆盖。测试分析和测试设计过程结束后,即便那个时候还没有测试用例执行,已经检测到5 个缺陷。
distinguish=7AD5CC13BCA641AEA3312622B9C09C5D data-media-type=image data-inited=true v:shapes=”_x0000_i1042″>
结论:
开发人员可以很快学会,然后在PPDCS的帮助下,单元测试分析和测试设计做得很好,即使之前只有一点点的测试设计知识基础。
很多潜在的缺陷在建模阶段就被发现和预防了,而传统的测试需要测试者在软件实现完成以后发现。这是因为建模的过程同时也是测试分析的过程,测试规范通常在测试分析阶段会被审查一遍,然后潜在问题在早期就被发现。
因为PPDCS是黑盒测试方法,当结合白盒测试方法(例如:通过白盒测试技术比如状态覆盖、分支覆盖、路径覆盖等等来补充测试用例),可以获得更好的覆盖率。
开发人员可以很容易将测试分析过程合并到软件分析过程,使得软件设计更加完善。
VI 总结
综上所述,针对大型嵌入式软件系统的测试分析和测试设计过程是:
在低级别的测试,比如单元测试,简单功能(“M”Part)要彻底测试。在高级测试级别,比如系统测试、功能交互(“F”part)和质量属性(“Q”部分)需要彻底地测试。然后,这并不是绝对的。
原文转自:http://hejiajie.cn/archives/472