首页 > 范文大全 > 正文

软件测试全过程

开篇:润墨网以专业的文秘视角,为您筛选了一篇软件测试全过程范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

测试项目的启动、规划以及测试项目需求分析往往是很多软件服务型企业的薄弱环节所在。本文围绕该难点问题,重点讨论了这两个阶段所应进行的项目活动以及相关工作流程。

测试项目启动与规划

一般地,项目启动过程组包括两个过程:即制定项目章程和制定项目初步范围说明书;而项目规划过程组则会综合项目的成本、范围、时间、质量、风险、人力、沟通、采购等因素制定项目计划,该项目计划将用于指导项目的实际执行。

对任一项目而言,有三个文件是非常重要的。即:项目章程、项目范围说明书,项目管理计划。这三个文件均产生于项目启动阶段和项目规划阶段。其中项目章程被认为是三大文件之首(项目章程、项目范围说明书,项目管理计划)。一个项目,不论大小,都应该有项目章程。

项目章程由项目发起人(Sponsor)签发,自签发之日起,项目经理即获得法定权力。

项目经理在获得法定权力之后的第一动作是制定项目初步范围说明书。为了制定这份文档,他/她将广泛地收集来自项目发起人的需求,以便在项目计划正式编制之前,与项目发起人在项目范围的理解上达成一致。项目初步范围说明书还将在后续项目范围规划过程中进一步细化,并融入项目客户、执行组织、项目干系人等各方面需求,进而形成完整的项目范围说明书。

项目初步范围说明书编制完成以后,项目经理将进入项目计划编制阶段。这个阶段将会涉及项目管理方方面面的规划、计划。有经验的项目经理在此过程中总是会认真听取和吸收团队骨干成员和同行们的经验意见,从而形成广为认可和接受的规划、计划。

经过权衡和必要的调整,这些文档最终将被集成到一个完整的项目管理计划中。项目管理计划经由项目发起人、高级管理层审批以后,即可生效。

此后,项目经理将召开项目开工会议,宣布项目正式开始进入执行阶段。

项目启动阶段的项目章程和项目初步范围说明书,也可以体现在分包或采购合同中。这在软件外包服务型企业中最为常见。

通常,伴随合同到达项目经理手中的还有项目建议书,项目建议书由项目发起人制定,内容和项目章程中有关产品、可交付成果的描述大致类似,此外,还应包括对项目经理成功完成此项目的一些指导性建议。项目经理进行综合考虑,与相关干系人磋商,在项目团队相关专家的帮助下,制定出合适的项目管理计划。

上面讨论的是一般项目启动过程组与规划过程组。具体到测试项目的启动与规划,工作内容也是类似的。读者朋友请根据所在测试项目的特点做适当调整。需要交待清楚的是测试项目启动与规划过程组有可能与其他六个过程组(测试需求分析、测试设计、测试执行、测试项目收尾、测试交付、测试项目监控与调整)在项目实施过程中有频繁的迭代关系(参见图1)。

比如,规划过程组有可能在整个项目生命期内都有更新和完善。

对于整周期软件开发项目的测试而言,上述过程组的内容会有较大的差异。

比如:项目章程将重点关注开发,而不会过多讨论测试相关的工作。对于这一类型的软件测试,笔者建议在任命开发项目经理的同时,由项目经理[适用于项目型或强矩阵组织]或高层经理[适用于弱矩阵或职能型组织]指定项目测试经理。测试经理应根据项目章程、项目初步范围说明书和项目建议书尽早开始软件测试相关规划和设计,并和项目经理沟通、协调,以将一些重要的信息及时反映给项目经理,从而使项目计划能较好地支持测试工作的开展。

软件测试需求分析

理论上,软件测试需求是源于软件需求的,而软件需求又是源于用户需求的。然而,有些时候在分析软件测试需求时并不存在已经文档化的软件需求规格说明。

在这种情况下,要分析软件测试需求可能仍然需要追溯到用户需求。由于后者涉及需求工程的专门知识,本文略过不做细述;这里重点讨论前者。在一个规范化的软件需求规格说明中,用户需求是由更高层次的业务需求(体现在项目章程、SOW、项目建议书等文档中)细化而成,它通常描述了用户使用该软件系统会涉及到的不同的执行路径、工作逻辑以及所预期的处理结果。在UML表示方法中,用户需求通常通过Use Case来进行刻画。

