jmeter使用分享

Jmeter使用介紹html

 

  1. Jmeter安裝啓動

1.1     Jdk安裝和環境變量配置java

1.2     啓動jmeter.bat或者直接運行安裝目錄bin下面的ApacheJMeter.jarsql

1.3     一個最簡單的jmeter請求:添加一個線程組,一個http請求,一個查看結果樹查看結果。填好http請求相關參數,直接運行就可查看結果。chrome

 

 

  1. Jmeter基礎元件

添加線程組後,右擊線程組,能夠看到jmeter的八大基礎元件,以下所示:shell

  1. 控制器使用

3.1     if控制器數據庫

判斷子取樣器是否執行,${test1}==100 && ${test1}==99apache

 

 

3.2     循環控制器json

控制其下的子節點運行次數,能夠指定運行次數,也能夠勾選永遠,持續執行。瀏覽器

 

 

3.3     吞吐量控制器服務器

控制其下子節點執行的次數或者百分比

 

 

3.4     僅一次控制器

線程組執行期間,該控制器的子節點取樣器只運行一次。例如在登錄時,若是線程組循環時不清除cookie,那麼把登錄請求放到該控制器下,除了線程啓動第一次循環時會執行該請求,後續的循環不會再執行。

 

 

  1. Samper

4.1     http請求

常規模式的http請求,包括請求域名,方法,請求體參數,信息頭字符格式等。

 

 

圖中post請求的能夠經過parameters或者body data來傳值。

Parameter:參數能夠直接寫在url後面,如http://xxxx.xxxx/test?test = 123&test1 = 123, 也能夠在parameter裏面的表格中填寫

Body data:請求附帶請求體,請求體的格式須要在配置元件中的http信息頭管理器中指定,如添加:Content-Type:application/json。當添加了這個信息頭後,body,data裏的參數就須要填寫josn格式。

4.2     java請求

其實是對jar包進行測試,具體步驟:

1) 將jmeter的lib\ext下的ApacheJMeter_core.jar和 ApacheJMeter_java.jar兩個jar包導入目標工程的擴展類庫中

2) 建立一個類Test繼承 JavaSamplerClient,複寫getDefaultParameters和runTest方法

getDefaultParameters:定義jmeter界面能夠傳入的參數

runTest:目標測試代碼,須要測試的功能或者調用所有寫在這裏

 

public class Test extends AbstractJavaSamplerClient{

       

    public Arguments getDefaultParameters() {

       

        Arguments args = new Arguments();

       

        args.addArgument("userName", "test ");

        args.addArgument("password", "testing");

               

        return args;

    }

 

    @Override

    public void setupTest(JavaSamplerContext context) {

          }

 

    @Override

    /**

     * 性能測試時的線程運行體,執行的業務方法放在這裏。

     */

    public SampleResult runTest(JavaSamplerContext context) {

       

        // 建立SampleResult對象,用於記錄執行結果的狀態,並返回

        SampleResult sampleResult = new SampleResult();

 

       

        // 獲取JMeter中輸入的用戶參數

        String userName = context.getParameter("userName");

        String password = context.getParameter("password");

       

        // 開始

        sampleResult.sampleStart();

       

        //此處是要執行的目標代碼

 

        // 暫停

        // sampleResult.samplePause();

       

        // 重啓

        // sampleResult.sampleResume();

       

        // 結束

        sampleResult.sampleEnd();

       

        sampleResult.setSuccessful(accountResult.isSuccess());

       

        // 返回

        return sampleResult;

    }

}

3) 導出工程jar包到jmeter目錄lib\ext下,重啓jmeter能夠選擇剛纔導入的jar包,以及本身寫的對應的方法,寫入但願傳入的參數就能夠正常進行測試了:

 

 

 

4.3     ftp請求

主要提供文件的上傳和下載功能

 

 

服務器名稱或ip:遠程服務器的域名或者ip

Remote File:須要上傳到服務器或者從服務器下載到本地的文件路徑和文件名

