1. 程式人生 > >【Jmeter入門】Jmeter基礎理論知識

【Jmeter入門】Jmeter基礎理論知識

初識Jmeter

JMeter是什麼?

  apatch jmeter是apatch組織開發的基於Java的壓力測試工具。

  JMeter可以用於對伺服器、網路或物件模擬巨大的負載,來自不同壓力類別下測試他們的強度和分析整體效能。另外,JMeter能夠對應用程式做功能/迴歸測試,通過建立帶有斷言的指令碼來驗證你的程式返回了你期望的結果(為了最大限度的靈活性,JMeter允許使用正則表示式建立斷言)。

JMeter特點

  1. 能夠對http和FTP伺服器進行壓力和效能測試,也可以對任何資料庫進行同樣的測試(通過JDBC)。
  2. 完全可移植性和100%純Java。
  3. 完全多執行緒,框架允許多個執行緒併發取樣和通過單獨的執行緒組對不同的功能同時取樣。
  4. 各種負載統計表和可連結的計時器可供選擇。
  5. 資料分析和視覺化外掛提供了很好的可擴充套件性以及個性化。
  6. 具有提供動態輸入到測試的功能。

LR和Jmeter比較

共同點:均支援以下功能。

  1. 指令碼錄製/回放;
  2. 引數化;
  3. 集合點;
  4. 檢查點;
  5. 關聯;
  6. 多協議,jmeter協議較少,但可以自行擴充套件,LR支援協議多,但使用者不可以自行擴充套件;
  7. 分散式大壓力測試;
  8. 多執行緒;
  9. 圖形報表:jmeter支援較弱,LR支援很強;
  10. 監控伺服器資源(CPU,記憶體等);
  11. 報告生成與匯出。

區別:

  1. IP欺騙:Jmeter不支援IP欺騙,LR支援。
  2. 功能測試:jmeter支援,LR不支援。
  3. 安裝解除安裝:LR較為麻煩,檔案體積大,Jmeter較為簡便,檔案體積小。
  4. 測試成本:LR商業軟體,成本高,jmeter開源軟體,成本低。

jmeter下載和安裝(Windows環境下)

  前置條件:安裝JDK。

  JMeter下載地址:https://jmeter.apache.org/download_jmeter.cgi。

  一般啟動:解壓,bin目錄下的jmeter.bat即可啟動(避免在有空格的路徑中安裝Jmeter,可能導致遠端測試出現問題)。

  伺服器模式啟動:jmeter-server.bat。允許在遠端節點上以伺服器模式執行JMeter,並通過JMeter GUI來控制(分散式壓力測試)。

JMeter工作原理

  jmeter作為web伺服器和瀏覽器之間的代理,以便捕獲瀏覽器請求和web伺服器的響應,容易的生成效能測試指令碼,並利用效能測試指令碼模擬真實使用者對web伺服器的訪問壓力。

指令碼生成方式:

  1. (自己編寫)效能測試指令碼通過模擬多執行緒對伺服器(web伺服器、應用伺服器、資料庫伺服器)進行訪問壓力測試。
  2. (指令碼錄製)瀏器通過代理方式錄製測試指令碼對伺服器(web伺服器、應用伺服器、資料庫伺服器)進行訪問壓力測試。

JMeter目錄結構

目錄結構

  1. bin目錄下是可執行檔案,JMeter.bat啟動,裡面可以設定jvm引數,進行JVM的調優配置。根據經驗,heap(堆值)最多設定為實體記憶體的一半,預設設定為512M,如果heap超過實體記憶體的一半,可能執行JMeter會慢,甚至出現記憶體溢位錯誤。
  2. JMeter的log在JMeter.log中檢視。
  3. JMeter.properties檔案中有一個屬性log_level.JMeter可以設定改變日誌詳細度,預設是info,查錯時可改為debug。jmeter的屬性設定也可以在圖形化介面中選擇新增--非測試元件--property display展示。
  4. docs下是JMeter的Java docs,存放的是開發API檔案。
  5. printable_docs的usermanual子目錄下是JMeter的使用者手冊文件,其中,component_reference.html是最常用的核心元件幫助手冊,該目錄下的demos下有常用的jmeter指令碼案例,也可以直接通過介面中的幫助部分檢視所有的幫助手冊。
  6. extras:擴充套件外掛目錄,如目錄下的檔案提供了對ant的支援,可以利用ant來實現自動化,例如批量執行指令碼,產生HTML格式的報告等。測試執行時,可以把測試資料記錄下來,jmeter會自動生成一個.jtl檔案,將該檔案放到extras目錄下,執行“ant -Dtest=檔名 repost”,就可以產生測試統計報表。
  7. lib目錄下的子目錄ext下主要是JMeter的核心jar包;junit子目錄放的是junit指令碼;使用者擴充套件依賴的jar包放在lib下即可,不要放在lib/ext下。
  8. licenses:Jmeter證書目錄。

