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

测试目的

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 可以执行上述所有类型的测试;可以自定义所执行测试的级别和范围,以便体现用户不同的需求和测试习惯。
并且知道了,通过自定义的桩函数,我们使得单元测试时可以执行另外两个分支,从而使覆盖率大大提升。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值