判定覆盖也是分支覆盖吗
时间: 2023-12-13 19:17:23 浏览: 38
判定覆盖和分支覆盖是软件测试中两种不同的覆盖准则,虽然它们有一定的相似之处,但是并不完全等同。
判定覆盖是指在测试中覆盖每个布尔表达式的所有可能取值,并且每个判定语句都至少执行一次。而分支覆盖则是在测试中覆盖每个分支的所有可能路径,包括真实和假的路径。
因此,可以说判定覆盖是分支覆盖的一个子集,但是两者并不一样。
相关问题
语句覆盖、判定覆盖、分支覆盖、条件覆盖、路径覆盖严格程度排序
按照严格程度从低到高的顺序,这几个覆盖准则可以排序为:
1. 语句覆盖:要求测试用例能够覆盖程序的每个语句至少一次。
2. 判定覆盖:要求测试用例能够覆盖程序的每个判定语句的每个分支至少一次。
3. 分支覆盖:要求测试用例能够覆盖程序的每个分支语句至少一次。
4. 条件覆盖:要求测试用例能够覆盖程序的每个判定语句的每个条件至少一次。
5. 路径覆盖:要求测试用例能够覆盖程序的所有可能路径。
因为每个覆盖准则都是前一个的加强版,所以越往后的准则要求的测试用例越多,覆盖率也越高,所以越往后的准则越严格。但是,随着覆盖准则的增加,测试用例的数量也会呈指数级增长,因此在实际测试中需要根据实际情况选择适合的覆盖准则。
用一个具体详细的例子说明判定覆盖和分支覆盖的区别
假设有如下代码:
```
1. if (x > 0 && y > 0) {
2. z = x + y;
3. } else {
4. z = x - y;
5. }
```
那么,判定覆盖要求每种可能的情况都至少执行一次。
对于上面的代码,判定覆盖需要至少执行以下两个测试用例:
- 当 x 和 y 都大于 0 时;
- 当 x 和 y 中至少有一个小于等于 0 时。
而分支覆盖要求每个分支都至少执行一次。
对于上面的代码,分支覆盖需要至少执行以下两个测试用例:
- 当 x 和 y 都大于 0 时;
- 当 x 和 y 中至少有一个小于等于 0 时,这个分支就会被执行。
可以看出,判定覆盖是对每种情况的考虑,而分支覆盖则是对每个分支的考虑。在实际测试中,判定覆盖通常比分支覆盖更严格,因为它要求测试用例覆盖的情况更全面,而分支覆盖只要求每个分支都至少被执行一次。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)