测试用例设计--因果图

1、为什么采用因果图测试用例的测试方法?

判定表设计法在设计测试用例的过程中,考虑了输入与输入存在约束约束关系,没有考虑到输入与输出之间的约束关系。简单的业务逻辑可以用判定表解决,复杂的约束关系就不太适合了。

2、什么是因果图设计法?

因果图在软件测试用例的设计过程中,用于描述输入与输入、输入与输出之间存在的约束关系。

针对需求规格,将原因和影响分为2组4类:输入与输出、输入与输入。

输入与输出的关系主要有:恒等、非、与、或

恒等:若输入条件发生,则一定会产生对应的输出,若输入条件不发生,则一定不会产生对应的输出

非:若输入条件发生,则一定不会产生对应的输出,若输入条件不发生,一定会产生对应的输出

 

与:多个输入条件,只有所有输入条件发生时,才会产生对应的输出

或:在多个输入条件中,只要有一个发生,则会产生对应输出。

 

输入与输入之间同样存在异、或、唯一、要求等4种关系

异(所有输入条件中至多有一个发生,可以一个条件条件也不发生)

或(所有输入条件至少有一个输入条件发生,也可以多个条件共存)

唯一(所有输入条件有且只有一个发生)

要求(所有输入条件中只要有一个条件发生,其他的输入也会发生)

 3、因果图设计测试用例步骤?

一、根据需求确定原因(输入)和结果(输出)

二、根据需求中输入与输出的关系 ,输入与输入之间的关系,画出因果图

三、画出判定表,根据因果图,得到最终的最终判定表

四、根据判定表得到用例规则,在结合等价类和边界值用例设计方法细化测试用例

 

4、因果图设计测试用例的优缺点?

优点:能够帮助测试用例设计者快速了解需求,理解业务逻辑,然后快速设计判定表,从而得到所需的测试用例,在因果关系复杂的系统中,可采用该方法

缺点:在使用规则的过程中注意规则的规模

5、因果图设计测试用例示例?

第一步:根据需求找出输入(原因)和输出(结果)

输入(原因):第一列是A(C1) 第一列是B(C2)第二列是数字(C3)

中间结点:第一列为A或者B(C12)

输出(果):输出M(E1),修改文件(E2),输出L(E3)

 第二步:把相同类型的原因放在一起,类似原因的中间节点连好线,对应的结果放在对面。方便连线

 

 第三步:根据因果图输入与输出的关系画出判断表,根据因果图的输入与输入的关系去掉表里的不符合的规则

 

第四个:根据判定表抽取测试规则,编写测试用例,用等价类划分和边界值对测试用例进行细化和补充

 

转载于:https://www.cnblogs.com/yangyangchunchun/p/8991364.html

### 使用因果图法设计测试用例的最佳实践 因果图法的核心在于通过图形化的方式描述输入条件及其相互作用,进而推导出可能的输出结果并设计相应的测试用例。以下是关于最佳实践的具体说明: #### 输入条件分析 在应用因果图方法之前,需明确所有的输入条件以及它们之间的逻辑关系。这些条件通常包括布尔变量或其他可量化的参数[^1]。 #### 转换为决策表 一旦因果图完成绘制,下一步就是将其转换成决策表形式以便于理解和操作。在此过程中需要注意的是去除那些由于违背特定约束而不可能发生的状态组合[^2]。 #### 输出间的关系界定 除了考虑单个输入对外部行为的影响外,还需要仔细审视不同输出之间是否存在互斥或者协同工作的可能性,并据此调整最终形成的测试方案[^3]。 ### 实际操作中的注意事项 为了提高效率和准确性,在实际运用因果图法时应注意以下几点: - **全面覆盖**:确保每一个重要的输入条件都被考虑到,并且每种合理的状态变化都有对应的处理路径被记录下来。 - **简化模型**:当面对复杂系统时,尝试分解大问题为若干个小模块分别构建各自的因果图表再综合起来评估整体表现。 - **验证一致性**:定期复查所建立的因果图是否仍然反映当前系统的实际情况;随着开发周期推进可能会引入新的需求变更影响原有结构。 ```python def generate_test_cases(causal_graph): test_cases = [] # 假设 causal_graph 是一个字典表示因果关系 {input: [outputs]} for input_condition, outputs in causal_graph.items(): if not is_violating_constraints(input_condition): # 检查是否有违反约束的情况 combined_outputs = get_valid_combinations(outputs) # 获取有效的输出组合 for output_set in combined_outputs: case = { 'inputs': input_condition, 'expected_outputs': output_set } test_cases.append(case) return test_cases # 辅助函数用于判断某个输入是否会引发冲突或非法情形 def is_violating_constraints(input_conditions): pass # 需要实现具体的业务逻辑 # 返回给定一组输出的所有合法子集 def get_valid_combinations(output_list): pass # 同样需要基于项目背景定制算法细节 ``` 上述伪代码展示了如何自动化生成基于因果图测试用例集合过程的一部分概念框架。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值