Jianyuan Lab
发布时间:2024-10-12 作者:上海工业控制安全创新科技有限公司 点击次数:次
上篇文章(ISO 26262中测试用例的得出方法-边界值分析)我们介绍了等价类方法和边界值方法,这两种方法广泛应用并适用于各种类型测试的设计中,本章开始我们介绍黑盒测试常用的其他方法,先从因果图法开始。
01
开始之前
前两篇(等价类的生成和分析、边界值分析)介绍的等价类和边界值法通常只分析单个输入条件本身,不会涉及多个条件的组合,特别是不会考虑各输入条件相互之间的逻辑制约关系。如果在测试设计时需要考虑多个输入条件之间的组合,以及配合输入条件的多个触发动作,以得出不同逻辑制约情况下的不同结果,在这种复杂情况下测试设计通常会选用因果图法。
因果图法会对需求进行内在逻辑上的深入分析,但对于分析结果的测试用例生成,不能很直观的对测试设计人员给以体现,需要使用判定表结合起来做测试用例的设计。
02
因果图法的常用概念
2.1 因果图法的测试设计步骤
使用因果图法进行测试分析时,通常都是遇到需求说明中逻辑关系复杂的情况,使用因果图法分析的步骤通常如下:
1. 对需求进行梳理,划分出原因及输入条件,处理过程如何进行即中间状态或执行动作,得出的结果即输出条件。
2. 将上个步骤分析出的所有输入条件,中间状态或执行动作,输出条件通过连线连接起来,形成“因果图”。
3. 使用因果图法的标准符号,在上个步骤的“因果图”上标明从原因到结果间的逻辑约束关系,这些符号也标明了原因结果的条件组合关系在某些情况下是不会发生的。
4. 使用判定表将因果图的每个组合逐个列出来。
5. 使用判定表法将表中每一列组合设计成一条测试用例。
绘制因果图时会使用统一的标记符号,以及标识方法。通常使用C表示原因及输入条件,用E表示结果即输出条件,各节点状态用0表示不出现,用1表示出现。
原因结果关系的基本标识
原因和结果关系的基本标识有以下4种:
1. 恒等关系,表示原因C1出现时,则结果E1出现,原因C1不出现时,则结果E1不出现。
2. 非关系,表示原因C1出现时,则结果E1不出现,原因C1不出现时,则结果E1出现。
3. 或关系,表示多个原因C1、C2、C3等至少有一个出现时,结果E1出现,C1、C2、C3全部不出现时,结果E1不出现。
4. 与关系,表示多个原因C1、C2、C3等全部出现时,结果E1才会出现,C1、C2、C3只要有一个不出现时,结果E1就不出现。
条件间的逻辑关系标识
输入和输入,输出和输出间的逻辑约束关系分为5种:
1. 条件间的互斥关系,用“E”标识,表示条件C1、C2间逻辑互斥,不会同时成立,两个条件最多有1个成立。
2. 条件间的包含关系,用“I”标识,表示多个条件C1、C2等中,必定至少有一条成立,没有全部条件都不成立的情况。
3. 条件间的唯一关系,用“O”标识,表示多个条件C1、C2中有且仅有一条会成立,不会有全部不成立或者超过1条以上成立的情况。
4. 条件间的要求关系,用“R”标识,表示条件C1成立时,条件C2必须也成立。
5. 条件间的屏蔽关系,用“M”标识,屏蔽关系通常适用于结果输出条件间的特定逻辑约束,表示条件E1为真时,E2必须是假;E1为假时,E2值不确定而不一定是真。
03
因果图法的示例
本篇我们继续使用空调的案例在原逻辑的基础上稍作改动进行分析。
需求规格说明要求,在车内温度超过25摄氏度时,打开空调按钮,发动机启动情况下,此时风扇启动吹冷风,空调压缩机启动;发动机未启动时仅打开风扇。在车内温度低于15摄氏度时,打开空调按钮,无论发动机是否启动,此时风扇启动吹热风,空调压缩机不启动。温度在15摄氏度至25摄氏度之间时,打开空调按钮,无论发动机是否启动,此时仅启动风扇,空调压缩机不启动。
分析上段的需求说明我们可以得出:测试中原始的输入触发条件为不同情况下的温度,加上中间节点发动机的启动状态和空调按钮状态,综合判断得出的不同输出结果为风扇和压缩机的组合状态情况。
绘制因果图
根据需求分析,我们将最原始的输入触发条件的温度分为3个初始输入条件,实际触发温度有且只有1个,所以初始的3个输入条件的关系为唯一关系。在过程的中间节点,会因为发动起启动状态和空调按钮开启状态,综合温度情况,最终影响决定输出结果的情况。
如输入条件C1车内温度大于等于25摄氏度为真时,C2、C3不能成立,中间状态的发动起状态和空调按钮状态两个条件的组合对结果的影响为或的关系,结合输入条件C1,我们分析得知,在C1为真时,如果发动机启动为真,空调按钮为假,则结果输出风扇关闭,压缩机关闭;如果发动机启动为假,空调按钮为真,则结果输出风扇启动,压缩机关闭;如果发动机启动为真,空调按钮为真,则结果输出风扇启动,压缩机启动;如果发动机启动为假,空调按钮为假,则结果输出风扇关闭,压缩机关闭。其他情况我们根据需求说明类推。
根据分析画出因果图如下:
生成判定表
分析画出的因果图对逻辑的理解有很大帮助,但是直接对照因果图设计测试用例则不是友好。通常会使用判定表来协助设计用例,避免测试用例设计遗漏。
如下图根据因果图得出判定表:
使用判定表我们就可以避免在不同输入条件组合时发生场景设计遗漏的情况。本实例中我们可以得出12条不同情况下的测试用例。
04
测试小结
在使用因果图法时有如下建议:
1. 因果图法在需求中输入和输出以及中间过程有复杂逻辑约束关系时使用,可以通过因果图轻松梳理整个过程。
2. 在必要时使用因果图法,相对前两篇的等价类和边界值法,因果图法的复杂程度大大增加,推荐在必要时使用因果图法。
3. 因果图法必须搭配判定表使用。
参考文献:
1. 全国计算机技术与软件专业技术资格考试指定用书 – 软件评测师教程.