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

知识点:

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.mzph.cn/pingmian/7287.shtml

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

相关文章

计算机SCI期刊,中科院2区,IF=6+,自引率低,专业认可度高!

一、期刊名称 Journal of King Saud University-Computer and Information Sciences 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;计算机科学 影响因子&#xff1a;6.9 中科院分区&#xff1a;2区 出版方式&#xff1a;开放出版 版面费&#xff1a;$…

开源模型 Prometheus 2 能够评估其他语言模型,其效果几乎与 GPT-4 相当

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

在Codelab对llama3做Lora Fine tune微调

Unsloth 高效微调大模型的工具&#xff0c;通过Unsloth微调Llama3, Mistral, Gemma 速度提升2-5倍&#xff0c;内存减少70%&#xff01; Codelab 创建一个jupyter notebook 选择 T4 GPU 安装Fine tune 相关的lib %%capture import torch major_version, minor_version torch…

权益商城系统源码,支持多种支付方式

权益商城系统源码&#xff0c;支持多种支付方式&#xff0c;后台商品管理&#xff0c;订单管理&#xff0c;串货管理&#xff0c;分站管理&#xff0c; 会员列表&#xff0c;分销日志&#xff0c;应用配置。 上传到服务器&#xff0c;修改数据库信息&#xff0c;导入数据库&a…

Python中的分布式爬虫系统Scrapy与分布式任务队列的结合

随着互联网的不断发展&#xff0c;网络爬虫在数据采集和信息挖掘中发挥着重要作用。然而&#xff0c;单机爬虫往往难以应对大规模数据抓取的需求&#xff0c;因此&#xff0c;构建分布式爬虫系统成为了一种必然选择。本文将介绍如何利用 Python 中的 Scrapy 框架和分布式任务队…

android studio apt代码编写实战

之所以试一下apt代码的编写&#xff0c;是因为发现几年前写的工程&#xff0c;在新的android studio中debug apt代码时&#xff0c;一直连不上debug环境&#xff0c;提示报错 Unable to open debugger port (localhost:5005): java.net.ConnectException "Connection refu…

IOS自动化—将WDA打包ipa批量安装驱动

前言 CSDN&#xff1a; ios自动化-Xcode、WebDriverAgent环境部署 ios获取原生系统应用的包 如果Mac电脑没有配置好Xcode相关环境,可以参考以上文章。 必要条件 Mac电脑&#xff0c;OS版本在12.4及以上&#xff08;低于这个版本无法安装Xcode14&#xff0c;装不了Xcode14就…

excel中数据筛选技巧

1、筛选excel中破折号前后都为空的数据 在Excel中查找破折号前后为空的数据&#xff0c;你可以结合使用Excel的查找和筛选功能&#xff0c;或者利用一些公式来判断。以下是两种常用的方法&#xff1a; 方法一&#xff1a;使用筛选功能选中数据范围&#xff1a;首先&#xff0c…

微信小程序miniprogram_npm目录主包太大如何处理

在使用TDesign开发小程序&#xff0c;miniprogram_npm目录下很多组件&#xff0c;感觉很多组件我都没引用&#xff0c;为什么都在主包来&#xff0c;导致主包很大。如何优化&#xff1f; 在使用npm构建后生成的miniprogram_npm目录里&#xff0c;有所有TDesign组件。但是有很…

Docker 入门篇(六)-- idea 打包 docker 镜像流程

环境准备&#xff1a; idea 环境&#xff1a;IntelliJ IDEA 2021.3.1 (Ultimate Edition)docker 版本&#xff1a;v. 26.1.0准备 springboot jar 文件 &#xff1a;target/DockerDemo-0.0.1-SNAPSHOT.jardocker 可视化管理工具 portainer &#xff1a;v2.6.0 一. 配置docker远…

27.leetcode---随机链表的复制(Java版)

题目链接: https://leetcode.cn/problems/copy-list-with-random-pointer/description/ 题目解析: 使用map来解这个题就比较方便了 代码: 测试:

论文阅读:《Sequence can Secretly Tell You What to Discard》,减少推理阶段的 kv cache

目前各类大模型都支持长文本&#xff0c;例如 kimi chat 以及 gemini pro&#xff0c;都支持 100K 以及更高的上下文长度。但越长的上下文&#xff0c;在推理过程中需要存储的 kv cache 也越多。假设&#xff0c;数据的批次用 b 表示&#xff0c;输入序列的长度仍然用 s 表示&a…

【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…

C++学习笔记——对仿函数的理解

文章目录 思维导图仿函数出现的逻辑仿函数使用上的巧妙 仿函数的本质仿函数的优势仿函数语法的巧妙 思维导图 仿函数出现的逻辑 我们在学习stack时会遇到一些新的问题&#xff0c;这些问题需要我们使用非类型模板参数去解决&#xff0c;即我们需要在设计类时需要有一个途径去快…

Android硬件加速hardwareAccelerated支持/不支持的绘图接口

Android硬件加速hardwareAccelerated支持/不支持的绘图接口 Android硬件加速也即在Androidmanifest.xml配置开启GPU渲染&#xff1a; <application android:hardwareAccelerated"true" > 配置后&#xff0c;Android将启用GPU渲染&#xff0c;在trace里面看会…

clang:在 Win10 上编译 MIDI 音乐程序(一)

先从 Microsoft C Build Tools - Visual Studio 下载 1.73GB 安装 "Microsoft C Build Tools“ 访问 Swift.org - Download Swift 找到 Windows 10&#xff1a;x86_64 下载 swift-5.10-RELEASE-windows10.exe 大约490MB 建议安装在 D:\Swift\ &#xff0c;安装后大约占…

Docker新建容器 修改运行容器端口

一、修改容器的映射端口 项目需求修改容器的映射端口 二、解决方案 停止需要修改的容器 修改hostconfig.json文件 重启docker 服务 启动修改容器 三、方案 目前正在运行的容器 宿主机的89 端口 映射 容器端口80 3.1测试环境中新建nginx服务 docker run -itd --n…

打破 AI 算力天花板,Meta超大规模AI基础设施架构解读

Meta超大规模AI智算基础设施架构设计 摘要 双重 GPU 集群&#xff0c;每群配备 2.4 万个 H100 芯片&#xff0c;分别采用 RoCE 和 InfiniBand 网络连接。LLaMA3 就是在这两个集群上训练出来的&#xff1b;Meta AI 将部署庞大算力集群&#xff0c;拥有 35 万张 H100 GPU&#x…

【C语言】第一个C程序:hello world

printf简介 printf是C语言提供的库函数&#xff0c;可以在屏幕上打印格式化数据。这里不作展开&#xff0c;只需要知道&#xff0c;如果要打印hello world&#xff0c;就把双引号引起来的"hello world"作为参数传给printf就行了。如果想要在打印后换行&#xff0c;要…

数据分析之Tebleau可视化:树状图、日历图、气泡图

树状图&#xff08;适合子分类比较多的&#xff09; 1.基本树状图的绘制 同时选择产品子分类和销售金额----选择智能推荐----选择树状图 2.双层树状图的绘制 将第二个维度地区拖到产品分类的下面---大的划分区域是上面的维度&#xff08;产品分类&#xff09;&#xff0c;看着…