大模型(LLM)的爆炸式增長顯著降低了AI的應(yīng)用門檻,推動了LLM在軟件開發(fā)領(lǐng)域的廣泛應(yīng)用,也為軟件測試帶來了變革與挑戰(zhàn)。本書旨在幫助軟件測試工程師用LLM提升測試能力,圍繞LLM的思維模式、技術(shù)和上下文3個核心要素展開。第1部分介紹LLM在測試中的作用及價值,探討其內(nèi)部機制與提示詞工程概念,分析AI、自動化和測試的關(guān)系;第2部分展示測試活動與LLM輔助工具結(jié)合的方法,如提升代碼質(zhì)量、增強測試計劃能力、創(chuàng)建測試數(shù)據(jù)、應(yīng)用于探索性測試等;第3部分闡述上下文對LLM的重要性,介紹添加上下文的技術(shù),如構(gòu)建RAG框架、微調(diào)模型等。
本書適合掌握一定自動化測試基本概念,具備探索性測試基本經(jīng)驗以及數(shù)據(jù)管理和相關(guān)數(shù)據(jù)結(jié)構(gòu)中級知識,對YAML格式化和命令行工具有基本了解的質(zhì)量保證工程師和軟件測試工程師,以及希望進(jìn)一步了解LLM如何幫助生成代碼和測試自動化的開發(fā)人員閱讀。
【全面覆蓋】圍繞思維模式、技術(shù)和上下文 3 個核心要素,全面探討 LLM 在軟件測試中的應(yīng)用,幫助測試工程師提升測試能力。
【案例豐富】提供大量實際案例,展示如何將 LLM 與測試活動相結(jié)合,如提升代碼質(zhì)量、增強測試計劃能力、創(chuàng)建測試數(shù)據(jù)等。
【理性務(wù)實】既強調(diào) LLM 的強大支持,又重視人類判斷力和理解力的重要性,避免 技術(shù)濫用。
【技術(shù)前沿】介紹添加上下文的技術(shù),如構(gòu)建 RAG 框架、微調(diào)模型等,提升 LLM 的應(yīng)用效果。
馬克·溫特林厄姆(Mark Winteringham)是一名質(zhì)量工程師、課程總監(jiān),也是Testing Web APIs一書的作者。他是基于風(fēng)險的現(xiàn)代測試實踐、基于整體的自動化策略、行為驅(qū)動開發(fā)和探索性測試技術(shù)的倡導(dǎo)者。
第 1部分 思維模式:與LLM建立積極的關(guān)系
第 1章 利用大模型來輔助測試 3
1.1 認(rèn)識AI工具對測試和
開發(fā)的影響 4
1.1.1 數(shù)據(jù)生成 4
1.1.2 自動化測試構(gòu)建 5
1.1.3 測試設(shè)計 5
1.2 利用LLM創(chuàng)造價值 5
1.2.1 交付價值的模式 5
1.2.2 結(jié)合人類和AI的能力 6
1.2.3 對LLM保持懷疑態(tài)度 11
小結(jié) 11
第 2章 大模型和提示詞工程 13
2.1 LLM解釋 14
2.2 降低使用LLM的風(fēng)險 16
2.2.1 幻覺 16
2.2.2 數(shù)據(jù)來源 16
2.2.3 數(shù)據(jù)隱私 17
2.3 利用提示詞工程改善結(jié)果 18
2.4 檢驗提示詞工程的原則 20
2.4.1 原則1:撰寫清晰而具體的提示詞 20
2.4.2 策略1:使用分隔符 20
2.4.3 策略2:要求結(jié)構(gòu)化輸出 21
2.4.4 策略3:檢查假設(shè) 22
2.4.5 策略4:少樣本提示詞 25
2.4.6 原則2:給模型思考的時間 25
2.4.7 策略1:明確完成任務(wù)的步驟 26
2.4.8 策略2:引導(dǎo)模型先找出自己的解決方案 27
2.5 嘗試各種LLM 29
2.5.1 比較各類LLM 29
2.5.2 嘗試流行的LLM 30
2.6 創(chuàng)建提示詞庫 32
2.7 使用提示詞解決問題 33
小結(jié) 34
第3章 人工智能、自動化和測試 35
3.1 測試的價值 35
3.1.1 不同的測試思維方式 36
3.1.2 更全面的測試方法 38
3.2 工具如何幫助測試 39
3.2.1 自動化偏差 39
3.2.2 有選擇地使用工具 39
3.3 了解何時在測試中使用LLM 41
3.3.1 生成能力 41
3.3.2 轉(zhuǎn)換能力 42
3.3.3 增強能力 43
3.3.4 測試中使用的LLM 43
小結(jié) 44
第 2部分 技術(shù):測試中的任務(wù)識別和提示詞工程
第4章 面向開發(fā)人員的AI輔助測試 47
4.1 自動化開發(fā)人員的崛起 48
4.2 與LLM協(xié)作 50
4.2.1 分析想法 50
4.2.2 分析代碼 53
4.2.3 認(rèn)識到模擬的重要性 55
4.3 利用AI輔助提高產(chǎn)品質(zhì)量 55
4.4 利用LLM創(chuàng)建第 一個TDD循環(huán) 56
4.4.1 準(zhǔn)備工作 57
4.4.2 循環(huán)1:保存工期表條目 59
4.4.3 循環(huán)2:檢索工時表條目 60
4.4.4 循環(huán)3:計算項目工時 62
4.4.5 重構(gòu)代碼 63
4.5 使用LLM改進(jìn)文檔和溝通 68
4.5.1 生成代碼注釋 69
4.5.2 生成發(fā)布說明 73
4.6 尋求與代碼助手之間的平衡 76
小結(jié) 76
第5章 AI輔助的測試計劃 78
5.1 現(xiàn)代測試中測試計劃的定義 79
5.1.1 測試計劃、LLM和影響域 79
5.2 通過模型進(jìn)行重點引導(dǎo) 80
5.2.1 不精準(zhǔn)的提示詞導(dǎo)致不精準(zhǔn)的建議 80
5.2.2 什么是模型,為什么模型可以幫助我們理解 81
5.3 結(jié)合模型和LLM來協(xié)助測試計劃 82
5.3.1 創(chuàng)建明確提示詞的模型 82
5.3.2 嘗試不同的模型類型 88
5.4 LLM與測試用例 91
5.4.1 對生成的風(fēng)險和測試用例持適當(dāng)?shù)膽岩蓱B(tài)度 93
小結(jié) 93
第6章 利用AI快速創(chuàng)建數(shù)據(jù) 94
6.1 使用LLM生成和轉(zhuǎn)換數(shù)據(jù) 94
6.1.1 引導(dǎo)LLM生成簡單數(shù)據(jù)集 95
6.1.2 將測試數(shù)據(jù)轉(zhuǎn)換為不同格式 99
6.2 使用LLM處理復(fù)雜的測試數(shù)據(jù) 101
6.2.1 在提示詞中使用格式標(biāo)準(zhǔn) 101
6.2.2 作為提示詞引導(dǎo)的SQL導(dǎo)出 106
6.3 將LLM設(shè)置為測試數(shù)據(jù)管理器 109
6.3.1 設(shè)置OpenAI賬戶 109
6.3.2 連接OpenAI 111
6.4 從測試數(shù)據(jù)生成中獲益 115
小結(jié) 116
第7章 利用AI加速和改進(jìn)UI自動化 117
7.1 快速創(chuàng)建UI自動化 117
7.1.1 設(shè)置項目 121
7.1.2 利用ChatGPT輔助創(chuàng)建初始校驗 123
7.1.3 從生成的代碼中填補空白 129
7.2 改進(jìn)現(xiàn)有的UI自動化 131
7.2.1 更新狀態(tài)管理以使用適當(dāng)?shù)膶印?31
7.2.2 熟練使用AI工具 136
小結(jié) 136
第8章 利用AI輔助探索性測試 137
8.1 使用LLM組織探索性測試 138
8.1.1 用LLM增強已識別的風(fēng)險 138
8.1.2 用LLM擴充準(zhǔn)則列表 142
8.2 在探索性測試中使用LLM 144
8.2.1 建立理解 145
8.2.2 創(chuàng)建會話的數(shù)據(jù)要求 147
8.2.3 探索和跟進(jìn)缺陷 151
8.2.4 使用LLM協(xié)助探索性測試 153
8.3 用LLM總結(jié)測試記錄 154
小結(jié) 158
第9章 作為測試助手的AI智能體 159
9.1 理解AI智能體和LLM 159
9.1.1 AI智能體的定義 160
9.1.2 智能體如何與LLM配合工作 160
9.2 創(chuàng)建AI測試助手 161
9.2.1 設(shè)置虛擬AI智能體 162
9.2.2 賦予AI智能體執(zhí)行函數(shù) 165
9.2.3 將工具串聯(lián)起來 169
9.3 利用AI測試助手向前邁進(jìn) 172
9.3.1 AI測試助手示例 172
9.3.2 應(yīng)對與智能體合作的挑戰(zhàn) 175
小結(jié) 176
第3部分 上下文:為測試上下文定制LLM
第 10章 引入定制的LLM 179
10.1 LLM和上下文面臨的挑戰(zhàn) 179
10.1.1 詞元、上下文窗口和限制 181
10.1.2 嵌入上下文作為解決方案 183
10.2 將上下文進(jìn)一步嵌入提示詞和LLM中 183
10.2.1 RAG 184
10.2.2 微調(diào)LLM 185
10.2.3 比較兩種方法 188
10.2.4 結(jié)合RAG和微調(diào) 190
小結(jié) 190
第 11章 基于RAG的上下文提示詞 192
11.1 利用RAG擴展提示詞 192
11.2 構(gòu)建RAG框架 194
11.2.1 構(gòu)建我們自己的RAG框架 195
11.2.2 測試RAG框架 203
11.3 提升RAG的數(shù)據(jù)存儲能力 205
11.3.1 使用向量數(shù)據(jù)庫 205
11.3.2 建立基于向量數(shù)據(jù)庫的RAG 207
11.3.3 測試基于向量數(shù)據(jù)庫的RAG框架 209
11.3.4 繼續(xù)推進(jìn)RAG框架 211
小結(jié) 212
第 12章 使用業(yè)務(wù)領(lǐng)域知識微調(diào)LLM 213
12.1 探索微調(diào)過程 213
12.1.1 微調(diào)過程概覽 214
12.1.2 目標(biāo)設(shè)定 214
12.2 執(zhí)行微調(diào)環(huán)節(jié) 215
12.2.1 準(zhǔn)備訓(xùn)練數(shù)據(jù) 215
12.2.2 預(yù)處理和設(shè)置 219
12.2.3 使用微調(diào)工具 224
12.2.4 啟動微調(diào)運行 224
12.2.5 測試微調(diào)結(jié)果 225
12.2.6 微調(diào)的經(jīng)驗教訓(xùn) 228
小結(jié) 228
附錄A 設(shè)置和使用ChatGPT 230
附錄B 設(shè)置和使用GitHub Copilot 233
B.1 設(shè)置Copilot 233
B.1.1 設(shè)置Copilot賬戶 234
B.1.2 安裝Copilot插件 234
B.1.3 授予Copilot賬戶訪問權(quán)限 234
B.2 使用Copilot 236
B.2.1 探索建議 236
附錄C 探索性測試記錄 238