云计算百科
云计算领域专业知识百科平台

测试用例设计中的因果分析法(因果图法)

测试用例设计中的因果分析法(因果图法)

因果图法(Cause-Effect Graphing)是一种黑盒测试用例设计方法,由 J.D. McCall 等人提出。它通过分析输入条件(原因)与输出结果(结果)之间的逻辑关系,用图形化方式处理输入条件的各种组合,从而设计出覆盖全面且数量精简的测试用例。


一、核心内容

因果图法的核心是将需求规格说明中的输入条件视为“原因”,输出动作视为“结果”,然后用逻辑门和约束条件描述它们之间的关系,最终转换为判定表并生成测试用例。

主要内容包括:

  • 识别原因和结果
    从需求中找出所有输入条件和对应的输出动作。

  • 分析逻辑关系
    确定原因之间、原因与结果之间的与(AND)、或(OR)、非(NOT)关系。

  • 分析约束关系
    常见约束:互斥(E)、包含(I)、唯一(O)、要求(R)、强制(M)。

  • 绘制因果图
    用节点表示原因和结果,用连线表示逻辑关系和约束。

  • 转换为判定表
    根据因果图列出所有可能的条件组合及其对应的动作。

  • 设计测试用例
    判定表的每一列(规则)通常对应一条测试用例。


  • 二、特点与特征

    特点说明
    逻辑组合驱动 关注输入条件的组合,而非单个输入。
    图形化表达 用因果图直观展示原因与结果之间的逻辑关系。
    系统覆盖 能覆盖所有有效的输入组合,避免遗漏。
    冗余精简 通过逻辑化简减少不必要的测试用例。
    与判定表结合 因果图最终转换为判定表,便于生成用例。
    黑盒测试方法 不关心程序内部结构,只关注输入输出关系。

    主要特征:

    • 原因和结果用节点表示。

    • 逻辑门:与、或、非。

    • 约束符号:E、I、O、R、M。

    • 输出判定表,每条规则对应一条测试用例。


    三、原理

    因果图法基于布尔逻辑和组合测试思想:

  • 布尔逻辑:将每个输入条件看作一个布尔变量(真/假),输出动作也是布尔变量。通过逻辑门描述它们之间的因果关系。

  • 组合覆盖:列出所有可能的输入组合,但通过约束条件排除无效组合,减少用例数量。

  • 等价类划分与边界值补充:因果图处理逻辑组合,具体数值边界仍需结合等价类划分和边界值分析。

  • 判定表:将因果图转换为判定表,每一列代表一条规则,即一组输入条件及其对应的输出动作。


  • 四、使用场景

    因果图法适用于以下场景:

    • 输入条件多且输出依赖多个输入条件的逻辑组合。

    • 需求规格说明中有明确的输入输出逻辑描述。

    • 需要系统覆盖输入组合,同时希望减少冗余测试用例。

    • 功能测试中,输入之间存在与、或、非等逻辑关系。

    • 例如:登录功能(用户名、密码、验证码、是否勾选记住我)、订单折扣计算、权限判断等。

    不适用场景:

    • 输入条件之间没有逻辑关系。

    • 需求过于复杂,因果图庞大到难以维护。

    • 需要测试数值边界,此时更适合等价类划分和边界值分析。


    五、输入与输出

    输入

    • 需求规格说明:包含输入条件和输出动作的描述。

    • 输入条件(原因):所有影响输出的输入因素。

    • 输出动作(结果):系统对不同输入组合产生的响应。

    • 逻辑关系与约束:原因之间、原因与结果之间的与、或、非关系,以及互斥、包含等约束。

    输出

    • 因果图:图形化表示原因、结果、逻辑门和约束。

    • 判定表:列出所有有效规则,每条规则包含条件组合和对应动作。

    • 测试用例集:判定表的每一列生成一条测试用例,包括输入数据和预期输出。


    六、因果图的基本符号

    符号含义
    圆圈/椭圆 原因或结果节点
    ∧ 与门:所有输入为真时输出为真
    ∨ 或门:任一输入为真时输出为真
    ~ 非门:输入为真时输出为假
    E 互斥:两个原因不能同时为真
    I 包含:至少有一个原因必须为真
    O 唯一:有且仅有一个为真
    R 要求:一个为真时另一个必须为真
    M 强制:一个为真时另一个必须为假

    七、实施步骤详解

  • 识别原因和结果
    从需求中提取所有输入条件和输出动作,分别编号。

  • 分析逻辑关系
    确定每个结果由哪些原因通过何种逻辑关系产生。

  • 分析约束关系
    找出原因之间的约束,如互斥、包含等。

  • 绘制因果图
    用节点和连线画出原因、结果、逻辑门和约束。

  • 转换为判定表

    • 列出所有原因作为条件桩。

    • 列出所有结果作为动作桩。

    • 根据因果图填充条件项和动作项,得到规则列。

  • 简化判定表
    合并等价规则,减少测试用例数量。

  • 设计测试用例
    为每条规则设计输入数据和预期输出,形成测试用例。


  • 八、优缺点

    优点缺点
    系统覆盖输入组合,避免遗漏 需求复杂时因果图庞大,难以维护
    通过逻辑化简减少冗余用例 转换判定表工作量大
    图形化直观,便于沟通 不适合输入条件之间无逻辑关系的场景
    可与等价类、边界值结合使用 需要测试人员具备一定逻辑分析能力

    九、简单示例

    需求:某系统根据输入 A、B、C 产生输出 X、Y、Z。

    • 若 A 和 B 同时为真,则输出 X。

    • 若 A 为真且 B 为假,则输出 Y。

    • 否则输出 Z。

    因果图:

    • 原因:A、B

    • 结果:X、Y、Z

    • 逻辑:A∧B→X;A∧~B→Y;其他→Z

    判定表:

    ABXYZ
    真 真 1 0 0
    真 假 0 1 0
    假 真 0 0 1
    假 假 0 0 1

    测试用例:

  • A=真,B=真 → 预期 X

  • A=真,B=假 → 预期 Y

  • A=假,B=真 → 预期 Z

  • A=假,B=假 → 预期 Z


  • 十、总结

    因果图法是一种基于逻辑组合的黑盒测试用例设计方法,通过分析输入条件与输出结果之间的与、或、非关系及约束,绘制因果图并转换为判定表,最终生成覆盖全面的测试用例。它适合输入组合复杂、逻辑关系明确的功能测试,能有效减少冗余用例,提高测试效率。使用时需注意与质量管理中的鱼骨图(因果图)区分,两者同名但领域、目的、方法完全不同。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 测试用例设计中的因果分析法(因果图法)
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!