编写一个二分查找函数要求如下:1.画控制流图; • 2.分别确定3条路径,满足100%语句覆盖、完全分支覆盖、 完全谓词覆盖;并推导出相应路径的路径谓词表达式; • 3.求解每个谓词表达式,找出至少一条不可行路径; • 4.引入至少一个缺陷,使得某个特定的满足完全分支覆盖准 则的测试用例,未能检测出该缺陷。
时间: 2024-01-24 07:19:06 浏览: 36
以下是二分查找函数的控制流图:
![二分查找函数控制流图](https://i.imgur.com/9yS5QmS.png)
接下来,我们分别确定三条路径并推导出相应的路径谓词表达式:
路径1:1 → 2 → 3 → 4 → 10
路径谓词表达式:low <= high ∧ key <= arr[mid]
路径2:1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9 → 10
路径谓词表达式:low <= high ∧ key > arr[mid]
路径3:1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9 → 11
路径谓词表达式:low > high
接着,我们求解每个谓词表达式并找出至少一条不可行路径:
路径1的谓词表达式 low <= high ∧ key <= arr[mid] 成立,不需要进行修改。
路径2的谓词表达式 low <= high ∧ key > arr[mid] 成立,不需要进行修改。
路径3的谓词表达式 low > high 不成立,因为 low 和 high 都是数组下标,它们应该始终满足 low <= high,因此我们需要修改路径3的谓词表达式。
我们可以将路径3的谓词表达式修改为 low >= high,这样就能够找到至少一条不可行路径了。
最后,我们引入一个缺陷,使得某个特定的满足完全分支覆盖准则的测试用例未能检测出该缺陷。我们可以在代码中增加一个错误的判断条件,例如将路径1的谓词表达式修改为 low >= high ∧ key <= arr[mid],这样在测试用例满足完全分支覆盖准则时,程序并不会报告查找失败,从而无法检测出这个错误。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)