软件测试与管理-白盒测试-基本路径测试法

news2024/11/25 5:51:22

知识点:

1.原理

  • 是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径的集合,然后根据可执行路径进行测试用例设计的方法。
  • 此方法设计出的测试用例需保证被测程序的每个可执行语句至少执行一次。

2.步骤

(画程序流程图)

(1)画程序控制流图

  • 圆—— 为流图的结点,表示一个或多个无分支语/源程序语句。
  • 箭头——为边或连接,代表控制流。
  • 注意:

        a.代码行号——》结点序号

        b.选择或分支结构的分支汇聚处又一个汇聚结点

        c.边和结点圈定的范围叫做区域。在计算区域数时,图形外的区域也应记为一个区域。

        d.若判断结构的表达式包含1/n个逻辑运算符(OR、AND、NAND、NOR)连接的复合

        e.条件表达式,则需要修改为一系列只有单条件的嵌套判断。


(2)计算程序环形复杂度

   a.定义:

        从程序的环形复杂度可导出程序基本路径集中的独立路径条数。

        确保程序中每个可执行语句至少执行一次的测试用例数目的上界。

    b.计算方法:
  • 区域数=环形复杂度

  • 环形复杂度V(G)=E-N+2 (E为控制流图中的边数,N为控制流图中的结点数)

  • 环形复杂度V(G)=P+1 (P为数据流图中的判定结点数)


(3)导出测试用例:

根据环形复杂度和程序结构来设计测试用例数据输入和预期结果。


(4)准备测试用例:

确保基本路径集中的每一条路径的执行。

3.补充知识点--测试用例

(1)定义:

是为发现软件中存在的问题而编写的一组包含测试输入、执行条件以及预期结果的文档,用来判断软件程序是否工作正确,软件产品是否满足需求。它是有效发现软件缺陷的最小测试执行单元。

(2)8个基本项内容:

测试用例编号、测试项目、用例标题、重要级别、预置条件、输入数据、操作步骤和预期输出。不同公司的测试用例所包含的内容不尽相同。

例题1:

//被测程序  
double  sumNumber(int m, int n)
1 {  
2   int i=0;
3   double sum=1;
4   for(i=1;i<=n;i++)
5   {
6	   if(i>100 ||  sum>200)
7	   {  break; }
8      else
9   {  
10      if(m>200)
11  	  {  m=m+1; }
12       else
13       { sum=sum*i+m; }
14     }
15   }    
16   return sum;}

1、绘制程序控制流图:

2、计算环路复杂度(用三种方法计算)

(1)环路复杂度=区域数目

        如图所示,5个区域

(2)环路复杂度=E-N+2

        11个结点,14条边,V(G)=14-11+2=5

(3)环路复杂度=p+1

        四个判定结点,V(G)=4+1=5

3、导出基本(独立)路径集合

        路径1:  1->4->6.1->6.2->10->11->14->4->6.1->7->15->16

        路径2:  1->4->6.1->6.2->10->13->14->4->6.1->7->15->16

        路径3:  1->4->6.1->6.2->7->15->16

        路径4:  1->4->6.1->7->15->16

        路径5:  1->4->15->16

4、设计测试用例

用例编号

条件

输入

预期输出

实际输出

Case_1

**

******

Case_2

**

******

Case_3

**

******

Case_4

**

******
     Case_5********

例题2:

 实验代码如下:

1.  画程序控制流图

2.将程序的流程图转换为控制流图

3.计算程序环形复杂度

环形复杂度有 3 种计算方法

(1)控制流图中的区域数等于环形复杂度

        如上图所示,结点4、7、结束形成一个区域;

        结点9、10、12、结束形成一个区域;

        结点8、9、12、14、结束形成一个区域;

        最后一个大区域由结点4、7、14、结束形成。

        共有4个区域。

(2)环形复杂度  V(G)=E-N+2, E为控制流图中的边数,N为控制流图中的结点数.

        九个结点,十一条边

        V(G)=11-9+2=4

