从事 IT 测试行业的工作近 5 了,一路走来多多少少有些想法想跟大家分享一下。
在正文开始之前我想问大家一个问题:如果你是一名测试人员,那么你觉得 IT 测试算是程序猿么? 请把答案放在回复中,谢谢!
首先,我们来聊一聊 IT 家族的成员有哪些,分析一下测试的地位。在我个人的认知里一个 IT 完整的由高到低的链路是这样的:产品经理&项目经理 -> IT 顾问 -> 架构师 -> 开发 -> DBA&运维 -> 测试 -> 需求。在这里我把测试的排名仅仅放到倒数第二,现在来分析一下,作为一名测试人员,最常接触的人员就是开发和需求,在工作之余交往聊天当中也能感觉到,开发对测试这个工作岗位还是嗤之以鼻甚至不屑一顾的,当中这种鄙视是不敢在工作当中表现出来的,不然你们懂得……(▽^)
那么就要分析一下开发人员为什么会对测试人员有所鄙视呢?原因在于专业性。开发的这种专业性或许是源于理工科人员与生俱来的一种气质,探索、分析、学习、创造使他们对事物的基础逻辑及构成更为敏感,这种专业性是一种内在的素养。这样的话,那是不是说测试人员是不是不够专业呢?答案当然不是,测试的专业性往往使得他们更注重于结果,质疑 + 验证概括了测试工作的本质,测试的专业性使他们对 IT 系统存在的风险感知更为敏感。
举个例子,如果开发是一个厨子,测试是一名食客,厨子在是食客面前总会炫耀他的拿手之作,选材是多么严格、做工是多么复杂、火候掌控多么精细、还有秘制的调料等等,在厨子眼中这个食客根本不会做出来这样的美食的。等到厨子出品的炒面端到食客面前,没多久食客发话了:炒面里有头发、而且我明明点的是加香菜的炒面这里面也没有、还有炒面太干、颜色太深酱油放多了吧看起来很难看、你做个炒面让我们等太久了……一堆问题接踵而至。作为一个食客我们会从 360 度各种视觉去发现厨子做的这盘炒面的各种问题,实际上并不特别在乎他是怎么做的,从这里可以发现开发的专业性是:做;测试的专业性是:验。
俗话说:闻道有先后,术业有专攻!开发人员的专攻在于代码基础的掌握,能码得一手好代码基本上就很不错了,所以开发人员起步就是啃各种语言、语法、架构、模型……,对测试人员而言就像是文科生和理科生、普通班和奥数班差别一样。测试人员的专攻在于精通测试理论,在测试过程中尽可能地发现更多、更深层的系统 BUG,在这个过程中测试人员也会逐步涉及到代码基础的东西。简单的来说,测试人员的起步低,在你不需要复杂的基础功底的时候就可以去做测试的工作,根据我面试的经验,现在培训机构对测试人员的产出还是挺高的,一万多的学费基本上三个月速成,把你包装成 2-3 年工作经验的样子,但是培训机构出来的开发产出就没这么高了。
起点低决定了我们测试比开发 - 即那些真正的程序猿们低半头,这也是他们在我们鄙视链上端的原因,实际上他们工资水平也比我们测试高几个档次。有次跟开发朋友一块聊天:
他跟我讲:最近快被你们测试搞死了,BUG 催那么紧,压力山大啊!
我就呵呵一笑:那你转测试啊,不开心的时候还可以提几个 BUG 怼一怼开发呢?
他立马回答:我才不呢,测试那么简单,做测试有什么意思。
而旁边坐了另一开发回答道:等哪天开发干不动了再做测试。
种种鄙视无以言表,其实我想告诉他们,测试并不想他们想的那么简单,如果真让他们做测试工作他们并不一定能够做好,我在上家公司的时候就有这种例子。上家公司新招进来一个高级测试工程师,简历上的经历就是有多年的开发经验,也带过项目等等的,从后来交往上看他确实很厉害,发现的问题分分钟能从开发源代码中拎出问题根源在哪,并告诉开发代码该怎么修改,而他这种 ‘’ 专业性 ‘’ 也一度让开发折服。但是事实是在以后的几个月里,测试经理在统计分析线上 BUG 的时候发现几乎每个月他测试的需求都有遗漏的线上 BUG,线上 BUG 作为测试人员最重要的一个考核指标,所以那几个月他的绩效也是频频得 C(绩效工资=绩效标准工资 *0.5),没多久他就离职了,听说又重新做了开发。
这么牛逼的测试为什么会遗漏那么多的线上 BUG 么?后来我分析了有以下几点:
1、思维导向,他之前是做开发的,更注重过程的他会让他在分析结果的时候,不能高度集中。简而言之,作为一个测试你发现问题就行了,怎么改 BUG 不是你的事。
2、需求导向,在拿到开发的产品之前,我们要根据需求文档进行测试用例编写,把需求都消费成一条条的可执行用例,尽可能全地扩大用例的覆盖度,探索任何可能产生 BUG 的条件,为后期测试工作做思想上的铺垫,而他显然没有做到这一点。
3、不够严谨,测试是一个能够平衡在需求和开发之间的一个角色,如果一味地站在开发角度去分析问题,同样会忽略掉很多需求方存在的很多问题,开句玩笑话:做测试你可以不用对自己狠一点,但是一定要对开发狠一点。
以前看过一个段子感觉描述的很到位,A 问 B:为什么开发不会测试自己的代码 BUG 呢? B 回答:你会告诉别人你的孩子长得丑么?
说了那么多,就是为了强调测试工作的意义,但是如何做才能不会让别人鄙视而且在这个岗位上走得更远呢?虽然测试的工作入门槛很低,但是我们也不能在门槛不远的地方躺着睡大觉。关于测试人员的职业发展我有以下几点想法:
一、积极健康,保持良好心态;如果做不到外表美丽,我们就要做到心灵美丽,毕竟我们工作的本质也是为了养家糊口、体验人生,身心健康、心情愉悦活的开心就好,没必要为了什么废了自己的健康、委屈了自己的内心。这种积极健康的态度也是会传染的,如果一个团队氛围融洽这样更利于我们工作、学习、交往。每天早起一会精心打扮自己美美哒、帅帅哒,抽时间跟同事们一块去聚餐、去打球、去跑步、去健身、去逛街、去旅游、去参加社会活动……,工作时候没必要那么严肃偶尔跟大家开开玩笑,分享些零食,岂不乐乎?
二、提升自己,保持学习心态;上面也说了我们不能在门槛不远的地方躺着睡大觉,不然离淘汰也不远了,况且我们工资增长也是伴随个人能提升的。提升自己的本质也是为了让工作变得越来越简单,让程序中更多的问题能够清晰地浮现在我们面前。
基础提升:要学会 SQL,学编程语言 java 和 python,要学会建站的基础 html、CSS、JavaScript、json,要学 linux 操作命令;
专业提升:要学会接口测试,学会性能测试、学会自动化测试、学会白盒测试;
业务提升:尽可能多地掌握公司的业务知识,认真编写测试用例,不断汇总和融合自己了解的业务内容,这些都是宝贵财富,大浪淘沙说不定哪天就真金显露,成为公司的顶梁柱也是指日可待 (▽^)。退而求其次,如果有跳槽同行或者创业的想法,你说掌握的业务知识都会成为你乘风破浪的重要支柱;
管理提升:工作久了总会接触到管理这块,哪怕是带个徒弟,掌握沟通的技巧,学会规划总结,还有一点比较重要要学会写 PPT,要敢在众人面前表现自己,管理是走向公司核心的重要通道,且行且珍惜。
三、学会输出,保持分享心态;有人说我那些该学的都学会了,是不是测试工作职业生涯就到了?如果一个人说他学富五车、阅览群书,可是他却写不出来一个 800 字的文章,你会认可他么?你以前学习到的并不是你的,只有经过自己消化、吸收、转化这才是你的,如果你能利用你学到的 python 知识编写一个测试辅助工具并应用到测试工作当中,这才是能力提升的真正表现。输出的方式可以分为学习笔记(推荐有道笔记)、写 PPT 写文章、开发测试辅助工具、维护自己的空间等等。输出是一方面,也要学会分享,大家认可你了,认为你写的测试辅助脚本确实实用、写的论文确实有建设性让人振聋发聩,这才是真正的大牛,站在武林之巅,主宰江湖。