本書內容聚焦于“現代”軟件測試技術,既包括近幾年頗受關注的前沿軟件測試技術,也包括一些“老技術”在新場景下的應用。作者希望將這些技術剖析清楚,在此基礎上給出一些常見的實踐案例或應用場景,讓讀者深入理解這些軟件測試技術的來龍去脈,并能夠將其快速應用到實踐中。本書分為7章,主要內容包括軟件測試新理念、軟件測試新方法、軟件測試新技術、軟件測試基礎設施、軟件測試常見困惑、軟件測試行業(yè)案例等。
本書內容通俗易懂,案例豐富,既適合軟件測試從業(yè)人員(測試工程師、測試開發(fā)工程師、測試架構師、測試經理、測試總監(jiān)等)閱讀,也適合軟件開發(fā)人員、架構師和企業(yè)管理人員閱讀,還適合作為高等院校相關專業(yè)的教學用書。
全彩色印刷,內容聚焦于“現代的”軟件測試中的前沿技術和新方法的應用,通過新技術和新方法的應用,體現測試技術之美!
前沿的新技術:ChatGPT(大模型)實現自動化測試、機器學習在測試中的應用、大數據測試、低代碼測試、混沌工程、微服務測試。
新方法的應用:流量回放、精確測試、變異測試、全鏈路壓測、安全測試、測試中臺。
● 人工智能等前沿新技術助力軟件測試人員提高測試效率和準度,發(fā)現一些傳統(tǒng)測試技術難以發(fā)現的軟件問題;
● 契約測試、探索式測試、低代碼測試、精準測試、流量回放等新方法在新場景中的應用,能幫助測試人員更好地解決軟件測試中的難點;
● 新實踐案例,能幫助測試人員解決經常面臨的各種各樣的挑戰(zhàn),例如,測試資源不足、測試數據缺乏、測試用例的維護難度大等,使測試人員獲得解決問題的成就感。
茹炳晟,騰訊 Tech Lead,騰訊研究院特約研究員,中國計算機學會技術前線委員會研發(fā)效能SIG 主席,《軟件研發(fā)效能度量規(guī)范》標準核心編寫專家,中國商業(yè)聯合會互聯網應用工作委員會智庫專家,騰訊云、阿里云、華為云“具價值專家”,《測試工程師全棧技術進階與實踐》的作者。自媒體號“茹炳晟聊軟件研發(fā)”的主理人。
吳駿龍,某大型互聯網公司質量與效能團隊技術總監(jiān),騰訊云“具價值專家”,曾任 Wish中國測試總監(jiān)、阿里巴巴本地生活高級測試經理。在軟件質量體系、服務容量保障、服務穩(wěn)定性建設、軟件研發(fā)效能等領域深耕多年,善于通過創(chuàng)新手段解決工程難題。他是測試行業(yè)優(yōu)秀的實踐者和前沿技術的傳播者,多次受邀參加 QCon、QECon、CCF 等行業(yè)峰會并進行演講。
劉冉,現任Thoughtworks軟件測試和質量專家,具有 20 年軟件開發(fā)和測試工作經驗;對Web 應用測試、服務器性能測試、移動測試、安全測試、敏捷測試、測試驅動開發(fā)、測試分層一體化解決方案,以及代碼管理、持續(xù)集成、持續(xù)交付和 DevOps 等有深入研究,曾是多個行業(yè)峰會的演講嘉賓。
第 1章 軟件測試新理念 1
1.1 測試左移 2
1.1.1 傳統(tǒng)瀑布模型下軟件測試的挑戰(zhàn) 2
1.1.2 測試左移的早期實踐 3
1.1.3 當前軟件測試工程化的困局與解法 4
1.1.4 測試左移的進階實踐 7
1.1.5 測試左移的深度思考 9
1.1.6 總結 9
1.2 測試右移 9
1.2.1 A/B測試 9
1.2.2 灰度發(fā)布 10
1.2.3 線上監(jiān)控 12
1.2.4 用戶體驗分析 12
1.2.5 總結 14
1.3 可測試性設計 14
1.3.1 可測試性的定義 15
1.3.2 可測試性差引發(fā)的問題 15
1.3.3 可測試性的3個核心觀點 17
1.3.4 可測試性的4個維度 18
1.3.5 不同級別的可測試性與工程實踐 21
1.3.6 總結 25
1.4 測試分析與測試設計 25
1.4.1 什么是測試分析與測試設計 25
1.4.2 測試分析與測試設計的分類 26
1.4.3 基于用戶行為和業(yè)務場景的測試分析與測試設計 28
1.4.4 測試分析與測試設計的未來 28
第 2章 軟件測試新方法 30
2.1 契約測試 31
2.1.1 什么是契約測試 31
2.1.2 契約測試存在的問題 32
2.1.3 契約測試的主要實踐 32
2.1.4 總結 37
2.2 測試驅動開發(fā) 38
2.2.1 TDD是什么 38
2.2.2 TDD怎么做 40
2.2.3 “TDD已死”? 44
2.2.4 總結 46
2.3 探索式測試 46
2.3.1 探索式測試的歷史與簡介 46
2.3.2 探索式測試的現狀 47
2.3.3 探索式測試在敏捷開發(fā)中的實踐 48
2.3.4 探索式測試的產出度量 50
2.3.5 總結 50
2.4 低代碼測試 50
2.4.1 低代碼測試的切入點 51
2.4.2 低代碼GUI測試 51
2.4.3 低代碼API測試 55
2.4.4 總結 56
2.5 混沌工程 57
2.5.1 混沌工程的理念 57
2.5.2 混沌工程的發(fā)展歷程 57
2.5.3 混沌工程的價值 58
2.5.4 核心觀點和常見誤區(qū) 59
2.5.5 實施混沌工程的原則 61
2.5.6 實施混沌實驗的步驟 62
2.5.7 混沌工程常用工具和使用演示 63
第3章 軟件測試新技術(上) 71
3.1 流量回放 72
3.1.1 使用GoReplay和Diffy進行流量回放 73
3.1.2 使用jvm-sandbox-repeater進行流量回放 75
3.1.3 基于Service Mesh進行流量回放 76
3.1.4 總結 78
3.2 精準測試 78
3.2.1 精準測試的技術實現 79
3.2.2 精準測試的前沿探索 81
3.2.3 總結 82
3.3 模糊測試 82
3.3.1 模糊測試介紹 82
3.3.2 模糊測試實施步驟 83
3.3.3 模糊測試實例 84
3.3.4 展望 85
3.4 變異測試 86
3.4.1 單元測試代碼覆蓋率的局限性 86
3.4.2 變異測試的基本概念 86
3.4.3 變異測試是新技術嗎 86
3.4.4 實施變異測試的步驟 87
3.4.5 主流變異測試工具用法簡介 88
3.4.6 變異測試的工程化實踐 94
3.4.7 變異測試在接口測試中的應用與探索 95
3.5 服務虛擬化 96
3.5.1 服務虛擬化介紹及面對的問題 96
3.5.2 解決方案 97
3.5.3 服務虛擬化實例 —— Hoverfly 100
3.5.4 總結 102
第4章 軟件測試新技術(下) 103
4.1 全鏈路壓測 104
4.1.1 壓測數據隔離 104
4.1.2 壓測模型構建 106
4.1.3 應用服務改造 108
4.1.4 壓測流量制造 108
4.1.5 風險控制 109
4.1.6 組織協(xié)作 110
4.1.7 總結 110
4.2 安全測試新技術 110
4.2.1 安全測試的基本方法 111
4.2.2 安全測試的效果度量 111
4.2.3 軟件安全漏洞的分類 113
4.2.4 安全測試的分類 114
4.2.5 不同類型項目的安全測試 116
4.2.6 DevSecOps:從安全測試到安全工程 117
4.3 移動測試新技術 123
4.3.1 移動測試現狀 123
4.3.2 移動應用的測試策略與測試架構 123
4.3.3 移動測試的分類與框架 126
4.3.4 移動測試的未來 128
4.4 大數據測試 128
4.4.1 大數據的特征 129
4.4.2 大數據測試的策略 130
4.4.3 大數據測試的步驟 131
4.4.4 大數據測試的挑戰(zhàn) 132
4.4.5 總結 132
4.5 人工智能測試 132
4.5.1 人工智能應用概述 133
4.5.2 傳統(tǒng)軟件測試技術的局限性 133
4.5.3 機器學習在 GUI 自動化測試執(zhí)行領域的應用與創(chuàng)新 134
4.5.4 機器學習在測試設計領域的應用與創(chuàng)新 135
4.5.5 機器學習在測試結果分析領域的應用與創(chuàng)新 138
4.5.6 總結 139
4.6 ChatGPT在自動化測試領域的應用 139
4.6.1 ChatGPT簡介 139
4.6.2 ChatGPT和自動化測試 140
4.6.3 使用ChatGPT生成基于Cucumber的GUI自動化測試用例 140
4.6.4 ChatGPT在自動化測試應用中的一些問題 143
4.6.5 總結 143
第5章 軟件測試基礎設施 144
5.1 測試環(huán)境 145
5.1.1 容器化的“One-Box”方案 145
5.1.2 容器化的“軟隔離”方案 146
5.1.3 測試環(huán)境的穩(wěn)定性巡檢 148
5.1.4 總結 148
5.2 測試執(zhí)行環(huán)境 149
5.2.1 測試執(zhí)行環(huán)境的痛點 149
5.2.2 基于Selenium Grid的解決方案 149
5.2.3 測試基礎架構的基本概念 154
5.2.4 測試基礎架構的設計 155
5.2.5 測試基礎架構的選型原則 161
5.3 測試數據新知 162
5.3.1 測試數據的現狀 162
5.3.2 測試數據的分類 162
5.3.3 測試數據的未來 164
5.4 測試中臺 164
5.4.1 統(tǒng)一測試執(zhí)行服務 165
5.4.2 統(tǒng)一測試數據服務 165
5.4.3 測試執(zhí)行環(huán)境準備服務 166
5.4.4 被測系統(tǒng)部署服務 166
5.4.5 測試報告服務 166
5.4.6 全局測試配置服務 167
5.4.7 大型全球化電商網站測試中臺的使用示例 168
第6章 軟件測試常見困惑 170
6.1 測試人員和開發(fā)人員的理想比例是多少? 171
6.2 系統(tǒng)出現漏測,這個“鍋”應該誰來背? 172
6.3 測試工程師如何應對“一句話需求”? 173
6.4 測試工程師必須要有開發(fā)能力嗎? 174
6.5 編寫測試用例文檔花費了大量的時間和精力,是否真的值得? 174
6.6 現在很多公司都在去測試化,我們究竟還要不要專職的測試人員? 175
6.7 質量與效能,魚和熊掌真的不能兼得嗎? 176
6.8 大規(guī)模敏捷團隊中有哪些測試問題和痛點? 177
6.8.1 背景介紹 177
6.8.2 問題和痛點 177
6.8.3 總結 181
第7章 軟件測試行業(yè)案例 183
7.1 某大型電商公司推動質量中臺建設的成功經驗與失敗教訓 184
7.1.1 背景 184
7.1.2 推動質量基礎設施建設所走過的彎路 185
7.1.3 質量中臺建設 186
7.1.4 總結 186
7.2 某“頭部”券商數字化轉型中的軟件測試實踐探索 186
7.2.1 背景 186
7.2.2 數字化轉型中的測試技術應用 187
7.2.3 總結 191
7.3 AI技術在質量領域的實踐 191
7.3.1 背景 192
7.3.2 AI應用場景 192
7.3.3 落地效果 198
7.3.4 未來方向與展望 201