jmeter的classpath(jmeter只尋找jar檔案)

  jmeter通過JMETER_HOME/lib(公用包)和JMETER_HOME/lib/ext(jmeter元件和補丁,只供jmeter元件使用)目錄中的jar檔案載入類。
  如果開發了新的jmeter元件,需要將對應jar包放到lib/ext目錄下,jmeter會自動載入這些jar包中的jmeter元件。不放在lib/ext目錄下的元件需要在JMeter.properties檔案中定義屬性search_paths。
  公用支援jar包(JDBC、JMS實現包、其他任何支援包),都應被放在lib目錄下。可以在Meter.properties檔案中定義屬性user.classpath屬性定義公用包。

jmeter使用設定

語言設定(漢化)

  下載安裝好Jmeter後預設的是英文,所以,如何把英文介面換成中文呢?

方法一(一次性設定) :

  啟動Jmeter找到 options 》choose language 》chinese(簡體繁體自己選)。這樣設定後介面就變成了中文,但是當我們下次開啟時又恢復了英文,要再次設定,這樣一來就很麻煩。那我們怎麼設定預設為中文呢?請看方法二。

方法二 (永久設定):
  1、在Jmeter的安裝目錄下的bin目錄中找到 jmeter.properties這個檔案,用文字編輯器開啟。 
  2、大概在37行,找到:#language=en將其修改為:language=zh_CN,這樣,再次開啟Jmeter就是預設中文了。注意把最前面的註釋#號去掉。

字型設定

  1、在Jmeter的安裝目錄下的bin目錄中找到 jmeter.properties這個檔案,用文字編輯器開啟。

  2、查詢並修改屬性為:jsyntaxtextarea.font.size=30。

  2、如果想要設定介面顯示字型,可以按住Ctrl鍵+滑鼠滾動進行字型設定。

JMeter基礎

常用功能

  1. 測試計劃:用來描述一個性能測試,所有內容都是基於測試計劃的。相當於LR中的測試場景。可以新增擴充套件jar包。
  2. 執行緒組:LR中的虛擬使用者組。(相當於LR中的action),包括普通執行緒組,setup thread group,teardown thread group幾種。
    1.   setup thread group:可用於執行預操作,這些執行緒的行為完全像一個正常的執行緒組元件,類似LR中的init。
    2.   teardown thread group:可用於執行測試後動作,這些執行緒的行為完全像一個正常的執行緒組,類似LR中的end。
  3. 測試片段(Test Fragment):一種特殊的執行緒組,在測試樹上與執行緒組處於同一層級,與執行緒組不同的是它不被執行,除非他是一個模組控制器或者是被控制器引用時才會被執行。它是一個輔助的元件,在此節點下幾乎可以放置任何JMeter測試元件,但它一般不會被執行。他的作用如下(1)在指令碼開發過程中可以用來備份元件;(2)TestFragment下的元件可以被模組控制器呼叫,我們可以利用它來模組化請求(把一個業務封裝成一個方法供複用)供模組控制器呼叫。訪問路徑:測試計劃→Test Fragment
  4. 工作臺:它也不能直接參與執行,功能有:(1)在運用JMeter錄製http協議指令碼時就用到它,我們可以在它下面建立一個http代理伺服器原件(HTTP代理伺服器),設定代理資訊然後進行錄製訪問路徑:工作臺→新增→非測試元件;(2)設定HTTP映象伺服器(HTTP Mirror Server);(3)顯示當前JMeter屬性資訊(屬性顯示);(4)備份指令碼,特別是我們在指令碼除錯過程中可以把它作為一個元件暫存區。
  5. 配置元件:提供對靜態資料的支援。配置元件僅對所在測試分支有效。“使用者定義的引數”會在測試初識階段執行,無論它處於測試樹的哪個位置,為了便於理解,建議放線上程組的開始部分。
    1. HTTP授權管理器:輔助進行伺服器監控測試。
  6. 定時器:用於設定等待時間,類似於LR中的“思考時間”。如果需要在測試計劃中某個位置新增暫停,可以使用“Test Action”採集器。
  7. 前置處理器:用於在實際的請求發出前對即將發出的請求進行特殊處理。
  8. 後置處理器:對sampler發出請求後得到的伺服器響應進行處理,類似LR中的關聯。
    1. jmeter響應亂碼問題處理:在http請求後面新增一個後置處理器,寫入指令碼:prev.setDataEncoding("utf-8")。
  9. 斷言:檢查測試中得到的資料是否符合預期,一般用於設定檢查點,保證效能測試過程中的資料是否和預期一致。
  10. 監聽器:對測試結果資料進行處理和視覺化展示。收集測試樹中相同或更低級別測試元件的資料。

