1.性能測試的概念:mysql
經過必定的手段,在多併發狀況下,獲取被測系統的各項性能指標, 驗證被測系統在高併發下的處理能力、響應能力、穩定性等,可否知足預期。定位性能瓶頸,排查性能隱患,保障系統的質量,提高用戶的體驗。linux
2.什麼樣的系統須要作性能測試:web
用戶量大,PV比較高的系統算法
系統核心模塊/接口sql
業務邏輯/算法比較複雜數據庫
促銷/活動推廣計劃apache
技術選型瀏覽器
容量評估tomcat
新項目、新系統網絡
3.性能測試指標
TPS/QPS 每秒處理的事務數 TPS越高,吞吐量越大,正比例關係。 TPS=1s/響應時間*併發數=併發數/響應時間
響應時間 網絡傳輸的總時間+各組件業務處理時間
平均響應時間
TOP響應時間:將全部請求的響應時間從大到小排序,計算指定比例的請求都是小於某個時間。
tp90:90%的請求響應時間臨界值,都小於它。
tp95:95%的請求響應時間臨界值,都小於它。
tp99:99%的請求響應時間臨界值,都小於它。
併發數/虛擬用戶(Vuser):
成功率:
PV(page view)/UV(unique visitor):頁面、接口的訪問量/頁面、接口的每日惟一訪客(用戶日活量)
吞吐量: 網絡中上行和下行的流量綜合,吞吐量表明網絡的流量
總結:在系統達到瓶頸以前,TPS和併發數策劃那個正比關係,和響應時間呈反比關係。
4.性能測試流程
需求調研:項目背景、測試範圍、業務邏輯&數據流向、系統架構、配置信息、測試數據量、外部依賴、系統使用場景,業務比例、平常業務量、預期指標、上線時間
測試計劃:項目描述、業務模型及性能指標、測試環境說明、測試資源、測試方法及場景設計原則(基準測試、單交易負載測試、混合場景測試、高可用性測試、異常場景測試、穩定性測試、其餘特殊場景)、測試進度安排及測試準則
環境搭建:原則--測試機器硬件配置儘可能與線上一致,系統版本與線上一致,測試環境部署線上最小單元模塊,應用、中間件、數據庫配置要與線上一致,其餘特殊配置
數據準備:業務接口---適合數據表關係複雜的,優勢:數據完整性比較好,存儲過程---適合表數量少,簡單,有點:速度快,腳本導入---適合數據邏輯複雜,自由度比較高,注意數據量級:測試數據+基礎數據
測試腳本:選擇工具、協議、參數化、關聯、檢查點、事物判斷
壓測執行:分佈式執行,監控(linux、中間件、數據庫),收集測試結果,數據分析,瓶頸定位
調優迴歸:性能調優、反覆嘗試、迴歸驗證、監控工具、全鏈路排查、日誌分析、模塊隔離
5.經常使用工具
loadrunner---功能強大、重量級、商業軟件收費
jmeter----小巧靈活、輕量級、開源
Ngrinder--平臺級產品、開源
6.入門學習環境搭建(以一個web項目OA系統爲例子練習)
1.安裝VirtualBox,下載winXP虛擬系統快照文件(已裝LR11);
2.啓動VirtualBox,新建32位XP系統虛擬機--選擇已有文件,設置共享文件夾E:\\share--新增固定分配位置;
3.開啓虛擬機,從個人電腦-網絡驅動器-共享文件裏拷貝出jdk、mysql(typical-standard-密碼123456)、navicat、apache-tomcat,而後在32位XP系統安裝好,配置jdk環境變量,向數據庫中導入oa系統sql,講oa項目代碼移動至tomcat下webapps目錄下,修改 OA\WEB-INF\classes\jdbc.properties 文件中的用戶名和密碼,設置爲 mysql 的用戶名和密碼;
4. 雙擊運行 apache-tomcat-7.0.6\bin\startup.bat
5. 在瀏覽器裏打開 http://localhost:8080/TestOA/userAction_loginUI.action
6. 在登陸頁輸入用戶名/密碼:admin/1234,便可登陸成功。
7.LR三大組件
virtual user generator:腳本生成器,錄製編寫腳本
controller:調度壓力機、場景管理、展現性能圖表、監控等
analysis:對測試數據進行分析
8.腳本錄製和回放
新建script---options設置recording:HTML-base script--》advance腳本類型修改成第二項urls only ---advance:utf-8----開始錄製。完成後回放
tools-generation options-display--勾選第一項,可展現瀏覽器運行過程。
9.參數化
隨機數:random number,例如:編輯內容
惟一數:unique number,全局惟一,分block塊兒,例如:user1-user10,長度依次取0-10%,10%-20%......默認設置start:1,block:100,那麼第二個值從101開始取
文件: file.dat 最經常使用,例如:登陸帳號、id之類的
組合 | Sequential | Random | Unique |
each iteration |
結果:分別將15條數據寫入數據表中
功能說明:每迭代一次取一行值,從第一行開始取。當全部的值取完後,再從第一行開始取
如:若是參數化文件中有15條數據,而迭代設置爲16次,那執行結果中,參數化文件第一行的數據有兩條
|
結果:表中寫入15條數據,但可能有重複數據出現
功能說明:每次從參數化文件中隨機選擇一行數據進行賦值
|
結果:分別將15條數據寫入數據表中
功能說明:第一次迭代取參數化文件中的第一條數據,第二次迭代取第二條數據,以此類推。
注:若是設置迭代次數爲16次。結果:在執行第16次迭代時會拋異常,異常日誌可在LoadRunner的回放日誌(replayLog)中看到
|
each occurance |
結果:分別將15條數據寫入數據表中
功能說明:每迭代一次取一行值,從第一行開始取。當全部的值取完後,再從第一行開始取
如:若是參數化文件中有15條數據,而迭代設置爲16次,那執行結果中,參數化文件第一行的數據有兩條
|
結果:表中寫入15條數據,但可能有重複數據出現
功能說明:每次從參數化文件中隨機選擇一行數據進行賦值
|
結果:分別將15條數據寫入數據表中
功能說明:第一次迭代取參數化文件中的第一條數據,第二次迭代取第二條數據,以此類推。
注:若是設置迭代次數爲16次,而參數化文件中只有15條數據,明顯數據不夠。此時能夠設置「when out of values」屬性來判斷當數據不夠時的處理方式
Abort Vuser:中斷虛擬用戶
Countinue in a cylic manage:循環取參數化文件中的值,即:當參數化文件中的值取完後又從參數化文件的第一行開始取值。
Countinue with last value:繼續用最後一條數據
|
once |
結果:表中寫入15條如出一轍的數據。
功能說明:每次迭代都取參數化文件中第一行的數據。
|
結果:表中寫入15條相同數據
功能說明:第一次迭代時隨機從參數化文件中取一行數據,後面每次迭代都用第一次迭代的數據。
|
結果:表中寫入15條相同數據
功能說明:每次都取參數文件中的第一條數據進行賦值
|