【IT168 技术文章】
本文来自于 Rational Edge:当软件开发团队到达了精通的级别,要想找到提高的方法会非常困难。从质量保证经理的角度看,本文提供实用的建议,几乎在开发生命周期的每个区域工作的团队都可能将建议应用到他们的工作中。
一段时间以前,我和一个朋友,一家小型软件公司中的重要人物,讨论有关软件测试的内容。他热心于其质量保证(quality assurance,QA)团队所做的工作,然而尽管他们做了工作,包括创建大量的自动化测试,但他仍旧担心要对公司的产品进行充分测试所花费的时间。“我们需要让 QA 团队更加高效,”他说。“他们做的很好,但我需要让他们达到更高一层。”
他对提高 QA 团队的效率所表现的悲伤令我想起了...高尔夫。(等我一会。)高尔夫是很难学的运动。但真正困难的是,您做得越好,就越难以提高。在 100 米到 90 米间很难得分。在 80 米内得分较难,而在 70 米内得分甚至更难。一旦您到达了那个水平,就要进行很多工作来维持。我可以从自己的经历说起。在结婚 + 抵押贷款 + 生小孩之前,我在又长又有困难的高尔夫球道上遇到 6 或 7 个障碍。现在我在较短而不那么困难的球道上遇到 9 到 10 个障碍。为什么?一个原因是我一年中打高尔夫的次数与过去一周的一样。我希望不久将解决此情况 —— 我只是为孩子(三岁和五岁)买了他们自己的球棒。
这对软件测试也一样。QA 团队通过将包含测试计划、缺陷原因分析,和自动化测试的正式、可重复的过程,替代特殊的测试方法,以变得更加有效且高效。这些操作并不简单,但现今它们对软件 QA 团队来说是相当标准的。但当您做完了所有那些操作,您还能如何继续提高到“下一个层次”?
那天我没有回答他。但从那以后就开始考虑,我认为答案依赖于本文中所描述的操作。
了解您的目标:您所说的“高效”是什么意思?
每当我开始一项工作时,第一步是确保我在讨论提高 QA 团队的效率的时候了解最终的目标。我们必须清楚地定义我们所说的“效率”。标准的(出自于dictionary.com)高效定义是:
ef·fi·cient, adj.
直接产生效果:生效的原因。参见“高效”的同义词。
a. 用最少的浪费、开销或不必要的工作来有效地生产。
b. 展示高比率的输出到输入。
让我们退回一步,定义对于软件 QA 团队来说什么是高效。为了这样做,我们还需要回退一步,并且提醒我们自己,软件 QA 团队和软件测试通常的主要目标。
软件 QA 团队有许多责任。团队不得不审阅功能规格并对作者提供评论。团队必须建立测试工具并撰写测试计划。团队必须运行测试并报告测试结果。还有许多。但所有这些活动都只是意味着一个结束。这个结束就是要寻找缺陷(bug),尤其是那些还没有找到并可能影响到您的客户的缺陷。这就是为什么我们要测试软件的原因:找到缺陷。所有的研究、计划、审阅、测试自动化开发,和维护都为了一个目的:使我们找到软件中的缺陷。因此,当我们讨论软件 QA 团队的效率时,我们真正的意思是我们希望团队能很快找出更严重的缺陷。
现在,我的朋友(我在引言中提到的软件重要人物)所谈论的效率是希望他的 QA 团队能够在,比方说四天内检验一个产品,而不是八天。实质上,此目标意味着 QA 团队必须更快地找出严重缺陷。为了专注于更快找出那些严重缺陷,团队成员不得不停止浪费在妨碍寻找缺陷的工作上所花费的时间。
所以,让高效的团队更加高效的第一步是仔细观察您目前不高效的地方。换句话说,您正在做的,而没有辅助您寻找严重缺陷的事情是什么。什么引导我们进入下一个操作。
“我们决不要欺骗自己”:了解您的团队的低效。
John D. Rockefeller 有一句伟大的格言:“我们决不要欺骗自己。”也许这是他为什么这样成功的原因:他总是对自己诚实。
如果您打算了解现在您的 QA 团队哪里效率低,那么您将必须重视使团队有效的实践。最可能的是,那些实践是现实世界经验的结果,以及其他知名实践的调整,加上许多艰苦的工作。您必须准备改变,并且甚至放弃这些实践中的一些。
这些实践也许很难完成。毕竟,这些实践是对团队有效的主要贡献因素。人们可能对它们有严重的情感依恋。但如果您想要将团队提升到“下一个高效层次”,那么您必须愿意将团队如何工作的所有方面都改变。
问题是:在团队实践分析中,您遵照的是什么?记住,您想要鉴别的正在执行的任务是不会导致新的、严重缺陷的发现,以及那些根据用在他们生成的缺陷上的时间和工作来说只是太昂贵的任务。基本上,您必须将您的计划、希望,和想像与实际比较。软件 QA 团队花时间进行调查研究、测试设计、编码、分解、调试、执行和分析。在项目的开始阶段,团队可能编制出一个完成任务所需的估算时间和人力资源的进度安排。然后,随着整体的项目目标的改变,那个进度安排被丢弃并且决不再看。您必须要做的是实际追踪您要完成任务所花费的时间或努力,和真正发生的事情之间的差异。您必须将此时间或工作的分析交叉引用到工作所产生的结果上(也就是,缺陷)。
所以,在一个项目过程中,有效的 QA 团队可能会在哪里损失时间?(您能对此做些什么?)我所看到的一个部分是负担累赘。