從微軟的今天看軟件測試的明天[1] 軟件測試
陳天的辦公室并不小,但卻因堆滿了機器而顯得狹仄不堪。他解釋說,因為微軟亞洲工程院(ATC)部門準備擴充,而“新的幾個實驗室還在裝修中”,所以就形成了現在的這個局面——幾十臺Dell主機和一箱箱顯示器堆放在眼前的辦公空間里。當聽說微軟亞洲工程院的測試工程師人均擁有四五臺計算機、且正在搭建的測試實驗室將擁有上千臺機器時,我跟陳天開玩笑說,看來你是微軟亞洲工程院最大固定資產的擁有者,陳天微笑著對這一判斷表示認同。
“人機比例”如此懸殊,并不是說微軟亞洲工程院的軟件測試工程師都是多臂超人——事實上,這是由微軟獨特的軟件測試文化所決定的。陳天表示,“微軟的軟件測試80%-90%都是自動化的。所謂自動化,就是由測試工程師寫出測試程序來運行測試案例,而并非人們所想象的人工點、點、點的那種測試方式!
在拜訪微軟亞洲工程院之前,提到微軟的測試,我會想到比爾蓋茨說的一句話:“很多人都認為微軟是一家軟件開發公司,而事實上,我們是一家軟件測試公司”。這種說法也讓我們對微軟亞洲工程院的測試團隊充滿了好奇。
微軟亞洲工程院創立之初,僅有兩位從微軟亞洲研究院轉過來的測試人員,而且這兩個人還不屬于任何一個組,只是在項目組有測試需求的時候臨時幫一下忙。對于一支完整的產品開發體系,軟件測試團隊是極其重要的組成部分。因此,院長張宏江對此高度重視——于是,從微軟總部找來了在微軟從事測試五年的陳天和周慶暉擔當起了搭建微軟亞洲工程院軟件測試團隊的重任。
招募到合適的測試人員是工作的第一步,由于國內對軟件測試工作的重視不夠,有經驗的人員因而少得可憐,培養剛畢業的學生便成為了優先的選擇,不過,“我們的學生由于勤奮好學成長得很快”。到現在,微軟亞洲工程院已擁有一百多名測試工程師,其中有一些人已經成長為技術骨干和Leader.在微軟的測試體系中,主要的測試人員分為兩種,一種是SDET(Software Design Engineer Tester),一種是STE(Software Test Engineer)。對SDET編程能力的要求和對開發人員的要求基本上是一樣的。他們都須有扎實的計算機基礎知識和編程能力。區別可能在于開發人員對算法更加精通,或某一方面的技術鉆研的更深入一些。而微軟亞洲工程院要求SDET的技術面很寬,要能使用很多種技術,比如可以用C、C#、腳本等來寫程序。陳天說:“我喜歡在面試的時候看他們直接在電腦上編程。如果一個人經常寫程序,他調試程序的表現會與編程不熟練的人有很大的不同!
因為SDET懂開發,有扎實的編程能力,所以他能夠做一些其他普通軟件測試人員做不了的工作,比如可以將源代碼打開做代碼的靜態分析,還可以做測試用例的代碼覆蓋率調查。所謂的代碼覆蓋率調查,是指考察測試用例能否將所有的源代碼都調用到,是一種對測試質量的初步評估標準。
更高深的一些測試方法還包括錯誤注射(Fault Injection),也就是將錯誤注射到源程序中。因為很多錯誤很不容易在某種機器環境中出現,比如一個用戶的機器內存特別少的時候,微軟要求程序仍然不能丟失數據和發生安全漏洞,但測試人員不能把測試機器的內存拆下來,也不能非常精確的把內存消耗到期望的數值,這時他們會通過注射一段代碼來模擬內存的分配。要做到這點,需要掌握編程及熟悉操作系統的內存分配算法。由于SDET的存在,微軟可以更加有效地對軟件進行測試。
當然,STE的角色也很重要。這些人必須非常聰明,解決問題的能力特別強;有鉆研精神,絕不放棄;很細心,而且很有創造力。陳天說:“好的STE不是只按照規定好的測試用例來執行,而是可以想到很多一般用戶想不到的地方,他可以用非常規的思路來尋找軟件的bug.而且他會懂很多各種各樣的軟件。事實上,很多bug不是在程序本身找到的,而是在其與其它程序交互時找到的!辈贿^,就測試工作而言,微軟未來的趨向是,純粹的STE將越來越少,而且微軟會要求STE“也要學會用程序工具去進行測試”。
普通的測試工程師若想臻至“優秀”,需要經歷很長的階段。除了要學習很多測試方面的技巧外,還需對測試全局有著全面的了解和充分的掌控——這同樣是實現個人成長的重要前提!皽y試人員一開始學到的信息都是分塊的,比如開始會寫測試用例,后來知道了要做代碼覆蓋率,而后可以學到更深的知識,但最終是要把這些知識都融會貫通起來,大家都需要經歷這樣一個過程,這是很難避免的!标愄煺f,“因此,我要求大家不要只看自己做的部分,而要看其他人做的事情,要看產品開發到哪個階段,就像玩拼圖一樣, 只有對整個軟件開發流程了解,這個時候你才知道每塊拼圖應該在哪里! 為了讓軟件測試工程師更快速地成長,微軟亞洲工程院經常讓大家轉換角色,輪流負責不同的任務,或者將一個大的部分拆分為幾個小塊,每個人負責其中一個小塊的全部測試內容。
文章來源于領測軟件測試網 http://www.kjueaiud.com/