关于质量保障体系建设的探讨

2020-10-09 11:04:16 浏览数 (1)

“本文源于在微信群发起关于质量保障体系的探讨,在探讨中,发现九里的观点非常有借鉴意义,故经授权转载此文章”

随着新技术的不断涌现,如虚拟技术,云计算,软件即服务(SaaS)等,软件开发的复杂性和规模也日益增加,同时伴随着企业自身发展过程中的整合,并购,以及由此带来的跨区域管理,这一切使得企业在质量管理面临着严峻的挑战和考验,主要表现在以下几个方面:

l 在组织级内,各个部门各自为战,项目质量控制过程,方法,技术各自不同,没有可重用的共同实践,持续不断的上演救火场景,导致质量成本不断增加;

l 技术和经验在组织内部零散,缺乏有效手段和机制进行沉淀,从而引发人员流失带来的经验的流失,给企业增加巨大的无形成本;

l 当前存在的技术配置满足不了将来业务发展的需要,同时缺乏精益求精的机制在组织内部进行技术改善和积累;

l 专业化的人员匮乏,造成无法同时进行多个客户项目的支持,从而失去市场良机;

基于我司在项目过程中经历了上述的种种问题,并在解决过程中形成了一套自己的质量管理解决方案 - 测试卓越中心TCoE(Test Center of Excellence)。


1.测试卓越中心

首先,我们来看一下什么是卓越中心CoE(Center of Excellence),这个概念最初来自于杰克韦尔奇在通用电器的实践,其目的是通过整合组织内的优势资源,加强内部协作,促进问题的解决,形成一致的最佳实践,以提高市场的响应速度,推动企业的经营增量发展。

在软件产品的开发过程中,将这种追求卓越的思想运用在质量管理上,就形成了测试卓越中心TCoE(Test Center of Excellence),它是一种企业级的质量管理平台,集中了专家,技术,工具,过程,经验,标准等资源,其根本目标就是追求品质,降低成本,提高生产力,增强企业市场竞争力。

TCoE为组织定义了高效的测试框架,能够从短期和长期方面帮助企业提高收益,主要有下面几点:

l 成本降低

通过优化资源配置,建立专业知识库,能够帮助企业提高生产效率,缩短工作周期,节约成本,同时在项目实施过程中,通过专家组在各个关键环节的审核能够避免或减少不必要的返工,能够帮助项目满足项目进度和预算的需求,以及减少后期的维护成本;

l 效率提高

通过共享专家的经验和采用统一的流程,能在组织级别上减少不必要的中间环节和开销,通过在组织内全面推广项目实践的工具和自动化技术,进而提高整个组织的效率;

l 质量成熟度

通过在组织范围内,定义和实施标准的流程,准则,指南等管理机制,有效的对风险进行控制,同时采取了度量的手段,使得整个过程可控,提高了企业测试能力成熟度。

l 客户满意度

通过在项目中采取专家团队,能够有效降低项目风险,同时能改善测试的覆盖率,改善了项目质量,进而提高了客户满意度。


2.TCoE模型

下面我们分别从功能和服务类别两个方面来看看测试卓越中心的组成和范围。

首先,从功能组成上来说,主要包括过程改善,经验积累,项目实践和知识管理四部分,如下图所示:

其次,从提供的服务类别来划分,主要包括过程卓越中心,团队卓越中心,自动化卓越中心和工具卓越中心,如下图所示:

下面对我将从TCoE提供的服务内容出发,对其的使用范围和主要活动进行阐述。

2.1 过程卓越中心

  • 范围

1. 过程定义,开发及维护;

2. 过程依从性审核;

3. 沟通管理机制定义;

4. 验收标准和指南;

5. 文档模板,包括资源,测试,进度跟踪等;

6. 持续的过程改进;

  • 主要的活动:

1. 审核当前过程,统一并标准化,持续改善;

2. 建立实用的操作指南并定义良好的沟通机制;

3. 建立集中的一致的测试框架;

4. 建立可操作的度量框架;

5. 建立系统培训计划,并确保培训的实施质量;

2.1 团队卓越中心

  • 范围:

1. 项目资源配置及优化;

2. 业务技能范围识别和能力开发;

3. 知识管理和积累;

4. 顺畅的沟通机制和业绩评估体系;

5. 人员测试能力评估;

  • 主要的活动:

1. 建立测试专家组织机构;

2. 建立对内和对外的项目合作模式;

3. 构建资源的缓冲池,贮备开发不同技能的资源以满足不同项目的需要;

