jmeter性能測試


一、性能測試問題導入

1.關注於哪些指標

  • 單位時間內的響應速度快不快(1個用戶和多個用戶)——打開速度快不快
  • 單位時間內能夠處理的數量——能夠同時讓多少人訪問(並發量)

2.怎么調優

性能評估匯報:某某app,在1000用戶同時(**並發量**)進行以下操作(**性能場景**):
   1.登錄
   2.查詢
   3.評價

消息成功率:100%
平均響應時間為0.03s(**響應時間**)
CPU使用率:80%,內存使用率:90%,網絡帶寬:50M,磁盤空間:50%(**資源使用率**)

3.性能測試的關鍵點

  • 監控,分析,調優

二、測試對象

1.服務器的接口性能測試(80%):驗證服務器是否滿足需求

  • 模擬器-jemeter,模擬http協議,鏈接到后台服務器(web服務器+數據庫服務器MySQL+Linux操作系統)

2.終端性能測試(web端渲染/APP啟動速度——UI性能):受用戶環境影響,如網絡較好/較差

三、什么是性能測試

1.性能測試也是軟件測試的一種,它的主要方向是測試系統在一定的負荷壓力下,系統的響應時間,吞吐量(TPS),穩定性,系統的可擴展性等性能指標

  • 吞吐量(漏斗,倒東西可以很快流下來)

2.性能測試的基本目的

  • 驗證是否達到用戶的性能指標(逐步加壓,1000人-》2000人,是否會有響應超時等錯誤)
  • 發現軟件中存在的性能瓶頸並優化
  • 測試中得到的負荷和響應時間數據用於驗證——評估系統的能力

四、性能測試重點:關鍵業務領域的性能

  • 測試是在時間、成本、質量之間權衡

五、性能測試一般流程

  • 評估-》加壓-》bug,瓶頸-》分析,調優-》長時間跑(穩定性)

六、性能測試與項目

1.性能測試做的成功與否,與測試方法和測試自身所關聯的項目背景都有關系(並不是所有的項目都需要性能測試)
2.學習性能:測試思維方法、分析方法

七、性能測試關鍵指標

+ 多:並發量
+ 快:延時,響應時間(用戶感知的時間,是端到端的)
+ 好:穩定性(長時間運行)
+ 省:資源使用率

思考時間(think time):指用戶進行操作時每個請求之間的時間間隔,`為了能更加真實的模擬用戶的操作`

1.響應時間:對請求作出響應所需要的時間,是用戶感知軟件性能的主要指標;

  • 對於一個web系統,普遍接受的響應時間標准為2/5/8秒

2.並發用戶數

  • 平均並發用戶數的計算模型:C=nL/T(常用計算模型-可供參考)

    • C-是平均的並發用戶數
    • n-是平均每天訪問用戶數
    • L-是一天內用戶從登錄到退出的平均時間
    • T-是考察時間長度(一天內多長時間有用戶使用系統)
  • 估算並發用戶數量公式:使用系統用戶數量*(5%~20%)

3.吞吐量:指單位時間內系統處理用戶的請求數

  • TPS(吞吐率):每秒事務數
  • 若用戶數增加到某個值后,用戶數增加,吞吐量不變,一般原因是由於網絡堵塞,需要增大帶寬

八、jmeter基礎簡介

1.jmeter性能測試工具簡介

  • 多線程框架——支持多並發操作
  • 用戶對服務器模擬負載(一台機器若負載太大,可做分布式性能測試)
  • 支持web、數據庫、FIP服務器系統的性能測試
  • 開源(源碼公開)、純JAVA,可二次定制化開發

2.jmeter運行環境搭建
1) 下載安裝JDK(若jmeter版本為5.11,JDK版本需安裝大於1.8的)

2)設置環境變量(Java環境是OK的)

