基于VS平台的单元测试

基于VS平台的单元测试

1. 参考链接

  1. VS 2019的单元测试

  2. 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.**添加–>新建项

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m9PkEmxd-1665975795507)(photos\unittest\1.png)]

​ **3.**测试—> 本机单元测试项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W3r8NrzS-1665975795509)(photos\unittest\2.png)]

​ **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.**开启调试:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hBOy5SiM-1665975795509)(photos\unittest\3.png)]

**3.**程序会在断点处暂停运行

**4.**查看代码覆盖率:

​ 点击测试—>分析代码覆盖率,随后会弹出代码覆盖率结果的弹窗

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zdtJ1BNx-1665975795510)(photos\unittest\4.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4kDW7ilV-1665975795510)(photos\unittest\5.png)]

5. 测试用例

​ 测试用例是一个文档,是执行的最小实体。测试用例包括输入、动作、时间和一个期望的结果。其目的是确定应用程序的某个特性是否可正常工作,并且达到程序所设计的结果,以便测试某个程序路径或核实是否满足某个特定需求。在进行测试用例设计前要全面了解被测试产品的功能、明确测试范围(特别是要明确哪些是不需要测试的)、具备基本的测试技术与方法等。测试用例设计一般要遵循正确性、全面性、连贯性、可判定性、可操作性。

测试方法有以下几种:

1、白盒法

白盒法又称结构化方法(结构测试)或逻辑覆盖法,其基本思想是把程序看作是路径的集合。这样,对程序的测试便转化为对程序中某些路径的测试,要设法让被测程序的“各处”均被执行到,使潜伏在程序每个角落的错误均有机会暴露出来。因此,白盒法实际上是一种选择通过指定路径的输入数据的分析方法。

2、测试覆盖率

采用白盒法可以用测试覆盖率作为测试彻底度的定量衡量标准。常用的覆盖率有:

(1)语句覆盖:要求设计足够的测试数据,使程序的每条语句都至少执行一次。

(2)判定覆盖(分支覆盖):使程序中的每个判定至少出现一次“真值”和一次假值”,即程序中的每个判定(分支)都至少要经过一次。

(3)条件覆盖:使判定中每个条件的所有可能的结果至少出现一次,并且使每条语句至少执行一次。

(4)判定条件覆盖:使判定覆盖和条件覆盖同时得到满足。

(5)多重条件覆盖:又称条件的组合覆盖,是使程序中每个判定中的条件的各种组合都至少取到一次,并且每条语句至少执行一次。

此外,还有诸如路径覆盖(程序中每条路径至少执行一次)、基本路径覆盖(循环次数只考虑小于等于一次所组成的程序路径,每条基本路径至少执行一次)等。为了获取测试覆盖率(不论是哪一种覆盖率)需要有测试工具的帮助,且需要花费人力与机时去做测试工作(设计测试用例、输入测试数据、进行统计计算等。

3、黑盒法

黑盒法又称为功能测试,是根据软件需求说明书上罗列的各项功能、性能指标,来构造测试用例的输入数据,实际执行被测软件,分析执行过程的行为与执行结果以便检查出被测软件的错误。在黑盒法测试中,测试者可以完全不关心程序的内部结构。可见,白盒法是一种逻辑驱动方法,而黑盒法是一种功能驱动方法。黑盒法是最常用的测试方法。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值