问答题 试题三 阅读以下关于软件测试的说明,回答下列问题。 [说明] 使用在汽车、飞机中的嵌入式软件,由于直接影响人的生命及财产安全,测试要求更为严格。语句覆盖、判定覆盖、条件覆盖和MC/DC覆盖是通常对这类软件的要求。 以下是一段C语言代码,请仔细阅读,并回答相关问题: int logicTest(int x, int y) { int magic=0; if(x>0 && y>0) { magic=x+y+10; } else{ magic=x+y-10; } if(magic < 0){ magic=0; } return magic; }
问答题 请根据测试要求,简要说明语句覆盖、判定覆盖、条件覆盖和MC/DC覆盖的含义。
【正确答案】
【答案解析】 本题考查嵌入式软件测试的基本知识。 本问题考查嵌入式软件测试覆盖率的基本概念。 语句覆盖要求设计足够多的测试用例,运行被测程序,使得程序中每条语句至少被执行一次。定覆盖(分支覆盖)要求设计足够多的测试用例,运行被测程序,使得程序中的每个判断的“真”和“假”都至少被执行一次。条件覆盖要求设计足够多的测试用例,运行被测程序,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值。MC/DC覆盖要求每个条件的取值都有覆盖,每个判定值都有覆盖且每个条件都能独立影响判定结果,各覆盖率的含义如表所示。
问答题 画出以上代码的流程图。
【正确答案】
【答案解析】
问答题 请根据[说明]中的C语言代码,计算满足MC/DC覆盖要求的用例数量及条件取值范围。
【正确答案】 用例数量:3个; 条件取值范围: (x>0 and y<=0)、(x<=0 and y>0)及(x>0 and y>0)
【答案解析】 本问题考查MC/DC覆盖率判定的综合运用。 MC/DC与代码中的逻辑运算有关。本题代码中的逻辑运算为x>0 &&y>0。根据MC/DC的定义,MC/DC覆盖要求每个条件的取值都有覆盖,每个判定值都有覆盖且每个条件都能独立影响判定结果。对于a&&b这样的逻辑运算,真值表如下。