去年毕业后进入公司做测试,由于人手紧张,5月份被拉去做了5个月的VB,十月份转入C++,转过身回看这一年多的路,几多坎坷。
作为一个测试出身的程序员,我体验到一种复杂的心情,我试图寻找一些证据,证明我此前的工作是有意义的,即,测试是重要的。
究竟该以一个怎样的心态去看待这份工作,该以怎样的视角来评价测试在软件开发过程中的作用,该用怎样的策略来使得测试发挥更大更积极的作用?
为什么要测试?
许多人一定会回答,因为程序不经测试就会隐藏很多问题。事情似乎是这样,领导们似乎也认可,但我认为这不是进行测试的根本动因。我们似乎没有这样的意识,开发也好,测试也罢,这一个个过程或者说工序都是公司商业行为的一部分,我们的目的是研发软件,赚钱。
在从事测试的那段时间里,我的想法很简单,找出BUG,让软件更趋于完美。但这个简单直接的目的限制了我们的思维空间,这只是关注了很小的一部分,而没有考虑清楚在更广泛公司行为上的价值。当我们抱怨没有健全的文档,抱怨种种条件限制时,我们是否想过,其实,我们在被动的实现价值,而不是主动的创造价值?
为什么开发人员工资要高于测试人员,很简单,他们编写了软件,公司最用这些软件实现了盈利,而测试工作呢?你几乎很难找到可以明确体现测试价值的事情,并讲给老板。测试工作处于被动,测试工作成为了附庸,测试工作成了一个可以在特定条件下忽略的过程,因为没有测试,软件照样研发,别告诉我质量会受影响,这谁都知道,但在你能证明加入测试工作后可以显著提高软件质量之前,请不要以质量会受影响来强调测试工作的重要性。
如果测试继续以目前的方式进行工作,而不是主动的承担起更多的责任,而不是主动的展现测试的工作价值,那么测试将依旧不被重视。
如果测试继续停留在寻找BUG这个层面上,那么测试将永远成为附庸。不要讲微软多么重视测试,微软的测试工程师多么牛逼,要知道,微软的测试工程师比我们身边的很多开发工程师不知强多少倍,他们能做的测试工作不是我们身边的开发人员能做的,自然,他们的价值被体现出来。
向青草更青处,如果你有能力,去掌握和你工作相关的编程语言,这里不是要BS手工测试,只有当我们站在同开发人员同样的高度上时,我们才有价值,去做其他测试人员不能做的事情,去做开发人员不能做的事情,去做创造而非测试创造的事情,去告诉开发人员,兄弟,你的这个函数效率太差,你可以这样去修改它,去告诉开发人员,你的这个模块的设计在将来不能很好的适应用户需求的变化,你应该这样去设计。
如果我们总是在做着检验的工作,或是寻找的工作,那么我们始终处在工作流的下游,问题堆积如山,而我们仅仅找出它,我们不能修改,甚至不能建议,仅仅是找出它,用大多数人认为的点来点去的方法,那么我们的价值究竟何在?毕竟我们用这些方法能找出来的只是少数,而且效率很慢,我们应当用更具有技术性的方法找出更多的BUG,直到开发人员自己承认,如果让他来测试,他无法找出这个问题,因为他点不出来,调试也没有调试出来,如此,我们做到了开发人员自己都做不到的事情,我们才具有了和他们一样的重要性。