如何理解和成为测试工程师
前言
到现在为止,我接触测试工程师这个职位前前后后已经快有1年了,然后便有了些感触。
场景1:
A:你现在在做什么?
我:测试开发工程师。
A: 哦,测试啊!(然后就一脸鄙视)
场景2:
B:你为什么要去做测试呢?
我:可以多学一些。
B:那不去做开发啊
...
......
其实这样的场景对于一个测试人员来说经常面临到,当你开始认真的思考的时候,甚至会发现真的像他们所想的那样了——一个鸡肋而且没有技术含量的职位。于是这便是我为什么要写这篇文章的原因。写写我是如何理解测试工程师这个职位的含义,和一些成长历程。
第一章
要理解测试工程师这个职位,那我们可以先从一条简单的软件开发流水线上来观察其所处的位置。一个软件的开发主要需要这三个方面的协作:产品经理,开发人员,测试人员。这是一个最基本的流程,如下图便是他们之间的联系和职能关系图。
那么可能从上面的图中可以看到,这工作重心不是开发吗?如果没有开发其他什么都不能运作起来,测试人员只是因为开发太忙,才把测试的任务扔过去的,如果不是产品经理时间催得紧,测试我们完全可以自己做。
那好我们来完整的分析一下这三个环节:
产品经理:收集和整理用户的一些需求,然后进行理念上产品的设计,同时对自己的产品进行估价,定位其市场价值。
开发人员:对理念软件上的功能进行分析,如果可以实现,并开始一系列软件开发的流程。系统架构,功能模块分析实现,UI设计等。
测试人员:以理念上的产品和实际得到的产品,对比并测试其功能点实现情况,进行性能和压力方面的测试,以得到软件性能结果,和压力承受值。
开发的客户便是产品经理,测试的客户便是开发。产品经理需要的产品,开发需要的是他们成果的一个验证单。那测试便是这个软件的“体检师”,而且是最终拍板软件可以不以发布的人!
是不是这样想,这测试的地位便好像高了很多,但为什么在业界其地位都不怎么样呢?
第二章
为什么测试的地位不高,甚至有随时走人的危险?其历史缘由我也不知道,我只能说说现状。
一
在一般的小的创业公司,如5人规模的公司中,一个软件的完成一般是没有专业的测试人员的。开发是一条龙服务,从产品到开发到测试。然后慢慢觉得,不想和客户打交道了,有些浪费开发的时间,那专职的产品经理就有了。最后产品越做越大,发现一些在大规模使用上的问题,自己不可能点点自己IED上的debug按钮可以解决这些问题的时候,这次测试人员出现了。
往往最后登场的是英雄,但测试不是。原因很简单,开发以为自己可以测试,就是没有时间,所以在面试测试工程师的时候,所要求的水准不是很高,这导致在小公司里的测试人员,普遍代码功底薄弱。而且开发也完全知道这一点,所以很多测试的工作都是:改配置->点鼠标->等时间... 。然后有一天公司财政紧缩,那这种测试便第一个被割掉。
二
为什么有人会选择做测试?如果可以做开发为什么要做测试?测试薪酬一般会比开发低一些,那如果你有开发的能力,会去做测试吗?
1. 编码能力不强;
2. 不喜欢繁重的工作和紧迫的时间压力;
3. 自己能力不足;
......
其实这是我接触的,大多数应届生在就职方面的选择测试的缘由。你说你自己一开始就觉得低人一等,自己都看不起自己的职业,那还能怪别人看不起你吗?
还没有开始测试的工作的时候,就给自己的职业打上了标签,编码弱,地位低。
三。
对于开发而言,其实很多开发是看不起测试的,这也是上诉的历史缘由,他们心目中的测试就是点点鼠标,然后泡上一壶好茶,品完茶,然后结果就出来了,有事找开发,没事就过。然后这样还和他们的工资差不多,这使得严重的心理上的不平衡感,最后就向世人抱怨这样的日子。
对于上诉三种场景,在我现在所接触到的大公司中基本上是不存在的,但在开始创业不久的小公司中却屡见不鲜,然而大公司毕竟是少数,就导致了测试的地位在业界不怎么高。(以上观点全是个人经历所得,不喜勿喷!)
第三章
那如何作好一名测试工程师呢?那先看看我们的“客户”吧!
测试的客户是开发,开发把软件交给你,是需要你给它进行体检。他们真正需要的是,测试可以找到那些像"艾滋病"那样潜伏很深的BUG;而不是给他们说,“你的脸没洗干净,发型不好”这种不痛不痒的BUG。如果你能经常发现一些隐藏很深的BUG,开发会渐渐的改变他对你的看法,慢慢觉得你靠谱;到最后,他们写出来的东西,如果不给你测试就不敢发布。那你就成为了一位真正出色的测试工程师了。
如何使开发觉得你靠谱,就得找隐藏BUG;如何找隐藏BUG,就得看程序流程。
看程序流程,真的就得看源代码了,文档什么的可以作为参考。但测试重视的不是函数的实现,而是函数之间的排列组合,作为测试这个可以慢慢来,时间可以有的。
对于测试而言在,个人观点是看懂软件实现流程,这在很多情况下可以有很神奇的功效!但这是需要时间和精力的,如果你想在测试行业站稳脚,就一定要学会看源代码。
还有一种方式,就是自己开发一些测试工具,实现测试流程自动化,实现快速测试。这便是真正的从测试的角度来当一名测试工程师。这样的方式可以完全实际可行的,可以为后面的人搭上一座很方便的桥梁,同时实现你测试工程师的梦想。但就我个人而言,比较喜欢垂直化的工作。
总结
首先作为测试人员必须端正好自己的态度,不要给自己心里暗示,“自己编码弱”,“测试是轻松活”,“我的地位没开发高”等这种负面的情绪。要记住你是给软件"拍板"的人,如果过了你这一关,软件出现问题,你就是全责。你身上的责任是很重的,不要轻易放过一个细节的问题,“千里之堤,历经风浪,却溃于蚁穴!”测试是质量的验证者,就像药监局,如果你疏忽大意,可能会导致万人诟病!