【软件测试】使用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 可以执行上述所有类型的测试;可以自定义所执行测试的级别和范围,以便体现用户不同的需求和测试习惯。
并且知道了,通过自定义的桩函数,我们使得单元测试时可以执行另外两个分支,从而使覆盖率大大提升。
【软件测试】使用C++ Test进行动态测试相关推荐
- 【软件测试】单元测试不属于动态测试
单元测试既不属于动态测试也不属于静态测试. 单元测试既可以使用静态分析,也可以使用动态测试,对于静态测试和动态测试应该配合使用. 从静态测试方面来说,静态测试的静态代码分析结果可以适用于所有可能的运行 ...
- 软件测试动画ppt,五、动态测试后处理.ppt
<五.动态测试后处理.ppt>由会员分享,可在线阅读,更多相关<五.动态测试后处理.ppt(25页珍藏版)>请在人人文库网上搜索. 1.第五部分 动态测试后处理,现代力学测量技 ...
- 软件工程导论 07章软件测试
1.软件测试的目标 尽可能多地发现并排除软件中潜藏的错误,最终给用户一个高中质量的软件系统. 2.软件测试的定义 为了发现程序中的错误而执行程序的过程 3..软件测试的原则 ①所有测试都应追溯到需求 ...
- 【软件工具】软件测试
今天小编带大家走进软件测试,这是一个非常重要的环节,在软件开发的一系列活动中,为了保证软件的可靠性,人们研究并使用了很多方法进行分析.设计及编码实现.但是由于软件产品本身是无形的.复杂的.知识密集的逻 ...
- 【软件工程】软件测试目标定义 黑盒测试、白盒测试
记录 软件工程北大-软件测试技术课件 文章目录 著名的软件错误案例研究 1.迪斯尼的狮子王 2.美国航天局火星基地登陆,1999 3.爱国者导弹防御系统,1991 4.千年虫,大约1974 软件测试的 ...
- 广义的软件测试,软件测试的狭义论和广义论
软件测试的狭义论和广义论 "法式测试是为了创造错误而履行法式的过程",实际是一个广义的概念,因为他感到测试是履行法式的过程,也就是传统意义上的测试--在代码完成后,经由过程运转法式 ...
- 软件测试概述、结构化测试
一.软件测试的目的 是在最小的成本和最短的时间内,通过设计良好的测试规程和测试用例,系统地发现不同类别的错误. 二.软件测试的基本原则 设计好的测试用例.不可能进行穷举测试.尽早开展测试.重点测试.定 ...
- 软件工程结构化建模的方法和工具_2020年6月——北京大学《软件工程》笔记
1软件工程概述 一.软件的定义 计算机系统种的程序及其文档. 程序:计算机任务的处理对象和处理规则的描述. 文档:为了便于理解程序所需要的阐明性资料. ●软件是无形的.不可见的逻辑实体 ●软件是设计开 ...
- 系统架构设计师(截图+做题思路+目录)
目录 文章目录 目录 系统架构设计师考试介绍 计算机组成与体系结构 计算机体系结构分类-Flkynn CISC与RISC的区别 层次化存储结构 Cache 局部性原理 主存-分类 磁盘结构与参数 磁盘 ...
- 软件接口测试是什么?怎么测?
软件测试是一条超级长的跑道,最好分阶段来跑:先入行,后精通.网上能看到很多软件测试的帖子,但能够准确分类详细介绍的并不多.正好最近有时间,就把我所了解的软件测试做一个小小总结,对你有帮助的话,记得点赞 ...
最新文章
- php xml 增删改查,PHP实现对xml进行简单的增删改查(CRUD)操作示例
- C#线程 在某一时间内,只有N个线程在并发执行,其余都在队列中的实现(转载)...
- 云图说 | 华为云医疗智能体,智联大健康,AI药物研发
- OpenShift 4 - 创建Service Mesh运行环境
- Linux操作系统各版本ISO镜像下载(包括oracle linux\redhat\centos\u
- 关闭win7 透明化效果 aero
- 什么是Git最好的视觉合并工具? [关闭]
- 《Linux内核分析》 第八节 进程的切换和系统的一般执行过程
- js登录界面使用ajax连接数据库,js用ajax连接数据库数据
- flask框架的使用
- Word插入脚注只占左下角一栏的方法
- cocos creator播放声音控制台显示Simulator: jsb: ERROR
- 如何解决苹果电脑(Macbook Pro)没有声音?
- 将bios中的boot mode 从uefi改为legacy之后,进不去bios
- h3c服务器开机无法自行进入系统,H3C服务器设置自启动
- 谈谈数据库里的时间戳
- 快速创建树 算法 treeCreate treeview
- BootLoader(U-Boot)启动过程记录
- nvm 安裝不同版本的node(詳細過程无图)
- jqu操作class 实现动态导航菜单