控制器

  Jmeter中有兩種控制器:取樣器(sampler)和邏輯控制器,用這些元件來驅動處理一個測試。

  1. 取樣器:類似LR中的不同協議。包括FTP、HTTP、JDBC、Java object、JMS(Java 訊息服務)、LDAP(輕量目錄訪問協議)、SOAP/XML-RPC、WebService(SOAP,主要涉及技術:XML、SOAP、WSDL、UDDI)。
    1.  Webservice好處:跨防火牆通訊,應用程式整合,B2B整合,軟體和資料重用。
  2. 控制器:幫助使用者控制jmeter測試邏輯,控制子元件請求執行順序。包括兩類,一類是用於控制sampler節點發送請求的邏輯順序控制器,如if控制器,switch,runtime,迴圈控制器等。另一類是用來組織可控制sampler節點的,如事務控制器,吞吐量控制器等。
    1. foreach控制器:該控制器只用於讀取自定義變數值。 新增-使用者自定義變數,變數命名格式:變數名_數字(從1開始計數)。其中:(1)變數字首:自定義變數下劃線前面的字串;(2)取值範圍,遊標範圍,從0開始計數。(3)輸出變數名稱:將每次得到的使用者自定義變數儲存到引數foreach引數中。
    2. if控制器:類似變成語言中的if語句,根據給定表示式的值決定是否執行該節點下的子節點。
    3. 交替控制器:每次迭代時,順序選取該節點下的一個子節點執行。選中ignore sub-controller blocks,表示該controller將其下的子controller當成單一元素處理,並允許每個子controller一次發出一個請求。
    4. loop controller迴圈控制器:簡單地為其下的子節點執行指定次數。
    5. 僅一次控制器:讓testPlan中的某些內容在整個testplan執行期間對每個執行緒僅執行一次(如,每個執行緒僅需執行一次“登入”操作)。
    6. 隨機控制器:每次執行時,從其子節點中隨機選取一個來執行。
    7. 隨機順序執行控制器:每次執行時,按照隨機產生的順序執行旗下的所有子節點,與隨機控制器不同之處在於,隨機控制器只選擇執行器所有子節點中的一個,而隨機順序執行控制器則按照隨機順序全部執行該controller下的所有子節點。
    8. switch controller:類似switch函式,該controller根據給定的值n(可以使用引數)選擇執行旗下的第n+1個子節點,switch controller只接受整數值,並且給定的值n是以0位基礎的。
    9. while controller:設定條件,根據條件進行迴圈控制。條件包括三種:(1)空:迭代執行controller下的所有子節點,直到最後一個子節點返回失敗為止,非最後子節點失敗,不會停止。(2)LAST,迭代執行controller下的所有子節點,直到最後一個子節點返回失敗為止。同時,如果該controller上一個節點失敗,則TestPlan在執行時不會進入該controller。(3)表示式:如果表示式的取值為FALSE,退出迴圈。表示式支援引數化設定。
    10. 事物控制器:會生成一個額外的取樣器來測量其測試元素的總體時間,注意,時間包含該控制器範圍內的所有處理時間,而不是取樣器的時間。如果選中sample,事物採集器作為其下采樣器的父取樣器,否則,作為額外取樣器新增在自採樣器後面。
    11. 吞吐量控制器:允許使用者設定被執行頻率。
    12. 執行時長控制器:控制其下子測試元件允許執行的時長。(單位:秒)
    13. 模組控制器:

