测试设计-基于规格说明

1,等价类划分
等价类划分法将程序所有可能的输入数据(有效的和无效的)划分成若干个等价类。然后从每个部分中选取具有代表性的数据当做测试用例进行合理的分类,测试用例由有效等价类和无效等价类的代表组成,从而保证测试用例具有完整性和代表性。利用这一方法设计测试用例可以不考虑程序的内部结构,以需求规格说明书为依据,选择适当的典型子集,认真分析和推敲说明书的各项需求,特别是功能需求,尽可能多地发现错误。等价类划分法是一种系统性的确定要输入的测试条件的方法。
划分等价类的标准:
(1)完备测试、避免冗余;
(2)划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合;
(3)并是整个集合:完备性;
(4)子集互不相交:保证一种形式的无冗余性;

2,边界值分析
边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。
与等价划分的区别:
(1)边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。
(2)边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。

3,决策表测试
决策表是一个用表格形式来整理逻辑关系的工具,由横向的条件(因)和动作(果)和纵向的规则(测试用例)组合而成.
如图所示,判定表通常有以下四个部分组成:
(1)条件桩(Condition Stub):列出了问题的所有条件。通常认为列出的条件的次序无关紧要。
(2)动作桩(Action Stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。
(3)条件项(Condition Entry):列出针对它左列条件的取值。在所有可能情况下的真假值。
(4)动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。
测试设计-基于规格说明
建立步骤
构造决策表的5个步骤:
(1) 确定规则的个数。有n个条件的决策表有2n 个规则(每个条件取真、假值)。
(2) 列出所有的条件桩和动作桩。
(3) 填入条件项。
(4) 填入动作项,得到初始决策表。
(5) 简化决策表,合并相似规则。
若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。
合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为无关条件。

基本形式与扩展形式
基本形式的决策表,在动作项中仅填以“真”或“假”或类似的表达(如T/F, Y/N, 1/0)。
扩展形式的决策表,在动作项中还可以填入数值或简短的文字。

4,状态转换测试

状态转换测试法应用于以下模式:被测组件拥有多个状态(state)各个状态之间的转换(transition)由事件(event)来触发,各个状态之间的转换还可能导致一些动作(action)的产生

在该种模式下被测组件应该包括状态、转换、事件、动作及它们之间的联系。其中各个状态之间是正交(disjoint)的。各个状态是可以被明确识别的,而且其数量是有限的。事件用于触发各状态之间的转换。而事件的触发将由组件的输入产生。作为结果,状态的转换可能导致一些动作的产生,从而可能进一步产生输出。

在该种模式下通常用状态转换图、状态转换模型或状态转换来描述被测组件各状态之间的转换。

在该种设计模式下测试用例将执行(覆盖)各个状态之间的转换。每条测试用例可以覆盖多个转换。但每条用例必须包括。

l  该组件的起始状态。

l  对该组件的输入。

l  期望输出。

l  期望的最终状态。

对于每条测试用例的期望状态,我们必须详细描述以下内容。

l  起始状态。

l  触发该状态转换至下一状态的事件。

l  该转换所产生的期望动作。

l  转换后的期望状态。

在这种模式下的测试用例可以被设计用来测试各状态之间的有效转换,还可以被设计用来测试那些未在组件测试文档中明示的转换。

该黑盒技术是基于被测组件涉及状态的转换为模式

测试设计-基于规格说明

下图为一个组件由事件触发而从一个状态转换到另一个状态,并产生输出。测试设计-基于规格说明

一个组件由事件触发而从一个状态转换到另一个状态

根据设计文档描述得出下图

测试设计-基于规格说明

转换后的表格

测试设计-基于规格说明

 

这一组7条用例覆盖了该组件设计文档中所描述的所有状态转换,但都只执行了一个状态,这一级别覆盖方式称为0-switch覆盖(最基础的覆盖),可以找出显而易见的错误转换或输出,但无法测试到需要进行一系列状态转换才能出现的问题。因此可以提高覆盖等级,把测试用例设计为1-switch覆盖以在一个测试用例中执行多个状态转换。

设计该组件的1-switch覆盖的测试用例时,从4个状态中的某一个状态出发,然后进行两次状态的转换并覆盖所有的可能路径,如下表:

测试设计-基于规格说明

进行再次状态的转换并覆盖所有可能的路径

依照上述方法可以的覆盖等级提高到n-switch覆盖,每个用例覆盖到n个状态的转换,可以测到一些更深层次,需要进行更多状态转换才能出现的问题。

0-switch覆盖的测试用例中的状态转换是所有n-switch覆盖测试用例的的状态转换的全集,但0-switch覆盖的测试用例仅限于组件设计文档的描述,组件设计文档不可能显示地描述一些隐藏的状态转换或无效的状态转换,也就是说0-switch乃至于n-switch覆盖都可能会遗漏这一类隐藏的状态转换或无效的