李长星 时 静
(西安石油大学电子工程学院,陕西 西安 710065)
软件测试作为保证软件质量的重要手段已经引起国内外越来越多的关注。软件测试目的是为了找到软件的错误和缺陷,在发现错误后,提供信息给软件开发人员,帮助分析错误原因,从而改正错误,达到预防错误的发生,减少软件开发费用的目的。狭义上讲,软件测试是对软件产品质量的检验和评价。它一方面检查软件产品质量中存在的质量问题,另一方面对产品质量进行客观的评价。测试可以发现尽可能多的缺陷,从而期望消灭缺陷来提高软件质量。
软件测试的目的决定了如何去组织测试。如果测试的目的是为了尽可能多地找出错误,那么测试就应该直接针对软件比较复杂的部分或是以前出错比较多的位置。如果测试目的是为了给最终用户提供具有一定可信度的质量评价,那么测试就应该直接针对在实际应用中会经常用到的商业假设。
测试只能证明缺陷存在,而不能证明缺陷不存在。测试的目标是想以最少的时间和人力系统地找出软件中潜在的各种错误和缺陷。测试的附带收获是,它能够证明软件的功能和性能与需求说明相符合。
需要指出:测试有助于提高软件的质量,但是提高软件的质量不能依赖于测试。如同考试时做完试卷后进行的检查有助于提高分数,但获得高分数不能依赖于答完试卷后的检查。
虽然软件的高质量依赖于初始的设计,对需求的把握,但是只有在测试过程中才能发现软件中存在的错误和缺陷,所以测试对软件的质量起着至关重要的作用。对一个软件而言,需求分析则是它的“先天期”,设计、编码则是“后天成长期”,测试的任务就是根据先天的特征更有效更合理的检验后天成长,并及时的指出错误和缺陷。所以,应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭,在软件开发中及早的引入软件测试,这样才能在开发过程中尽早发现和预防错误,提高软件的质量。
一个有效的测试流程可以找到更多的错误,节约更多的成本。在实践过程中,逐渐总结出了软件测试的生命周期:如图1所示
图1 软件测试的生命周期
软件测试贯穿于整个软件开发过程,而对于不同主题的开发模式,软件测试在其生命周期内的表现形式也有所 度控制、测试管理等环节的基础。用例分析主要包括下面几部分,参与者、用例、操作流程。就像类对应于对象一样,一个用例的实例就是使用场景,用例就是对场景进行抽象的总结。操作流是整个用例的核心,一般需要编写前置条件、后置条件、基本流程、扩展操作流。
一个系统的测试被划分为五个部分:测试计划、测试设计、测试开发、测试执行和测试评估。TestDirector是业界第一个基于Web的测试管理系统,它可以在公司组织内进行全球范围的协调。通过一个整体的应用系统中提供并集成了测试需求管理、测试计划、测试日程控制以及测试执行、缺陷跟踪等功能,TestDirector极大的加速测试过程。项目经理可以在TestDirector中查看存储的所有信息,包括测试需求、测试用例、测试脚本、测试报告以及BUG报告等等。需求人员根据需求在Test Director中及时建立测试需求,来指导测试用例的开发。测试人员直接在Test Director中编写测试用例,设计测试用例集,录入测试过程中发现的BUG。开发人员每天定时从Test Director中下载“属于”自己的BUG,并及时修改BUG的状态。发布人员则根据BUG状态来决定是否重新发布新版本并通知测试人员。
程序的需求驱动整个测试过程,Test Director的Web界面简化了这些需求管理过程,测试人员可以根据需求自动生成测试用例。提供一个直观机制将需求和测试用例、测试结果和报告的错误联系起来,从而确保完全的测试覆盖率。
测试计划为整个测试提供一个结构框架。Test Director的Test Plan Manager在测试计划期间,为测试小组提供一个关键要点和Web界面来协调团队间的沟通。在Test Plan Manager中,可以把各种类型的测试汇总在一个可折叠式目录树内,可以在一个目录下查询到所有的测试用例。Test Director还可以为每一项测试连加附属文件,如Word,Excel,HTML,用于更详尽的纪录每次测试用例。
一旦测试计划建立后,Test Director的测试实验室管理为测试日程制订提供一个基于Web的框架。在网络中任何一台主机空闲,测试可以彻夜执行于其上。Test Director的Smart Scheduler自动分辨是系统还是应用错误,然后将测试重新安排到网络上的其它机器。用Winrunner,Quick Test,LoadTest或LoadRunner来运行测试,无论成功与否,测试信息都会被自动汇集传送到Test Director的数据存储中心。同样,人工测试也以此方式运行。Test Director的BUG管理直接贯穿作用于测试的全过程,提供管理系统终端——终端的缺陷跟踪——从最初的问题发现到修改错误再到检验修改结果。Test Director基于浏览器的特征,使缺陷管理能让多个用户何时何地都可通过Web查询出错跟踪情况。利用缺陷管理,测试人员只需一个URL,就可汇报和更新错误,过滤整理错误列表并作趋势分析。
Winrunner是企业级自动化测试工具,能够自动捕获、检测和重复用户交互操作。它可以轻松创建测试、插入各种检查点、检验数据、运行测试并与TestDirector集成来分析测试结果。Winrunner中GUI Map分为两种模式,Global GUI Map File mode 和 GUI Map File per Test mode,区别在于前者可以为整个软件创建一个GUI map文件,或者为每个窗体创建一个GUI map文件,而后者在每次创建新的测试时自动创建相关的GUI map文件。风险系统中统一采用创建全局GUI map文件,优点是占用空间小,且效率高,修改方便。
虽然软件自动化测试在软件质量保证中正发挥着越来越重要的作用,但是目前国内有些单位部门的软件测试仍然没有实现较高程度的自动化,有些只是大量的手工测试和利用单一功能的测试工具进行少量自动化测试,也没有将大量的测试信息进行系统化的管理。登陆Bug依旧是用excel手动进行。这样既没有充分利用自动化测试工具,也不能很好地保证软件测试质量。
本次设计借助自动化测试工具建立一套软件自动化测试系统,以TestDirector管理为主线,在计划和执行部分引入自动测试工具,实现测试过程的自动化。用WinRunner实现自动测试。用项目测试系统验证测试的可用性。
测试需求的来源全部来自于需求用例,在实际开发中,一旦需求用例评审通过后,对应的测试需求会迅速被需求人员添加到TestDirector中,以保证随后测试计划、测试用例的顺利进行。
依赖于TestDirector的测试管理中,测试计划主要体现在对测试用例的设计和处理。测试用例是测试计划的重头戏,在整个SQA测试过程中也处于核心地位。测试用例是软件质量保证中最有价值的资产之一。Dianne L.Runnels(CQA,CSTE)描述一个好的测试用例所具有的特性:
1.精确性(Accurate)—— 测试计划内的测试内容
2.经济性(Economical)—— 不需要冗余的测试步骤
3.重用性(Reusable)—— 可以重复使用
4.追踪性(Traceable)—— 追踪需求
5.适当性(Appropriate)—— 对现有测试环境、测试人员适用
6.独立性(Self standing)—— 不依赖于其它测试用例和设计者
7.自清洁性(Self cleaning)—— 测例执行完后的状态与执行前系统状态保持一致(含数据库)
测试用例完成之后,就能够根据测例的步骤来开发测试脚本。由于TestDirector本身并不提供开发测试脚本的功能,但它可以与其它测试工具很好的集成,因此项目测试系统中采用自动化测试工具Winrunner来开发测试脚本。除了TestDirector提供的接口为项目系统的测试开发带来很大便利之外,Winrunner本身的易用性和灵活性也使得项目系统测试脚本开发效率大大提高。实际开发中,我们利用Winrunner首先根据测试用例步骤来录制脚本,然后回放,对不能运行的地方编辑测试指令,一般只需少量修改便可以完成整个脚本。
在测试脚本开发完成后,就可以利用TestDirector来执行测试。可以看出,在测试执行完毕,会出现两种可能情况:正常结束、异常结束。反映在TD中,则对应执行完毕的两种状态:Passed、Failed。Passed说明和预期结果相吻合,Failed则说明有相关检查点出现错误或者测试脚本抛出异常而无法进行下去。测试执行安排好之后,在TestDirector的Test Lab面板中可以直接发送测试指令,既可以选中某一个测例来执行,也可以执行整个测例集。如图2所示
项目测试系统中依赖TestDirector进行测试管理,合理采用TestDirector的需求管理、测试计划、测试执行、缺陷管理功能,并结合自动化测试工具Winrunner,大大提高了测试工作效率,加速了测试过程。TestDirector的Web界面简化了需求管理的流程,Test Plan Manager为测试小组提供了一个关键要点和Web界面来协调团队之间的沟通,Test Director的测试实验室管理为测试日程制订提供一个基于Web的框架,并且可以监控正在运行的测试脚本。Test Director的缺陷管理贯穿于测试的全过程,测试人员可以方便的通过各种途径添加BUG。在测试的任一环节,Test Director都提供图表来帮助分析数据信息。面对软件开发规模的增大、复杂程度的增加,软件测试工作的组织与管理将会越来越重要,而依赖于工具的测试管理也会发挥越来越大的作用。
[1] 《软件测试》(第2版)Paul.C.Jorgensen 著,韩柯、杜旭涛 译,机械工业出版社.
[2] 张海藩 软件工程导论[M] 北京:清华大学出版社,2001.126-129.
[3] 《软件工程:实践者的研究方法》(第5版)Roger S.Pressman著,梅宏 译,机械工业出版社.
[4] 《Web测试指南》Lydia Ash 著,李昂、王海峰、黄江海 译,机械工业出版社.
[5] 《软件工程思想》 林锐 著.
[6] 《软件测试过程改进》Edward Kit 著,李新华、陈丽容、马立群 译,机械工业出版社.
[7] 《Test Director Introduce》Mercury Interactive Corp.
[8] 《WinRunner User Guide 2nd》Mercury Interactive Corp.
[9] 《Web Test User Guide》 Mercury Interactive Corp.