對《我們需要專職QA嗎?》的回應
作者:網(wǎng)絡轉載 發(fā)布時間:[ 2012/4/27 11:15:11 ] 推薦標簽:
說實話,在我看來,左耳朵耗子的《我們需要專職的QA嗎?》這篇文章的觀點并不算過激。多是一篇從開發(fā)工程師的角度來商討是否需要設立“專門做測試的崗位”,讓“不熟悉或是不懂開發(fā)的人”來做測試工作。如果這個問題擺在我的面前,在大多數(shù)情況下,我的答案可能和左耳朵耗子一樣:“不需要”。
作為一個在測試行業(yè)工作了10多年的“老人”,在這里贊同左耳朵耗子的觀點似乎是對自己過去這么多年工作的否定,但實際上,正是因為有這么多年的經(jīng)驗,我才真正能夠深刻的體會專職測試工程師在工作中的局限和不足。
為了避免本文引發(fā)類似“混淆了QA和測試角色”之類的毫無營養(yǎng)的評價,在下文中,我一概使用“測試人員”來指代從事“專職測試”工作的角色,那些喜歡拿“QA層次更高,是管過程的”各位看管請自行繞道(順便說一句,我在google的時候,是十分反感自己的團隊被稱作QA團隊的,如果有人這樣說,我一定會認真的糾正:“不,我們不是QA,我們是測試工程師”,關于google有沒有QA,各位可以自行google)。
“軟件需要測試”應該是不會有人反對的觀點。問題是,設置專職的“測試人員”是否會比“讓開發(fā)做測試”更能有效的做好測試。從1998年開始,在華為我開始了自己的測試生涯。關于為什么需要測試工程師,在我的測試工程師職業(yè)生涯中,聽到得多的是兩種論調(diào):其中之一是“測試工程師需要的技能與開發(fā)工程師不同,測試工程師需要的是發(fā)現(xiàn)問題的能力”,另一種是“開發(fā)人員無法保證產(chǎn)品質量,因此需要測試人員”。后一種論調(diào)其實是有很大的問題的,“開發(fā)人員無法保證質量”不意味著測試人員可以保證質量,在大多數(shù)企業(yè)中,說的不客氣一點,“保證質量”通常只是測試部門可以繼續(xù)存在的表面上的理由而已。至于說到開發(fā)工程師與測試工程師所需技能的不同,這一點倒是存在的事實。在一個組織中,測試人員通常會花主要的精力去設計測試用例,評價覆蓋度,嘗試從不同的角度攻擊應用,從表面上看,的確,測試和開發(fā)需要的技能很不同。
但是,我要問兩個問題:
這些技能開發(fā)工程師不能具備嗎?
設計測試用例,評價覆蓋率這類工作是否真的需要專職的人員去做?
所謂的黑盒測試技術,有多大的難度?平心而論,一個智商正常的具有較好計算機基礎的人,一個下午能完全理解常用的黑盒測試技術,白盒測試技術也不會難到哪里去。只要開發(fā)工程師愿意,這些工作他們完全可以承擔。只所以開發(fā)工程師沒有承擔這些任務,原因恐怕不是他們不能做,而是像在《我們需要專職的QA嗎?》文章后的評論中某位做開發(fā)的仁兄說的那樣:“如果有一個比較專業(yè)的QA來幫助我們,我們能把自己的時間花在更有用的地方”。
社會分工的細化自然是提供效率的方式,但社會的發(fā)展并不只伴隨著分工的細化,由于開發(fā)工具和開發(fā)基礎的變化,分工的“合并”也是一個一直在持續(xù)的趨勢。幾年前,大多數(shù)公司都傾向于有單獨分工的“前端工程師”和“后端工程師”,但現(xiàn)在的趨勢不也是在融合?至少,F(xiàn)acebook要求自己的工程師能同時承擔前后端的任務,google也是如此。測試工作和開發(fā)工作難道不能融合?讓開發(fā)人員做測試怎么不行?
其實,《我們需要專職的QA嗎?》中的不少觀點我都非常贊同,鑒于左耳朵耗子已經(jīng)寫了這么大一篇,我不再重復這些觀點了,作為對這些觀點的一些佐證,我來說說我自己經(jīng)歷過的幾件事情。
故事1
在Google中國的時候,我們團隊負責的某個項目,開發(fā)工程師每天忙死忙活的加新功能,趕上線,整個團隊的開發(fā)和SET(Software Engineer in Test)都忙得不行。從傳統(tǒng)的對測試工程師的角度來評價的話,這個團隊的一個SET工作得十分出色:她幾乎能發(fā)現(xiàn)所有的缺陷,她幾乎把自己所有的時間都投入到項目中去發(fā)現(xiàn)缺陷;她是整個開發(fā)團隊喜歡和感激的人,因為“沒有她,這個產(chǎn)品簡直不可能發(fā)布”。但是,這個產(chǎn)品在發(fā)布了一段時間后,每個RC的缺陷始終居高不下,這位盡職的SET幾乎投入了全部時間和精力,仍然無法讓這個產(chǎn)品的質量提高分毫。為什么?因為開發(fā)人員從來沒有意識到他們的代碼有多爛!當有一個可以幫你發(fā)現(xiàn)所有錯誤的人的時候,我相信,你犯錯的勇氣一定會更大。這個問題后是如何解決的?說起來很諷刺,解決這個問題的第一步是讓開發(fā)意識到“你們需要自己為代碼質量承擔責任”,當這位SET改變工作方式,不再嘗試把自己的業(yè)務時間全部投入來發(fā)現(xiàn)無盡的缺陷之后,開發(fā)人員立刻意識到自己遇到了大麻煩。然后,他們主動來找我商討解決方案,當他們終發(fā)現(xiàn)自己不得不改變自己的做法,自己來控制自己錯誤的時候,事情立刻開始好轉。當他們的單元測試達到40%的覆蓋率的時候,所有人都變得更輕松了。這位SET負責推動了單元測試,推動了為了讓代碼具有良好可測試性而進行的重構,設立了組織的代碼提交規(guī)則(強制提交的新代碼必須包含單元測試),然后,產(chǎn)品質量在接下來的一段時間內(nèi)持續(xù)上升。
故事2
Google內(nèi)部有一個Test Certified的認證,該認證是針對開發(fā)團隊進行的。認證的主要要點都是基于單元測試覆蓋率,基于持續(xù)集成建立的開發(fā)規(guī)則,自動化測試(以小測試為主)。這個認證分為5個級別,1級低,5級高。Test Certified和CMMI一樣有5個級別,可是出發(fā)點卻大不相同。這個認證中涉及的全部事情都能(且主要是)由開發(fā)工程師搞定,越接近高的級別,需要的專職SET越少。(詳細內(nèi)容參見James近出版的《How google test software》,雖然書中的觀點有些和我不一致,但在Test Certified的描述上是完全沒有問題的)
故事3
后一個故事是近我遇到的一個測試工程師的故事。她從一開始表明自己有很強的“做自動化測試”的意愿,因此,她所在的項目團隊的技術負責人很高興地給她分配了一些技術性的任務,包括使用工具監(jiān)控應用的內(nèi)存使用情況,找到一個方案能夠方便的定位crash發(fā)生等等,誰知道這位測試工程師的第一反應是,“這難道不是開發(fā)工程師的活嗎?”,在她看來,測試工程師完全不應該了解程序是如何工作的,所謂的自動化測試應該是“使用某種手段把自己現(xiàn)在的手工勞動重復下去”。
專職測試人員是否毫無存在的必要?當然不是。至少,我們必須承認,在有些必須大量依靠“體驗”進行測試的行業(yè),如游戲行業(yè)中,專職的測試人員是有存在的必要的。但我想,在類似google,facebook這樣的環(huán)境中(我猜測在左耳朵耗子所在的環(huán)境中也差不多),不能深刻理解開發(fā)和具有深入的開發(fā)技術的測試人員(SET)的確沒太多價值。真誠的希望各位測試工程師在讀左耳朵耗子的文章時,不要糾結于他的結論,而去看看他提到的問題,是不是真的切中了專職測試的痛處。至少對我來說,文章中提到的這些熟悉的問題每一個都能讓我想起一些故事。
對于我從事了10多年的測試行業(yè),即使我現(xiàn)在的角色有所變化,這個行業(yè)的每一個變動和變革都會讓我關注。這種感情是不可能割舍的。所以,真誠的希望每一位測試的工作者,能夠真正思考我們?nèi)绾巫龅母。測試和開發(fā)之間有更多配合,更多相親相愛,把測試當成提高和推動質量的手段,不正應該是測試的方向嗎?
相關推薦

最新發(fā)布
性能測試之測試環(huán)境搭建的方法
2020/7/21 15:39:32軟件測試是從什么時候開始被企業(yè)所重視的呢?
2020/7/17 9:09:11Android自動化測試框架有哪些?有什么用途?
2020/7/17 9:03:50什么樣的項目適合做自動化?自動化測試人員應具備怎樣的能力?
2020/7/17 8:57:06幾大市面主流性能測試工具測評
2020/7/17 8:52:11RPA機器人能夠快速響應企業(yè)需求,是怎么做到的?
2020/7/17 8:48:05Bug可以真正消滅嗎?為什么?
2020/7/17 8:43:03軟件測試基本概念是怎么來的?軟件測試生命周期的形成歷經(jīng)了什么?
2020/7/16 9:11:10