第2章 系统测试计划
系统测试是指将已集成好的软件系统作为计算机系统的一个元素,与计算机硬件、外设、支持软件、数据和人员等其他元素结合在一起,在实际运行环境下对计算机系统进行一系列的组装测试和确认测试。系统测试应该按照测试计划进行,其输入、输出和其他动态运行行为应该与软件规约进行对比。下面详细讲解如何编写系统测试计划。
2.1 系统测试过程回顾
如前所述,测试可分为单元测试、集成测试、系统测试、验收测试等。每个测试阶段又包含测试计划、测试设计、测试实现与测试执行这4个活动。
2.1.1 软件测试生命周期
软件工程中有软件生命周期,它是指软件按照什么样的过程进行研发的。同样,测试行业中也存在软件测试生命周期的说法,它是指一个测试是如何完成的,像测试计划→测试设计→测试实现→测试执行就是一个典型的软件测试生命周期。当然,不是所有的公司都采用这种测试生命周期,这些活动不仅可以串行,还可以并行。也就是说,可以同时进行测试计划、测试设计、测试实现和测试执行。有的公司采用的测试生命周期更简单,只分为测试用例设计以及测试用例执行。一般来说,一个公司采用的测试生命周期越复杂,说明这个公司的测试越成熟,这与能力成熟度模型(Capability Maturity Model,CMM)的等级划分类似。
2.1.2 系统测试的4个阶段
系统测试是针对软件产品系统进行的测试,在总体上包含功能测试和非功能测试两部分。功能测试是验证软件系统功能是否符合软件系统的需求规格的测试过程;而非功能测试则是在验证软件系统是否符合软件系统规格的基础上,进一步验证测试系统的容错性、稳定性、异常处理能力、输入处理能力、可用性、性能等非功能方面的测试过程。
与单元测试和集成测试相比,系统测试的侧重点在于考查功能的需求规格符合性、功能设计或实现的用户满意度,以及系统性能的稳定性。系统测试属于黑盒测试的范畴。
具体的系统测试过程与软件组织的具体过程定义相关。通常系统测试过程可以分为以下几个阶段。
(1)系统测试计划阶段:完成系统测试计划。
在软件产品的需求规格确定后,制订系统测试的计划。系统测试的设计、实现和执行阶段的具体内容由系统测试计划来确定。
(2)系统测试设计阶段:完成系统测试方案。
在软件设计(概要)阶段,在软件概要设计文档确定后,就进行系统测试的设计,输出系统测试方案。
(3)系统测试实现阶段:完成系统测试用例、脚本和规程。
按照系统测试方案,完成系统测试涉及的工作,包括编写系统测试用例、测试规程文档,以及进行系统测试工具和测试代码的设计与开发工作。
(4)系统测试执行阶段:执行系统测试用例,发现问题并回归测试,提交系统测试日报和系统测试报告。
在集成测试完成后,再执行系统测试。在执行系统测试的过程中,发现缺陷问题,并提交给开发人员。对当前发现的所有缺陷进行分析,当确认软件系统达到设计要求时(在项目计划中约定的风险范围内),结束系统测试过程。
2.1.3 系统测试计划与其他计划
在系统测试中制订的系统测试计划和其他的计划有什么联系吗?
在实际工作中会接触到的计划主要有项目计划、软件开发计划、软件测试计划、系统测试计划、集成测试计划、单元测试计划等,这些计划之间是有先后顺序以及依赖关系的。
这些计划的先后顺序如下。
(1)项目经理根据项目要求制订项目计划,对整个项目进行规划,定义项目里程碑点,估算项目的收益等。
(2)开发经理根据项目计划来制订软件开发计划(Software Development Plan,SDP),对整个开发工作进行规划。
(3)测试经理根据项目计划来执行软件测试计划,也称为软件验证与确认计划(Software Verification and Validation Plan,SVVP),对整个测试工作进行规划,比如,考虑是否做集成测试等。
(4)测试经理根据软件测试计划,自己或者安排测试组人员来制订系统测试计划、集成测试计划以及单元测试计划。
其中,项目计划、软件开发计划和软件测试计划都属于管理文档,而系统测试计划、集成测试计划和单元测试计划属于技术文档。
2.1.4 系统测试中的角色及职责
在软件系统测试过程中,需要以下角色的参与。这些角色在系统测试的4个阶段的职责描述如下。
开发代表:开发代表是软件研发的负责人,负责软件的开发和测试。在系统测试的各阶段中,开发代表的职责是满足系统测试资源(包括人、工具等)的需求,对系统测试结果进行监督,以及签发评审通过后的系统测试文档。
软件质量保证(Software Quality Assurance,SQA)人员:软件质量由过程、组织、技术这3个方面来决定,软件测试只从技术方面来保证软件的质量,而SQA人员是从软件过程方面来保证软件的质量。在系统测试过程中,SQA人员负责保证系统测试过程中的质量,参与相关文档的评审,对整个系统测试过程进行审计。
配置管理组:在系统测试过程中要对系统测试文档以及测试代码等相关配置项进行配置管理,以保证系统测试过程中相关系统测试文档的一致性和完整性。
软件开发组:在系统测试过程的各阶段中,软件开发组的主要职责是提供测试所需的相关开发文档,参与各测试文档的评审活动,保证系统测试文档的质量,响应系统测试需求,跟踪并解决系统测试过程中发现的问题。
在系统测试计划阶段,提供软件开发计划,参与系统测试计划的评审。
在系统测试设计和实现阶段,提供软件功能需求规格、需求分析、测试建议,响应系统测试需求,并参与软件系统测试方案的评审。
在系统测试执行阶段,跟踪并解决软件测试项目组的缺陷问题报告单,参与系统测试报告的评审。
软件测试组:通常测试组又分测试经理、高级测试工程师、测试工程师。在系统测试的各阶段中,测试经理需要制订测试计划,提供技术指导,获取所需的资源,整理测试报告,管理并监督计划的实施;高级测试工程师需要确定系统测试方案,设计系统测试用例,确定系统测试规程;测试工程师需要执行测试,记录测试日志,撰写测试报告。软件测试组有以下职责。
在系统测试计划阶段,制定系统测试计划并组织评审。
在系统测试设计和实现阶段,制定软件系统测试方案并组织评审,按照软件系统测试方案来实现测试用例、测试代码和测试工具等设计,撰写测试规程。
在系统测试执行阶段,执行系统测试,反馈并跟踪缺陷问题报告单,完成系统测试报告并组织评审,输出测试案例、总结等经验文档。
系统分析组:在系统测试阶段提出系统测试需求,对测试需求进行跟踪,对软件系统可测性进行分析,确定系统测试的对象、范围和方法。
测试组织活动开展较好的企业中通常会设置测试系统工程师(Testing System Engineer,TSE)角色,TSE属于系统分析组,在软件开发前期就参与需求分析工作,系统分析组中关于可测试性需求等方面的职责由TSE完成。TSE提出的可测试性需求在需求分析阶段就纳入了软件的需求统一管理。TSE的职责主要是在软件测试中承担测试分析、自动化架构设计等工作,并指导测试组完成测试设计及执行。
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。