软件测试之所以在软件生命周期占有如此重要地位,是因为它贯穿了软件定义与开发的整个生命周期,是软件质量保证的重要手段。系统测试是软件发布之前不可或缺的重要测试之一,它是将通过集成测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际或者模拟运行(使用)环境下,对计算机系统进行一系列测试。系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方。因此,有效的开展系统测试可以尽可能多的找出程序中的错误,生产出高质量的软件产品。下面,从系统测试的组织、工作流程两个方面来介绍一下系统测试的应用。
从测试的组织来讲,一个好的组织结构,可以更好的发挥人员的能动性,使工作更有效率,也使工作的质量更高。目前,设置独立的软件测试部门成为越来越多的软件公司的共识,软件测试部门已成为和开发部一样作为一个重要的独立部门存在。测试部门通常由10-30人组成,一般配备如下角色:
测试项目经理。职责是安排和调度测试项目,监督和指导测试工作。
测试项目负责人。职责是负责整个测试工作,提供技术指导,获取适当的资源,制定基线,技术协调,确定测试计划。
测试分析员。职责是分析软件需求,确定测试内容,评估测试工作的有效性。
测试设计员。职责是确定测试方法,设计测试用例,确定测试用例的优先级,编写测试辅助软件,建立测试环境。
测试员。职责是执行测试、记录测试结果。
从系统测试的工作流程来讲,系统测试包括八项活动,分别为:项目启动、制定测试计划、测试需求分析、测试设计、测试执行、缺陷管理、测试结果评估、项目结束。
1、项目启动
当软件项目进入系统测试阶段后,测试项目经理指定一名团队成员为测试项目负责人,将项目分配给测试项目负责人,并与测试项目负责人明确测试的目的、范围、进度等项目的相关信息。同时,测试项目经理根据项目的规模进行资源规划,指定项目组成员,应包括测试分析员、测试设计员、测试员三种角色,其中,一个人可承担多个角色的工作,一个角色可由多个人承担。
测试项目负责人开始组织该项目组成员进行评测工作,首先制定测试计划。
2、制定测试计划
测试项目负责人接收项目材料,项目材料应包括被测软件的开发任务书或合同、软件需求、设计文档、安装程序等。测试负责人组织项目组成员分析项目材料,了解软件的性质、结构、功能等,确定测试应覆盖的范围及每一范围所要求的覆盖程度。
首先确定用于测试的资源要求,包括软件(如操作系统、编译软件、静态分析软件、测试数据产生软件、测试结果获取和处理软件、测试驱动软件等)、硬件(如计算机、设备接口等)、人员技能等。
然后通过分析项目材料,确定系统的功能、性能、状态、接口、数据结构、设计约束等内容和要求,从中确定需测试的软件特性。软件特性应从ISO/IEC 9126-1:2001Software engineering-Product quality-Part 1:Quality model定义的软件质量子特性角度出发,确定系统测试的软件特性。即,从适合性、准确性、互操作性、安全保密性、容错性、成熟性、易恢复性、易理解性、易学性、易操作性、吸引性、时间特性、资源利用性、易改变性、稳定性、易测试性、易分析性、适应性、易安装性、易替换性、共存性和依从性方面考虑。对具体的项目,可根据项目材料中的要求进行裁剪。
再确定测试需要的技术和方法,例如:测试数据生成与验证技术、测试数据输入技术、测试结果获取技术等;还需确定测试的结束条件,例如:所有软件缺陷得到处理、完成了测试计划和测试用例指定的测试工作、软件到了发布的截止日期等。
最后确定由资源和被测系统决定的系统测试活动的进度。通过集中收集到的测试信息,生成一份测试计划,项目组对此达成一致,由测试项目经理审核通过后,可按计划执行测试。
3、测试需求分析
该阶段工作包括软件需求分析、确定测试要点两部分,由测试分析员根据开发任务书或合同、软件需求、设计文档完成。
软件需求分析主要包括技术结构、功能结构、部署环境等整体概念的分析,还包括业务流程、功能规格、非功能需求等具体细节方面的分析。通过整体概念的分析,加深对软件的理解,以对测试要点确定、测试方法设计等工作有个整体指导思路;通过具体细节方面的分析,了解软件的具体实现方式、处理逻辑和相关约束。
确定测试要点是根据功能结构分析,确定所要测试的功能模块,根据每个功能模块的功能规格的分析,确定每个功能模块的测试要点。通过对软件业务背景的了解,并根据软件业务流程的分析,确定软件在总体流程上的测试要点。通过对软件非功能需求方面的分析,并结合软件的特点、应用环境等,确定软件在非功能方面的测试内容和要点。其中对于性能部分,可单独展开分析,以确定性能测试内容。
将以上分析形成文档,提交到测试项目负责人,审核通过后进行下一步工作。
从测试的组织来讲,一个好的组织结构,可以更好的发挥人员的能动性,使工作更有效率,也使工作的质量更高。目前,设置独立的软件测试部门成为越来越多的软件公司的共识,软件测试部门已成为和开发部一样作为一个重要的独立部门存在。测试部门通常由10-30人组成,一般配备如下角色:
测试项目经理。职责是安排和调度测试项目,监督和指导测试工作。
测试项目负责人。职责是负责整个测试工作,提供技术指导,获取适当的资源,制定基线,技术协调,确定测试计划。
测试分析员。职责是分析软件需求,确定测试内容,评估测试工作的有效性。
测试设计员。职责是确定测试方法,设计测试用例,确定测试用例的优先级,编写测试辅助软件,建立测试环境。
测试员。职责是执行测试、记录测试结果。
从系统测试的工作流程来讲,系统测试包括八项活动,分别为:项目启动、制定测试计划、测试需求分析、测试设计、测试执行、缺陷管理、测试结果评估、项目结束。
1、项目启动
当软件项目进入系统测试阶段后,测试项目经理指定一名团队成员为测试项目负责人,将项目分配给测试项目负责人,并与测试项目负责人明确测试的目的、范围、进度等项目的相关信息。同时,测试项目经理根据项目的规模进行资源规划,指定项目组成员,应包括测试分析员、测试设计员、测试员三种角色,其中,一个人可承担多个角色的工作,一个角色可由多个人承担。
测试项目负责人开始组织该项目组成员进行评测工作,首先制定测试计划。
2、制定测试计划
测试项目负责人接收项目材料,项目材料应包括被测软件的开发任务书或合同、软件需求、设计文档、安装程序等。测试负责人组织项目组成员分析项目材料,了解软件的性质、结构、功能等,确定测试应覆盖的范围及每一范围所要求的覆盖程度。
首先确定用于测试的资源要求,包括软件(如操作系统、编译软件、静态分析软件、测试数据产生软件、测试结果获取和处理软件、测试驱动软件等)、硬件(如计算机、设备接口等)、人员技能等。
然后通过分析项目材料,确定系统的功能、性能、状态、接口、数据结构、设计约束等内容和要求,从中确定需测试的软件特性。软件特性应从ISO/IEC 9126-1:2001Software engineering-Product quality-Part 1:Quality model定义的软件质量子特性角度出发,确定系统测试的软件特性。即,从适合性、准确性、互操作性、安全保密性、容错性、成熟性、易恢复性、易理解性、易学性、易操作性、吸引性、时间特性、资源利用性、易改变性、稳定性、易测试性、易分析性、适应性、易安装性、易替换性、共存性和依从性方面考虑。对具体的项目,可根据项目材料中的要求进行裁剪。
再确定测试需要的技术和方法,例如:测试数据生成与验证技术、测试数据输入技术、测试结果获取技术等;还需确定测试的结束条件,例如:所有软件缺陷得到处理、完成了测试计划和测试用例指定的测试工作、软件到了发布的截止日期等。
最后确定由资源和被测系统决定的系统测试活动的进度。通过集中收集到的测试信息,生成一份测试计划,项目组对此达成一致,由测试项目经理审核通过后,可按计划执行测试。
3、测试需求分析
该阶段工作包括软件需求分析、确定测试要点两部分,由测试分析员根据开发任务书或合同、软件需求、设计文档完成。
软件需求分析主要包括技术结构、功能结构、部署环境等整体概念的分析,还包括业务流程、功能规格、非功能需求等具体细节方面的分析。通过整体概念的分析,加深对软件的理解,以对测试要点确定、测试方法设计等工作有个整体指导思路;通过具体细节方面的分析,了解软件的具体实现方式、处理逻辑和相关约束。
确定测试要点是根据功能结构分析,确定所要测试的功能模块,根据每个功能模块的功能规格的分析,确定每个功能模块的测试要点。通过对软件业务背景的了解,并根据软件业务流程的分析,确定软件在总体流程上的测试要点。通过对软件非功能需求方面的分析,并结合软件的特点、应用环境等,确定软件在非功能方面的测试内容和要点。其中对于性能部分,可单独展开分析,以确定性能测试内容。
将以上分析形成文档,提交到测试项目负责人,审核通过后进行下一步工作。