(3)环形复杂度  V(G)=P+1, P为数据流图中的判定结点数

        判断结点为“出现条件判断”(出现分支)的结点,分别为结点4、8、9。

        共有三个判定结点。

        V(G)=3+1

4.  导出测试用例

根据环形复杂度的计算可得出基本路径法的 例子的 4 条独立路径
路径11→4→7→结束语句  
路径21→4→8→9→11→结束语句  
路径31→4→8→9→10→结束语句  
路径41→4→8→13→结束语句


5.  准备测试用例

根据基本路径法的例子中的判断结点给出的条件,选择合适的数据来确保上述 4 条路径均得到执行。

测试用例输入数据预期结果
用例1a=2\b=5\c=3输出“不能构成三角形!”
用例2a=6\b=6\c=3输出“等腰三角形”
用例3a=6\b=6\c=6输出“等边三角形”
用例4a=3\b=4\c=5输出“普通三角形”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1647175.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Netty 实现dubbo rpc

一、RPC 的基本介绍 RPC (Remote Procedure Call) 远程过程调用&#xff0c;是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序&#xff0c;而程序员无需额外的为这个交互编程。也就是说可以达到两个或者多个应用程序部署在不同的服务器上&…

基于BP神经网络的QPSK解调算法matlab性能仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ........................................................................ for ij 1:leng…

神经网络中的归一化

我们今天介绍一下神经网络中的归一化方法~ 之前学到的机器学习中的归一化是将数据缩放到特定范围内&#xff0c;以消除不同特征之间的量纲和取值范围差异。通过将原始数据缩放到一个特定的范围内&#xff0c;比如[0,1]或者[-1,1]&#xff0c;来消除不同特征之间的量纲和取值范围…

弹性云服务器给用户带来了哪些便利

什么是弹性云服务器&#xff1f; 弹性云服务器&#xff08;ECS&#xff0c;Elastic Cloud Server&#xff09;简单地说&#xff0c;是指运行在云计算环境中的虚拟服务器。弹性云服务器可以说是虚拟专用服务器(VPS)&#xff0c;但VPS却不能说是云服务器。这是因为两者有着本质的…

软件游戏丢失XINPUT1_4.dll文件的多种解决方法分享

当玩家在尝试启动某款游戏时&#xff0c;遇到了系统提示“游戏找不到XINPUT1_4.dll”&#xff0c;这个错误通常发生在玩家尝试启动游戏时&#xff0c;游戏无法找到所需的XINPUT1_4.dll文件&#xff0c;呆滞无法正常启动运行。但是幸运的是&#xff0c;有一些简单的修复方法可以…

【typescript测试 - Jest 配置与使用】

安装 npm install --save-dev types/jestnpm install --save-dev ts-jest配置 tsconfig.json {"compilerOptions": {"types": ["jest"]} }jest.config.js module.exports {preset: ts-jest,testEnvironment: node, };使用 // add.js funct…

数据分析——业务指标量化

业务指标量化 前言一、统计指标二、统计指标特点完整的统计指标统计指标的理解和使用方法 三、统计指标类型总量指标时期指标时点指标总量指标的作用 相对指标计划完成相对数指标结构相对数指标比例相对数指标比较相对数指标动态相对数指标 平均指标 四、数量指标和质量指标五、…

【1小时掌握速通深度学习面试8】生成模型-中

目录 28.DBN与DBM 有什么区别? 29.VAE如何控制生成图像的类别? 30.如何修改VAE的损失函数&#xff0c;使得隐藏层的编码是相互解耦的? 31.自回归方法如何应用在生成模型上? 32.原始 VAE存在哪些问题? 有哪些改进方式? 33.如何将VAE与GAN 进行结合&#xff1f; 34.…

Rust Postgres实例

Rust Postgres介绍 Rust Postgres是一个纯Rust实现的PostgreSQL客户端库&#xff0c;无需依赖任何外部二进制文件2。这意味着它可以轻松集成到你的Rust项目中&#xff0c;提供对PostgreSQL的支持。 特点 高性能&#xff1a;Rust Postgres提供了高性能的数据库交互功能&#…

C++使用单链表实现一元多项式的加,乘操作

