上一篇讲到接口测试对个人的好处。而对公司来说呢?
首先你招人做接口测试的话,成果很容易看得到,想刷KPI的技术负责人/测试负责人们,做接口测试可以很容易地提高测试覆盖率,实现持续集成测试。当然,如果你的系统架构上就不适合做接口测试的话,那就没办法了。有段时间流行SOA架构的东西,挺适合做接口测试的。后来的云计算,我其实不太了解,但我以前公司(某硅谷150强里排70多位的某公司)云计算组的测试也就是测测接口,偶尔做个爬虫,再做做性能测试,最后做成持续集成的,最后再把这套东西跟测试管理平台一接,往他们自己开发的云上一扔,好了,基于云的分布式接口功能及性能测试系统完成。
接口测试比白盒/单元测试好做,因为成本较低。白盒测试你得找能读懂程序源代码的人。接口测试有时可以做黑盒的或者灰盒的。不是说白盒就比黑盒/灰盒难度高,而是读得懂程序源代码的人愿意不愿意来做白盒测试的问题,还是成本问题。像我们以前的产品就是接口,那当然接口测试是必做的。然后因为公司投接口自动化测试已经投了不少钱,所以没钱做白盒测试了。当然,不做白盒测试的后果,后来体现出来了。当一个很奇怪的无法复现,但又频繁无规律出现的重要BUG出来的时候,我们的总监都急了。最后总监开了特别悬赏,能定位这个BUG根源并修复的人将得到不菲的奖金和绩效加分。然后所有测试和开发花了一个多月时间就想找这个bug的原因。这就是他不做白盒/单元测试的后果咯。(最后运气不错,定位到了这个bug,而且还好这个bug不算太恶性)
接口测试基本上都会做成自动化测试,因为他比用户界面层的自动化测试好做。原因在很多文献资料里都有提及:用户界面层的自动化测试成本巨大而且维护困难,业务需求变化也较快。适合做用户界面层自动化测试的项目不多
说完好的再说不好的。
不是所有项目都有接口可以测,更多的负责人关注产品最终用户体验,绝大部分中小公司的产品都是从用户界面层开始测,也只在用户界面层面测试。而大公司,你需要一个合适的敲门砖。
你什么都不会但说你就是会测接口,没人信,也没人会请你。所以还是要有3个月黑盒测试培训打底。
其实大家都看到这个肥肉了,很多开发也会转这种测试,因为好做。那你跟开发比的时候,主要就是比计算机技术基本功以及测试思维和对原理的掌握。一般开发是不太可能有掌握自动化测试原理的,当然一般的测试也是不懂。然后么就拼拼工作年限啥的。竞争还是很激烈的。
这里在深入下去有的人专门做服务端测试(我没做过,不懂,但显然他们的技能和服务器管理员/运维人员/服务端开发人员有较高的重叠。)有的人开始做性能测试,像我那个时候的测试负责人上级就说他这个接口除了功能要保证,性能也要达标,所以我也做了接口的性能测试。
然后性能测试有这些特点:
没有初级岗位。没错,我没见过应届毕业生做性能测试的。这个岗位天生的就是高级/资深人士活跃的位置。
光靠测试做不了。是的,性能测试的目标是收集性能相关的信息,但性能经常达不到预期目标,就要调优,性能调优对广大测试人员来说,就是一个听都听不懂的技术活,这时完全体现了计算机行业内各岗位之间的技术壁垒。假如你这个测试工程师真的技术牛逼得不得了,从软件到硬件,从代码到架构,从服务器到中间件到数据库,从网络到应用无一不精的除外。当然达到这些标准的你不但是一个传说中天下无敌的“好的测试”,同时也是一个技术实力堪比黑客的陆地神仙。一般是很多角色的人(开发、测试、运维、架构、硬件设备提供商、网管、数据库管理员等等)一起做调优。测试就做做脚本差不多了,厉害点的测试还能兼职运维,越厉害的可以兼职越多角色,但一般不常见。。。
性能测试有很多层面。我写一个小程序,你写一个小程序,两个小程序的性能可能就不一样了。现代的软件系统复杂度那么高,他涉及的每个层面都有自己的性能。比方说最常见的网站压力测试,我就测测服务器性能指标、响应时间、吞吐量。那如果做移动端开发的,我还要测测客户端性能。他们涉及更复杂架构的,可能更复杂的性能要测。所以说性能测试的技术路线是比较长的,这也是一个黄金点,适合搞技术。但是也要看你待测的软件是怎样的,甚至于你的待测软件有没有那么多用户都是一个问题,不能一概而论。
重要的是性能测试的思想和策略。思想指一些基本原理,性能指标的含义啊,包括一些数学公式,吞吐量的计算啊之类的。策略指如何去设计场景,一般基准测试必做,负载测试必做,压力/拐点测试常,稳定性测试常做,疲劳测试选做,网络链路层测试也要做,还有远程测试和本地测试,模拟多ip测负载均衡等等。
最后才是工具的使用。比方你要用jmeter,在了解性能测试的思想和策略的前提下,看看用户手册看个3天,你做个接口性能测试绝对没问题。也有人反过来,先了解工具,再了解思想和策略。总之你不了解思想和策略是没法做的。
其他领域的知识的掌握,如做服务器接口性能测试,必然要能对服务器做基本操作,这里和运维工程师的技能高度重叠。所以呢,你从懂一点技术的黑盒测试想转性能测试,是很难的。懂一点测试的运维工程师想转性能测试是很容易的。总之我觉得你如果打定注意做性能测试的,先做运维,然后自学性能测试工具,再接受3个月黑盒测试培训,或自学3个月黑盒测试,大事可成矣。当然要是你还懂一点开发和懂一点自动化就更好了。
性能测试一般不可能被手工测试替代。这一点跟自动化测试截然相反
性能测试很多时候明知成本不低,也一定要做。因为性能出问题损失更大,而且手工测试无法替代嘛。所以loadrunner这么贵,也有很多公司买。和QTP不同,loadrunner好用多了也很适合运维工程师转性能测试工程师用,因为他的设计思路是让不会写代码的人可以用。
如果用jmeter之类的开源工具的话,那多多少少,还是要写一点代码。当然这也不是坏事。到这个程度的工程师一般写这些东西不在话下。
性能测试的职业发展,可以一直做性能测试(因为技术路线长),也有所谓性能测试架构师之类的岗位存在,还有互联网巨头自己搭建性能测试平台的,不知道他的负载生成器是不是自己写的,自己写那是很厉害的。我同事在阿里巴巴的,他们组也有一个专门做性能测试的,感觉挺赞的做这种工作。不像黑盒测试那么烦。还有一些人做性能测试的监理,去客户现场上班。这类职位的人如果有兴趣做测试经理之类的管理岗位,那至少技术上绝对没问题,比懂一点技术的黑盒测试人员强好多。
其他还有一些细分职业有较长的技术路线
数据库测试工程师,这个毫无疑问地和DBA有很高的技能重叠性。如果DBA有兴趣,可以轻松做这种测试。而懂一点技术的黑盒测试人员想做这个,要付出较长的时间学习数据库知识。具体内容我也没啥造诣,而且我自己就是上一篇里我说的那个在数据库测试工程师笔试卷子上交了白卷的自动化测试人员。数据库测试工程师做得好要不要转DBA呢,这个我就不知道了。我去面试做某BOSS系统的公司时遇到了这个细分职位,虽然他的职位就叫测试工程师,从笔试卷上能看出来偏数据库测试。
安全测试工程师,这无疑是个神秘的领域。传说中凌驾于测试领域里技术路线长的三大职位(性能、白盒、自动化)之上的传奇。毫无疑问的没有初级岗位。没见过哪个公司招聘初级安全测试工程师的。老实说我也是不懂。我顶多就是在做接口测试的时候,了解到安全测试和性能测试一样,也是分层次的,我猜测:软硬件每个层次安全+使用人遵守安全规范 = 系统总体安全。接口的安全测试,在一些接口测试工具里就有提供,技术含量没有想象中那么高。但是你要是说只会这个工具,绝对找不到安全测试的工作。实际上这种工作也确实不多。对我来说,还是神秘而未知。
白盒测试工程师,测试领域里技术路线长的三大职位(性能、白盒、自动化)之一。同样没有初级岗位。最大的问题是黑盒测试的人像做白盒做不了,开发人员能做白盒不愿做。毕竟自己写代码和读别人的代码再写测试,这舒适度完全两样。读别人代码,犹如吃shi。但你不搞白盒测试,内存泄漏你怎么发现呢。我们以前公司做的数字媒体娱乐行业,不搞就不搞了。但是特定行业就一定得搞。比方说出不得错的行业。但是还是老话,这种岗位少,这是黑盒的天下。白盒的岗位偶尔出来一个,会有想退下来的开发来跟你抢的。
服务器/中间件测试工程师,少见,我去面过一个,面试官成功做到了讲的绝大多数技术名词我都听不懂,挺不容易的。这里我想,这个岗位跟服务端开发人员肯定有高的技能重叠性。对一般懂一点技术的黑盒测试人员来说,基本接触不到相关技术。而我听懂的少量技术名词给我的感觉就是,我一听就知道我做不了。比如面试官问我懂不懂java的多线程开发/高并发开发。据我所知,java多线程开发和一般java开发之间也存在技术壁垒,可以分成两本书讲。对一般测试人员来说,技术壁垒简直是厚得要死了。
还有几个特殊的
测试开发工程师,你到底是测试还是开发呢。从某种意义上来说,我感觉这个职位不是测试人员。比如你专职做测试管理和执行的自动化平台,那这个岗位就是一个做XXX信息管理系统的开发岗位,而且这个XXX信息管理系统还是内部软件。也就是开发岗位里技术路线最短的一种,和XXX信息管理系统的外包开发人员差不多持平。为啥呢,因为内部软件有个特点:能用就行。内部软件要不要精益求精,怕不怕做得差卖不出去?答案通常是否定的。我在巨头公司做黑盒测试的同事反映,他们的测试平台也不尽如人意,至少对他们这些测试平台的最终用户来说,这系统没那么好用。
测试工具开发工程师,这是妥妥的开发人员。而且是妥妥的内部工具开发人员。剩下的问题就是,这个测试工具的开发需要什么技术,需要多少技术。我相信有的测试工具开发很难,技术路线就长,也有的很简单,技术路线就是开发里最短的,总之开发人员一般不愿意沦落到做测试工具开发的,不管你走技术路线,还是想走管理路线。
测试架构师,这个绝对是高端岗位。一般上他的要求就是,你要大于等于软件开发的架构师。所以开发的架构师要问了,我这么牛逼了干嘛要做测试。好问题,我也想问,究竟是谁想出来的这种职位以及这职位能存在多久。
如果按照业务领域细分,理论上还能展开讲各个行业的测试工程师的的发展路线。但我接触的行业有限。所以适可而止吧。
那下一个问题就是,
我该做什么,走什么路线?
我想做XXX该怎么办?
我学了XXXXX但是只懂皮毛怎么办?
我想去XXX公司,要怎么做?
有什么书推荐?
我感觉学不到东西,怎么办?
我感觉测试很无聊,怎么办?
以上问题在所有测试论坛里被人问了无数次(待续)