3)啟動方式

  • GUI(界面化):windows(jmeter.bat啟動)或Mac(jmeter.sh啟動)系統
  • 非GUI(非界面化,命令行):Linux系統
在jmeter安裝路徑的bin文件夾下創建終端命令窗口,輸入sh jmeter命令打開GUI界面

4)屬性配置:更改jmeter.properties文件

  • language=zh_ch(37行)將應用程序設置為中文簡體

3.jmeter基本操作

  • 獨立運行每個線程組(勾選,線程組有前后邏輯關系;不勾選,線程組同步進行)
  • 調度器(設置執行一段時間)(循環次數勾選永遠)
  • 黃色/紅色的三角標志,操作日志

九、jmeter主要元件

1.配置元件

  • http請求默認值:所有線程組的請求都會使用這個默認值
    • 性能工具:多進程(roadrunner),多線程(jmeter),線程數就代表用戶數
  • http消息頭管理器:添加授權頭的值
  • http cookie管理器:添加后會自動管理cookie,即上個接口響應返回的cookie值可用於下個接口的請求中
  • http cache管理器:緩存,靜態資源不是從服務器獲取而是從靜態中取的
  • 提取返回請求返回結果中的值賦予某個變量用於下一個接口,使用$.token——關聯接口

2.監聽器元件

  • 察看結果樹

    • 分析查看具體某一個請求的詳情(請求頭、請求體、響應頭、響應體)
    • 在做性能測試場景的時候分析錯誤請求的原因——勾選僅錯誤日志按鈕,在高並發狀態下只顯示錯誤日志
  • 聚合報告

    • 匯總統計:請求數、響應時間(平均的,90%,95%)等,單位是ms
    • 錯誤率——越低越好
    • 吞吐量——越高越好
    • 發送/接收——帶寬
  • 用表格查看結果

  • 圖形結果

3.其他常用元件

  • 前置處理器:請求發出去之前執行的控制器(元件),比如加密 md5
  • 后置處理器:請求發出去之后執行的控制器(元件),比如提取數據——關聯接口
  • 定時器
    • 思考時間-固定定時器
    • 同步定時器-集合點(例如九點開始預售)
    • 隨機定時器
    • 吞吐量定時器
  • 斷言(作用域,對某個請求做斷言,把斷言放在請求下)

2.常用端口號

  • 80端口:HTTP協議的默認端口
  • 8080:tomcat默認端口號
  • 8888:重定向端口
  • 443端口:HTTPS協議的默認端口

3.python常用的庫:request,pandas
4.jmeter高級應用(分布式、jenkins等)/監控平台/性能瓶頸分析

十、性能測試過程

1.什么是jmeter腳本

  • 用戶操作被測軟件系統某些場景的動作流程
  • 性能測試:重要場景從1到N
    • 功能測試:1個用戶
    • 性能測試:N個用戶

2.快速開發漂亮的腳本

  • 准確——最基本要求,腳本可以正常運行
  • 快速——借助技術手動快速高效完成腳本開發
  • 漂亮——腳本邏輯、維護性高

3.開發腳本方案(任何腳本開始之前都要先建一個線程組)

  • jmeter自帶代理錄制腳本:配置jmeter和瀏覽器代理服務器,點擊啟動,粗略錄制請求過程(不常用)
  • 文檔+抓包——導出腳本(抓包后導出會話export sessions->all sessions,jmx文件)拖拽到jmeter

4.先使用一個線程組,即一個用戶,使用查看結果數看是否能正確返回,再考慮並發

5.jmeter參數化(將腳本中的某些輸入使用參數來代替,運行時指定參數的取值范圍和規則)流程

  • 找出需要做參數化的數據
  • 准備提供給參數化需要的數據源
  • 把腳本里的變量-》常量

6.jmeter參數化方式

  • CSV文件-需要配置的元件
    • 使用場景:賬號,密碼
  • 函數式
    • 隨機數
    • time
    • counter計數器
  • 變量
  • 編程式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM