【软件测试】使用C++ Test进行动态测试

article/2025/10/15 21:23:10

测试目的

1.掌握动态测试的方法。
2.掌握使用Parasoft C++ Test进行动态测试。

测试环境

Windows XP, Parasoft C++ Test 9.2

测试内容

使用Parasoft C++ Test进行动态测试,包括自动化测试、自定义测试用例、数据源测试用例、桩函数机制。

测试过程及结果

4.1 基于C++Test 自动化测试

1.了解和熟悉自动化单元测试配置
在这里插入图片描述

2.自动化生成并执行测试用例
1)选定要测试的源码文件
在这里插入图片描述

2)自动生成测试用例,点击“C++test”->“Test Using…”->“Builtin”->“Unit Testing”->“Generate Unit Tests”;开始针对要测试的源码生成单元测试用例;然后,可以看到工程下面多了一个“tests”文件夹,展开,TestSuite_Account_cxx.cpp就是刚才自动生成的测试用例。可以双击查看。
在这里插入图片描述

3)自动化执行测试用例。点击菜单“C++test”->“Test Using…”->“Builtin”->“Unit Testing”->Run Unit Tests”,Parasoft C++test将会自动化执行生成的测试用例。
在这里插入图片描述

3.查看测试报告与审查测试结果
1)在上面执行了自动化单元测试,接下来查看测试结果,如果发现测试用例执行结果异常就可能需要对代码进行修正。在工具菜单中选择“C++test”->“Show View”->“Test Process”视图:
在这里插入图片描述

2)在工具菜单中选择“C++test”->“Show View”->“C++test(质量任务)”视图,可以查看到更具体的测试结果,下面将测试用例的执行结果都给予报告,方便开发/测试人员分析以及后续的回归测试。
在这里插入图片描述

4.2基于C++Test自定义测试用例

1. C++Test自定义测试用例具体操作流程
1)找到待测函数
在这里插入图片描述

2)点击“C++test”->“Show view”->“Test Cases Explorer”
在这里插入图片描述

3)可以使用自定义测试用例向导来生成测试用例。如下图,右击,然后选择“Add New”->“Test Case using Wizard”:(测试用例向导)
在这里插入图片描述

4)来设定测试用例的输入,并指定相应的输出。
在这里插入图片描述

5)执行刚才自定义的测试用例。
在这里插入图片描述

4.3 基于C++Test 的数据源测试用例

1.将例程目录Exp4中的数据源Account.cvs添加到工作空间中
1)在Test Case Explorer面板中,选择全局数据源(Global Data Sources),右击选择 添加 > 数据源(Add New> Data Source)。选择CSV文件类型数据源,并点击完成(Finish)按钮。
在这里插入图片描述

2)重新命名数据源的名字为Account,并指定Account.csv文件的路径(位于Exp4例程文件夹下)。勾选First row specifies column names复选框,指定该数据源文件的第一行为列名。点击Show Columns按钮测试是否显示列名。可以从下图中看到该文档中的列名。如下图所示,然后点击OK。
在这里插入图片描述

2. 根据数据源生成测试用例。
1)对程序Account.cxx自动生成测试用例,右击后选择“C++test”->“Test Using…”->“Builtin”->“Unit Testing”->“Generate Unit Tests”。
在这里插入图片描述

2)在已有的测试用例基础上手动添加测试用例,在Test Case Explorer面板中,选择第一步生成的测试类TestSuite_Account_cxx_xxxxxxxxx,右击选择 添加 > 测试用例向导(Add New> Test Case using Wizard)。打开测试用例添加向导。

在这里插入图片描述
3)执行使用数据源生成的测试用例
在这里插入图片描述

4.4 C++Test 的桩函数机制

1. C++Test 实现桩函数
1)自定义桩函数:用户自定义的桩函数,自定义桩函数以“CppTest_Stub_” 为前缀
2)安全桩函数:当代码中使用一些“危险”的函数,如rmdir()、remove()等,C++test将自动生成安全桩函数,用以替换“危险”函数。如果使用者不希望C++test自动生成安全桩函数,则可以在Test Configuration窗口中,复制内建的规则,然后选择Execution面板,从 Use stubs found in 删去{cpptest:cfg_dir}/safestubs,如下图:
在这里插入图片描述

2. C++Test 中自动生成桩函数
1)启动C++test,导入实验例程Exp_stub中的工程文件StubExample.dsp,该工程中的StubExample.cpp文件中引用了一个外部函数waitForUserChoice(),但是工程中没有提供该外部函数的实现。如下图所示:
在这里插入图片描述

