七、全生命周期管理
软件的生命周期包括:需求、设计、开发、测试、运维。而为了测试整体质量,测试团队需要在参与每个生命周期的环节,而不局限于仅仅是测试阶段,为了避免形式主义,每个环节都应该有一定的产出。这种方式也经常被称为 “测试前后延”。
7.1、需求阶段
该阶段测试就需要介入,主要的目的是为了了解客户最原始最基本的需求,也同时促使测试团队了解业务。同时在此阶段,功能要摸清测试中的一些关键因素,如渠道列表、基本数据需求、业务前后依赖关系,业务重要程度,关联系统列表,最最重要的,要协助业务人员梳理确认业务规则,并系统详细的进行规则编号,这是设计测试案例的重要依据,否则案例充分性无从谈起。而非功能团队在此阶段要主导业务部门梳理非功能需求,将一些模糊性性能要求尽可能的进行量化,如业务人员说这个交易需要反映很快,那么多快算是快,0.1 秒还是 2 秒,要引导其进行量化。
7.2、设计阶段
功能在此阶段要分析系统上下文关系图,基本环境需求,用户详细岗位角色,系统规则等,并要在此阶段编制测试方案,着手开始准备测试环境和数据等相关工作。非功能测试在此阶段要明确掌握系统架构,并对重要的技术手段如流控机制、负载均衡策略、数据库备份策略等进行分析确认,并着手编制方案。
7.3、开发阶段
在开发阶段,功能测试要开始编制测试范围和测试案例,并要组织行之有效的评审等质量保证环节工作,非功能测试则要开始着手准备脚本,非功能测试环境数据等。而此时从保证系统质量的角度来看,开发阶段是测试中最重要的一个阶段。
在开发阶段除了要进行 fortify、gtest 这些常规的代码扫描外,还要进行详细的单元测试,如使用 java 语言,则可以用集成了 junit 功能的产品进行,而可是话的执行结果分析,可以有效查看是否有代码未进行测试覆盖,同时,junit 等工具只能保证代码能够走到,但是处理逻辑是否正确,是否返回了预期结果,则必须在单元测试阶段进行严格的把关,否则单元测试就会流于形式。建议由开发组长在进行代码 review 的时候,同步审核单元测试案例,以保证测试效果。
7.4、测试阶段
测试阶段是测试中心的核心职责工作阶段,该阶段可以分为单元测试(时间上与开发阶段并行)、应用组装、用户验收、版本准生产验收共 4 个大的阶段,每个阶段都有各自阶段的详细测试目标与测试技术手段,这里不再详细论述。
7.5、运维阶段
很多公司测试在过了测试阶段之后,就不再关心,最多是生产出了问题后通报相应的开发和测试团队。但运维阶段至关重要,测试需要在此阶段多进行跟踪,并在有条件情况下,参与一部分系统运维工作,特别是非功能测试,在参与之后,能更加准确掌握系统各支交易在生产上的表现和压力情况,更好的获取性能测试指标。功能测试则可以在此阶段发现生产上出现的生产问题,是因为何种原因导致了缺陷逃逸,并依此进行改进测试方法,丰富测试案例库,不断改进测试质量。
通过从需求到运维阶段的测试参与,形成闭环结构,可以不断深入项目,提高系统测试质量。