软件测试实用技术与常用模板——自动化实训

6.5 自动化实训

本章前面介绍了单元测试的目的、单元测试的主要任务几单元测试的步骤,了解了单元测试的这些基本点之后,如何才能使用能够自动化测试工具进行单元测试。

软件测试实用技术与常用模板——自动化实训

软件测试实用技术与常用模板——自动化实训

在学习这些内容之前我们需要了解如下问题:

•自动测试在单元测试中是否适用。

•如何选择合适的单元自动化测试工具。

•如何使用单元自动化工具。

•使用自动化工具进行单元测试需要注意哪些问题。

•自动化单元测试的重点工作有哪些及如何解决。

在下面的小节中我们将会一一解决这些问题。

6.5.1选择适用的单元测试工具

任何软件都可以进行人工测试,但是进行人工测试存在一些问题,例如:回归性问题、 效率问题、覆盖率问题、数据可重用性问题。当然还有其他一些可能会影响开发进度和工作质量的问题,在此不做讨论。

工具的出现就是为了提高工作效率及质量,好的工具是我们的好助手。如何选择适用 的单元测试工具是本节将要讨论的问题。

首先来了解一下使用自动化工具进行单元测试的优点。

1) 自动化:节省了时间,免去了重复的操作。

2) 测试数据重用性:多用于回归测试,也可用于相同功能点的测试数据的准备工作中。

3) 测试的可控性:完全可以按测试计划来控制单元测试的进度,可以选择在合适的时间,使用合适的方法及数据来进行单元测试。

选择单元测试自动化工具时,需要了解测试环境、待测系统类型、开发语言等。例如:

1) 对于基于Java语言开发的软件(包括C/S及B/S架构的软件),我们可以选择免费 开源的JUnit测试工具来进行测试。JUnit用于编写和运行可重复的测试。

2) 对于基于C++语言开发的软件,我们可以选择使用C++Test进行测试。C++ Test 是Pamsoft针对C/C++的一款自动化测试工具。C++Test支持编码策略增强、静态分析、 全面代码走查、单元与组件的测试,为用户提供一个实用的方法来确保C/C++代码按预期运行。

3) 对于基于微软的C#.net框架开发的软件系统,可以使用.net Unit测试工具来测试。.net Unit是基于NUnit系列的单元测试软件之一,有兴趣的读者可查阅相关资料来了 解它。

单元测试工具种类繁多,在此不一一列举。在选择单元测试工具时,应根据实际情况来进行选择,要考虑资金、测试进度等因素。

6.5.2自动化单元测试中需要注意的问题

任何测试的执行都需要按照测试计划来操作,测试计划可以有效预防计划的风险保障计划的顺利实施。执行自动化单元测试的相关人员需要注意如下几点问题:

1) 根据项目开发计划及测试计划来进行测试工作。

2) 开发人员要知道单元测试的目标。

3) 没有测试经验的程序员应主动向有经验的前辈学习。

4) 要掌握测试工具的使用,并举一反三学习同类的其他测试工具的使用。

5) 要走出开发人员不进行测试工作的误区。

6.5.3自动化单元测试的工作重点

下面将大致介绍一些使用自动化进行单元测试的工作重点。

1.单元测试中单元模块的选择

单元测试是基于源码的白盒测试,如何有效地使用测试工具进行单元测试是测试私 中需要特别注意的问题。不同于人工测试,自动化测试的执行需要消耗计算机系统资源 如果一次性执行大量测试,不便于测试的记录及执行。所以推荐以类为最小单元模块进行 单元测试。

2.测试用例数据的准备

任何测试用例数据的准备工作都是一个令人头疼的问题,进行白盒测试时一般都需要根据路径、边界值、编码流程来准备测试用例数据。假如所选择的测试工具能够自动生成测试用例,那么推荐使用工具自动生成测试用例,再在其基础上进行编辑,强化测试脚本。

6.5.4自动化单元测试案例

在6.5.2节中,我们介绍了选择适用的工具的一些情况,了解了一些单元测试工具的现状。从本节开始,我们将以手机信息管理系统为例来讲解如何使用自动化测试工具进行单元测试。

