【发布时间】:2021-02-13 16:15:46
【问题描述】:
我教科书中这个问题的解决方案是测试用例的最小数量是 3。但是,我不能低于 4 来获得完整的边缘和条件覆盖。
int x=0;
int k=10;
while (x<=10 && z>0) {
if (z<=y && k>=x)
y=y-z;
k--;
if (y>0) x++;
else break;
}
我的解决方案是这样的:{z=1, y=0},{z=-1, y=0},{z=1, y=10},{z=1, y=3}。其中哪一项(如果有)是多余的?
解决这个问题的三个测试用例组合是什么?还是我的教科书有错误?
【问题讨论】:
-
嗯,试图达到绝对最小的测试用例是一个值得商榷的目标。要做到这一点,需要对代码进行很多假设,这会导致随着代码老化而出现问题。我想这只是一个练习。
-
@chux-ReinstateMonica 甚至认为它“只是一个练习”,我无法理解如何仅使用 3 个测试用例就可以测试所有子条件的真假。跨度>
-
可以尝试所有
z[-10 ...10] 和y[-10 ... 10],查看x, k的结果。也许只有 3 套?
标签: java c code-coverage test-coverage