mstiunicon 发表于 2007-5-15 11:17:13

Coming of Age: Test Automation Grows Up

时代的到来:测试自动化的成长历程
2005-01-26,作者:Linda G. Hayes,翻译:mstiunicon

每个人都想要实现测试自动化。由于应用变得更加复杂,并且造成了更大的风险,测试消耗的成本更高并且花费的时间更长了。生活中的一个事实是,由于受到销售新目标的时间和预算的约束的限制,将测试过程自动化就是圣杯(指最好的解决办法 the holy grail)。这没有什么奇怪的。
但是奇怪的是大规模的测试自动化没有发生。差不多每年有15亿花费在软件质量工具,你可能会期望大部分的测试能够被完全的自动化。但是尽管自动化压力测试有了很好的进展——这是符合逻辑的,因为手工创建大规模的数据量是不现实的——功能测试被自动化的部分目前是少于10%的。这是什么导致的?
事实上,测试自动化技术在过去20年里,发生了根本的变化,但是大多数的公司在跟进的时候失败了。理解为什么你的测试很可能还不能被自动化,可以帮助去理解测试自动化是怎样走到现在这一步的。作为一个在PC机还没有出现之前就在这个行业的人,我能给你第一手的资料。

婴儿期:捕获/回放
最初测试工具是小巧可爱型的。它们提供被称为捕获/回放的功能,概括地说,就是以按键和屏幕的形式记录手工测试,然后简单的回放,寻找差异点,简单并且迅速。
现在回顾一下,我们在想什么?试着通过这种方式进行自动化测试,就像试着记录你的开车去工作的过程一样,以便你能在第二天看报纸的时候再次回放。相信你能捕获方向盘,油门和刹车,但是当你回放它的时候,并不能保证交通信号灯仍然是绿色的或者不会有一辆车正好占据了你要换的车道。灾难是不可避免的。
很多公司热情购买那些工具,并且用之记录了数以千计的脚本,然后他们沮丧地发现自己试着去调试的是大量的无法理解的按键,试着去理解是发生了什么错误、在哪以及为什么发生。大多数公司放弃了,转向了手工测试,因为它消耗更少的时间。BS一下。

儿童期:脚本
作为一个测试工具销售商,我们意识到我们导致了一些灾难,因此我们拼命抢着去增加新的命令来允许测试人员做出判定、分支、循环并且通常能够控制回放的流程。使用我们的汽车例子,我们可以实现这样的逻辑,明确地讲,如果灯是绿色的,那么赶快踩油门,如果红色则踩刹车,如果是黄色的,就估计一下距离并且决定踩哪个踏板。
虽然这些新的特性解决了老问题,它们也带来了新的问题。大多数的测试人员不是程序员,因此这些新命令对他们来说就是一门外语,并且需要需要一些他们不具备的技能。他们要么用自己的方式来使用工具,也创建更多的很差结构的代码,要么他们以雇用程序员或者附加的技术资源的方式调入外部资源,而这些程序员或技术资源创建了甚至更多的唯一性结构的代码。
随便哪种情况,公司在疯狂的脚本化后被一种叫维护的后遗症惊醒了。为每个测试用例编写脚本能够比被测应用生产更多的代码,并且每次软件发生变更,所有的测试都要被更新。再次的,很多人放弃了并且转向了手工测试,因为现在自动化不仅仅比以前消耗更多的时间,它也比以前消耗更昂贵的资源。

青少年期:框架
经历过几个项目和版本的自动化小组开始意识到,他们得要开发一些可重用的库,使得非技术的测试人员也可以使用并且更容易的去维护,然后框架就诞生了。框架本质上是组件库,用来执行标准的测试任务,能通过那些不一定是程序人员的人把他们组合到测试用例中,当然这在很多方面具有完美的意义——把任务从自动化技能与应用系统知识分开了——但是它仍然是一个需要长期的开发和维护项目。对于一家公司投资了50万或者更多——每年——用于开发和维护一个自动化的库这种事,太平常不过了。噢,恐怖。

成年期:商业应用
在一些年并且在定制的、内部开发的框架上花费了数百万美元后,一类商业支持的自动化框架涌现了。这些新的解决方案更像是代替DIY语言的应用程序,并且由工具产商开发和支持。
就像很多公司最终退出开发他们自己的财务系统,并且开始购买财务系统一样,因为它比自己开发的更便宜,很多在寻找测试自动化之路的公司也正在开始意识到测试自动化正在成为一个商品。完全的行业定制框架和脚本并不是必须的:对每个应用系统来说,所有的独特性只是在测试用例上,而不是他们是怎样被执行的具体实现上。

成熟期:持续改进
对于这个阶段,最有趣的事情是,直到今天仍然有公司在寻找捕捉/回放的工具,并且相信它是多么的自动化。也有一些公司仍然在忙于编写成千上万行的测试代码,或者花费数十万在开发自己的独特的框架。
再次的证明,没有任何的惊奇,习惯的力量是巨大的。在一些公司放弃他们自己的总帐系统并转向更便宜、更强大的商业产品之前,往往需要花费十年的时间。这就是现实生活中的事实,旧的习惯很难消亡,并且不是所有的决策是真正的只因为商业的理由。
但是关键是:仅仅因为你之前已经做了一些事情,或者仍然在做一些事情,并不代表你应该再次做同样的事情或者继续做同样的事情。如果你已经进行了自动化测试一段很长的时间,可能是时候停止了,后退一步,重新开始。有时候一个崭新的开始,事实上是一个质的飞跃。

[ 本帖最后由 mstiunicon 于 2007-5-15 11:18 编辑 ]
页: [1]
查看完整版本: Coming of Age: Test Automation Grows Up