软件测试流程研究
[摘要]软件测试是软件工程的一个重要部分,贯穿整个软件生命周期。测试是一项严谨的工作,随着当今软件的规模和复杂性日益增加,进行专业化高效软件测试的要求越来越迫切,挑战性极强。这里讲述的测试的执行者包括开发人员、测试人员以及参加验收测试的部分受众者。
[关键词]软件测试 需求分析 测试计划 集成测试
中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120078-01
一、测试策略
在执行测试之前需要做许多文档工作。因此,当项目提议一经被审批,测试工作即开始展开。
(一)需求分析阶段
1.需求调研。在软件生命周期的需求分析阶段,测试人员参与需求调研。从测试角度分析需求的可测试性,构思测试方法和准则。这也有助于更好的理解系统的需求。测试人员了解哪些部分需要重点测试,哪些部分不需要。这部分的工作有助于设计测试计划。
2.审查需求规格说明书。当系统分析员完成了需求分析,他(她)将提交需求规格说明书。测试人员根据在需求调研阶段获取的对需求的理解审查整个文档。检查文档是否覆盖了所有需求。需求规格说明书非常重要,是整个开发过程的基线。
(二)分析设计阶段
1.测试计划。一个典型的测试计划要包括对工作产品的最终工作流的详细理解。在测试过程中有三种类型的测试计划:系统测试计划,集成测试计划以及单元测试计划。测试计划写明怎样校验与保证软件产品符合设计文档和其他需求文档。一般的计划包含以下几点:测试怎样被实现、谁来做、测试什么、测试要花费多长时间、测试覆盖率是怎样的。
2.审查设计文档。在系统设计阶段,测试人员要理解系统是怎样被实现。这个阶段的开发文档包括概要设计、数据库设计、功能说明以及详细设计。测试人员审查这些文档,检查这些计划与设计是否合理。如果不合理,问题在哪里,怎样改进等等。
(三)开发阶段
当我们在计划测试时,我们需要将整个系统分解。对一个复杂的系统来说,它可以被分解成一些相对独立的子系统。正确的划分子系统可以降低测试的复杂性,减少重复与冗余,更加方便设计测试用例。设计测试用例是一项非常细致的工作。通常每个用例需要包括:序号和标题、用例说明、测试优先级、测试输入及测试步骤、期望输出、实际输出(当执行测试时,它被用来记录测试结果)。测试用例设计要考虑以下几点:覆盖率(要达到最大覆盖软件系统功能的功能点)、数量(一个多于半年的开发周期,用例不得低于4000)、使用管理工具软件。
(四)测试执行阶段
当以上的准备工作完成,系统开发也进入到了尾期。测试人员可以根据先前的测试计划和测试用例逐个实施测试。每一个独立的软件部分要接受单元测试。若干个部分组合起来接受集成测试。当所有的软件产品完成,系统测试是保证整个系统符合用户需求。当然,性能测试也是必不可少的,保证软件的各个部分满足需求的性能标准。
1.单元测试。单元测试一般都由程序员自己完成,可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。经常与单元测试联系起来的另外一些开发活动包括代码走读(Code review),静态分析(Static analysis)和动态分析(Dynamic analysis)。
2.集成测试。集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。
集成测试过程:制定集成测试计划,设计集成测试,实施集成测试,执行集成测试以及评估集成测试。以常用的自底向上方法的集成方案为例:
步骤一:按照概要设计规格说明,明确有哪些被测模块。在熟悉被测模块性质的基础上对被测模块进行分层,然后排出测试活动的先后关系,制定测试进度计划。
步骤二:在步骤一的基础上,按时间线序关系,将软件单元集成为模块,并测试在集成过程中出现的问题。这里,可能需要测试人员开发一些驱动模块来驱动集成活动中形成的被测模块。对于比较大的模块,可以先将其中的某几个软件单元集成为子模块,然后再集成为一个较大的模块。
步骤三:将各软件模块集成为子系统(或分系统)。检测各自子系统是否能正常工作。同样,可能需要测试人员开发少量的驱动模块来驱动被测子系统。
步骤四:将各子系统集成为最终用户系统,测试是否存在各分系统能否在最终用户系统中正常工作。
3.系统测试。系统测试是将已经确认的软件产品、计算机硬件、外设、网络等其他元素结合在一起,进行系统的各种安装测试、功能测试、确认测试等相结合的综合测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案。系统测试多用黑盒测试的方法。按照系统测试用例逐个实施,记录测试结果。
4.性能测试。性能测试在软件的质量保证中起着重要的作用,它包括的测试内容丰富多样。中国软件评测中心将性能测试概括为三个方面:应用在客户端性能的测试、应用在网络上性能的测试和应用在服务器端性能的测试。通常情况下,三方面有效、合理的结合,可以达到对系统性能全面的分析和瓶颈的预测。性能测试根据性能需求选择自动化测试工具。
5.验收测试。验收测试的目的是要对软件产品在目标用户的工作环境中做进一步的校对,确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。验收测试是部署软件之前的最后一个测试操作。事实上,软件开发人员不可能完全预见用户实际使用程序的情况。一个软件产品,可能拥有众多用户,不可能由每个用户验收,此时多采用称为α、β测试的过程,以期发现那些似乎只有最终用户才能发现的问题。α测试是指开发组织内部人员模拟各类用户行对即将发布的软件产品(称为α版本)进行测试,试图发现错误并修正。α测试的关键在于尽可能逼真地模拟实际运行环境和用户对软件产品的操作并尽最大努力涵盖所有可能的用户操作方式。经过α测试调整的软件产品称为β版本。紧随其后的β测试是指开发组织各方面的典型用户在日常工作中实际使用β版本,并要求用户报告异常情况、提出批评意见。然后开发再对β版本进行改错和完善。一般包括功能度、安全可靠性、易用性、可扩充性、兼容性、效率、资源占用率、用户文档八个方面。
二、测试完成
在整个测试过程中,需要有一个提交bug的工具,用来记录整个测试过程中发现的bug。测试完成后,还有一项重要的工作,即写测试报告。报告中的重要信息包括测试发现了多少问题、仍未被解决的问题、测试都做了哪些工作、花费了多长时间等等。这些都是为了使将来的测试工作能得到更好的改进,测试人员也应将几个月来的工作进行总结。测试报告也是考虑系统是否发布的一个重要因素。
作者简介:
时冬妮,女,山东文登人,研究方向:软件工程。
上一篇:仪器仪表自动化校检系统的组建