兩種指令碼錄製方法

badboy(推薦)

  如果訪問者使用的瀏覽器不能完全支援頁面指令碼,出現指令碼錯誤,並彈框,事實上,指令碼錯誤並不會影響網頁瀏覽,因此,該警告無任何作用,可以在瀏覽器的intenet選項,高階屬性頁,進入到瀏覽標籤,並選中“禁止指令碼除錯”,以後就不會在收到這種警告了。

  badboy中的檢查點

  通過tools下的add Assertion for selection,對選擇的部分新增檢查點。

badboy中的引數化-文字

  建立引數化列表:在 variables中選擇New Variable,新增引數列表。在請求中將請求資料使用${引數名稱}進行替換(在step中右鍵,properties,設定repeat為按照關鍵字進行迴圈即可。)

問題:
  1,中文可能有亂碼,改下請求中的編碼屬性即可,utf-8或gbk。
  2,檢查點中也可以修改為引數化中的變數。

badboy中的引數化-資料庫

ODBC;tools-datasource,前提,安裝ODBC的包,並配置資料來源。
data source放到指令碼最前端。在tools下設定的Data Source拖到指令碼最前端,因為是按順序執行的。

badboy進行併發

tools---run background thread,設定併發數,每個併發之間的間隔時間等。

badboy中的報告

view---report。

badboy中的斷點

和LR一樣,對請求使用toggle break point,進行新增/取消斷點,進行除錯。

代理錄製回放

分組:
  不對樣本分組:所有請求全部羅列。
  在組間新增分隔:加入一個虛擬的一分割線命名的動作。
  每組放入一個新的控制器:執行時按控制器給輸出結果。
  只儲存每個組的第一個樣本:儲存第一次url請求。

步驟:

  1. 建立測試計劃,建立執行緒組;
  2. 新增非測試元件,HTTP代理服務;
  3. 新增完代理後,啟動代理,並需要對intent 選項設定區域網設定為和代理相同。同時需要在錄製完成後,取消區域網設定,否則連線網路會出現問題(IE---intenet選項---連線---區域網設定)。

元件的作用域和執行順序

執行順序

  1. 配置元件:會影響其作用範圍內的所有元件。
  2. 前置處理程式:在其作用範圍內的每一個sampler元件之前執行。
  3. 定時器:在其作用範圍內的每一個sampler有效。
  4. 取樣器(sampler):sampler元件不和其他元件相互作用,因此不存在作用域的問題。
  5. 後置處理器:在其作用範圍內的每一個sampler元件之後執行。
  6. 斷言:在其作用範圍內的每一個sampler元件執行後的結果執行校驗。
  7. 監聽器:收集其作用範圍內的每一個sampler元件的資訊並呈現。

作用域

  每個元件的層次結構,判斷每個元件的作用域。如果在同一作用域範圍內有多個同一型別的元件,則這些元件按照他們在測試計劃中的上下順序依次執行。

  前置處理器、後置處理器和斷言等原件功能對取樣器作用,因此,如果他們的作用域內沒有任何取樣器,則不會被執行。

JMeter實戰

JMeter之引數化

  1.badboy中引數化。
  2.JMeter裡引數化。
    前置處理器-使用者引數。
    利用配置元件-cvs data set config(利用檔案進行引數化)。
    隨機引數:選項-函式助手,random。

JMeter之集合點

  概念和LR中的一樣,注意集合點位置,和LR一樣,要放到集合的操作之前。

  只對最靠近的下一個請求起作用。

JMeter之檢查點

  和LR中的檢查點一樣,就是斷言中的響應斷言。

  1. 響應斷言:斷言結果一般成功顯示一行,否則顯示多行。
  2. 變數斷言:在斷言中使用變數,而非固定值。
  3. 斷言持續時間:設定斷言持續時間,超過則斷言失敗。
  4. 返回結果大小斷言:size assertion,對返回結果大小進行設定,不符則斷言失敗。