首先介绍本次测试的环境,如表6-4所示。

软件测试实用技术与常用模板——自动化实训

所使用的测试模型基于VC++ 6.0 IDE开发环境、使用C++语言进行开发,所用到的数据库为Access2003,我们选择的自动化测试工具为C++ Test。

为了讲述方便,本次测试只针对添加管理员模块中的一部分代码进行测试。

首先打开C++ Test的主界面,它与大多数Windows桌面应用程序一样,主要由菜单栏,工具栏、主窗口及状态栏组成,如图6-2所示。

软件测试实用技术与常用模板——自动化实训

接着使用File菜单下的New project来新建一个工程,当然也可以选择载入原来已经存在的C++Test工程。新建完成后会出现选择工程类型窗口,如图6-3所示,所以在此选择创建空工程,或者基于VC++6.0、C++.Net及C++.Net2003的工程。根据手机信息管理系统的情况,我们选择使用VC++6.0工程,然后加载工程。

软件测试实用技术与常用模板——自动化实训

单击OK按钮即可把文件加载进来,然后就可以依据测试计划来进行测试了。表6-5所示为本次测试的详细说明。

软件测试实用技术与常用模板——自动化实训

在进行测试的时候注意,推荐以单个文件为基准,亦未见中的类为单元模块进行测试。原因是使用C++Test进行测试的测试工作量非常大,如果某个工程非常庞大那么在测试过程中可能会出现某些问题,如系统资源不够用、产生死锁、需要进行异常处理操作等。 因此建议逐个文件进行测试,实时观察记录测试中出现的异常。

在工程目录窗口中选择要进行测试的文件, 单击工具栏中的软件测试实用技术与常用模板——自动化实训按钮就可以开始测试。当然, C++ Test为我们提供的不仅仅是进行单元测试的 功能,因此可以在

软件测试实用技术与常用模板——自动化实训

软件测试实用技术与常用模板——自动化实训右边的小箭头中选择需要 进行的测试,图6-4所示为本次自动化单元测试 的单元模块。此处我们按照C++Test默认的测 试项来展开测试。

软件测试实用技术与常用模板——自动化实训

开始测试后,C++Test会为我们自动进行 单元测试、覆盖率测试及代码规范检查。需要特 别提到的一点是,C++Test会为我们自动创建 测试用例,省去了开发人员最为头疼的问题,如 图6-5所示。

软件测试实用技术与常用模板——自动化实训

在执行完测试后,可以在主窗口中编辑测试 用例及查看测试用例的执行情况,也可以自行添 加或删除测试用例,在测试用例配置选项中即可 更改配置,如图6-6所示。

软件测试实用技术与常用模板——自动化实训

下面来看-个C++Test在单元测试中为我们生成的测试用例在添加管理员模块的 Recordset 15类中的 HRESULT AddNew( const_variant_t&,const_variant_t&)函数进行测试时,C++Test为我们自动生成了几个测试用例,图6-7所示为测试用例及执行结果。

软件测试实用技术与常用模板——自动化实训

软件测试实用技术与常用模板——自动化实训

软件测试实用技术与常用模板——自动化实训

软件测试实用技术与常用模板——自动化实训

从结果中可以看到C++ Test为本单元模块准备了 9个测试点,共准备了277个测试用例并执行了这些测试用例,其中通过的测试用例为209个,失败的测试用例4个,错误的测试用例为14个。由此可以看出使用工具进行测试的优越性,假如进行了人工测试,准备这些测试数据就是一项庞大的工作。

相信有了如此方便的测试工具,开发人员就不会为单元测试而头疼了,所以在资金条件允许的情况下,建议使用自动化工具来进行测试,改变单元测试的现状。

至此,如何进行单元测试已经基本上讲解完毕。本书附赠电子资料中提供手机信息管理系统源码,想进行测试验证的读者可以自行进行试验。

●作者李龙,山东织雀信息科技有限公司负责人,织雀教育首席讲师,中国民主同盟盟员,北京人文大学云测学院院长、高工,国内软件测试“川模型”的提出者,全国大学生软件测试大赛评审委员会专家,致力于软件测试人才培养


分享到:


相關文章: