全程软件测试(四十九):软件测试项目管理概述—读书笔记(软件测试项目管理体系)
项目管理的基本目标是使项目顺利进行并达到预期的效果。在管理的过程中不断地提升目标,超越预定目标,则是更高层次的项目管理。软件项目管理的目标是使软件项目能够按照预定的成本、进度、质量顺利完成,同时对成本、资源、进度、质量、风险等进行分析和控制。软件测试项目管理在概念上和软件项目管理没有区别,只是侧重点和主导思想不同。
一般的软件项目管理对成本和进度控制比较严,而从软件测试的角度看,质量第一是基本点,所有项目管理工作都围绕提高产品质量而展开,最终保证在合理的成本、进度控制下,开发出满足用户要求和期望的、可维护的、高质量的软件产品。
软件测试项目管理的内容如下所述。
(1)软件项目的测试过程管理包括软件项目的测试计划、测试用例设计、测试执行、测试结果的审查和分析以及开发或使用测试过程管理工具。
(2)软件项目的测试工作和产品质量的风险评估和控制。
(3)软件项目的测试资源分配和进度控制。
(4)软件项目的版本定义、变化控制和配置管理。
(5)软件项目的软件构建、打包和发布等管理。
软件测试项目管理的共性
软件测试项目管理的基本内容是计划、组织和监控,具体包括以下5项:度量、预估或评估、风险分析、日程安排、跟踪和控制。将上述5项基本内容再进行细分,软件测试项目管理可分为8个工作领域:测试范围管理、时间管理、成本管理、质量管理、人力资源管理、沟通管理、风险管理、过程管理。
而作为一个成功的项目经理需要具备4个方面的能力和素质:
解决问题和控制风险能力;
沟通和协调能力,良好的亲和力;
团队组织和激励能力,包括团队影响力;
相应的专业技术能力。
1.软件项目管理的3P
有效的项目管理集中在3P上,3P分别是People(人员)、Problem(问题)和Process(过程)。其中,人是决定性因素,对于软件开发,这一点更为明显,因为软件开发是人的智力密集型劳动。3P是软件项目管理的重点,具体要求如下所述。
(1)将人员组织成有效率的小组,并激发他们进行高质量的测试工作。在此团队的人员之间建立有效的沟通途径和方法,最终实现小组之间、人员之间、管理者和被管理者之间有效的沟通。有效率的团队应建立合适的组织结构和工作文化,不断促进团队整体表现,通过一系列活动提高团队的凝聚力、工作态度、积极性,共享团队的目标和文化,并最终在组织、管理和文化上实现和谐、有机的结合。
(2)问题在测试项目管理中表现为流程不清楚或控制不严、应用领域知识不足、需求不断变化和不一致性、沟通不流畅等。问题的解决办法是确定问题所在,然后进行分解,逐个解决。在解决问题时需要良好的沟通、协调技巧。对测试过程中可能产生的问题,项目管理者必须有一个前瞻性的考虑,若管理者在测试早期对问题没有准备,不能实现整个团队的有效沟通,则不可能针对问题提出正确的解决方案。针对已发现的问题,管理者必须与用户和开发人员进行细致的交流讨论,尽可能地将任务分解为更小的组成部分或单元,使其更方便分配给对应的测试项目小组。
(3)过程必须适应人员的需求和问题的解决。人员的需求主要体现在能力、沟通、协调等方面,问题应该能在整个软件项目开发的过程中得到跟踪和控制,总而言之,一套规范且有效的流程是保证项目运行过程平稳的基础。
对3P 的考虑要在计划中充分体现出来。计划是用来建立总体方向的,是用来开启项目的工作,保证项目是朝一个目标前进的。但计划又需要围绕人员、问题和过程来展开,虽然所有的行动都是围绕项目的目标进行的。
软件项目中最关键的因素是人员。人员可按照不同的结构来组织,从传统的控制层到“开放式范型”的小组。可采用多种协调方式和通信技术来支持项目组的工作。优秀的测试工程师按照良好的流程进行项目测试,才能最大限度地保证项目的成功。一个优秀的流程可保证专业水准较差的人员做出的产品不至于有太大偏差(但不能确保做出精品)。通过流程可实现规范化、工业化、专业化的软件测试,流程是基础。
2.软件项目度量在管理上的作用
软件项目管理者应该重视项目度量,其具体作用如下。
(1)评估正在进行的项目的状态以及正在开发的软件产品的质量。
(2)跟踪潜在风险,辅助软件项目的计划、跟踪及控制。
(3)在问题造成不良影响之前发现问题。
(4)调整工作流程或任务,改善软件过程。
(5)评估项目组控制软件工程工作产品质量的能力。
(6)分析这些度量可产生指导管理及技术行为的指标。
项目组收集到的项目度量数据,也可传送给负责软件过程改进的人员。因此,多数度量既用于过程领域又用于项目领域。过程度量使一个组织能够从战略角度洞悉一个软件过程的功效;而项目度量是战术的,使项目管理者能够以实时的方式改进项目的工作流程及技术方法。
3.软件项目监控的过程步骤
软件项目监控的目的是通过建立软件项目过程的可视性,使项目管理者在软件项目性能与软件计划出现偏差时采取有效的纠正措施,以确保软件过程的质量满足要求。一般软件项目的监控以获得真实、实时的项目一手数据为基础,按照“获取项目过程信息、分析判断、采取纠偏措施、验证”的步骤建立过程的可视性,通过过程可视性实现项目目标管理与过程管理的统一。
在组织实施软件项目的过程中,对项目的监控可从4个方面着手。
(1)建立满足软件工程和软件项目管理流程要求的、实用的软件项目运行环境,包括明确的过程流程、项目策划、组织支撑环境。
(2)采用软件项目管理监控平台,使项目目标管理和过程管理相结合,提高项目的透明度,建立过程可视性。
(3)项目经理和质量保证经理是项目的主要责任人,采用双过程经理制有利于项目经理和质量保证经理发挥作用。
(4)项目沟通、项目计划、项目进度和项目范围必须能够被项目组成员方便地获取,以确保大家是在统一的交流平台上朝着共同目标前进。采用适当的图表和模板增强项目组内沟通效果和沟通的一致性;采用良好的邮件系统、日历系统、即时消息系统等构成一个完整的、协同的内部统一信息平台。
4.软件项目管理的三角关系
软件项目的管理最终会变为产品、时间和成本这三者之间的权衡,如图1所示。
图1 软件项目管理三角关系——产品、时间和成本
在一个项目中,如果某项是确定的,其他两项是可变的,应控制不变项,对可变项采取措施,保证项目达到预期效果。例如,产品质量是不变的,要有足够的时间和成本投入去保证产品质量,但同时市场决定产品,时间受到严格限制,此时若想保证产品的功能得到完整的实现,则必须投入足够的成本(人力资源、硬件资源等);若成本也受到限制,则不得不减少产品功能,只实现产品的主要功能。
软件测试项目管理的特点
软件测试项目管理是软件工程的保护性活动,它开始于任何测试活动之前,且贯穿于整个测试项目的定义、计划和测试之中。
软件测试项目管理一方面继承了一般软件项目管理的共性,另一方面也具有软件测试自身的管理特点。下面分析软件测试项目管理的特点。
(1)软件质量标准定义不准确、任务边界模糊,软件测试项目管理需要确定何时软件测试可以结束,找不到严重缺陷并不代表软件不存在严重缺陷。软件测试项目的各个里程碑标准和度量的定义、管理要求更高。
(2)软件测试项目的变化控制和预警分析要求高。随着系统分析、设计和实施的进展,客户的需求不断地被激发,需求不断变化,导致项目进度、系统设计、程序代码和相关文档的变化和修改,而且在修改过程中又可能产生新的问题。此时受影响最大的是软件测试,因为程序设计和实现被拖延,通常最后的时间期限又很严格,结果由于测试执行阶段靠后,很容易造成测试时间被严重挤压。
上述情况下,只有两种解决方案:一是与项目经理沟通、谈判,以争取更多的时间;二是要求测试人员加班加点完成,如此,保证产品的质量将会是一个更大的挑战。
(3)软件测试项目具有智力密集、劳动密集的特点,受人力资源影响最大,项目组成员的组织结构、责任心、能力和稳定性对测试执行、产品质量有很大影响。程序设计、编码等需要由测试人员把关,但若测试人员的责任心不强,遗漏了严重缺陷,最终问题将会遗留给客户,后果不堪设想。因此软件测试项目的管理需要更加细致,风险更大,流程跟踪要求更高。
(4)测试任务的分配难。例如,单元测试和集成测试、系统测试和验收测试等关联紧密,但要求的技术不同,不容易进行分离;若将其强行分离,则边界条件的负责人难以确定。
(5)测试要求人力资源十分稳定。软件测试不仅是一项技术工作,还要求对产品的功能、特性了解透彻。测试的对象——软件系统是一个不可见的逻辑实体,若参与测试的人员发生流动,未深入了解产品的功能、特性又缺乏软件测试实践经验的人很难在短时间里做到无缝承接项目的测试工作。
(6)软件测试人员的待遇、地位可能并不高,但同时又要求测试人员具备丰富的工作经验、良好的心理素质和责任心。因此,在软件测试项目管理中,应对人才激励和团队管理问题给予高度的重视。
由此可见,软件测试项目管理的好坏对产品质量影响更直接,软件测试项目管理更富有挑战性,尤其强调质量管理、人力资源管理、沟通管理、风险管理等,包括软件系统的配置管理,主要是版本管理。
软件测试项目的过程管理能否成功,通常受到三个核心层面的影响,即项目组内环境、项目所处的组织环境、整个开发流程所控制的全局环境。这三个环境要素直接关系到软件项目的可控性。项目组管理模型与项目过程模型、组织支撑环境和项目管理接口是上述三个环境中各自的核心要素。此外,优秀的软件过程管理平台是实现整个项目生命周期项目过程监控的工具保证。