测试者的帽子

发表于:2010-3-15 11:41

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:liangshi    来源:51Testing软件测试博客

  去年参加校园招聘时,有一位学生问我:“做测试是不是比较枯燥?”我不想骗他:“在测试过程中,有许多工作是很琐碎的,与开发者的创造性工作相比没有明显的成就感,的确很枯燥、很无聊。但是,测试也有乐趣。测试的乐趣来自于全局观,来自从于不同的角度考察系统的满足感。”

  Kent Beck在介绍TDD的时候,建议开发者在不同的开发活动中要戴不同的帽子——交替用“测试”和“开发”的视角处理当前的工作。这篇短文将介绍测试者的帽子和戴上帽子的乐趣。

  攻击者的帽子。Myers在 1979年就指出:测试是为了发现错误而执行程序的过程;成功的测试用例是使程序失败的测试用例。这使得测试者象士兵一样去搜索被攻击阵地的弱点和漏洞。这些弱点可能来自产品经理含糊的邮件、来自紧迫进度压力下的手忙脚乱、来自咖啡因、可乐、茶水混在一起的头昏脑涨。测试者需要反复地搜索、猜测、尝试和攻击,才能获得成功。通过艰苦的努力发现去发现隐蔽的bug,这就是测试的根本乐趣。这也许只有测试从业者才能理解。

  客户的帽子。在许多开发团队中,产品经理负责规划产品功能,但并不真正使用产品;开发者负责开发框架或模块,但并不部署整个产品。是测试者,他们代表客户,通过部署、使用被测试软件,率先获得产品的全局观。而全局观是至关重要的:成功的产品不是没有错误的产品,它必须满足用户目标且提供良好的使用体验。测试者要学会“角色扮演”,将自己沉浸在用户的情景中,去保护用户的价值。这不是一件容易的工作。

  咨询师的帽子。产品经理不喜欢别人对他的开发安排说三道四,开发者也不喜欢别人对他的设计指手画脚,但是他们都愿意接受有价值的建议。由于测试者从多个角度考察系统,他们往往可以发现遗漏的细节,提出有力的证据,贡献良好的想法。在资源允许的情况下,测试者可以评审规格说明、设计、代码,并贡献自己的想法。以我自己的经验,“易测试性”和“对调试的内建支持”是最容易被忽视的功能点,测试者需要从项目的初始阶段就开始持续增强它们。正如Martin Flower所说,测试移到了编程的前沿和中心位置。

  开发者的帽子。对于自动化系统测试,测试者的测试开发是基于被测试系统(SUT, Software Under Test) 的二次开发。测试者通过在SUT上构建“面向测试的应用系统”,一方面检查SUT的正确性,一方面检验SUT能否支持客户去实现客户目标。既然是开发应用系统,测试者就要考虑架构、部署和维护。而且,测试处于开发的下游,经常受到上游活动的影响,因此对测试系统的易扩展性(需要持续地加入新的测试用例)、可维护性(在上游工件发生变化的情况下,将影响控制在可接受的程度)、可调试性(能够快速地定位产品代码和测试代码中的缺陷),有较高的要求。此外,测试者承担的任务很多,能够用于开发、调试的时间相对较少。因此,对测试代码的质量和生产率的要求要高于平均水平。谁说测试开发没有挑战性?

  系统管理员的帽子。测试者需要将构建出的产品部署到测试环境中,运行测试用例来模拟业务过程,监控测试结果和系统运行状态以发现潜在的错误,生成报告以反映当前系统的情况。这与系统管理员的工作非常类似。不同之处在于,测试者将系统管理员数月的工作压缩在几天内完成,且反复迭代以适应产品的变化。对于一些在线系统,系统管理员是很重要的客户,他的工作对于系统的稳定性和可靠性有重要作用。测试者需要在测试环境中扮演他的角色,去发掘他可能会遇到的场景和问题,通过改进产品设计,以简化和便利他的工作。

  侦探的帽子。遇到一个难以解释或复现的bug,测试者需要调动各类工具、使用多种技巧、发挥往日经验去探索可能的原因。而解决问题的唯一武器,就是思考。测试者需要戴上福尔摩斯的帽子,不放过问题中的任何一个细节,尽可能地分析出可能的因果关系,来探索背后的真相。不断否定已有思路的思考、不断向终点探索的思考,可能是软件开发中最痛苦也最有趣的活动。

  数据分析员的帽子。在软件开发过程中会有许多数据,测试者需要有选择地收集、分析和解释它们,来指导进一步的开发活动。例如下图反映了产品代码(App Code)和测试代码(QA Code)的行数随时间变化的趋势。这里有两个有趣的现象:一、产品代码远多于测试代码;二、产品代码有快速的增长,但是测试代码的增长却很缓慢。这是不是在暗示测试有跟不上开发的风险呢?也许不用担心。对于现象一,可能的解释是:(1) App Code包括开发者的单元测试,因此不完全是产品代码;(2) 测试者用高阶脚本语言开发自动化测试,用较少的代码可以实现更多的逻辑;(3) 许多的测试用例是数据驱动的方式,QA Code没有包括存储在文件或数据库中的测试数据。对于现象二,可能的解释是:(1) 作为下游活动,测试总是落后于开发。测试者还在测试前一阶段的产品代码,还没有开始测试最新签入(check-in)的代码;(2) 测试者正在准备测试数据,还没有编写新的测试代码;(3) App Code增长是因为开发者引入了新的开发库,签入了大量已有代码。总之,数据很有趣,但是更有趣的是对数据的解释。要想获得真实的情况,就必须和相关人员讨论。

  服务者的帽子。睿智的前辈教诲我们:测试是一种服务角色。测试员是否成功,主要是看其是否很好地满足了客户和要求和最佳利益。这里的客户包括项目经理、程序员、技术支持人员、系统管理员、管理层、最终用户和项目相关人员。测试者要认真研究,找出对项目最重要的人,找出要服务人。这是做好测试工作的第一步。如何为客户提供更好地服务,是测试者需要持续思考的问题。

  当然,测试者还有许多其他的帽子,更多的帽子也会随着职业的发展在未来出现。尽可能宽泛地思考,频繁地更换帽子,是测试者的乐趣。坚持一种视角,持续地挖掘,是测试者的快乐。Happy testing!(以上言论仅代表作者的个人观点,不代表51Testing观点)

版权声明:本文出自liangshi的51Testing软件测试博客:http://www.51testing.com/?298785

原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。

精选软件测试好文,快来阅读吧~

精彩评论

  • gergel
    2011-6-23 17:08:10

    笔者写的很全面,在测试过程中我们需要扮演不同的角色,去说服不同角色的人

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号