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