【IT168 技术文档】
前一段时间,公司委派我负责一个软件测试项目,测试工作进行得还算顺利。但结果还是差点儿出了问题,主要是在测试过程中的版本控制上出了问题。在软件测试中版本控制虽然是一门基本的实践性技术,但是许多人并不知道如何使用它,或者未能有效地利用它。这里与大家分享一下,以作为前事不忘,后事之师。
在这次软件测试项目中,我们首先会把发现的Bug提交给开发人员,开发人员修复后会把修改过的代码提交到正在测试的版本中去。问题就出在这里。因为修改过后的代码,我们不能保证它是否会带来新的隐患,这样就给测试人员的测试工作带来困扰。后来发展到只要开发人员一提交代码到正在测试的版本中,我们就会比没有发现Bug更为紧张,每一次除去验证修复的Bug之外,还都要尽量保证没有遗漏新修正代码所带来的后患。
软件测试缺乏版本控制的后果
随着软件的规模及复杂程度日趋大型化、复杂化,软件测试的方式也从早期的单兵作战式或手工作坊式,渐渐转变为流水线式的团队协作测试方式。最常见的是多个测试人员共同负责一个软件的测试,每个人在各自的机器上都有整个软件的拷贝,并对之实施测试,分别完成各自任务。但当没有有效使用版本控制时,这种测试模式会遇到一些非常棘手的问题。
(1)缺乏版本控制,难以保证测试进度
大多数的测试人员都是典型的完美主义者,这样的做法无可厚非,但是缺乏版本控制时会出现较低的测试效率。在测试管理上,不可能要求每个版本都是完美无缺,否则就不需要出新版本了。但要求每个版本的状态都必须在掌控之中,最基本的就是哪些功能OK,哪些功能NG。换句话说,一个测试版本应该很容易对应到一个状态。在未来的任何一个时间点,新测试版本应可以拿来和这个测试版本的快照(Snapshot)做比较。
(2)缺乏版本控制,难以保证测试的一致性
软件测试往往是多个测试人员共同协作的过程,不同人对同一个软件的不同部分同时做着测试,这种行为有时会出现彼此交叉的情况。因此,软件测试是多人共同协力进行的复杂工作,必须要在效率与纪律间取得一个平衡,而版本控制据实践证明是有效的方式之一。当缺乏版本控制时,测试一致性的失衡风险就会经常发生。
因此,对测试团队来说,每个测试版本都应该是一个重要的核查点,因为版本控制代表着掌握着测试过程某个时间点的状况。所以,在多个测试人员共同负责的一个软件测试中,没有进行版本控制或者版本控制本身缺乏正确的流程管理,将会引入很多问题,并难以确保测试的一致性。
(3)测试版本冗余,易出现误用风险
一般来说,待测软件在各个测试人员的机器上都有拷贝,并且同一个测试人员在不同时期也会在本机保留多个的软件版本。简单的说就是,一台机器上可能不止一个测试版本。这类似于一种信息的冗余,对于不同版本而言其差别有时可能并不很大。但一个很重要的问题是随着时间推移,测试人员可能会对自己机器上的不同版本间的具体差异了解也变得模糊不情,甚至忘记了当时为什么区分这些版本的原因,这就会给测试工作带来麻烦。而且同时维护多个版本,也很难保证这一过程不会出现差错。因此,缺乏版本控制,版本冗余的误用风险就会成倍增多。
(4)容易导致本地版本和服务器版本不一致
测试版本混乱造成的危害还体现在资源的浪费上面,很多测试团队经常发生测试组花费时日测试某一项功能,却发现最新修正的开发版本已经把整项功能取消,导致大家重复测试。发生这类错误原因是因为测试组没有拿到最新的开发版本,也可能是测试人员在从服务器那里更新本地版本时,由于缺乏版本控制和管理,从而导致本地版本和服务器版本不一致。因此,加强本地版本和服务器版本的一致性管理,是绝对重要的一项工作。
(5)缺乏测试文档可追溯性
版本控制不仅只为各种测试版本提供了文档管理支持,还能提供可追溯性的文件。这样我们就可以随时查阅软件测试过程中生成的各种文档,这是提高、总结和分享测试经验的重要途径之一。