4. 建立团队测试技能的度量和能力开发策略;

5. 制定系统培训流程;

6. KPI指标的识别和定义;

7. 构建知识资产仓库;

2.3 技术卓越中心

  • 范围:

1. 功能测试,包括功能,系统,验收测试等

2. 非功能测试,包括性能,压力,稳定性测试等;

3. 测试自动化框架,自动化设计和实现;

4. 前沿测试技术的探索和实践;

  • 主要的活动:

1. 定义功能,非功能测试自动化需求;

2. 定义脚本编写标准和操作指南;

3. 建立测试自动化ROI评估体系;

4. 构造可重用的自动化测试技术模型;

5. 提供技术培训和项目支持;

6. 学习并实践先进的测试技术,如基于风险的测试,探索测试等

2.4 工具卓越中心

  • 范围:

1. 测试管理工具:包括过程,事务,信息管理等;

2. 测试自动化工具:包括功能,性能,压力,稳定性等;

  • 主要的活动:

1. 工具需求识别并选择相关的工具;

2. 工具的使用效率及优化,包括进行二次开发等;

3. 工具的培训和技术支持;


3.TCoE实践

接下来,介绍一下如何在实际的工作中开展测试卓越中心TCoE的具体活动,主要实施策略如下:

l 整合组织内的优势资源,集中于一个项目进行指导,总结经验形成最佳实践指南;

l 取得经验后,在其他的项目中进行推广,使得整个组织都能够得到运用,通过在项目中的不断总结和完善,来进一步的促进实践的成熟,这将更好的帮助每一个项目提升专业化水平,提高品质。

具体的实施分为下面三个阶段。

3.1 专家团队

首先是建立专家团队,专家团队是TCoE的核心,是推动TCoE的实施和改善的主要力量。

团队的结构采取协会的模式,即有专人负责牵头进行组织,协调,其内部成员可以采取专职或者复用各个开发团队或者测试团队的专家,使得资源能够得到最大化的利用。

团队建立的主要步骤:

1. 明确组织的质量目标和TCoE的职能,确定具体的负责人;

2. 识别当前主要业务所需要的技能范围和专业程度;

3. 分析当前人员的技能和经验;

4. 选择相关的业务专家和技术专家组成专家团队,如下图:

从上图中,我们对主要的角色进行定义:

l 测试架构师:

n 主要负责标准,过程,技术,工具的选择和整合以确保整体的测试效率;

n 定义测试框架和模板,并为项目提供技术等的咨询服务;

l 测试经理:

n 负责管理测试中心的运营,包括人力资源和预算等;

n 负责问题的协调和解决;

n 负责团队的建设和技术规划;

l 资深测试工程师:

n 持续进行测试改善,以提高测试流程效率和测试技术的覆盖率;

n 提供测试技术培训服务;

l 测试自动化工程师

n 选择相关的测试技术来提高自动化测试效率;

n 开发测试脚本或工具来提高测试效率;

n 负责工具的培训和在组织内的推广;

l 业务专家

n 精通专业领域内的业务标准,协助开发测试需求和标准;

n 为测试提供咨询和建议以提高测试深度和广度;

l 项目测试主管

n 负责测试资源和测试进度分配和跟踪;

n 管理可重用的测试组件,包括测试计划,用例,数据,进度,脚本等;

以上,为核心专家团队成员大致组成,另外,在项目开展过程中需要包括配置管理专家,质量保证专家,测试员等人员的积极协助。

3.2 系统培训

培训是实施的前提,借助培训这个方式,在团队内部和外部统一认识,在项目之间鼓励交流、学习,同时,采取相应的激励机制,从而使员工之间、部门之间相互学习,相互影响,积极面临的各种挑战,建立自我完善的改善机制,使得组织的知识能力能够自我升级,进而将技术和能力转化为企业的竞争能力,相关的主要的活动如下:

l 标准化过程培训:学习TCOE的过程定义和操作指南;

l 技术研讨会:打造学习氛围,建立学习类型团队,定义技术培训/交流机制;

l 技能开发:从企业的核心业务出发,识别当前的关键技能,并对其进行逐级分解,找出当前的薄弱环节,列出需要改善的点并展开相关的讨论和学习来不断提高,这是将来获得市场竞争力的关键;

3.3 知识平台

