语句覆盖与判定覆盖测试问题:ISTQB样题正确答案咨询
ISTQB语句覆盖与判定覆盖样题解析
题目:哪种问题可以通过100%判定覆盖发现,但会被100%语句覆盖遗漏?
A. 循环内部出现的问题
B. 带ELSE的IF分支中出现的问题
C. 不带ELSE的IF分支中出现的问题
D. 循环外部出现的问题
核心概念回顾
- 语句覆盖:要求所有可执行语句至少被执行一次
- 判定覆盖:要求每个判定的真、假分支都至少被执行一次
选项逐一分析
选项C(正确答案)
举个示例代码:
if (x > 0) { System.out.println("x为正数"); } // 后续业务逻辑代码
实现100%语句覆盖只需要让x>0为真,执行打印语句后走后续逻辑即可,此时所有语句都被覆盖。但判定的假分支(x<=0的情况)完全没被测试——如果x<=0时后续逻辑存在bug,语句覆盖根本发现不了。而判定覆盖要求必须测试x>0为真和为假两种情况,就能暴露这个假分支关联的问题。
选项B(错误)
如果是带ELSE的IF分支,示例代码如下:
if (x > 0) { doSomethingA(); } else { doSomethingB(); }
要实现100%语句覆盖,必须执行doSomethingA()和doSomethingB()两个方法,也就是必须走判定的真、假两个分支——此时语句覆盖已经等价于判定覆盖,不存在判定覆盖能发现但语句覆盖遗漏的问题。
选项A、D(错误)
循环内外的问题,并非语句覆盖和判定覆盖的核心差异点。循环场景下的覆盖差异更多和条件覆盖或路径覆盖相关,和本题的两种覆盖类型无关。
内容的提问来源于stack exchange,提问作者Poorna Senani Gamage
相关产品推荐
相关产品推荐

