《測試有道——微軟測試技術心得》介紹了軟體測試基本知識以及微軟公司開發團隊常用的測試工具及其使用方法。
基本介紹
- 書名:測試有道:微軟測試技術心得
- 作者:梁博,許珊,徐歆愷
- ISBN:9787121091858
- 類別:軟體工程
- 頁數:312頁
- 定價:69.00元
- 出版社:電子工業出版社
- 出版時間:2009-8-1
- 裝幀:平裝
- 開本:16開
- 字數:383000
內 容 簡 介,作者簡介,引 子,目 錄,第1章 軟體測試概述,第2章 測試與軟體開發模型,第3章 軟體質量與測試,第4章 軟體測試方法,第5章 軟體測試類型,第6章 測試計畫和測試策略,有計畫的複審活動 147,第7章 測試自動化,第8章 代碼覆蓋率,第9章 調試,第10章 測試文檔編寫,第11章 軟體缺陷管理,第12章 完整的測試體系構成,第13章 微軟公司企業文化,第14章 更加國際化,第15章 測試經理的領導力培養,附錄,
內 容 簡 介
本書由微軟公司專家撰寫,書中包含很多新穎的測試工具介紹,重點內容中英文對照是本書的另外一大亮點。書中包括超過20個微軟公司的開發團隊常用的測試工具及其使用方法的介紹。有很多工具是第一次正式通過出版物向公眾介紹,包括一些剛剛開源不久的、之前僅在微軟內部使用的測試自動化工具。同時本書還提供了一些實用測試文檔的模板、內部最佳做法,以及常用度量標準,為讀者的實際測試工作提供幫助。
本書適合學習和研究測試技術的測試工程師、對測試感興趣的人員,以及高校學生閱讀和參考。
作者簡介
梁博,微軟軟體工程過程、軟體測試、.NET框架技術專家,軟體工學碩士。現任微軟中國研發集團戰略合作部產品外包合作組項目經理,負責中國本土外包產業的培育和發展項目,放眼國際深耕中國。曾任微軟(中國)有限公司平台及開發技術部開發合作技術經理,分別長駐微軟北京、上海分公司負責微軟“潛力發展計畫”和“卓越軟體開發商計畫”在華北、西部、華東三個區域的調研和實施,足跡遍布全國。
許珊,畢業於北京外國語大學,現就職於微軟中國有限公司業務發展部,負責政府及電信行業高層上午活動的組織。此前在新華社國際部和CNET inernational IT沒提工作,與英國金融時報特派自身記者共同完成北京奧運特稿。英文環保網站Greenbang的創立人之一,關注全球變暖給人類生活及商業發展帶來的影響。負責撰寫中國在環保方面的技術進步,商業舉措及政府制度等專欄。
徐歆愷,軟體工程碩士,微軟技術專家,辦公自動化認證專家,多年VC++,MFC,.NET,VB,VBA技術和Microsoft Office產品系列開發和測試經驗。徐歆愷先生是中國人民解放軍總裝備部、北京航空航天大學、北京師範大學等單位的高級辦公套用技術特約專家講師。
引 子
今天,軟體測試工程師會告訴我們,他們的主要工作就是發現缺陷。但是,我們都知道,測試將永遠不會找到所有的缺陷,而且更不可能去“測試質量”。產品質量的顯著提高需要改變我們的軟體工程實踐。為了達成長遠的影響,我們的測試工程師必須要有更高的技能,並參與到軟體開發生命周期中的每一個階段中來。測試必須要不斷地發展,以確保軟體質量從產品剛開始構想階段就得到貫徹。測試需要了解如何建立一個高質量的基礎架構,以及如何最大化測試的影響,同時保持靈活性,並不斷提高測試效率。
——S·索馬塞加爾(DevDiv副總裁)
是的,包括微軟公司在內的業界各個軟體開發企業在不長的幾十年的軟體產品開發和服務提供的實踐中,都深深認識到軟體測試和軟體測試工程師在軟體開發工程過程中是必不可少的。在早期的“軟體作坊”時代中,個人英雄主義盛行,大家崇尚程式設計師單打獨鬥的行為。但很明顯,現如今已經到了一個新的時代,一個軟體作為服務來提供的時代,一個軟體系統的複雜性急劇增加的時代,一個成功的軟體開發需要大量各有所長在一起相互配合和協作的人群參與的時代,一個多樣化的時代。我們站在一個越來越“平”的地球上。在這個時候,在一個團隊中,軟體開發工程師重要、項目經理重要、測試工程師重要、文檔工程師重要……因為少了誰,哪個角色做得不好,都會影響到產品最終如期發布搶占市場先機,都會影響到用戶的最終體驗——這種影響是生死攸關的。
但是,如果有人今天告訴我們說:“作為一個軟體測試工程師,你非常重要。”我們可千萬不要當真!要明白這些站在台上的人的潛台詞,他們的本意是:軟體測試工程師這個群體,重要!但作為個體的我們,只有首先讓自己變得重要,然後才能有幸去代表“軟體測試工程師”這一“重要”群體。任何人無法把“重要”這一榮譽附加到我們身上,我們只有自己不斷努力學習專業知識,不斷積累實踐經驗,才能贏得同事們的尊重和讚賞、獲得應得的回報,真正變得重要。之所以說軟體測試工程師這個角色並不是一個技術含量低或者低人一等的工作,是因為這種評價完全取決於從事和參與這項分工的人的能力、素質和技術水平。從這種層面上來看,只有分工的不同。
“你很重要!”
目 錄
第1章 軟體測試概述
2005年筆者接觸到了北京的一些培訓公司,他們介紹說現在軟體測試類的課程非常受歡迎,現在市面上有大量軟體測試工程師的職位在公開招聘。實際上當時北京的幾個大的外包公司如文思創新、博彥科技、天海宏業(後被大連海輝併購)、中軟、神州數碼等早就已經開始在大張旗鼓地挖搶人才,在北京市場上,對軟體測試工程師的需求早就驟然如井噴式爆發。
什麼是軟體測試 | 1 |
測試工程師的任務 | 3 |
小知識 | 5 |
什麼是PSS數據 | 5 |
什麼是Watson數據 | 5 |
測試工程師的職業路徑 | 6 |
成功職業生涯規劃的提示 | 7 |
測試與管理 | 15 |
案例:微軟軟體開發團隊 | 16 |
練習:測試自動可樂販賣機 | 18 |
第2章 測試與軟體開發模型
軟體開發生命周期模型(Software Development LifeCycle)指的是軟體開發全過程、活動和任務的結構性框架。軟體項目的開發會包括需求、設計、編碼、測試、穩定、部署等階段,有時也會包括維護階段。本章介紹現今被業界廣為使用的幾種主要的開發模型,以及測試在這些模型中的地位。
瀑布模型(Waterfall Model) | 20 |
RUP | 20 |
敏捷軟體開發方法(Agile software development) | 22 |
軟體開發過程中的測試 | 23 |
提高軟體的可測性(Testability) | 23 |
測試模式 | 24 |
微軟的軟體產品開發過程 | 25 |
案例:MSF (Microsoft Solution Framework) | 28 |
第3章 軟體質量與測試
軟體跟其他的工業產品並沒有本質區別,現代社會的工農業化進展已經經過了幾十年,有很多種方法可以用來控制產品的質量,從而可以保證人民民眾購買到的水果、食物、家電、設備儘可能少得出現瑕疵。這些被現代生產製造企業廣泛採用的產品質量控制和質量保證方法,一樣可以用於軟體產品的質量保證和控制。例如,“全面質量管理”是一個基於統計學原理的質量控制方法,這個方法的發展過程就非常具有代表性,也會有助於我們理解軟體的質量控制。
軟體質量(Quality) 35
質量控制(Quality Control) 36
質量保證(Quality Assurance) 37
軟體工程師摧毀地球 38
全面質量管理(Total Quality Management,TQM) 38
能力成熟度模型(Capability Maturity Model® Integration,CMMI) 39
ISO 9000 & ISO 17205 40
事後析誤(Postmortem) 41
根本原因分析(Root Cause Analysis, RCA) 41
故障模式與後果分析(Failure mode and effects analysis) 42
威脅模型分析(Threat Model Analysis, TMA) 43
第4章 軟體測試方法
軟體程式設計有基本的算法,軟體系統測試也有一般性的測試方法。使用這些測試方法,我們往往能夠找到那些最一般、最普遍的軟體問題,這些方法也可以幫我們事半功倍地發現軟體中存在的錯誤和瑕疵。更重要的是,這些一般性的軟體測試方法可以被自動化,我們可以藉助這些方法生成一些輔助性的自動化測試工具,從而可以讓測試更加高效。
黑盒測試(Black-box testing) 45
白盒測試(White-box testing) 46
灰盒測試(Grey-box Testing) 48
基於場景的測試方法(Scenario testing) 49
等價類法(Equivalence value class) 50
練習:等價類測試設計 51
邊界值法(Boundary value analysis) 52
示例:邊界值分析 53
判定表法(Table Based Methodology) 54
組合分析法(Combinatorial analysis) 55
工具:PICT工具使用 56
狀態轉換表(State transition) 58
第5章 軟體測試類型
根據產品的特點,要在不同的階段進行不同的測試操作。有一些測試是隨時隨地進行的,不少測試是有計畫進行的,例如在每個功能完成之後,在每一個版本編譯完成之後,就一定要進行回歸測試、冒煙測試和版本驗證測試。在產品的測試版本階段,一般都會執行探索性測試。對於軟體的用戶界面、安全性、性能和可靠性、穩定性、用戶安裝等跟用戶的軟體使用體驗直接有關的方面,我們也都必須要進行測試。
功能測試(Functional Testing) 59
小知識:API Testing 61
工具:NUnit 61
工具:Visual Studio 單元測試框架 62
回歸測試(Regression testing) 63
冒煙測試與BVT測試 65
探索性測試(Exploratory testing) 67
安裝/版本升級測試(Setup/upgrade testing) 69
工具:VeriTest-Rational Installation Analyzer 71
軟體兼容性測試(Compatibility testing) 72
案例:Windows Vista兼容性測試 72
小知識:UAC 73
工具:ApplicationVerifier 75
性能測試(Performance testing) 77
工具:Windows Performance Analysis Tools(WPT) 79
工具:Visual Studio性能分析工具 80
工具:WPFPerf 81
負載測試(Load testing) 83
監視和分析負載測試結果 84
壓力測試(Stress testing) 85
國際化/全球化/本地化測試 87
小知識:I18N, G11N, L10N 88
編碼 89
工具:Character Map程式 91
工具:螢幕鍵盤工具 92
輔助選項測試(Accessibility testing) 92
工具:accVerify 94
工具:UI Spy 94
安全性測試(Security testing) 95
保證套用的安全性和威脅建模 96
小知識:微軟安全性測試10個小提示 98
小知識:Microsoft SDL 98
工具介紹:SDL Threat Modeling Tool v3 99
安全託管代碼 100
託管代碼的常見設計缺陷 101
工具:Fxcop 103
C/C++代碼的常見設計缺陷 104
工具:Prefast 105
代碼度量(Code Metrics) 107
工具:Visual Studio 2008代碼度量 108
第6章 測試計畫和測試策略
軟體開發過程中的戰略部署保證軟體開發過程朝著正確的方向前進,軟體開發過程中的計畫保證戰略按部就班地實施。在制訂軟體開發計畫的時候,同時要制訂軟體測試計畫。在現代的軟體開發過程中,測試早就已經是項目過程中必不可少的一個任務,作為一個貫穿始終的行為,軟體測試必須要有計畫和策略。軟體測試的計畫依附於軟體開發的計畫,所以在進行軟體測試計畫時,要參考軟體開發計畫,當然,也要參考用戶需求說明書和軟體規格說明書等材料。
什麼是測試計畫 110
模板:測試計畫文檔 111
什麼是測試策略 139
模板:測試策略模板 140
測試範圍 143
風險優先權模型 145
基於風險的測試 146
有計畫的複審活動 147
第7章 測試自動化
本章向大家介紹一些軟體測試自動化小工具,包括一些錄製工具、用戶界面測試的自動化工具、基於模型的軟體測試自動化工具,同時也介紹了一些自動化測試框架和類庫,使用這些框架和類庫,大家都可以開發自己的軟體測試自動化工具。本章介紹到的工具,都是微軟公司一直在內部使用的小工具,現在已經全部開放下載和使用。
測試自動化的發展 150
手動測試 151
硬編碼測試自動化 152
工具:RPF(Record and Playback Framework)Programmer 152
練習:輕量.NET UI自動化設計 153
小知識:反射技術 159
Microsoft UI自動化庫 160
測試自動化程式設計 160
測試庫和測試框架 161
工具:White 162
數據驅動測試 164
基於模型的測試 165
小知識:殺蟲劑悖論 166
例子:微軟過橋問題 166
小知識:Dijkstra算法 168
工具:WinSTDtoDOT Visualization Tool 168
工具:NModel工具 170
第8章 代碼覆蓋率
代碼覆蓋率技術是對測試的檢驗,同時也是一種間接檢驗軟體代碼質量的方法。毫無疑問,代碼覆蓋率很重要。代碼覆蓋率的考量,是對軟體測試用例水平的考量,這時,我們對軟體測試開始進行管理。軟體測試從全憑經驗的、隨機的、不可控的階段進入到了可管理、可控制、可度量的新的階段。
代碼覆蓋率 171
覆蓋種類 173
代碼覆蓋率度量結果分析和決策 178
其他類型的覆蓋 178
工具:Visual Studio代碼覆蓋率工具 179
第9章 調試
調試技能是軟體支持工程師賴以生存的最基本技能,軟體測試工程師最好能了解一些調試技術的知識。不少時候我們測試的程式是已經編譯完成的版本,如果出現了崩潰、藍屏、或者其他嚴重的系統性錯誤,如果我們掌握一定的調試技能,就能在運行時抓取錯誤,跟蹤錯誤,找到導致程式出錯的代碼片段的位置。請記住,軟體測試工程師的角色永遠不是找錯,而應該是找出錯誤的根源。
調試 180
工具:Visual Studio在設計時進行調試 182
異常 182
小知識:異常捕獲 185
斷言(ASSERT) 186
工具:WinDBG 187
託管代碼中的斷言 188
轉儲檔案 188
轉儲檔案類型 189
用戶模式數據轉儲檔案生成 191
核心轉儲檔案生成 191
遠程調試 192
調試準則 192
調試建議 193
第10章 測試文檔編寫
本書提供了一些實用測試文檔的模板、內部最佳做法及常用度量標準。相信這些內容會為讀者的實際測試工作提供幫助。
測試文檔概述 196
測試用例 197
模板:測試用例模板 198
軟體缺陷報告(Bug Report) 199
模板:軟體缺陷報告 201
項目狀態報告 203
第11章 軟體缺陷管理
軟體缺陷的管理包括:缺陷類選和缺陷消除管理。所有的軟體缺陷,所有被發現的軟體缺陷,都應該被存儲在缺陷管理庫中,以備查和再次驗證。這個缺陷被操作的過程,這個缺陷被最終解決的方法,都要被記錄下來,作為知識保留。軟體缺陷和測試用例等都是關聯在一起的,對於軟體缺陷的管理,跟對原始碼的管理,對測試用例的管理一樣,都是現代軟體項目管理的一部分。
缺陷處理工作流 204
缺陷類選(Bug Triage) 205
缺陷類選圖例 206
優先權和嚴重性定義 207
小知識:錯誤收斂(Bug Convergence) 212
小知識:零錯誤反彈(Zero Bug Bounce) 212
缺陷消除的有效性(Defect Removal Efficiency) 214
第12章 完整的測試體系構成
企業中要真正實施軟體測試,就必須建立一個完整的軟體測試體系,建設軟體測試隊伍,搭建軟體測試的軟體硬體環境,購買必須的工具,並對人員進行訓練。
人員 215
一個完善的測試體系的構成 217
環境搭建 218
測試執行管理 220
工具:WTT測試框架 221
工具:VSTS測試管理 221
第13章 微軟公司企業文化
我們希望在這裡與大家一起分享微軟公司的企業文化中代表性的一些要點,這些要點可能會幫助到大家,用更加“微軟”的方式去思考,也可以更容易地去跟微軟公司的項目經理和工程師進行溝通。
員工才是最重要的資產 226
認同和鼓勵多元化 227
用技術武裝人 228
技術可以改變員工的工作方式 229
利用信息要真正幫助員工和企業 229
微軟公司價值觀 230
微軟的企業商業環境 231
實現承諾 232
從錯誤中學習 233
按期完成工作 233
了解決議的形成過程 235
解決衝突 236
尊重多元化 237
第14章 更加國際化
承接歐美外包項目,就需要參與者更加國際化。世界上的民族和國家之間的文化差異其實非常明顯。本章中討論的文化主要是美國文化,因為本書面向的期望讀者群將有很多正在從事著來自美國企業的外包項目。在仔細審視美國的核心價值與商業後會發現,作為一個軟體測試工程師或軟體開發工程師,不能僅停留在代碼編寫層面,在商業社會裡大家都分工協作,要想保持順暢的溝通,就必須理解對方的民族性格。
打死我也不說(Yes to death) 238
美國的核心價值與商業 239
第15章 測試經理的領導力培養
在美國,有一種領導者往往具有非常強的個人魅力和遠見,能夠通過自身的人格去影響他人。因為他們的特殊天賦和激勵他人的能力,這種人通常會成為領袖。但往往這種類型的領導是不可替代的,當他們離開時,所在的組織可能會陷入一個混亂的狀態。
領導風格 246
激勵團隊 248
構建團隊 251
做出決定 254
附錄
附錄A 對歐美外包的有效溝通之道 257
美國人的溝通方式 257
建立信譽 260
獲取信息 263
善於表達 265
手機、電話、郵件、書信、報告 269
交涉與談判 272
與美國人討論的話題 276
附錄B 對歐美外包活動之有效的會議組織 281
組織有歐美人士參加的會議 281
附錄C 學會寫郵件 286