本書內(nèi)容聚焦于“現(xiàn)代”軟件測試技術(shù),既包括近幾年頗受關(guān)注的前沿軟件測試技術(shù),也包括一些“老技術(shù)”在新場景下的應用。作者希望將這些技術(shù)剖析清楚,在此基礎上給出一些常見的實踐案例或應用場景,讓讀者深入理解這些軟件測試技術(shù)的來龍去脈,并能夠?qū)⑵淇焖賾玫綄嵺`中。本書分為7章,主要內(nèi)容包括軟件測試新理念、軟件測試新方法、軟件測試新技術(shù)、軟件測試基礎設施、軟件測試常見困惑、軟件測試行業(yè)案例等。
本書內(nèi)容通俗易懂,案例豐富,既適合軟件測試從業(yè)人員(測試工程師、測試開發(fā)工程師、測試架構(gòu)師、測試經(jīng)理、測試總監(jiān)等)閱讀,也適合軟件開發(fā)人員、架構(gòu)師和企業(yè)管理人員閱讀,還適合作為高等院校相關(guān)專業(yè)的教學用書。
全彩色印刷,內(nèi)容聚焦于“現(xiàn)代的”軟件測試中的前沿技術(shù)和新方法的應用,通過新技術(shù)和新方法的應用,體現(xiàn)測試技術(shù)之美!
前沿的新技術(shù):ChatGPT(大模型)實現(xiàn)自動化測試、機器學習在測試中的應用、大數(shù)據(jù)測試、低代碼測試、混沌工程、微服務測試。
新方法的應用:流量回放、精確測試、變異測試、全鏈路壓測、安全測試、測試中臺。
● 人工智能等前沿新技術(shù)助力軟件測試人員提高測試效率和準度,發(fā)現(xiàn)一些傳統(tǒng)測試技術(shù)難以發(fā)現(xiàn)的軟件問題;
● 契約測試、探索式測試、低代碼測試、精準測試、流量回放等新方法在新場景中的應用,能幫助測試人員更好地解決軟件測試中的難點;
● 新實踐案例,能幫助測試人員解決經(jīng)常面臨的各種各樣的挑戰(zhàn),例如,測試資源不足、測試數(shù)據(jù)缺乏、測試用例的維護難度大等,使測試人員獲得解決問題的成就感。
茹炳晟,騰訊 Tech Lead,騰訊研究院特約研究員,中國計算機學會技術(shù)前線委員會研發(fā)效能SIG 主席,《軟件研發(fā)效能度量規(guī)范》標準核心編寫專家,中國商業(yè)聯(lián)合會互聯(lián)網(wǎng)應用工作委員會智庫專家,騰訊云、阿里云、華為云“具價值專家”,《測試工程師全棧技術(shù)進階與實踐》的作者。自媒體號“茹炳晟聊軟件研發(fā)”的主理人。
吳駿龍,某大型互聯(lián)網(wǎng)公司質(zhì)量與效能團隊技術(shù)總監(jiān),騰訊云“具價值專家”,曾任 Wish中國測試總監(jiān)、阿里巴巴本地生活高級測試經(jīng)理。在軟件質(zhì)量體系、服務容量保障、服務穩(wěn)定性建設、軟件研發(fā)效能等領域深耕多年,善于通過創(chuàng)新手段解決工程難題。他是測試行業(yè)優(yōu)秀的實踐者和前沿技術(shù)的傳播者,多次受邀參加 QCon、QECon、CCF 等行業(yè)峰會并進行演講。
劉冉,現(xiàn)任Thoughtworks軟件測試和質(zhì)量專家,具有 20 年軟件開發(fā)和測試工作經(jīng)驗;對Web 應用測試、服務器性能測試、移動測試、安全測試、敏捷測試、測試驅(qū)動開發(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 總結(jié) 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 總結(jié) 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 總結(jié) 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 總結(jié) 37
2.2 測試驅(qū)動開發(fā) 38
2.2.1 TDD是什么 38
2.2.2 TDD怎么做 40
2.2.3 “TDD已死”? 44
2.2.4 總結(jié) 46
2.3 探索式測試 46
2.3.1 探索式測試的歷史與簡介 46
2.3.2 探索式測試的現(xiàn)狀 47
2.3.3 探索式測試在敏捷開發(fā)中的實踐 48
2.3.4 探索式測試的產(chǎn)出度量 50
2.3.5 總結(jié) 50
2.4 低代碼測試 50
2.4.1 低代碼測試的切入點 51
2.4.2 低代碼GUI測試 51
2.4.3 低代碼API測試 55
2.4.4 總結(jié) 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章 軟件測試新技術(shù)(上) 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 總結(jié) 78
3.2 精準測試 78
3.2.1 精準測試的技術(shù)實現(xiàn) 79
3.2.2 精準測試的前沿探索 81
3.2.3 總結(jié) 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 變異測試是新技術(shù)嗎 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 總結(jié) 102
第4章 軟件測試新技術(shù)(下) 103
4.1 全鏈路壓測 104
4.1.1 壓測數(shù)據(jù)隔離 104
4.1.2 壓測模型構(gòu)建 106
4.1.3 應用服務改造 108
4.1.4 壓測流量制造 108
4.1.5 風險控制 109
4.1.6 組織協(xié)作 110
4.1.7 總結(jié) 110
4.2 安全測試新技術(shù) 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 移動測試新技術(shù) 123
4.3.1 移動測試現(xiàn)狀 123
4.3.2 移動應用的測試策略與測試架構(gòu) 123
4.3.3 移動測試的分類與框架 126
4.3.4 移動測試的未來 128
4.4 大數(shù)據(jù)測試 128
4.4.1 大數(shù)據(jù)的特征 129
4.4.2 大數(shù)據(jù)測試的策略 130
4.4.3 大數(shù)據(jù)測試的步驟 131
4.4.4 大數(shù)據(jù)測試的挑戰(zhàn) 132
4.4.5 總結(jié) 132
4.5 人工智能測試 132
4.5.1 人工智能應用概述 133
4.5.2 傳統(tǒng)軟件測試技術(shù)的局限性 133
4.5.3 機器學習在 GUI 自動化測試執(zhí)行領域的應用與創(chuàng)新 134
4.5.4 機器學習在測試設計領域的應用與創(chuàng)新 135
4.5.5 機器學習在測試結(jié)果分析領域的應用與創(chuàng)新 138
4.5.6 總結(jié) 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 總結(jié) 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 總結(jié) 148
5.2 測試執(zhí)行環(huán)境 149
5.2.1 測試執(zhí)行環(huán)境的痛點 149
5.2.2 基于Selenium Grid的解決方案 149
5.2.3 測試基礎架構(gòu)的基本概念 154
5.2.4 測試基礎架構(gòu)的設計 155
5.2.5 測試基礎架構(gòu)的選型原則 161
5.3 測試數(shù)據(jù)新知 162
5.3.1 測試數(shù)據(jù)的現(xiàn)狀 162
5.3.2 測試數(shù)據(jù)的分類 162
5.3.3 測試數(shù)據(jù)的未來 164
5.4 測試中臺 164
5.4.1 統(tǒng)一測試執(zhí)行服務 165
5.4.2 統(tǒng)一測試數(shù)據(jù)服務 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 大型全球化電商網(wǎng)站測試中臺的使用示例 168
第6章 軟件測試常見困惑 170
6.1 測試人員和開發(fā)人員的理想比例是多少? 171
6.2 系統(tǒng)出現(xiàn)漏測,這個“鍋”應該誰來背? 172
6.3 測試工程師如何應對“一句話需求”? 173
6.4 測試工程師必須要有開發(fā)能力嗎? 174
6.5 編寫測試用例文檔花費了大量的時間和精力,是否真的值得? 174
6.6 現(xiàn)在很多公司都在去測試化,我們究竟還要不要專職的測試人員? 175
6.7 質(zhì)量與效能,魚和熊掌真的不能兼得嗎? 176
6.8 大規(guī)模敏捷團隊中有哪些測試問題和痛點? 177
6.8.1 背景介紹 177
6.8.2 問題和痛點 177
6.8.3 總結(jié) 181
第7章 軟件測試行業(yè)案例 183
7.1 某大型電商公司推動質(zhì)量中臺建設的成功經(jīng)驗與失敗教訓 184
7.1.1 背景 184
7.1.2 推動質(zhì)量基礎設施建設所走過的彎路 185
7.1.3 質(zhì)量中臺建設 186
7.1.4 總結(jié) 186
7.2 某“頭部”券商數(shù)字化轉(zhuǎn)型中的軟件測試實踐探索 186
7.2.1 背景 186
7.2.2 數(shù)字化轉(zhuǎn)型中的測試技術(shù)應用 187
7.2.3 總結(jié) 191
7.3 AI技術(shù)在質(zhì)量領域的實踐 191
7.3.1 背景 192
7.3.2 AI應用場景 192
7.3.3 落地效果 198
7.3.4 未來方向與展望 201