软件测试的发展是由项目中的需要推动的。不同时期的项目对于测试的需求渴望强度和要求是不同的。简单的以人类的进化发展史来类比测试的发展史,希望可以从中窥见一些规律,来提高测试人员的素质,加强自身的竞争力。更加希望帮助其他行业的人员了解软件测试行业,端正大家对于软件测试人员的态度。
大约450万年前,人和猿开始分化,产生腊玛古猿,以后在由腊玛古猿演化成200万年前的南方古猿,进一步再发展为现代人类。
关于人类的发展过程,一般将其划分为四个阶段:
1、早期猿人阶段。大约生存在300万年到150万年前,已具备人类基本特点,能直立行走,制造简单的砾石工具。——无测试
2、晚期猿人阶段。大约距今200万年到30万年前,身体象人,脑量较大,可以制造较进步的旧石器,并开始使用火,如我国北京周口店的北京猿人。——无专职测试/开发自测
3、早期智人(古人)阶段。距今10-20万年到5万年前,逐渐脱离猿的特征,而和现代人很接近,如德国的尼安德特人。——专职测试点点
4、晚期智人(新人)阶段。大约4-5万年前,这时的人类的进化出现了明显的加速,在形态上已非常象现代人,在文化上,已有雕刻与绘画的艺术,并出现装饰物。如1933年发现的周口店龙骨山山顶洞人。此时原始宗教已经产生,已进入母系社会。在晚期智人阶段,现代人开始分化和形成,并分布到世界各地。——自动化测试/性能测试(测试开发)
5、AI机器智能阶段。现在阶段的发展,未来的情况靠想象。——未来测试发展猜想
依据人类的发展,软件测试发展也可以分为5个阶段:
一、无测试阶段
早期软件项目中只有开发人员,开发出的软件严格意义上讲只能称为单一程序,而这个程序又是为一个特定的目的而编制的。早期当通用硬件成为平常事情的时候,软件的通用性却是很有限的。由于要求不高,程序相对简单,仅由开发人员开发出来就可以使用。而且当时人们对于软件的容错性非常高,这个时期开发出来的程序就能满足使用,并没有测试的环节,也没有测试的概念。
二、无专职测试/开发自测阶段
随着软件的数量急剧膨胀,软件需求日趋复杂,维护的难度越来越大,开发成本令人吃惊地高,而失败的软件开发项目却屡见不鲜。“软件危机”就这样开始了!大家开始对软件测试有了基本的概念,但是还没有形成体系,更不要说具体的技术产生探究。对于测试的认识还仅限于使用前试着运行下程序,通常是开发自己测试或者是客服、财务或者其他使用软件的业务人员试用下软件。这个时候人们对于软件的容错度还是比较高的。非专业测试人员/开发自测也能满足这一段的要求。
这种测试的方式到现在为止仍然在使用,项目正式进入测试阶段之前由开发自测,项目上线之后由客服或者其他软件的使用人员反馈问题。不同的是,不同公司对于质量的要求这种测试方式的环节占的比重不同。对于质量要求不高和软件仅供内部使用的项目,非专业测试人员/开发自测便是测试的全部环节。
三、专职测试点点
“软件危机”使得人们开始对软件及其特性进行更深一步的研究,人们改变了早期对软件的不正确看法。早期那些被认为是优秀的程序常常很难被别人看懂,通篇充满了程序技巧。现在人们普遍认为优秀的程序除了功能正确,性能优良之外,还应该容易看懂、容易使用、容易修改和扩充。概括来说,软件危机包含两方面问题:一、如何开发软件,以满足不断增长,日趋复杂的需求;二、如何维护数量不断膨胀的软件产品。
软件的要求提高最直接的解决方式就是增加人员,加强管理。那么开发的大部分精力将投入到软件开发和代码管理中去,这个时候一部分专职的测试人员便出现了,他们大多由软件使用的业务人员组成,并没有计算机相关知识背景。这是的测试工作内容非常的简单和非专职人员测试相似,就是按照自己的思路点点。这种工作方式就是现在初级测试工程师的工作主要内容。
尽管这种工作方式看起来非常的简单,但是需要测试人员具备很高的逻辑能力以及表述能力。不幸是的,部分人对于测试工程师的印象仅仅停留在“点点点”的阶段。由于外行或者同行的偏见,测试人员还要有强大的心理承受能力。
四、自动化测试/性能测试(测试开发)
互联网行业发展的越来越大,越来越多的企业加入软件创造的大军,软件功能覆盖的功能也越来越贴近人们的生活。软件企业之间的竞争更是愈加激烈,人们不再满足于功能的实现更加在乎功能的新颖和使用体验。这就使得企业需要加快软件的迭代频率来保证同类软件的市场占有率。
软件更新频率增加就意味着软件的制作周期缩短,而缩短工期就有可能难以保证软件的质量。实际上做100次好事的效果抵不上1次失误带来的后果。在这种情况就对测试人员有了更高的要求,为了提高测试效率,避免测试人员的重复工作,自动化测试就出现了,技术的发展就是为了迎合要求产生的。
自动化测试,顾名思义,自动完成测试工作。通过一些自动化测试工具或自己造轮子实现模拟之前人工点点/写写的工作并验证其结果完成整个测试过程,这样的测试过程,便是自动化测试。自动化测试的前提是功能手工测试通过,如果没有手工测试的基础,是没法进行自动化测试,投入和产出比也会很低。
对于一些软件,它的市场占有率高,用户基数大。这些软件不仅仅要满足功能上的要求,在性能上,比如并发数、负载数都有要求。在确定量级后,需要进行性能测试来发现性能上的问题,性能测试的前提也需要功能手工测试通过。
自动化测试和性能测试需要测试人员运用计算机语言编写脚本,本质上和开发是一样的,这部分的测试人员也被称为测试开发。这在很大程度上提升了测试人员的地位。但是只有测试人员知道,手工测试看似简单实则在测试过程中扮演了重要的角色。一切不以手工测试为基础的测试都是耍流氓。
五、未来测试发展猜想
当下最热的一个词莫过于AI智能了,机器翻译,智能控制,专家系统,机器人学,语言和图像理解,遗传编程机器人工厂,自动程序设计,航天应用,庞大的信息处理,储存与管理,执行化合生命体无法执行的或复杂或规模庞大的任务等等,这些领域都有AI智能都有涉及。AI智能是对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。那么我们是不是可以大胆的想象,未来的测试技术也将趋近于智能,比如说,根据需求简单的生成测试用例,自动化测试更加智能化。
可能现在实现还有些不切实际,但是梦想还是要有的,万一实现了呢!AI都深入普通大众的生活了,测试的技术也需要紧跟脚步发展。提高自身的技能才能增加测试在项目中的权重,扭转大家对于测试只有“点点点”的错误认知。
领取专属 10元无门槛券
私享最新 技术干货