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

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

一、实验名称

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

二、实验目的

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

        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。

http://www.xdnf.cn/news/6083.html

相关文章:

  • copy_paste
  • 如何实现一个运动会计分系统?(C语言版)
  • 高速系统设计实例设计分析二
  • Java—类与对象(一)
  • LLM(大语言模型)部署加速方法——PagedAttention
  • c# 倒序方法
  • 【Java】 volatile 和 synchronized 的比较及使用场景
  • 【RabbitMQ】路由模式和通配符模式的具体实现
  • 嵌入式培训之数据结构学习(三)gdb调试
  • dify 连接不上ollama An error occurred during credentials validation:
  • gitlab提交测试分支的命令和流程
  • HCIP(BFD)
  • Linux——CMake的快速入门上手和保姆级使用介绍、一键执行shell脚本
  • 硬盘序列号(SN码)4种常用查询方法分享
  • Java基础之静态代理和动态代理
  • ValueError: 4 columns passed, passed data had 51141 columns解决
  • 【消息队列】RabbitMQ基本认识
  • Git仓库迁移
  • 深度解析 Sora:从技术原理到多场景实战的 AI 视频生成指南【附学习资料包下载】
  • 模糊数学方法之模糊贴近度
  • 现代 Web 自动化测试框架对比:Playwright 与 Selenium 的深度剖析
  • AI智能分析网关V4周界入侵检测算法精准监测与智能分析,筑牢周界安全防线
  • flutter 视频通话flutter_webrtc
  • @Controller 与 @RestController-笔记
  • 架构设计不合理,如何优化系统结构
  • 设计并实现高并发系统,应用无锁编程与CAS机制
  • Android usb网络共享详解
  • Linux笔记---信号(中)
  • 计算机视觉----基础概念、卷积
  • 基于javaweb的SpringBoot自习室预约系统设计与实现(源码+文档+部署讲解)