大模型驅動的軟件測試:從理論到實踐

Mark,Winteringham

相關主題

商品描述

大模型(LLM)的爆炸式增長顯著降低了AI的應用門檻,推動了LLM在軟件開發領域的廣泛應用,也為軟件測試帶來了變革與挑戰。本書旨在幫助軟件測試工程師用LLM提升測試能力,圍繞LLM的思維模式、技術和上下文3個核心要素展開。第1部分介紹LLM在測試中的作用及價值,探討其內部機制與提示詞工程概念,分析AI、自動化和測試的關系;第2部分展示測試活動與LLM輔助工具結合的方法,如提升代碼質量、增強測試計劃能力、創建測試數據、應用於探索性測試等;第3部分闡述上下文對LLM的重要性,介紹添加上下文的技術,如構建RAG框架、微調模型等。
  本書適合掌握一定自動化測試基本概念,具備探索性測試基本經驗以及數據管理和相關數據結構中級知識,對YAML格式化和命令行工具有基本了解的質量保證工程師和軟件測試工程師,以及希望進一步了解LLM如何幫助生成代碼和測試自動化的開發人員閱讀。

作者簡介

馬克·溫特林厄姆(Mark Winteringham)是一名質量工程師、課程總監,也是Testing Web APIs一書的作者。他是基於風險的現代測試實踐、基於整體的自動化策略、行為驅動開發和探索性測試技術的倡導者。

目錄大綱

