白盒测试之路径覆盖

在这里插入图片描述

路径覆盖

路径覆盖的含义

选取足够多的测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次)。

连续的边。也被称作一条路径

圈复杂度:

圈复杂度(Cyclomatic complexity)是一种代码复杂度的衡量标准,在1976年由Thomas J. McCabe, Sr. 提出。
在软件测试的概念里,圈复杂度用来衡量一个模块判定结构的复杂程度,数量上表现为线性无关的路径条数,即合理的预防错误所需测试的最少路径条数。圈复杂度大说明程序代码可能质量低且难于测试和维护,根据经验,程序的可能错误和高的圈复杂度有着很大关系。
计算公式1:
V(G)=e-n+2。其中,e表示控制流图中边的数量,n表示控制流图中节点的数量。
计算公式2:
V(G)=区域数=判定节点数+1

设计路径覆盖测试用例

  System.out.println("请输入你的用户名");
       1  Scanner scanner = new Scanner(System.in);
       2  String username = scanner.nextLine();
       3 System.out.println("请输入你的密码");
       4 String password = scanner.nextLine();
       5 if(username.equals("Dennis")&&password.equals("1")){
       6     System.out.println("后台登陆成功");
       7 }else{
       8     System.out.println("后台登录失败");
       9 }
       10 if(username.equals("A")&&password.equals("1")){
       11     System.out.println("前台登陆成功");
       12 }else{
       13     System.out.println("前台登录失败");
       14 }
       15 System.out.println("程序结束");

首先,根据程序代码画流程图,再画数据流图,这里因为问题较为简单,略去流程图。
在这里插入图片描述

路径种类:
路径:p1{1 2 3 4 5 6 10 11 15}
路径:p2{1 2 3 4 5 6 10 13 15}
路径:p3{1 2 3 4 5 8 10 13 15}
路径:p4{1 2 3 4 5 8 10 11 15}

这里要注意一点,因为系统规定至少要登录前台和后台的一个账号,所以路径P3是一条不合理路径。这里需要剔除这个不合理路径。

路径种类:
路径:p1{1 2 3 4 5 6 10 11 15}
路径:p2{1 2 3 4 5 6 10 13 15}
路径:p3{1 2 3 4 5 8 10 11 15}

根据路径设计测试用例:
在这里插入图片描述

圈复杂度:3

利用此案例对语句 分支 条件 路径比较

在这里插入图片描述

有时我们会遇到下面这种情况,遇到下面这种情况我们就需要对数据流图进行简化。因为圈复杂度较大,为5。不建议采用以下数据流图进行分析路径覆盖。这里只用做演示。

在这里插入图片描述

while语句练习路径覆盖设计测试用例

 public static void main(String[] args) {
      1  int sum = 0;
      2  int i = 1;
      3  while (i <= 10){
      4      sum += i;
      5      i++;
      6  }
      7  System.out.println(sum);
    }

首先,我们需要精准的画出代码对应的程序流程图,根据流程图画出数据流图。
在这里插入图片描述

然后我们对它进行路径覆盖测试用例设计。

用例IDi预期输出实际输出覆盖的路径
1155551 2 3 4 5 7
21111111 2 3 7

圈复杂度:2

https://baike.baidu.com/item/%E5%9C%88%E5%A4%8D%E6%9D%82%E5%BA%A6

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