测试目的

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进行动态测试相关推荐

  1. 【软件测试】单元测试不属于动态测试

    单元测试既不属于动态测试也不属于静态测试. 单元测试既可以使用静态分析,也可以使用动态测试,对于静态测试和动态测试应该配合使用. 从静态测试方面来说,静态测试的静态代码分析结果可以适用于所有可能的运行 ...

  2. 软件测试动画ppt,五、动态测试后处理.ppt

    <五.动态测试后处理.ppt>由会员分享,可在线阅读,更多相关<五.动态测试后处理.ppt(25页珍藏版)>请在人人文库网上搜索. 1.第五部分 动态测试后处理,现代力学测量技 ...

  3. 软件工程导论 07章软件测试

    1.软件测试的目标 尽可能多地发现并排除软件中潜藏的错误,最终给用户一个高中质量的软件系统. 2.软件测试的定义 为了发现程序中的错误而执行程序的过程 3..软件测试的原则 ①所有测试都应追溯到需求 ...

  4. 【软件工具】软件测试

    今天小编带大家走进软件测试,这是一个非常重要的环节,在软件开发的一系列活动中,为了保证软件的可靠性,人们研究并使用了很多方法进行分析.设计及编码实现.但是由于软件产品本身是无形的.复杂的.知识密集的逻 ...

  5. 【软件工程】软件测试目标定义 黑盒测试、白盒测试

    记录 软件工程北大-软件测试技术课件 文章目录 著名的软件错误案例研究 1.迪斯尼的狮子王 2.美国航天局火星基地登陆,1999 3.爱国者导弹防御系统,1991 4.千年虫,大约1974 软件测试的 ...

  6. 广义的软件测试,软件测试的狭义论和广义论

    软件测试的狭义论和广义论 "法式测试是为了创造错误而履行法式的过程",实际是一个广义的概念,因为他感到测试是履行法式的过程,也就是传统意义上的测试--在代码完成后,经由过程运转法式 ...

  7. 软件测试概述、结构化测试

    一.软件测试的目的 是在最小的成本和最短的时间内,通过设计良好的测试规程和测试用例,系统地发现不同类别的错误. 二.软件测试的基本原则 设计好的测试用例.不可能进行穷举测试.尽早开展测试.重点测试.定 ...

  8. 软件工程结构化建模的方法和工具_2020年6月——北京大学《软件工程》笔记

    1软件工程概述 一.软件的定义 计算机系统种的程序及其文档. 程序:计算机任务的处理对象和处理规则的描述. 文档:为了便于理解程序所需要的阐明性资料. ●软件是无形的.不可见的逻辑实体 ●软件是设计开 ...

  9. 系统架构设计师(截图+做题思路+目录)

    目录 文章目录 目录 系统架构设计师考试介绍 计算机组成与体系结构 计算机体系结构分类-Flkynn CISC与RISC的区别 层次化存储结构 Cache 局部性原理 主存-分类 磁盘结构与参数 磁盘 ...

  10. 软件接口测试是什么?怎么测?

    软件测试是一条超级长的跑道,最好分阶段来跑:先入行,后精通.网上能看到很多软件测试的帖子,但能够准确分类详细介绍的并不多.正好最近有时间,就把我所了解的软件测试做一个小小总结,对你有帮助的话,记得点赞 ...

最新文章

  1. php xml 增删改查,PHP实现对xml进行简单的增删改查(CRUD)操作示例
  2. C#线程 在某一时间内,只有N个线程在并发执行,其余都在队列中的实现(转载)...
  3. 云图说 | 华为云医疗智能体,智联大健康,AI药物研发
  4. OpenShift 4 - 创建Service Mesh运行环境
  5. Linux操作系统各版本ISO镜像下载(包括oracle linux\redhat\centos\u
  6. 关闭win7 透明化效果 aero
  7. 什么是Git最好的视觉合并工具? [关闭]
  8. 《Linux内核分析》 第八节 进程的切换和系统的一般执行过程
  9. js登录界面使用ajax连接数据库,js用ajax连接数据库数据
  10. flask框架的使用
  11. Word插入脚注只占左下角一栏的方法
  12. cocos creator播放声音控制台显示Simulator: jsb: ERROR
  13. 如何解决苹果电脑(Macbook Pro)没有声音?
  14. 将bios中的boot mode 从uefi改为legacy之后,进不去bios
  15. h3c服务器开机无法自行进入系统,H3C服务器设置自启动
  16. 谈谈数据库里的时间戳
  17. 快速创建树 算法 treeCreate treeview
  18. BootLoader(U-Boot)启动过程记录
  19. nvm 安裝不同版本的node(詳細過程无图)
  20. jqu操作class 实现动态导航菜单

热门文章

  1. QCC3020 单地址量产项目 功耗数据 电流测试数据
  2. 利用昆仑通态触摸屏实现数据采集和逻辑判断的例子
  3. proteus 的使用
  4. myeclipse php插件phpeclipse安装及配置(插件式安装)
  5. (附源码)学生社团管理系统app 毕业设计 191850
  6. Ubuntu升级glibc
  7. linux定时器时间轮算法详解
  8. win10 更新后指纹不能使用
  9. 基于python的酒店管理系统_(完整版)新 基于web的酒店管理系统毕业论文
  10. 信息化建设项目前期方案编写1:设计要点