《大話軟體測試》是2014年電子工業出版社出版的圖書,作者是歐立奇。
基本介紹
- 中文名:大話軟體測試
- 作者:歐立奇
- 出版時間:2014年09月01日
- 出版社:電子工業出版社
- 頁數:280 頁
- ISBN:9787121240973
- 類別:計算機類
- 定價:45 元
- 開本:16 開
- 裝幀:平裝
- 版次:1
內容簡介,前言,主要特點,作者介紹,目錄,樣章,
內容簡介
本書通過小白與大鳥的趣味情景對話形式,用多個小故事、案例、漫畫來組織講解軟體測試的方方面面:包括測試需求,測試分類,測試計畫以及測試管理等。
本書表現形式雖為大話,但內容結構實為嚴謹;在講解軟體測試的過程中,通過問詢式結構,把學習門檻降低,讓讀者可以更加容易地理解——測試的目的、策略、方法以及管理,澄清有關軟體測試的常見誤解。用一種不扭曲、不變形、不晦澀、不忽悠的表達方式表現測試的真諦。以達到不但授之以“魚”,還授之以“漁”的目的。引導讀者體會軟體測試過程中蘊藏的大智慧。
本書適合軟體測試/開發/管理人員,以及其它計算機愛好者閱讀。
前言
本書通篇都是以情景對話的形式,用多個小故事或案例、漫畫來組織講解軟體測試。從軟體需求設計說起,在軟體測試做了妥善分類後,將書的內容分為如下幾大方面:
在測試需求方面:如何測試需求、如何Review(重讀)需求、設計文檔;
在測試分類方面:詳解軟體質量模型的6大特性27個子特性的各個檢查點,並提供經驗和案例,容易運用到實際項目環境中。讓讀者能夠清楚的得知,軟體測試究竟是測什麼?
在測試計畫方面:如何寫用戶故事、測試用例、測試計畫。如何進行測試建模,制定人力資源的分配計畫。
在測試管理方面:如何預知風險,如何寫日報。如何與DEV(研發),PM(項目經理)進行交流,如何進行測試項目的管理,如何利用自動化來提高測試的效率等。
本書表現形式雖為大話,但內容結構實為嚴謹;在講解軟體測試的過程中,通過問詢式結構,把學習門檻降低,讓讀者可以更加容易地理解——測試的目的、策略、方法以及管理,澄清有關軟體測試的常見誤解。用一種不扭曲、不變形、不晦澀、不忽悠的表達方式表現測試的真諦。以達到不但授之以“魚”,還授之以“漁”的目的。引導讀者體會軟體測試過程中蘊藏的大智慧。
主要特點
本書不同於其他軟體測試書籍的主要特點如下:
細
軟體測試由於工作的特殊性,軟體測試人員更要具有認真、耐心、細緻、敏感等個性元素,涉及的方面比較多,且比較基礎,也比較細。以軟體安裝為例,一個完整的軟體安裝檢查點就包括:
1>安裝環境檢查;2>中斷安裝的情況;3>回溯的檢查;4>可定製化安裝;5>安裝特定參數/連線埠依賴;6>安裝路徑;7>安裝介質;8>安裝語言;9>安裝Shell;10>安裝組件;11>作業系統兼容性;12>作業系統語言包;13>硬體系統兼容性;14>邏輯安裝次序;15>安裝安全性;16>安裝接口;17>安裝結果檢查等等。
所以本書把這些細小的知識點和檢查點做了匯總,讓讀者有章可循,按圖索驥就可以輕鬆測試。本書使用了四級標題,每一條的都是一個實際的案例,切切實實的解決讀者遇到的實際問題。
深
說起測試,人們首先想到的是測試是一種技術,然而事實上,測試是一種哲學,一種思想;思想的背後是一個人眼界和世界觀,一個測試也許能從多方面揭示測試者的素質,和看待問題、思考問題的能力。市面上流行的測試書籍在此專業性的分類方面做得不夠,正因為如此,本書中追求的是循循善誘,講深講透。側重對於軟體測試技術的本質理解,而不僅限於對測試的單純講解。
廣
市面上流行的軟體測試書籍僅對軟體功能性測試本身比較側重,而忽略軟體測試外延的東西:比如非功能性測試中易用性測試,性能測試,文檔測試;而隨著用戶對易用性、可靠性要求的與日俱增,本書對以上諸多方面都給出了詳細分析,並結合大量案例制定測試方案,以滿足讀者需求。
樂
苦逼的團隊做不出有愛的產品;愉悅編程、快樂測試才能使你的職場之路長久。所以本書語言幽默詼諧,並夾雜了一些漫畫來擺事實、講道理;這也為眾多嚴謹的軟體測試書籍中添加了一抹亮色。
作者介紹
歐立奇,國際商業機器有限公司大中華區高級測試工程師。擁有近10年軟體測試和軟體質量保證的工作經驗,從事過各種產品的軟體測試。
目錄
封面: 1
目錄: 1
第一部分:軟體需求與設計 11
第1章:軟體需求 11
1.1【從需求的含混性說到軟體測試的目的】 11
1.1.1需求的含混性 11
1.1.2軟體測試的目的 13
1.2【需求的定義與分類】 14
1.2.1業務需求 14
1.2.2用戶需求 15
第2章:PRDReview 15
2.1【PRD分類】 16
2.2【軟體產品定位】 16
2.2.1產品背景/定位 16
2.2.2目標潛在客戶群 17
2.2.3用戶問題 17
2.2.4產品特點/特性 19
2.2.5產品結構圖 19
2.3【軟體產品需求】 20
2.3.1功能性需求 20
2.3.2非功能性需求 21
2.3.3文檔需求 22
2.3.4項目優先權的定義 22
2.4【Review軟體產品需求】 22
2.4.1如何保證軟體需求的完整性 22
2.4.1.1演繹法 23
2.4.1.2比較法 24
2.4.1.3分解法 24
2.4.1.4打標籤 25
2.4.2如何保證軟體需求的正確性:明確用戶動機 25
2.4.3如何保證軟體需求的正確性:正確的表達方式 26
2.4.3.1直接溝通 27
2.4.3.2簡潔描述 27
2.4.3.3減少定性描述 27
2.4.3.4詞語的準確性 27
2.4.4一致性 28
2.5【範圍約束】 28
2.5.1用戶的期盼超出了實現的能力 28
2.5.2非技術因素決定的技術選型 28
2.5.3預期的使用環境 28
2.5.4ReviewScope 29
第3章:用戶故事 29
3.1【什麼用戶故事】 29
3.2【用戶故事特點】 30
3.2.1體現用戶價值 30
3.2.2不要出現技術術語 30
3.2.3可測試性 31
3.3【用戶故事分解/細化/合併】 31
3.3.1按用戶角色細化 32
3.3.2按用戶操作細化 33
3.3.3按用戶角色合併 33
第4章:ReviewFS 33
4.1【實現的含混性】 33
4.2【交付目標】 34
4.3【範圍約束】 35
4.4【假設和依賴】 35
4.5【功能描述點】 35
4.6【Review功能描述】 36
4.6.1質量需求或產品特性描述是否足夠準確 36
4.6.2實現方式可擴展性 36
4.6.3技術合理性 36
4.6.4集成和升級風險 37
4.6.5理解一致性 37
4.6.6設計一致性 37
4.7【非功能描述點】 38
第二部分:軟體功能性測試 38
第5章功能性測試之準確性/合適性 38
5.1【功能性測試概念】 38
5.2【功能性測試分類】 39
5.3【適合性測試】 39
5.4【準確性測試】 40
第6章軟體功能性測試用戶故事 40
6.1【軟體功能性測試故事列表】 40
6.2【執行者/行為/狀態/預期結果/檢查點】 42
6.2.1添加數據[文本框] 43
6.2.1.1空數據 43
6.2.1.2合法數據 43
6.2.1.3添加中斷機制 44
6.2.1.4添加檔案/圖片 44
6.2.1.5特殊字元欄位 44
6.2.1.6帶空格欄位 45
6.2.1.7帶回車鍵欄位 45
6.2.1.8欄位長度 45
6.2.1.9數字型邊界 46
6.2.1.10數字的約束 46
6.2.1.11欄位類型 46
6.2.1.12重複添加 47
6.2.1.13單選按鈕(RadioButton) 48
6.2.1.14複選框(CheckBox) 48
6.2.1.15列表框控制項(ListBox) 48
6.2.1.16上下控制項文本框(up-down)的測試 48
6.2.1.17日期約束 49
6.2.2顯示數據 49
6.2.2.1分頁顯示 49
6.2.2.2顯示數據的一致性 50
6.2.2.3顯示信息歸類合理性 51
6.2.2.4滾動條 51
6.2.2.5陳舊數據的及時更新 51
6.2.2.5分類排序 51
6.2.3刪除數據 51
6.2.3.1刪除合法數據 51
6.2.3.2不允許刪除的數據 52
6.2.3.3刪除不存在數據 52
6.2.3.4刪除數據的衍生影響 52
6.2.4查詢數據 52
6.2.4.1查詢條件輸入 53
6.2.4.2查詢關鍵字 53
6.2.4.3模糊查詢與精確查詢 53
6.2.4.4查詢結果 54
6.2.5修改數據 54
6.2.5.1修改合理數據 54
6.2.5.2不能修改/鎖的情況 54
6.2.5.3修改多個數據 55
6.2.5.4修改後的衍生影響 55
6.2.6激活/凍結 56
6.2.7導入/導出數據 56
6.2.7.1導入合理數據 56
6.2.7.2導入數據中存在不合理數據 56
6.2.7.2導出數據 56
6.2.8實例化 57
6.2.9拷貝 57
6.2.9.1拷貝數據信息檢查 57
6.2.9.2默認拷貝數據名 57
6.2.10檢查日誌 57
第7章軟體互操作性測試 58
7.1【互操作性測試定義】 59
7.2【兼容性和互操作性的區別】 59
7.3【不可互操作的原因】 60
7.4【互操作性測試分類】 61
7.4.1軟體與硬體平台及外設的互操作性 61
7.4.1.1安裝測試 61
7.4.1.2部署測試 61
7.4.1.3硬體監控 62
7.4.1.4硬體管理 62
7.4.2作業系統/檔案系統的互操作性 62
7.4.3軟體間的互操作性 63
7.4.4網路/資料庫的互操作性 63
7.4.5驅動程式的互操作性 63
7.4.6文檔的互操作性 64
第8章安全性測試 64
8.1【軟體安全性測試概念】 64
8.2【軟體安全性測試策略】 65
8.2.1軟體安全漏洞 65
8.2.2軟體安全測試方法分類 65
8.3【用戶認證安全】 66
8.3.1用戶許可權問題 66
8.3.1.1區分系統中不同用戶許可權 67
8.3.1.2保證系統中不會出現用戶衝突 67
8.3.1.3系統不會因用戶的許可權的改變造成混亂 68
8.3.1.4線上逾時 68
8.3.1.5操作留痕 68
8.3.2密碼驗證機制 68
8.3.3密碼保護機制 69
8.3.3.1密碼保護問題 69
8.3.3.2縱深防禦 69
8.4【系統網路安全性測試】 70
8.4.1緩衝區溢出 70
8.4.2加密測試 71
8.4.3SQL注入 72
8.5【資料庫安全性測試】 74
8.5.1數據加密性測試 74
8.5.1數據完整性測試 75
8.5.3數據獨立性測試 76
第9章全球化測試 76
9.1【全球化測試分類】 76
9.1.1G11N 76
9.1.2I18N和L10N 77
9.1.3軟體的國際化和軟體的本地化 77
9.1.4國際化測試和本地化測試 77
9.2【日期】 78
9.2.1時區檢查 78
9.2.2日曆格式 78
9.3【字元格式】 79
9.3.1失效字元檢測 79
9.3.2大小寫測試 80
9.4【數字格式】 80
9.4.1數字分隔測試 80
9.4.2負數 81
9.4.3貨幣符號測試 81
9.4.4郵編/國家代碼/電話號碼格式測試 81
9.4.5測量單位測試 81
9.4.6百分號(%)測試 81
9.5【輸入法編輯器(IME)測試】 81
9.6【語言敏感信息測試】 82
第三部分:軟體非功能性測試 82
第10章易用性測試 82
10.1【易用性測試分類】 82
10.2【易理解性測試】 83
10.2.1清晰性 84
10.2.2一致性 84
10.3【易學習性測試】 85
10.3.1直觀性 86
10.3.2可記憶性 86
10.4【易操作性測試】 86
10.4.1用戶可控性 86
10.4.1.1步驟引導 87
10.4.1.2降低思考 87
10.4.2靈活性 88
10.4.2.1可定製化 88
10.4.2.2想你所需 88
10.4.2.3快捷鍵使用 89
10.4.3可擴展性 89
10.4.4避免錯誤 90
10.4.4.1限制操作 90
10.4.4.2預見錯誤/先期提示 91
10.4.4.3提前報錯 91
10.4.4.4問題要一次性說完 91
10.5【UI測試】 92
10.5.1標題欄 92
10.5.2文字 92
10.5.3控制項 92
10.5.4圖形 93
10.5.5表格 93
10.5.6提示框 93
10.5.7導航測試 94
第11章可靠性測試 94
11.1【容錯性測試】 95
11.2【可恢復性測試】 95
11.2.1硬體及有關設備故障可恢復性測試 95
11.2.2軟體系統故障可恢復性測試 96
11.2.3數據故障可恢復性測試 96
11.2.4通信故障可恢復性測試 97
11.3【故障轉移測試】 97
第12章可移植性測試 98
12.1【可移植性測試定義與分類】 98
12.2【用戶故事列表】 98
12.2.1執行者 100
12.3【行為/狀態/預期結果/檢查點】 100
12.3.1軟體安裝 100
12.3.1.1安裝環境檢查: 100
12.3.1.2中斷安裝的情況 101
12.3.1.3回溯的檢查 101
12.3.1.4可定製化安裝 101
12.3.1.5安裝特定參數/連線埠依賴 102
12.3.1.6安裝路徑 102
12.3.1.7安裝介質 102
12.3.1.8安裝語言 102
12.3.1.9安裝Shell 102
12.3.1.10安裝組件 103
12.3.1.11作業系統兼容性 103
12.3.1.12作業系統語言包 103
12.3.1.13硬體系統兼容性 103
12.3.1.14邏輯安裝次序 103
12.3.1.15安裝安全性 104
12.3.1.16安裝接口 104
12.3.1.17安裝結果檢查 104
12.3.2更新/升級 105
12.3.2.1升級過程系統暫停/不暫停 105
12.3.2.2升級後數據檢查 105
12.3.2.3升級後配置信息檢查 106
12.3.2.4中間狀態信息檢查 106
12.3.2.5升級回退機制 106
12.3.2軟體卸載 106
12.3.2.1卸載方式 106
12.3.2.2非正常情況卸載 107
第13章性能測試 107
13.1【功能與性能的區別】 107
13.2【性能測試指標】 108
13.2.1回響時間 108
13.2.2並發用戶數 109
13.2.3吞吐量 109
13.2.4資源利用率 110
13.3【獲取性能需求】 110
13.4【性能測試分類】 111
13.4.1性能參數測試 111
13.4.2負載測試 111
13.4.3壓力測試 112
13.5【如何進行性能測試】 113
13.5.1搭建測試環境和準備測試工具(腳本) 113
13.5.2測試、記錄測試數據 113
13.6【分析性能瓶頸】 114
第14章文檔測試 116
14.1【文檔測試重要性】 116
14.2【文檔種類】 117
14.3【文檔測試檢查點】 117
14.3.1文檔完整性 117
14.3.2文檔正確性 117
14.3.3文檔易用性 118
第四部分:軟體項目流程與風險 118
第15章軟體項目開發流程 118
15.1【ProjectMilestone(項目里程碑)定義】 119
15.2【軟體項目的主要階段】 119
15.2.1信息採集和立項階段 119
15.2.2需求分析階段 120
15.2.3項目構架與設計階段 120
15.2.4開發階段 121
15.2.5系統測試階段 122
15.2.5.1Acceptancetesting(接受性測試) 122
15.2.5.2Featuretesting 123
15.2.5.3Regressiontesting 123
15.2.5.4Cool-done&Sanitycheck 123
15.2.5.5Inspection 124
15.2.6軟體發布階段 124
15.2.7維護階段 125
15.3【研發周期制定】 126
15.4【Effort(工作量)估計】 127
15.4.1為什麼要估計工作量 127
15.4.2Effort估計的方法 128
15.4.2.1項目和工作的分解 128
15.4.2.2QA的可用時間 128
15.4.2.3Job時間的估計 129
15.4.2.4Scheduletable(計畫表) 131
第16章項目風險分析 131
16.1【Risk(風險)/Issue(問題)Bug(缺陷)的區別】 132
16.2【Risk(風險)分類】 132
16.2.1需求風險 132
16.2.2技術風險 132
16.2.2.1軟體設計階段風險 133
16.2.2.2軟體實現階段風險 133
16.2.2.3軟體測試階段風險 134
16.2.3管理風險 134
16.2.3.1計畫/流程風險 135
16.2.3.2人員管理風險 136
16.2.3.3環境/資源風險 137
16.3【Risk(風險)分析】 137
16.3.1風險可能性 137
16.3.2風險影響 137
16.3.3風險評估 138
16.4【Risk(風險)緩解】 138
16.4.1風險監控 138
16.4.2風險控制 138
16.5【常見Risk(風險)處理】 139
第五部分:測試策略與測試計畫 142
第17章測試策略 143
17.1【測試策略的定義和分類】 143
17.2【測試重點/測試優先權分析】 143
17.3【根據時間/階段的對應的測試策略】 144
17.3.1單元測試期間的測試策略 144
17.3.2Feature(特性)測試期間的測試策略 145
17.3.3集成測試期間的測試策略 145
17.3.4回歸測試期間的測試策略 146
17.3.5SanityCheck測試期間的測試策略 147
17.4【多平台/作業系統/瀏覽器的測試策略】 147
17.5【測試開始和結束的標準】 148
17.6【測試環境策略】 149
17.6.1測試環境規劃策略 150
17.6.2測試環境復用策略 150
17.6.3軟體環境頻繁改變時的策略 151
17.7【測試人員指定/任務分布的策略】 151
17.7.1注重個人因素 151
17.7.2避免出現“灰色地帶” 152
17.8【測試工具的使用策略】 152
17.9【測試報告/進度策略】 152
第18章測試計畫 153
18.1【測試計畫的定義】 153
18.2【測試計畫的範圍】 153
18.3【測試用例設計方法】 154
18.3.1等價類 154
18.3.1.1劃分等價類 154
18.3.1.2劃分等價類的標準 155
18.3.1.3設計等價類測試用例 155
18.3.2邊界值分析 156
18.3.2.1邊界值分析與等價類的區別 156
18.3.2.2常見的邊界值 157
18.3.3因果圖法 158
18.3.3.1因果圖法的原理和約束 158
18.3.3.2因果圖法的設計步驟 159
18.3.3.3因果圖法的設計案例 160
18.3.4事件流 161
18.3.4.1事件流組成 161
18.3.4.2構造場景 161
18.4【測試用例優先權劃分】 163
第六部分:軟體測試管理 164
第19章如何預防Bug 164
19.1【Bug和Defect區別】 164
19.2【預防Bug的意義】 165
19.3【乾淨的代碼】 166
19.3.1代碼簡潔 166
19.3.2有意義的命名 166
19.3.3函式的有效組織 167
19.3.4注釋合理 167
19.4【代碼可復用】 167
19.5【代碼Review管理機制】 169
19.6【做好單元測試】 169
19.7【代碼重構】 170
19.7.1為什麼要做代碼重構 170
19.7.2如何做代碼重構 171
第20章如何Log高質量的Bug 172
20.1【Bug報告寫給誰看】 173
20.2【Bug模板介紹】 173
20.2.1如何寫Summary(主題) 174
20.2.2如何寫清測試條件 175
20.2.2可歸納性/可擴展性 176
20.2.3優先權|嚴重性|影響程度。 176
20.2.3.1嚴重性分類 177
20.2.3.2嚴重性衡量標準並不唯一 177
20.2.3.3優先權 178
20.2.3.4嚴重性與優先權的區別 178
20.2.4如何寫Description(Bug描述) 179
20.2.4.1論證問題 179
20.2.4.2期待結果 180
20.2.5重現 180
20.2.5.1是否可重現 180
20.2.5.2重現步驟 181
20.2.5附屬檔案 182
20.3【常見的Bug問題】 182
20.3.1類似的Bug如何log 182
20.3.2後期的設計問題如何log 183
20.3.3小問題該如何log 183
20.3.4重複的log如何處理 183
20.4【如何分析RootCause】 184
20.4.1比較法 184
20.4.2假設法 185
20.4.3分解法 186
20.5【Bug生命周期】 186
20.5.1Bug生命周期圖 186
20.5.2Bug追蹤 187
20.6【測試報告分析】 188
第21章其他QA日常工作 189
21.1【日報】 189
21.1.1日報的目的 189
21.1.2日報的書寫者 190
21.1.3日報的內容 190
21.2【如何開會】 192
21.2.1QA要開多少會 192
21.2.2如何高效的開會 192
後記:QA的自我修養 193
第1課:QA到底是做什麼的? 194
第2課:質疑和思考 195
第3課:QA要具備的技能 196
第4課:QA和DEV的關係 196
第5課:QA的主要貢獻 197
第6課:自動化測試和常規測試的關係 198
樣章
小白:大鳥啊,我鬱悶得很啊。
大鳥:咋咧?
小白:我們公司參與了一個大項目。當時市場簽下來的時候,項目組是歡天喜地的。項目做了一年多。到了交付的時候,用戶卻很不滿意,當初說好的需求,好多都變了卦。
用戶是上帝,最關鍵的是如果收不到後面的錢,那就算白幹了。公司要求項目組加班加點的修改。我們測試部門也不得不一遍一遍的做著重複勞動,搞得大家是怨聲載道的。做市場的和做開發的相互指責,然後,大家又一起罵客戶刻薄。公司裡面瀰漫著灰心喪氣的氣氛。
大鳥:你們是怎么和客戶談需求的?
小白:市場先談單,估計人家需要做什麼。然後,我們這邊就派一個技術的人過去了解需求,拿一些對方的表格和筆記回來。好像都差不多。
大鳥:你們去詢問需求,然後做了一個文檔。你們頭腦里的東西,跟客戶要的東西,其實是不一樣的。但是,大家都認為這樣白紙黑字,基本上是一樣的。這裡面其實有差異。這種差異,有時影響不大,但有時,是致命的。畢竟文檔,不是最終的實物。客戶永遠認為,他是把需求給你講清楚了的。如果你做不到,不是他的責任。而且,你要記住一點,用戶只有在見到或使用過實物的時候,他才知道他其實要的是什麼東西。否則如果研發沒搞清需求就悶頭做事,遲早項目會變成“包工隊的故事”。
場景漫畫:包工隊的故事
甲:說一個包工隊接一好活兒,蓋一個70多米高的大煙囪!
乙:還真不錯!
甲:起早貪黑把活幹完了,人家來一驗收,死活不給我們工錢,還叮噹五四打一頓!
乙:為啥啊,質量不行?
甲:把圖紙拿倒了,人家讓挖口井!