李转运+吴长中+唐桂林
摘 要:软件测试是软件工程的重要组成部分,是保证软件质量和提高软件可靠性的重要手段。随着软件程序的规模和复杂度不断地增加,软件测试的工作量也显得愈加艰巨,在软件开发过程中占据的位置也更为重要。本文首先回顾了软件测试的发展变化,介绍了软件测试的主要方法、类型以及发展阶段,然后介绍了两款自动化测试工具QTP和Loadrunner。最后总结了自动化测试是软件测试的发展趋向。
关键词:软件测试;手机测试;软件质量
一、引言
随着软件规模的增大,软件的复杂程度也越来越大,与其他系统的接口不断增多,导致软件开发中出现错误或缺陷的机会越来越多,市场对软件质量重要性的认识逐渐增强。1983年,在IEEE提出的软件工程标准术语中给软件测试下的定义是:“使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。”IEEE Std829-1998进一步明确软件测试是用于检测当前软件与实际设计需求间的差异的过程,具体包括了测试用例(test case,TC)集、测试过程集以及两者的组合。IEEE Std829-2008将软件测试延伸到整个软件开发生命周期中,指出软件测试是给定条件下对系统或组件的执行,以及对结果进行观察或记录的行为。
二、软件测试技术概述
软件测试在软件生命周期中横跨两个阶段,通常在编写出每一个模块之后就需要对它做必要的测试(称为单元测试)。编码和单元测试属于软件生命周期中的同一个阶段。在结束这个阶段后对软件系统还要进行各种综合测试,如集成测试、系统测试、性能测试和配置测试,这是软件生命周期的另一个独立阶段,即测试阶段。软件测试的原则应把“尽早和不断地进行软件测试”作为软件开发者的座右铭,实践证明,单元测试能够尽早发现问题,减少后期测试的错误量。经验表明,测试后程序残存的错误数目与该程序中已发现的错误数目或检错率成正比。
1.软件测试的主要方法
(1)黑箱测试(black-box testing),也称黑盒测试,是软件测试方法,测试应用程序的功能,而不是其内部结构或运作。测试者不需具备应用程序的代码、内部结构和编程语言的专门知识。测试者只需知道什么是系统应该做的事,即当键入一个特定的输入,可得到一定的输出。测试案例是依应用系统应该做的功能,照规范、规格或要求等设计。测试者选择有效输入和无效输入来验证是否正确输出。此测试方法可适合大部分的软件测试,如单元测试(unit testing)、集成测试(integration testing)以及系统测试(system testing)。(2)白箱测试(white-box testing,又称透明盒测试glass box testing、结构测试structural testing等)是一个测试软件的方法,测试应用程序的内部结构或运作,而不是测试应用程序的功能(即黑箱测试)。在白箱测试时,以编程语言的角度来设计测试案例。测试者输入数据验证数据流在程序中的流动路径,并确定适当的输出,类似测试电路中的节点。白箱测试可以应用于单元测试(unit testing)、集成测试(integration testing)和系统的软件测试流程,可测试在集成过程中每一单元之间的路径,或者主系统跟子系统中的测试。尽管这种测试的方法可以发现许多的错误或问题,它可能无法检测未使用部分的规范。
2.软件测试的主要类型
(1)功能测试——按照测试软件的各个功能划分进行有条理的测试。在功能测试部分要保证测试项覆盖所有功能和各种功能条件组合。(2)系统测试——对一个完整的软件以用户的角度来进行测试。系统测试和功能测试的区别是,系统测试利用的所有测试数据和测试的方法都要模拟成和用户的实际使用环境完全一样,测试的软件也是经过系统集成以后的完整软件系统,而不是在功能测试阶段利用的每个功能模块单独编译后生成的可执行程序。(3)极限值测试——对软件在各种特殊条件、特殊环境下能否正常运行和软件的性能进行测试。特殊条件一般指的是软件规定的最大值、最小值以及在超过最大、最小值条件下的测试。特殊环境一般指的是软件运行的机器处于CPU高负荷或是网络高负荷状态下的测试,根据软件的不同,特殊环境也有不同。(4)性能测试——对软件性能的评价。简单地说,软件性能衡量的是软件具有的响应及时度能力。因此,性能测试是采用测试手段对软件的响应及时性进行评价的一种方式。根据软件的不同类型,性能测试的侧重点也不同。(5)压力测试。压力测试常常和性能测试相混淆。它们的主要不同点是,压力测试要求进行超过规定性能指标的测试。如一个网站设计容量是100个人同时点击,压力测试就要是采用120个同时点击的条件测试。压力测试的通常判断准则:系统能够恢复,压力过程中不要有明显性能下降。
3.软件测试的主要阶段
(1)单元测试是对软件组成单元进行测试,其目的是检验软件基本组成单位的正确性,测试的对象是软件设计的最小单位——模块。(2)集成测试也称综合测试、组装测试、联合测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。其主要目的是检查软件单位之间的接口是否正确,集成测试的对象是已经经过单元测试的模块。(3)系统测试主要包括功能测试、界面测试、可靠性测试、易用性测试、性能测试。功能测试主要针对包括功能可用性、功能实现程度(功能流程和业务流程、数据处理和业务数据处理)方面的测试。(4)回归测试指在软件维护阶段,为了检测代码修改而引入的错误所进行的测试活动。回归测试是软件维护阶段的重要工作,有研究表明,回归测试带来的耗费占软件生命周期的1/3总费用以上。与普通的测试不同,在回归测试过程开始的时候,测试者有一个完整的测试用例集可供使用,因此,如何根据代码的修改情况对已有测试用例集进行有效的复用是回归测试研究的重要方向。此外,回归测试的研究方向还涉及自动化工具,面向对象回归测试,测试用例优先级,回归测试用例补充生成等。
三、主要测试工具
软件测试工具是通过一些工具能够使软件的一些简单问题直观地显示在读者的面前,这样能使测试人员更好地找出软件错误所在。软件测试工具分为自动化软件测试工具和测试管理工具。一个好的软件测试工具和测试管理工具结合起来使用将会使软件测试效率大大提高。这里主要介绍以下两种测试工具:
QTP是一个B/S系统的自动化功能测试的利器,是软件程序测试工具。Mercury的自动化功能测试软件QuickTest Professional,可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重用的特点。Mercury QuickTest Pro 是一款先进的自动化测试解决方案,用于创建功能和回归测试。它自动捕获、验证和重放用户的交互行为。Mercury QuickTest Pro为每一个重要软件应用和环境提供功能和回归测试自动化的行业最佳解决方案。
LoadRunner是一种预测系统行为和性能的工业标准级负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。LoadRunner 是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。LoadRunner的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助人们更快地查找和发现问题。此外,它还能支持广泛的协议和技术,为特殊环境提供特殊的解决方案。
四、总结
软件测试在软件质量保证活动中越来越发挥着重要的作用。然而,软件测试是一项费时、费力并且单调乏味的活动,测试人员需要设计、执行、分析大量的测试用例。将自动化引入软件测试领域能有效地减轻人员的劳动强度,提高测试的效率和质量,从而节省软件开发的成本,提高软件的质量。随着软件产业的发展,软件产品的质量控制与质量管理正逐渐成为软件企业生存与发展的核心。
参考文献:
[1]杜丽洁.基于QTP自动化测试框架的开发与应用[D].武汉:武汉理工大学,2012.
[2]郝炜.性能测试工具LoadRunner介绍[J].电脑知识与技术,2008(17):36-40.