QA 战士,第 1 部分: 高水平测试人员的战斗策略
 

2010-02-22 作者:Laura Rose 来源:ibm

 
本文内容包括:
让我们来面对现实:打比方说,软件测试人员经常处于作战状态。资源和需要完成的工作量之间存在着激烈的竞争。我们与时间斗争。我们即寻找缺陷又验证修改。总之,我们是战士,并且在战争中胜利的是高水平的测试人员。

在本文中,我将考虑孙子的书孙子兵法中的古老战略,并且将它们应用于高水平软件测试工程师的领域中。在董事会,或开发实验室中,这些相同的基本原则定义了战场上成功的最佳方法。

孙子兵法的简要介绍

孙子是在大约公元前 500 年撰写了孙子兵法的实践哲学家。几个世纪以来,孙子兵法在中国和日本军事及政治战略中得到最高的尊重。在 2001 年,Gerald Michaelson 在他的名为 The Art of War for Managers 的书中,将这些战略转化为商业领域的战略。

许多书籍介绍了类似的商业战略和社会上有思想的人们(The 100 Simple Secrets of Successful PeopleThe Seven Habits of Highly Effective PeopleGetting to YES: Negotiating Agreement without Giving In,只罗列一些),但是我认为回到古代的源头是令人神往的,除此之外,就纯战略而言,我们几乎不可能改进孙子提出的原理。

Michaelson 将孙子的战略转化为十三个部分。借助孙大师和 Michaelson 的思想,我甚至进一步将这些成果“转化”为具体到与高水平软件测试工程师最相关的内容上。我发现 Michaelson 的分类和子标题非常有用,因此我以类似的方式组织我的讨论,如下:

  • 始计
    • 彻底地估计情况
    • 比较属性
    • 寻找战略转机
  • 作战
    • 调度足够的资源
    • 结合时间
    • 每个人必须从胜利中受益
    • 了解自己的技艺
  • 谋攻
    • 不战而胜
    • 总是以强攻弱
    • 提防“示弱的人”
    • 遵守基本原则

从这里直到本文末尾是第 1 部分。后面的部分将介绍以下剩余的内容,每一个都有自己的子部分:

  • 军形
  • 兵势
  • 虚实
  • 军争
  • 九变
  • 行军
  • 地形
  • 九地
  • 火攻
  • 用间

根据我对这些主题的考虑,我不打算同样详细地介绍每一个主题,因为有一些比起其他的与高水平测试人员更相关。我还将在文章许多部分使用代词“他”来代表“高水平的测试人员”。这种指代并不是说测试人员是男性。事实上,在白话文中,第三人称单数代词既不是男也不是女,而且虽然被撰写的人物可以用女字旁的她,但是在孙大师的年代不这样做。

始计

为了让重要的工作成功,本质上必须慎重。在软件开发中,有时候更困难,因为虽然基本的原则对于所有项目都是一样的,但是要根据具体情况修改战术(或执行)。因此,您不能盲目地复用以前的计划。这将引出我在此部分中讨论的三点:

  • 彻底地估计情况
  • 比较属性
  • 寻找战略转机

彻底地估计情况

“良好的评估是成功运作的基础。” 1

测试所涉及的全部内容都与评估有关。可靠的贡献者和可信任的测试人员必须有效、准确,且客观地评估产品的质量。这真的是任何可信赖的测试人员的主要作用。

然而,顶尖的测试人员不满足于典型的产品质量评估。他不限于根据需求或者产品被设计的工作方式进行测试。他会更进一步,他知道所列出的需求只是产品用途的基线。越过设计者期望客户使用产品的方式,他看到了价值和灵感。他调查客户如何期望使用产品,花时间了解客户任务,并且概括产品如何实现客户的目标。

通过这种方式,他可以将自己的行动和活动直接与客户的整体商业目标相连,并且很容易地说明他的活动如何为其客户的客户带来价值。

一旦检测出问题,所有好的测试人员都报告、描述,并且追踪缺陷。但高水平的测试人员会越过当前的情况。他深入问题的底层原因,以及为什么用这么长时间发现,并且建立减少发现时间的方法。他探求新的更好的方法来进行测试、自动化,及报告。他插入缺陷和错误,从而更快且更有效地找出隐藏的问题。知道了系统中的缺陷总是比有时间测试出的缺陷要多,他就将时间和精力放在客户更可能使用的区域。他还支持并启发组织为他生产的软件创建更好的诊断和校准工具。运行可靠性工具可以在问题影响到客户生产力之前预测产品中的老化。监控工具在长期内可以节省时间,因为它们减少了创建已知问题的条件的时间。 2

