內容簡介
《零成本實現Web性能測試——基於Apache JMeter和Gatling》從目前主流的開源性能測試工具入手,由淺入深、全面、細緻地闡述了如何使用開源測試工具Apache JMeter和Gatling來完成Web性能測試,便於讀者輕鬆掌握WEB性能測試的原理、方法和實際操作。《零成本實現Web性能測試——基於Apache JMeter和Gatling》不是一本深奧的測試理論書籍,而是一本測試實戰類的書籍。作者試圖在《零成本實現Web性能測試——基於Apache JMeter和Gatling》中向讀者演示,如何在實際工作中輕鬆完成各種類型的性能測試。
編輯推薦
針對性強,所有示例源於實際開發
實例講解,以大大小小的案例對應每一個知識點
代碼豐富,數千行實戰代碼,培養超強動手能力
案例實戰,最後給出3個完整的大型系統
內容提要
《零成本實現Web性能測試——基於Apache JMeter和Gatling》從目前主流的開源性能測試工具入手,由淺入深、全面、細緻地闡述了如何使用開源測試工具Apache JMeter和Gatling來完成Web性能測試,便於讀者輕鬆掌握WEB性能測試的原理、方法和實際操作。《零成本實現Web性能測試——基於Apache JMeter和Gatling》不是一本深奧的測試理論書籍,而是一本測試實戰類的書籍。作者試圖在《零成本實現Web性能測試——基於Apache JMeter和Gatling》中向讀者演示,如何在實際工作中輕鬆完成各種類型的性能測試。
目錄
第1章 性能測試基礎 1
1.1 初識性能測試 1
1.1.1 性能測試是什麼 1
1.1.2 性能測試的目的 2
1.1.3 性能測試的常見分類 2
1.1.4 性能測試的常見觀察指標 3
1.1.5 性能測試的基本流程 3
1.2 開源Web性能測試 8
1.2.1 Web性能測試的重要性 8
1.2.2 開源性能測試 8
1.2.3 開源性能測試的優勢 9
1.3 本章小結 9
第2章 JMeter基礎知識 10
2.1 JMeter簡介 10
2.1.1 JMeter主要特點 11
2.1.2 JMeter常用術語 12
2.1.3 JMeter測試結果欄位的意義 12
2.2 JMeter工作原理 13
2.3 JMeter的安裝 13
2.3.1 JMeter安裝配置要求 13
2.3.2 JMeter安裝 13
2.4 如何運行JMeter 14
2.5 配置JMeter 20
2.6 JMeter與LoadRunner優缺點對比 21
2.7 本章小結 21
第3章 Web性能測試腳本錄製與開發 22
3.1 JMeter GUI基本操作 22
3.2 JMeter常用測試元件 25
3.3 JMeter腳本開發基礎 32
3.3.1 JMeter執行順序規則 32
3.3.2 作用域規則 33
3.3.3 JMeter屬性和變數 34
3.3.4 使用變數參數化測試 35
3.3.4 創建Web測試計畫 35
3.5 錄製Web測試腳本 41
3.5.1 使用代理錄製Web性能測試腳本 41
3.5.2 使用Badboy錄製Web性能測試腳本 46
3.6 創建高級Web測試計畫 51
3.7 本章小結 52
第4章 資料庫性能測試腳本開發 53
4.1 創建資料庫測試計畫 53
4.2 九步輕鬆搞定Oracle資料庫性能測試 58
4.3 本章小結 63
第5章 FTP性能測試腳本開發 64
5.1 FTP是什麼 64
5.2 創建FTP測試計畫 68
5.3 本章小結 72
第6章 LDAP性能測試腳本開發 73
6.1 LDAP是什麼 73
6.2 創建LDAP測試計畫 84
6.3 LDAP常見操作指南 89
6.4 創建擴展LDAP測試計畫 91
6.5 本章小結 100
第7章 Web Service性能測試腳本開發 101
7.1 Web Service是什麼 101
7.1.1 技術和規則 102
7.1.2 目標 102
7.2 創建Web Service測試計畫 105
7.3 本章小結 108
第8章 JMS性能測試腳本開發 109
8.1 JMS是什麼 109
8.1.1 定義 109
8.1.2 簡介 109
8.1.3 歷史 110
8.1.4 體系架構 110
8.1.5 JMS模型 110
8.1.6 傳遞訊息方式 111
8.1.7 JMS應用程式接口 112
8.1.8 JMS提供者實現 113
8.2 創建JMS點對點測試計畫 113
8.3 創建JMS Topic測試計畫 116
8.4 本章小結 120
第9章 伺服器監控測試腳本開發 121
9.1 創建監控測試計畫 121
9.2 本章小結 125
第10章 詳解JMeter測試元件 126
10.1 詳解JMeter監聽器(Listeners) 126
10.2 詳解JMeter邏輯控制器 135
10.3 詳解JMeter配置元件 151
10.4 詳解JMeter斷言 175
10.5 詳解JMeter定時器 188
10.6 詳解JMeter前置處理器 195
10.7 詳解JMeter後置處理器 205
10.8 詳解JMeter採樣器 217
10.9 詳解JMeter其他測試元件 268
10.10 本章小結 286
第11章 JMeter進階知識 287
11.1 詳解JMeter函式和變數 287
11.2 詳解JMeter正則表達式 310
11.3 詳解JMeter遠程測試 314
11.4 詳解JMeter最佳實踐經驗 319
11.5 一些小技巧 324
11.6 本章小結 326
第12章 性能測試結果分析 327
12.1 如何分析性能測試結果 327
12.2 如何藉助監聽器發現性能缺陷 330
12.2.1 監聽器——性能測試分析的基石 330
12.2.2 巧用監聽器——識別性能缺陷 354
12.3 藉助Ant實現批量測試和報表生成 361
12.4 本章小結 363
第13章 JMeter性能測試實戰——電話銷售系統 364
13.1 測試背景和測試目標 364
13.2 分析確定性能測試指標 364
13.4 錄製創建性能測試腳本 366
13.5 運行性能測試腳本 369
13.6 分析性能測試結果 371
13.7 上報性能測試缺陷 374
13.8 本章小結 375
第14章 Gatling基礎知識 376
14.1 Gatling與JMeter優缺點對比 378
14.2 Gatling快速上手 379
14.3 Gatling進階指南 386
14.4 本章小結 392
第15章 Gatling詳解 393
15.1 Gatling概念 393
15.2 Gatling目錄結構 395
15.3 Gatling安裝細節與如何適配作業系統 396
15.4 Gatling配置 397
15.5 模擬器結構 399
15.6 模擬器初始化 401
15.7 場景 403
15.8 斷言 409
15.9 報告 411
15.10 本章小結 416
第16章 Gatling會話 417
16.1 Session API 417
16.2 EL 和表達式 419
16.3 填充器 420
16.4 驗證 424
16.5 本章小結 426
第17章 Gatling HTTP協定 427
17.1 HTTP協定 427
17.2 HTTP請求 433
17.3 HTTP頭 435
17.4 HTTP 檢查點 442
17.5 SSL 447
17.6 HTTP助手 448
17.7 HTTP錄製器 449
17.8 WebSocket 454
17.9 本章小結 458
第18章 Gatling JMS 459
18.1 JMS 協定 459
18.2 本章小結 461
第19章 Gatling擴展 462
19.1 Graphite 462
19.2 SBT外掛程式 465
19.3 Maven外掛程式 465
19.4 Jenkins外掛程式 466
19.5 VTD XML 466
19.6 第三方外掛程式 466
19.7 性能擴展 467
19.8 參數傳遞 467
19.9 處理JSF 467
19.10 本章小結 469
第20章 Gatling性能測試實戰——搜尋引擎 470
20.1 測試目標 470
20.2 構建Gatling場景 471
20.3 運行Gatling場景,分析結果 477
20.4 本章小結 479
作者簡介
溫素劍,畢業於電子科技大學電子信息工程專業,有多年的金融、電信行業軟體開發和測試經驗,目前在中國平安擔任軟體測試經理。
前言
我曾經有幸為國內最大的電信設備供應商工作過一段時間,期間聽一些資深老員工講過一個故事。這個故事大概可以被當作笑話來聽,不過笑笑之後卻總也忘不掉。話說20世紀90年代初的某一天,國內第一台自主研發的大型固話交換機,終於千呼萬喚地“閃亮”登場了。於是乎,這家公司馬上向用戶大力推銷這款設備,但是用戶提出了一個很實際的問題徹底難住了這家公司。問題很簡單,那就是需要一份性能測試報告來證明這台設備真能支持宣稱的話務容量。那時候還沒有成熟的電信領域性能測試工具,該怎么辦呢?活人豈能讓尿憋死,幸好有聰明的領導想出了一個中國式的解決辦法。
某天下午,全公司的員工都放下了手頭的工作,每人懷抱一部老式電話機(還要靠轉盤來撥號),等領導倒數“三、二、一”後集體打電話。據說當時人數不夠,達不到用戶要求的通話量,甚至出現了一個人操作兩部電話機的情況。我沒能一睹當時的盛況,一直深感遺憾。
幸好科學技術發展到今天,已經有了多款成熟的性能測試工具,否則測試人員一定會發瘋。試想當前的電信交換機話務容量早已翻了不知多少倍,如果還要靠人海戰術去測試,即使全公司的員工雙手雙腳去操作電話機,也肯定是忙不過來的。測試人員應該為測試技術的飛速發展而感到歡心鼓舞。那么現在是否就可以高枕無憂了?答案是否定的。當前測試人員面臨的問題,不再是有沒有性能測試工具,而是有沒有合適的性能測試工具。
怎么界定“合適”一詞?我想至少可以包含如下幾個方面:
技術先進,功能強大。
支持多種測試類型(協定)。
易學易用。
擁有良好的可擴展性。
擁有良好的可移植性(跨平台)。
合理的價格。
當前性能測試工具很多,但要同時滿足以上數個條件的卻很少。在Web性能測試領域,目前有兩種工具被廣泛使用,一種是LoadRunner,另一種就是JMeter。不過LoadRunner並不是一款“合適”的工具,在此並不是否認LoadRunner是一款優秀的性能測試工具,它唯一的缺點就是過於昂貴(至於LoadRunner Licence及其支持服務的具體價格,感興趣的朋友可以向HP公司了解,相信其價格會將中國90%以上的軟體公司擋在門外)。JMeter具備了LoadRunner 95%以上的功能,但其價格無限接近於零,可謂性價比極高。當然相對於商業工具LoadRunner,JMeter也有其自身的缺點。它最大的缺點就是沒有專業的售後支持隊伍,不過想想商業工具貴得令人咋舌的維護支持費用,也就能夠釋懷了。