文章目录
基于VS平台的单元测试
1. 参考链接
- VS 2019的单元测试
- C++单元测试
2. 单元测试介绍
2.1 单元测试简介
所谓单元测试(unit testing),就是对软件中的最小单元进行检查和验证,其一般验证对象是一个函数或者一个类。
单元测试中单元的含义:一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里或C++里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。
2.2 单元测试的作用
- 确定自己的代码功能和逻辑的正确性;
- 发现问题并及早地改进一些不当的设计;
- 对于一些被依赖信很强的代码作修改时,确保逻辑的正确才能不影响其它模块的功能;
- 更好地管理和保存测试代码,以便下次代码修改后可方便地进行Debug;
2.3 单元测试设计流程
- 设计测试用例
- 执行测试
- 修正bug、完善实现函数。
3. 基于VS2013平台的C语言单元测试
3.1 单元测试工程创建流程与方法
因为VS平台无法生成C语言的测试项目,目前对于C语言而言使用单元测试最多的软件有 CuTest、 **CUnit **、 **Check **。
我是用C++来测试C语言程序。方法如下:
**1.**创建空工程–>添加.c文件和.h文件
正常编写自己的工程代码
**2.**添加–>新建项
**3.**测试—> 本机单元测试项目
**4.**配置:配置好头文件的位置(见包含目录)、引导库位置(见库目录)及其名字(见附加依赖项),同动态库的静态调用方法一样
**5.**修改测试工程中的unittest1.cpp文件,起到测试自己的工程的作用,测试方法如下:
在VS平台下生成的测试工程.cpp模块中TestMethod1为测试函数名,TEST_METHOD为VS提供的测试函数宏定义。
3.2 单元测试断言类
Assert为断言类,其提供了AreEqual、AreSame、AreNotEqual、AreNotSame、IsNull、IsNotNull、IsTrue、IsFalse等多个方法以供测试中进行断言
Assert::AreEqual() //测试指定的值是否相等,如果相等,则测试通过; AreSame() //用于验证指定的两个对象变量是指向相同的对象,否则认为是错误 AreNotSame() //用于验证指定的两个对象变量是指向不同的对象,否则认为是错误 Assert::IsTrue() //测试指定的条件是否为True,如果为True,则测试通过; Assert::IsFalse() //测试指定的条件是否为False,如果为False,则测试通过; Assert::IsNull() //测试指定的对象是否为空引用,如果为空,则测试通过; Assert::IsNotNull() //测试指定的对象是否为非空,如果不为空,则测试通过;
3.3 单元测试注意点
在c++程序中不能直接添加C语言头文件,在unittest1.cpp中添加C语言的头文件方法:
extern "C" { #include "max.h" }
4. 基于VS2013平台的单元测试调试方法
**1.**设置断点:
同正常的C语言程序一样,在行代码左边点击即可设置断点
**2.**开启调试:
**3.**程序会在断点处暂停运行
**4.**查看代码覆盖率:
点击测试—>分析代码覆盖率,随后会弹出代码覆盖率结果的弹窗
5. 测试用例
测试用例是一个文档,是执行的最小实体。测试用例包括输入、动作、时间和一个期望的结果。其目的是确定应用程序的某个特性是否可正常工作,并且达到程序所设计的结果,以便测试某个程序路径或核实是否满足某个特定需求。在进行测试用例设计前要全面了解被测试产品的功能、明确测试范围(特别是要明确哪些是不需要测试的)、具备基本的测试技术与方法等。测试用例设计一般要遵循正确性、全面性、连贯性、可判定性、可操作性。
测试方法有以下几种:
1、白盒法
白盒法又称结构化方法(结构测试)或逻辑覆盖法,其基本思想是把程序看作是路径的集合。这样,对程序的测试便转化为对程序中某些路径的测试,要设法让被测程序的“各处”均被执行到,使潜伏在程序每个角落的错误均有机会暴露出来。因此,白盒法实际上是一种选择通过指定路径的输入数据的分析方法。
2、测试覆盖率
采用白盒法可以用测试覆盖率作为测试彻底度的定量衡量标准。常用的覆盖率有:
(1)语句覆盖:要求设计足够的测试数据,使程序的每条语句都至少执行一次。
(2)判定覆盖(分支覆盖):使程序中的每个判定至少出现一次“真值”和一次假值”,即程序中的每个判定(分支)都至少要经过一次。
(3)条件覆盖:使判定中每个条件的所有可能的结果至少出现一次,并且使每条语句至少执行一次。
(4)判定条件覆盖:使判定覆盖和条件覆盖同时得到满足。
(5)多重条件覆盖:又称条件的组合覆盖,是使程序中每个判定中的条件的各种组合都至少取到一次,并且每条语句至少执行一次。
此外,还有诸如路径覆盖(程序中每条路径至少执行一次)、基本路径覆盖(循环次数只考虑小于等于一次所组成的程序路径,每条基本路径至少执行一次)等。为了获取测试覆盖率(不论是哪一种覆盖率)需要有测试工具的帮助,且需要花费人力与机时去做测试工作(设计测试用例、输入测试数据、进行统计计算等。
3、黑盒法
黑盒法又称为功能测试,是根据软件需求说明书上罗列的各项功能、性能指标,来构造测试用例的输入数据,实际执行被测软件,分析执行过程的行为与执行结果以便检查出被测软件的错误。在黑盒法测试中,测试者可以完全不关心程序的内部结构。可见,白盒法是一种逻辑驱动方法,而黑盒法是一种功能驱动方法。黑盒法是最常用的测试方法。
版权归原作者 几许。 所有, 如有侵权,请联系我们删除。