曾几何时,测试被认为是一个工作周期很长,至少比开发长得多,甚至是可以干到老的职业,大家曾记否,十几年前的时候,我们听得最多的对测试和开发的描述就是,开发工作比较程式化,线性思维,一般30岁以后就没人要了,因为程式化的工作没什么经验可言。而测试则是一个越老越吃香的职业,它的越老越吃香包含两个方面,第一是测试需要发散思维、逆向思维等非线性思维,这些思维方式是非常不程式化的,需要经验;第二是你对被测软件的业务的理解会不断深入,这种对业务的熟悉也不是一天两天能建立起来的。
上过测试培训班的朋友们一定对我的上述言论不陌生,当年,你们培训班的老师就是对你这么说的,而且在当年,他们说的是没有错的,在当年的那个技术背景下,这话没毛病。
但是,时光飞逝,光阴快马加鞭地来到了当今的时代,今天,举办奥运会都已经是十年前的事了,我们的高铁网络都已遍布全国,我们已经做到了出门不带现金……,总之,今天是一个与十多年前截然不同的时代,时代变了,开发变了,测试也变了么?
答案是肯定的,测试当然也变了,不再是那个手工测试吃遍天下的时代了,原因其实很好理解,就是因为硬件技术发展的结果。在过去手工测试的时代,由于硬件的限制,软件不可能做得太过复杂,否则硬件带不动。既然软件不复杂,那么也基本不需要测什么接口,也不怎么需要跑什么自动化,纯手工UI完全搞定。
但是今天,随着硬件的发展所带来的软件的复杂度越来越高,软件的体量越来越大,大家几乎在同一时间发现纯靠手工UI,测试的效率已经很低了,所以,就必须引入自动化程序来部分替代人工,于是,自动化UI产生了。但是很快,人们发现不论是手工还是自动化,UI的效率总是低的,于是,接口测试被引入了,同时也引入了接口自动化测试。
引入了接口就必然会引入接口自动化,因为接口相对于UI是稳定的,不可控因素非常少,甚至是没有,那么,使用自动化就是自然而然的事情。不知大家知不知道测试类型的金字塔图和橄榄图:
金字塔图显示,白盒测试的收益是最高的,因为软件就是由代码组成的,而白盒测试是直接针对代码的,自然收益最高,其次就是接口测试,收益最低的就是UI测试。
而白盒测试虽然收益高,但使用成本也高,试想,一个人即有开发的思维方式,又有测试的思维方式,他可以把BUG直接扼杀在代码里,那他的要价儿自然也高,所以性价比很低。
那么,从性价比的角度说,接口测试自然是最高的,至少从目前看是这样,于是就有了橄榄图。目前的时代,可以说就是接口测试在逐渐取代UI手工而成为主力测试方法的过程。
按照目前这个趋势发展下去,在白盒测试暂时性价比较低的前提下,接口自动化会越来越得到重视,而编写灵活又通用化的接口自动化测试程序也将成为测试人员的必备技能。
让我来做一个大胆的预测,在未来,随着接口测试甚至是白盒测试的普及,可能就没有专职的手工UI人员了,或者说专职的手工UI人员的数量会非常少,手工UI将包给那些有业余时间的人利用业余时间去完成,因为白盒测试、接口测试和UI自动化测试已经把BUG控制得非常少了,手工UI的工作量将会大大减轻,那么自然就不需要那么多人。
在未来,也许会出现这样一种工作模式,不论你是想做开发还是测试,都必须先做三年手工UI,三年之后,你的测试思维方式被培养起来了,你就可以带着测试的思想去做开发了,那样,你就成了一名拥有测试思想的开发人员了,那基本上就是至少是很接近白盒人员了,虽然你的公司可能仍然因为白盒人员的性价比问题没有安排专门的白盒测试人员,但你,通过三年的手工UI的训练,已然可以完成白盒测试的至少是一部分工作了。当然你也可以在三年之后选择做测试开发,去写接口自动化和UI自动化。但不管你选择什么,懂代码都是你的必备技能。
这就好比我们过去的测试对象是手推车,我们测试手推车不需要懂得机械原理,因为手推车的结构太简单了,我们只要从使用者的角度,并配合一些并不难懂的测试方法就可以了,尤其是你如果本身就是一名民工,你天天使用手推车推砖推水泥,那样是最好,因为你对手推车非常熟悉。
但是后来,我们的测试对象变成了汽车,如果你不懂机械原理,不懂汽车工程学,测试汽车那简直是无法想象。
所以,在过去的时代里,才会有诸如财务转测试,金融转测试之类的事情,但是在今天,我负责任地说,这种事情再也不会发生了。如果你是一名完全没有计算机基础的IT外行人士,有人用这种话忽悠你进入测试行业,两个字:拒绝。
下面我想再来说说AI。AI似乎距我们比较遥远,一个到处充满了机器人,到处都是互联网终端的时代我们可能还没法想象,但是,这个时代理论上来说已经距离我们不那么遥远了。AI,目前,编程所用的编程语言已经有了,那就是python,而且也有了一定的成熟度,这是现成的,AI的人才,目前国家正在大力培养中,可以说AI现在是万事俱备只欠东风,东风是什么?那就是5G。
大家知道,AI就是人工智能,再说得明白点就是可以自我学习的程序。自我学习需要具备什么条件呢?那就是大数据,只有通过大数据才能对机器进行不断地各种训练。那么大数据的前提是什么呢?那就是高速的网络传输,只要有了高速的网络,那么,每一次操作所产生的数据都可以实时地传输给AI程序使其进行学习。而高速的网络传输速度,唯有5G网络方可实现。
根据某些权威部门和公司的预测,5G网络连同基站的建设,线路的铺设,终端的研制,大概在2025年左右会全面铺开,而以我们国家基建狂魔的速度,这个时间点很有可能提前。
不知大家注意到没有,最近这两年,在互联网上到处可见各种少儿编程的培训班,其中不乏被知名天使投资人看重投资的,这说明什么?说明国家在推这件事,大家都看到了编程行业将来的前景。我们可能会进入一个全新的时代,我给那个时代起名叫做大编程时代。在我们现在这个时代,以编程为职业的人占所有人口的比例比如是10%,那么在大编程时代,这个比例可能是40%,50%,甚至更高,而今天,可能是大编程时代的前夜。
到了那个时代,全国可能会有数以亿计的终端连接在5G网路上获取各种大数据来进行各种自我深度学习。如此之多的人工智能终端,会使我们的生活变成什么样子?我想象不出来,按一些权威部门和专家的话说,那可能就是传说中的第四次工业革命。
大家想想,如此之多终端都带有深度学习的能力,那么,他们的程序得有人去写,这就是机遇。而AI程序不同于我们现有的程序,它的复杂度是绝对超过我们的现有程序,所以,到了那个时代,你还能想象用手工UI去做测试吗?到了那个时候,可能连接口测试都不会有专人来做了,白盒测试可能会全面取代接口测试成为测试的主力方法。
也许有人会说了,到了那个时候,机器是不是也可以来自己写代码呢?所以我们是不是都会失业?放心,不会,机器虽然可以自主写代码,但是它自主写代码的代码由谁来写呢?那不还得是我们!
请你放心,人的欲望是无限的,如果我们现在所享受的一切,它的舒适度是100,那么背后必然有复杂度是100的技术在支撑。而人工智能的引入可以让我们的技术复杂度假设变成比如1000,那么我们就拥有了1000的舒适度。如果人工智能能够通过自主编写代码来让我们的技术复杂度变成10000,从而我们有了10000的舒适度,那么,我们一定会通过自己为人工智能编写自主写代码的代码,再让人工智能用这套代码去编写代码的方式使技术复杂度达到100000,从而让我们拥有100000级别的舒适度。
这话听起来比较绕,换句话说,在农业社会我们纯手工劳动,工作量很饱和,后来我们发明了机器,是不是我们就解放了呢?答案是否定的,我们的工作同样饱和,只不过我们工作从以前的手工劳动变成了操作机器,虽然我们的劳动量没有变,但我们创造的价值变多了。AI也一样,我们每天编写AI的程序,AI通过我们编写的程序再去编写更为繁杂的程序,我们的劳动量没变,但创造的价值更高了。
大家按照这个思路去想一想,在人工智能的时代,还会有手工UI么?也许在那个时代,编程的孩子们根据无法想象他们的父辈们还做过手工测试,就像我们不能想象我们的祖辈出门没有汽车坐驴车一样。
大家可能以为这个时代还很远,但我觉得它并不遥远,在5G全面铺开的时候,将会是人工智能元年。从那一天起,人工智能将会逐渐实现我的上述预测,而它所实现的效果,会比我说的夸张度只高不低。
如何应对即将到来的变革呢?两个选择,适应或转行。如果你选择转行,那就不用多说什么了,如果选择适应,而你现在又恰好只是一名手工测试人员,那么我认为你要做的第一步就是拥抱自动化,先让自己成为测试开发工程师,通过测试开发的工作来锻炼自己的代码能力。
再说说学习,我们学习到底要不要报培训班呢?这得看个人情况,如果你有较好的代码基础,可以不报,但如果你基础一般,我还是建议报一个。我身边也有基础一般但选择了自学的人,说实在的,学习效果让我不敢恭维,他每天都在微信里发自己的学习成果,发了四十多天,看他代码的输出结果仍然是1,2,3,4这种水平。上过吴老课的人可以想象一下,如果你上了四十多天的课,也就是四十多个周末,你会是只能写出打印结果是1,2,3,4这么简单的程序吗?当然,他不是全天都在家自学,白天还要上班,那我们就减半,如果我们上了20周的课,可能是只会写打印1,2,3,4这个水平的程序吗?
另外,学习要专一,别老朝三暮四的,还是说我刚才说的那个人,python学了四十多天只会打印1,2,3,4,就又开始学java去了,这也真够让人无语的,既然基础一般,那就应该好钢用在刀刃上,集中火力专攻一门,比如对于我们测试来说就是python,别老今天python,明天java,后天又php去了,这样朝三暮四的你每一门都学不好。
如果你已经学完了测试开发的内容,我建议你进行如下学习:首先学一下python的flask框架,让自己可以做出一个简单的网站,如简易的微博。接下来再学习持续集成jenkins,做到能够独立搭建jenkins环境,还能够把自己写的自动化程序部署到jenkins上去,据说那东西不难,代码量不多,只是配置麻烦一点。
我现在正处在学习flask的阶段,学完了就去学jenkins。那么学完jenkins呢?说实话,我也不知道,但大方向是AI,这个不着急,毕竟2025年呢,要先看准再下手,毕竟我们经不起走大弯路带来的损失,但也不能太不着急,毕竟变革就要开始了。
面对变革,面对AI,面对大编程,你有什么计划?都来讨论讨论吧。
最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
软件测试技术交流群社:786229024(里面还有工作内推机会,毕竟我们是关系社会。)
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。