性能-jmeter

 
jmeter的安裝 
 
1.安裝jdk和環境變量配置

變量名:【JAVA_HOME】html

變量值:【D:\Program Files\Java\jdk1.8.0_92】【jdk安裝路徑】java

 

變量名:【path】mysql

變量值:【\;%JAVA_HOME%\bin;】linux

 

變量名:【CLASSPATH】
變量值:【.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;】
2.下載jmeter,解壓便可,環境變量配置

【變量名】JMETER_HOME正則表達式

【變量值】F:\CYL\test\jmeter\apache-jmeter-3.0(根據實際的jmeter解壓路徑填寫)sql

 

【變量名】CLASSPATHshell

【變量值】%JMETER_HOME\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;
ps:若jmeter的目錄/lib/ext文件夾無jar,則須要下插件或者下一個裏面有jar包的jmeter壓縮包
3.

【步驟三】啓動Jmeter數據庫

雙擊Jmeter解壓路徑(apache-jmeter-3.0\bin)的bin下面的jmeter.bat
 

jmeter的使用---腳本錄製
1.腳本錄製(使用第三方badboy進行錄製):地址欄填地址,紅色按鈕錄製,黑色結束,錄製完後「文件」 --Export to Jmeter,
2. 打開 JMeter工具,選擇「文件」-->「打開」選擇剛纔保存的文件(.jmx類型),將文件導入,

添加"查看結束樹"和"聚合報告"。apache

--右擊Thread Group→添加→監聽器→查看結果樹。json

--右擊Thread Group→添加→監聽器→聚合報告。
3. 啓動腳本運行完畢後"查看結果樹"。(點擊啓動或"Ctrl+R"運行腳本)
 

 
jmeter的使用---參數化(舉例,登陸:用戶名+密碼)
方式1-藉助函數助手對話框
1.找到有用戶名和密碼的HTTP Request 頁面
2.編輯數據,書寫格式爲「用戶名,密碼」,經過記事本另存爲編碼格式爲utf-8,格式爲dat的文件(與loadrunner不一樣在於沒有dat文件第一行沒有列名)---txt文件也能夠
3.生成函數(用戶名的函數,密碼的函數),工具欄:選項->函數助手對話框,選擇功能爲_CSVRead,函數參數第一個爲文件路徑,第二個爲列,其中用戶名列爲0,輸入完後點擊右下完成,完成左側輸入框生成函數(密碼的函數只需將複製用戶名的函數,而後將函數中放列的地方改成密碼的列便可)
4.在有用戶名和密碼的頁面,將參數的值替換爲對應函數
方式2-藉助jmeter的配置元件
1.選擇線程組,右鍵-添加-配置元件- CSV Data Set Config
2.CSV Data Set Config對話框
Filename --- 參數項文件
File Encoding --- 文件的編碼,設置爲UTF-8
Vaiable Names ---  文件中各列所表示的參數項;各參數項之間利用逗號分隔;參數項的名稱應該與HTTP Request中的參數項一致(好比suer,pwd)。
Delimiter --- 如文件中使用的是逗號分隔,則填寫逗號;如使用的是TAB,則填寫\t;

Recycle on EOF :到了文件尾處,是否循環讀取參數,選項:true和false

Stop thread on EOF:到了文件尾處,是否中止線程,選項:true和false
下Recycle on EOF與Stop thread on EOF結果的關聯:

當Recycle on EOF 選擇true時,Stop thread on EOF選擇true和false無任何意義,通俗的講,在前面控制了不停的循環讀取,後面再來讓stop或run沒有任何意義

當Recycle on EOF 選擇flase時,Stop thread on EOF選擇true,線程4個,參數3個,那麼只會請求3次

當Recycle on EOF 選擇flase時,Stop thread on EOF選擇flase,線程4個,參數3個,那麼會請求4次,但第4次沒有參數可取,不讓循環,因此第4次請求錯誤
3.在HTTP Request將對應的值替換爲定義好的變量,格式:${user}
方式3- User Defined Variables用戶定義的變量
一、添加方法:選擇「線程組」,右鍵點擊添加-Config Element(配置原件)-User Defined Variables,在這個控件中,定義你所須要的參數

二、使用方法:在對應的須要使用參數的位置,使用${host}替代。