相邀再次喝酒 待 葡萄成熟透 但是命运入面 每个邂逅 一起走到了 某个路口 是敌与是友 各自也没有自由 位置变了 各有队友 首先&#xff0c;按照惯例&#xff0c;十分欢迎大家边听歌边观看本博客&#xff01;&#xff01; 最佳损友 - 陈奕迅 - 单曲 - 网易云音乐 (163.com) 一…

ABAP 第二代增强-采购申请子屏幕增强

文章目录 第二代增强-采购申请子屏幕增强需求实现过程创建项目运行效果客户屏幕的PBO全局变量获取数据更新数据运行效果查询底表修改数据 第二代增强-采购申请子屏幕增强 需求 实现过程 创建项目 运行效果 客户屏幕的PBO 全局变量 *&------------------------------------…

python_5

# 制作一个注册登录模块 # 注册&#xff1a;将用户填入的账户和密码保存到一个文件(users.bin) # 登陆&#xff1a;将用户填入账户密码和users.bin中保存的账户密码进行比对,如果账户和密码完全相同 那么登录成功&#xff0c;否则登录失败 import hashlib import json import o…

Petalinux的使用——定制Linux系统

文章目录 配置petalinux运行环境petalinux设计流程 配置petalinux运行环境 Petalinux的安装在文章Ubuntu镜像源的更改及其Petalinux的安装中已经介绍&#xff0c;下面介绍petalinux运行环境的配置过程。 进入到petalinux的安装路径下&#xff0c;使用下面的命令对petalinux的运…

第十三章 计算机网络

这里写目录标题 1.网络设备2.协议簇2.1电子邮件(传输层)2.2地址解析(网际层)2.3DHCP(动态主动配置协议)2.4URL(统一资源定位器)2.5IP地址和子网掩码 1.网络设备 物理层&#xff1a;中继器&#xff0c;集线器(多路中继器) 数据链路层&#xff1a;网桥&#xff0c;交换机(多端口…

【微磁学3D绘图工具探索】Excalibur

文章目录 概要调查报告技术名词解释主要特点 技术和算法实现他能够画出怎样酷炫的图 小结 概要 微磁学中的磁学结构同时包括二维和三维&#xff0c;想要绘制得好看&#xff0c;结果清晰&#xff0c;那么就需要一些自己写的绘图代码之外的额外渲染功能&#xff0c;尤其是对于三…

JS hook cookie

JS hook cookie cookie 的值是V&#xff0c;v是动态变化的 可以看到D中生成了cookie的值n 尝试使用RPC定位到cookie。 替换内容&#xff0c;下断点。 将写好的RPC代码直接插入 加入代码&#xff0c;file.virjar.com/sekiro_web_client.js?_123 这个地址是在前端创建客户端…

python使用mongo操作

目前有个需求&#xff0c;就是把所有sql转为mongo管道查询 知识点 在 MongoDB 中&#xff0c;allowDiskUse 选项应该作为聚合命令的一个选项&#xff0c;而不是聚合管道的一个阶段。allowDiskUse 选项用于允许聚合操作使用磁盘空间来临时存储数据&#xff08;当聚合操作的数据…

Amazon Bedrock的进化:更多选择与新特性,助力生成式AI应用更快落地

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

YoloV9改进策略:Block改进|改进HCF-Net的PPA模块|附结构图|(独家改进,全网首发)

摘要 HCF-Net是一种用于红外小物体检测的深度学习网络。它主要包括三个模块:并行化斑块感知注意力(PPA)模块、维度感知选择性整合(DASI)模块和多稀释通道细化器(MDCR)模块。 PPA模块采用多分支特征提取策略,用于捕捉不同尺度和层次的特征信息。DASI模块可实现自适应信…

安卓使用Fiddler抓包 2024

简介 最近试了一下安卓使用fiddler 抓包&#xff0c;发现https包基本都会丢失。原因是Anandroid 7版本针对ssl安全性做了加强&#xff0c;不认可用户的证书。我们要做的就是把fiddler导出的证书进过处理后放置到系统证书目录下面&#xff0c;这样才能抓包https请求。 这里使用…