JMeter之動態關聯

  和LR中的一致。關聯方式:正則表示式,Xpath(一般XML的時候用的多)

  什麼地方需要關聯?
    回放指令碼,看是否正確,數字+字母混合組合(如session,cookie等),找開發確認。
  關聯步驟:
    需要關聯哪個引數?
    引數在哪個請求後產生的?
    在引數請求後使用正則提取。

  新增-後置處理器-正則表示式提取器:
    正則表示式:正則需要在小括號裡面寫。
    模板:如果正則表示式去了不止一個引數,則需要指定引數組別,$1$表示取第一個值,$2$表示取第二個值。
    匹配數字:0隨機,-1取所有值,1,2,。。。以陣列形式儲存。

LR一樣的圖形監控擴充套件(外掛)

  jmeter圖形監控,相比LR相對較弱。能監控Windows或Linux嗎?可以。

  下載地址:https://jmeter-plugins.org/downloads/all/

  步驟:

    1.JMeterPlugins.jar:將該包複製到JMeter的lib目錄下的ext目錄下,重新啟動JMeter。(檢視新增-監聽器中出現JP開頭的則載入成功)

    2.將serverAgent目錄及下面的檔案拷貝到我們測試的伺服器上,然後點選開啟(Linux開啟的是.sh,Windows點選的是.bat),預設埠4444。

    3.新增-監聽器[email protected] Metrics Collector。新增監聽資訊即可。

jmeter實戰-web程式

背景:XX網站,環境:Windows,
需求:併發登入效能測試。
場景:1S增加2個執行緒,分別看20,40,60併發下的表現;
監控:成功率、響應時間、標準差、CPU、MEM、IO等;資源監控需要在Windows下部署agent(server agent)。

步驟:
1,badboy錄製,匯入jmeter;
2,引數化,檢查點,集合點;
3,指標監控,資源控制;
4,報告(可匯出到xls,自行生成報表)。

Jmeter實戰-FTP程式

  FTP使用使用者分類:real使用者、guest使用者、anonymous(匿名)使用者
  FTP傳輸方式:ASCII,二進位制。
  傳輸細節:TCP/IP協議中,FTP標準TCP埠號為21,Port方式資料埠為20。FTP的任務是從一臺計算機將檔案傳送給另外一臺計算機,不受作業系統的限制。
  工作方式:Standard(PORT,主動方式),Passive(PASV,被動模式)。

服務方式:
  1、上傳一個檔案到伺服器(PUT)
  2、下載一個檔案本地(GET)

配置(FTP request):

  伺服器名稱或IP:填寫FTP的IP
  remote file:遠端路徑
  local file:本地檔案

jmeter實戰-資料庫MySQL

需求:測試使用者表(select)
環境準備:MySQL驅動(mysql connect-java.jar),jmeter-JDBC配置,jmeter-JDBC請求。

步驟:
1,測試計劃中加入jar包。(新增目錄或jar包到classPath)。
2,JDBC配置:新增JDBC connection Configturation。

 

 


  driver=com.mysql.jdbc.Driver
  url=jdbc:mysql://localhost:3306/jdbc?userUnicode=true&characterEncoding=utf-8&autoReconnect=true&allowMultiQueries=true(allowMultiQueries=true:表示支援一次執行多條sql語句)

  username=root
  password=root
3,新增JDBC request:選擇query type,輸入SQL語句。
4,新增斷言結果,監聽器(summary report)。

  如果需要實現多個不同的使用者使用不同的SQL,可以通過把整條SQL語句引數化來實現。例如,把SQL語句放在CSV檔案中,然後在JDBC request的query中使用引數代替${SQL_Statement}。

jmeter分散式效能測試

原理:和LR的agent差不多。jmeter由Java開發,耗記憶體,CPU,所以大併發下還需要分散式。