Local File: 本地須要上傳到服務器或者從服務器下載到本地文件路徑和文件名

Local File Contents: 選擇get下載,put上傳

4.4     jdbc request

jdbc主要提供對數據庫的增刪改查操做,須要配合配置元件裏的JDBC Connection Configuration使用

 

 

配置好連接信息,添加jdbc request,Variable Name裏填寫上面在配置裏填寫變量名,query type裏能夠選select,update等不一樣的選項來支持不一樣的sql語句

 

 

若是語句太多,也可使用下面的parameter values和parameter types來參數化,

parameter values:參數值

parameter types:參數類型

Result variable name:保存查詢結果,線程組執行過程當中能夠隨時經過vars.getObject(「result name」)去讀取這個查詢結果。

  1. Beanshell

經常使用的內置變量:

log: 寫入log相關信息,log.info(「xxxxxxx」);

vars: 操做腳本中的變量,vars.get(String key)獲取指定變量,vars.put(String key,String value), 保存修改變量值。

Prev: 調用SampleResult類相關方法:

        prev.getContentType():獲取完整的content-type信息

        prev. getResponseDataAsString(). 獲取前置請求的返回而且轉化成字符串

5.1     BeanShell PreProcessor

前置處理器,在實際的請求發出前運行,能夠預先設定一些參數的值或者對傳入的參數作處理,請求時使用beanshell處理過的數值。

 

 

上圖在編輯模塊經過代碼獲取當前的unix時間戳,使用vars.put(「time」,time)設定變量,在以後即將運行的請求或者相關配置原件中能夠經過${time}來動態獲取即時的時間戳信息。

5.2     BeanShell PostProcessor

後置處理器,和前置類似。在請求發送後,對相應作處理。

 

 

除了對響應作處理,也能夠讀取腳本配置的變量來從新賦值或者跳出while等循環或者邏輯控制器。

  1. 配置元件

6.1     csv data set config:

 

 

FileName: csv文件目錄,若是和腳本路徑相同,只須要填文件名

File Encoding: 默認爲ANSI,有中文的時候能夠填utf-8

Varible Names: 定義文本文件中的參數名,參數之間逗號分隔.定義後可在腳本在以Shell變量的一樣的方式引用

Delimiter(use 「\t」 for tab):通常狀況下,分隔符爲英文逗號

Allow Quoated data: 雙引號相關

Recycle on EOF: 設置爲True後,容許循環取值

Stop Thread on EOF: 當Recycle on EOF爲false而且Stop Thread on EOF爲true,則讀完csv文件中的記錄後,中止運行

Sharing Mode: 設置是否線程共享

6.2     http信息頭管理器

 

 

主要支持一些複雜的信息頭,左邊填寫名稱,右邊填寫對應的值,值域裏面支持變量動態獲取

 

6.3     http cookie管理器

 

 

 

6.4     計數器

計數器能夠設置一個初始值,每次遞增的值,以及增加上限。

 

 

啓動:初始值

遞增:指定每次數值增長多少

最大值:遞增的上限值

引用名稱:在其餘地方經過此處的名稱來引用計數器,上圖名稱填的是test,若是在其餘地方想要引用這個計數器能夠經過${test}來獲取值。

與每用戶獨立的跟蹤計數器:不勾選的話,全部線程共享一個計數器,不然每一個線程都獨自維護一個計數器。

6.5     用戶自定義變量

該配置元件能夠事先定義一些變量。

 

 

如上所示,填寫變量名稱和變量值,使用時也時經過${test1}來引用。

6.6     Random Variable

隨機變量:按照必定的規則隨機生成的變量。

 

 

Variable name: 變量名稱,能夠經過${name}來引用。

Output format:輸出格式,生成的變量值會按照該格式來組合成最終的值。上圖填寫的時139aa,那最終的輸出時139aaxxxxxxxxxx。若是爲空,則生成的變量就是最終值。

Minimum value:隨機值的下限。

Maximum value:隨機值的上限。

Per Thread(User): false時,全部線程共享變量。true,每一個線程單獨維護一個變量。

  1. Jmeter錄製

