看到XBLA的这个贴子(#2859659@0) 以及CSB的回复(#2863626@0), 很有些感想. 所以特挖此坑, 抛砖引玉.
先引用XBLA的题目和CSB的回复:
QA做了3年多了,薪水算安全级(65K+),业务也没很大挑战性,反而不时要应付某些低能的同事,现在觉得没什么干劲了,是改往PM方向发展呢,还是改行? ---- By xbla
“俺真是瞧不起他们啊. 没有什么技术背景, 也不用学什么高薪技术, business logic也是来公司后才学的. 写个automation testing script, 也到处是重复的CODE, 或者根本写不来. 可别说, 这些人找工作都是很容易的, 薪水也不低, 真的不明白这世道怎么了.” ---- By CSB
首先要说的是, 我自己是个DEVELOPER. 如果我是在三年前看到这个贴子, 我一点感想都不会有. 我会是贴子作者的坚定支持者, 认为TESTER是背景不强, 技术不高, 工作乏味的一群人. 我没有意识到我曾经有个机会改变自己的这种观点. 那是一次在我们的SOFTWARE ENGINEERING课上, 教授说他的一个朋友能在10分钟之内BREAK任何SOFTWARE(当然, 这里所说的SOFTWARE不包括我写的HELLO WORLD). 我当时对他的这为朋友很是景仰, 觉得他是个非常NB的HACKER, 但却没意识到, 他其实是个很NB的TESTER.
后来, 在工作中接触了一些杰出的和不杰出的TESTERS. 自己也做了一部分TESTING的工作. 渐渐觉得TESTING并不象自己原来想象的那样: TRAINING一只猴子, 按按BUTTON也能完成. 而是相反, 它所要求的技术, 逻辑思维, 及创造性一点不比做DEVELOPMENT要求的少. 有一次和一个杰出的TESTER聊天, 聊到一个面试题目: 你如何去测试一部电梯. 他在十几分钟内列出的方法和TEST CASES, 让我至今每次乘电梯时, 都以一种异样的眼光来打量电梯. 有兴趣的同志, 特别是那些觉得TESTING很简单的同志, 不妨试试, 看看您怎样测试一部电梯. 让我们来看看, 如果您做TESTING, 会不会是一个合格的TESTER, 会不会是一个杰出的TESTER.
其实, 无论是DEVELOPER还是TESTER, 他们都是在软件或项目开发的过程中做着侧重点不同的工作. 所谓的”术业有专攻”, 双方都是不可替代或缺少的. 之所以一些DEVELOPER会觉得TESTING很简单是因为他们自己也做一些TESTING, 比如说UNIT TESTING, 但他们却没意识到, 他们所做的只是TESTING冰山的一角, 或者连一角也算不上. 有些TESTER自己也觉得自己的工作没有挑战, 没有发展. 那是因为他们自觉或不自觉地在回避TESTING中具有挑战的难题. 很多TESTER在做TESTING还是把自己放在一个普通用户的角度, 象对待温室的花朵一样对待自己所要测试的软件, 仿佛自己的任务不是BREAK THE SOFTWARE而是MAKES IT LOOK AS BEAUTIFUL AS POSSIBLE. 而一些杰出的TESTER是用HACKER那样挑剔, 甚至略带恶意的眼光来对待他们所要测试的东西的. 另外, AUTOMATION TESTING也是一个不论在理论上, 还是在技术实践上都还很不成熟, 同时也是有巨大发展潜力的挑战性课题. 一个自觉的CS技术人员, 对每件要重复做两遍以上的事情, 都会去考虑HOW TO DO IT AUTOMATICALLY. 说到这有一个有趣的故事. 我的一个教授曾经用一个多星期的时间去研究寻找把HTML文件自动转化为PDF文件的办法. 因为他每天有5-6个文件的讲义要从HTML转为PDF. 我们问他, 就是手动去做每天也花不了他五分钟去做, 干嘛费劲去做AUTOMATION. 他说: I just fell humiliated if my students know that I have to do the same thing 5-6 times manually each day.
现在再回到CSB贴子里鄙视TESTER的两个具体理由, 看看是不是真的站的住脚.
首先, 作者说他们公司的一些TESTER连AUTOMATION SCRIPTS都写不出来. 不知道他得出这个结论是不是因为看见这些TESTER还在做大量的MANUAL TESTING. 虽然TESTING就其本身特点来讲, 需要做大量的重复性工作(同一个FEATURE需要在不同的情形, 不同的顺序, 不同的组合下进行测试), 而且AUTOMATION TESTING一直是努力的方向. 但目前的实际情况是, 最好的AUTOMATION TESTING也只能发现不到20%的BUGS. 所以大量的TESTING还是手工完成的 (在这里暂且不讨论AUTOMATION TESTING的局限性), 即使是对最优秀的TESTER来说, 也是如此.
CSB的另一个理由是, 那些写了AUTOMATION SCRIPTS的TESTERS用了很多重复的CODE. 虽然, 避免REPEATED CODES当时软件工程的一个基本原则, DEVELOPERS常常用建立LIBRARIES的方法来避免重复性的CODE. 那么以建立TEST LIBRARIES的方法是不是也是理所当然的呢? 有实际经验的会发现情况并不总是如此. 如上所述, TESTING其本身的特点决定了它有大量的重复. 如果只是以避免重复CODE而建立TEST LIBRARIES, 最后你会发现你建立了一个庞大, 琐碎的LIBRARY. 同一个FUNCTION在不同的SEQUENCE中, 不同的TASK下, 所起的作用可能是完全不同的, 这会使得FUNCTION的命名在不同的TEST CASES里, 变得CONFUSING AND MISLEADING, 从而命名也变得毫无意义. 而且这样的一个LIBRARY WILL BE HARD TO REVIEW, HARD TO DEBUG, AND HARD TO MAINTAIN. 所以在实践中, TEST LIBRARY更注重于从USER TASK和START AND END STATE的角度去建立, 而不是仅仅为了避免重复CODE的出现.
所以, 如果不是对他公司的TESTER的工作有更深入的了解, 而仅凭上面两个原因就得出TESTER的技术水平较低, 是很有些武断的.
砖抛完了, 希望看见大家各抒己见.