三、應用場景:當 測試環境變化時,咱們只須要修改一處的IP就可讓腳本立刻應用於另一個環境的測試,而不須要逐個腳本進行修改。
方式4- User Parameters用戶參數
一、添加方法:選擇「線程組」,右鍵點擊添加-Pre Processors-User Parameters,在這個控件中,定義你所須要的參數

二、參數解釋:

Update Once Per Iteration:控制參數取值的變化規則,若是選中該選項,則參數的值在每一個迭代中保持不變,在新的迭代開始時取下一個可用值; 若是取消取中該選項,則參數的值在每一個其做用域內的Sampler發出請求時取下一個可用值。
三、使用方法:在對應的須要使用參數的位置,使用${productID}替代
總結:

一、User Defined Variables中定義的全部參數的值在Test Plan的執行過程當中不能發生取值的改變,因些通常僅將Test Plan中不須要隨迭代發生改變的參數(只取一次值的參數)設置在此處。例如,被測應用的host和port值。

二、若是參數的取值範圍很小,使用User Parameters比較合適。

三、若是參數的取值範圍很大,建議使用CSV Data Set Config的方法,該方法具備更大的靈活性。
ps:
 
 

 
jmeter的使用---檢查點
JMeter裏面的檢查點經過添加斷言來完成,經過斷言來判斷jmeter有沒有正確調用t.dat(參數化的文件),
1添加響應斷言,右鍵點擊咱們的「登陸」頁面---->添加---->斷言---->響應斷言
2設置響應斷言,測試響應字段選中響應文本,模式匹配選包括,測試的模式添加並填入true
ps:斷言中能夠添加多個斷言一塊兒判斷,斷言中也可使用參數化方法,進行動態判斷。
三、添加斷言結果,右鍵點擊咱們的「登陸」頁面---->添加---->監聽器---->斷言結果
 再添加一個「查看結果樹」 右鍵點擊咱們的「登陸」頁面---->添加---->監聽器---->查看結果樹
在線程組中設置3個用戶,點擊運行運行。
四、查看斷言結果
 

 
jmeter的使用---集合點(好比登陸時集合點在登陸前面)
JMeter裏面的集合點經過添加定時器來完成。

注意:集合點的位置必定要在Sample以前.

  集合點:簡單來理解一下,雖然咱們的「性能測試」理解爲「多用戶併發測試」,但真正的併發是不存在的,爲了更真實的實現併發這感念,咱們能夠在須要壓力的地方設置集合點,拿那個用戶和密碼的地方,每到輸入用戶名和密碼登陸的地方,全部的虛擬用戶都相互之間等一等,而後,一塊兒訪問。
一、設置集合點  ,右線程組的step1鍵點擊 ---->定時器---->Synchronizing Timer
在對話框中設置集合數和延遲時間後,直接將Synchronizing Timer拖至登陸前
 

 
jmeter的使用---聚合報告 90%line
90% Line 參數正確的含義: 

假設一組數:二、2.一、2.五、三、3.四、3.四、四、四、四、四、五、五、五、5.九、5.9一、6.八、八、十二、2四、24.1   按由大到小將其排列。

求它的第90%百分位,第18個數是12 麼,他的90%Line 就是12。 

那麼這個數組中有90%的數將小於等於12 。

用在性能測試的響應時間也將很是有意義,也就是90%用戶響應時間不會超過12 秒。
 
jmeter的使用---FTP測試計劃
FTP服務主要提供上傳和下載功能。有時間須要咱們測試服務器上傳和下載的性能。

1.建立一個線程組

2.線程組--->添加--->配置元件--->FTP請求缺省值:輸入服務器名稱或IP。
3.線程組--->添加--->Sampler--->FTP請求:選擇get爲上傳方式
4.按照上一步的方式再添加一個「FTP請求」:選擇put上傳方式

5.添加一個監控器:線程組--->添加--->監控器--->Spline Visualizer.

