基本路径覆盖测试设计-实验九例题

目录

基本路径法

计算环形复杂度需要画出程序的控制流图。控制流图中只有两种图形符号。

实验内容:针对下面的Java语言程序使用基本路径覆盖测试方法设计测试用例。


基本路径法

基本路径法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可

执行路径的集合,然后根据可执行路径进行测试用例设计的方法。此方法设计出的测试用例

需保证被测程序的每个可执行语句至少执行一次。

基本路径法包括以下4个步骤。

1)画程序控制流图。程序控制流图是描述程序控制流的一种图示方法。

         2计算程序环形复杂度:圈复杂度。从程序的环形复杂度可导出程序基本路径集中的独立路径条数,这是确保程序中每个可执行语句至少执行一次的测试用例数目的上界。

         3导出测试用例。根据环形复杂度和程序结构来设计测试用例数据输入和预期结果。   4)准备测试用例。确保基本路径集中的每一条路径的执行。
:使用基本路径法实现三角形问题测试用例设计。

伪代码如下:

a = float(input("请输入三角形边长a:"))
b = float(input("请输入三角形边长b:"))
c = float(input("请输入三角形边长c:"))
if (a + b <= c or a + c <= b or b + c <= a
or abs(a - b) >= c or abs(b - c) >= a
or abs(c - a) >= b)
    print("不能构成三角形!")
else if (a == b or b == c or a == c)
    if (a == b and b == c)
        print("等边三角形")
    else
        print("等腰三角形")
else
    print("普通三角形")

步骤:

1画出程序控制流图。对应的程序流程图如图1所示。

1 流程图

计算环形复杂度需要画出程序的控制流图。控制流图中只有两种图形符号。

圆:控制流图中的圆被称为流图的节点,表示一个或多个无分支的语句或源程序语句。箭头:控制流图中的箭头被称为边或连接,代表控制流。

         在基本路径测试法中,任何过程设计都要被翻译成控制流图。不同的结构对应不同的控制流图,如图2所示。

2 结构的控制流图

在将程序流程图转换为控制流图时,需要注意以下几点。

(1)选择或分支结构的分支汇聚处应有一个汇聚节点。

(2)边和节点圈定的范围叫作区域。在计算区域数时,图形外的区域也应记为一个区域。

(3)若判断结构的条件表达式包含一个或多个逻辑运算符(OR、AND、NAND、NOR)连接的复合条件表达式,则需要将其修改为一系列只有单条件的嵌套判断。

根据上述内容可将程序流程图对应的控制流图转换出来,如图3所示。

3 程序控制流图

2、计算程序环形复杂度

获得程序控制流图之后,接下来计算环形复杂度。环形复杂度有3种计算方法。

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

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

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

因此,环形复杂度计算如下:

区域数为4VG=11-9+2=4VG=3+1=4

3导出测试用例
        根据环形复杂度的计算可得出有4条独立路径(一条独立路径是和其他独立路径相比至少引入了一个新处理语句或一个新判断的程序通路)。

路径1:147结束语句

路径2:148911结束语句

路径3:148910结束语句

路径4:14813结束语句
接下来根据上述独立路径来设计测试用例,并根据测试用例来输入数据,使程序分别执

行上述的4条独立路径。

 4准备测试用例
         根据判断节点给出的条件,选择合适的数据来确保上述4条路径均得到执行。满足基本路径集的测试用例如表1所示。

1 基本路径集的测试用例

验内容:针对下面的Java语言程序使用基本路径覆盖测试方法设计测试用例。

步骤1:导出程序控制流图
根据源代码可以导出程序的控制流图,如图2-4所示。每个圆圈代表控制流图的结点,可以表示一个或多个语句。圆圈中的数字对应程序中某一行的编号。箭头代表边的方向,即控制

流方向。

2-4 程序2_2的控制流图

步骤2:求出程序环形复杂度
根据程序环形复杂度的计算公式,求出程序路径集合中的独立路径数目。

公式1VG=10-8+2,其中10是控制流图 G中边的数量,8是控制流图中结点的数目。公式2VG=3+1,其中3是控制流图G中判定结点的数目。

公式3VG=4,其中4是控制流图G中区域的数目。

