缺乏版本控制测试易陷混乱风险
 

2009-03-05 来源:网络

 

前一段时间,公司委派我负责一个软件测试项目,测试工作进行得还算顺利。但结果还是差点儿出了问题,主要是在测试过程中的版本控制上出了问题。在软件测试中版本控制虽然是一门基本的实践性技术,但是许多人并不知道如何使用它,或者未能有效地利用它。这里与大家分享一下,以作为前事不忘,后事之师。

在这次软件测试项目中,我们首先会把发现的Bug提交给开发人员,开发人员修复后会把修改过的代码提交到正在测试的版本中去。问题就出在这里。因为修改过后的代码,我们不能保证它是否会带来新的隐患,这样就给测试人员的测试工作带来困扰。后来发展到只要开发人员一提交代码到正在测试的版本中,我们就会比没有发现Bug更为紧张,每一次除去验证修复的Bug之外,还都要尽量保证没有遗漏新修正代码所带来的后患。

软件测试缺乏版本控制的后果

随着软件的规模及复杂程度日趋大型化、复杂化,软件测试的方式也从早期的单兵作战式或手工作坊式,渐渐转变为流水线式的团队协作测试方式。最常见的是多个测试人员共同负责一个软件的测试,每个人在各自的机器上都有整个软件的拷贝,并对之实施测试,分别完成各自任务。但当没有有效使用版本控制时,这种测试模式会遇到一些非常棘手的问题。

(1)缺乏版本控制,难以保证测试进度

大多数的测试人员都是典型的完美主义者,这样的做法无可厚非,但是缺乏版本控制时会出现较低的测试效率。在测试管理上,不可能要求每个版本都是完美无缺,否则就不需要出新版本了。但要求每个版本的状态都必须在掌控之中,最基本的就是哪些功能OK,哪些功能NG。换句话说,一个测试版本应该很容易对应到一个状态。在未来的任何一个时间点,新测试版本应可以拿来和这个测试版本的快照(Snapshot)做比较。

(2)缺乏版本控制,难以保证测试的一致性

软件测试往往是多个测试人员共同协作的过程,不同人对同一个软件的不同部分同时做着测试,这种行为有时会出现彼此交叉的情况。因此,软件测试是多人共同协力进行的复杂工作,必须要在效率与纪律间取得一个平衡,而版本控制据实践证明是有效的方式之一。当缺乏版本控制时,测试一致性的失衡风险就会经常发生。

因此,对测试团队来说,每个测试版本都应该是一个重要的核查点,因为版本控制代表着掌握着测试过程某个时间点的状况。所以,在多个测试人员共同负责的一个软件测试中,没有进行版本控制或者版本控制本身缺乏正确的流程管理,将会引入很多问题,并难以确保测试的一致性。

(3)测试版本冗余,易出现误用风险

一般来说,待测软件在各个测试人员的机器上都有拷贝,并且同一个测试人员在不同时期也会在本机保留多个的软件版本。简单的说就是,一台机器上可能不止一个测试版本。这类似于一种信息的冗余,对于不同版本而言其差别有时可能并不很大。但一个很重要的问题是随着时间推移,测试人员可能会对自己机器上的不同版本间的具体差异了解也变得模糊不情,甚至忘记了当时为什么区分这些版本的原因,这就会给测试工作带来麻烦。而且同时维护多个版本,也很难保证这一过程不会出现差错。因此,缺乏版本控制,版本冗余的误用风险就会成倍增多。

(4)容易导致本地版本和服务器版本不一致

测试版本混乱造成的危害还体现在资源的浪费上面,很多测试团队经常发生测试组花费时日测试某一项功能,却发现最新修正的开发版本已经把整项功能取消,导致大家重复测试。发生这类错误原因是因为测试组没有拿到最新的开发版本,也可能是测试人员在从服务器那里更新本地版本时,由于缺乏版本控制和管理,从而导致本地版本和服务器版本不一致。因此,加强本地版本和服务器版本的一致性管理,是绝对重要的一项工作。

(5)缺乏测试文档可追溯性

版本控制不仅只为各种测试版本提供了文档管理支持,还能提供可追溯性的文件。这样我们就可以随时查阅软件测试过程中生成的各种文档,这是提高、总结和分享测试经验的重要途径之一。

什么是软件测试的版本控制?

(1)什么是版本控制?

