微軟李和恆:測試需要最短時間內找到最值錢的寶物

前不久CSDN軟件測試頻道做了一個關於測試工程師地位問題的專題,受到了廣大網友極大的關注,產生了一連串的討論。事後再去品評這個專題仍覺得少了些內容,那就是沒有舉例講講軟件工程師是如何成長。於是記者再次走訪微軟軟件測試工程師李和恆,請他來談談他的成長經歷。

李和恆,微軟亞洲工程院軟件測試開發工程師,從事測試工作已三年,先後參與過視頻編碼、在線會議和企業級即時通信等產品的測試工作,並主持web應用測試架構的開發。技術興趣爲泛型編程,架構設計,測試自動化。

談起測試項目經歷 感覺走在開發人員前面

李和恆最近比較關注的是跨瀏覽器、跨平臺的web應用測試架構,這也是爲他正在參與的產品項目服務。很多web應用程序在瀏覽器上只運行HTML和JavaScript,軟件測試工程師還是要花不少時間在各種瀏覽器和操作系統上進行手工測試。他希望通過良好地支持自動化測試來減輕這方面的負擔。目前一個從發動測試到結果收集全程自動化運行、支持多瀏覽器端並行協作的系統已經在支撐兩個項目的自動化測試工作,下一步是構建web應用測試的編程接口、支持代碼注入。將來和恆的目標是在微軟把web應用測試做得和桌面及服務器應用的測試一樣完美。
 
談到最滿意的項目,和恆告訴記者我他對在線會議系統的記錄模塊進行測試是最令他滿意的工作經歷。在那裏,他接觸並實踐了微軟最先進的測試理念。微軟內部進行了大量的“模型驅動測試”實踐:對產品建模進而自動產生測試用例。依靠這種技術得到的測試用例,自動運行以後覆蓋了接近90%的產品代碼,而他自己的工作量只是五六百行的代碼、一個Visio文件外加必要的維護。翹着腳看軟件開發工程師在用那堆測試用例暴露出來的bug裏面撲騰的時候,他有時會想:“總算跑到你們前頭去了”。

回顧所有的項目,和恆認爲其共通之處在於對測試工作的熱情和責任感。實際工作中軟件測試工程師的每一步工作都會引發更多的工作:暴露一個bug,修改好,再檢查,還是有bug,再修改......有可能會像擦地毯上的奶油一樣越擦越大。在沒有交付到客戶手上之前,測試工作的效率看上去是自我遞減的。這跟開發工作不同,他們是自我遞增的。沒有極大的熱情和責任感,很難想象這樣的工作得以維持下去。

測試就像尋寶一樣 需要在最短時間內找到最值錢的寶物

每個測試人員在特質上可能有共同之處,但成長的經歷卻是不同的,李和恆在選擇測試的工作的時候既有偶然的成分也有自主的選擇。來微軟面試的過程中,他從面試題裏面感覺到一點不平常:總是在問如何測試自己寫的代碼。最後一關經理終於問他對軟件測試工程興趣如何,這着實出乎意料。不過和恆回想起所有面試題的意圖,如果是從事簡單的工作,犯不着問這麼難,所以就答應了。三年之後的現在,經歷了若干項目之後,如果再選擇一次,和恆覺得自己還是會選擇測試工作。

具備什麼樣的素質纔是合格的軟件測試工程師?軟件測試的具體工作內容包括:理解用戶的需求和體驗,校正設計和項目計劃,運用良好的測試方法和實踐,撰寫有效的測試計劃,設計有效的測試用例,推動自動化測試,調查分析bug的根本病因,追求卓越的技術和業務能力,充分的團隊合作,以及緊密地聯繫和關注用戶和合作伙伴。

李和恆個人的理解是,軟件測試就像沙灘上的尋寶人,你不可能知道沙裏埋了些什麼、有多少、在哪裏。尋寶人要在儘量短的時間裏面挖出儘量值錢的寶物。但極爲諷刺的是,你不可能挖出所有的寶物,而且所有的寶物日後都會浮現出來,比如地震海嘯地質運動什麼的。在這裏,測試工程師就是尋寶人,寶物就是bug。至於用什麼辦法尋寶,那是技術上的問題了。技術總是日新月異的,所以我對合格的軟件測試工程師的期望是:狂熱追求寶物,具有大局觀,充分了解沙灘,最後纔是瞭解並改革尋寶工具。

測試在架構下更簡單

在沙灘上尋寶也是有沙灘的寬度的限制,同樣測試工作也是需要在一定的規則下進行的。李和恆平時對架構設計很感興趣,他告訴記者其實架構和測試是有相通之處的。 他所理解的架構是一組遊戲規則,在這組規則的保護下人們可以關注更有趣的事情,這個理解對測試工作來說是一樣的。軟件測試工程師在架構的保護下可以關心更值得注意的事情。舉個例子,籃球規則讓進攻隊員可以專心投籃而不用擔心被推拉,違反規則的行爲可以被清晰的觀察出來。另一個技術上的例子是.NET framework 3.0裏面的插件開發模型,以前軟件測試工程師可能需要測試不同類型的插件實現方法,現在只需要留意插件相對於產品的功能。換句話說,架構或者說是規則,已經被良好的測試過了,值得信賴。

採訪後記

與和恆聊了很久,話語間提到在微軟工作的收穫,他認爲最大的收穫莫過於發現測試工作是一個未被開發的金山,莫過於跟一羣具有智慧和熱情的人們共同開發這座金山,莫過於發現自己還挖了不少好東西。最後記者希望他推薦本書給廣大的程序員,和恆拿出一本John Lakos的Large-Scale C++ Software Design,大規模C++程序設計,告訴記者說那裏面介紹的系統分析方法使他從只關注自動化測試轉向瞭解系統結構。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章