有的人说做软件开发的可以轻松转做软件测试,但是软件测试转软件开发却是有些困难。真的是这样吗?其实IT行业内,都有这么一个无形又不说透的鄙视链在里面。做开发的瞧不上做测试的,做测试的怕得罪做开发的。有时候测试人员不但不能成为整个团队突出的岗位,反而会被各种事情给牵绊限制。如果说开发是考验智商,那么测试考验的更多的是智商和情商的综合,一个团队里面,开发和测试都很重要。所谓的比不上,不过是某些业内人为了凸显自己的与众不同而已。

软件测试

很多程序员喜欢用架构形容程序,而测试的存在是为了保证软件的质量及满足用户需要,那么为什么乐于用架构对比软件的程序员们却认为软件可以不需要测试人员呢?这种想法显然是非常荒谬的。

测试是做什么的?测试做的事情,程序员真的能轻易做到?

1、监控产品流程。从时间控制的角度来说,开发新功能和修bug是一个平衡。开发得太快就可能把交付给下一个阶段一个问题较多的版本,从而使得后面的问题更难处理。我们如何知晓每个阶段软件质量怎么样?具体的方法很多,回归测试,代码覆盖、压力测试等等。但是这些信息谁来收集和分析,怎么分析?能得出什么样的结论?有多少程序员会自己做这些?

2、搭建复杂的应用场景。谁能知道测试一个完整的Active Directory服务器的回归测试环境需要多少台域控?我搭建的纪录是11台,还不包括中间可能动态加入和删除的客户端。其中包含大量故意的毁坏性操作。每一次毁坏之后都必须恢复现场进行下一个测试。有多少程序员构造过这种场景?

3、简化问题报告。当发生用户报告时,他们最初给出的步骤往往过于简化或者过于繁琐,缺乏直指问题所在的步骤描述。很多时候由于步骤不清楚,导致分析过程中存在很多弯路。这个时候需要有一个人来不停地和客户打交道并定位关键步骤。这个步骤总是必须完成的,那么谁来处置?有多少开发人员真正负责处理过这些?

测试和开发需要的技能有交集,但基本上是两个要求不同的岗位。开发技术不行去做测试,不等于你能成为一个好测试人员。测试人员真的没有程序员想的那么容易取而代之。虽然测试人员对编码能力的要求较低,不表示开发人员可以自动成为一个合格的测试。

测试这个岗位有测试的能力要求,它和开发的主要差异是在于分析和统计的能力。测试的基本能力是能够严格地按步骤执行测试,这个确实是很容易入门的。但好的测试要求的绝对不仅仅是这个。当一个人在测试到达一定程度的时候,他/她就必须开始注意很多流程上的分析工作。

其实开发在这个位置上也是一样的。最开始的时候,写个排序之类的算法都不是难事。但一个好的开发不是只会这些就够的。当入行时间长了,开发就必须开始注意领域知识(比如东哥最近刚发布的Adaptive Wide Angle滤镜)、架构、设计(比如互操作性,微软已经被人骂了很多年了)等等东西。这些东西都和编码本身无关,但是成为一个好的开发必须掌握这些。这两个职位也许开始时能力要求接近,随着时间的发展则差异会越来越大。但这不是开发部门可以用来鄙视测试部门的理由。

软件测试

另一方面,也正是因为有了两个职位的差异,所以才会有兴趣爱好方面的区别。有的人一开始不理解测试这个职位,慢慢地越做越喜欢;有人试了之后还是觉得不符合自己的兴趣,所以选择离开。这都很正常。人各有志,这东西勉强不来。

测试入门门槛相对较低,但是入门以后想要得到长足发展,能力要求甚至超过开发。就像之前说的,一个优秀的测试人员,除了基本的测试技能,还要会敲点代码懂些程序。如果等一个测试人员成长为测试能做,代码能敲的时候,那才是只懂得敲代码的程序员该着急该焦虑的时候,谁也别瞧不起谁!