目录

因果图法基本步骤:

1.分割功能说明书。

2.判断出“原因”和“结果”,并加以编号。

3.根据功能说明书中原因和结果之间的关系画出因果图

4.根据因果图绘制判定表

5.为判定表的每一列设计一个测试用例 根据判定表设计测试用例


因果图法基本步骤:

1.分割功能说明书。

        对于规模较大的程序,可将其划分为若干个部分,然后分别对每个部分使用因果图法。例如,测试编译程序时,可将每个语句作为一个部分。

2.判断出“原因”和“结果”,并加以编号。

        原因指输入条件或输入条件的等价类,结果指输出条件或输出条件的等价类。每个原因或结果都对应因果图中的一个节点。当原因或结果成立(或出现)时,相应的节点取值为1,否则为 0。

        因果图法的具体使用如例 1 所示。

【例 1】有一个饮料自动售货机(单价为 5 角钱)的控制处理软件,它的功能说明书如下。

若投入 5 角钱的硬币,按下“可乐”或“绿茶”按钮,则送出相应的饮料。

若投入1元钱的硬币,同样也是按下“可乐”或“绿茶”按钮,则在送出相应饮料的同时退回5 角钱的硬币。

        通过分析上述功能说明书,可列出原因和结果如下。

原因:

投入 1 元硬币;

投入 5 角硬币;

按下“可乐”按钮;

按下“绿茶”按钮。

结果:

退还 5 角钱;

送出“可乐”饮料;

送出“绿茶”饮料。

3.根据功能说明书中原因和结果之间的关系画出因果图

        因果图中原因在左,结果在右,自上而下排列,并根据功能说明书中原因和结果之间的关系,使用基本符号进行连接,还可在因果图中引入一些中间节点。根据原因和结果,绘制出自动售货机因果图,如图 1 所示。

注意:在绘制因果图时,需要引入一些表示中间状态的处理节点。

        接下来对上述因果图进行完善,添加必要的约束条件。例如,原因①和原因②不能同时发生,即 1 元硬币和 5 角硬币不能同时被投入自动售货机;原因③和原因④也不能同时发生,因为程序的功能说明书规定,在投入硬币后,只能按下“可乐”或“绿茶”按钮。完善后的因果图如图 2 所示。 

4.根据因果图绘制判定表

        绘制判定表的方法较为简单,将所有原因作为输入条件,每一项原因(输入条件)安排为一行,所有输入条件直接列出(真值为 1,假值为 0),将每种条件组合安排为一列,并将各个条件的取值情况分别添加到判定表的对应单元格中。例如,若因果图中的原因有4项,则判定表中的输入条件共有 4 行,而列为 24=16 列。输入条件的取值确定完成之后,可根据判定表轻松地推算出各种结果的组合,即输出。判定表也包含中间节点的状态取值。 

        上述描述考虑了所有条件的组合情况,如果输入条件较多,条件组合的数量会较为庞大,从而导致绘制出的判定表列数过多,过于复杂。而在实际情况下,条件与条件之间可能会存在约束,许多条件的组合是无效的,因此根据因果图绘制判定表时,可有意识地排除无效的条件组合,从而大幅减少判定表的列数。例如,根据图 2 所示的因果图,可绘制判定表如表1 所示。

 5.为判定表的每一列设计一个测试用例 根据判定表设计测试用例

如表 2 表示:


实验内容: 某公司人事软件的工资计算模块的需求规格说明书中描述:

(1)年薪制员工:严重过失,扣当月薪资的 4%;过失,扣年终奖的2%。

(2)非年薪制员工:严重过失,扣当月薪资的 8%;过失,扣年终奖的4%。

请用因果图法设计测试用例。

用因果图法设计测试用例过程如下:

(1)分析程序的规格说明,列出原因和和结果。 

原因:

c1:年薪制

c2:严重过失 结果:

e1:扣当月薪资的 4%

e2:扣年终奖的 2%

e3:扣当月薪资的 8%

e4:扣年终奖的 4%

(2)将原因和结果之间的因果关系用逻辑符号连接起来,得到因果图,如图3 所示。

 (3)根据因果图设计的判定表如表 3 表示:

(4)根据判定表设计测试用例,如表 4 表示:

         事实上,特别是在较为复杂的问题中,合理使用因果图法非常有效,可以帮助检查输入条件的各种组合,设计出非冗余、高效的测试用例。如果开发项目在设计阶段就采用了判定表,就不必再画因果图,可以直接利用判定表设计测试用例。

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