要避免或至少將這種破壞減少到最低限度,開發人員首先需要知道這種破壞的影響面。在這里單靠開發人員自身的邏輯思維、技能和經驗是遠遠不夠的,自動測試再一次成為一種有效的工具。往往開發人員會制定不止一個方案,對每個方案上都運行一遍同樣一套自動測試用例,然后比較結果,選出最佳方案。
自動測試在這方面所起的作用不僅在產品的開發過程中,它還延續到產品發布后。產品支持部門在為客戶提供應急解決方案時也要依賴自動測試。
管理對測試的依賴
在微軟,軟件項目管理的主要線索就是Bug的管理,其中最直接具體的管理活動就是“Bug三方討論會(Bug Triage)”。會議一般由項目管理Program Manager(簡稱PM)來主持,有開發人員和測試人員參加(所以叫三方會議)。會上對每個新生成的Bug進行討論,并決定
是否接受這個Bug;
Bug的嚴重級別和優先級別;
Bug由誰來負責,是由測試提供進一步詳細信息,還是交由開發人員解決,以及大致的解決方案等等。
會議還要對老的Bug檢查解決進度。這種討論會常常會發生爭論,要求測試人員具有足夠的技術基礎和用戶經驗,來捍衛產品的質量。
可以說項目開發到了某一階段后就是由這種Bug的管理所驅動的。這其中的原動力來自測試。
項目管理中一項非常重要但也十分困難的工作是衡量項目的進度,包括判斷項目的狀態,確定項目是否能預期完成。這方面,測試提供了兩個非常重要的參數,一個是Bug數量的趨勢,另一個是測試結果的趨勢。
Bug趨勢就是將每天新生成的Bug數和每天被解決的Bug數標成一個趨勢圖表。一般在項目的開始階段新生Bug數曲線會呈上升趨勢,到項目中后期被解決Bug數曲線會趨于上升,而新生Bug數曲線應下降,到項目最后,兩條曲線都趨向于零。PM會持續觀察這張圖表,確保項目健康發展,同時通過分析預測項目Bug趨于零的時間。
在一定的歷史經驗的基礎上分析使用這一圖表會得到很多有價值的信息,比如說,可分析開發和測試在人力資源的配比上是否恰當,可以分析出某個嚴重的Bug所造成的項目質量的波動。
每天的自動測試結果同樣可以形成類似的圖表。它同樣非常有助于了解當前項目的質量狀況,開發測試進度。
由測試產生的這些數據不僅在項目開發過程中為項目管理提供有效的依據,而且也是產品通過發布的必要條件。在微軟,每個產品都要經過評審才能通過發布。前面介紹的幾個圖表是發布評審的重要內容,如果從圖表中發現臨評審前還出現過較大的質量波動,評審人員一定會對此提出質疑。 因此軟件項目管理依賴軟件測試提供其基本的管理素材。
可以說,現代大型軟件開發過程中開發和管理對測試的依賴性是測試與開發流程融合的一個根本因素。從另一個角度看,測試與開發流程融合決不僅僅是簡單的時間上的同步,更不是雙方空間上的接近,而是這種內在的依存關系的外在表現。開發對測試的這種依賴性對測試和測是人員提出了更高的要求。在理念上,軟件測試已遠不僅僅只是軟件功能的驗證和Bug的搜尋;在具體方法上,自動測試和測試工具的使用已成為基本的要求。
在微軟,測試不僅使用一些通用的工具,每一個產品還有專門開發的專用工具庫,測試的代碼量常常超過項目本身的代碼量。 一個軟件企業要提高其軟件開發的能力,特別是針對大型軟件的大規模的快速開發能力,在測試方面對傳統理念和方法進行突破是必要的。微軟的實踐就是一個很好的印證。
一、職位名稱含義:
即使你給玫瑰花起不同的名字,它聞起來可能還是同樣的香。但是,如果你給工程師不同的職位名稱,他們對自己職責的理解就會大不相同。微軟將那些通過編寫代碼來開發產品功能的軟件工程師統稱為"軟件開發工程師"(Software Development Engineer,SDE)。而微軟測試工程師的正式職位名稱是"軟件開發測試工程師"(Software Development Engineer in Test,SDET)。這兩個職稱聽起來很像,因為微軟的測試工程師也同時做開發。測試工程師的其他主要職責包括:制定測試計劃、設計測試用例、分析缺陷的根本原因、參與程序代碼的審查和產品設計的審查,以及開發測試自動化程序。有時測試工程師也參與產品源代碼的開發,或缺陷的修正等工作。但總的來說,因為測試工程師的工作量很大,所以直接參與產品開發的情況并不是很普遍。
雇用對測試有激情的軟件工程師做測試工作是微軟行之有效的創新,它完全不同于軟件行業其他公司的做法。對此外界常得出一種結論,認為我們雇用會編寫程序代碼的工程師來做測試工作是因為我們想讓他們編寫有效的自動化測試程序,從而排除手工測試。其實這只是其中的一小部分原因。那些懂得怎樣編寫程序和計算機基本構造的測試工程師,常常具有軟件測試所必備的分析技能。他們能夠盡早發現缺陷并分析其根本起因,這使得他們能很快發現類似的缺陷。擁有和開發工程師一樣的計算機基礎增強了測試工程師的技能,給了我們的測試工程師更靈活和動態的生產力。
2005年以前,微軟將軟件測試人員人分為:軟件測試工程師(Software Test Engineer,STE)和軟件開發測試工程師(SDE/T)。SDE/T 和STE的分工。
可以看出,STE的工作更貼近于我們一般黑盒測試人員的工作,專注于測試計劃、測試用例、測試的執行以及設計方案的審查;而SDE/T 的工作內容則是開發測試工具(安全、性能、自動化方面的工具的開發)以及找bug、參與設計方案審查、代碼審查等一般的測試工作。(ps:只用大牛公司才會設開發測試工具的測試人員,呵呵)
2005年以后,微軟調整了測試職稱,將所有的測試人員統稱為:軟件測試開發工程師(SDET)
微軟的SDET培訓路線圖:
二、微軟的測試架構師
微軟1999年設立測試架構師職稱。是專門為那些對產品有影響的高級獨立貢獻者而設的。測試架構師的職稱反映了一個SDET對其所工作的產品的廣泛影響力。而高級SDET、首席SDET、合伙人SDET的職稱則主要是給那些對某個產品的功能產生影響的人。
原文轉自:http://www.anti-gravitydesign.com