开发与测试从来都是相互对立的关系,我不并否认测试技术含量没有开发技术要求高,但是并不意味着开发人员能做好测试人员的工作。门槛低是这个行业对测试普遍的认为,所以也导致这个行业对测试技术要求也不怎么高,毕竟目前从事测试行业基本上有30%的测试人员是非计算机专业出身,但也不见的计算机专业出身的测试人员一定做的比其他要好,像我们开始学习软件技术一样,技术讲究的是逻辑思维。不过有一点可以肯定的是计算机专业出身的人肯定学习过编程,不然那不能算计算机专业的。

  自从我开始进入测试这个圈子,我总会注意到这个行业对测试人员的要求和认可度,因为开发技术比测试要强,所以测试人员永远会比开发低一个层次,每当开发与我们测试发生争论的时候,我们总觉得自己很不自信,什么原因?估计也是心知肚明,因为技不如人,其实不然。

  首先来说,我不是一个纯粹的测试人员出身,从事过编程开发工作有助于从事测试工作,这个是目前行业对测试人员好的定位。但是不管这个界定有多么重要,我们还是要相信测试可以比肩开发,因为我们并不反对自己学习编程。其实编程对于测试人员来说意味着什么,我想如果真正想把测试做好的人,肯定学习过编程技术,或者说曾经也热爱过写程序,甚至我听到我以前很多同事说起想转Dev的想法,我觉得都不奇怪,当有我们发现开发设计出来的东西,让我们觉得自己设计都比他好,我想我也会毫无犹豫的说出这样的想法。但我们必须要明白作为一个测试人员学习编程技术到底意味着什么,不是转做开发,也不是兴趣,那只能是用来提高工作效率。我记得在上家公司的时候,因为一件很小的事情让我觉得自信源于我们简单的想法,我用一段VBscript代码完成了一个我们开发与测试每天都要去重复手动操作的事情,当时确实得到了开发人员的认可,虽然这种事情可能对于开发来说很简单,但是至少他们不会像我们测试人员那样,学会从小事上提高效率,让我们的工作变得很简单。

  能力定位决定于一个人的思维方式,至少我可不觉得测试工作是这样的。我开始慢慢发现学会编程技术并不是为了转做Dev,可能也并不是为了做自动化测试(因为当前自动化测试效率并不高),因为我们通常情况下只是一名黑盒测试工程师,我们的本质工作是在黑盒测试中发现更多的bug,但是我热爱这个行业,所以我想做一个高效的测试人员。从开始的对编程有浓烈的兴趣开始,到后发现学习编程并不是为了做开发,到后来我发现编程可以让我在测试工作中眼界更广阔、思维更活跃,理解也更深,更重要的是可以与开发人员走的更近,形成有效的沟通桥梁。

  即使你不是一名自动化测试工作,或者不计划从事白盒测试,但我仍旧强烈建议你学习几种编程技术,至少学习一种脚本语言,Vbscript、JavaScript、Ruby/Perl等,至少一种通用的编程语言Java、C++、C等。我相信大家每天都在为简单而又重复的工作觉得枯燥无味,长时间的重复习惯让人觉得麻木,如果你可以这样,不知道你还有没有想学习一点编程的东西。加入你每天都要登录QQ、MSN、电子邮箱,或者还是有登录OA、JIRA系统等,如果你每天开机只需要点击一下快捷脚本,你会发现的你每天第一件重复而又让你烦恼的事情这样一个指令全解决了,你还会觉得枯燥,那应该说很酷了。其实测试工作中也是这样,为什么会有自动化这个概念的诞生,因为我们希望我们重复的工作会按照的意图和指令来安排并完成。

  追求更高效的软件测试是一个测试人员不断提高自己水平的动力之一,在这一点上编程能力真的有意想不到的作用哦。

  作为总结,我想说我对编程能力对测试工程师的作用的看法是,它很重要,但并不是核心的能力。它,是为了让我们更高效的发现bug,那才是测试工程师核心的能力。