这一篇,我们先来聊一聊软件测试的起源和它的发展历史。
首先其实在最早的时候啊,在十九世纪初,早期刚刚有软件开发这件事情的时候,在这个过程中,那个时候我们的软件规模都特别特别小,复杂度呢也很低。
所以软件开发的过程自然是混乱无序的,相当随意的。
那对于测试而言,测试的含义就特别特别的狭隘。那么开发人员会将我们的测试等同于我们的调试。目的就是纠正我们软件中已经知道的一些故障。有了问题我改一下,然后再调试一下,看看是不是能够正常运行。所以这部分的工作常常是由开发人员自己来完成的。测试呢投入很少,介入又晚一般都是到最后的时候才去简单的调试一下。
当然这是最早期的一个混沌期的状况。
直到到了1957年的时候,软件测试才开始跟我们的开发调试区分开。
软件测试可以叫一种发现软件缺陷的活动。
由于我们一直存在着一种思想:为了让我们看到产品在工作,为了能够更好的测试啊,就得将我们的测试工作向后推一点。
所以呢潜意识里我们把测试的目的就理解为让自己确信产品能工作这样一件事情。所以测试经常被当做软件生命周期里面的最后一项活动进行。
那么当时,不像现在这样我们有很多很多的测试方法,当时缺乏这种有效的测试方法的积累。主要依靠的是什么?是一些我们叫做错误推测(error guessing)的方法来寻找软件中的一些bug。因此大量软件在交付以后还是存在很多很多的问题,软件产品的质量无法得到保证。
这是在十九世纪中期。
那么到了七十年代和八十年代的时候,就产生了比较详细的软件测试的方法。
但是这个时候,同时衍生了两个门派的思想。其中的代表比尔Bill,他的思想是什么呢?这个时期,虽然开发的软件不太复杂,但是当时的行业从业者已经开始思考软件开发流程方面的一些问题。虽然对软件测试它的真正含义还没有什么共识,但是这个词开始频繁的在圈子里出现。在最早软件测试的一些探索者,就开始建议在生命周期开始阶段就要做一些测试计划测试设计。这个时候就涌现出了一派宗师。这个宗师,也就是思想的引路人就叫做比尔(Bill Hetzel)。他出版了一本书,叫做《软件测试完全指南》,当然不知道有没有同学看到过这本书,英文名字叫做《the complete guide to software testing》。他最早的时候在七二年的时候,在美国北卡罗莱纳组织了一个历史上第一次软件测试的正式会议。
在这个会议上呢,他提出了软件测试的流程,这方面的内容。
同时他给软件测试下了一个定义,软件测试就是建立一个信心,认为程序能够按照我们预期的设想运行。
当然后来到了八十年代的时候,他又对这个定义修订了一下,就是评价一个程序或者系统,它的特性能力,并且确定它是不是能够达到预期的结果。软件测试就是以这个目的来发生的一些行为。
所以在他的这种定义中,设想和预期的结果,其实就是我们现在说的用户需求,还有功能设计。
那么他把软件测试的质量定义为符合要求,所以他的核心观点就是我们现在叫做软件测试的第一类方法。测试方法是试图验证我们软件是否工作。所谓工作就是说我们软件的功能正常运行。
能够按照预先的设计来执行,用一些正向的思维,针对软件系统的一些功能点,逐个验证它的正确性。所以这是比尔他所带来的一种思想。
但是这个思想还是受到了很多业界权威的挑战。代表人物就是我前面列出来Glenford Myers.他的代表作叫做《软件测试的艺术》。
可能有同学看过,这本书英文名字叫做《The art of software testing》。
他跟Bill思想完全不一样。他的想法里,测试不应该着眼于验证软件是工作的,相反我们应该首先认定软件就是有错误的,用逆向思维去尽可能的发现多的错误。
并且他也是从人的心理角度,如果你都认为我的软件测试的目的就是验证软件是工作的,那么特别不利于软件测试人员来发现软件错误。所以他在七十年代到八十年代的时候提出了软件测试的定义,叫做测试是为了发现错误而执行的一个程序,或者是系统测试的一个过程。这个定义呢也是很被业界所认可的,被称为是软件测试的第二类方法。
简单来说,其实就是说软件测试干什么的呢?就是验证软件是不工作,或者说软件有错误。所以在他认为一个成功的测试就必须是来发现bug,发现问题的测试。
这就好比说我们假如现在生病了,我们去医院做一个检查,结果呢各项指标都是正常的。这个就证明这个检查对于这个病人来说是没有价值的,是失败的。所以如果我真的身体有了问题,我需要医生先诊断,然后再去做检查,来查出到底是哪方面引起的问题,来发现问题所在。
他推翻了比尔提出的,测试的目的就是为了证实软件工作这样一个概念。
当然我们知道这两种思维都可能过于偏激,一个是太正向了,一个是太逆向了,一个是为了验证软件产品能够顺利执行。另外一个则是为了寻找bug 都过于极端,都会带来一定程度上的偏颇。所以我们现在在执行软件测试,可能更多的时候会结合这两种思想,结合这第一类和第二类测试思维来进行我们的验证。
这是在软件测试的发展初期。
那到了九十年代的时候,就开始在软件测试方法的基础之上衍生了非常非常多的软件测试工具。比如说大家熟悉的像QTP。可能大家有人听过,有人没听过,这是一个自动化测试工具,是由一个非常大的公司惠普做出来的。
当然这个时期诞生了很多包括测试工具,包括流程工具。像我们熟悉的一些QC、TestLink,这些测试工具开始在九十年代大量的出现以及应用开来。从而实现了软件测试流程上的控制,也为我们的效率提升做出了很好的效果。
那在后续的文章中也会就一些软件测试的工具为大家进行详细的介绍。
在近代比较有标志性的人物,就是这么几个人。一个是在2002年的时候,Rick和Stefan出了一本书,叫做《系统的软件测试》。在这本书里规范了很多软件测试的方法。那么在这个时候就已经把我们的软件测试,甚至到我们软件自动化、软件性能做出了明显的规范。
一直到今天,我们仍然沿用这些软件测试的规范来进行我们的后续工作。所以现在软件测试是发展非常非常快的,不仅仅有我们的这些功能测试方法,还包含了很多测试开发的思想都在软件测试的发展中起到了非常重要的作用。
那么虽然我们现在软件测试已经发展的很好了,仍然有一些缺陷。或者我们叫做目前当下面临的一些挑战。
其中第一点就是我们软件的规模是越来越大的,复杂度也越来越高。不像原来一样,是一个很简单的功能。比如余额bao,tao宝啊或者共享单车的app,或者一个微xin。
这些功能都是非常非常大而复杂的。我们怎么样去进行充分并且有效的测试,成为了我们软件测试过程中的一个难题。
同时我们前面说到软件测试的优势是什么?门槛低。但是呢这也是我们软件测试的不足,我们基层的软件测试人员可能会出现过多的现象。大多数测试人员都是在做点点点的操作,这种盲人摸象的方式在摸索,让我们的软件测试从业者的水平和素质能力提升非常非常的缓慢。这是第二点。
接下来第三点就是继承自上一点。由于我们的技术发展要求,我们的测试能力要求会越来越高。所以首先我们要求软件测试的人员能够具备基础的功能测试的能力,这个根基要打的很稳。在这个根基之上,我们希望你不再仅仅是盖一座六层的小楼。我们希望你盖的是一座四十层、五十层的摩天大厦。需要对你有更高的要求,对你的施工能力提出了更高的需求。所以软件测试现在面临着这样那样的挑战,也决定了我们要更加合理,更加理智的去分析。
学习软件测试的流程,从而让自己的能力不仅仅局限在点点点,而是有一个更高的追求,才能够符合、满足我们现在软件技术的迅猛发展。
那接下来呢来看看国内外的关于测试的现状。
在国外啊,软件测试其实在软件公司当中具有非常非常重要的地位。软件测试的理论包括我刚刚说过的一些书啊,一些知识的总结积累。包括软件测试的一些开源工具或者一些商业化工具,我们会发现都是由国外传来。它的整个的测试理论,包括测试的体系都是蓬勃发展,软件测试的市场也是相对繁荣的。
但是在我们国内呢就有这样的一个问题,就是软件测试行业起步比较晚,大多数的软件测试的从业者都是从九十年代中期甚至是末期才开始进入到这个行业中来。所以呢我们的从业人员也少,规模小,发展的速度是非常非常快的,包括技术更迭的速度是比较快的。
但是仍然是在追赶像美国这种在软件测试领域研究非常深入的非常先进的一些国家。
当然这不是崇洋媚外,而是真正的静下心来来分析一下这些现状。这些现状决定了在国内可能很多时候,软件测试是占据一些弱势的,并没有达到在软件测试理论中那么不可缺少的一个地位。所以呢也需要我们大家更加努力的去改善这样的现状。
那么这个呢是给大家聊一下我们软件测试到现在的一些发展的情况。
也是让大家心里有个底,我们未来应该怎么样去更好的发展测试,或者在这样一个现状中,在这样一个挑战的情况下,我们怎么样能够让我们自己做的更好。
下片文章更新 【软件测试的发展与职业规划——明确测试行业的职业发展方向以及企业的职级晋升制度】
订阅,软件测试全套免费路线知识体系持续更新中!!!
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!