高水平的测试人员还监控领域和客户报告,从而检验任何错过的测试区域。他将“实验错误”或“客户过失”解释为产品中的含糊或模糊的东西(不是直观的)。他通过发表论文、FAQ,和期刊文章来减少客户的学习曲线,从而减少所有权的成本。他通过将其产品的知识改编为可复用的智能的客户的副产品,例如文章、演示文稿、音频文件(举例来说,podcast)和视频,来避免未来的问题。

他还将这些可复用的客户的副产品带到试映、会议和研究会上。这帮助他的公司处于那些领域中的“思想领导者”地位,从而增加他对其组织的价值。

比较属性

“比较竞争对手的实力和弱点。”

高水平的测试人员了解如何比较他和他的队友所作出的贡献,因此他可以补充并完善团队。他知道,较强的且更成功的团队拥有各种才干。每个人都赏识其他人拿出来的东西。高水平的测试人员选择完全且连续的分布,因为他了解,对于他可以做且完成的事是不存在限制的。他知道他的同事的能力和才干不限制他自己的价值,但会扩展他的能力来完成更多事情。高水平的测试人员了解,在团队中他能够得到无限的才干、经验及资源。

与此同时,高水平的测试人员对他的价值和贡献的看法是现实的。他了解什么阻碍了他发挥充分的潜能。他现实地回顾他的职业道路和教育。他接触指导者,并且确定他的领域中的英雄,从而效仿并钦佩。他认为质量或测试认证是正确的,并且与其职业目标相符合。他了解外界的认证提供额外的授权、头衔,和公认的专家经验的水平。事业上达到的每一个台阶都让他对其技艺有了不同的观点或看法。当持有新的观点时,高水平的测试人员就会拟定新的愿望和目标。

寻找战略转机

“开发超越常规的战略。”

高水平的测试人员开发超越常规的战略。虽然可靠的测试人员在其任务的“认识到的”范围内工作,并且等待将要出现或分配给他们的机会,但是高水平的测试人员创造机会,并且将人从问题中分离。他专注于共享的利益,不是个人的立场(个人主义)。他看到互惠互利的选择,不是纯粹关注客观标准。 3

当确定出问题之后,高水平的测试人员快速地致力于解决方案。因为他了解,结果出自解决方案,而不是出自继续的问题讨论中。

应用此智慧

在此部分中,我已经介绍了评估情况、比较属性和生成有创造力的策略的一般概念。但那些一般解决方案的实际解决方案和应用程序是什么样?一些包含:

  • 根据来自测试以及用客户的方式使用产品的经验书写白皮书、会议演示和 FAQ。
  • 与客户见面,收集客户的商业过程模型、应用程序、测试文件,和环境数据。
  • 浏览客户的站点,使用真实世界的应用程序和环境在实验室中进行测试。
  • 继续评价特定认证的适合性。

作战

理想的战略是效果最好的。伴随现今不断变化的软件技术,今天能用的明天可能就不能用了,并且正确的战略只能在适当的执行下成功。将计划与执行分离会减弱二者的有效性。

调度足够的资源

“投入充足的资源,这样运作可以持续不断。”

这在任何的测试组织中都是极大的挑战。在测试领域中,我们可以管理和协调许多资源。由于您的团队不得不在许多平台和配置上进行测试,因而建立并维护那些环境的职责就落在他们身上。虽然其他人也使用相同的机器,但是当有问题时,测试人员经常成为现场“专家”。每台机器还需要不断的补救和安全性修补来符合安全法规。这耗费了许多时间和精力。所有这些工作都是产品测试之外的。

当进行并行的活动时,充足资源的问题就特别关键。虽然每个人都认识到,为目前和未来的产品和服务分配充足的资源可以确保成功,但是许多组织还是在维护分支和未来的产品研究,以及当前的开发流中共享资源。

知道了上面的情景,您将您的职业发展安排在哪里,准备下一个技术,还是实现提前思考的想法?