步驟:

  1,關閉防火牆。
  2,在所要執行jmeter並作為負載生成器的機器上安裝jmeter,並確定其中一臺機器作為主的controller,其他機器作為agent,然後執行所有agent機器上的jmeter-server檔案。
  3,在controller機器的jmeter的bin目錄下,找到jmeter.properties的remote_hosts中,修改對應的IP和埠。
  4,啟動controller機器上的jmeter應用,選擇選單“執行”--->“遠端啟動”來分別啟動agent,也可以直接選擇“遠端全部啟動”來將所有的agent啟動。

jmeter中的監聽器及測試結果分析

常用監聽器:
  斷言結果:
  檢視結果樹:
  聚合報告:
  用表格檢視結果:
  圖形結果:
  aggregate graph:

指標(時間單位都是毫秒):
  label:定義HTTP請求名稱;
  samples:本次場景中一共完成了多少個請求;
  average:平均響應時長;
  median:響應時間中值50%使用者的響應時長;
  90%Line:90%使用者響應時間;
  Min:訪問頁面最小響應時長;
  Max:訪問頁面最大響應時長;

  error:出錯率(錯誤請求數量/請求總數量);

  throughput:吞吐量(預設表示每秒完成的請求數);
  KB/sec:流量(每秒從伺服器端接收到的資料量)。

jtl檔案分析

  在效能測試過程中,往往將結果儲存在一個檔案中,既可以儲存測試結果,也可以為日後效能測試報告提供更多的素材。jtl檔案可以提供多種格式的編寫,而一般我們都是將其以csv的格式記錄。

  在監聽器中的configure可以配置對應的儲存欄位資訊(建議勾選:save field name,save assertion failure message),指定對應儲存位置即可。
此時檔案會有如下項:timeStamp,elapsed,responseCode,responseMessage,ThreadName,dataType,success,failureMessage,bytes,Latency
請求發出的絕對時間,響應時間,請求的標籤,返回碼,返回訊息,請求所屬的執行緒,資料型別,是否成功,失敗資訊,位元組,延遲。

 

windows環境下的可以使用performer(效能監視器)工具。

自動化效能測試平臺環境搭建(Jenkins+ant+Jmeter)

  持續整合:團隊成員經常整合他們的工作,每次整合都通過自動化構建(包括編譯、釋出、自動化測試)來驗證,從而儘快的發現整合錯誤。大大減少整合的問題,讓團隊儘快的開發內聚的軟體。
  Jenkins,基於Java的持續整合工具,用於監控持續重複的工作,包括持續的版本釋出/測試專案,監控外部呼叫執行的工作。

  專案構建:通過構建工具對多個專案檔案進行統一的編譯和執行,比如對Jmeter指令碼的批量執行。
  ant:是一個將軟體編譯、測試、不熟等步驟聯絡在一起加以自動化的工具,大多用於Java環境中的軟體開發。

ant下載安裝:
  下載後解壓到任意檔案,配置Windows環境變數。
  ANT_HOME:
  path:;ANT_HOME/bin
  classpath:ANT_HOME/lib

  dos命令下:ANT_HOME/bin/ant - version

jenkines下載:
  解壓後放在一個磁碟空間大的地方,然後點選setup.exe安裝完成後,在瀏覽器中輸入localhost:8080(預設為8080埠,如果被佔用,修改Jenkins安裝目錄下的配置檔案jenkines.xml中的httpPort=8080)。

Jenkins+ant+Jmeter自動化測試平臺搭建:
步驟:
  1,錄製Jmeter指令碼;
  2,將Jmeter安裝目錄下的extras目錄下的“ant-jmeter-1.1.1.jar"這個jar包放在ant的安裝目錄的lib目錄下;
  3,配置Jmeter的extras目錄下build.xml檔案。(該配置檔案作用為使用ant來批量構建Jmeter下XX資料夾裡面的所有指令碼,並按照指定格式來生成報告);
  4,使用ant編譯驗證Jmeter的build檔案(將配置好的build檔案放在ant目錄的bin目錄下)。進入ant目錄的bin目錄下,使用命令ant -filename build檔名.xml;
  5,部署到持續整合平臺Jenkins。(選擇ant的build檔案進行整合)。