Jmeter腳本除了在UI界面上編寫或者直接編寫xml文件以外,還能夠經過一些工具去生成,下面介紹一個瀏覽器插件blazemeter錄製腳本的流程。

在chrome的擴展程序裏搜索並安裝blazemeter這個插件,安裝好後在chrome的右上角會出現啓動按鈕

 

 

點擊啓動程序,出現以下界面:

 

 

 

 

使用blazemeter錄製一個jmeter腳本分一下步驟:

1) 啓動程序後在最上方的輸入框爲腳本定義一個名稱

2) 下方一排有6個按鈕,從左到右依次爲,開始錄製,中止錄製,停止錄製,編寫錄製腳本,導出爲.jmx腳本,重置全部選項。

3) 點擊開始錄製按鈕後,這時能夠在瀏覽器上作訪問操做,工具圖標上會記錄操做瀏覽器的動做次數

4) 瀏覽器訪問結束,點擊中止錄製。

5) 若是須要編輯能夠點擊編寫錄製修改相關參數,最後點擊導出爲能夠被jmeter識別的.jmx文件,直接用jmeter打開,運行調試。

  1. 監聽器

Jmeter監聽器元件裏提供了許多結果檢測功能:

8.1     Jmeter自帶監聽器:

1) 查看結果樹:能夠詳細的查看請求的參數,返回等功能,大量壓測的話建議勾選上只查看錯誤請求的功能,以避免界面死掉。

2) 聚合報告:對請求數,響應時間,吞吐量,數據流量作彙總。比較經常使用的功能

 

Sample:請求總數

Average:平均響應時間

Median:一半的請求響應時間小於該時間

90% Line : 90%的請求響應時間小於該時間

Min:最小響應時間

Max:最大響應時間

Error %:出錯請求佔請求總數的百分比

Throughput:吞吐量,服務器每秒處理的請求數

KB/sec:每秒從服務器接收的數據量

8.2     Jmeter插件

8.2.1       jmeter自帶的繪圖結果不怎麼好看,而且jmeter自己並不能監聽服務器的內存,cpu等硬件指標,因此利用JMeterPlugins能夠輔助生成一些簡單明瞭的圖形結果。下面時操做步驟:

1) 下載JMeterPlugins相關jar包放到jmeter安裝路徑下的lib\ext下面,重啓jemter

2) 爲線程組添加監聽器,若是jar包生效,就發現菜單中多了一些jp@gc開頭的新的監聽器。

 

 

3) 新的監聽器監聽服務器須要部署agent到目標機器上,下載ServerAgent到目標服務器上,運行bat啓動文件,以下圖所示就啓動成功了。此時運行壓測腳本就能夠看到監聽器開始工做。

 

 

 

4) 經常使用監聽器介紹:

Transactions per Second:每秒處理的事物數

 

 

 

 

 

Hits per Second:每秒點擊率

 

 

 

 

 

 

PerfMon Metrics Collector:性能表現指標收集,該圖表須要手動添加目標服務器的ip和端口(對應以前啓動agent的端口),選擇須要收集的指標,cpu,io,內存等。該監聽器中,全部可監聽的機器ip和想要的性能指標均可以經過在監聽器界面上經過下拉框來選擇(紅線部分所示)。

 

 

 

 

 

 

 

Active Threads Over Time:活動用戶數量,腳本執行期間,正在運行的線程數。

 

 

 

 

8.2.2       除了經過jmeter去監聽指標外,也能夠經過nmon等工具直接在服務器上收集數據。

 

  1. 分佈式部署測試

因爲單臺機器所能開啓的線程數受機器自己的硬件相關配置限制,當有高併發的需求時能夠開啓分佈式部署,將壓力分佈到到多執行節點上,一臺master server負責收集各個節點的運行結果並進行彙總。

下面是分佈式部署流程:

9.1     節點機器配置:

安裝jmeter而且配置環境變量,JMETER_HOME=jmeter安裝路徑。

