Selenium 学习(0.18)——软件测试之基本路径测试

1、基本路径法测试的概念

是一种白盒测试方法,它在程序控制流图的基础上,通过分析控制构造的环行复杂性,导出基本可执行路径集合,从而设计测试用例的方法。

要保证在测试中程序的每一个可执行语句至少执行一次
【这和语句覆盖区别在哪里呢?】
语句覆盖:基本思想:设计用例,使程序中的每个可执行语句至少执行一次。
Who can tell me, why?

**2、**基本路径法测试的步骤

1)画出控制流图

首先要画出控制流图【是用于描述程序控制流的一种图示方法,程序控制流图中只有两种图形符号一一圆圈和箭头线】。

圆圈:称为流图的一个节点代表一条或多条无分支的语句或源程序语句。

箭头线:称为边或连接代表控制流。

由边和节点所锁定的范围称为区域。

几个结构的控制流图

程序的控制流图突出了控制流结构,是流程图的简化。

2)计算程序圈复杂度

圈复杂度是环行复杂度,是一种为程序逻辑复杂度提供定量尺度的软件度量。它可以提供程序基本集的独立路径数量和确保所有语句至少执行一次的测试用例数量上界。

计算圈复杂度的方法

V(G) = 总的区域数 = 封闭区域数 + 开放区域数

V(G)= E(Edge) - N(Node)+2 = (边数-节点数+2)

V(G)= P + 1 (判定节点数+1)

3)导出独立路径

独立路径指和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路,它必须至少包含一条在本次定义路径之前不曾用过的边。

程序的圈复杂度V(G)值正好等于该程序基本路径集合中的独立路径的条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上限。

4)准备测试用例

确保基本路径集中的每一条路径的执行即一条独立路径对应产生一个测试用例

实操

java 复制代码
importjava.util.Scanner;
public class Test {
    public static void main(Stringl] args) {
        int a,b,c,max,min;
        Scanner input=new Scanner(System.in);
        System.outprintln("请输入三个整数:");
        a=input.nextInt0;
        b=input.nextInt0;
        c=input.nextInt0;
        System.out.println(a+"\t"+b+"\t"+c);
        if(a>b){
            max=a;
            min=b;
        }
        else{
            max=b;
            min=a;
        }
        if(max<c){
            max=c;
        }
        else if(min>c){
            min=c;
        }
        System.out.println("max="+max+"nmin="+min);
    }
}

1、 画出控制流程图

再转化为控制流图

2、计算程序圈复杂度

V(G)=总的区域数= 4

V(G)= E-N+2 = (边数-节点数+2) = 10-8+2 = 4

V(G)= (定节点数+1) = P+1 = 3+1 = 4

3、导出独立路径

由于圈复杂度是 4 ,所以独立路径也是4

A、1 - 2 - 4 - 5 - 8

B、1 - 3 - 4 - 5 - 8

C、1 - 3 - 4 - 6 - 7 - 8

D、1 - 3 - 4 - 6 - 8

4、准备测试用例

终于又把自己强迫了一下!(我有点很困了)

相关推荐
千寻xun6 小时前
一、理论篇-NVME协议学习笔记
笔记·学习·fpga开发·nvme ssd·nvme协议
researcher-Jiang7 小时前
高性能计算之OpenMP——超算习堂学习1
android·java·学习
xy34538 小时前
Wireshark捕获过滤器——语法元素详解
网络·测试工具·渗透测试·wireshark
MartinYeung511 小时前
[论文学习]大语言模型安全综述:攻击、防御、对齐、度量与护栏的深度解析
学习·安全·语言模型
AOwhisky12 小时前
Python 学习笔记(第三期)——流程控制:条件判断与循环结构
运维·笔记·python·学习·云原生·流程控制·循环
心中有国也有家12 小时前
AtomGit Flutter 鸿蒙客户端:白噪音场景的视觉设计
学习·flutter·华为·harmonyos
心中有国也有家13 小时前
AtomGit Flutter 鸿蒙客户端:呼吸练习的完整生命周期
学习·flutter·华为·harmonyos
Zeeland13 小时前
构建护城河:自学习 Agent
学习
尼米棕熊13 小时前
大模型学习8上-推理部署框架llama.cpp与Ollama使用指北
学习·llama
brave_zhao13 小时前
nginx的进程架构
java·学习·nginx