一.簡介
? ? Jmeter是一款優(yōu)秀的開源測試工具, 是每個資深測試工程師,必須掌握的測試工具,熟練使用Jmeter能大大提高工作效率。
**開源,他是一款開源的免費軟件,使用它你不需要支付任何費用,
**小巧,相比LR的龐大(最新LR11將近4GB),它非常小巧,不需要安裝,但需要JDK環(huán)境,因為它是使用java開發(fā)的工具。
**功能強大,jmeter設計之初只是一個簡單的web性能測試工具,但經(jīng)過不段的更新擴展,現(xiàn)在可以完成數(shù)據(jù)庫、FTP、LDAP、WebService等方面的測試。因為它的開源性,當然你也可以根據(jù)自己的需求擴展它的功能。
環(huán)境搭建:
jemter安裝地址:http://jmeter.apache.org/
jemter官方學習地址:http://jmeter.apache.org/index.html
二.使用jemter做接口測試:
這里我們要注意有兩種接口方式是很常用的:get和post,
下面來演示兩者的不同。為了更好的區(qū)分,我在這里先簡單的演示下它的不同:
get請求:http://localhost:8080?username=anqi&password=123456
post請求:http://localhost:8080
這樣看是不是清楚多了
1.找到你安裝的文件夾,找到bin文件夾,運行jemter.bat.打開jemter
2.新建一個線程組:
線程數(shù):虛擬用戶數(shù)。一個虛擬用戶占用一個進程或線程。設置多少虛擬用戶數(shù)在這里也就是設置多少個線程數(shù)。
準備時長:?設置的虛擬用戶數(shù)需要多長時間全部啟動。如果線程數(shù)為20?,準備時長為10?,那么需要10秒鐘啟動20個線程。也就是每秒鐘啟動2個線程。
循環(huán)次數(shù):每個線程發(fā)送請求的次數(shù)。如果線程數(shù)為20?,循環(huán)次數(shù)為100?,那么每個線程發(fā)送100次請求。總請求數(shù)為20*100=2000?。如果勾選了“永遠”,那么所有線程會一直發(fā)送請求,一到選擇停止運行腳本。
(這里要做接口測試,所以各個參數(shù)為均1。)
3.添加一個http請求:
4.例子:我要發(fā)送一個get方法的http
(這里順路說一下用post請求跟get請求有什么區(qū)別,同樣是圖片來說明)
我要發(fā)送一個post方法的http
(這里對比一下就很容易看出區(qū)別了,get請求直接填就好了,post請求需要添加值)
get請求和post請求的區(qū)別:
1.get請求的后綴在地址欄里提交,post請求在webfroms中顯示,以表單形式提交
2.get請求數(shù)據(jù)比較小,post請求數(shù)據(jù)比較大。
3.post請求相對比較安全
名稱:本屬性用于標識一個取樣器,建議使用一個有意義的名稱。
注釋:對于測試沒有任何作用,僅用戶記錄用戶可讀的注釋信息。
服務器名稱或IP:HTTP請求發(fā)送的目標服務器名稱或IP地址。
端口號:目標服務器的端口號,默認值為80?。
協(xié)議:向目標服務器發(fā)送HTTP請求時的協(xié)議,可以是http或者是https?,默認值為http?
方法:發(fā)送HTTP請求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。(一般使用get和post)
Content?encoding:內容的編碼方式,默認值為iso8859
路徑:目標URL路徑(不包括服務器地址和端口)
自動重定向:如果選中該選項,當發(fā)送HTTP請求后得到的響應是302/301時,JMeter?自動重定向到新的頁面。
Use?keep?Alive:?當該選項被選中時,jmeter?和目標服務器之間使用?Keep-Alive方式進行HTTP通信,默認選中。
Use?multipart/from-data?for?HTTP?POST:當發(fā)送HTTP?POST?請求時,使用Use?multipart/from-data方法發(fā)送,默認不選中。
同請求一起發(fā)送參數(shù):?在請求中發(fā)送URL參數(shù),對于帶參數(shù)的URL?,jmeter提供了一個簡單的對參數(shù)化的方法。用戶可以將URL中所有參數(shù)設置在本表中,表中的每一行是一個參數(shù)值對(對應RUL中的?名稱1=值1)。
5.點擊運行按鈕,查看其結果。
除了使用查看結果樹,我們常用的查看數(shù)據(jù)的方法還有添加聚合報告查看結果。
得到以下結果頁面。
Label:每個JMeter的element(例如HTTP Request)都有一個Name屬性,這里顯示的就是Name屬性的值
Samples:表示你這次測試中一共發(fā)出了多少個請求,如果模擬10個用戶,每個用戶迭代10次,那么這里顯示100
Average:平均響應時間——默認情況下是單個Request的平均響應時間,當使用了Transaction Controller時,也可以以Transaction為單位顯示平均響應時間
Median:中位數(shù),也就是50%用戶的響應時間
90% Line:90%用戶的響應時間
Note:關于50%和90%并發(fā)用戶數(shù)的含義,請參考下文
http://www.cnblogs.com/jackei/archive/2006/11/11/557972.html
Min:最小響應時間
Max:最大響應時間
Error%:本次測試中出現(xiàn)錯誤的請求的數(shù)量/請求的總數(shù)
Throughput:吞吐量——默認情況下表示每秒完成的請求數(shù)(Request per Second),當使用了Transaction Controller時,也可以表示類似LoadRunner的Transaction per Second數(shù)
KB/Sec:每秒從服務器端接收到的數(shù)據(jù)量,相當于LoadRunner中的Throughput/Sec
6.添加斷言:右鍵點擊HTTP請求“添加”-->“斷言”-->“響應斷言”。
對于自動化測試來說,斷言必須要有的,如果沒有斷言我們只能人眼對比對接口返回的數(shù)據(jù),有了斷言功能,就會簡化這個過程。Jmeter提供了豐富的斷言方法來幫助我們完成這個工作。
要測試的響應字段:響應文本、Document(text)、URL樣本、響應信息、Response Headers、Lgnore Staus等選項。雖然接口返回的是Json格式的數(shù)據(jù),但對于Jmeter來說返回數(shù)據(jù)為文本,所以,這里可以勾選“響應文本”
模式匹配規(guī)則:包括、匹配、Equals、Substring。這里只需要驗證返回數(shù)據(jù)中是否包含主要的關鍵字,所以,這里勾選“包括”。
要測試的模式:其實就是斷言的數(shù)據(jù)。點擊“添加”按鈕,輸入要斷言的數(shù)據(jù)。
運行測試:
再次清除測試數(shù)據(jù),點擊啟動測試,查看結果樹,如下圖。
這是個簡單的接口測試,適合初學者。