前言:软件测试是保证软件产品质量的重要手段之一。它是测量、评估软件产品特点和能力的活动。现在,国内一些软件企业对于软件测试的重视程度还很不够,认为测试工作非常简单,只是简单地操作所测的软件产品而已。这种错误的思想严重影响了国内软件质量,应该引起我们的高度重视。
一、软件测试
软件测试阶段可以分为若干个小的阶段,阶段的划分有多种,我现在按流程顺序将其分为四个阶段:
- 单元测试:由项目小组完成
- 集成测试:由项目小组完成
- 系统测试:由专业测试小组完成
- 交接测试:用户和开发商共同完成
测试的四个阶段完全逆向检测了软件开发的各个阶段。单元测试主要是测试程序代码,集成测试主要是对设计的检测,系统测试主要测试了软件的功能,交接测试主要是对用户需求的一种检测。但是每个测试阶段仍要对其它测试阶段的测试内容加以测试,只是测试重点不同。
二、单元测试
在这篇文章中,笔者只对单元测试流程加以阐述,而不涉及具体的测试方法。
在现代软件开发过程中,单元测试成为与编写代码同步进行的开发活动。单元测试能够提高程序员对程序的信心,保证程序的质量,加快软件开发速度,使程序易于维护。不管测试先行还是测试后行,没有单元测试那是绝对不行的。
在单元测试前,先让我们明白以下几个问题,这可以使我们对单元测试更加清晰。
- 单元测试的目标: 确保模块被正确地编码
- 由谁去做: 通常由程序人员测试
- 怎样去测试: 功能测试可以用黑匣测试方法,代码测试可用白匣测试方法
- 什么时候可以停止:当程序员感到代码没有缺陷时
- 记录: 通常没有记录
1、单元测试概述
单元测试是对软件基本组成单元/模块进行的测试,又称为模块测试。基本单元/模块可以是函数、类实例、方法、存储过程,也可以是任何具有明确功能、规格定义、明确接口定义、并且其规模是一般比较小的程序代码模块的组合体。
单元测试的重点在于发现程序设计或实现的逻辑错误,使问题及早暴露,便于问题的定位解决。
2、单元测试的目的
- 验证代码是与设计符合的
- 跟踪需求和设计的实现
- 发现设计和需求中存在的错误
- 发现在编码过程中引入的错误
3、单元测试所遵循的原则
对于测试来说,我们应当尽早地和不断地进行软件测试。对于单元测试来说我们需要遵循一定的单元测试规范,根据公司CMM规范中的规定,我们列出了一些原则但是这些并不是足够的。
- 仅对全新的代码或修改过的代码进行单元测试
- 被测试的对象为实现一组相关功能的代码(一个或一组函数)
- 单元测试根据单元测试方案进行,排除测试的随意性
- 项目管理者保证测试用例经过审核
- 当测试用例的测试结果与预期结果不一致时,单元测试的执行人员需记录实际的测试结果
- 对被测试单元需达到的一定的代码覆盖率要求
- 当程序进行了修改,由测试执行人员执行回归测试以保证对发现错误的修改没有引入新的错误
4、单元测试的步骤
单元测试过程包括计划、设计、执行、评审等几个步骤,分别如下所述。
①计划:确定测试需求,制订测试策略,确定测试所用资源(如人员、设备等),创建测试任务的时间表。这部分工作 可以简单描述。
②设计:设计单元测试模型,制订测试方案,制订具体的测试用例,创建可重用的测试脚本。
③执行:执行测试用例,对单元模块进行测试,验证测试的结果并记录测试过程中出现的缺陷。
④评审:对单元测试的结果进行评审。主要进行测试完备性评估。
由于单元模块往往不是一个独立的程序,在设计时,要考虑单元模块同其他模块的联系,用桩模块和驱动模块模拟所测模块相联系的其他模块。由被测试模块、驱动模块和桩模块共同构成可运行的程序。
驱动模块和桩模块的定义如下所述。
驱动模块:相当于被测试模块的主程序,用于接收数据或产生数据,把数据传递给被测试模块,再输出实测结果,或把实测结果同预期结果进行比对。
桩模块:也称为存根模块。用以代替被测试模块调用的子模块。桩模块可以用做数据处理,不需要把模块的所有功能都模拟,可以简单地返回一个值。
5、单元测试的意义
- 方便分析学习源代码。把单元测试可以作为分析、学习编码的工具,编码不仅是原创开发人员编写的,而且是需要给人阅读,共享给后续开发人员进行维护修改的,所以学习理解原创人员代码,对于正确维护修改意义很大。可以通过单元测试,对自己不理解的代码部分进行分析、调试,很有帮助。
- 方便跟踪测试源代码。单元测试用例,可以作为指导后续开发人员理解编码的工具,有许多开发人员抱怨前期开发人员遗留代码缺少注释,可理解性差,自己又没有有效方法切入修改代码,因为如果在没有理解别人代码的时候,贸然修改或者注释别人的代码,可能会更增加代码的复杂度、难理解性。单元测试用例则与源代码是分开管理的,白盒测试,可以针对源代码的方法进行debug跟踪测试,并可以根据自己测试后的理解,写出自己的理解注释,而不影响源代码。
结语:
一屋不扫,何以扫天下。开发中,我们自己的代码都不能保证功能的正确性,那么还有什么效率可言呢?做再多的任务,写再多的代码也只不过是在搭鸡窝,做着机器一样的重复的工作。
IT界有一个原则,DRY原则 —— Don't Repeat Yourself !只有通过对自己的工作不断的检查,不断的测试,才能不断的突破,不断的脱颖而出,你才能不断的提高!