打開jmeter bin目錄下的jmeter.properties文件,修改以下參數值:

         server.rmi.localport=1099

         server_port=1099

命令行起啓動bin目錄下jmeter-server.bat腳本,效果以下所示:

 

 

後續在server上遠程啓動該節點的信息都會顯示在此處。

9.2     Server配置:

打開jmeter bin目錄下的jmeter.properties文件,修改其中的值,

       remote_hosts=172.17.3.11:1099(對應各個節點機器的ip和端口配置)

9.3     在server上打開jmeter客戶端,選擇遠程啓動的方式,

 

 

此時能夠看到以前配置的遠程服務器已經在可選的列表中,能夠有選擇的啓動某幾臺遠程服務器,或者所有啓動,此時在主控server的jmeter界面上能夠看到因此遠程服務器的運行狀況彙總。

 

10.  線程組

    線程屬性配置

 

 

     線程數:用來發送請求的線程數

       Ramp-Up Period(in seconds): 指定的線程數在多少時間內完成啓動,若是線程組是屢次循環的,該參數只對首次線程啓動的時候起做用,第二次循環開始線程運行不在受此參數影響。

        循環次數:勾選永遠會一直跑,填寫次數用來設定單個線程的循環次數

        調度器:可讓腳本在一個指定的時間段內運行

11.Jmeter和jenkins集成

  11.1   Jmeter命令行運行

在jenkins中運行jmeter腳本須要用到jmeter的nonGUI模式,相關參數以下:

-n 非 GUI 模式 -> 在非 GUI 模式下運行 JMeter

-t 測試文件 -> 要運行的 JMeter 測試腳本文件

-l 日誌文件 -> 記錄結果的文件

-r 遠程執行 -> 啓動遠程服務

-H 代理主機 -> 設置 JMeter 使用的代理主機

-P 代理端口 -> 設置 JMeter 使用的代理主機的端口號

       使用示例: jmeter -n -t testplan.jmx -l test.jtl。生成的jtl文件能夠在jmeter的聚合報告或者查看結果書界面直接打開查看,以下所示。

 

 
 
11.2   Jmeter,jenkens,ant持續集成。
寫好的jmeter腳本能夠結合ant,配置到Jenkins持續集成。基本思路是Jenkins構建後執行ant命令,經過ant去調用jmeter腳本,然後把生成的jtl報告轉化成可視化的html報告輸出:
1) 下載ant:http://ant.apache.org/bindownload.cgi,解壓到本地
2) 將jmeter extras目錄下的ant-jmeter-1.1.1.jar文件複製到ant的lib目錄下
3) 修改jmeter bin目錄下的jmeter.properties文件選項的值:

 

 
上圖中值原先都是被註釋的,使用時去掉前面的註釋符號「
第一條紅線處,反註釋後修改其值爲xml,意思時輸出文件爲xml。
下面一部分是要report中想要保存的結果選項,反註釋後修改false爲true。
4) 複製jmeter extras目錄下的build.xml,collapse.png,expand.png,jmeter-results-detail-report.xsl,jmeter-results-report.xsl文件到jmeter bin目錄下。
5) 修改build.xml值以下圖所示,若是沒有就新增一條:

 

 
 
6) 配置ant環境變量:
ANT_HOME = ant安裝路徑;
CLASSPATH = %ANT_HOME%\lib;
PATH =  %ANT_HOME%\bin;
 
7) 打開一個cmd命令,切換到jmeter bin下面運行命令:ant,出現以下界面則運行成功:

 

 
8) 在Jenkins界面新建 一個項目或者打開一個已經存在的項目,打開配置界面
9) 點擊增長構建步驟以下圖所示:

 

 
 
在出來的界面中填寫ant執行命令:

 

 
保存項目,開始構建,成功後能夠查看HTML報告。

 

 
在Jenkins的項目配置裏,選擇增長構建後操做步驟:

 

 
在下拉列表中也能夠選擇一些其餘控件對生成的報告做解析而且輸出到Jenkins界面上。
相關文章
相關標籤/搜索