2009-06-18 42 views
0
if(condition1) 
    dosomething1(); 
if(condition2) 
    dosomething2(); 
if(condition3) 
    dosomething3(); 

它是全科的测试,如果我有在这个例子中两个测试用例科测试

  1. 条件1 =条件2 = condition3 = TRUE;
  2. condition1 = condition2 = condition3 = false;

还是我误解了? 试图找出分支和路径测试之间的差异。我得到路径测试,所以希望这是正确的。

+0

下面在分支机构覆盖率和相关测试测量方面有很多不同的意见 - 这里有更多关于这个问题 – Zane 2012-10-23 14:21:47

回答

3

分公司检测:

测试,其中在该程序的源代码的所有分支进行测试至少一次。

是的;你正在执行正确的分支测试,因为你所有的分支都被击中。实际上你可以删除你的第二个测试用例,因为case 1执行所有的分支。

显然,分支测试并不比路径测试更具包容性,因为它很可能会降低依赖性,因此,不应该成为您唯一的测试形式。

+0

嗯,这让我困惑?我得到你的定义,但如果我删除secound测试用例,这不仅仅是声明的覆盖范围? – 2009-06-18 22:09:55

+0

考虑到分支测试的严格定义,第二个测试用例是多余的......也就是说,if语句之前和之后的代码将在case 1和case 2中得到测试。因此case 2没有做任何新的事情。 – 2009-06-18 22:13:23

+0

谢谢!本网站使用两个测试案例:http://www.onjava.com/pub/a/onjava/2007/03/02/statement-branch-and-path-coverage-testing-in-java.html?page=1 – 2009-06-18 22:21:09

0

如果我明白你在问什么,那么你可能需要8个测试用例来完全覆盖给定代码中的选项。例如,如果dosomething2()依赖于由dosomething1()设置的其他一些状态?你的测试用例不会满足这个要求。

0

是的,你理解正确。分支测试只是“所有分支都被执行”。

1

要实现100%的基本路径覆盖率,您需要定义基准集。此方法的圈复杂度为四(加上决策的数量),因此您需要定义四条线性无关的路径。要做到这一点,你需要选择一条任意的第一条路径作为基线,然后一次一个地做出决定,直到你有了基础设置。

路径1:任何路径都会为您的基准做出选择,因此选择正确的决策结果(表示为TTT)。这是你基础设置的第一条路径。

路径2:要找到下一个基础路径,请在您的基线中翻转第一个决策(仅),为您的预期决策结果提供FTT。

路径3:您在基准路径上翻转第二个决定,为您的第三条基准路径提供TFT。在这种情况下,第一个基线决策与真实结果保持一致。

路径4:最后,您将基线路径中的第三个决策翻转,为您的第四个基准路径提供TTF。在这种情况下,第一个基线决策与真实结果保持一致。

所以,你的四个基本路径是TTT,FTT,TFT和TTF。现在,编制你的测试,看看会发生什么。

记住,基础路径测试的目的是相互独立

(摘自http://www.codign.com/pathbranchcode.html

1

按我的理解的测试所有决策结果,分支覆盖也被称为判定覆盖,并涵盖真假条件

不同于声明范围。对于IF语句,退出可以为TRUE或FALSE,具体取决于IF后的逻辑条件的值

让我们举一个例子来说明分支覆盖:

IF “A> B”

PRINT A比B

ENDIF

所以测试设置为100%以上分支覆盖范围将为:

测试案例1:A = 5,B = 2将返回true。测试案例2:A = 2,B = 5将返回错误。

所以在你的情况下,测试用例1和2都是分支机构覆盖所必需的。

只有测试用例1,它将是语句覆盖率。