六, 俺也說說”找蟲子”
哈哈,所謂找蟲子,就是找bug, 實際上俺想說的是Software QA/Testing. 壇子裏時不時有人提到Software QA (Quality Assurance), 電話會議時也有人問到過. 俺無用絕非QA專家(雖然這是俺的一奮鬥目標), 以前本來是一R&D Engineer, 後來一偶然的機會加入一Internet公司的QA部門做過一段時間(時間不長,還不到2年), 最近找工作又碰到一些QA有關的工作機會, 所以想談談我對軟件QA的一些認識和體會,和大家交流一下. 至於其他行業和領域的QA俺不甚了解, 所以這裏僅限於一般意義上的軟件QA. 其實即便如此,不同的人有不同的工作經曆和看法, 所以俺說的隻是一家之言而已,也希望和壇子裏的農活能手找蟲子專家交流. 隻是,很多話說起來會有些Technical, 還請不同行的兄弟姐妹們見諒.
說起軟件QA人們一般會想到軟件測試(Testing). 其實嚴格說來兩者有點細小差別,不過咱們在這也不是技術/學術討論, 姑且混為一談也沒啥大礙. 很多朋友對QA工作不是很了解,有人以為QA/Testing就是設計幾個test cases,跑上幾個測試小程序,看看是Pass還是Fail,就完了.在有的公司裏麵甚至連test cases都是Developer提供, QA Engineer隻是Run一遍就完事. 其實這種做法很不正規, QA工作本身的質量也不高, 以至於一些人誤認為QA工作超級輕鬆, 技術含量低, 如此而已. 但是我所知道的正規大軟件公司(如Microsoft, Google, Yahoo)的QA不是這樣的. 我以前工作的公司中, QA部門也很受重視, 一些大項目的負責人都把QA當作重中之重. 我們QA部門主要由純粹的QA Engineer和做開發的Tools Developer組成. QA Engineer基本上不編程序(或者編很少量的程序), 但是公司要求他們的QA Sense 很高, 他們要對各種軟件測試方法很熟悉, 能設計出合理而有效的test cases,並能對測試結果進行深入的分析和推理,並對結論負責. 同時QA Engineer 作為很多項目中的QA representative要定期參與項目開發過程中的各種例會和討論等, 並與development team, operations team, production manager等各方密切合作, 所以communication skills也很重要.
我們QA部門的另一類成員是QA Tools Developer(我曾是其中之一). Tools Developer的任務是與QA Engineer 密切合作, 充分理解他們的test cases, 然後開發出工具,將盡可能多的test cases 自動化(Automation), 並對這些工具的使用者(即QA Engineer, 偶爾也有Production Development Team的Developer)提供Technical Support. 這些自動化的工具可能不是一個個孤立的小測試程序, 而是集成在一個大的測試平台(我們稱之為testing harness或framework). 建立這樣一個平台的過程實際上也是一個完整的軟件開發過程, 所以對軟件開發的要求比較高. 同時也要求對被測試的軟件產品理解到模塊(module)和編程接口(API)一級(有時甚至到程序statement一級,因為發現有問題的時候我們總是千方百計確認是我們工具的問題還是被測代碼的問題).所以我們對被測產品的了解比專職的QA稍微深一點,但是對於軟件測試方法和test case的設計卻相對沒那麽熟.其實很多時候界限也不是那麽明確,QA Engineer人手不夠時我們做工具開發的就"越俎代庖"一把也是常有的事.
現在很多公司有SDET(Software Development Engineer in Test).堪稱以上兩種roles的"完美結合":要了解被測產品到相當的深度,做測試需求分析,設計test plan和test cases,設計並實現自動化,建立起testing harness/framework,收集測試結果並分析匯報,sign off產品的release,並於各方密切合作與協調等,所以整個cycle下來並不是那麽輕鬆.要是有現成的harness/framework可以用的話會好些.當然也不是每個公司的情況都是這樣.尤其是中小型公司,其QA的工作範圍可能隻是可能隻是我上麵提到的一部分.因此說起工作強度,不同的公司之間差別可能會很大.通常快要到release的時候會很忙,平時相對好些,同時也要看產品release的頻繁程度,這些大家在找工作的時候可以打聽清楚.
我個人感覺目前工作市場上的QA工作還是不算少的,尤其是一些大一點的公司一直在招人.我本人同時找software engineer 和QA/SDET的工作, 在我碰到的職位中(獵頭和HR給我介紹的)大約六成是QA相關的工作(當然可能是因為我的上一個工作是在QA部門).有的大公司有能力開發自己的QA/Test工具,所以他們會比較重視開發harness/framework並有直接做automation的經驗.中小公司很多都用一些現成的測試工具(如Selenium, LoadRunner, Jmeter等),所以他們可能會問你有沒有使用那些工具的經驗.當然如果你兩種都有那機會就更大了.類似的,做QA有人可能是以功能測試(functional testing)為主,有人可能是以性能測試(performance testing)為主.如果你有任何一種的豐富經驗,應該都有不少機會.如果兩者兼備,那更是難得的人選.
有人擔心QA的工作容易被外包,這種擔心不無道理.我的前公司去年就有一個非核心產品的QA整個轉到印度(後來證明那個印度QA隊伍比較菜鳥,有時候胡來,給我們製造了不少麻煩,那是題外話),原QA隊伍解散,要麽離開公司要麽轉到其它項目組.和coding一樣,testing被外包是可能的,但是我個人感覺在美國本土隻要還有software development就應該會有QA/testing,因為在比較正規的軟件產品開發中,QA的理念不僅存在於後期的testing階段,還存在於實現(implementation)甚至更早階段(如Scrum中的test driven思想). 也就是說整個開發過程中tester和coder之間需要密切磨合的地方有增多的趨勢,這種密切關係在遠程情況下是很困難的。
通常對entry level的QA要求相對稍低,而且從developer轉到QA比從QA轉到developer相對容易一點。感覺entry level的QA比同級別的developer薪水稍低些,到了senior level的QA薪水和同級別的developer大體持平吧。還有就是一些大公司的QA經驗會比較marketable一點,這對於找工作的朋友來說是塊敲門磚。目前市場上很senior的QA或QA Manager的職位比較少,但是這樣的機會在一些大公司如Microsoft,Google經常會有(當然可能title會有所不同)。
很多人覺得QA/testing很枯燥,我以前也有過類似想法。其實QA工作有它自己的魅力,對於那些喜歡“break something instead of make something”的人,還有就是對有些完美主義者(perfectionist) 來說也許是個不錯的職業選擇,嗬嗬。大家不要誤會啊, 其實QA工作一般人都有做好的潛力,隻是多一些嚴謹的作風和發現問題的能力會更好. QA工作中並不都是routine work,有很多challenging的地方,而且communication skills是重要一部分。如果在一個重視QA的公司,你能用自己的聰明才智想出一些方法來找到那些“自以為是”(嗬嗬,俺是說,通常developer把代碼交給QA測試時都assume代碼應該沒問題。誰會把明知有問題的代碼交給人測試呢?)的developer們的代碼缺陷的話,你同樣能有不小的成就感並贏得他人的尊重。:)
在飛機上寫下這些文字時,剛好看到一機組人員(一白人小夥)在示範救生衣使用方法。本來看上去挺枯燥的示範,這小夥做得卻與眾不同,不僅麵帶笑容,而且還加以誇張的表情和動作,將看似枯燥的示範表演的妙趣橫生而又不失正確性,最後竟贏得乘客們的一陣掌聲,飛機在笑聲和掌聲中起飛。俺也不是很少坐飛機的人,卻是頭一回碰上這樣的機組服務人員示範。我突然想到我們很多人都有抱怨過工作枯燥無味的時候,從這個小故事中是否能得到一點點啟示呢?
牛年求職記(六)--俺也說說”找蟲子”
所有跟帖:
• :) 沒時間仔細研讀,剛看完第一段。你說的"找蟲子"和俺說的"抓蟲子"還不太一樣。 -戲雨飛鷹- ♀ (254 bytes) () 04/28/2009 postreply 16:26:49
• 對,我們隻是找蟲子,消滅蟲子的任務交給“蟲子製造者”。嗬嗬。 -吳用先生- ♂ (0 bytes) () 04/28/2009 postreply 16:33:23
• 還笑。要是都給“蟲子製造者”就好了。 -戲雨飛鷹- ♀ (155 bytes) () 04/28/2009 postreply 18:52:00
• 對不起,原來姐姐在做難度更大的工作。辛苦辛苦,佩服佩服! -吳用先生- ♂ (0 bytes) () 04/28/2009 postreply 21:15:51
• 我們公司的QA, 工資差不多是開發人員的一半,怎麽可能差不多呢 -waitGC- ♀ (0 bytes) () 04/28/2009 postreply 16:36:36
• QA tools developer雖然屬於QA部門,但屬於開發人員 -waitGC- ♀ (0 bytes) () 04/28/2009 postreply 16:37:16
• 同意綠卡姐,可能俺沒交代清楚哈, -吳用先生- ♂ (215 bytes) () 04/28/2009 postreply 17:17:07
• 什麽公司QA和開發差那麽多,我們公司在全美 -lu28- ♀ (230 bytes) () 06/05/2009 postreply 08:53:03
• 我的媽呀。。碼了這多漢字啊。。PFPF。。kakaka -pega- ♀ (0 bytes) () 04/28/2009 postreply 16:47:53
• pega姐的招牌笑聲好親切啊。 -吳用先生- ♂ (0 bytes) () 04/28/2009 postreply 18:26:34
• 看不懂也頂!! -豬啊豬- ♀ (0 bytes) () 04/28/2009 postreply 18:14:09
• 豬妹少外出多休息哈。 -吳用先生- ♂ (0 bytes) () 04/28/2009 postreply 18:25:39
• 謝謝謝謝, 帶問我弟媳婦好. -豬啊豬- ♀ (0 bytes) () 04/28/2009 postreply 18:34:39
• 同意無用先生說的,有類似經曆 -找路- ♀ (93 bytes) () 04/28/2009 postreply 18:25:40
• 謝謝。大姐您經驗豐富,還請多指教才好。 -吳用先生- ♂ (0 bytes) () 04/28/2009 postreply 18:37:48
• 長知識了謝謝誒 -暗香透過了時光- ♀ (0 bytes) () 04/28/2009 postreply 18:32:37
• 反正幹什麽都是行行出狀元. -ExpectingMM- ♀ (70 bytes) () 04/28/2009 postreply 18:55:04
• great article!very informative &helpful。 -戲雨飛鷹- ♀ (32 bytes) () 04/28/2009 postreply 19:04:08
• 10 QA, 1 or 2 can do job. others are useless. -lucky101- ♀ (0 bytes) () 04/28/2009 postreply 22:09:20
• Great post! Thank you! -OS- ♀ (0 bytes) () 04/28/2009 postreply 22:58:30
• thanks and wish you good luck! -吳用先生- ♂ (0 bytes) () 04/28/2009 postreply 23:18:01
• about salary -insouthbay- ♂ (174 bytes) () 05/02/2009 postreply 16:06:14
• agree. thanks for sharing. -吳用先生- ♂ (0 bytes) () 05/04/2009 postreply 14:39:12