jmeter介面自動化

  1、在excel中維護用例,包含域名、url、方法(get還是post)、 引數 、預期結果(可以是多個),然後轉化程csv格式,這樣一來我們只需要在excel中維護我們的用例就好了(當然如果需要,可以新增其他欄位,比如標識欄位,其值為true,標識執行該用例,否則不執行)
  2、新增一個CSV Data Set Config,把文字路徑填進去;

  3、新增BeanShell PreProcessor和BeanShell PostProcessor,主要 目的是為了處理中文亂碼,在script中輸入:prev.setDataEncoding("utf-8")。

    jmetetr自帶有兩個函式
    ${__javaScript(encodeURIComponent('${token}'))}
    ${__urlencode('${token}'))}
    我們藉助這兩個函式來實現,這樣在變數或者csv中填寫中文,在請求中呼叫這兩個函式來編碼;

  4、新增if控制器,根據方法值,來判斷執行get還是post的請求條件設定為:"${mymeth}"=="post"

  5、設定斷言,判斷我們的結果是否正確,
  6、根據用例數,設定迴圈次數
  7、執行,檢視結果

問題及解決辦法

 1、問題:在csv中資料為json格式的資料,在jmeter中無法完整的取值
  分析:json格式資料,中間有逗號,我們都知道csv是根據逗號來分割的,這會導致我們取值錯位。
  解決方法:在CSV Data Set Config下將【Allow quoted data?】設定程true即可。

 

  2、URL回寫處理使用者對話:使用HTTP URL Re_writing modifier,進行URL引數回寫。

  3、MD5資料加密:有時候我們請求的引數可能需要加密,比如登入介面中的密碼可能需要經過md5加密,

  第一種方法:這種方法比較簡單,jmeter內建了一個md5的函式,可以直接使用。其中引數username是使用者名稱,正常填寫,password是密碼經過md5加密如果沒有此函式,就安裝下。

然後使用${_MD5(密碼)}

  第二種方法:需要有一定的程式設計技術,利用beanshell完成,大致步驟如下:
    1、匯出md5的演算法為jar包,可以找開發幫忙完成
    2、把該jar包copy到jmeter的lib/ext檔案目錄下
    3、jmeter裡新建beanshell sampler,並編寫程式碼
      import hehe.md5.Str2MD5;//包名,不知道為開發
      String res = newStr2MD5().MD5("xiaoqiang");//new一個物件出來並呼叫方法獲取加密後的返回
      System.out.println(res);//列印結果
      vars.put("md5",res.toString());//把加密後的資料儲存到md5這個變數裡,供在jmeter裡使用

Jmeter其他應用

使用jmeter來造資料

  引用來源:http://blog.51cto.com/xqtesting/1604820

  步驟:

  1、開啟jmeter,建立一個執行緒組;
  2 、滑鼠右鍵單機執行緒組,建立一個jdbc connection configuration: 對資料庫的地址、使用者名稱和密碼進行填寫;
  3 、建立使用者引數:可根據要插入資料中,不同欄位;建立引數函式: 函式的產生,由函式生成器產生, 不同函式的產生: 也可以用計數器當做函式使用;
  4 、執行緒組裡面新增一個jdbc request: 在jdbc request裡面新增sql語句: 其中,對欄位有特殊要求的(即:欄位被做引數化,使用函式的欄位),用特定"${你的引數}"格式,在SQL中進行體現;
  5 、新增聚合報告和檢視結果樹,根據自己需要的數量級,進行查資料操作:這樣就可以進行資料的插入了。

心得:
  1、小資料量的情況下,使用java通過介面或者直接插資料,跟使用jmeter應該時間上差不多,但是到達百萬級以上的資料量,使用jmeter多執行緒,速度會明顯快很多。
  2、jmeter的操作比較簡單,如果沒有現成的工程,搭建環境比較麻煩,除錯程式碼有點煩。但是用jmeter的話,只需要一個簡單的sql,幾步操作步驟,就可以完成任務,優勢比較明顯。

 

JMeter從資料庫獲取資料並作為變數傳輸

引用來源:https://www.cnblogs.com/wuyonghuan/p/7479582.html

在Jmeter中使用Selenium WebDriver完成測試

引用來源:http://blog.51cto.com/xqtesting/1947396

fiddler抓取請求匯出到JMeter

引用來源:https://www.cnblogs.com/heiyexiaoguai/p/5859200.html