![](https://i-blog.csdnimg.cn/blog_migrate/0cdbe6da967d998fc767fa0e55a4b9be.png)
- 因果图可以描述系统的输入和输出的因果关系以及输入和输入之间的约束关系。根据系统输入和输出之间的因果图可以得到判定表,因果图和判定表两种方法经常一起使用。
- 输入和输出之间的因果关系有四种
- 恒等:输入和输出相对于。如果输入发生则输出发生,如果输入不发生则对应的输出也不会发生。
- 非:和恒等相反
- 或:多个输入中只要有一个发生,对应的输出也会发生。
- 与:多个输入同时发生是,对应的输出才会发生。
- 恒等:输入和输出相对于。如果输入发生则输出发生,如果输入不发生则对应的输出也不会发生。
- 输入和输入之间的约束关系有四种
- 异:最多只有一个输入条件发生
- 或:所有输入至少有一个发生
- 唯一:有且只有一个输入发生
- 要求:只要有一个输入发生,其他输入也会发生
- 异:最多只有一个输入条件发生
- 因果图法怎么使用
- 写出输入和输出
- 输入包含外部消息、内部预置、配置文件
- 输入和输出只有两种取值时,可以只写一种标识。如果有很多取值,每个取值都要标识
- 输入和输出独立标识
- 画出因果图
- 根据输入和输出之间以及输入和输入之间的关系画出因果图
- 根据实际情况,有些输入和输入之间以及输入和输出之间的关系不成立,这些需要在因果图上用记号表面
- 根据因果图画出判定表
- 填写条件桩和动作桩,根据各个条件的组合填写条件项
- 对于不可能出现的组合在动作项上做出删除标记
- 填写动作项
- 简化判定表(可选)
- 找出输出相同的两列,若只有一个输入不同,说明该输入对输出没有影响,这两列可以合并成一列(牺牲了测试的充分性)
- 编写测试用例
- 判定表的每一列编写一个测试用例
- 写出输入和输出
- 因果图法的优点和缺点
- 优点:
- 对各个输入的组合覆盖充分
- 测试用例覆盖情况多,测试效率高
- 考虑了各个输入组合的实际情况,用例的有效性高
- 每个测试用例的输出可以估计
- 缺点
- 输入之间的组合多时,规模会很大
- 输入之间的约束不能有效区分是否确实需要组合测试,会产生用例冗余
- 优点:
- 在使用因果图法前尽可能的对功能流程进行细化,然后每个功能流程使用因果图法可以减小工作量。
- 示例(自动售货机)
- 处理单价为五角。投入五角硬币,按下【可乐】或【红茶】按钮,饮料送出来,若投入一元硬币则找钱同时送出饮料
- 因
- 1、投入五角
- 2、投入一元
- 3、按下【可乐】
- 4、按下【红茶】
- 果
- a、找回五角
- b、送出【可乐】
- c、送出【红茶】
- 可以得到因果图
欢迎扫码关注微信公众号「一朵儿的软件测试之旅」一起学习交流