这个度量需要足够的测试用例来确定每个条件能够影响到包含的判定[Chilenski1994]的结果。这个度量是最早是被波音公司创建被用于航空软件中RCTA/DO-178B。 这个度量起初是是设计来对于无short circuit operators的语言。 short circuit logical operators 在C, C++和Java语言中的作用仅仅是当它们的结果能够影响到被包含的判定的评估条件。 当以下的需求遇到时,需要考虑用MCDC覆盖: • 需求1: 每一个程序模块的入口和出口点都要考虑要至少被调用一次,每个程序的判定到所有可能的结果值要至少转换一次。 • 需求2:程序的判定被分解为通过逻辑操作符(AND, OR, etc.)连接为BOOL条件。每一个条件对于判定的结果值是独立的,或者说单条件的变化将导致判决的变化。 所以,据以上的定义,以下三组数据是必须的。(单条件的变化将导致判决的变化) 其中T1 & T2,或T1&T3已经满足要求1,但要求满足条件2,就必须存在同时存在T1&T2&T3。 T4:(F,F),是多余的,因为一个条件改变并不能导致判决的改变。 T1(T,T)与T2(T,F)表明Y独立影响了判决,Y的独立对; T1(T,T)与T3(F,T)表明X独立影响了判决,X的独立对。 再如: 测试用例1 (T,T,T) 和测试用例5 (F,T,T) ,对于X独立。 测试用例2 (T,T,T) 和测试用例6 (F,T,T) ,对于X独立。 测试用例3 (T,T,T) 和测试用例7 (F,T,T) ,对于X独立。 测试用例2 (T,T,T) 和测试用例4 (F,T,T) ,对于Y独立。 测试用例3 (T,T,T) 和测试用例4 (F,T,T) ,对于Z独立。 结果,测试用例组{1,5,2,4,3} 满足MCDC覆盖对表达式X, Y和Z的要求。 明显,这不是唯一的组合,例如还有{6,2,4,3}。 |