当前位置: 首页 > news >正文

白盒测试——基本路径测试法

一、实验名称

        白盒测试——基本路径测试法

二、实验目的

        白盒测试是结构测试,是依据被测程序的内部逻辑结构设计测试用例,驱动被测程序运行完成的测试,通过本实验希望:

        1、掌握基本路径测试法的基本概念,用具体的例子体验基本路径测试法设计测试用例;

        2、通过基本路径测试方法的学习实践,提高具体问题具体分析的能力。

三、基础知识

        基本路径覆盖就是在程序控制流图的基础上,通过分析控制流图的环路复杂性,然后导出程序独立路径集合, 再设计测试用例覆盖所有独立路径的一种动态白盒测试方法。由于基本路径覆盖把程序中的所有节点都覆盖到了,所以程序中的每一条可执行语句也至少会被执行一次,也就是说满足基本路径覆盖就一定是满足语句覆盖的。

        所谓独立路径是指,和其他的独立路径相比,至少有一个路径节点是新的,未被其他独立路径所包含。从程序的环路复杂度可导出程序基本路径集合中的独立路径条数:

        程序独立路径条数 = 程序的环路复杂度

        这是确保程序中每个可执行语句至少执行一次所必须的测试用例数目的下界。得出程序独立路径条数后,再根据控制流图,得出各条独立路径。所有独立路径组成独立路径集合,也就是基本路径集合。

基本路径覆盖测试法的基本步骤如下:

        1) 画出程序控制流图;

        2) 计算程序环路复杂性;

        3) 确定独立路径集合;

        4) 为每条独立路径设计测试用例。

        基本路径覆盖应当确保基本路径集中的每一条路径都能被执行到。一般是为每条独立路径设计一个测试用例,执行这个测试用例时,就能确保该独立路径会被执行。

、实验内容

        下面是一个采用Euclid方法计算两个整数的最大公约数的程序代码:

Function MCM(Int x, Int y): IntInt m = 0;While(x > 0 and y > 0)If(x > y)Then x = x - y;Else y = y - x;EndIf // if结束EndWhile // while循环结束m = x + y;Return m;
End MCM

要求:

        1、画出程序控制流图,计算控制流图的环路复杂度;

        2、按基本路径测试设计测试用例。  

、实验要求

1、画出程序控制流图,计算控制流图的环路复杂度;

2、按基本路径测试设计测试用例;


1、程序控制流图

环路复杂度:V(G)=E−N+2P

  • 节点数 N=8(包括开始和结束节点)。
  • 边数 E=9。
  • 连通分量数 P=1。

代入公式:V(G)=9−8+2×1=3

因此,该程序的环路复杂度为 3。

2. 基本路径测试设计测试用例

        基本路径测试是一种白盒测试方法,旨在确保每条独立路径至少被执行一次。根据环路复杂度,我们需要设计 3 个测试用例来覆盖所有路径。

路径分析

  • 路径 1: 进入循环,x > y,执行 x = x - y,直到 x <= y。
  • 路径 2: 进入循环,x <= y,执行 y = y - x,直到 y <= x。
  • 路径 3: 不进入循环(x <= 0 或 y <= 0)。

测试用例

  • 测试用例 1: x=10,y=5

        预期结果:最大公约数为 5。

        路径:路径 1。

  • 测试用例 2: x=5,y=10

        预期结果:最大公约数为 5。

        路径:路径 2。

  • 测试用例 3: x=−1,y=10 或 x=10,y=−1

        预期结果:最大公约数为 1。

        路径:路径 3。

相关文章:

  • 【网络协议】TCP、HTTP、MQTT 和 WebSocket 对比
  • uni-app vue3版本打包h5后 页面跳转报错(uni[e] is not a function)
  • Lighthouse 自定义审计
  • SpringAI更新:废弃tools方法、正式支持DeepSeek!
  • Linux `whoami` 命令深度解析与高阶应用指南
  • “强强联手,智启未来”凯创未来与绿算技术共筑高端智能家居及智能照明领域新生态
  • 《Python星球日记》 第72天:问答系统与信息检索
  • 一文介绍电路交换、报文交换和分组交换
  • 给 DBGridEh 增加勾选用的检查框 CheckBox
  • Qt笔记---》.pro中配置
  • Java项目拷打(外卖+点评)
  • Java大师成长计划之第22天:Spring Cloud微服务架构
  • 软考 系统架构设计师系列知识点之杂项集萃(59)
  • 计算机组成原理:I/O
  • 论MCU如何在Fatfs中使用Flash接口的方法
  • TCP/IP参考模型详解:从理论架构到实战应用
  • 【Java】 volatile 和 synchronized 的比较及使用场景
  • matlab插值方法(简短)
  • 可编辑38页PPT | 数字化建设—财务系统规划方案
  • Git仓库迁移
  • 俄方代表团抵达土耳其,俄乌直接谈判有望于当地时间上午重启
  • 中央宣传部、全国妇联联合发布2025年“最美家庭”
  • 万科再获深铁集团借款,今年已累计获股东借款近120亿元
  • 国内首家破产的5A景区游客爆满,洛阳龙潭大峡谷:破产并非因景观不好
  • 沙县小吃中东首店在沙特首都利雅得开业,首天营业额5万元
  • 走进“双遗之城”,领略文武风采:沧州何以成文旅新贵