◆徐 莉
基于项目管理角度的软件测试流程及管理
◆徐 莉
(花旗金融信息服务(中国)有限公司大连分公司 辽宁 116023)
针对手动测试比例较大的银行管理系统软件测试,从项目管理角度探讨软件测试流程改进,将工程质量管理中PDCA循环的概念运用到软件测试中,有助于改进软件测试成果的质量,提高软件测试项目管理的绩效。
项目管理;软件测试;PDCA;计划-实施-检查-处理
软件测试是指在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程[1]。软件测试是软件研发过程中的重要组成部分,对保证软件质量具有重要意义。因此,软件测试成果的质量,对软件开发的成败具有重要影响。
将软件开发作为一个项目进行管理,其基本流程相对固定,但软件测试过程还没有一套很成熟的测试流程和管理方法。本文拟结合项目管理中的PDCA循环,从项目管理的角度探讨软件测试流程及其管理。
所谓PDCA,即是计划(Plan)、实施(Do)、检查(Check)、处理(Act)的简称,PDCA循环是一种持续改进的质量管理体系,是工程项目管理中常用的质量管理方法。PDCA循环方法是对项目过程的管理,带有循环管理的特点,PDCA四个过程不是运行一次就完结,而是周而复始的进行,呈现阶梯式上升的趋势。
软件开发流程[2]一般包括分析设计软件的功能、软件的总体设计和模块设计、编程和调试、软件测试、程序修改、软件维护等过程,这一过程从项目管理的角度来看,基本涵盖了PDCA循环的各个阶段,如图1所示。
图1 软件开发流程
从软件开发的角度,图1所示的PDCA循环的流程是合理的,但在软件开发的实际过程中,计划(Plan)、实施(Do)、处理(Act)这三步一般由软件开发项目组完成,而软件测试(Check)作为一个相对独立的阶段,区别于研发人员编程过程中的调试自检。软件测试通常由第三方进行,无论是软件研发机构的测试部门还是独立的测试机构,均面临对软件测试这一“项目”的管理问题。
如果仅将软件测试定位于软件开发过程中的“检查(check)”,则是混淆了软件测试与程序员调试之间的关系,降低了软件测试的重要性。由于软件测试一般是独立进行,软件开发部门的项目流程和质量管理体系一般都未包含对测试过程和质量的管理,实际上也很难对其进行有效的管理。目前软件测试的管理更多的依赖于测试部门自身的管理体系。
软件测试一般包括单元测试、集成测试、系统测试、回归测试。本文主要针对手动测试比例较大的银行管理系统测试进行分析。一般的软件测试流程(下文称“流程Ⅰ”)如图2所示。
图2 软件测试流程图Ⅰ
流程Ⅰ在软件测试项目管理中仅包含计划(Plan)和执行(Do)两个方面,与软件开发人员没有互动,对于功能简单的软件可以达到有效测试的目的,但对于稍微复杂、功能多样的软件,很难达到测试的目标。
对流程Ⅰ进行优化,测试人员发现问题后提交开发人员,建立测试人员与开发人员的交互,协助开发人员找出问题,分析原因,解决测试出现的问题,详见图3所示测试流程Ⅱ。
流程Ⅱ基本达到了软件测试的目的,在一定程度上能够实现测试目标,协助完成软件开发全过程。但是流程Ⅱ中,在将测试结果反馈给开发人员时,由于对用户需求的不完全了解,开发人员和测试人员并不能完全确定测试中出现的BUG应当如何处理。这种情况下,测试人员提交的测试结果,非但不能帮助开发人员完善程序,反而有可能带来更多的程序错误。因此有必要对流程Ⅱ进一步完善,以保证测试成果的质量。完善后的测试流程Ⅲ见图4。
图3 软件测试流程图Ⅱ
图4 软件测试流程图Ⅲ
根据优化后的流程Ⅲ,某银行系统测试的详细流程如下:
(1)计划阶段(Plan):①阅读用户需求和功能说明文档,与用户及项目经理讨论测试范围;②制定测试计划、测试用例,准备测试数据。
(2)实施阶段(Do):①确认测试计划和范围;②开始测试。③汇总测试结果。
(3)检查阶段(Check:①测试发现问题,首先与项目经理确认,如有必要,与用户确认;②针对较复杂的问题,与项目经理和用户开会讨论。由于某些银行系统涉及到多个系统间的交互,需确认参会人员范围;③提交测试结果。
(4)再测试阶段(Act):①开发人员根据测试结果修改程序,并再次提交给测试人员;②测试人员进行测试,如发现问题,重复上述过程,直至问题全部解决,完成测试。
测试流程Ⅲ在将测试结果提交给开发人员修改程序前,测试小组已与开发人员和用户进行了沟通,初步分析了测试结果的合理性,避免测试本身的错误,实现了对测试项目的PDCA循环。
软件测试的进度管理[3]是项目管理的核心问题之一,在现有资源条件下按照规定时间交付成果,才能实现项目目标。影响软件测试进度的因素有主观的也有客观的,由于软件测试计划的不完整性和测试结果不确定性,测试进度也随着项目的进行不断变化。因此项目管理者必须随时掌握计划的执行情况,比较和分析测试进度与计划进度的偏差,随时调整后续计划。
计划制定是否合理与项目管理者的经验、能力密切相关,因此在组建测试项目组时,尽量选择有类似经验的项目管理者,根据本公司实际情况、可供调配的人力资源、测试工程师的工作能力综合确定项目分工和进度计划。
测试人员也应认识到,在软件测试管理中按照PDCA循环的质量管理模式执行严格的质量控制措施,在一定程度上有可能会延长软件测试的工期,但对整个软件开发来讲,总工期将会缩短,软件的质量更能够得到保证,后期的维护成本也会大大降低。
人力资源管理是一个很广泛的方面,这里仅浅谈与软件测试相关的内容。对于手动测试占比较大的软件测试,测试的过程由测试工程师主导完成,测试过程中的人力资源管理与质量、进度、成本等方面都息息相关。
测试工程师是测试计划的执行者,工作成果的质量直接影响到测试质量。经验丰富的测试人员能够更全面的发现软件缺陷,良好的组内组外沟通氛围能够帮助项目管理者更全面地把控测试成果质量。
对测试工程师的管理包括建立有效的测试组织,使测试人员能够达到测试计划的工作目标,收集和分析工作绩效数据等方面的内容[4,5]。
软件测试的整体进度由每个测试工程师的工作进度决定。了解测试人员的能力、合理分工、调动测试工程师的工作主动性,是保证测试进度的关键,也是项目管理者进度管理的关键。
软件测试的成本因素主要包括人力资源、办公设备、办公软件。其中办公设备与办公软件在某种程度上是相对固定的,而成本管理的关键因素在于人力资源成本,人力资源成本的关键因素又在于时间或者说进度。在保证质量的前提下,采用最短的时间完成测试,既保证了项目进度,又节约了成本。
本文从项目管理的角度,单独讲述软件开发中的软件测试环节,运用PDCA循环质量管理的理论,优化软件测试流程,同时浅谈了与质量管理相关的软件测试进度管理和人力资源管理,以期能够提高软件测试的成果质量,希望能对软件测试人员起到借鉴作用。
[1]张广梅.软件测试与可靠性评估[D].北京:中国科学院研究生院,2006.
[2]龚勋.软件项目管理与测试在软件开发中的应用[D].成都:四川大学,2004.
[3]廖青.项目管理在软件测试中的应用[D].北京:北京邮电大学,2010.
[4]王立娟.基于过程的软件测试管理中关键技术的研究[D].大连:大连海事大学,2006.
[5]陈文海.软件测试管理工具的研究与实现[D].北京:中国科学院研究生院,2003.