內容簡介
很多書籍描述性能測試知識簡單、死板,會使大部分讀者感到枯燥、乏味。其實性能測試的學習是一個很快樂的過程,其中充滿了挑戰、驚險、失望與希望,可以說是痛並快樂著。為了最大限度地提高閱讀趣味性,強化出具體的實戰測試內容(包括如何發現並解決性能問題等),更好地理解學習性能測試,本書描述了一個剛步入性能測試領域的小兵“小白”在性能測試工作中的學習、成長曆程,讓讀者在充實而愜意、嚴謹又不失快慰的氛圍中掌握性能測試的全部流程以及性能調優方法與技巧!(小兵成長經歷純屬虛構,如有雷同,純屬巧合。)
很多讀者之所以會步入性能測試領域,也是因為職業發展到了一個瓶頸期,或者是對職業發展進入了一個迷茫的狀態,而市面上缺少這種類型的指導書籍。本書最後以真實的人物經歷以及職業發展兩個方面來幫助讀者解答疑問,在黑暗中點亮一盞燈。
本書並不是單純地講解LoadRunner工具,它只是書中的一部分而已。另外,寫書不是為了說明自己有多牛,而是知識經驗的總結、梳理與分享。不論之前大家是否了解性能,請耐心讀完全書,你一定會有非常大的收穫,不僅僅是技術上的。我們也相信只有更多的分享、交流才能創造更大的價值,才能為測試界的進步盡一點綿薄之力。
作者介紹
趙強(網名:小強)
曾在新浪、聚美優品等知名網際網路公司從事測試、產品、管理方面的工作,歷任測試開發、產品經理、高級測試經理等。精通性能測試、自動化測試,對項目管理、測試管理、團隊建設有深刻認識,對整個測試行業也有自己獨到的見解。曾從零組建過多個測試團隊並主導完成過多個大型項目的測試管理工作並主導研發基於Webdriver的自動化測試框架、接口測試框架以及前端性能測試框架等。經常活躍於51cto等社區,出過多部軟體測試系列視頻,被多家機構、大學院校作為視頻教材,是網際網路教育視頻的先驅者。
鄒偉偉(網名:安大叔)
曾供職於百度、搜狐、搜狗等一線網際網路企業,擁有8 年性能測試以及測試管理工作,先後擔任軟體開發工程師、資深測試工程師、測試部經理、測試總監,積累了豐富的性能測試以及測試管理方面的經驗,曾組建多個測試團隊和負責多個大型項目的測試管理工作,並多次參加並負責完成用戶量在億以上級別項目的性能測試,比如百度搜尋、搜狗輸入法等。此外,還精通Java語言、oracle資料庫、Linux等相關知識,對安全測試也有一定的研究。BestTest講師,長期舉辦性能測試系列公開課,“跟安大叔學性能測試”系列公開課受到很多同學的認可和關注!
任健勇(網名:風落)
曾供職於多家網際網路公司及大型外企,多年安全測試以及測試管理工作經驗,曾擔任開發工程師、自動化測試工程師、安全測試工程師和測試主管等職位,進行過多個大型項目的Web安全測試,帶領測試部門從零開始建立安全性測試規範,針對Web安全測試搭建了基於開源工具的安全測試架構,並套用於SaaS平台等雲計算項目;曾獨立開發基於Webdriver的自動化測試平台 ,該平台可使無代碼基礎的測試人員進行自動化腳本的編寫與執行。此外,對滲透測試和敏捷測試也有一定的研究。Besttest安全測試講師,活躍於51CTO(51CTO學院講師)和ITeye等社區。
業界熱評
性能測試中,工具不是萬能的,但沒有工具是萬萬不能的。這是一本面向性能測試初學者的有趣的書,跟著書中的主角“小白”,在性能測試的世界中遊覽,相信可以讓你輕鬆地建立對性能測試的理解,了解如何在實際的項目中開展性能測試。
——豆瓣工程副總裁 段念
本書凝聚了作者多年軟體測試及培訓經驗,介紹了LoadRunner、Apache ab和JMeter等一系列軟體測試工具的使用方法和套用案例,結合多個.NET和Java項目,從多種協定腳本開發、場景設計、資源監控、測試與執行、測試結果分析、性能調優和報告輸出等測試關鍵過程進行詳細、深入的講解,講述了如何與完成性能測試、性能調優,以及最佳流程實戰,能全面提高從業人員性能測試、安全測試的能力。同時,結合軟體測試的現狀和發展,以及專業測試職業人員的奮鬥歷程,全方位指導測試人員的選擇和把握關鍵節點,全面提升職業發展的綜合能。
——《軟體性能測試與LoadRunner實戰》作者 於涌
本書是作者在國內大型網際網路公司多年一線工作經驗的結晶,是性能測試領域最新、最全面的知識整合。本書從性能測試、流程、監控、調優等方面全方位剖析性能測試的各項知識,不管是小白,還是經驗豐富的工程師,都能從中吸取能量。本書絕對是學習性能測試相關知識的不二選擇。
——百度高級測試開發工程師 馬征
性能測試在軟體測試中尤為重要,是對測試人員理論基礎、工具套用、編碼能力、網路配置、業務理解、問題分析等綜合能力的集中考驗。本書由淺入深介紹了LoadRunner和JMeter的工作原理、功能運用,結合案例進行實戰性分析和講解,值得軟體測試行業人員閱讀和學習。
——中經訊科(北京)網路科技有限公司技術總監 範本銀
目錄
《LoadRunner性能測試巧匠訓練營》
前言
第一篇 初入職場
第1章 與性能測試的親密觸碰 2
1.1 性能測試的作用以及重要性 2
1.1.1 由性能引發的嚴重問題 2
1.1.2 性能測試的重要性以及必要性 3
1.1.3 什麼系統需要做性能測試 4
1.1.4 性能測試的目的 4
1.2 生活中的性能測試 5
1.3 性能術語與指標詳解 5
1.4 性能測試分類詳解 9
1.5 性能測試模型分析 11
1.5.1 曲線拐點模型分析 12
1.5.2 捷運模型分析 13
1.6 本章小結 14
第2章 LoadRunner VuGen實戰 15
2.1 LoadRunner快速安裝 15
2.2 LoadRunner組成與示例程式 16
2.3 深入理解協定選擇 18
2.4 腳本編寫實戰 19
2.4.1 腳本錄製 20
2.4.2 “利器”——函式手冊 22
2.4.3 腳本最佳化 23
2.4.4 腳本回放 23
2.5 腳本增強實戰 24
2.5.1 檢查點實戰 24
2.5.2 參數化實戰 26
2.5.3 關聯實戰 34
2.5.4 邏輯判斷增強實戰 38
2.5.5 事務實戰 40
2.6 腳本調試實戰 42
2.6.1 message函式詳解 42
2.6.2 斷點的套用 42
2.6.3 日誌的查看分析 43
2.6.4 自帶瀏覽器的使用 44
2.7 VuGen使用技巧 44
2.7.1 協定嗅探 45
2.7.2 通用設定 45
2.7.3 錄製設定 46
2.7.4 Run-time Settings設定 48
2.8 本章小結 52
第3章 LoadRunner Controller實戰 53
3.1 Controller介紹 53
3.2 場景設計實戰 53
3.2.1 集合點實戰 55
3.2.2 IP欺騙實戰 56
3.2.3 添加Windows和Linux壓力機實戰 59
3.2.4 場景設計實戰 61
3.3 場景監控實戰 62
3.3.1 監控信息概覽與自定義腳本 62
3.3.2 Windows和Linux的監控以及指標講解 65
3.4 本章小結 69
第4章 LoadRunner Analysis實戰 70
4.1 Analysis介紹 70
4.2 性能數據圖表分析實戰 72
4.2.1 概要圖分析 72
4.2.2 虛擬用戶圖分析 73
4.2.3 錯誤圖分析 75
4.2.4 事務圖分析 77
4.2.5 Web資源圖分析 80
4.2.6 網頁細分圖分析 85
4.2.7 系統資源圖分析 88
4.3 圖表的合併與關聯 89
4.4 數據圖表的設定 90
4.5 性能測試報告實戰 92
4.5.1 性能測試報告編寫技巧 92
4.5.2 性能測試分析思路 93
4.5.3 性能測試報告編寫 94
4.6 本章小結 96
第5章 開源性能測試工具Apache JMeter快速入門 97
5.1 Apache JMeter概述 97
5.2 JMeter的安裝與使用 99
5.3 JMeter快速入門之HTTP腳本實戰 101
5.3.1 測試計畫 101
5.3.2 Vuser及場景設計 102
5.3.3 JMeter之腳本錄製 103
5.3.4 JMeter參數化 107
5.3.5 JMeter關聯 111
5.3.6 JMeter檢查點 114
5.3.7 思考時間和集合點 115
5.3.8 運行結果分析 117
5.3.9 JMeter之分散式測試 120
5.4 JMeter JDBC腳本實戰 121
5.5 JMeter SOAP腳本實戰 124
5.6 JMeter使用注意事項 127
5.7 本章小結 128
第6章 開源性能測試工具Apache ab快速入門 129
6.1 Apache ab安裝使用 129
6.2 Apache ab快速入門 129
6.3 Apache ab 實戰 130
6.4 Apache ab 總結注意事項 132
6.5 本章小結 133
第7章 最佳腳本開發實戰 134
7.1 接口測試腳本開發實戰 134
7.1.1 GET接口實戰 134
7.1.2 POST接口實戰 135
7.1.3 使用LoadRunner完成接口功能自動化測試 136
7.2 常用協定腳本開發實戰 138
7.2.1 Web Service協定腳本開發實戰 139
7.2.2 ODBC協定腳本開發實戰 141
7.2.3 Java協定腳本開發實戰 142
7.2.4 Windows Sockets協定腳本開發實戰 143
7.2.5 移動套用協定腳本開發實戰 145
7.2.6 手工編寫FTP腳本 147
7.3 使用LoadRunner打點監控Tomcat 148
7.4 本章小結 150
第二篇 新硎初試
第8章 .NET項目性能測試全程實戰 152
8.1 項目背景與架構分析 153
8.2 測試環境需求確認與搭建 155
8.2.1 測試環境需求確認 155
8.2.2 測試環境搭建 155
8.3 性能測試工具選型 158
8.4 業務建模與用例設計 159
8.4.1 業務場景分析 159
8.4.2 性能需求分析與提取 161
8.4.3 性能測試用例設計 162
8.5 腳本開發與最佳化 164
8.6 執行測試 168
8.6.1 場景設定 168
8.6.2 監控設定 171
8.6.3 運行場景與實時監控 173
8.7 性能測試分析與調優建議 177
8.7.1 性能結果分析 178
8.7.2 性能調優建議 184
8.8 本章小結 190
第三篇 再露鋒芒
第9章 Java項目性能測試全程實戰 192
9.1 項目目標分析 192
9.1.1 系統架構 193
9.1.2 業務流程 194
9.2 性能測試需求獲取以及確定 197
9.2.1 性能測試環境需求描述 197
9.2.2 性能測試環境需求獲取 197
9.2.3 性能測試需求確定 202
9.3 性能測試場景獲取以及用例設計 204
9.3.1 性能測試場景選取與制定 205
9.3.2 性能測試數據確定 207
9.3.3 性能測試用例設計 208
9.4 性能測試環境準備與搭建 216
9.4.1 性能測試環境 216
9.4.2 性能測試環境的重要性 217
9.4.3 確定實際運行環境 218
9.4.4 申請並搭建仿真性能測試環境 219
9.4.5 Mock Server的準備 220
9.5 作業系統性能監控分析工具的選擇與使用 222
9.5.1 Windows性能監控工具選擇以及監控詳解 222
9.5.2 Linux監控工具選擇以及監控詳解 234
9.6 資料庫系統性能監控工具選擇以及使用 254
9.6.1 Oracle監控分析 254
9.6.2 MySQL監控分析 264
9.7 中間件性能監控工具以及使用 267
9.8 JVM性能監控工具選擇以及使用 268
9.8.1 JVM記憶體結構以及記憶體管理基礎知識 268
9.8.2 JVM性能監控分析調優 273
9.9 性能測試數據準備與製作 297
9.10 性能測試腳本開發與最佳化 300
9.11 性能測試執行與監控 308
9.11.1 場景設定 308
9.11.2 監控設定 310
9.11.3 項目性能問題的發現、定位與分析 310
9.12 性能回歸測試與結果 321
9.12.1 回歸測試後的性能測試結果 322
9.12.2 資料庫性能最佳化建議 323
9.13 本章小結 326
第10章 安全測試 327
10.1 偶遇Web安全測試 327
10.1.1 Web安全測試定義 328
10.1.2 Web安全測試流程 329
10.2 Burp Suite使用淺析 330
10.3 安全測試原理與實戰 337
10.3.1 繞過客戶端漏洞 338
10.3.2 攻擊驗證機制 341
10.3.3 攻擊會話管理 348
10.3.4 SQL注入攻擊 353
10.3.5 XSS攻擊 355
10.3.6 CSRF攻擊 358
10.4 本章小結 360
第四篇 反躬自省
第11章 測試工程師轉型實錄 362
11.1 從非IT業到性能測試工程師的華麗轉型 362
11.2 好媽媽轉型性能測試,年齡不是阻礙 363
11.3 從功能測試到性能測試的完美轉型 364
11.4 本章小結 365
第12章 測試工程師職業發展分析 366
12.1 軟體測試現狀與發展前景 366
12.2 如何成為測試工程師 367
12.3 測試工程師的實際價值 368
12.4 測試工程師的危機 370
12.5 測試工程師的職業發展方向 371
12.6 本章小結 372
附錄A LoadRunner常見問題以及解決方法 373
附錄B 常用性能測試文檔模板 376
附錄C 正則表達式全集 377
附錄D MySQL資料庫事務隔離級別 380
附錄E Perfmon計數器參數說明 382
附錄F 學習資料網址摘錄 387
前言
國內軟體測試行業人才缺口已突破20萬,並隨著需求的不斷攀升而挺向30萬大關。據悉,國外成熟軟體企業,一個軟體開發工程師對應1~2個軟體測試工程師,而國內軟體企業,平均8個軟體開發工程師才對應1個軟體測試工程師,比例嚴重失衡。國內測試行業在這一點上與國外的差距比較大。實際上,為了保證軟體質量,從項目開始測試人員就要介入,要了解客戶需求,參與項目評審,把握測試要點。如果測試人員數量少,軟體質量是得不到保證的。測試行業的確需要大量人才,尤其是在性能測試方面有豐富測試經驗的人才更加稀缺。
另一方面,軟體產業是國家鼓勵發展的朝陽產業,軟體產業要發展,提高軟體質量勢在必行,這樣就產生了對軟體測試工程師的大量需求。
由此可見,測試行業需求量大,前景好,但也面臨激烈的競爭。所以不斷提升自身技能,並明確職業發展方向對所有人來說就顯得非常重要了,這樣才能抓住一切機會。
本書特色
從技術層面來講,性能測試的複雜性是不言而喻的,性能測試一直處於一個只能發現問題而無法定位並給出解決方案的狀態,本書正是為了改變現狀而誕生的。
從內容層面來講,很少有此類以全程項目實戰和調優為主的性能測試類書籍,實戰類型書籍向來是比較受歡迎的書籍,加之內容又以現實的故事為穿插,真實而不枯燥,可讀性極強。
從讀者層面來講,很多讀者以及大部分學員都沒法把知識、方法和技巧套用到實際項目中,存在嚴重的“紙上談兵”現象,本書將有望解決此難題。
從測試職業發展層面來講,技術必然是重要的,但是職業的發展規劃也不容忽視,能避免少走彎路,很多讀者都對測試的發展有疑問,本書中主人公小白的螺旋上升式發展和眾多從業者實錄會對讀者有所啟迪。
讀者對象
不論你是否有性能測試基礎,也不論你是否了解性能測試,抑或是你已經是性能測試老手,本書都會對你有所幫助。包括但不限於以下讀者:
測試工程師 開發工程師 運維工程師 測試經理 技術主管. 對性能測試感興趣的讀者
如何閱讀本書
本書分為四大部分:
第一篇(第1~7章)為“初入職場”篇,全面、細緻地講解了剛剛步入性能測試領域的小白是怎么一步步學習性能測試的,並以實戰方式講解所有知識點。
第1章本章用實際例子深入淺出地來講解性能測試的基本知識與模型,帶領讀者快速入門,擺脫枯燥。
第2章本章對LoadRunner的腳本開發進行詳細實戰講解,並對重要知識點進行深入分析總結。
第3章本章以LoadRunner的Controller為引子,深入講解實戰中的場景設計、資源監控等重點知識。
第4章本章以真實案例為藍本,通過LoadRunner的Analysis進行深入分析,並得出性能測試報告。
第5章介紹了開源性能測試工具JMeter的基本使用,並結合HTTP、JDBC、SAOP的實際例子演示了JMeter參數化、關聯、檢查點的基本使用方法。
第6章本章簡單介紹了開源性能測試工具Apache ab的基本使用方法,方便大家開闊視野。
第7章本章主要對常用的腳本協定開發進行了全面、深入的實戰講解,以具體的例子演示實際套用。
第二篇(第8章)為“新硎初試”篇,重點以實戰方式講解在.NET項目中如何進行性能測試以及性能調優,並把所有知識點融合到項目中,使讀者更好地理解並套用,擺脫無趣的理論。
第8章本章以.NET項目的案例為基礎,全面講解了完整的性能測試項目是如何進行的,把以往的知識點再次融入到實戰中。
第三篇(第9章、第10章)為“再露鋒芒”篇,重點以實戰方式講解Java項目的性能測試,通過真實的、完整的項目使讀者身臨其境地體會性能測試、性能調優、安全測試以及最佳流程實踐等。
第9章本章用一個實際的項目完整地介紹了真正的前沿網際網路公司項目實戰是怎么做的,用真實例子帶領大家了解真正前沿的性能測試思想。
第10章本章全面講解了安全測試的原理,並結合常用的安全測試工具進行了實戰演示。
第四篇(第11章、第12章)為“反躬自省”篇,以真實的在職人物的學習歷程、心得以及方法做交流實錄,再次以事實指導讀者,並針對現狀來分析測試人員的職業發展,指導讀者的選擇與提升路線。
第11章本章講述了真實人物在面對轉型、提升過程中的奮鬥歷程,以最淳樸的思想感動你我。
第12章本章從職業發展角度全面剖析測試行業的點點滴滴,為所有測試人員解惑並給出指導建議。
其中第二、三篇以實戰項目來講解性能測試的套用,如果你是一名有一定基礎的性能測試工程師,那么你可以直接閱讀這部分內容。但是如果你是一名初學者,請一定從第一部分開始學習。如果你對自己的工作有迷茫之處或想得到職業發展上的指導,可看第四篇。本書為讀者提供了完整的流程以及細緻的解決方案,也能看到小白的成長與不足,這也許正是你的真實寫照。
附錄總結了LoadRunner常見的問題以及解決方法,讓你不必再四處求助。同時也為對編寫報告文檔感到很頭疼的讀者提供了各類參考模板。