2)针对该工程使用内建的配置”Generate Unit Tests”生成单元测试用例, 然后选择内建的配置”Run Unit Tests”执行单元测试用例。(方法是:右击工程或者直接选择菜单“Parasoft”->“测试执行”->“内建”->“Unit Testing”- >“Generate Unit Tests”),将会自动生成单元测试用例;然后右击工程或者直接选择菜单“Parasoft”->“测试执行”->“内建”->“Unit Testing”- >“Run Unit Tests”),将会自动执行单元测试用例)。
在这里插入图片描述

3)针对工程自动生成桩函数。鼠标右击该项目或者 从菜单选择:“Parasoft”->“测试执行”->“内建”->“Unit Testing”- >“Generate Stubs”)
在这里插入图片描述

4)桩函数生成后,可在原项目目录结构中发现新增一个叫Stubs的目录,展开该目录,展开autogenerated目录,在其下可发现一个源码文件,双击源文件,查看源文件内容。
在这里插入图片描述

5) 由于桩函数返回值类型为BUTTONS,在桩函数的文件中需要加入该类型的定义,这里根据工程,在生成的桩函数文件的#include “cpptest.h”下一行,加入BUTTON_SUM的定义。(定义位于StubExample.hpp,也可导入该头文件的路径,工程中包含该头文件,可查看),如图:
在这里插入图片描述

6)接下来可以执行单元测试。右击工程或者直接选择菜单“Parasoft”->“测试执行”->“内建”->“Unit Testing”- >“Run Unit Tests”),将会自动执行单元测试用例。等待一会,提示执行成功,可以查看覆盖率。
在这里插入图片描述

3. C++Test 中自定义桩函数
1)选择上述4.4.2节中被测试项目Exp_stub\StubExample,右键选择“Parasoft”->“测试执行”->“内建”->“Unit Testing”- >“Collect Stub Information”)
在这里插入图片描述

2)选择菜单“Parasoft”-> “显示视图”->“桩函数”,查看桩函数信息:
在这里插入图片描述

3)接下来指定自定义桩函数文件名,如命名为 user_defined.cpp,如下图,点击finish。
在这里插入图片描述

4)根据自定义的桩函数执行单元测试:右击工程或者直接选择菜单“Parasoft”->“测试执行”->“内建”->“Unit Testing”- >“Run Unit Tests”),将会自动执行单元测试用例。 执行完后,双击StubExample.cpp文件可看到新的覆盖率信息。
在这里插入图片描述

通过本次测试,我了解到Parasoft C++test的自动化动态测试尤其是单元测试方面可以帮助开发/测试人员完成下述工作:
异常测试:(也称为白盒测试、应力测试、结构测试或可靠性测试),用来确认代码的结构可靠性,能处理所有可行的输入以及输入组合,不会产生预料之外的异常。
功能测试:用于验证所建立模块是否符合需求和功能是否正常工作。在单元级别创建功能测试涉及到人工输入,以指定特定的输入和状态条件、以及预期的输出。功能测试可以作为白盒测试来实施(在了解接受测试的单元的内部组织和实现的情况下进行测试),或者黑盒测试,后者仅基于接受测试的单元的外部行为进行。
回归测试:用来验证现有代码行为不会随着代码库改进而更改。完成此测试的通常做法是,开发一组测试,验证它们的正确性,在代码更改之后运行它们,以捕获代码行为中的偏差。回归测试可能要依赖于异常测试和功能测试。
C++test 可以执行上述所有类型的测试;可以自定义所执行测试的级别和范围,以便体现用户不同的需求和测试习惯。
并且知道了,通过自定义的桩函数,我们使得单元测试时可以执行另外两个分支,从而使覆盖率大大提升。


http://chatgpt.dhexx.cn/article/uX8dc3sJ.shtml

相关文章

测试基础-动态白盒测试

1.动态白盒测试 定义:也称结构化测试。利用查看代码功能(作什么)和实现方式(怎么做)得到的信息来确定哪些需要测试、哪些不需要测试、如何开展测试。 动态白盒测试包括以下4个部分: 直接测试底层函数、过…

符合功能安全要求的动态测试工具-TESSY

Tessy是一个专门针对嵌入式软件的C/C代码进行单元、集成测试的工具,它可以自动化地执行测试、评估测试结果并生成测试报告。 Tessy的目标就是:通过自动化整个测试周期,支持针对C语言的单元测试/集成测试,同时,Tessy也…

软件测试复习03:动态测试——白盒测试

作者:非妃是公主 专栏:《软件测试》 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 文章目录 逻辑覆盖法:最常用程序插桩技术基本路径法点覆盖边覆盖边对覆盖主路径覆盖 符号测试错…

动态测试

