白盒测试之路径覆盖
白盒测试之路径覆盖路径覆盖路径覆盖的含义选取足够多的测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次)。链连续的边。也被称作一条路径圈复杂度:圈复杂度(Cyclomatic complexity)是一种代码复杂度的衡量标准,在1976年由Thomas J. McCabe, Sr. 提出。在软件测试的概念里,圈复杂度用来衡量一个模块判定结构的...
白盒测试之路径覆盖
路径覆盖
路径覆盖的含义
选取足够多的测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次)。
链
连续的边。也被称作一条路径
圈复杂度:
圈复杂度(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);
}
首先,我们需要精准的画出代码对应的程序流程图,根据流程图画出数据流图。
然后我们对它进行路径覆盖测试用例设计。
用例ID | i | 预期输出 | 实际输出 | 覆盖的路径 |
---|---|---|---|---|
1 | 1 | 55 | 55 | 1 2 3 4 5 7 |
2 | 11 | 11 | 11 | 1 2 3 7 |
圈复杂度:2
https://baike.baidu.com/item/%E5%9C%88%E5%A4%8D%E6%9D%82%E5%BA%A6
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)