2005年的秋天,李敏還在上海交通大學念研究生,還有半年就要畢業了。一天,同學發了個鏈接給她,是微軟在上海招聘實習生的消息,職位的名稱叫做軟件測試開發工程師(Software Development Engineer in Test,簡稱SDET),這個職位對學生來說還是個新鮮玩意兒,沒幾個人清楚具體情況,在好奇心的驅動和微軟的吸引力之下,她投出了簡歷。接著她經歷了傳說中的微軟“五輪面試”,走出美羅大廈的時候已是下午一點,時至今日她對這個時刻的印象只有兩個:饑腸轆轆,大腦高速運轉。經過一周的焦急等待之后,她同時收到了SDET實習生和正式員工的offer,所在的組是System Management Server(也就是System Center Configuration Manager 2007的上一個版本)。
就這樣,李敏開始了在微軟當軟件測試開發工程師的旅程。
幾個月過去了,當同學好奇地問起在微軟工作的感受和SDET的情況時,她說了自己的“微軟測試初體驗”:
測試初體驗一、軟件測試開發工程師,很“奢侈”很“酷”
問起對軟件測試開發工程師的第一印象是什么,她的回答是:挺“奢侈”挺“酷”的。
說到“奢侈”,先看看一個軟件測試開發工程師的典型“測試財產清單” —— 一到兩臺配置先進的工作機;兩個21寸的液晶顯示器,一個屏幕用來顯示產品的界面,另一個屏幕用來發bug或者編程序;再加上實驗室里面十幾臺測試機器或是一個16G內存的“巨無霸”。如果你需要測試Windows Mobile,那恭喜你了,各式各樣的smart phone、pocket PC可以裝滿一抽屜。經過一段時間的了解后,她也知道了這樣“奢侈”的配置一方面可以提高工作效率,更重要的是讓測試工程師能夠考慮到各種復雜的配置以及模擬客戶環境。
說到“酷”,印象中,軟件測試開發工程師總是有機會走在嘗試各種微軟新技術、新產品的前端,也總是有機會通過動手能力來展示自己的“酷”。比如工程師會把十幾臺測試機器裝成各種各樣不同的Bench, 操作系統從Windows 2000、XP到最新的Vista、Longhorn甚至Windows 7,從x86到x64,從英文到德文、中文、日文等;微軟最新的產品或者尚未發布的產品都可以拿來“研究”一把,比如Longhorn、Windows 7、Hyper-V等;雖然不一定考過MCSE,但是每個人都會配置DNS、DHCP、AD、network等。
測試初體驗二、測試有時候就像是玩游戲,找問題的能力很重要
測試就像是玩游戲?也許你會覺得不可思議。李敏拿了道面試題來打比方,給你一臺筆記本電腦,你會怎么去測試它?這是一道典型的開放式問題,即使是沒有測試知識的人也可以想出很多的“測試用例”。比如檢查筆記本的型號、顏色、硬件配置、屏幕、電池、操作系統等,相信這是很多人拿到新買的筆記本之后做的第一件事情,這些多半都屬于常規的正向功能測試;還有些人指出,外觀要小巧方便攜帶,鍵盤手感如何布局如何,功能鍵是不是方便易用,這些人對可用性要求比較高;還有些會想到用它來玩3D游戲看看顯卡的性能怎么樣;有些人想到裝上Vista、64位的操作系統,這就是兼容性方面的考慮;還有人思維“不走尋常路”,提出要把筆記本放在赤道的日照、南極的冰雪環境下試試能不能正常工作,當砧板切切菜,扔下樓看看碎不碎,這就是關于可靠性和壓力方面的測試,有趣的答案還可以有許多許多,只要你去想…
在李敏的描述中,軟件測試開發工程師真實的日常工作跟答這道題一樣的好玩,只不過筆記本電腦換成了軟件程序。軟件測試開發工程師拿到“筆記本電腦”之后,會像上面說到的一樣開動腦筋仔細檢查,檢查之前需要列出想測試的各個方面、策略、工具、風險以及怎么開展等,這稱為測試計劃(test plan);每項具體的測試叫做測試用例(test case),每個test case需要列出具體操作步驟(steps);找出來軟件的缺陷、問題等稱為bug,bug中需要記錄怎樣去重現它,稱為重現步驟(repro steps);找bug的過程中你可以試圖找出根本原因在哪里、甚至哪一行代碼有問題,這就是debugging。優秀的軟件測試開發工程師在這個“玩游戲”的過程中需要具備足夠的好奇心,想出各種各樣的主意把軟件“搞壞”,盡可能地找出bug,還要多從客戶的角度去想,其終極目標就是為發布到客戶手中的軟件把好質量關。其中,找bug是軟件測試開發工程師應該具備的基本功。
不久她就找到機會“測試”了一把自己的SDET指數,正好高性能計算組舉辦找bug比賽,優勝者可以獲得一些小禮品,她拿到了一個印有Microsoft標志的水杯。
這時候,她的一個高中同學在MSN上面發了條消息:“你當了測試工程師,就不用編程了吧?”??磥硇枰吻逡幌铝耍?/p>
測試初體驗三、誰說軟件測試開發工程師不用寫代碼了?
微軟早年也設有只做手工測試而不寫代碼的職位,稱為STE(Software Testing Engineer)。現在所有的測試工程師的職位都叫做SDET(Software Development Engineer in Test),從名字可以看出來,需要具備編程能力,這些編程工作是為了更好地做測試。
舉個例子,李敏負責的某個UI模塊有1000多個測試用例,手工執行一遍想想都很累。為了偷懶,她寫了些代碼將其中80%的測試用例實現測試自動化,這樣下班前只要讓機器開始跑自動化,第二天就可以拿到結果,從而大大減少了驗證這些測試用例所需要花的人工時間,又可以及時地捕捉到bug。此外,軟件測試開發工程師經常會做一些實用的測試工具和研究測試技術,比如開發UI測試方面的工具,開發測試流程管理工具,和更好地運用基于模型的測試方法等。在堅持創新的公司文化引導下,大家都非常注重運用新技術新方法,不斷地把測試工作推進到新的高度。
轉眼間,一年過去了,李敏從上海的服務器與開發工具事業部老大謝恩偉的手中接過了一周年的水晶紀念碑,按照慣例還請大家吃了一磅的M&M巧克力。2007年秋天,她所在的團隊發布了System Center Configuration Manager 2007。在這段時間里,她親身體驗了微軟給員工提供的多種多樣的成長幫助:
職業發展體驗一、員工成長路上的多種幫助
從加入公司的第一天起,部門就分配了一個資深員工給李敏做“Mentor”,Mentor的意思是良師益友,也就是“師傅”。Mentor會手把手地教日常工作中碰到的各種問題,很多小問題都可以請教Mentor,比如打印機怎么用、測試用例怎么設計、甚至是開會的時候有個縮寫名詞沒聽懂等。第一個Mentor的作用就是“師傅領進門”。
公司還提供了系統的專業知識培訓。半年內,她先后參加了New SDET in Microsoft、Test Automation等培訓,這些都是測試工作的基礎知識。說起“修行在自身”,公司MyLearning網站上有不少測試專題,比如性能測試、代碼覆蓋率研究和安全測試等;這個網站有無數的在線課程錄像,在這里可以學習其他員工的知識和經驗,幫助自己更好地做測試工作;近期即將進行的技術講座、培訓、會議等也會在這里公布,熱門專題一定要早點去注冊“占座”,否則就沒位子了。另外,她還發現了一個非常棒的資源MSLibrary,那里有無比豐富的技術書籍、新聞雜志和研究論文等。公司還投資了一系列的綜合能力培訓,為員工提供從各方面提升“軟”技能的平臺:有些培訓是語言方面的,比如覺得英文不夠好的可以去上課,老外來到中國也可以學中文;還有一些是教你“怎么說話”的,比如告訴你怎么精準提問、精準回答,怎樣做演講,怎樣去溝通得到大家都想要的結果;還有一些教你“怎么思考”,比如創新思考,不同情況下的思考方式等。這些培訓很實用,一般學完了就可以運用到實際工作和生活中。
再后來,李敏對安全測試的興趣日漸濃厚,她根據自己的發展需求和興趣找了美國這方面的“大牛”來做Mentor,漸漸地在System Center Configuration Manager 2007 SP1中挑起了做安全測試的擔子。她還在上海的服務器與開發工具事業部中組建了一個跨產品組的虛擬團隊,一方面帶領團隊成員學習安全知識和安全開發流程,另一方面積極向各個產品組推廣實施安全開發流程的最佳實踐經驗。虛擬團隊的成員來自各個不同的產品組,能花在安全方面的時間都是“工作之余”,要帶領這個團隊凝聚力量朝一個目標努力是并不容易的事情。最初組建團隊的時候,她會用自己對安全方面的熱情感染其他有興趣的人,接著用事例讓大家認識到安全對于微軟產品真的很重要,而且安全方面的知識對于長期的職業發展也很有幫助,就這樣“招募”到了團隊的最初幾個核心成員。接下來就是確定這個組的遠景、使命和活動計劃,她先提出了一個草案然后組織大家一起討論,經過一番“激烈”辯論、修正大家達成了共識。其實,最大的困難還是來自于按照計劃一步一步地開展活動,在團隊成員興趣減退的時候,需要振作士氣讓大家重新記起“最初的夢想”;在一些成員特別忙的時候,需要靈活修改計劃,讓他們能兩頭兼顧;另外還要考慮怎樣能夠更好地把安全意識和最佳實踐經驗傳遞給所有員工,比如會選擇技術講座、安全知識簡報和展示等多種宣傳方式。在這個過程中,李敏學到了很多東西,尤其是“influence without authority”的領導方式,通過影響來帶動別人,而不是通過上下級的權威去要求別人。
此時,她對微軟的職業發展也有了更加深刻的認識:
職業發展體驗二、微軟的職業發展道路為不斷挑戰自己的人而設計
關于員工的職業發展,年中的時候會專門有一個關于職業發展的討論(Mid-Year Career Discussion,在公司內部內部簡稱MYCD)。經理會和員工一對一坐在一起,評估員工現在所處的發展階段、能力水平等,討論員工的未來三到五年的職業發展規劃,然后進一步制定實施計劃。微軟給員工的職業發展道路也比較靈活,總體上有個人貢獻者(Individual Contributor,簡稱IC)和管理(Management)兩條職業發展軌跡。
軟件測試開發工程師屬于IC,也是李敏最初選擇的軌跡。在微軟,資深工程師很受尊敬也很有影響力。公司為工程師設計了具有挑戰性的職業發展道路,所以,在這兒碰到一個為微軟服務了十幾年的工程師是稀松平常的事情。對于軟件測試開發工程師來說,可以一路從Test(初級)做到Test II(中級),Senior Test(高級),甚至Principal Test(首席),隨之而來的挑戰是測試工作的范圍、影響力不斷擴大。比如一位Senior Test的挑戰可能是對整個產品的測試工作做出很大的貢獻,而一位Principal Test面臨的挑戰則是在整個Microsoft倡導新的測試技術,這都需要多年的積累,也很有挑戰性。還有一個職位叫做Test Architect,這個職位負責測試Architect設計出來的architecture,光聽聽就知道很酷了。
員工會選擇一條職業發展軌跡前進,但也可以根據興趣和能力進行調整。從2007年開始,李敏的小組需要將部分測試工作外包出去,李敏在經理的指導下開始參與組建和發展外包軟件測試組的工作,這讓她發掘了自己在管理方面的興趣和潛力。組建外包測試組的第一步是招人,先確定職位所需要的能力,然后篩選簡歷,開始面試,多方面考察候選人,最終做出決定。然后是培訓工作所需要的知識,老組員帶新組員,要求新組員在一周之內學會并可以上手工作。接著是制訂一些規范流程,讓組員知道怎樣去高效地獨立工作,也讓整個過程更便于管理。比如,為了保證自動化的代碼質量,李敏搭建了一個回歸測試平臺和一個網站,所有的自動化必須在這個平臺上通過3次,才能去網站上把它們標記為“自動化完成”。此時這個組能夠較好地運作起來了,李敏會和組員定期會進行一對一的談話,了解他們的狀態和遇到的問題等,綜合分析之后會想一些辦法去優化流程和提高團隊的效率。經過觀察,她還確定了一些技術能力和綜合能力不錯的組員,適當授權給他們去擔當更多的責任,發揮他們的聰明才智,也減少自己的管理成本。整個過程下來,她發現管理很有意思也很挑戰,自己有興趣也有潛力去做,于是她在一個MYCD里調整了職業發展軌跡。經理了解之后也給與了相應的支持和輔導,比如會建議如何去“打磨”管理方面的技巧,也會拋出問題讓她自己去思考該怎么解決、怎樣做得更好。
選擇不同的職業發展軌跡是一種挑戰,而換個產品甚至邁進一個完全陌生的領域是另一種挑戰。她身邊就有一些同事選擇加入其他的產品組。在這一點上,微軟多元化的產品結構給員工提供了特別好的機會,從Windows到SQL Server、Visual Studio,從Office到XBox、MSN等,跨度很大,就像是一個“IT業界”。員工總能找到挑戰自己的機會,做熟了這個產品還可以做另外一個產品。在微軟,經??梢钥吹焦ぷ髁硕嗄暌琅f保持著高度激情的員工,這恐怕是和公司提供的多元化的職業發展道路是分不開的。
時間如白駒過隙,2009年已經到來,她所在的組正在做下一個版本的Configuration Manager,她也在帶領一個小組負責產品的UI測試工作。
回顧這三年半的歷程,激動人心的挑戰、解決問題的成就感以及團隊合作的樂趣始終伴隨左右。而抬頭向前看時,還有太多未知的探索之旅等待著。
希望大家能喜歡這些心得與經驗的分享。
-
測試工程師
+關注
關注
6文章
124瀏覽量
12437
發布評論請先 登錄
相關推薦
評論