动态测试 1.1 动态分析技术 虽然静态分析技术不需要软件的执行,而从动态分析本身来看更像是一个“测试”。它包含了系统的执行。当软件系统在模拟的或真实的环境中执行之前、之中和之后,对软件系统行为的分析是动态分析的主要特点。动态分析包含了程序在…

软件测试复习04:动态测试——黑盒测试

作者:非妃是公主 专栏:《软件测试》 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 文章目录 等价划分法边值分析法错误推测法因果图法示例 习题 等价划分法 等价类:一个几何&…

动态测试方法

动态测试方法,通过实际执行代码去发现潜在代码错误的测试方法。 人工动态方法 人工动态方法,可以真正检测代码的业务逻辑功能,其关注点是“什么样的输入,执行了什么代码,产生了什么样的输出”,主要用于发…

linux同步时间服务器时间配置

linux时间同步简单配置如下(centos7.x): 安装时间服务器(系统一般会自带): yum install ntp ntpdate -y 时间服务器临时配置(重启该配置失效): ntpdate 192.133.203.89(时间服务器ip) 时间服务器配置: vim /etc/chrony.conf 进入vim编辑页面…

linux 多台机器修改时间同步

修改东八区 首先第一步,通过命令 :date -R 查看当前系统所在时区。如是0800,则是东八区,也就是我们当下的北京时间,如不是(如下图),做如下调整。 命令行键入命令:tzsele…

Linux时间同步:chrony

linux7以上版本都自带chrony服务 如果没有安装,则使用yum安装,如果安装了,请忽略 yum -y install chrony 说明:Chrony由两个程序组成,分别是chronyd和chronyc chronyd是一个后台运行的守护进程,用于调整…

linux同步时间(通过定时任务,按时同步时间)

安装同步器 yum install -y ntpdate同步时间(一次性同步,挂起或关闭虚拟机后时间再次不同步) ntpdate 0.centos.pool.ntp.org制作定时任务,同步时间 安装定时任务 yum –y install crontabs制作一个定时任务,设置开机自启 systemctl enable crond --now配置定时任务文件,添…

Linux同步时间的方法

方法一:非生产时使用 第一种是在所有机器上,使用连接工具的并发命令功能,同时运行修改时间命令,比如执行date -s “2019-05-25 17:00:00” ,这个方法适合自己测试环境用 第二种就是安装了一个ntpdate命令&#xff0c…

word中插入visio流程图的操作

1、首先需要将画好的流程图进行保存,注意保存的格式是vsdx 2、新建个word文档,找到插入-对象,打开如下: 3、点击由文件创建-浏览中找到你想插入的对应的visio的文件 4、找到之后,下一步就是直接点击确定,…

Visio如何裁剪图片

参考 Visio如何裁剪图片 - 云社区 - 腾讯云 1、首先点击打开Visio软件,如图所示 2、接着在Visio中装载需要处理的图片,点击文件-打开,如图所示 3、加载图片后,点击选中图片,如图所示 4、此时Visio上方菜单栏&#xf…

visio2019怎么对图片加箭头标注,Visio设置图片作为背景

visio2019怎么对图片加箭头标注,Visio设置图片作为背景 单个图片总时作为一个对象被标注,没办法标注细节,可以将图片作为背景,进行标注 首先,插入,新建页,背景页,把欲编辑的图片放…

流程图软件,visio,安装下载教程

建议:如果是插入到word中,建议使用2013版的visio,通过插入对象的方式,插入到word中。 方法一:插入-对象-新建visio 方法二:visio中画好图,插入-对象-由文件创建 这样的word中的visio对象&…

Microsoft Office Visio Professional 之包图

1 包的概念 1.1 包的定义 包(Package): 是UML用来组织模型元素的模型元素。 包中可以包含类、接口、构件、用例、结点、活动、状态、包等其他模型元素。 包是对软件模型进行分解、组织的有效的模型元素。 1.2 包的表示 UML用带把的矩形框来表示包。 1.3 包的关系 依赖关系泛化关…

visio标题怎么编辑?

第一步:点击“背景-1” 第二步:双击标题就可以出行文本框,然后可以编辑了 第三步:编辑完成 第五步:点击“页-1”返回就可以看到了,修改完成。欧耶!!! 一张图看懂性能测试…

Visio安装与下载

关于Visio2013版的安装与下载 Visio2013版的安装与下载教程 首先下载Visio2013,放个链接:https://pan.baidu.com/s/1G1C9cLH0uvcgtl2RShnRkw 提取码:jmiy 安装步骤: 找到下载的安装包,右键选择以管理员身份运行直接安…

如何在visio中画立体图形

最近写论文的时候要画立体结构图,起初没在visio中找到立体图像,问了同门,他和我说一笔一笔画,我不信!!! 最后终于找到了 —————————————————————————————— 0x00 …