当程序中的判定语句包含多个条件时,运用多条件覆盖方法进行测试,其条件取值组合数目是非常大的。
修正条件判定覆盖要求在一个程序中每一种输入输出至少得出现一次,在程序中的每一个条件必须产生所有可能的输出结果至少一次,并且每一个判定中的每一个条件必须能够独立影响一个判定的输出,即在其他条件不变的前提下仅改变这个条件的值,而使判定结果改变。(条件:不含有布尔操作符号的布尔表达式。判定:由条件和零或者很多布尔操作符号所组成的一个布尔表达式)
即修正条件判定覆盖首先要求实现条件覆盖、判定覆盖,在此基础上,对于每一个条件C,要求存在符合以下条件的两次计算:
1)条件C所在判定内的所有条件,除条件C外,其他条件的取值完全相同;
2)条件C的取值相反;
3)判定的计算结果相反。
8条满足多条件覆盖的测试用例基础上,按照修正条件判定覆盖的要求选择需要的测试用例,选择结果如表所示。
用例1和用例5的测试数据中,条件b和条件c的取值均没有发生变化,仅条件a的取值拜年话影响了判定结果的变化,用例2和用例6,用例3和用例7都是如此,因此这三组都可达到条件a的修正条件判定覆盖要求。
用例2和用例4,可达到条件b的修正条件判定覆盖要求。
用例2和用例3,可达到条件c的修正条件判定覆盖要求。
因此用例2、用例3、用例4、用例6即为需要的测试用例。
(A||(B && C))的修正条件判定覆盖测试用例为:
(A && B) && (!B || C)的修正条件判定覆盖测试用例为:
(A || B) && (C || D)的修正条件判定覆盖测试用例为:
(A && B) || (C && D)的修正条件判定覆盖测试用例为:
参考自:
http://www.kailesoft.com/help/TestBox/MCDC.htm
https://blog.csdn.net/digiproto2020/article/details/115693579