《经营成功的测试职业生涯》——《探索式软件测试》 James A. Whittaker

从(测试)初学者阶段到专家阶段之间存在着一个“测试的山峰”,人们需要通过一系列个人辅导、获取信息和接受常规指导来翻越山峰。成为一个测试初学者是很容易的,成为职业的测试人员也并不艰难。本文的重点正是讨论如何翻越那座位于职业测试人员和测试专家之间的山峰。

  上山

  我所能给出的最好的建议是从两个方面来思考问题。对于你参与的每一个项目,都有两部分的任务。第一部分:保证当前的测试项目获得成功。第二部分:学习你应该做些什么以便使下一个测试项目更加容易。我们把它称为“测试今天的项目,准备明天的项目”。如果你做每一个项目把它都分割为上述的两半,那么几乎可以保证你能持续获得进步。这样,你就可以随着每一个参与的项目逐渐成长为更优秀的测试人员。

现在就让我们来关注第二部分的任务——为下一个项目做准备。我们需要注意三个概念:重复、技术和漏洞。

  重复

  做任何一件事,绝不要重复两次而不意识到或质疑这其实是个问题。测试新手不断地做着重复的工作,而真正花在测试上的时间少得可怜。关注这些重复劳动,并且留意由此造成的真正的测试工作时间的流失。为了能翻过测试的山峰,必须做一个测试人员应该做的工作,而不是实验室管理员或者测试机器管理员的工作。

  技术

  测试人员常常会对软件失效进行分析。分析缺陷时,我们从开发人员的失败中学习如何编写可靠的代码,同时我们也分析被我们忽略的缺陷。

  但是,分析我们的成功也同样重要。在测试中找到的每一个缺陷都说明我们的测试流程正在有效工作,都是一次成功。分析我们的成功,我们使用什么技术找到了那个缺陷?我们是否可以创建一种方法来找到更多这类缺陷?我们是否可以记住一些实际的测试经验并不断地加以应用来帮助们的工作效率?软件的哪些症状可以提示我们它具有缺陷?我们将来能否从那些症状中得到更多的警示?换句话说,这不仅仅是一个缺陷或是一次成功,这个缺陷都教会了我们什么,是否使得我们将来成为更好的测试人员。

  理解我们成功的原因很重要,只有这样做,成功才能被复制。对于测试人员来说,这种保证成功的原因就是一系列的测试技术、建议和工具,它们可以提高我们在未来项目中的工作效率。

  漏洞

  测试人员最终都会很擅长寻找缺陷,但是要翻过测试的高峰,我们需要更有效率:高速低阻。我们需要一种本身不含缺陷的缺陷查找技术!

  我喜欢这样来考虑问题:测试人员检视自己的工作时也需要发挥那种寻找缺陷的能力。我们必须使用和寻找产品缺陷一样的流程来寻找我们自己的测试流程、测试过程中的缺陷。我的测试流程是不是有问题?这里面是否有缺陷?这里是否存在着妨碍我提高效率的障碍?

  你必须一直寻找更好的方法。有意识地去确定那些限制能力、阻碍前进、减缓速度的东西。是什么限制了你的测试能力?使用你拥有的测试能力来最优化自己的测试流程,这会帮助你在测试的山峰上快速攀登,并增加你翻越山峰后成为专家的机会。

  巅峰

  测试山峰的巅峰处是一个美好的地方。但这并不是最终的目标。而此时的下坡路就是用你的洞察力和专家知识来帮助周围的人也成为优秀的测试人员。自己登顶是一回事,帮助他人(那些能力不如你的人)登顶却完成是另外一回事。

  一般来说,那些成功登上测试巅峰的人会成为使用工具的大师。那些商业工具、开源免费工具和自己写的工具是极好地提高工作产出、增加工作成效的方法。但测试人员不能仅关注测试工具所提供的信息,过于依赖于测试工具可能使测试人员遗漏重要的软件缺陷。登顶需要真正掌握的是“信息”。熟练掌握信息,指理解这些信息将如何影响测试,并保证最大限度地利用这些影响。有两种信息是测试登顶者必须关注的:来自应用程序的信息和来自之前测试的信息。

  来自应用程序的信息包括需求、体系结构、代码结构、源代码……甚至是关于应用程序在执行时做了哪些事情的运行信息。在编写和执行测试用例时,需要考虑这类信息,但信息的多寡在很大程序上取决于测试人员的能力,这是一种能够使测试更高效的能力。在测试中使用这类信息越多,测试就越偏向于工程而不是猜测。

  来自测试的信息意味着你必须关注在测试时所做的一切,并使用获得的信息来影响今后的测试。你是否知道你的测试是如何与需求结合的,知道一特定需要已经得到足够的测试?你是否使用代码覆盖率来影响未来的测试?你知道当代码更新或缺陷修复时哪些测试会受到影响,还是只是重新运行所有的测试?理解测试进行到什么程序并随着测试调整策略,这是测试成熟的标志。

  我们在某一个测试项目中,大量使用代码改动量(由于添加新特性或修复缺陷而改变的代码)和代码覆盖来影响我们的测试。我们花了很大的力气将代码覆盖和代码改动量通知测试人员,帮助他们理解哪些测试用例对覆盖率有贡献,帮助他们测试改动过的或修改过后组件。最终的结果是在代码确实被改动时,我们清楚地知道哪些测试会被影响而只重新运行那些测试。我们还知道每个新的测试用例是如何对总体的接口、特性和代码覆盖率产生作用的,从而指导我们的测试人员,让团队中的每个人在他们所创建的所有测试用例基础上,写出更有意义的测试。

  你用哪些信息来指导你的测试?你如何保证信息是可获取的,以便在测试中随时可以得到?你如何使得信息变得有用,以便它能以良好的方法影响你的测试?这些问题的答案将决定你在真正专家测试山峰时的前进速度。

  下山

  到达测试山峰的顶峰的时候,你已经成为一个十分能干的测试人员了,能力也许相当组里所有同事能力的总和。无论你在做什么,请不要试图做得比你所在的整个团队都好,不管你对此感觉有多好,或是你的老板对你逼得有多紧。一旦你走在下坡的路上,就不要再去争取“找到最多缺陷的人”或者“找到最有意义缺陷的人”这样的荣誉头衔。反而我推荐你减少花在测试上的时间,而把创新作为你的首要任务。在测试上创新指不急于向前,而是仔细观察、洞察先机、找到瓶颈并改进团队中所有其他人的工作方式。你的工作变为帮助其他人进步。当你走在下坡的路上,你能做的最好的事就是尽量保证更多的人能成功地爬上山峰的另一侧。

posted @ 2012-09-03 18:55  myLittleGarden  阅读(559)  评论(0)    收藏  举报