软件测试过程中有一个非常重要的方面,就是测试版本控制。对于软件测试人员来说,版本控制这个概念大家都不陌生。版本控制简单的说就是对测试版本有明确的标识、说明,并且测试版本的交付是在项目管理人员的控制之下。测试版本的标识是用来识别所用的版本的状态,版本号码的用处很多,例如在填写错误报告的时候往往需要提供发现错误的版本号。在做缺陷分析时,也可以利用版本号来区别缺陷和判断缺陷的发展趋势。因此,版本控制从某种意义上也可认为是软件质量稳定度趋势的反映。

版本控制(Revision Control)是软件测试的一门实践性技术,版本控制透过文件控制(Documentation Control)记录各次测试行为,并为每次测试行为编上序号。版本控制的最简单方法是在每一个公布的测试文档版本上做出标识,包括一个版本的历史情况,即已做的测试内容、测试日期、测试人员姓名以及测试的原因,并根据约定标准标记每一次的测试顺序。最简单的例子是,最初的版本指定为1,当做了测试之后,版本编号增加为2,以此类推。

(2)版本控制的作用

版本控制包括两个方面:一是保证测试人员得到的是最新的版本,二是记录历史版本的测试状态。版本控制是对系统不同版次进行标识和跟踪的过程,而版次则是指一系列版本变迁的其中一个。版本标识的目的是便于对版本加以区分、检索和跟踪,以表明各个版本之间的关系。版本控制的功能在于能跟踪记录整个测试过程,包括测试本身和相关文档,以便对不同阶段的待测软件及相关文档进行标识和差别分析,也便于协调和管理测试团队的工作。所以,对版本的控制实际上就是对各种测试行为的管理和控制。

总的来说,版本控制是管理测试后状态变更的一种技术。对于测试人员来说,它是不可或缺的工具。测试人员可以通过版本说明文档了解到当前的测试版本中和上一版本有那些显著的变化。明确了这些情况之后,测试人员可以更加高效,有针对性的执行测试。因此,对软件测试团队而言,测试版本发行和控制是一件大事。

(3)版本控制的评价标准

对软件测试的版本控制来说,衡量其效果的标准可归根结底为两点:效率和质量。如果版本控制最终使软件测试效率得到提高、使软件质量得到提升,那就是成功的。反之,则是失败的。效率的提高比较容易理解,而测试质量的提升则体现在:软件的一致性、冗余程度等。

如何成功进行版本控制?

有效的版本控制能大大提高软件测试的工作效率,也是给整个测试过程打下坚实基础的重要步骤之一。但现实中却仍有很多测试小组根本没有使用或不会正确使用版本控制,许多人抱怨版本控制过于复杂,从而对它望而生畏。其实只要掌握一些基本用法就可以获取到版本控制带来的好处,就能达到提高测试工作效率的目的。

(1)制定规范的版本控制管理制度

对于软件测试版本,决不是简简单单的认为只把测试版本进行编号就可以了。这是一个误区,不但会使测试过程中存在着很多风险,而且稍有不慎就会导致测试工作的失败。因此,首先要了解和明确整个测试需求,选择合适的版本控制切入点,通过把版本控制与测试里程碑的结合来实现阶段性成果,以规避测试过程混乱的风险。

(2)制定合理版次规划和监控机制

为了对测试项目所需的版次数量的有效管理,应要对测试工作量进行合理的评估,以此来对版次作出合理的规划。合理而具体的版次规划,可以帮助测试团队正确处理测试所发现的Bug和测试活动的细节,因为过于频繁的版本更新会给测试工作带来困扰,但过于少的版本更新也会造成类似缺乏版本控制的弊端。因此,在整个测试项目的关键位置设立检查点,可使得测试团队根据版次规划随时监控版本更新,及时发现问题,并对出现的异常现象做出快速反应,也使得测试过程更加清晰和更有计划性。

(3)不能忽略版本控制管理员的重要性

虽然可以不必单独划定一人来担任这个角色,但如果没有这一角色的存在,或者说任何人都可以做版本控制管理员,则又会出现版本混乱的问题。因为从某种程度上讲,这和没有版本控制的情况是等效的。

(4)做好版本控制的文档管理

由于测试工作涉及到方方面面,故所有与版本控制相关的说明、标识等都需要文档化。因此,做好文档工作是版本控制得以成功的一个重要支撑。作为控制文档,应该还包括与测试相关的资源及其使用情况,以方便跟踪与监控测试版本的执行。

(5)应用版本控制的软件工具

工欲善其事,必先利其器。既然版本控制在软件测试中是如此重要,那就有必要花时间来仔细了解和评估软件测试的版本控制工具。因为选择一款优秀的、适合测试团队和项目需求的版本控制工具,不但能够提高测试工作效率,而且也会大大提高测试活动的优质性。所以,善于使用版本控制工具是测试管理的重要一环。


火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织