我发现一个奇怪的现象:总是听到身边的程序员朋友谈论BAT(中国大陆互联网的三大巨头:百度、阿里、腾讯)以及如何进入BAT,却鲜少有测试会去谈论或者考虑这些问题。

我不知道这是为什么,或者我就算知道也只是片面的了解,所以我还不如不说,免得回头又来打自己的脸。

最近有幸与给阿里测试团队做过培训的骨灰级测试大神交流了一些有关测试的问题,正好也说到了这个问题。

这位大神并没有为我解释上面的问题,而是跟我说了一些BAT测试工程师所需要具备的素质。其实也是变相地从另外一个方面解答了我的疑惑。

那么下面我给大家分享一下这位大神给我甚至绝大部分测试工程师的建议。

心态
首先无论是BAT的员工还是想进BAT的求职者都需要有一个良好的心态。

原因很简单,文章下面即将提到的学习内容,如果你没有一个好的心态,是不可能进行下去的。所以,先过了心态这一关,再来谈别的吧,否则你肯定会死在半路上的。

大多数人学习碰到的问题无非2种:第一,心态浮躁,总想着看书太慢,看视频太慢,恨不得今天看了,明天就直接竞聘上岗了。第二,学习没有方向,学了一段时间之后,好像也没看到什么特别的进步,对自己坚持的方向产生动摇,最后不了了之。

如果是第一种我救不了你,除非你自己能沉下心来好好学。

如果是第二种可以参见这篇文章8年软件测试工程师感悟--写给还在迷茫中的朋友

思路


思路很重要,它体现的是一个人的思考习惯,而行为都是由大脑支配。如果你有一个能让人眼前一亮的思路或许就是那个key,让你进入BAT大门的key。

大家可以看看BAT的面试题(这里不放技术性面试问题,因为肯定有人会问我答案)

Q:如果100次抛硬币,99次正面,下一次是哪一面。。。 
Q:2个人一起去喝酒,只够买1瓶,杯子不规则,怎么保证大家喝酒不会有异议
黑人问号脸?没错,相信不少人也碰到过。答案肯定不止一种,但是要保证你的答案在面试官看来是有吸引点的。

技术性面试问题也一样,所以不要埋头苦干技术,有时间停下来回顾自己走过的路也不错,能让你接下来走的更快更稳。

原理


比如:在 Java 中,你可以使用 interface 关键字创建一个接口。

接口类型有许多规则,其中一条是只要一个类声明 implements 这个接口,就会被强制实现其中声明的方法:

interface Vehicle {
  void start();
}
 
class Car implements Vehicle {
  public void start() {
    // Omitted
  }
}
 
new Car().start();
如果 Car 没有实现 Vehicle 接口声明的 start() 方法,就会出现一个编译错误:

interface Vehicle {
  void start();
}
 
// error: Car is not abstract and does not override abstract
// method start() in Vehicle
//    class Car implements Vehicle {
//    ^
class Car implements Vehicle {
  // Omitted
}
在像 Java 的编程语言中,“接口”是用来声明一个类型的关键字,它包含了一些特定的规则,用于控制环境中对象之间的交互。

其实不管是接口还是其他的什么,了解了原理很多错误就不再是错误,因为你知道怎么做可以不犯错误,颇有点君子不逾矩的感觉。

深度


可以是一个人的思想深度,也可以是掌握技术的深度。两者同等重要,只要你其中一种很出色,那么无论你在哪里都会很吃香。

一个人思想的深度可以从他的言行看出来,但是一个人的技术深度基本上只能从工作中体现。不管是思想深度还是技术深度的增加你需要的都是读书,读书,再读书。

本身学习就是一种对自我修养。了解别人的思想并与之碰撞,融合。你的思想深度自然会随之增加,上面说的思路和原理也能从书本(并不一定是书本)中看出来。

代码


话说回来,BAT大厂的开发人员和测试人员的界限并没有那么明确,因为公司既然招你那就是希望你能解决问题的,不管是开发还是测试都要有实际解决问题的能力,这点邓爷爷有一句名言。

代码能力对于测试工程师越来越重要,要求测试工程师会代码难道不是一件相当正常的事吗?不然那为什么还叫做“工程师”?

Java、Python、PHP、Ruby、go、C……一种或几种,不要求全部会,但至少要掌握一门。

学历


说到这个可能是很多人的痛点,其实影响并没有那么大。大家并不会因为你学历低就瞧不起你,相反,他们可能会觉得你学历低还能进BAT那技术一定非常厉害。

只不过走正常招聘可能通过率不高,你可以尝试联系BAT的内部员工或者技术负责人给他发邮件,想他展示你的能力和才华。

有良好的代码习惯、学习习惯等会成为你的加分项,增加通过率。