明天的软件测试工作会如何做?

发表于:2013-01-09来源:新浪博客作者:lxg0618点击数: 标签:软件测试
明天的软件测试工作会如何做?首先要说的是,比起目前最复杂的计算机系统,我们生物系统要复杂上不知道多少万倍。

  首先要说的是,比起目前最复杂的计算机系统,我们生物系统要复杂上不知道多少万倍。但是,尽管经过数十亿年的进化,经过了无数次的自然选择,生物系统仍然存在瑕疵。人类开创的计算机文明还在一个非常初始的状态,错误也会层出不穷,作为检出错误的有效方法,测试一定会在很长一段时间内一直存在下去。因此,作为一个测试人,我不用太担心我从事的职业会消失。

  测试一直会存在,但未来的测试会是什么样的呢?James Wittaker曾经在他的博文中说过大意是如下的一段话“几十年间,开发技术日新月异,开发人员如果离开一线几年,再跟上形势就难了,但是90年代的测试人员只需要经过一定的培训就能适应现在的测试工作。”从这些话里其实可以读出两层含义:一、测试工作最根本的部分是很有生命力的,如等价类法,简直一切系统通吃,且有效;二、测试领域的发展有有些缓慢。

  缓慢在哪里呢?首先我们来考虑一下测试工作的最根本目的是什么?我认为测试最根本的目的就是预防并发现保证被测系统的质量。被测系统的质量问题产生于系统被构建的所有环节,根据缺陷放大率理论,越早发现缺缺陷代价越小。但是放眼望去,我们的缺陷主要仍然是在系统开发的中后期被发现的,测试的预防职责并没有很好的体现出来。

  其次,我们构建的系统越来越庞大、复杂、牵一动百。根据经验,越复杂的系统,bug的影响面越大,为消除这些bug需要作出的测试强度也会越大,有时候会指数级增长,如果手工测试会极大加大测试成本,这时候自动化测试就会变得不可避免。而据我了解,整个业界(也可能是国内)的自动化水平还处在一个相对低下的水平。

  最后,其实也是作为测试者最为关注的,基础测试理论及体系在多年没有太大发展。自从V模型和W模型形成后,大多数企业都在应用它。随着开发模式的发展,敏捷测试,测试驱动开发,实例化需求等理念被推出,测试的变革只是这些模式中的一部分,并没有形成一个适应现代开发的新型测试体系(目前我有点怀疑仅在测试角度上是否能建立起这样的体系)。

  因此“缺陷发现晚“,“检测成本高”,“测试体系理论有所停滞”是目前测试工作最明显的短板,也是近几年测试工作者、乃至整个IT行业共同努力的方向。在业界已经有了比较不错的理论及技术,如各种优秀的开源自动化框架(Xnuit、selenium、Robot framework、Fitnesse等)、测试及开发方式变更(ET,敏捷,TDD,ATDD,BDD,CI、实例化需求等),只不过还有待深入探索及大力推广,在这一过程中也会形成一个适应现代系统开发的测试理论。在变革大潮中,测试工作者的工作内容将会发生显著变化。我们要主动的去拥抱变更,而不是被动的去接受、甚至抵触,因为潮流是不可逆的。

  最后扯一扯测试更远的未来。高级动物的生物机体发展出了免疫系统来抵御细菌和病毒(可类比bug)入侵,总结一下免疫系统的三个特点:那就是内生、高效和智能。内生指的是不依靠生物体之外的力量来消除bug,高效指的是在bug出现的最初期就产生反应;智能指的是碰上新的bug以后会根据新的bug特性产生抗体并终生免疫。相比我们现在的测试工作就弱多了,我们不是内生,并不高效,依靠的是纯粹人脑。在遥远的未来,也许我们会为我们创造出来的系统制造一套免疫系统,而测试就是这个免疫系统中的重要组成部分。不过。。。那时候这些系统还需要人类么?

原文转自:http://www.ltesting.net