在编写应该具有100%分支覆盖率的测试用例时,是否可以让一个案例覆盖两个分支,另一个案例只覆盖一个分支。
注意:我们假设代码中只有三个分支。
编辑:3个分支意味着三个基本if语句在代码体内彼此分离。 e.g。
input (x, y)
if (x<0)
something
if (x==y)
something
if (x > y)
something
output (x)
我有一个覆盖第一个分支的测试用例和一个覆盖其他两个分支的测试用例
答案 0 :(得分:4)
测试是我们对产品的一个问题。每个(书面)分支进行一次测试的想法可能是有用的或愚蠢的。
我对你提供的例子有一些疑问
输入(x,y)
if(x <0)
东西
if(x == y)
东西
if(x> y)
东西
输出(x)
如果x大于零会怎样?你应该通过吗?如果x小于y,应该发生什么?什么东西?什么?
这就是事情:代码(和分支)(和条件)覆盖是很好的想法。但是“覆盖”一条线,一条支路或一个条件是什么意思呢?是否确保程序可以工作 - 也就是说,执行给定的行/分支/条件而不会崩溃?或者是确保该程序将工作?
--- Michael B。
答案 1 :(得分:3)
就个人而言,我专注于代码的行为。因此,有三种不同的可能方式来执行代码,因此应该有三个测试。
以这种方式思考 - 如果两个分支中的一个断开,您可能不知道因为测试仍然通过(因为另一个分支仍然有效)但生产代码失败。不理想。
是的,确实需要更多时间,但在某些情况下,这是值得的...... 100%的一切?也许不是那种极端。
答案 2 :(得分:2)
100%的分支机构覆盖范围?那个要求这样的人有没有真实世界的测试报道经验?根据我的经验,对于相当复杂的项目,获得75-80%的代码覆盖率和大约60-70%的分支覆盖率是最好的。这些数字通常是原始的,预分析的数字。在无法触及的片段被消除后,它们上升(约92-95%代码和80-85%分支),如断言,默认切换案例,“纵深防御”代码路径等。 至于你的问题:你拥有的测试用例越少越好。不要忘记,测试不仅需要时间来开发,还需要运行和分析故障。等待第一次等待4天后,整个测试套件完成后,您很快就会了解到将测试用例数量减少到最小值的价值,从而为覆盖率提供信心。