4.2.1 等价类划分
等价类划分将数据划分为几类(也称为等价类),同一个分类中所有成员都以同样的方式处理(参见Kaner 2013和Jorgensen 2014)。等价类分为有效值和无效值。
•有效值指的是组件或系统应该接受的值。包含有效值的等价类称为“有效等价类”。
•无效值指的是组件或系统应该拒绝的值。包含无效值的等价类称为“无效等价分类”。
•可以为与测试对象有关的任何数据元素,包括输入、输出、内部值、与时间有关的值(例如:事件之前或之后)和接口参数(例如:集成测试期间正在测试的集成组件)确定分类。
•假如需要,任何分类可以分成子分类。
•每个值必须属于一个且仅属于一个等价类。
•当测试用例中使用无效等价类时,它们应单独进行测试,即不应与其他无效等价类组合,以确保不屏蔽失效。当几个失效同时发生,但只有一个是可见的,导致无法发现其他失效,这就是缺陷屏蔽。
为了达到该技术的100%覆盖,测试用例必须从通过每个分类至少选择一个值来覆盖所有已识别的分类(包括无效分类)。覆盖率是以至少通过一个值测试的等价类的数目,除以识别的总的等价类数目进行度量,通常以百分比表示。等价类划分适用于所有测试级别。
4.2.2 边界值分析
边界值分析(BVA)是等价类划分的扩展,但只能在分类有序时使用,由数字或顺序数据组成。分类的最小值和最大值(或第一个和最后一个值)属于分类的边界值(Beizer 1990)。
例如:假设输入字段接受单个整数值作为输入,使用键盘限制输入,使得非整数输入是不可能的。有效范围为1至5的闭区间。因此,存在三个等价类:无效(值太小);有效;无效(值太大)。对于有效的等价类,边界值为1和5。对于无效分类(值太大),边界值为6和9。对于无效分类(值太小),只有一个边界值,即0,因为这是一个只有一个成员的分类。
在上面的例子中,我们识别每个边界的两个边界值。无效(值太小)和有效之间的边界给出了测试值0和1。有效和无效(值太大)之间的边界给出了测试值5和6。这种技术的一些变体识别了每个边界的三个边值:边界之前、边界上和超过边界的值。在前面的例子中,使用三点边界值,下边界测试值为0、1和2,上边界测试值为4、5和6(Jorgensen 2014)。
等价类边界上的行为比等价类内的行为更可能是不正确的。记住这点是重要的:要求和实现的边界可能被转移到其预定位置上面或下面,可能被完全省略,或者可能被不需要的额外边界所补充。通过强制软件展示边界值所属分类以外的分类的行为,边界值分析和测试将发现几乎所有此类缺陷。
边界值分析可应用于所有测试级别。该技术一般用于测试涉及数字范围(包括日期和时间)的需求。分类的边界覆盖是以已测试的边界值的数目,除以已识别的总的边界测试值进行度量,通常以百分比表示。
4.2.3 决策表测试
组合测试技术对于测试系统需求的实现很有用,这些需求描述了条件的不同组合如何导致不同的结果。该种测试的一种方法是决策表测试。
决策表是记录复杂业务规则的好方法,这些规则是系统必须实现的。创建决策表时,测试人员识别系统的条件(通常是输入)和由此产生的动作(通常是输出)。它们构成决策表的行,通常条件在上,动作在下。
每一列对应于一条决策规则,该规则定义了导致执行与该规则相关动作的唯一条件组合。条件和动作的值通常以布尔值(真或假)或离散值(如红、绿、蓝)表示,但也可以是数字或数字的范围。这些不同类型的条件和动作可以在同一个表中找到。
决策表中常见的符号如下:
针对条件:
•Y表示条件为真(也可以用T或1表示)
•N表示条件为假(也可以用F或0表示)
•- 表示条件的值不满足(也可以用N/A表示)
针对动作:
•X表示应该发生的动作(也可以用Y或T或1表示)
•空白表示动作不会发生(也可以显示为-或N或F或0)
完整的决策表有足够的列来涵盖各种条件的组合。可以通过删除包含不可能的条件组合的列、包含可能但不可行的条件组合的列以及测试不影响结果的条件组合的列,精简化决策表。有关如何精简化决策表的更多信息,请参见ISTQB-ATA高级测试分析师大纲。
常见的决策表测试最低覆盖标准是每个决策表规则至少对应一个测试用例。这通常涉及到所有条件的组合。覆盖率是以至少有一个测试用例测试的决策规则数,除以决策表规则的总数,通常以百分比来表示。
决策表测试的优点是它有助于识别所有重要的条件组合,其中一些可能被忽略。它还有助于发现任何需求中的差距。它适用于软件行为依赖于条件组合的所有情况,可以用于所有测试级别。
4.2.4 状态转换测试
组件或系统会对同一个事件有不同的反应,依赖于当前条件或以前的历史(例如:自系统初始化以来发生的事件)。以往的历史可以用状态的概念来概括。状态转换图显示了可能的软件状态,以及软件如何进入、退出和状态之间的转换。转换是由事件(例如:用户在字段中输入数值)触发的。该事件触发了一个转换。如果同一事件可以触发来自相同状态的两个或多个不同的转换,则该事件可能由一个守护条件所限制。状态的改变可能触发软件采取行动(例如输出计算或错误信息)。
状态转换表可以显示所有有效的转换和状态之间可能无效的转换,以及事件、守护条件和有效转换触发的动作。状态转换图通常只显示有效的转换,同时排除无效的转换。
设计的测试可以是覆盖一个典型的状态序列,执行所有的状态,执行每一个转换,执行特定的转换序列,或者测试无效的转换。
状态转换测试可以用于基于菜单的应用,并在嵌入式软件行业中得到广泛应用。该技术也适用于模拟具有特定状态的业务场景或测试屏幕导航。状态的概念是抽象的——它可能表示几行代码或整个业务流程。
覆盖率通常以所测试的被识别的状态或转换数目,除以测试对象的状态或转换的总数,通常以百分比表示。有关状态转换测试的覆盖标准的更多信息,请参见ISTQB-ATA高级测试分析师大纲。
4.2.5 用例测试
测试可以从用例中推导出来,用例是用来设计软件项之间交互的一种特殊方式,包含了用例所代表的软件功能的需求。用例关联了参与者(用户、外部硬件或其他组件或系统)和对象(用例所应用的组件或系统)。
每个用例描述了对象可以与一个或多个参与者协作执行的一些行为(UML 2.5.1 2017)。只要合适,用例可以用交互和活动来描述,也可以用前置条件、后置条件和自然语言来描述。参与者与对象之间的交互可能会触发对象状态的改变。交互也可以通过工作流、活动图或业务流程模型的图形表示。
用例包括其基本行为的可能变化,包括异常行为和错误处理(系统对编程、应用和通信错误的响应和恢复,例如:触发错误消息)。设计的测试是为了验证已定义的行为(基本的、异常的或替代的,以及错误处理)。覆盖范围可以用已测试的用例行为除以总的用例行为进行测量,通常以百分比表示。
有关用例测试的覆盖标准的更多信息,请参见ISTQB-ATA高级测试分析师大纲。

10-07 13:04