黄杰 彭启瑞 李靖尘 张鸿
摘要:随着信息技术对人类社会的深入影响,信息系统已经成为人们日常生活以及生产活动不可缺少的组成部分。现阶段几乎所有的公司都在不断加强自身信息科技力量建设,对于一些非科技类的大型公司已经发展起来了颇具规模的科技团队,并形成了一种典型的科技部门组织架构。该文基于这种典型的组织架构,针对软件测试管理领域的工作做了深入探讨,阐述了在该典型架构下软件测试管理工作开展的优缺点,总结了相关管理经验,列举了一些常见问题并给出应对建议。
关键词:非科技类大型公司;典型组织架构;软件测试管理
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)20-0172-02
Study on Software Testing Management under a Typical Organizational Structure
HUANG Jie, PENG Qi-rui, LI Jing-chen, ZHANG Hong
(Agricultural Bank of China, Beijing 100161, China)
Abstract: with the development of information technology, the information system has become an indispensable part of people's daily life and production activities. Almost all companies at this stage are continue to strengthen its information technology construction, for some big non tech firms have been developed large-scale technical team, and formed a typical Information and Technology Department of architecture. Based on the typical organization architecture, this paper studies on the management of software testing field, explains the advantages and disadvantages, summed up the relevant management experience, lists some common problems and give suggestions to cope with.
Key words: big non tech firm; typical organization architecture; software testing management
1 软件测试管理概述
软件测试管理是针对测试活动进行的一系列规范行为,软件测试管理最主要的内容包括测试范围管理、测试进度管理、测试质量管理、测试成本管理等[1]。这几个领域贯穿、交织于整个软件测试过程中,其中测试范围管理主要定义并控制测试活动的范畴,它是测试进度、测试质量管理和测试成本管理的基础;测试进度管理又叫测试时间管理,包括测试工作按时完成所必须的管理过程;测试质量管理包括为确保测试工作能够满足期望效果的过程;测试成本管理主要关注测试工作量评估以及测试过程中的成本控制。
现代软件测试管理是为了适应现代产品的创新速度,以便增强竞争能力,赢得市场,赢得消费者;是为了适应现代的复杂项目系统,使企业能处理需要跨领域解决方案的复杂问题,实现更高的运营效率;是适应以用户满意为核心的服务理念,使测试管理中测试经理的角色从活动的指挥者变成活动的支持者。
2 典型组织架构
伴随着信息技术的迅速发展,信息系统在社会各项生产服务活动中的作用越来越重要。各大公司对信息系统的依赖越来越强烈,除了新兴的信息科技公司外,很多非科技类公司也在不断加强自身的信息科技力量建设,对于这些公司来说,虽然信息科技相关内容并不是其主营业务,不直接创造利润,但是公司自身的信息科技团队和技术研发能力已经不容小觑。另一方面,信息系统在运行过程中一旦出现问题,带来的不良影响越来越大,所以各大公司越来越重视信息系统的安全性、可靠性和易用性等,并且以客户为中心的服务理念使大家愈加重视用户体验。所有这些使得软件测试工作愈发受到重视。
如图1所示,目前在一些非科技类大型公司内部,信息科技力量已经得到快速发展,形成了独立的科技支持板块。这种科技支持板块同其他支持板块一样,共同为公司的主营业务板块提供保障。并且科技支持板块已经形成了“一部三中心”的典型架构,即公司设立科技管理部、软件开发中心、测试中心和数据中心,其中测试中心从传统的软件开发中心中独立出来,可以更好的发挥测试工作的重要作用。在信息系统开发测试运维过程中,各部门具体职能如下:
1)科技管理部:负责统筹协调需求、设计、开发、测试、运维等各项工作正常开展,是项目的监理方。
2)软件开发中心:负责信息系统的设计、编码等工做,是项目建设的主要承担部门。
3)测试中心:是独立的测试部门,承担信息系统的第三方测试工作,重点承担系统测试阶段的工作,是项目的独立测试方。
4)数据中心:承担信息系统上线后运行监管和维护工作,确保信息系统安全平稳的运行。
图1 一种非科技类大型公司的典型组织架构
在上述典型架构中,公司设立测试中心,形成了独立的第三方测试机构,将测试和开发分离出来,加强了测试工作的规范性,并且有利于建立一整套测试制度、流程和规范,并提供持续的改进。另一方面,公司虽然建立了独立的测试中心,但是相对于开发中心来说,这些测试中心的规模一般都比较小。对此,测试中心可以通过建立一套评判标准,根据项目的重要程度决定是否需要进行独立测试,以及投入多少测试资源开展测试,对全公司的信息系统建设项目进行测试资源平衡。
在此架构中,信息系统建设的业务需求方(主营业务板块的各部门)、开发方(开发中心)、测试方(测试中心)、监理方(科技管理部)等都是公司内部成员,所以相互协作起来应该会更加便利,沟通渠道更加顺畅,项目建设更有效率。然而在实际工作中,由于适用于每家公司的项目管理制度不够健全,所以一些权责不明确、流程不清晰等问题仍然存在。
针对图1所示的典型组织架构,下文将分别从测试范围管理、测试进度管理、测试质量管理和测试成本管理等四个最主要的管理领域,详细探讨软件测试管理工作中的常见问题以及管理经验。
3 测试范围管理
测试范围管理主要关注测试工作内容的定义和控制。测试范围管理不善会造成测试成本的提高、测试进度延迟、测试质量失控,偏离了原定的测试目标,影响整个项目的发展和测试人员的积极性。测试范围管理一般包含测试需求的理解、测试范围的定义和确认、测试范围的变更控制等内容。
在传统的信息系统建设项目中,第三方测试一般在需求开发以及软件设计完成后,甚至是编码结束后才介入项目,在这种情况下对业务需求的理解往往不够充分。在实际操作中更会遇到业务方或者开发方提供的需求说明书不标准,可参考性较差等问题,从而导致测试方介入后很难获得准确的测试需求。
在图1所示的典型架构下,测试方、开发方和业务方均隶属于同一公司,这有利于测试方在项目初期需求开发阶段就介入各项工作,参与需求分析和需求评审等工作,明确测试范围和测试内容,在初期就对项目需求进行深刻的理解,有利于后期测试工作的开展。另外,测试中心可以考虑在需求开发结束后开展需求测试工作,对需求文档中所列各项功能进行全面性、准确性、可测性等多方面的测试,测试通过后可以建立需求基线。在需求测试过程中可以完成测试范围的分析、定义和确认工作。
相对于专业测试公司外包形式的测试,在该典型架构下测试范围变更成本较小,因为不需要考虑测试外包合同变更问题,以及公司之间复杂的沟通协调成本。然而正是因为如此,在实际操作过程中测试范围变更往往变得比较随意,给测试工作带来不便,造成测试效果和测试效率不理想。这就要求在项目初期制定完善的测试范围变更控制流程,并严格执行。
4 测试进度管理
测试进度管理又叫测试时间管理,包括测试工作按时完成所必须的管理过程。对一个测试项目来说,测试进度管理是非常重要的工作,如果进度计划不能得到实施,将会推迟整个项目结项时间,增大项目成本,降低项目效益,进而产生各种更糟糕的影响。
如上文所述,图1所示典型架构有利于测试方提早介入项目工作,测试方应该参与制定项目实施计划、项目测试计划以及各项工作方案,明确各方职责分工、测试工作机制、缺陷处理流程和沟通汇流程制等,将测试工作同设计开发工作以及运行维护工作统筹安排,制定更加准确,更加务实的测试进度时间表。
项目开展过程中时常出现开发方进度延迟的情况,这会对随后的测试工作带来很大的影响。为了保证信息系统按时投产运行,测试方可以实行快速跟进的调整策略,即在编码阶段没有结束时提前介入测试工作。这种策略适用于待测系统模块化清晰,且部分模块已开发完成的情况下,测试中心可以提前对可测模块开展测试,否则该策略会增大成本,降低效率,给测试工作带来更多的风险。除了快速跟进策略,项目相关方可以共同商定延迟上线时间,或者缩小测试范围等手段灵活变更项目实施计划或测试计划。但是无论使用什么方法,建议在项目初期制定明确的测试工作准入和准出标准,并建立完善的进度变更控制机制和风险应对管理计划,确保进度失控后责任可查、有据可依、应对有法。
5 测试质量管理
测试质量管理包括为确保测试工作能够满足期望效果的过程。在一个软件项目实施过程中,测试质量管理是非常重要的,因为测试工作本身就是为了保障软件项产品的质量,所以如果测试工作本身的质量不过关,整个项目的质量将无从谈起。
测试质量管理内容可以分为测试对象质量管理和测试过程质量管理。测试对象质量考察被测软件本身的质量情况,首先需要明确软件质量度量指标,通过各种度量指标考量被测软件的质量;最后还需要设定测试通过准则并严格执行,确保测试后的软件满足预期的质量要求。测试过程质量考察测试工作开展过程的质量,建议测试过程和开发过程采用相同的过程及文档标准,例如在实施了CMMI的公司中采用相同的CMMI标准。
测试过程中的版本控制问题是关键点之一[2]。在图1所示架构下,测试人员和开发人员都是同事,测试过程随意性强,往往缺乏良好的版本控制机制,例如测试过程版本由开发人员控制和发布,测试版本发布没有规律,测试版本不可追溯等,从而使得测试缺陷反复出现,测试工作效率低下,测试质量无法提高。在这种情况下,建议由测试人员控制测试版本的发布,并且建立明确的版本控制策略,使得每一轮测试都在有效的版本上进行,使得测试过程可追溯,并且当软件出现问题时可以方便的回退到上一个版本。明确版本管理过程中相关人员的角色和职责,明确版本发布流程,制定版本命名规则,并且对每个版本都要进行详细的属性描述。
6 测试成本管理
测试成本管理,是指在测试工作开展过程中,为了保证完成测试工作所花费的实际成本不超过预算成本而展开的测试工作量评估、测试资源需求和测试成本控制等方面的管理活动。测试成本的最主要内容是测试相关的设备资源成本和人力资源成本。测试设备资源由相关部门统一协调,在每个项目之间重复使用,其成本为设备资源的折旧成本。人力资源成本与测试工作量和测试人员薪资相关。
准确的估算测试工作量是做好项目成本管理的基础。一般测试工作量与需求范围直接相关,所以在做工作量估算时首先要明确测试范围和测试内容,并且制定合理有效的测试方法。在估算过程中可以使用功能点估算法对待测功能点逐一分析,最后汇总得到最终工作量,或者可以借鉴以往类似项目的经验使用类比估算法,以及德尔菲估算法等。另外,在测试工作量估算的时候,要根据项目的复杂程度及规模的大小,在成本评估基础值上增加10%-30%左右的风险量,以减轻各类风险造成的影响。
在图1所示的典型架构下,相对于开发中心的人员配备,测试中心人员往往比较紧缺。针对这种情况,采购外协服务人员一般是比较理想的选择。因为采购的外协服务人员一般具有专业的测试知识和经验,并且使用成本较低,能够在保证测试质量的前提下有效降低测试成本。
7 结束语
针对一些非科技类大型公司,本文详细介绍了其公司内部的典型科技组织架构,目前这些公司的软件测试管理工作在某些程度上受益于这种典型组织架构,同时也存在许多问题。本文分别从软件测试管理的范围管理、进度管理、质量管理和成本管理等四个主要管理领域做了详细探讨,阐述了管理过程中的一些经验,指出了一些问题并给出了相关建议。
参考文献:
[1] 柳纯录, 刘明亮, 高章舜. 信息系统项目管理师教程[M]. 2版.北京: 清华大学出版社,2008.
[2] 刘沅斌, 郭金京, 赵娜. 软件测试阶段的版本管理研究[J]. 计算机光盘软件与应用, 2014(8): 49-51.