自动化测试空间: http://www.automationqa.com/ 性能测试讨论群:119821036

测试者的帽子

上一篇 / 下一篇  2011-01-10 18:53:22

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

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

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

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

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

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

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

数据分析员的帽子。在软件开发过程中会有许多数据,测试者需要有选择地收集、分析和解释它们,来指导进一步的开发活动。例如下图反映了产品代码(App Code)和测试代码(QA Code)的行数随时间变化的趋势。这里有两个有趣的现象:

一、产品代码远多于测试代码;

二、产品代码有快速的增长,但是测试代码的增长却很缓慢。这是不是在暗示测试有跟不上开发的风险呢?也许不用担心。

对于现象一,可能的解释是:

(1) App Code包括开发者的单元测试,因此不完全是产品代码;

(2) 测试者用高阶脚本语言开发自动化测试,用较少的代码可以实现更多的逻辑;

(3) 许多的测试用例是数据驱动的方式,QA Code没有包括存储在文件或数据库中的测试数据。

对于现象二,可能的解释是:

(1) 作为下游活动,测试总是落后于开发。测试者还在测试前一阶段的产品代码,还没有开始测试最新签入(check-in)的代码;

(2) 测试者正在准备测试数据,还没有编写新的测试代码;

(3) App Code增长是因为开发者引入了新的开发库,签入了大量已有代码。总之,数据很有趣,但是更有趣的是对数据的解释。要想获得真实的情况,就必须和相关人员讨论

image

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

当然,测试者还有许多其他的帽子,更多的帽子也会随着职业的发展在未来出现。尽可能宽泛地思考,频繁地更换帽子,是测试者的乐趣。坚持一种视角,持续地挖掘,是测试者的快乐。Happy testing!

原文:

http://www.51testing.com/index.php?uid-298785-action-viewspace-itemid-210553


 


TAG:

 

评分:0

我来说两句

Open Toolbar