由于高水平的测试人员了解他真实的技能以及职业目标,因此他将培训需求和解决方案直接整合到他的工作进度中。他认识到他自己完全控制自己的日程。他知道没有人负责他的成长和幸福。高水平的测试人员表明,好的项目计划有助于他承担的任何任务(也就是,规划工作规模、预测完成日期,以及当落后时,根据要报告的预测的目标策划进展)。他找到有创造性的方式在适当的时间调度适当的资源。并且他在进行过程中与项目涉众保持良好的沟通。

顶尖高手是认识到抱怨只有有限价值的“面向解决方案的”人。他用不可避免的障碍作为革新的契机。他可能让不熟悉的人员解决熟悉的问题,促进不同的观点。

高水平的测试人员还控制时间。他是时间管理技巧的大师,这是我们下一个讨论点。

结合时间

“关键是快速地有效且高效。”

战争中贵在快速的胜利,不是持久战。高水平的测试人员快速地将可采用的想法为组织转化为可度量且有用的结果。高水平的测试人员“打有把握的仗”。 4 在安排课程、参加会议,或参与小组讨论之前,他已经确定出将为团队和组织生成的切实且有用的产品。在他接受并参加每日或每周的会议之前,他会了解会议的日程和目标,以及他们如何能接受他当前的意图。如果集会、会议,或讨论与他的目标不一致,那么他会将精力花在更有关的事情上。这不意味着这些集会是浪费时间。这些特别的会议可能非常有趣且迷人。这只是因为他已经预见到了根据他的目标,他们的活动的商业价值或附加的价值。他已经决定其他事是更适当的。

他结合时间。一旦他将自己的活动与他的目标和愿望相结合,时间就不是问题,因为他会通过灵感完成事情。

每个人必须从胜利中受益

“用每个胜利加强人力资源和物质资产。”

在战争中,成功的指令在于每个人都胜利。当一个人打败敌人时,您拿到了战利品,您将他们的资源与自己的混合,您善待战俘,并将他们添加到自己的势力中。

这在商业中是一样的。高水平的测试人员将其组织的大部分活动转化为整个组织的双赢。如果他读书,或者添加学习午餐会或其他培训活动,他会通过一个包含该知识的实例或将知识结合到被采用的过程中的方式分享获得的东西。

好的测试人员看到他们面前的任务,以及时间表。他们可能加班完成所分配的工作。但他们将资源限制给自己。高水平的测试人员考虑其他选择,他扩展除了自己可以调用的资源。

这里有一些实例:

实例 1:在一个项目中,我们在系统级测试上需要帮助。我们的技术支持、区域执行,和客户培训团队也需要了解我们的产品来完成他们的工作。虽然我们本可以用额外的时间进行测试,但是我们让其他团队帮助我们进行系统级测试。因此,我们进行了测试,而那些团队得到了任务所需的培训和材料。我们还根据他们与客户的经验书写了许多系统的测试案例。

实例 2:我们发现审查很难并入当前的开发文化。理由源于“在进度中没有时间”到“我们真的没准备那种水平的过程成熟度”。但是一旦我们经历了对于测试计划和测试案例的申辩和制定的审查,包括开发的参与,我们就会影响对代码审查的开发。这是我们的胜利,因为我们改善了测试计划和测试案例,并且这是开发的胜利,因为他们在没感觉“受到审查”的情况下,温柔地引入了审查过程。

了解自己的技艺

“掌握取胜所需的经验。”

当然,您需要掌握取胜所需的经验,但您什么时候找时间增强您的技艺呢?我已经介绍了许多耗费测试人员的时间的活动。

由于高水平的测试人员了解自己的真实技能和职业目标。因此他为自己确定出培训需求和解决方案。他提前把这些需求明确出来,因为他了解必须在进攻发起之前就准备好资金(不是在项目开始过程中或开始之后)。培训在适当的时候进行,接近实际需要该技能的时候。 5

高水平的测试人员在他的技艺中加入了连续的行业知识。在他选择的领域中,将自己作为公认的专家,他出现于本地或远程的事件中。甚至在实际地了解会议主题之前,他可能就提交会议提案。当该主题被接受时,他就为这个演讲学习他能学的所有东西。此外,他不总是将主旨限于自己同僚的兴趣内。在为组织中所有层次的听众,从个别团队成员到执行者,演讲并撰写文章的过程中存在很多机会和好处。

高水平的测试人员成为公认的专家的另一种方式是在没什么竞争的地方投入(为自己创建小环境)。将他的兴趣与日常活动相结合可以孕育更有灵感且更创新的解决方案。

