优秀的系统验证测试人员应该具备哪些素质?
在 8 年多的软件开发工作中,我曾从事过各种项目的设计和开发,并且从初级开发人员成长为高级开发人员,最终成了一名软件架构师。在此期间,我意识到测试工作的重要性和挑战,甚至曾自愿地对自己设计的程序进行测试,这是出于“自己解决自己的问题”的考虑。大约在一年前,我成为了系统验证测试 (SVT) 组的负责人。我之所以想到要撰写这个专栏,是因为与所在部门的一名测试人员的闲聊,情况是这样的,该测试人员以前的一名同事申请了我部门中的测试职位。当我向这名测试人员询问有关申请者(当时他正从事开发工作)的情况时,她的回答是“对这个人我已经记不大清楚了,但他肯定是一名优秀的测试人员,因为他是一名开发人员”。
听到这样的评论我感到震惊,但是后来我发现,对于开发和测试团体来说,这是一个普遍存在的观点。的确存在许多优秀的开发人员和优秀的测试人员,但是在某个方面非常一流,并不一定就意味着在其他方面也同样优秀。所以作为一名测试管理人员,我需要说明成为一名优秀的 SVT 测试人员所面临的挑战和应该具备的独特品质,这不仅仅是要吸引高素质人才加入到这个行列,同时还可以分享这项工作给我们带来的自豪感,并且或许可以为测试工作赢得更多的尊重。
发现客户价值
按照规定,SVT 组负责进行系统级测试。什么是系统级测试呢?这是一个常见的问题。我的理解是,进行系统级测试的目的是为了确保通过产品所提供的功能,实现既定的客户价值。
那么,什么是“客户价值”呢?其答案正是为什么客户购买和使用某种产品的原因之一。例如,我使用 Microsoft® Word 已有许多年了。回忆我个人使用该软件的经历,在早期的版本中,最苦恼的事情是它容易在编辑的过程中发生崩溃,这样就会丢失最近一次保存以来的所有工作。幸好,现在的版本不再出现这种情况了。甚至更加完善,它会定期地自动保存文档,这样一来,即使在退出的时候忘了保存文档,仍然可以恢复到最近一次自动保存的副本,对我来说这是个非常好的特性。这种作为客户的经历使我意识到,尽管该产品提供一般性的功能,但正是其独特的特性使得它能够从众多的竞争产品之中脱颖而出,并且正是这些提供价值的特性使得其客户钟情于该产品。因此,对于优秀的 SVT 测试人员来说,最重要的品质是能够清楚地了解每个特性的客户价值。
尽管可以很容易地从设计文档或用户手册的简介部分中找到每个特性所允诺的客户价值,但是要有效地将它们合并为测试设计方案的核心,并不是那么简单。要实现这一点,测试人员需要了解技术的采用周期,以及该技术当前位于其采用曲线中的什么位置。他还需要了解提供类似客户价值的竞争技术,以及有可能共同使用的协作性技术。
测试更广泛的场景
我观察到新的 SVT 测试人员常犯的一个错误是,他们总是从局部而非整体的角度来看待某种技术(或者产品特性)。结果,测试工作重点关注于产品与设计的符合性,而不是它所提供的真正价值。例如,当在 J2EE™ 技术中引入容器管理的持久性时,其目标是为数据库的访问提供一种更简单并且更具可移植性的编程模式,它的竞争技术是其他持久性技术,如 JDBC 和持久的数据对象。如果该技术或特性不易于使用,并且不能够伸缩或至少执行其竞争技术所能完成的任务,那么该特性就难以获得接受,即使客户购买了这个产品,他们也不会使用该特性。因此,SVT 测试人员的任务是发现问题的本质,并在产品发布之前进行报告。