判定表法针对输入条件之间的约束不能有效区分,会导致产生一些不合理的组合条件。需要体现输入条件之间的相互制约关系,可以使用因果图法。
定义:
因果图法是用图解的方法表示输入的各种组合、约束关系,依据因果图最终写出判定表从而设计相应的测试用例。
因果关系:
体现条件和结果的关系。左结点表示输入状态(原因),右结点表示输出状态(结果)
- 恒等:若c1是1,则e1也是1;否则e1为0.
- 非:若c1是1,则e1是0;否则e1是1。
- 或:若c1或c2或c3是1,则e1是1;否则e1为0。“或”可有任意个输入
- 与:若c1和c2都是1,则e1为1;否则e1为0。“与”也可有任意个输入。
约束关系:
输入条件间可能存在某些依赖关系,称为约束。例如,某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。
- E约束(异):a和b中至多有一个可能为1,即a和b不能同时为1.
- I约束(或):a、b、c中至少有一个必须为1,即a、b、c不能同时为0.
- O约束(唯一):a和b必须有一个且仅有一个为1。
- R约束(要求):a是1时,b必须是1,即a为1时,b不能为0.
- M约束(强制):若结果a为1,则结果b强制为0。
设计用例步骤
- 分析需求:阅读需求文档,将复杂的用户案例分解成若干个简单的部分,以便于处理。
- 确定原因和结果:在每个分解好的部分中,识别出哪些是输入条件(原因),哪些是输出结果(结果),并将它们分别标识出来。原因通常放在一列,结果放在另一列。
- 确定逻辑关系:分析需求文档,找出原因和结果之间的关系,并使用逻辑运算符(如AND、OR、NOT)来表示这些关系。
- 确定约束关系:继续分析需求,找出原因和原因之间、结果和结果之间的约束限制,并使用特定的符号来标识这些约束关系。
- 画出因果图:根据分析的原因和结果及其之间的关系,绘制出因果图。在因果图中,左侧节点表示输入状态(原因),右侧节点表示输出状态(结果)。
- 将因果图转换为决策表:将因果图中的每个原因和结果分别取真和假两种状态(通常用0和1表示),并列出所有可能的状态组合。根据因果图中的约束条件,去除不可能出现的组合。
- 设计测试用例:根据决策表中的每一列所表示的情况,设计相应的测试用例。每一列都对应一个可能的输入组合,从而产生一个测试用例。
- 考虑约束条件:在因果图中,使用特定的符号来标识输入条件之间的约束关系,如互斥(E)、包含(I)、唯一(O)和要求(R)等。这些约束条件有助于简化决策表,并确保测试用例的完整性和有效性。
例子:
某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字则给出信息M。