雲智慧壓測實戰分享之JMeter腳本錄製實例

在前面的《雲智慧壓測實戰分享之JMeter工具使用初探》中我們對JMeter的功能特點和常用元件做了簡單介紹,接下來說說JMeter的腳本錄製。JMeter有多種錄製腳本方法,其中最常見的是通過第三方工具Badboy錄製,另外還有JMeter自身設置(Http代理服務器+IE瀏覽器設置)來錄製腳本,下面以壓測寶爲例來介紹下Badboy腳本錄製過程。

  注:使用JMeter的代理或是Badboy進行錄製的時候,操作不能太快,不然容易造成錄製失敗。

  1、打開Badboy工具,在地址欄目中輸入被測試項目的地址。注意:Badboy啓動默認是錄製狀態,爲紅色按鈕,如圖:

  錄製完成後點擊工具欄旁邊黑色按鈕,結束錄製。

  2、選擇“文件”--Export to JMeter…

  3、打開JMeter工具,選擇“文件”-->“打開”選擇剛纔保存的文件(.jmx類型),將文件導入進來了。

  錄製的腳本一定要添加HTTP Cookie Manager,否則腳本運行失敗。

  對於JMeter來說,一個測試計劃只能有一個Cookie管理器,因爲當多個Manager存在時,JMeter沒有方法來指定使用哪個Manager,同時一個Cookie Manager中存儲的Cookie也不能被其他Cookie Manager所引用,所以同一個測試計劃中不建議使用多個Cookie Manager。

  JMeter壓測實例

  下面我們用幾個JMeter壓測實例來熟悉一下JMeter的使用。

  1、使用JMeter進行http接口測試

  Jmter工具設計之初是用於性能測試的,它在實現對各種接口的調用方面已經比較成熟,因此可直接使用JMeter工具來完成對Http接口的測試。

  1)、開發接口測試案例的整體方案

  • 第一步:我們要分析出測試需求,並拿到開發提供的接口說明文檔;

  • 第二步:從接口說明文檔中整理出接口測試案例,裏面要包括詳細的入參和出參數據以及明確的格式和檢查點。

  • 第三步:和開發一起對接口測試案例進行評審。

  • 第四步:結合開發庫,準備接口測試案例中的入參數據和出參數據,並整理成csv格式的文件。

  • 第五步:結合接口測試案例文檔和csv格式的數據文檔,做接口測試案例的自動化案例開發。

  2)、接口自動化適用場景:

  目前設計的自動化接口測試案例有兩個運行場景:

  a. 測試前置、開發自測:一個新的自動化接口測試案例開發完成後,直接發給接口對應的開發,安排在開發本地環境執行,一旦開發確認完成接口開發,就開始執行接口測試案例,基本上可以實時拿到測試結果,方便開發快速做出判斷。【開發本地運行的方式就是打開JMeter工具,導入JMX文件,開始執行即可。】

  b. 迴歸測試:開發本地測試通過後,或整個需求手工測試通過後,把自動化的接口測試案例做分類整理,挑選出需要納入到迴歸測試中的案例,在持續集成環境重新準備測試數據,並把案例納入到持續集成的job中來,這些用於迴歸的接口測試案例需要配置到持續集成平臺自動運行。

  3)、接口測試環境準備

  •  Jdk1.6或以上:http://www.oracle.com/technetwork/java/javase/downloads/index.html

  •  JMeter,下載址址:http://jmeter.apache.org/download_jmeter.cgi

  •  插件的下載安裝地址:http://www.jmeter-plugins.org/

  4)、創建工程:

  a、打開JMeter:下載好JMeter後,雙擊bin目錄下的jmeter.bat文件:

  

  b、添加線程組:在“測試計劃”上點擊鼠標右鍵-->添加-->threads(Users)-->線程組,添加測試場景設置組件,接口測試中一般設置爲1個“線程數”,根據測試數據的個數設定“循環次數”。

  

  c、添加“HTTP Cookie管理器”:

  d、添加“Http請求默認值”組件,當被測系統有唯一的訪問域名和端口時,這個組件很好用:

  e、在“HTTP 請求默認值”組件配置頁面,填寫被測系統的域名和端口,http請求的實現包版本以及具體協議類型,線程組裏的所有“HTTP Sampler”可默認使用此設置。

  

  f、在“線程組”裏添加“HTTP 請求”的Sampler

  

  g、在HTTP請求設置頁面,錄入被測接口的詳細信息,包括請求路徑,對應的請求方法,以及隨請求一起發送的參數列表:

  

  h、設置檢查點:在被測接口對應的“HTTP 請求”上,添加“響應斷言”

  

  i、在設置頁面上添加對相應結果的正則表達式存在性判斷即可:

  

  j、添加監聽器:方便查看運行後的結果

  

  上述步驟完成了一個簡單測試實例的創建,複雜測試實例均在此基礎上擴展完成。使用JMeter工具開發的接口測試案例,一個子系統建議放在同一個“測試計劃”中,流程測試可以通過“線程組”來區分,這樣也便於設定不同的測試數據個數。比較獨立的接口,可以統一放在一個線程組內,順序完成測試。

  流程性接口的測試:如果要測試的接口可以組成一個流程,只需要順序添加多個“HTTP 請求”的Sampler,各請求之間可以提取需要在上下文傳遞的數據作爲參數,以保證流程中數據的一致性。

  2、JMeter分佈式測試

  在使用JMeter進行性能測試時,如果併發數比較大(比如最近項目需要支持1000併發),單臺電腦(CPU和內存)可能無法支持,這時可以使用JMeter提供的分佈式測試的功能。

  1)、JMeter分佈式執行原理:

  JMeter分佈式測試時,選擇其中一臺作爲調度機(master),其它機器做爲執行機(slave)。

  執行時,master會把腳本發送到每臺slave上,slave 拿到腳本後就開始執行,slave執行時不需要啓動GUI,我理解它應該是通過命令行模式執行的。

  執行完成後,slave會把結果回傳給master,master會收集所有slave的信息並彙總。

  2)、執行機(slave)配置:

  a、slave機上需要安裝JMeter,具體如何安裝這裏不詳細介紹了。

  b、添加環境變量:JMETER_HOME=D:\B_TOOLS\apache-jmeter-2.13,此處爲你JMeter的路徑

  c、啓動bin目錄下的:jmeter-server.bat,啓動成功如下圖:

  

  d、上圖上標紅的IP和端口會在master裏配置時用到。IP就是slave機器IP,端口默認是1099,端口也可以自定義,這裏我自定義爲1000,這個後面會講。

  e、多臺slave的話,重複1~4步驟就好。

  3)、調度機(master)配置:

  a、腳本:簡單的一個訪問壓測寶的腳本: 

  b、找到JMeter的bin目錄下jmeter.properties文件,修改如下配置,IP和Port是slave機的IP以及自定義的端口(這裏端口我自定義爲100,後面會講如何自定義):

        remote_hosts=10.13.223.202:1000,10.13.225.12:1000

    多臺slave之前用","隔開,我這配置了2臺,可以看到標紅的這個就是上面截圖slave的IP和Port.

  c、打開JMeter,選擇運行,有運程啓動、運程全部啓動兩個選項:

  

  d、選擇遠程啓動-->10.13.225.12:1000

    a) master結果,這裏我只啓動了10.13.225.12:1000這一臺slave,所以只有一個結果(線程數和循環次數都是1):

  

    b) slave控制檯信息:

  

  e、選擇遠程啓動-->遠程全部啓動:

    a) master結果,全部啓動,我配置了2臺slave,所以有兩次執行結果:

  

  4)、自定義端口:

  上面其實已經實現了JMeter的分佈式測試,這部分主要介紹下如何自定義slave端口:

  a、slave:在slave機的JMeter的bin目錄下,找到jmeter.properties文件,修改如下兩個配置項,比如我這裏修改爲1888:

      server_port=1888

      server.rmi.localport=1888

  b、啓動slave機上的jmeter-server.bat,如下圖,端口已經修改爲:1888

  

  c、master:修改master機器的jmeter.properties文件:

      remote_hosts=10.13.223.202:1000,10.13.225.12:1888

  d、重啓jmeter.bat,如下圖,端口已經變了:

  

  5)、其它說明:

  a、調度機(master)和執行機(slave)最好分開,由於master需要發送信息給slave並且會接收slave回傳回來的測試數據,所以mater自身會有消耗,所以建議單獨用一臺機器作爲mater。

  b、參數文件:如果使用csv進行參數化,那麼需要把參數文件在每臺slave上拷一份且路徑需要設置成一樣的。

  c、每臺機器上安裝的JMeter版本和插件最好都一致。

  3、搭建持續集成接口測試平臺

  下面介紹最後一個實例,搭建持續集成接口測試平臺(Jenkins+Ant+JMeter)。

  1)、環境準備:

  JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html

  Ant:http://ant.apache.org/bindownload.cgi

  Jenkins:http://jenkins-ci.org/

  2)、Jemter腳本準備:

  a、腳本目錄:D:\B_TOOLS\apache-jmeter-2.13\demo

  b、腳本內容:都是訪問壓測寶或google首頁

  Script_yacebao.jmx  

  Script_google.jmx

  3)、ANT的build.xml代碼準備:

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28

  29

  30

  31

  32

  33

  34

  35

  36

  37

  38

  39

  40<xslt p="" <="" in="${jmeter.result.jtlName}">

  41 out="${jmeter.result.htmlName}"

  42 style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"/>

  43

  44

  45

  46

  47

  48

  49

  50

  51

  4)、配置Jenkins Job並運行:

  a、job配置如下:

  b、在job的workspace目錄下會生成結果報告:

  c、TestReport.html:

  5)、配置發送郵件功能

  a、自已寫一個發送郵件的功能並打成sendmail.jar包,放在job的workspace目錄中

  b、jenkins增加構建步驟

  a)進入到測試報告的目錄

  b) 調用sendmail.jar命令發送郵件

  說明:

  由build3.xml的第12、13行可知,報告文件生成目錄爲:${env.WORKSPACE}/results/${env.BUILD_ID},所以這裏要先cd到具體執行的那個build_id目錄下。

  可以把上面的兩行命令寫在成一個批處理文件,例如第1步有個sendmail.bat文件就是,然後調用時直接寫sendmail.bat就好了。

  持續集成接口測試平臺(Jenkins+Ant+JMeter)就此搭建成功,以上是關於Jmeter腳本錄製和壓測的幾個實例,接下來爲您帶來進階的《雲智慧壓測實戰分享之JMeter場景設置與監控》,敬請期待。

轉載地址:http://news.chinabyte.com/175/14014175.shtml

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章