重视技能
第四种趋势是增进软件测试专业技术知识的水准。在.com流行的年代中有这样的误解,即使没有很深的测试技术知识、业务应用方面的领域知识以及充份的培训,你也能有效地进行测试。但当你面对一个分布式的应用--例如,一个特别的基于Web的应用,就会发生问题。Hung Nguyen关于基于Web应用的测试论著是这种观点最好的代表[注14]。Nguyen认为,测试人员应该知道技术是如何对他们所看到的各种错误产生影响的。他们需要对技术问题有所理解,例如配置的问题,以及他们所检查的技术本身内含的问题。各种细节上的理解,例如了解应用服务器中Bean和Container管理的持续性之间的区别,可以直接影响到你发现特定缺陷的能力。
所以,现在的测试人员除了测试本身的技术以外,还需要理解开发技术和领域知识。例如,假设你在浏览器中看到一个错误:“404 - Page not found”这样的错误可能是错误的链接所引起,也可能是因为某些服务失效而产生。一个好的测试人员并不会在出错页上就停下来,他会进一步诊断出错的原因。他不仅需要对该失效的服务具备足够多的认识和理解,而且他要通过查看其它使用该服务的页面来验证自己的猜测。这就是一种Bug隔离的重要技能。
另一种技能是成为一个很好的探索者。以前,测试方面的很多论述对计划和脚本有很多要求,但现实情况下,一个好的测试人员就是一个好的探索者。他们喜欢在测试过程中发现一些暗示,并知道怎么来进行跟踪。这样的暗示有时很简单,例如一个页面要很长时间才能加载。那么对于一个好的测试人员来说,他可能会想,这其中发生了什么?然后继续了解要通过什么路径可以进一步发现答案。James Bach所写的一些内容可能是在探索性测试方面最好的材料[注15],其中有该课题的非常好的练习。我认为这显然也是一个重要的技能,每个团队都需要这样的技能。
我们在Rational学院的课程中已经非常重视如何去应用基本的软件测试技术。可以和Florida Tech的Cem Kaner一起开始那些专为测试人员提供的软件测试基本原理的新课程[注16]。该课程并不专注于测试工具,而是专注于如何成为一名很好的软件测试人员,尤其是当你正在应用迭代开发过程的时候。最后,测试人员的生产能力和开发人员的生产能力是同样重要的,只有富有经验的测试人员才能使产品让客户获得很高的投资回报率(ROI)。Rational已经发现,一个更快、更经济、更高质量的开发过程的关键就是迭代式开发过程。迭代式过程可以使测试在整个开发周期中得以提前,从而可以更早地发现错误,修改错误也相对更加容易,其成本也相对更低。
但是,我认为现在的测试人员还没有得到很好的训练以胜任迭代开发过程中的测试工作要求,项目经理也没有得到很好的训练以正确地认识测试在迭代项目中所扮演的角色,开发人员也没有得到很好的训练以得到他们需要了解的测试相关技术,例如基础等价类划分。因此我们在RUP(Rational Unified Process)和Rational学院中增加了大量关于测试的材料。而且我们还将继续扩充这些材料以帮助测试人员、开发人员和项目经理们在迭代过程的协同工作中做得更好。
自动化测试
第五种趋势是关于测试自动化方面。目前,为了实行测试自动化,测试人员和开发人员要花费80%的精力来使(自动化)测试成为可能,而只有20%被用于使(自动化)测试变得更有意义。这一可怕的事实使很多人最终放弃了测试自动化。同样,目前的自动化软件质量(ASQ) 工具提供商正花费80%的精力用于重复工作,他们必须重新创建一个基础平台来支持相应的测试和排错工作,而仅有20%的精力来为测试和开发人员提供可见的有价值的功能。
最近,Rational、IBM和其它一些公司开展了一个开发源码的项目,其目标就是要把这两个百分数颠倒过来。该项目被命名为Hyades,取自Eddington用来校验爱因斯坦理论的星云的名字,并由Eclipse.org负责。它的目标也包括加强实验性观察,测试过程及软件度量,最终实现更具实用性的测试自动化。
对于使用Eclipse的开发人员和测试人员来说,Hyades既是一种集成测试及跟踪,也是环境监控程序。Eclipse为整个测试过程提供了标准、工具和互操作性,以使测试能更早地移植到应用生命周期中去。对ASQ提供商和集成商来说,Hyades为自动化测试、跟踪、预定义、监控和资源管理提供了一个可扩展的架构和平台。和目前的测试与跟踪工具所不同的是,Hyades将提供一个统一数据模型(实现了UML测试预定义),这是一种标准的用户工作的流程,包括一套统一的API及相关工具,可以在排列的目标项之间连续地工作。
总结:测试实践的大变革
Rational和一些竞争对手尽管自己也提供商业测试工具,为什么还要加入到象Hyades这样的开放源码项目中去呢? 我的很多同事也问过这样的问题。其核心理由就是上面所说的80/20比例。所有人都很想改变这个比例。
80%的基础平台对用户来说是不可见的,它难以分辨,也难以维护。每当测试所用软件的环境条件更新的时候,(新的编译器,新的库文件,新的操作系统补丁,等等),测试工具就必须随之更新。如果你是一位富有经验的实时分析或自动化工具的用户,你可能早已感受到这种脆弱。你也许已经不止一次在考虑要更换开发环境,因为有些工具不支持一些新的版本。这一维护成本给工具提供商带来了巨大的压力,因此工具商们决定无偿地为新的引擎工作,并分享其成果,进而满足用户的需要。Hyades项目必将为我们的用户提供其价值。
对Hyades来说,它是由一系列分散的努力所组成。在我所归纳的五种趋势中,Hyades是其中的一个组成部份,它将同时为测试人员和开发人员提供新的测试支持方式。这是一种技术,它可以在生命周期的一开始就推动测试,带来工具方面更好的协同性,通过改进测试,新的效果会明显地加入到软件中去。它将为这10年里我能所能看到的在测试实践上的改革提供有力的支持。我相信这种技术,以及其它有类似目标和基础的技术,代表着我们产业的未来。我们这些已被卷入到Hyades项目中的人都有一种使命感,我们不能辜负Hyades这一名称:
让我们描画出金牛座的头部--Hyades星云中的恒星,这对我们来说意义重大,这将带给我们快乐,并使我们能够测量整个宇宙!
--Anthony G. A. Brown, Universidad Nacional Autynoma de Myxico.
备注:
1 http://www.nist.gov/director/prog-ofc/report02-3.pdf
2 Kent Beck作了一个限定,把Marick的想法改称为"Application-Test-Driven Development",可参考Kent Beck《Test-Driven Development》, Addison- Wesley, 2002, 第199页。
3 http://www.therationaledge.com/content/oct_02/f_testFirstDesign_sg.jsp
4 Dean Leffingwell和Don Widrig《Managing Software Requirements》 Addison-Wesley, 2000,第273页。
5 http://fc-md.umd.edu/projects/Agile/3rd-eWorkshop/topic4.html
6 http://junit.sourceforge.net/doc/testinfected/testing.htm
7 他们的教程材料已在以下网址中公开:http://www.testingeducation.org/
另外,Bach的网站www.satisfice.com也是很有价值的资源。
8 Boris Beizer 《Black-Box Testing》, Wiley, 1995, 第13页。
9 Beck《Test-Driven Development》,Addison Wesley, 2002, 第86页。
10 http://www.testing.com/writings/omissions.pdf
11 Meyer《 Object-Oriented Software Construction》第2版,Prentice Hall, 1997, 第331页
12 参见http://www.w3.org/2002/ws/ 和http://www.ws-i.org/
13 参见诸如http://www.therationaledge.com/content/nov_02/f_pettichordInterview_sg.jsp中的讨论
14 Hung Q. Nguyen《Testing Applications on the Web》, Wiley, 2001。
15 http://www.satisfice.com/articles/what_is_et.htm 可以作为一个很好的起点。
16 http://www.therationaledge.com/content/jul_02/f_interviewWithKaner_sg.jsp中可以找到很有价值的相关讨论。
对照:
以下是翻译时所做的部份词汇处理,以资对照:
Test-driven development 测试驱动型开发
exploratory testing 探索性测试
Design for testability 易测试性的设计
Design by Contract 合约设计
artifact 工件
interaction 迭代
stackholder (项目)投资者