接下来,用户需求将进一步转化为三类需求项,即功能需求项、性能需求项以及约束性需求项。这三类需求项就是通常意义上的软件需求项。管理这三类需求项的矩阵被称为需求矩阵。

理论上,在测试资源许可并且确有必要的前提下,测试的使命将是验证和确认待开发的软件及其中间产品满足需求矩阵各个需求项。(注意:为了简化讨论,这里笔者没有把需求的验证与确认纳入进来,实际上这部分工作也是软件测试工作的重要组成部分。)

然而,几乎没有几个公司或开发团队能够提供这类测试所需的诸多的资源,此时,一种可行的策略是将待测试的软件需求项按照优先关系进行排序,以帮助测试经理决策在既定资源的情况下,应该如何统筹安排测试工作。

软件需求项是测试需求分析的起点,这一点在工程实践中并不绝对。对于不同阶段的测试(这里主要指单元测试、集成测试、系统测试和验收测试,暂不考虑验证技术和需求和设计的确认),测试需求开发所涉及的工作内容和方法都会略有差异。例如,如果是一个验收测试,那么,除了个别的需求需要做进一步明确外,几乎可以将测试需求等同于用户需求和业务需求(由于该类测试是以客户为主体,因此并不需要向下追溯到软件需求)。

又如,如果是系统测试,除了需要对不具备可测试性的软件需求项进一步开发外,几乎可以对软件需求和测试需求不做区分。

再如,如果是集成测试,测试需求应该从概要设计规格说明中导出。如果尚不存在概要设计规格说明,就需要从软件需求规格说明出发,与软件设计人员协同工作,具体定出构成系统的各个模块、子系统、分系统的功能、性能、约束性条件以及相互接口关系。根据协同工作的结果,开发出对应的测试需求。

最后,如果是单元测试,测试需求应该从详细设计规格说明中导出。如果项目不存在概要设计规格说明,就需要从概要设计规格说明出发,与软件设计人员明确每个模块内部的对象属性与方法以及对象与对象间的通信关系。根据此结果,进一步开发相应的测试需求。相应地,上一节所说的对软件需求项进行优先关系排序在实践中要变通地理解为对测试需求项进行优先关系排序。

读者朋友可能会问,对于整周期的开发项目,以上论述是否意味着测试需求开发的依据文档是否要根据测试所处的阶段而不断调整呢?是的,笔者认为这也是完全必要的。我们不能指望软件需求项能够描述清楚集成或单元测试阶段的测试需求。测试需求的开发总是有赖于相应层次的软件规格说明书

只有在开发团队不能提供的情况下才确有必要循着“详细设计规格说明->概要设计规格说明->软件需求规格说明->用户需求规格说明->项目章程、合同、项目建议书、工作说明书等”的顺序往前追溯。通常相关依据文档的可测试性越好,测试需求开发所需要的工作量越少。

除了对软件需求项、测试需求项做优先关系排序、对不具备可测试性或不确定的需求进一步细化、明确化之外,测试需求开发阶段的工作还包括分析各测试需求项之间可能的时间关系排序。哪些测试需求项应该先测,哪些可以延后,那些是可以并行等等,都需要在测试需求开发阶段一并分析清楚。

此外,需求分析过程组还将涉及测试需求的管理。这一部分工作包括测试需求制定依据获得、测试需求评审与确认、测试需求变更管理等内容。其中,“测试需求制定依据获得”是指获取产生测试需求所需的原始文档和信息、制定判定和筛选测试需求的原则及依据、明确各测试需求项优先关系排序的依据等等;“测试需求评审与确认”是指测试团队就形成测试需求项与客户代表、同行、管理层、团队骨干人员、项目发起人等Stakeholder进行沟通、确认的过程;“测试需求变更管理”是指对于测试需求的变更应通过“变更控制委员会”(CCB)进行统一控制。事实上,不管是测试服务型企业还是产品开发型企业,都应将测试需求作为一个重要的配置项。[在纯测试项目中测试需求作为一个配置项其地位甚至等同于项目范围说明书]。

以上笔者结合工程实践,对软件测试项目的启动规划与需求分析做了一个概要的介绍和说明。请读者朋友结合本公司的特点对这里提到的相关流程做进一步裁剪和细化。