应用此智慧

在此部分中,我将孙子的发动战争的思想转化到软件测试活动领域中。这里有一些对于那些一般思想的实际的解决方案和应用程序:

  • 找到一个英雄,并追随他或她。
  • 提交关于您想要多学的东西的会议论文,为您创造完成目标的强大动机。
  • 创建研究小组,共同地实现特定的认证。
  • 延伸网络,创建双赢的关系。
  • 控制您的日程,并且只选择那些与您的目标相关的事情。

谋攻

在任何的实施中,都需要战略。作为“预先的计划”,战略解决的是战争的资源分配。它确定在哪里,什么时候,以什么数量,可以将军力用于打仗。

不战而胜

“最终的胜利是在不冲突的情况下取胜。”

在软件开发中,当出现关键问题时,许多开发人员和测试人员只听取客户的意见。有时候,通过客户的管理链,跨过我们的执行者,并且回到我们这里时,问题已经升级了。此时,我们肯定感觉受到打击。即使这样,战略中的首要规则是重视客户的需求和愿望,以及您组织的能力,从而满足那些需求。 6 不参与冲突就取胜的概念是是孙子战略思想的基本原理。但您如何将这个概念应用于测试组织中呢?

一种方法是找到非对抗的策略。举例来说,找到您的需求和他们的愿望的共同点。这让高水平的测试人员在别人看到机会之前就能看到机会。

以强攻弱

“通过集中力量赢取战争。”

由于高水平的测试人员了解他的实力和弱点,所以他组成合作的联盟来弥补缺陷。这不仅是减少缺陷,而且还以全面的理由增加支持。这件事不只是纯数字的问题,可以以各种方式获得优势。

这里有一些实例:

  • 由于 80% 的软件缺陷起源于需求和设计阶段,并且由于在该阶段修复问题比在构建阶段要容易,所以高水平的测试人员更关注那些领域。这通过对需求和设计文档进行早期的同等代码审查来实现。在进行任何编码之前,还可以将适当的且立场鲜明的客户带入开发阶段,从而评估早期的需求和设计。
  • 由于技术支持人员和技术文档撰写人员也需要了解软件,以及产品的工作方式,所以高水平的测试人员会与那些团队合作。随着他们运行一些高水平的测试人员给他们提供的测试案例,他们对产品越来越了解。
  • 高水平的测试人员与其他团队调查并沟通,从而在内部部署早期的软件版本。虽然大部分组织利用 beta 版在正式版本之前“测试运行”他们的应用程序,但是在此阶段检测出的问题没有机会在第一个正式版中修复。在 beta 版中发现的问题通常安排在下一个“补丁包”或“维护”版中解决。只有至关重要的造成“停产”的发现被修复(伴随很大压力及骚动)。在内部提前部署代码会提供许多 beta 版的优点,而不会向外暴露缺陷,并且不会牵扯到友好得多的客户。这令组织有机会了解产品的质量,并且修复许多找到的问题。

提防“示弱的人”

“不要轻举妄动。”

高水平的测试人员认识到他可能看不到全局。他知道他的观点只是一人之见。他通过提供状态报告以及频繁的更新和预测,努力确保他的经理了解所有事物的状态。

高水平的测试人员关注组织的灵魂或目标以避免错误。看看以下的实例:

在软件开发中,目的不是遵照特定的规程,或者达到显式的退出标准和缺陷数量。目标是生成合格的产品。设置可重复的规程,以及确定量度和退出标准是实现该目标的工具。但有时我们太关注量度,我们忘记了那些规程的目的了。

我曾经听说过一个需要到某个日期为止达到 0 个未核实的(需要重新测试的补丁)数量的团队。因此人们在没有重新测试的情况下关闭了“预计要修复的”缺陷来达到那些量度。

历史表明百分之十的变更会生成其他缺陷。 7 到某个日期为止重新测试允许团队修复那些额外的缺陷。但在不测试的情况下简单地关闭变更不能支持要达到质量的意图或要遵从量度的理由。

任何事情的成功可以通过将您的资源集中于可以有利地取得决定性的结果的地方来实现。您不可能哪里都强。如果您将较多的精力集中于一个地方,那么另一个地方将每人照顾。高水平的测试人员了解量度和规程背后的理由,并且致力于质量的目的,即使这意味着不能达到退出标准或度量目标。

