說實話,在我看來,左耳朵耗子的《我們需要專職的QA嗎?》這篇文章的觀點並不算過激。最多就是一篇從開發工程師的角度來商討是否需要設立“專門做測試的崗位”,讓“不熟悉或是不懂開發的人”來做測試工作。如果這個問題擺在我的面前,在大多數情況下,我的答案可能和左耳朵耗子一樣:“不需要”。
作為一個在測試行業工作了10多年的“老人”,在這里贊同左耳朵耗子的觀點似乎是對自己過去這么多年工作的否定,但實際上,正是因為有這么多年的經驗,我才真正能夠深刻的體會專職測試工程師在工作中的局限和不足。
為了避免本文引發類似“混淆了QA和測試角色”之類的毫無營養的評價,在下文中,我一概使用“測試人員”來指代從事“專職測試”工作的角色,那些喜歡拿“QA層次更高,是管過程的”各位看管請自行繞道(順便說一句,我在google的時候,是十分反感自己的團隊被稱作QA團隊的,如果有人這樣說,我一定會認真的糾正:“不,我們不是QA,我們是測試工程師”,關於google有沒有QA,各位可以自行google)。
“軟件需要測試”應該是不會有人反對的觀點。問題是,設置專職的“測試人員”是否會比“讓開發做測試”更能有效的做好測試。從1998年開始,在華為我開始了自己的測試生涯。關於為什么需要測試工程師,在我的測試工程師職業生涯中,聽到得最多的是兩種論調:其中之一是“測試工程師需要的技能與開發工程師不同,測試工程師需要的是發現問題的能力”,另一種是“開發人員無法保證產品質量,因此需要測試人員”。后一種論調其實是有很大的問題的,“開發人員無法保證質量”不意味着測試人員就可以保證質量,在大多數企業中,說的不客氣一點,“保證質量”通常只是測試部門可以繼續存在的表面上的理由而已。至於說到開發工程師與測試工程師所需技能的不同,這一點倒是存在的事實。在一個組織中,測試人員通常會花主要的精力去設計測試用例,評價覆蓋度,嘗試從不同的角度攻擊應用,從表面上看,的確,測試和開發需要的技能很不同。
但是,我要問兩個問題:
- 這些技能開發工程師不能具備嗎?
- 設計測試用例,評價覆蓋率這類工作是否真的需要專職的人員去做?
所謂的黑盒測試技術,有多大的難度?平心而論,一個智商正常的具有較好計算機基礎的人,一個下午就能完全理解常用的黑盒測試技術,白盒測試技術也不會難到哪里去。只要開發工程師願意,這些工作他們完全可以承擔。只所以開發工程師沒有承擔這些任務,原因恐怕不是他們不能做,而是像在《我們需要專職的QA嗎?》文章后的評論中某位做開發的仁兄說的那樣:“如果有一個比較專業的QA來幫助我們,我們就能把自己的時間花在更有用的地方”。
社會分工的細化自然是提供效率的方式,但社會的發展並不只伴隨着分工的細化,由於開發工具和開發基礎的變化,分工的“合並”也是一個一直在持續的趨勢。幾年前,大多數公司都傾向於有單獨分工的“前端工程師”和“后端工程師”,但現在的趨勢不也是在融合?至少,Facebook就要求自己的工程師能同時承擔前后端的任務,google也是如此。測試工作和開發工作難道就不能融合?讓開發人員做測試怎么就不行?
其實,《我們需要專職的QA嗎?》中的不少觀點我都非常贊同,鑒於左耳朵耗子已經寫了這么大一篇,我就不再重復這些觀點了,作為對這些觀點的一些佐證,我來說說我自己經歷過的幾件事情。
專職測試人員是否毫無存在的必要?當然不是。至少,我們必須承認,在有些必須大量依靠“體驗”進行測試的行業,如游戲行業中,專職的測試人員是有存在的必要的。但我想,在類似google,facebook這樣的環境中(我猜測在左耳朵耗子所在的環境中也差不多),不能深刻理解開發和具有深入的開發技術的測試人員(SET)的確沒太多價值。真誠的希望各位測試工程師在讀左耳朵耗子的文章時,不要糾結於他的結論,而去看看他提到的問題,是不是真的切中了專職測試的痛處。至少對我來說,文章中提到的這些熟悉的問題每一個都能讓我想起一些故事。
對於我從事了10多年的測試行業,即使我現在的角色有所變化,這個行業的每一個變動和變革都會讓我關注。這種感情是不可能割舍的。所以,真誠的希望每一位測試的工作者,能夠真正思考我們如何做的更好。測試和開發之間有更多配合,更多相親相愛,把測試當成提高和推動質量的手段,不正應該是測試的方向嗎?