知识管理是软件企业成熟度很重要的一个组成部分,它是企业获得竞争力的源泉,通过建立一个强有力的信息化平台,能够有效对组织的各种成果物进行管理,能够对取得的经验和能力进行沉淀,并在此基础不断的完善和提高,同时,借助这个平台,能够使得经验,资源等信息能够在组织的各个部门和项目之间进行舒畅的传播,加强项目和部门的协作和配合,主要有以下几方面:

l 经验管理

n 测试标准,标准化的流程,准则,文档模板等;

n 技术培训,工具培训等;

n 项目经验,项目的最佳实践和最差的实践;

l 项目成果物管理

l 测试需求,测试计划,测试用例,测试报告等;

l 测试自动化脚本,测试结果等;

l 缺陷管理;

l 人员管理

n 人员技能管理;

n 人员的目标管理;

l 项目问题交流的平台;

4.项目实践

项目的实践过程如下图所示,TCoE团队对测试生命期内的关键活动进行跟踪,深入,并协助测试的有效开展,下面从测试资源计划和用例评估两个方面给予详细描述。

l 项目资源评估

实施阶段:项目前期分析;

进入条件:项目需求文档提交,测试资源评估模板已定义;

主要活动:

1.项目Test Lead完成测试资源评估之后,提交TCoE进行评审;

2.TCoE核心团队成员参与本次评审,主要通过下面几点:

l 识别资源评估的依据,确认相关的输入文档和信息;

l 识别显性和隐性测试需求;

l 识别项目日程,测试周期和测试方法及相关的工具;

l 识别测试风险并进行风险评估;

l 明确前置条件,进行工作范围的定义;

l 明确具体的资源计算规则和相关的人员因素等;

l 分析项目成本,是否在资源预算控制范围;

3.输出评审结果,项目Test Lead更新资源计划,得到TCoE负责人再次评审通过后,发布给相关的人员。

好处:能够较准确的对测试资源进行评估,控制资源预算,同时,提前识别潜在的风险,确保项目的成功。

l 测试评审

实施阶段:项目系统设计阶段;;

进入条件:项目需求,设计文档提交,用例历史基线数据;

主要活动:

1.定义具体的case审核流程;

2.按照重要程度和使用频率,定义模块审核的优先级别;

3.参考历史基线,定义模块的缺陷密度和用例密度;

4.对每个模块随机选择一定比例的内容进行细致审查,并记录结果;

5.将检出结果与目标密度进行比较,分析差异,对差异较大的模块进行重新设计;

6.按照评审结果进行更新case

7.重复上述过程,进行用例完善;

8.输出高质量的测试用例;

好处:改善了测试覆盖率,提高了项目质量,降低了项目风险;

评估阶段

l 成本降低

n 通过在项目中对测试资源配置进行优化,调整内部和外协人员的比列;

n 通过提高测试效率,使得测试周期缩短,从而节省测试成本

l 效率提高

n 测试设计时间减少

通过建立测试知识仓库来整合test spec/testcase/test plan/report有效的缩短了测试的准备周期,执行周期。

n 测试执行周期缩短

通过采取自动化的测试策略,降低手工测试的比率,同时采取有效的测试策略来减少传统的测试执行周期。

l 质量成熟度改善

n 缺陷密度降低,同时严重缺陷的比例数量下降;

n 采取产品度量标准ISO/IEC 9126进行测试设计方式,同时采取内部技术评审对case进行优化,补充,有效的提高了覆盖率;

n 采取组织级的系统培训,采取统一的流程和策略,同时建立知识库,使得人员的素质和经验得到有效的提高;


最后来看一下TCoE与传统的SQA的之间的区别,从职能来说,二者是相似的,都是基于项目质量改善的目的,从范围来说,SQA更关注于整个开发过程的质量,TCoE则是重点对测试过程,方法,资源的优化和改善,从具体项目实践上来说,项目对SQA提出了经验,技术,管理等方面的要求,而TCoE则是聚集了各种方面不同技术和经验的专家,通过专家组的参与和控制,使得项目的质量能够有效的得以控制。

为确保TCoE在组织内的成功,主要关注下面几点:

l 必须要有组织高层的全力支持;

l 必须包含组织中各专业能力强及核心人力资源之参与;

l 必须要有良好的沟通和协作机制;

l 必须要有持续的人才培育与发展机制;

总结一下,TCoE是一种组织级的测试管理平台,通过对内部的经验,资源进行统一的规划和整合,提高资源利用率,降低了组织成本,同时,通过打造知识仓库,建立学习型的机制,能够将人员的专业化技术学习与组织的发展紧密结合,进而促进组织的持续性发展,提高组织的市场竞争力。

0 人点赞