一個FTP計劃建立成功。
jmeter的使用---接口測試
需求:
1)測試目標網站是fnng.cnblogs.com 和 tt-topia.rhcloud.com
2)測試目的是該網站在負載達到20 QPS 時的響應時間。(QPS : Query Per Second 每秒查詢率。是一臺查詢服務器每秒可以處理的查詢次數)
步驟:一、添加線程組(測試計劃右鍵->添加->Theads(user)->線程組)
線程數20 (虛擬用戶數)準備時長10(準備時長指的是10s啓動20個線程,就是每秒啓動2個線程) 循環次數10(每一個線程發送的請求次數,總請求=線程數*循環次數)
2.添加http請求 (線程組右鍵->添加->sampler->http請求 )
http名稱:自定義 ,服務器名稱或ip :fnng.cnblogs.com,端口號:80,implement:java ,協議:http,方法:get,路徑:/,其餘默認,(注意post方式,且參數嵌套需添加請求前添加->配置元件->http信息頭管理器,信息頭添加數據content-type:Application/json     而http請求則選擇post方法,數據寫在body data中,其中參數化同其餘)
3.設置QPS限制(http請求右鍵->添加 ->定時器-> Constant Throughput Timer  (、常數吞吐量定時器,該定時器能夠方便地控制給定的取樣器發送請求的吞吐量。)
名稱:自定義, Target throughput(in samples per minute)即目標吞吐量 :1200(目標吞吐量爲20/s,這裏按分算,即20*60=1200)
Calculate Throughput based on  All active threads
4.添加監聽器(線程組右鍵->添加->監聽器->聚合報告)
5.運行啓動(ctrl+R)
6.查看聚合報告
 

 
前提:數據庫準備好數據,下載好jdbc的驅動
1.點擊測試計劃,測試計劃界面點擊瀏覽按鈕,將jdbc的jar包進行添加
2.添加一個線程組,線程組右鍵->添加->配置元件->JDBC Connection Configuration
配置JDBC Connection Configuration頁面:
  • Variable Name:數據庫鏈接池的名稱,咱們能夠有多個jdbc connection configuration,每一個能夠起個不一樣的名稱,在jdbc request中能夠經過這個名稱選擇合適的鏈接池進行使用
  • Database URL: jdbc:mysql://192.168.0.26:3306/jinyuan(修改ip,端口號)
  • JDBC Driver class:com.mysql.jdbc.Driver 
  • username:數據庫登錄的用戶名
  • passwrod:數據庫登錄的密碼
3.線程組右鍵->sampler->jdbc request
Variable Name:應與JDBC Connection Configuration配置的Variable Name一致
query:寫查詢語句(不須要「;」)
4.添加斷言,線程組右鍵->添加-斷言-響應斷言:響應字段和模式匹配規則默認,要測試的模式自定義,若斷言失敗就輸入自定義的部分
5.添加斷言結果,圖形結果,察看結果樹 :線程組右鍵->添加->監聽器->斷言結果/圖形結果/察看結果樹
6.運行後查看
斷言結果:JDBC Request爲成功
察看結果樹:響應數據爲查詢結果
 
ps:若要提取數據庫的數據做爲參數化,可經過兩種方式,都在jdbc request界面
1. variables names   設置A,B (列名)
  • 可使用${A_#}、${A_1}...來獲取相應的值, A_#=行數, A_1=第1列, 第1行
2. result variables names   若是給這個參數設置值,它會建立一個對象變量,保存全部返回的結果,獲取具體值的方法:
user_code=vars.getObject("jdbc_user").get(0).get("user_code");
vars.put("bean_jdbc_user_code",user_code.toString());
注意:user_code 是object,因此經過.toString() 轉爲字符串,以上代碼需寫在bean shell sampler中,代碼要在調用該參數前
而後使用${user_code}便可
以上均可以經過debug sample來查看結果
 
 

 
如何使用上一個請求返回的結果進行參數化--利用正則表達式提取器
在對應的http下添加一個正則
單個匹配
調用方式:${user_code_single}
多個匹配
調用方式:${user_code_g1}   ${user_code_g2}  ps:一個是user_code 一個是ticket
 
 

http請求
1.訪問受限時添加http請求頭管理器,請求頭添加User-Agent便可,有其餘問題把對應信息頭加進來
2.假若登陸成功後訪問其餘界面仍是未登陸狀態,添加http cookies管理器便可
 
 

導包無顯示緣由
問題描述:jmeter要使用第三方開發的包,在全部JAR包放在jmeter的lib/ext下,界面的sampler下看不到對應菜單項
緣由:JDK不一致,JAR包的版本高於JMETER
解決方法:查看jar包版本(用WinRAR打開,META-INF目錄下的MANIFEST.MF文件)
 

線程組
 
Ramp-up Period(in Seconds):表示每一個用戶啓動的延遲時間
線程數:通常咱們用來表示多少個用戶,即咱們測試時的用戶數量
循環次數:若是你要限定循環次數爲10次的話,能夠取消永遠的那個勾,而後在後面的文本框裏面填寫10;在這裏咱們勾上永遠,表示若是不中止或者限定時間將會一直執行下去, 是爲了方便調度器的調用。

調度器的配置:咱們勾選調度器時,將會出現這個面板

啓動時間:表示咱們腳本開始啓動的時間,當你不想當即啓動腳本測試,可是啓動腳本的時間不會再電腦旁的時候,你能夠設定一個啓動的時間,而後再運行那裏點擊啓動,系統將不會當即運行,而是會等到你填寫的時間纔開始運行。

結束時間:與啓動時間對應,表示腳本結束運行的時間。

持續時間:表示腳本持續運行的時間,以秒爲單位,好比若是你要讓用戶持續不斷登陸1個小時,你能夠在文本框中填寫3600。若是在1小時之內,結束時間已經到達,它將會覆蓋結束時間,繼續執行。 

啓動延遲:表示腳本延遲啓動的時間,在點擊啓動後,若是啓動時間已經到達,可是尚未到啓動延遲的時間,那麼,啓動延遲將會覆蓋啓動時間,等到啓動延遲的時間到達後,再運行系統。 

注意:若是咱們須要用到調度器來設定持續時間,若是線程數不夠多到持續時間結束,咱們就必須將循環次數勾選爲永遠,特別地,若是線程組裏面有其餘的循環,咱們也需將該循環次數勾選爲永遠(如我上面錄製的腳本中的Step1也是一個循環,須要將永遠勾選),不然,按我如上配置,將永遠去掉勾選,文本里填1,那麼不管你將持續時間啓動時間結束時間等設置多少,系統運行1000次後,將會中止再也不運行。
 

Jmeter使用命令行(非GUI模式):cmd進入jmeter 的bin目錄下
格式: jmeter -n -t <testplan filename> -l <listener filename>
例如: jmeter -n -t testplan.jmx -l listener.jtl  
jmeter -n -t 國海二期.jmx -l listener.jtl
ps:  -t後爲腳本名稱,-l後爲聚合報告名稱,以後可經過GUI模式聚合報告打開對應聚合報告
 

在jmeter中,元件的做用域是靠測試計劃的的樹型結構中元件的父子關係來肯定的,做用域的原則是:

  •  取樣器(sampler)元件不和其它元件相互做用,所以不存在做用域的問題。
  •  邏輯控制器(Logic Controller)元件只對其子節點中的取樣器 和 邏輯控制器做用。
  •  除取樣器 和邏輯控制器 元件外,其餘6類元件,若是是某個sampler的子節點,則該元件公對其父子節點起做用。
  •  除取樣器和邏輯控制器元件外的其餘6類元件,若是其父節點不是sampler ,則其做用域是該元件父節點下的其餘全部後代節點(包括子節點,子節點的子節點等)。
 
 

測服務器上傳和下載性能:FTP
1.建立一個線程組
2. 線程組--->添加--->配置元件--->FTP請求缺省值(填服務器ip)
3.線程組--->添加--->Sampler--->FTP請求(get):get(RETR)  。
4.再添加一個「FTP請求」(put):方式爲put(STOP)
FTP參數詳解:

IP    爲你FTP服務的IP

Remote file 爲你FTP服務器上的一個文件/上傳的文件。

local file  爲本地你存放到本機上的路徑/上傳的文件路徑。
選擇方式 :  get(RETR) 下載,put(STOP)上傳 。
登陸配置:填寫FTP服務器的用戶名密碼。
 
5.添加一個監控器:線程組--->添加--->監控器--->Spline Visualizer
 

配置元件:http請求默認值---設置後其餘http請求均可不填ip,端口,路徑
 

添加cpu等監控
1.插件下載:
JMeterPlugins-Standard-1.3.1.zip  下載---放jmeter目錄\lib\ext下
 
ServerAgent-2.2.1.zip   下載---(linux)放服務器隨意目錄,在那個目錄下使用 chmod 777 startAgent.sh命令修改權限  若是要將該文件設置爲後臺執行不關閉  Nohup ./startAgent.sh &
  (windows)雙擊 startAgent.bat文件便可
 
2.右鍵添加監聽器-jp@gc - PerfMon Metrics Collector:需修改ip以及添加想要監控的,好比cpu
 
在服務器(linux)可經過top命令查看cpu,memery等使用狀況
相關文章
相關標籤/搜索