因此,控制流图G的环形复杂度是4就是说至少需要4条独立路径组成独立路径集合,并由此得到能够覆盖所有程序语句的测试用例。

步骤3:导出测试用例
根据上面环形复杂度的计算结果,源程序的独立路径集合中有4立路径:path 110→18

path 210→11→12→16→10→18

path 310→11→13→15→16→10→18

path 410→11→13→14→15→16→10→18

步骤4:设计测试用例
根据上述4条独立路径,设计了测试用例组8如表2-8所示。测试用例组84个测试用例作为程序输入数据,能够遍历这4条独立路径。对于源程序中的循环体,测试用例组8中的输入数据使其执行零次或一次。

表2-8 测试用例组8

注意:如果程序中的条件判断表达式是由一个或多个逻辑运算符(andornot连接的复合条件表达式,则需要变换为一系列只有单个条件的嵌套的判断。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】STL 容器 - list 双向链表容器 ① ( 容器特点 | 容器操作时间复杂度 | 构造函数 )

文章目录 一、 list 双向链表容器简介1、容器特点2、容器操作时间复杂度3、遍历访问5、头文件 二、 list 双向链表容器 构造函数1、默认无参构造函数2、创建包含 n 个相同元素的 list 双向链表3、使用初始化列表构造 list 双向链表4、使用另外一个 list 容器 构造 list 双向链表…

WizFi360-EVB-Pico评估版介绍

文章目录 1 概述2 硬件资源2.1 硬件规格2.2 引脚定义2.3 工作条件 3 参考资料3.1 Datasheet3.2 原理图3.3 尺寸图(单位 : mm) 3.4 参考例程 4 硬件协议栈优势 1 概述 WizFi360-EVB-Pico基于树莓派RP2040&#xff0c;并使用WizFi360增加Wi-Fi连接。它与树莓派Pico板引脚兼容&…

直排轮滑教程8

弧线滑行收腿练习 1&#xff0c;不同于直线&#xff0c;弧线滑行收腿&#xff0c;右腿要越过左脚&#xff0c;左腿收回要靠近右脚。 2&#xff0c;它是个越过动作&#xff0c;是个交叉动作。收腿当中&#xff0c;左右脚是不一样的。 3&#xff0c;收腿的基本理论就是&#x…

使用代码生成工具快速开发应用-结合后端Web API提供接口和前端页面快速生成,实现通用的业务编码规则管理

1、通用的业务编码规则的管理功能 在前面随笔我们介绍了一个通用的业务编码规则的管理功能&#xff0c;通过代码生成工具Database2Sharp一步步的生成相关的后端和Winform、WPF的界面&#xff0c;进行了整合&#xff0c;通过利用代码生成工具Database2sharp生成节省了常规功能的…

七、Class文件结构及深入字节码指

一、JVM语言的无关性与class类文件 不同平台的虚拟机与所有平台都统一使用的程序存储格式——字节码&#xff08;ByteCode&#xff09;是构成平台无关性的基石&#xff0c;也是语言无关性的基础。 Java 虚拟机不和任何语言绑定&#xff0c;它只与“Class 文件”这种特定的二进…

QT foreach

原型&#xff1a;foreach(variable, container) container&#xff1a;容器&#xff0c;即被遍历的对象 variable&#xff1a;当前元素&#xff0c;即遍历container过程中&#xff0c;当前的那个元素 代码&#xff1a; QStringList container { "1", "2&quo…

uni-app pages.json之globalStyle全局页面样式配置

锋哥原创的uni-app视频教程&#xff1a; 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中...共计23条视频&#xff0c;包括&#xff1a;第1讲 uni…

电商数据分析-02-电商业务介绍及表结构

参考 电商业务简介 大数据项目之电商数仓、电商业务简介、电商业务流程、电商常识、业务数据介绍、电商业务表、后台管理系统 举个例子:&#x1f330; 1.1 电商业务流程 电商的业务流程可以以一个普通用户的浏览足迹为例进行说明&#xff0c;用户点开电商首页开始浏览&…

TYN-02A-Ⅱ 太阳能警示灯

应用范围: 可安装在电线杆&#xff0c;路灯&#xff0c;围挡&#xff0c;交 通护栏及各种杆式固体等场所起警示作用。 产品特点&#xff1a; 采用进口PS材质; 光控无开关&#xff0c;白天不闪&#xff0c;昏暗环境自动闪烁&#xff0c;无需手动操作&#xff0c;省时省事; …

shell 循环遍历的详细用法

简介 在 shell 脚本中&#xff0c;循环结构用于重复执行一组代码块&#xff0c;包括 for 循环、while 循环&#xff0c;可以用于遍历数字、字符串、数组、文件等。这篇文章会详细介绍这两种遍历方式&#xff0c;以及各种实例场景。 文章目录结构如下 1. 循环遍历的特点 2. 循…

VS Code插件开发初步

文章目录 上手入口函数contributes 上手 欲善其事必先利其器&#xff0c;无论做什么开发&#xff0c;第一步肯定是下载工具链。VS Code开发主要用到两个东西&#xff0c;一个是项目的手脚架工具Yeoman&#xff0c;可通过yo来安装&#xff1b;另一个是VS Code的扩展时生成器gen…

工具系列:TensorFlow决策森林_(5)使用文本和神经网络特征

文章目录 设置使用原始文本作为特征使用预训练的文本嵌入同时训练决策树和神经网络构建模型训练和评估模型 欢迎来到 TensorFlow决策森林&#xff08; TF-DF&#xff09;的 中级教程。 在本文中&#xff0c;您将学习有关 TF-DF的一些更高级的功能&#xff0c;包括如何处理自…

uniapp中如何使用image图片

当在UniApp中使用图片时&#xff0c;可以通过<image>标签将图片显示在页面上。这个标签可以指定src属性来引用图片&#xff0c;并且可以通过mode属性来设置图片的显示模式。除此之外&#xff0c;还可以利用click事件来实现图片的点击事件。在编写代码时&#xff0c;要注意…

shell 编程中内置的变量(冷门又好用)

简介 分别盘点一下 shell 中的内置变量&#xff0c;真的巨好用&#xff01;&#xff01;&#xff01;包括&#xff1a;环境变量类、shell 变量类、终端设置类和其他一些变量。 常用的内置变量目录如下 1. 环境变量类 $MACHTYPE&#xff1a;机器类型 $OSTYPE&#xff1a;操作…

超声系统前端理论与模拟仿真-续

作者&#xff1a;蒋志强 本人同意他人对我的文章引用&#xff0c;但请在引用时注明出处&#xff0c;谢谢&#xff0e;作者&#xff1a;蒋志强 前言 近期整理了一下彩超前端及波束合成相关的内容&#xff0c;很早以前已经有过一次&#xff0c;这次把其它的内容总结一下&#xf…

【自定义磨砂动态背景】前端及pyqt6实现

如何实现一个自定义的磨砂动态背景呢&#xff1f; 这种效果看起来特别的高端&#xff0c;很新颖美观。 具体的效果可以看这里的演示&#xff1a;https://www.bilibili.com/video/BV1zj411H7wd/ 其实原理就是底层有多个多彩多边形在移动&#xff0c;然后再盖上一层模糊滤镜。 前…

测试服务器带宽(ubuntu)

apt install python3 python3-pippip3 install speedtest-clispeestest-cli

通过自然语言处理增强推荐系统:协同方法

一、介绍 自然语言处理 (NLP) 是人工智能的一个分支&#xff0c;专注于使机器能够以有意义且有用的方式理解、解释和响应人类语言。它包含一系列技术&#xff0c;包括情感分析、语言翻译和聊天机器人。 另一方面&#xff0c;推荐系统&#xff08;RecSys&#xff09;是旨在向用户…

机器视觉系统选型-避免畸变

在定位及高精度测量的系统中&#xff0c;镜头畸变的影响尤其重要 • 使用远心镜头 • 进行系统标定

【Unity+AI】SentisAI大模型植入Unity

相关教程 把AI模型放入Unity-手写数字识别【UnitySentis入门-1】_哔哩哔哩_bilibili Unity官方文档创建引擎以运行模型 |森蒂斯 |1.2.0-exp.2 (unity3d.com) 教程转载自&#xff1a;AI Tools for Game Dev 游戏开发人工智能工具/UnitySentis/01-Unity Sentis 入门.md chut…