零成本實現Web性能測試——基于Apache JMeter和Gatling ( 簡體 字) |
作者:溫素劍 | 類別:1. -> 程式設計 -> 綜合 |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 43828 詢問書籍請說出此書號!【缺書】 NT售價: 395 元 |
出版日:3/1/2016 |
頁數:492 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121282874 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:我曾經有幸為國內最大的電信設備供應商工作過一段時間,期間聽一些資深老員工講過一個故事。這個故事大概可以被當作笑話來聽,不過笑笑之后卻總也忘不掉。話說20世紀90年代初的某一天,國內第一臺自主研發的大型固話交換機,終于千呼萬喚地“閃亮”登場了。于是乎,這家公司馬上向用戶大力推銷這款設備,但是用戶提出了一個很實際的問題徹底難住了這家公司。問題很簡單,那就是需要一份性能測試報告來證明這臺設備真能支持宣稱的話務容量。那時候還沒有成熟的電信領域性能測試工具,該怎么辦呢?活人豈能讓尿憋死,幸好有聰明的領導想出了一個中國式的解決辦法。 某天下午,全公司的員工都放下了手頭的工作,每人懷抱一部老式電話機(還要靠轉盤來撥號),等領導倒數“三、二、一”后集體打電話。據說當時人數不夠,達不到用戶要求的通話量,甚至出現了一個人操作兩部電話機的情況。我沒能一睹當時的盛況,一直深感遺憾。 幸好科學技術發展到今天,已經有了多款成熟的性能測試工具,否則測試人員一定會發瘋。試想當前的電信交換機話務容量早已翻了不知多少倍,如果還要靠人海戰術去測試,即使全公司的員工雙手雙腳去操作電話機,也肯定是忙不過來的。測試人員應該為測試技術的飛速發展而感到歡心鼓舞。那么現在是否就可以高枕無憂了?答案是否定的。當前測試人員面臨的問題,不再是有沒有性能測試工具,而是有沒有合適的性能測試工具。 怎么界定“合適”一詞?我想至少可以包含如下幾個方面: ? 技術先進,功能強大。 ? 支持多種測試類型(協議)。 ? 易學易用。 ? 擁有良好的可擴展性。 ? 擁有良好的可移植性(跨平臺)。 ? 合理的價格。 當前性能測試工具很多,但要同時滿足以上數個條件的卻很少。在Web性能測試領域,目前有兩種工具被廣泛使用,一種是LoadRunner,另一種就是JMeter。不過LoadRunner并不是一款“合適”的工具,在此并不是否認LoadRunner是一款優秀的性能測試工具,它唯一的缺點就是過于昂貴(至于LoadRunner Licence及其支持服務的具體價格,感興趣的朋友可以向HP公司了解,相信其價格會將中國90%以上的軟件公司擋在門外)。JMeter具備了LoadRunner 95%以上的功能,但其價格無限接近于零,可謂性價比極高。當然相對于商業工具LoadRunner,JMeter也有其自身的缺點。它最大的缺點就是沒有專業的售后支持隊伍,不過想想商業工具貴得令人咋舌的維護支持費用,也就能夠釋懷了。 寫作背景 我目前在一家大型保險公司IT測試部門工作,帶領一個測試團隊負責測試公司的電話銷售系統。這個系統非常龐大,由多個子系統構成,同時它又與很多公司內部/外部系統(例如銀聯、銀行的交易系統)發生交互,目前公司有數萬員工依賴它來完成每日的銷售任務。如此復雜的一個系統,偏偏又擁有數量眾多的用戶,讀者朋友可以試想一下,只要此系統稍有異常,業務部門的投訴絕對會讓IT部門“吃不了兜著走”。 面對頻繁的版本發布,嚴格的系統性能測試是不可或缺的。測試部門也花大價錢購買了商業工具LoadRunner,但是實際工作中發現測試人員還是受到頗多限制。其一,測試資源存在瓶頸,公司購買的Licence是有限的,無法完全滿足測試人員的需求,經常出現人等機器的情況,甚至影響到了軟件版本的及時發布;其二,公司購買的并發數許可也是有限的,如果需要模擬更大的系統壓力,那么對不起,公司還得再掏錢;其三,公司購買的協議類型是有限的,如果需要使用其他未購置的協議類型,對不起,公司依然需要再掏錢(測試人員很難用臨時的測試需求,去說服領導撥上一大筆經費)。 在嘗試說服領導增加預算失敗后,只能轉而尋求其他解決辦法,那就是開源性能測試工具JMeter。經過大規模的試用后,發現JMeter完全能夠滿足測試人員的需求。 “云計算”絕對是當前最熱的IT詞匯之一。“云”聽起來很虛幻,其實就是瘦客戶端加網格計算。今后客戶端不再會有大量的計算任務,計算和存儲都被放在云上。在作者看來,今后的客戶端應該就是一個瀏覽器,用戶的所有操作都是通過瀏覽器來實現的。Google發布的操作系統Chrome OS,就是基于這一理念設計的。B/S和C/S架構的軟件系統,應該會慢慢演進到Browser/Cloud模式。如此看來,在云計算時代,Web性能測試依然很重要,而且會越來越重要。因此,本人萌生了寫作一本關于Web性能測試的書籍的想法。 本書內容 本書著重介紹如何使用JMeter和Gatling開源性能測試工具,來構建Web性能測試體系。 本書不是一本講述深奧測試理論的教科書,而是一本實戰類的書籍。作者想要達到的目標就是——讀者朋友們在認真讀完本書后,馬上就能在生產實踐中用上所學內容。本書首先介紹基礎的性能測試理論,接著詳細介紹如何使用JMeter來完成各種類型的性能測試,最重要的則是性能測試實戰章節。實戰章節中作者以測試某大型保險公司電話銷售系統為例,手把手教會讀者如何用JMeter來完成一個實際的性能測試任務。本書第1章介紹性能測試理論,第2∼12章詳細介紹JMeter工具在各種場景下的使用方法,以及如何分析性能測試結果,第13章是性能測試實戰。從第14章開始,將會介紹一種新穎的性能測試工具Gatling,作為JMeter的一種有益補充。 目標讀者 本書的目標讀者是初級和資深軟件測試工程師,以及有意降低性能測試成本的測試經理。本書也適合應屆畢業生,要想熟練掌握性能測試的方法和技巧,本書也是一塊不錯的敲門磚。 感謝 首先要感謝我的家人,正是由于他們默默的支持,我才能靜下心來寫作。其次還要感謝參與本書編寫的部門同事劉興?、何邱、鄧智、谷明、李?、李坤、袁春梅、唐明娟、李穎、陳建紅、徐雅、曾泗維。
溫素劍 2015年12月3日
目錄
第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 |
內容簡介:本書從目前主流的開源性能測試工具入手,由淺入深、全面、細致地闡述了如何使用開源測試工具Apache JMeter和Gatling來完成Web性能測試,便于讀者輕松掌握WEB性能測試的原理、方法和實際操作。本書不是一本深奧的測試理論書籍,而是一本測試實戰類的書籍。作者試圖在書中向讀者演示,如何在實際工作中輕松完成各種類型的性能測試。 |
目錄:第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 |
序: |