管理

系统测试的应用

Posted on 2011-04-25 14:15  lzhdim  阅读(10126)  评论(0)    收藏  举报

  软件测试之所以在软件生命周期占有如此重要地位,是因为它贯穿了软件定义与开发的整个生命周期,是软件质量保证的重要手段。系统测试是软件发布之前不可或缺的重要测试之一,它是将通过集成测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际或者模拟运行(使用)环境下,对计算机系统进行一系列测试。系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方。因此,有效的开展系统测试可以尽可能多的找出程序中的错误,生产出高质量的软件产品。下面,从系统测试的组织、工作流程两个方面来介绍一下系统测试的应用。

  从测试的组织来讲,一个好的组织结构,可以更好的发挥人员的能动性,使工作更有效率,也使工作的质量更高。目前,设置独立的软件测试部门成为越来越多的软件公司的共识,软件测试部门已成为和开发部一样作为一个重要的独立部门存在。测试部门通常由10-30人组成,一般配备如下角色:

  测试项目经理。职责是安排和调度测试项目,监督和指导测试工作。

  测试项目负责人。职责是负责整个测试工作,提供技术指导,获取适当的资源,制定基线,技术协调,确定测试计划。

  测试分析员。职责是分析软件需求,确定测试内容,评估测试工作的有效性。

  测试设计员。职责是确定测试方法,设计测试用例,确定测试用例的优先级,编写测试辅助软件,建立测试环境。

  测试员。职责是执行测试、记录测试结果。

  从系统测试的工作流程来讲,系统测试包括八项活动,分别为:项目启动、制定测试计划、测试需求分析、测试设计、测试执行、缺陷管理、测试结果评估、项目结束。

  1、项目启动

  当软件项目进入系统测试阶段后,测试项目经理指定一名团队成员为测试项目负责人,将项目分配给测试项目负责人,并与测试项目负责人明确测试的目的、范围、进度等项目的相关信息。同时,测试项目经理根据项目的规模进行资源规划,指定项目组成员,应包括测试分析员、测试设计员、测试员三种角色,其中,一个人可承担多个角色的工作,一个角色可由多个人承担。

  测试项目负责人开始组织该项目组成员进行评测工作,首先制定测试计划。

  2、制定测试计划

  测试项目负责人接收项目材料,项目材料应包括被测软件的开发任务书或合同、软件需求、设计文档、安装程序等。测试负责人组织项目组成员分析项目材料,了解软件的性质、结构、功能等,确定测试应覆盖的范围及每一范围所要求的覆盖程度。

  首先确定用于测试的资源要求,包括软件(如操作系统、编译软件、静态分析软件、测试数据产生软件、测试结果获取和处理软件、测试驱动软件等)、硬件(如计算机、设备接口等)、人员技能等。

  然后通过分析项目材料,确定系统的功能、性能、状态、接口、数据结构、设计约束等内容和要求,从中确定需测试的软件特性。软件特性应从ISO/IEC 9126-1:2001Software engineering-Product quality-Part 1:Quality model定义的软件质量子特性角度出发,确定系统测试的软件特性。即,从适合性、准确性、互操作性、安全保密性、容错性、成熟性、易恢复性、易理解性、易学性、易操作性、吸引性、时间特性、资源利用性、易改变性、稳定性、易测试性、易分析性、适应性、易安装性、易替换性、共存性和依从性方面考虑。对具体的项目,可根据项目材料中的要求进行裁剪。

  再确定测试需要的技术和方法,例如:测试数据生成与验证技术、测试数据输入技术、测试结果获取技术等;还需确定测试的结束条件,例如:所有软件缺陷得到处理、完成了测试计划和测试用例指定的测试工作、软件到了发布的截止日期等。

  最后确定由资源和被测系统决定的系统测试活动的进度。通过集中收集到的测试信息,生成一份测试计划,项目组对此达成一致,由测试项目经理审核通过后,可按计划执行测试。

  3、测试需求分析

  该阶段工作包括软件需求分析、确定测试要点两部分,由测试分析员根据开发任务书或合同、软件需求、设计文档完成。

  软件需求分析主要包括技术结构、功能结构、部署环境等整体概念的分析,还包括业务流程、功能规格、非功能需求等具体细节方面的分析。通过整体概念的分析,加深对软件的理解,以对测试要点确定、测试方法设计等工作有个整体指导思路;通过具体细节方面的分析,了解软件的具体实现方式、处理逻辑和相关约束。

  确定测试要点是根据功能结构分析,确定所要测试的功能模块,根据每个功能模块的功能规格的分析,确定每个功能模块的测试要点。通过对软件业务背景的了解,并根据软件业务流程的分析,确定软件在总体流程上的测试要点。通过对软件非功能需求方面的分析,并结合软件的特点、应用环境等,确定软件在非功能方面的测试内容和要点。其中对于性能部分,可单独展开分析,以确定性能测试内容。

  将以上分析形成文档,提交到测试项目负责人,审核通过后进行下一步工作。

 4、测试设计

  测试方法的设计分为三个层面,一是具体测试方法的设计,二是测试用例设计,三是测试流程的设计,由测试设计员完成。

  具体测试方法的设计是针对测试要点进行方法设计,每个测试要点基本对应一个或多个测试方法,以此生成软件测试方法。对于性能测试,则需要确定出测试执行方式,形成执行方案。

  测试用例设计是将测试要点中的测试方法进行细化,加入测试时使用的测试数据,描述出预计的测试结果,形成测试用例。一个测试用例基本对应一个测试要点,测试用例应采取相应的设计方法,例如等价类划分、边界值分析、错误推测法、因果图、判定表驱动法等方法。测试用例包括名称和标识、测试的初始化要求、操作过程、期望测试结果等要素。

  测试流程设计是明确测试用例之间的依赖关系、相关性,对测试执行的先后顺序做出整体安排。

  根据以上分析设计,生成测试用例,测试项目负责人审核通过进行下一步工作。

  5、测试执行

  测试设计员根据软件运行的环境要求,搭建测试环境。需确保所需的全部构件(硬件、软件、工具、数据等)都已实施并处于测试环境中,确保所有构件都处于正确的初始状态,可以开始测试。

  测试员执行测试用例,观察并如实记录测试过程、测试结果和发现的错误,填写测试记录;测试分析员根据每个测试用例的期望测试结果、实际测试结果和评价准则判定该测试用例是否通过,如果不通过,测试分析员分析情况,采取相应措施,例如:测试用例设计不合理,则需重新设计测试用例。对于性能测试,测试员准备测试脚本、执行方案、汇总结果,测试分析员对测试结果进行分析。

  当所有的测试用例都执行完毕,测试分析员根据测试的充分性要求和失效记录,确定测试工作是否充分,如果发现测试工作不足,采取相应措施,例如:补充测试,直到测试达到预期要求。

  未通过系统测试的软件,在更改之后,项目负责人组织人员对更改的软件单元、受更改影响的软件部件、软件配置项和系统进行回归测试。首先确定回归测试的测试范围、方法和进度,再确定回归测试用例,然后按照“测试执行”过程的要求执行回归测试,最后整理问题。根据测试的情况,可能需要反复进行回归测试,回归测试的结束条件应符合原测试计划中系统测试的结束条件,并且无新问题出现。

  6、缺陷管理

  测试分析员根据测试记录对测试中的问题进行整理、汇总,填写软件问题报告单,并提出修改建议,同时指出软件缺陷的影响,确定修改的优先顺序。严重性表示缺陷所造成的危害的恶劣程度,例如:可以划分为严重、较严重、一般、建议四个级别;优先级表示修复缺陷的重要程度与次序,例如:可以划分为最高优先级、次高优先级、中等优先级、最低优先级四个级别。

  软件问题报告单经测试项目负责人审核,并经测试项目经理评审后,提交给开发人员进行整改。开发人员将错误修复后,由测试负责人组织回归测试,确认已经修复后,关闭错误。

  7、测试结果评估

  测试项目负责人对系统测试的执行活动、测试记录、软件问题报告单进行分析评审。审查测试执行活动的有效性,测试结果的正确性和合理性,是否达到了测试目的,测试文档是否符合要求,确定是否达到了测试的完成标准和成功标准,并推荐适当的后续测试活动,例如:进行补充测试,增加新的测试用例,进行回归测试等。

  项目负责人安排人员编写系统测试报告,审核通过后,提交给测试项目经理,传达测试结果与测试建议。

  8、项目结束

  系统测试完成后形成的文档有:测试计划、软件测试需求分析、软件测试方法、测试用例、测试记录、软件问题报告单、系统测试报告,测试项目负责人将测试工作产品纳入软件项目的配置管理。

  以上对软件系统测试的组织、基本工作过程、方法,进行了归纳。系统测试的工作可以从项目启动、制定测试计划、测试需求分析、测试设计、测试执行、缺陷管理、测试结果评估、项目结束八个方面开展。有效的开展系统测试,可以发现软件中存在的问题,弥补软件的不足,找出在软件开发过程中容易忽略的质量漏洞,全面提升软件产品质量。

Copyright © 2000-2022 Lzhdim Technology Software All Rights Reserved