在软件测试中谈:单元测试浅析
软件测试是保证软件产品质量的重要手段之一。它是测量、评估软件产品特点和能力的活动。现在,国内一些软件企业对于软件测试的重视程度还很不够,认为测试工作非常简单,只是简单地操作所测的软件产品而已。这种错误的思想严重影响了国内软件质量,应该引起我们的高度重视。
软件测试阶段可以分为若干个小的阶段,阶段的划分有多种,我现在按流程顺序将其分为四个阶段:
· 单元测试:由项目小组完成
· 集成测试:由项目小组完成
· 系统测试:由专业测试小组完成
· 交接测试:用户和开发商共同完成。
测试的四个阶段完全逆向检测了软件开发的各个阶段。单元测试主要是测试程序代码,集成测试主要是对设计的检测,系统测试主要测试了软件的功能,交接测试主要是对用户需求的一种检测。但是每个测试阶段仍要对其它测试阶段的测试内容加以测试,只是测试重点不同。
在这篇文章中,我只对单元测试流程加以阐述,而不涉及具体的测试方法。关于测试方法(如:使用手工测试还是自动测试)若有机会将在其它文章中进行阐述。
在单元测试前,先让我们明白以下几个问题,这可以使我们对单元测试更加清晰。
· 单元测试的目标: 确保模块被正确地编码
· 由谁去做: 通常由程序人员测试
· 怎样去测试: 功能测试可以用黑匣测试方法,代码测试可用白匣测试方法
· 记录: 通常没有记录
我们在清楚以上问题后就可以编写测试用例了。测试用例是输入、执行条件和一个特殊目标所开发的预期结果集合。它按测试目的不同可分为以下几种类型:
· 需求测试用例:测试是否符合需求规范
· 设计测试用例:测试是否符合系统逻辑结构
· 代码测试用例:测试代码的逻辑结构和使用的数据
需求测试用例通常是按照需求执行的功能逐条地编写输入数据和期望输出。一个好的需求用例是可以用少量的测试用例就能够覆盖所有的程序功能。
设计测试用例检测的是代码和设计是否完全相符。是对底层设计和基本结构上的测试。设计测试用例可以涉及到需求测试用例没有覆盖到的代码空间(例如界面的设计)。
代码测试用例是基于运行软件和数据结构上的。它要保证可以覆盖所有的程序分支、最小的语句和输出。
以上三种用例所用的数据又可分为正常数据、边缘数据和错误数据。
· 正常数据:在测试中所用的正常数据的量是最大的,而且也是最关键的。少量的测试数据不能完全覆盖需求,但我们要从中提取出一些具有高度代表性的数据作为测试数据,以减少测试时间。
· 边缘数据:边缘测试是界于正常数据和错误数据之间的一种数据。它可以针对某一种编程语言、编程环境或特定的数据库而专门设定。例如若使用SQL Server数据库,则可把SQL Server关键字(如:';AS;Join等)设为边缘数据。其它边缘数据还有:HTML的HTML;<>等关键字以及空格、@、负数、超长字符等。边缘数据要靠测试人员的丰富经验来制定。
· 错误数据:显而易见,错误数据就是编写与程序输入规范不符的数据从而检测输入筛选、错误处理等程序的分支。
由于执行测试用例的数据量巨大以及还要进行回归测试,所以可以考虑使用自动测试工具,但提取测试数据仍要依靠编写测试用例人员的经验。并且,我们还要注意到自动测试也许不能找到程序中所有错误,手动测试所找到的错误会比自动测试所找到的要多。
有了测试用例,我们就可以进行测试了吧?许多公司也是这样做的,但在这里我建议大家最好要先进行代码的审议。通过代码审议找到的错误可以比测试用例测试所能找到的错误更加深入,并且发现错误的时间也比测试用例要早。代码审议要以代码标准(根各公司具体情况自行制定)为依据,一般情况下要检查以下几点:
· 代码风格和规则审核
· 程序设计和结构的审核
· 业务逻辑的审核
文章来源于领测软件测试网 https://www.ltesting.net/