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、准备测试用例

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

相关推荐
邓永豪几秒前
笔记本电脑升级实战手册[3]:扩展内存与硬盘
学习·电脑·硬件·diy·3c硬件
小虎卫远程打卡app20 分钟前
视频编解码学习十一之视频原始数据
学习·视频编解码
程序员杰哥1 小时前
自动化测试基础知识详解
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
crazyme_62 小时前
前端自学入门:HTML 基础详解与学习路线指引
前端·学习·html
龙湾开发2 小时前
轻量级高性能推理引擎MNN 学习笔记 02.MNN主要API
人工智能·笔记·学习·机器学习·mnn
Camellia03112 小时前
嵌入式学习--江协51单片机day5
嵌入式硬件·学习·51单片机
HappyAcmen2 小时前
线代第二章矩阵第八节逆矩阵、解矩阵方程
笔记·学习·线性代数·矩阵
杨德兴3 小时前
3.3 阶数的作用
人工智能·学习
chilling heart3 小时前
API的学习总结(上)
学习
charlie1145141914 小时前
内核深入学习3——分析ARM32和ARM64体系架构下的Linux内存区域示意图与页表的建立流程
linux·学习·架构·内存管理