一、前言
jmeter是apache公司基于java開發(fā)的一款開源壓力測試工具,體積小,功能全,使用方便,是一個比較輕量級的測試工具,使用起來非常簡單。因 為jmeter是java開發(fā)的,所以運行的時候必須先要安裝jdk才可以。jmeter是免安裝的,拿到安裝包之后直接解壓就可以使用,同時它在 linux/windows/macos上都可以使用。
jmeter可以做接口測試和壓力測試。其中接口測試的簡單操作包括做http腳本(發(fā)get/post請求、加cookie、加header、加權 限認證、上傳文件)、做webservice腳本、參數(shù)化、斷言、關聯(lián)(正則表達式提取器和處理json-json path extractor)和jmeter操作數(shù)據(jù)庫等等。
同時,我也為大家準備了一份軟件測試視頻教程(含面試、接口、自動化、性能測試等),就在下方,需要的可以直接去觀看,也可以直接點擊文末小卡片免費領取資料文檔
軟件測試視頻教程觀看處:
自動化測試篇—實戰(zhàn)案例:自動化及接口自動化本質及適用場景
二、接口測試
2.1Jmeter-http接口腳本
一般分五個步驟:
(1)添加線程組
(2)添加http請求
(3)在http請求中寫入接入url、路徑、請求方式和參數(shù)
(4)添加查看結果樹
(5)調用接口、查看返回值
jmeter 發(fā)get請求
jmeter 發(fā)post請求
jmeter 添加cookie
需要在線程組里添加配置元件—HTTP Cookie 管理器
jmeter 添加header
需要在線程組里面添加配置元件—HTTP信息頭管理器
jmeter 上傳文件
jmeter 參數(shù)化
入?yún)⒔洺W兓脑?,則可以設置成一個變量,方便統(tǒng)一修改管理;如果入?yún)⒁箅S機或可多種選擇,則通過函數(shù)生成器或者讀取文件形成一個變量。所以參數(shù)化有三種方式:用戶定義的變量、函數(shù)生成器、讀取文件。
(1)用戶定義的變量
需要添加配置元件-用戶定義的變量。
(2)函數(shù)生成器
需要用到函數(shù)助手功能,可以調用函數(shù)生成一些有規(guī)則的數(shù)據(jù)。常用的幾個函數(shù)有_uuid、_random、_time。_uuid會生成一個隨機唯一 的id,比如在避免java請求重發(fā)造成未處理數(shù)據(jù)太多的情況,接口請求可加一個唯一的請求id唯一的響應id進行一一對應;隨機數(shù)_random,可以 在你指定的一個范圍里取隨機值;取當前時間_time,一些時間類的入?yún)⒖梢允褂?如{__time(,)} 是生成精確到毫秒的時間戳、{__time(/1000,)}是生成精確到秒的時間戳、${__time(yyyy-MM-dd HH:mm:ss,)} 是生成精確到秒的當前時間。
(3)從文件讀取
需要在線程組里面添加配置元件-CSV Data Set Config
其中Recycle on EOF:設置True后,允許循環(huán)取值
具體的例子如下所示:
jmeter 斷言
jmeter斷言用來檢測響應返回的結果和我們預期的是否一致。若針對整個線程組的話,則在線程組下添加斷言-響應斷言;若只是針對某個請求的話,則在請求下添加斷言-響應斷言。
jmeter關聯(lián)
接口請求之間存在參數(shù)調用,為了保存這個參數(shù),建立jmeter關聯(lián)。比如登陸接口和購買商品接口,購買商品接口就需要登陸接口返回的token等登陸信息,jmeter關聯(lián)就可以保存這個token信息,方便購買商品接口使用。
jmeter關聯(lián)可以通過二種方式來完成,獲取到返回結果中指定的值。它們分別是正則表達式提取器、 json path extractor。
(1)正則表達式提取器
若想獲取的返回值未匹配到,可以把正則表達式兩邊匹配的數(shù)據(jù)擴大點。
a. 關于正則表達式
():括起來的部分就是要提取的。
.:匹配除換行外的任何字符串。
+:代表+號前面的字符必須至少出現(xiàn)一次(一次或多次)。
?:代表?前面的字符最多可以出現(xiàn)一次,在找到第一個匹配項后停止(0次或1次)。
:代表號前面的字符可以不出現(xiàn),也可以出現(xiàn)一次或者多次(0次、1次或者多次)
(.*):貪婪模式,匹配盡可能多的字符
(.*?)或(.+?):匹配盡可能少的字符,一旦匹配到第一個就不往下走了。
b. 關于模板
若想提取多個值的話,比如是a和b這兩個值,則可以寫成:$1$$2$。無論要提取多少個值,引用名稱就是一個的,比如名稱為id,${id_go}:獲取整個字符串ab,${id_g1}:獲取的是a,${id_g2}:獲取的是b。
下面有一個具體的實例,如下圖所示:
(2)json path extractor
jmeter通過安裝json path extractor插件來處理json串,提取json串中的字段值。插件的下載地址:https://jmeter-plugins.org/?search=jpgc-json,下載完成,解壓后,直接把lib文件夾放到jmeter相應目錄下面。特別說明:jmeter 2.xx左右的版本嘗試過無法使用該插件,在jmeter 3.xx左右的版本裝完插件后能正常使用。
需要在請求下創(chuàng)建后置處理器-jp@gc-JSON Path Extractor,具體的實例如下所示:
jmeter 操作數(shù)據(jù)庫
操作數(shù)據(jù)庫基本有四個步驟:
(1)導入mysql的jdbc的jar包
(2)創(chuàng)建數(shù)據(jù)庫的連接配置,線程組里添加配置元件-JDBC Connection Configuration
(3)線程組里添加jdbc request,寫sql語句
(4)添加察看結果樹,點擊啟動按鈕,就能看到執(zhí)行的SQL。
具體的實例如下截圖所示:
?
?
特別說明:jmeter還可以操作oracle、postgreSQL、msSQL、mongodb等等數(shù)據(jù)庫,同時不同的數(shù)據(jù)庫,JDBC Connection Configuration填寫的Database url格式和JDBC Driver驅動名稱也不相同。jmeter數(shù)據(jù)庫驅動列表如下表所示:
2.2Jmeter-webservice接口腳本
基本分為五個步驟:
(1)先需要通過soapui工具獲取到webservice接口的請求地址、請求報文和請求soapaction。
(2)jmeter新建一個線程組
(3)線程組下建立SOAP/XML-RPC Request,寫入請求url、請求報文、請求soapaction。
(4)啟動jmeter,調用接口,通過察看結果樹查看返回值。
soapui獲取信息的實例如下圖所示:
soapui提交完后,點擊raw,可看到soapation,有些接口若沒返回soapation,則jmeter里也就不用填。
jmeter-webservice腳本實例如下圖所示:
三、壓力測試
壓力測試分兩種場景:一種是單場景,壓一個接口的;第二種是混合場景,多個有關聯(lián)的接口。壓測時間,一般場景都運行10-15分鐘。如果是疲勞測試,可以壓一天或一周,根據(jù)實際情況來定。
3.1壓測任務需求的確認
壓測前要明確壓測功能和壓測指標,一般需要確定的幾個問題:
- 固定接口參數(shù)進行壓測還是進行接口參數(shù)隨機化壓測?
- 要求支持多少并發(fā)數(shù)?
- TPS(每秒鐘處理事務數(shù))目標多少?響應時間要達到多少?
- 壓服務器名稱還是壓服務器IP,一般都是壓測指定的服務器
3.2壓測設置
- 線程數(shù):并發(fā)數(shù)量,能跑多少量。具體說是一次存在多少用戶同時訪問
- Rame-Up Period(in seconds):表示JMeter每隔多少秒發(fā)動并發(fā)。理解成準備時長:設置虛擬用戶數(shù)需要多長時間全部啟動。如果線程數(shù)是20,準備時長為10,那么需要10秒鐘啟動20個數(shù)量,也就是每秒鐘啟動2個線程。
- 循環(huán)次數(shù):這個設置不會改變并發(fā)數(shù),可以延長并發(fā)時間??傉埱髷?shù)=線程數(shù)*循環(huán)次數(shù)
- 調度器:設置壓測的啟動時間、結束時間、持續(xù)時間和啟動延遲時間。
3.3壓測結果查看
運行完后,聚合報告會顯示壓測的結果。主要觀察Samples、Average、error、Throughput。
- Samples:表示一共發(fā)出的請求數(shù)
- Average:平均響應時間,默認情況下是單個Request的平均響應時間(ms)
- Error%:測試出現(xiàn)的錯誤請求數(shù)量百分比。若出現(xiàn)錯誤就要看服務端的日志,配合開發(fā)查找定位原因
- Throughput:簡稱tps,吞吐量,默認情況下表示每秒處理的請求數(shù),也就是指服務器處理能力,tps越高說明服務器處理能力越好。
3.4壓測結果的分析
- 有錯誤率同開發(fā)確認,確定是否允許錯誤的發(fā)生或者錯誤率允許在多大的范圍內;
- Throughput吞吐量每秒請求的數(shù)大于并發(fā)數(shù),則可以慢慢的往上面增加;若在壓測的機器性能很好的情況下,出現(xiàn)吞吐量小于并發(fā)數(shù),說明并發(fā)數(shù)不能再增加了,可以慢慢的往下減,找到最佳的并發(fā)數(shù);
- 壓測結束,·登陸相應的web服務器查看CPU等性能指標,進行數(shù)據(jù)的分析;
- 最大的tps:不斷的增加并發(fā)數(shù),加到tps達到一定值開始出現(xiàn)下降,那么那個值就是最大的tps。
- 最大的并發(fā)數(shù):最大的并發(fā)數(shù)和最大的tps是不同的概率,一般不斷增加并發(fā)數(shù),達到一個值后,服務器出現(xiàn)請求超時,則可認為該值為最大的并發(fā)數(shù)。
- 壓測過程出現(xiàn)性能瓶頸,若壓力機任務管理器查看到的cpu、網絡和cpu都正常,未達到90%以上,則可以說明服務器有問題,壓力機沒有問題。
- 影響性能考慮點包括:數(shù)據(jù)庫、應用程序、中間件(tomact、Nginx)、網絡和操作系統(tǒng)等方面。
3.5jmeter在linux下進行壓力測試
(1)jmeter 在linux安裝
簡單說下,就是要先安裝jdk,同時再配置環(huán)境變量,最后再上傳jmeter壓縮的安裝包,在linux下解壓完安裝包就可以使用了。
(2)jmeter在linux運行
進入jmeter下的bin目錄下運行腳本,未配置jmeter環(huán)境變量的條件下,運行的命令:
./jmeter -n -t a.jmx -l res.jtl
其中a.jmx是準備好的jmeter腳本,res.jtl是測試結果文件,測試結果文件可以導入到jmeter察看結果樹下查看。
四、總結
最后祝大家都能找到心儀的工作,快樂工作,幸福生活,廣闊天地,大有作為。PS:這里分享一套軟件測試的自學教程合集。對于在測試行業(yè)發(fā)展的小伙伴們來說應該會很有幫助。除了基礎入門的資源,博主也收集不少進階自動化的資源,從理論到實戰(zhàn),知行合一才能真正的掌握。全套內容已經打包到網盤,內容總量接近500個G【點擊文末小卡片免費領取】
? 240集-零基礎到精通全套視頻課程
? [課件+源碼]-完整配套的教程
? 18套-測試實戰(zhàn)項目源碼
? 37套-測試工具軟件包
? 268道-真實面試題
? 200個模板-面試簡歷模板、測試方案模板、軟件測試報告模板、測試分析模版、測試計劃模板、性能測試報告、性能測試報告、性能測試腳本用例模板(信息完整)
這些資料,對于做【軟件測試】的朋友來說應該是最全面最完整的備戰(zhàn)倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!凡事要趁早,特別是技術行業(yè),一定要提升技術功底。
送給大家一句話,共勉:當我們能力不足的時候,首先要做的是內修!當我們能力足夠強大的時候,就可以外尋了!?文章來源:http://www.zghlxwxcb.cn/news/detail-771265.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-771265.html
到了這里,關于如何用jmeter做接口測試、壓力測試?的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!