JMeter是一款基于Java的開源壓力測試工具,可用于對服務器、網(wǎng)絡或對象施加高負載,從而在不同壓力條件下測試它們的強度和分析整體性能!禞Meter核心技術、性能測試與性能分析》詳解JMeter性能測試和性能分析的方法,結合具體測試案例和實踐,幫助讀者快速掌握JMeter性能測試與性能分析的技能!禞Meter核心技術、性能測試與性能分析》配套示例源碼、PPT課件、教學大綱、教案與作者微信群答疑服務。《JMeter核心技術、性能測試與性能分析》共11章,內容包括認識JMeter、認識性能測試、初識JMeter元件、JMeter主要元件詳解、常見JMeter性能測試腳本的編寫案例、BeanShell、JMeter中如何編寫自定義的取樣器、性能分析與調優(yōu)、電商網(wǎng)站的秒殺系統(tǒng)性能測試與性能分析案例、JMeter性能測試的實踐、大模型輔助性能測試。最后還給出一個JMeter屬性配置的附錄供讀者參考!禞Meter核心技術、性能測試與性能分析》既適合JMeter性能測試初學者、性能測試與分析人員、性能測試解決方案設計師、軟件性能測試經(jīng)理,也適合高等院;蚋呗毟邔T盒W習軟件性能測試的學生。
(1)詳解JMeter性能測試和性能分析的方法,結合具體測試案例和實踐,幫助讀者快速掌握JMeter性能測試與性能分析的技能。(2)實戰(zhàn)電商網(wǎng)站的秒殺系統(tǒng)性能測試與性能分析案例與大模型輔助性能測試方法。(3)配套示例源碼、PPT課件、教學大綱、教案、作者微信群答疑服務。
前 言
任何軟件系統(tǒng)都需要軟件測試人員去進行測試。未來,不管軟件系統(tǒng)怎么變化,軟件測試都是一個非常重要且不會被淘汰的領域,而性能測試又是軟件測試中最重要的一個環(huán)節(jié)。軟件系統(tǒng)的性能最關乎用戶的體驗,良好的用戶體驗可以讓軟件系統(tǒng)在市場競爭中脫穎而出。因此,性能測試在軟件測試領域永遠都是不可或缺的重要技能。
JMeter作為一款免費開源的性能測試工具被廣泛地使用,幾乎可以支持對所有的軟件系統(tǒng)做性能測試。它還可以支持插件和擴展,自主擴展其功能或性能以滿足特定的性能測試需求場景。同時,學習JMeter的成本很低,相關的技術資料也非常齊全,并擁有著強大的開源社區(qū),可以隨時獲取幫助。
本書目的
本書針對性能測試中的常見問題進行講解,幫助讀者掌握性能測試的基礎知識、JMeter性能測試工具的使用、JMeter性能測試的執(zhí)行方法與案例,以及遇到性能瓶頸時分析和解決問題的技巧。
本書內容
第1、2章,主要介紹JMeter的基礎知識以及性能測試的基礎概念,幫助讀者建立起性能測試的知識框架,并快速入門性能測試領域。
第3、4章,主要介紹如何使用JMeter提供的各種強大的測試功能,幫助讀者掌握JMeter的使用方法。
第5~7章,主要介紹如何使用JMeter來完成性能測試腳本的編寫。這幾章提供了多個性能測試腳本編寫案例,幫助讀者將第3、4章講解的JMeter測試功能運用到腳本編寫實踐中。
第8章,主要介紹軟件性能分析與調優(yōu)的理論知識以及調優(yōu)思想等。本章還會對常見的性能問題做分析和總結。
第9章,主要剖析一個完整的性能測試與性能分析調優(yōu)案例。通過該案例,幫助讀者把前面章節(jié)中學習到的知識進行一個完整的實踐。讀者通過這個案例的實踐,在拿到一個性能測試需求時,可以自己有條有理地去完成性能測試的整個過程。
第10章,主要介紹JMeter性能測試的實踐要點。本章包括確定編寫腳本的場景、設計用戶思考時間、腳本編寫注意事項、執(zhí)行性能測試時的注意事項,以及性能測試時的監(jiān)控指標。
第11章,簡單講解大模型輔助性能測試的應用場景,幫助讀者提高性能測試工作的效率。
附錄,主要講解JMeter屬性配置項,方便讀者在做性能測試時隨手查閱。
本書學習方法
(1)本書精心設計的實踐示例和案例,可以幫助讀者深入掌握JMeter性能測試的方法和技巧。因此,建議讀者在學習的時候一定要動手實踐本書的示例和案例。
(2)本書每章的最后一節(jié)給出了讀者必須掌握的重點內容,讀者可以根據(jù)提示快速回顧每章的關鍵知識點,掌握本章內容之后再進行下一章的學習。
(3)本書講解的性能測試基礎知識,是完成性能測試的指導思想,建議讀者熟記。
(4)多做JMeter操作練習,碰到問題多加思考,將理論知識運用到性能測試實踐之中,并通過實踐加深對性能測試與性能分析方法的理解。
本書配套資源下載
本書配套資源包括示例源碼、PPT課件、教學大綱、教案與作者微信群答疑服務,讀者需要使用自己的微信掃描下邊的二維碼獲取。如果在閱讀本書的過程中發(fā)現(xiàn)問題或有任何建議,請聯(lián)系下載資源中提供的相關電子郵箱或微信。
本書讀者
本書既適合JMeter性能測試初學者、性能測試與分析人員、性能測試解決方案設計師、軟件性能測試經(jīng)理,也適合高等院;蚋呗毟邔T盒W習軟件性能測試的學生。
致謝
感謝清華大學出版社的老師們對本書出版所作出的貢獻。
由于筆者水平有限以及成書時間倉促,書中難免存在不足之處,敬請廣大讀者批評指正。
作者于南京
2025年5月
張永清,福特汽車工程研究有限公司高級架構師。從事功能測試、自動化測試、性能測試、Java軟件開發(fā)、大數(shù)據(jù)開發(fā)、架構師等工作近二十年,在自動化測試、性能測試設計、性能診斷、性能調優(yōu)、分布式架構設計等領域積累了豐富的實戰(zhàn)經(jīng)驗。參與開發(fā)過的系統(tǒng)包括公安、互聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能等領域。著有圖書《數(shù)據(jù)資產(chǎn)管理核心技術與實踐》《軟件性能測試、分析與調優(yōu)實踐之路(第2版)》《軟件性能測試、分析與調優(yōu)實踐之路》《RobotFramework自動化測試框架核心指南》。張永松,某跨境電商公司高級測試工程師。一線互聯(lián)網(wǎng)公司從事功能測試、自動化測試、性能測試等工作十多年,在性能測試領域積累了豐富的實戰(zhàn)經(jīng)驗。
目 錄
第1章 認識JMeter 1
1.1 JMeter基本介紹 1
1.2 性能測試的發(fā)展 3
1.3 性能測試工具的發(fā)展 4
1.4 選擇JMeter的原因 5
1.5 JMeter的安裝和部署 7
1.6 JMeter的元件 9
1.7 JMeter的運行模式 13
1.7.1 GUI模式 13
1.7.2 命令行模式 14
1.7.3 服務器模式 15
1.8 本章總結 18
第2章 認識性能測試 19
2.1 性能的基本概念 19
2.1.1 什么是性能 19
2.1.2 性能測試的意義 21
2.1.3 常見的性能指標 21
2.2 性能測試的基本概念 24
2.2.1 性能測試的種類 24
2.2.2 性能測試的場景 25
2.3 性能測試的流程 25
2.3.1 性能需求分析 26
2.3.2 制定性能測試計劃 26
2.3.3 編寫性能測試方案 27
2.3.4 編寫性能測試案例 29
2.3.5 搭建性能測試環(huán)境 29
2.3.6 構造性能測試數(shù)據(jù) 30
2.3.7 編寫性能測試腳本 30
2.3.8 執(zhí)行性能測試 30
2.3.9 編寫性能測試報告 31
2.4 本章總結 32
第3章 初識JMeter元件 33
3.1 測試計劃 34
3.2 線程組 36
3.3 配置元件 38
3.3.1 常用配置元件 38
3.3.2 JDBC Connection Configuration配置項詳情 40
3.3.3 TCP取樣器配置項詳情 42
3.3.4 HTTP授權管理器配置項詳情 43
3.4 前置處理器 44
3.4.1 JSR223 PreProcessor 44
3.4.2 HTML鏈接解析器 45
3.4.3 HTTP URL重寫修飾符 45
3.4.4 JDBC預處理程序 45
3.4.5 正則表達式用戶參數(shù) 46
3.4.6 其他前置處理器 47
3.5 定時器 47
3.5.1 Synchronizing Timer 48
3.5.2 吞吐量定時器 49
3.5.3 其他定時器 49
3.6 取樣器 50
3.6.1 HTTP請求 50
3.6.2 FTP請求 54
3.6.3 GraphQL HTTP Request 54
3.6.4 JDBC Request 55
3.6.5 JMS相關的取樣器 56
3.6.6 郵件相關的取樣器 60
3.6.7 TCP取樣器 61
3.6.8 其他取樣器 62
3.7 后置處理器 67
3.7.1 JSON提取器 67
3.7.2 JSON JMESPath Extractor 69
3.7.3 邊界提取器 70
3.7.4 結果狀態(tài)處理器 71
3.7.5 XPath提取器 71
3.7.6 其他提取器 72
3.8 斷言 73
3.8.1 響應斷言 73
3.8.2 JSON相關的斷言 74
3.8.3 XPath相關的斷言 74
3.8.4 其他斷言 75
3.9 監(jiān)聽器 75
3.9.1 查看結果樹 76
3.9.2 匯總報告 77
3.9.3 聚合報告 77
3.9.4 其他監(jiān)聽器 78
3.10 開始一個性能測試腳本的編寫案例 81
3.11 本章總結 84
第4章 JMeter主要元件詳解 86
4.1 配置元件 86
4.1.1 CSV數(shù)據(jù)文件設置 86
4.1.2 HTTP Cookie管理器 88
4.1.3 HTTP信息頭管理器 89
4.2 函數(shù)助手 90
4.3 邏輯控制器 94
4.3.1 IF控制器 95
4.3.2 事務控制器 96
4.3.3 循環(huán)控制器 96
4.3.4 While控制器 97
4.3.5 臨界部分控制器 97
4.3.6 ForEach控制器 98
4.3.7 Include控制器 99
4.3.8 交替控制器 99
4.3.9 錄制控制器 99
4.3.10 吞吐量控制器 100
4.3.11 僅一次控制器 100
4.3.12 隨機控制器 100
4.3.13 隨機順序控制器 101
4.3.14 Runtime控制器 101
4.3.15 簡單控制器 101
4.3.16 模塊控制器 102
4.3.17 Switch控制器 102
4.4 取樣器 103
4.4.1 WebSocket取樣器 103
4.4.2 Dubbo取樣器 106
4.5 本章總結 108
第5章 常見JMeter性能測試腳本的編寫案例 109
5.1 用戶需先登錄,再請求別的接口 109
5.2 前一個請求返回的結果作為后一個請求的入?yún)?112
5.3 使用JMeter對MySQL數(shù)據(jù)進行性能測試 118
5.3.1 利用JMeter為MySQL數(shù)據(jù)庫構造測試數(shù)據(jù) 118
5.3.2 利用JMeter對MySQL數(shù)據(jù)庫查詢進行性能測試 124
5.4 本章總結 127
第6章 BeanShell 128
6.1 BeanShell的安裝 129
6.2 BeanShell的基礎語法 131
6.2.1 變量和數(shù)據(jù)類型 131
6.2.2 運算符 133
6.2.3 控制流語句 134
6.2.4 函數(shù)和方法 138
6.2.5 異常處理 139
6.2.6 文件操作 141
6.3 在BeanShell中使用JMeter內置變量 145
6.3.1 ctx 146
6.3.2 vars 147
6.3.3 props 148
6.3.4 prev 150
6.3.5 sampler 154
6.3.6 log 155
6.3.7 data 156
6.3.8 sampleEvent 157
6.3.9 sampleResult 158
6.3.10 ResponseMessage和ResponseCode 158
6.3.11 ResponseData和ResponseHeaders 159
6.3.12 RequestHeaders 160
6.3.13 Failure和FailureMessage 161
6.3.14 Parameters和FileName 162
6.3.15 SampleLabel 163
6.4 在JMeter中使用BeanShell的案例 163
6.5 本章總結 171
第7章 JMeter中如何編寫自定義的取樣器 172
7.1 JavaSamplerClient取樣器抽象接口介紹 173
7.2 自定義取樣器的編寫案例 176
7.3 本章總結 185
第8章 性能分析與調優(yōu) 186
8.1 性能分析與調優(yōu)模型 186
8.2 性能分析與調優(yōu)思想 188
8.2.1 分層分析 188
8.2.2 科學論證 189
8.2.3 問題追溯與歸納總結 190
8.3 性能調優(yōu)技術 190
8.3.1 緩存調優(yōu) 190
8.3.2 同步轉異步推送 193
8.3.3 削峰填谷 193
8.3.4 拆分 195
8.3.5 任務分解與并行計算 195
8.3.6 索引與分庫分表 196
8.3.7 層層過濾 198
8.4 常見性能問題分析總結 199
8.5 本章總結 203
第9章 電商網(wǎng)站的秒殺系統(tǒng)性能測試與性能分析案例 205
9.1 性能需求分析 205
9.2 制訂性能測試計劃 209
9.3 編寫性能測試方案 211
9.4 編寫性能測試案例 214
9.5 搭建性能測試環(huán)境 216
9.6 構造性能測試數(shù)據(jù) 219
9.7 編寫性能測試腳本 223
9.7.1 性能測試涉及的3個接口 223
9.7.2 單場景-商品查詢性能測試腳本的編寫 224
9.7.3 混合場景-商品查詢-訂單提交性能測試腳本的編寫 233
9.8 執(zhí)行性能測試 235
9.8.1 單場景-商品查詢性能壓測 235
9.8.2 混合場景-商品查詢-訂單提交性能壓測 246
9.9 完成性能測試報告 255
9.10 本章總結 259
第10章 JMeter性能測試的實踐 260
10.1 確定要編寫腳本的關鍵業(yè)務場景 260
10.2 設計真實的用戶思考時間 261
10.3 JMeter編寫性能測試腳本的注意事項 263
10.4 JMeter執(zhí)行性能測試時的注意事項 265
10.4.1 JMeter運行內存設置 265
10.4.2 操作系統(tǒng)參數(shù)的設置 267
10.5 性能測試時,通常需要做哪些監(jiān)控 270
10.6 本章總結 272
第11章 大模型輔助性能測試 273
11.1 人工智能的發(fā)展 273
11.2 大模型輔助性能測試 275
11.2.1 大模型輔助性能測試腳本的編寫 275
11.2.2 大模型輔助性能測試數(shù)據(jù)的構造 277
11.2.3 大模型輔助性能瓶頸問題的分析 279
11.3 本章總結 281
附錄 JMeter屬性配置 282