3.1.4 基于RUP的测试过程模型
统一开发过程(Rational Unified Process,RUP)是RATIONAL公司的一款基于网络平台,以架构为中心,面向对象,用例驱动的迭代和增量开发过程模型,包括初始、细化、构造、移交四个阶段。每个阶段都由若干迭代周期构成,每个迭代周期都是一个微型瀑布模型,但随着项目进展所处阶段不同而有所不同。将软件测试过程活动与RUP模型结合,能够建立基于RUP的软件测试模型。
3.1.4.1 初始阶段
初始阶段旨在通过策划确定测试过程活动,定义测试需求,制定测试策略,确定测试资源,分析测试风险,编制测试大纲,使相关人员能够就软件测试生命周期目标及活动达成一致。该阶段的目标如下:
(1)确定软件范围及边界条件,包括关于可操作的概念、可接受的准则。
(2)识别软件系统的主要任务场景,以驱动系统的功能行为并对重要功能做出权衡。
(3)针对某个主要场景展示或演示其候选架构。
(4)对所需资源、时间等进行估算,对细化阶段进行评估。
基于软件开发过程的宏观变换模型,如果某次循环的初始阶段建立在上一循环的基础之上,那么整体测试策略、测试过程、测试方法就是上一循环的迭代。RUP初始阶段的测试活动如图3-7所示。
图3-7 RUP初始阶段的测试活动
3.1.4.2 细化阶段
细化阶段旨在分析问题域,建立基础架构,进行风险分析和评估,确定主要风险因素并进行排序,制定风险防控措施。RUP细化阶段的测试活动如图3-8所示。
图3-8 RUP细化阶段的测试活动
细化阶段的工作产品包括需求规格、软件架构描述、可执行架构原型、开发计划、用例模型等。该阶段,测试策划所需要素已全部具备,测试需求已明确,能够以此确定测试范围、测试级别、测试类型、测试项,确定每个测试项的测试方法及充分性条件,构建测试环境,确定质量控制,配置管理要求,编制测试大纲。
针对工作产品生成时间,逐一按序进行测试,检出错误,为后续测试尤其是系统测试和验收测试奠定基础。对于需求规格,通常以静态评审进行需求测试,检出需求缺陷,同时对修改情况实施跟踪和回归。
通常,将细化阶段划分为一至两次迭代,在迭代的最后,系统测试用例已经明确,以这些用例为基础,着手进行不同级别、不同类型的测试设计,如果采用自动化测试,尚需依据测试用例生成测试脚本,准备测试数据,到构造阶段形成产品后即可开展测试执行。
3.1.4.3 构造阶段
在构造阶段,通过持续集成构建,开发一个有效版本并确保其质量。构造阶段是测试活动最集中的阶段。软件构造是一个持续的过程,通常将构造阶段划分成多次迭代。每次迭代,都要按测试过程模型进行测试策划、测试设计、准备测试脚本和测试数据、执行测试,对发现的问题进行分析、处理、跟踪和回归,直至完成系统构造。所有迭代并非彼此孤立,后一次迭代通常会重用或采信前一次迭代的资产。
一次迭代结束之后的测试评估可以产生大量数据和经验,如测试用例设计的有效性、容易产生缺陷的模块及原因、测试领域知识等。在下一次迭代过程中,能够有的放矢,对测试资源进行合理调整。显而易见,根据测试重用原则,各次迭代中测试的工作量,尤其是测试用例设计的工作量逐步递减。RUP构造阶段的测试活动如图3-9所示。
图3-9 RUP构造阶段的测试活动
3.1.4.4 移交阶段
移交阶段是软件系统的验收交付阶段。RUP移交阶段的测试活动如图3-10所示。
此阶段,所有迭代结束,软件系统运行于实际使用环境,基于实际使用条件和场景,进行系统测试,验证系统的符合性及交付能力。这个阶段的测试可以是上线测试,也可以是鉴定测试,但其本质一样,都是为系统验收交付和状态鉴定提供支撑。
不同开发阶段,测试的对象及重点不同,测试活动需要一系列支撑过程,包括测试风险管理、测试环境准备、配置管理、人员管理、质量保证、计划管理等内容。
每个项目的特点、迭代划分、测试开销均不同。当然,RUP并非一成不变,它既是一个过程,也是一个产品,并且是一个可以根据项目特点和用户需求进行裁剪和定制的过程。迭代测试过程突出了迭代过程所具有的优点,可以更早地、全流程地检出错误,缓解风险,可以更容易地管理变更,可以更加有效地提高测试资产的重用率,可以更加有效地促进项目组在整个过程中不断学习,持续增强测试过程能力。
图3-10 RUP移交阶段的测试活动