第 1部分 思維模式:與LLM建立積極的關系
第 1章 利用大模型來輔助測試 3
1.1 認識AI工具對測試和
開發的影響 4
1.1.1 數據生成 4
1.1.2 自動化測試構建 5
1.1.3 測試設計 5
1.2 利用LLM創造價值 5
1.2.1 交付價值的模式 5
1.2.2 結合人類和AI的能力 6
1.2.3 對LLM保持懷疑態度 11
小結 11
第 2章 大模型和提示詞工程 13
2.1 LLM解釋 14
2.2 降低使用LLM的風險 16
2.2.1 幻覺 16
2.2.2 數據來源 16
2.2.3 數據隱私 17
2.3 利用提示詞工程改善結果 18
2.4 檢驗提示詞工程的原則 20
2.4.1 原則1:撰寫清晰而具體的提示詞 20
2.4.2 策略1:使用分隔符 20
2.4.3 策略2:要求結構化輸出 21
2.4.4 策略3:檢查假設 22
2.4.5 策略4:少樣本提示詞 25
2.4.6 原則2:給模型“思考”的時間 25
2.4.7 策略1:明確完成任務的步驟 26
2.4.8 策略2:引導模型先找出自己的解決方案 27
2.5 嘗試各種LLM 29
2.5.1 比較各類LLM 29
2.5.2 嘗試流行的LLM 30
2.6 創建提示詞庫 32
2.7 使用提示詞解決問題 33
小結 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 轉換能力 42
3.3.3 增強能力 43
3.3.4 測試中使用的LLM 43
小結 44
第 2部分 技術:測試中的任務識別和提示詞工程
第4章 面向開發人員的AI輔助測試 47
4.1 自動化開發人員的崛起 48
4.2 與LLM協作 50
4.2.1 分析想法 50
4.2.2 分析代碼 53
4.2.3 認識到模擬的重要性 55
4.3 利用AI輔助提高產品質量 55
4.4 利用LLM創建第 一個TDD循環 56
4.4.1 準備工作 57
4.4.2 循環1:保存工期表條目 59
4.4.3 循環2:檢索工時表條目 60
4.4.4 循環3:計算項目工時 62
4.4.5 重構代碼 63
4.5 使用LLM改進文檔和溝通 68
4.5.1 生成代碼註釋 69
4.5.2 生成發布說明 73
4.6 尋求與代碼助手之間的平衡 76
小結 76
第5章 AI輔助的測試計劃 78
5.1 現代測試中測試計劃的定義 79
5.1.1 測試計劃、LLM和影響域 79
5.2 通過模型進行重點引導 80
5.2.1 不精準的提示詞導致不精準的建議 80
5.2.2 什麼是模型,為什麼模型可以幫助我們理解 81
5.3 結合模型和LLM來協助測試計劃 82
5.3.1 創建明確提示詞的模型 82
5.3.2 嘗試不同的模型類型 88
5.4 LLM與測試用例 91
5.4.1 對生成的風險和測試用例持適當的懷疑態度 93
小結 93
第6章 利用AI快速創建數據 94
6.1 使用LLM生成和轉換數據 94
6.1.1 引導LLM生成簡單數據集 95
6.1.2 將測試數據轉換為不同格式 99
6.2 使用LLM處理覆雜的測試數據 101
6.2.1 在提示詞中使用格式標準 101
6.2.2 作為提示詞引導的SQL導出 106
6.3 將LLM設置為測試數據管理器 109
6.3.1 設置OpenAI賬戶 109
6.3.2 連接OpenAI 111
6.4 從測試數據生成中獲益 115
小結 116
第7章 利用AI加速和改進UI自動化 117
7.1 快速創建UI自動化 117
7.1.1 設置項目 121
7.1.2 利用ChatGPT輔助創建初始校驗 123
7.1.3 從生成的代碼中填補空白 129
7.2 改進現有的UI自動化 131
7.2.1 更新狀態管理以使用適當的層 131
7.2.2 熟練使用AI工具 136
小結 136
第8章 利用AI輔助探索性測試 137
8.1 使用LLM組織探索性測試 138
8.1.1 用LLM增強已識別的風險 138
8.1.2 用LLM擴充準則列表 142
8.2 在探索性測試中使用LLM 144
8.2.1 建立理解 145
8.2.2 創建會話的數據要求 147
8.2.3 探索和跟進缺陷 151
8.2.4 使用LLM協助探索性測試 153
8.3 用LLM總結測試記錄 154
小結 158
第9章 作為測試助手的AI智能體 159
9.1 理解AI智能體和LLM 159
9.1.1 AI智能體的定義 160
9.1.2 智能體如何與LLM配合工作 160
9.2 創建AI測試助手 161
9.2.1 設置虛擬AI智能體 162
9.2.2 賦予AI智能體執行函數 165
9.2.3 將工具串聯起來 169
9.3 利用AI測試助手向前邁進 172
9.3.1 AI測試助手示例 172
9.3.2 應對與智能體合作的挑戰 175
小結 176
第3部分 上下文:為測試上下文定制LLM
第 10章 引入定制的LLM 179
10.1 LLM和上下文面臨的挑戰 179
10.1.1 詞元、上下文窗口和限制 181
10.1.2 嵌入上下文作為解決方案 183
10.2 將上下文進一步嵌入提示詞和LLM中 183
10.2.1 RAG 184
10.2.2 微調LLM 185
10.2.3 比較兩種方法 188
10.2.4 結合RAG和微調 190
小結 190
第 11章 基於RAG的上下文提示詞 192
11.1 利用RAG擴展提示詞 192
11.2 構建RAG框架 194
11.2.1 構建我們自己的RAG框架 195
11.2.2 測試RAG框架 203
11.3 提升RAG的數據存儲能力 205
11.3.1 使用向量數據庫 205
11.3.2 建立基於向量數據庫的RAG 207
11.3.3 測試基於向量數據庫的RAG框架 209
11.3.4 繼續推進RAG框架 211
小結 212
第 12章 使用業務領域知識微調LLM 213
12.1 探索微調過程 213
12.1.1 微調過程概覽 214
12.1.2 目標設定 214
12.2 執行微調環節 215
12.2.1 準備訓練數據 215
12.2.2 預處理和設置 219
12.2.3 使用微調工具 224
12.2.4 啟動微調運行 224
12.2.5 測試微調結果 225
12.2.6 微調的經驗教訓 228
小結 228
附錄A 設置和使用ChatGPT 230
附錄B 設置和使用GitHub Copilot 233
B.1 設置Copilot 233
B.1.1 設置Copilot賬戶 234
B.1.2 安裝Copilot插件 234
B.1.3 授予Copilot賬戶訪問權限 234
B.2 使用Copilot 236
B.2.1 探索建議 236
附錄C 探索性測試記錄 238