遵守基本原则

“当忽视确保胜利的规则时,失败的几率很高。”

高水平的测试人员了解在其所承担的任何任务中,什么构成了“成功”。他确定了清楚的方向,保持目标,并且不断地依据那些成功的标准进行跟踪。他不迷路,并且保持简单、清楚、直接,且有用的策略和沟通。他选择合适的沟通类型,对于重要的协作,比起电子邮件更喜欢面对面的会话。并且如果沟通没有带来价值,那么也许就不应该进行。

应用此智慧

在此部分中,我讨论了关于战略的一般概念。但对于那些一般的解决方案的实际解决方案和应用程序是什么呢?

  • 了解规程和量度的理由。
  • 比起电子邮件更重视面对面的沟通。
  • 了解会议和任务的目标和价值,并且只参加或分配那些增加价值的。
  • 与具有类似目标的团队进行联合,进行内部的部署。
  • 探索资源的交换,从而增加资源库。
  • 延伸网络,创建双赢的关系。
  • 控制您的日程,并且只选择那些与您的目标相关的事情。

结束语

这是一篇由多个部分组成的文章。这里介绍了第 1 部分,您已经了解了一些实际的方法来增强您的测试性能。如我在引言中所提到的,将来的部分将介绍来自孙子的其他的战略。密切关注!

注释

  1. 开头的引语出自 Gerald A. Michaelson 的 Sun Tzu: The Art of War for Managers
  2. 一个实例是在您的系统中插入“Disk Full”的错误。取代用几个小时用完磁盘空间,您可以快速发现当磁盘满时,您系统如何反应。
  3. Getting to YES: Negotiating Agreement Without Giving In,作者 Roger Fisher 和 William Ury。
  4. Steven Covey,The Seven Habits of Highly Effective People
  5. 当过于提前进行培训时,问题就会出现。公司犯的普遍错误是在实际地并入一个计划来实现技术之前就培训这个“即将用到的”技术。团队在培训时没有前车之鉴。当开始执行时,团队需要再次培训。
  6. The Art of War for Managers,Gerald A Michaelson
  7. 如果您有一百个未核对的缺陷需要重新测试,那么从统计上讲,在您重新测试或回归测试过程中,您可能至少发现十个其他的缺陷。

参考文献

The Effective Executive: The Definitive Guide to Getting the Right Things Done(HarperBusiness Essentials)作者 Peter F. Drucker,HarperCollins Publishers Inc,2002 年。

Sun Tzu: The Art of War for Managers; 50 Strategic Rules 作者 Sun Tzu 和 Gerald A. Michaelson,Adams Media Corporation 2001 年。

The Top Ten Mistakes Leaders Make 作者 Hans Finzel,David C Cook Distribution Canada,2007 年。

A Whack on the Side of the Head: How You Can be More Creative 作者 Roger Von Oech,第三版,Warner Books,Inc,1998 年。

Smart Moves for People in Charge: 130 Checklists to Help You Be a Better Leader 作者 Sam Deep 和 Lyle Sussman,Perseus Book Group,1998 年。

The One Minute Manager Meets the Monkey 作者 Kenneth Blanchard,Blanchard Family Partnership, 1989 年。

The Seven Spiritual Laws of Success: A Practical Guide to the Fulfillment of Your Dreams 作者 Deepak Chopra,1995 年。

The Tao of Leadership 作者 John Heider,Lightning Source,Inc,1984 年。

The Seven Habits of Highly Effective People 作者 Stephen R. Covey,Free Press,2004 年。

The 100 Simple Secrets of Successful People 作者 David Niven,博士,HarperCollins Publications,2006 年。

Getting to YES: Negotiating Agreement Without Giving In 作者 Roger Fisher 和 William Ury,Penguin Group USA, 1991 年。

Managing Your Mouth 作者 Robert L. Genua,Amacom Books,1993 年。

参考资料

  • 参与论坛讨论
  • 您可以参阅本文在 develperWorks 全球网站上的 英文原文
  • 现在开办了一个特别为 Rational Edge 的文章创办的 新论坛,现在您就可以分享您对本文或本期杂志或以前杂志中的其他文章的想法。阅读世界各地您的同行们所说的内容,生成您自己的讨论,或者加入正在进行的讨论。单击 这里 开始。
  • 全球 Rational 用户组社区

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