整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          用JMeter+ANT進(jìn)行接口自動化測試,并生成HT

          用JMeter+ANT進(jìn)行接口自動化測試,并生成HTML測試報告

          伙伴們,用python做接口自動化是不是寫代碼比較繁瑣,而且沒有python代碼基礎(chǔ)的小伙伴根本無從下手對吧!今天我們來學(xué)習(xí)一下如何使用JMeter工具實(shí)現(xiàn)接口自動化測試。


          01 安裝

          1、安裝JDK,配置java環(huán)境變量(安裝過程略)

          2、安裝Jmeter(安裝過程略)

          3、安裝ANT

          3.1、下載安裝

          下載地址:http://ant.apache.org/bindownload.cgi

          3.1.1、下載后解壓到指定位置即可,比如:F:\apache-Ant

          3.1.2、將jmeter所在的目錄下extras子目錄里的ant-jmeter-1.1.1.jar復(fù)制到ant所在目錄lib子目錄之下,這樣ant運(yùn)行時才能找到”

          org.programmerplanet.ant.taskdefs.jmeter.JMeterTask”這個類,從而成功觸發(fā)JMeter腳本。

          3.2、配置環(huán)境變量

          添加環(huán)境變量(以windows為例)

          ANT_HOME F:\apache-Ant

          CLASSPATH %ANT_HOME%\lib

          Path %ANT_HOME%\bin

          3.3、驗(yàn)證安裝結(jié)果,命令行輸入ant -version,出現(xiàn)版本信息則安裝成功


          2 ANT與Jmeter

          4.配置ANT與Jmeter的配置文件


          4.1.1、配置ANT配置ant編譯文件build.xml


          拷貝下面的內(nèi)容與新建的txt文件中,并將此文件改名為:build.xml

          <?xml version="1.0" encoding="utf-8"?><project name="pc" default="all" basedir="F:\apache-jmeter-5.0\jmeterAutoTest">
              <tstamp>
                  <format property="time" pattern="yyyyMMddhhmm" />
              </tstamp>
              
              <property name="jmeter.home" value="F:\apache-jmeter-5.0" />
              
              <property name="jmeter.result.jtl.dir" value="F:\apache-jmeter-5.0\jmeterAutoTest\pc\resultlog\jtl" />
                  
              <property name="jmeter.result.html.dir" value="F:\apache-jmeter-5.0\jmeterAutoTest\pc\resultlog\html" />
              
              <property name="ReportName" value="TestReport" />
            
              <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
              <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${test}${time}.jtl" />
              
              <property name="mail_from" value="xx@163.com" />
              <property name="mail_to" value="xx@qq.com" />
              
               
              <target name="all">
                  <antcall target="test" />
                  <antcall target="report" />
                  <antcall target="send" />
              </target>
              <target name="test">
                  <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
                  <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
                      
                      <testplans dir="F:\apache-jmeter-5.0\jmeterAutoTest\pc\script" />
                  </jmeter>
              </target>
          
              <path id="xslt.classpath">
                  <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
                  <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
              </path>
          
              <target name="report">
                  <xslt        classpathref="xslt.classpath"
                      force="true"
                  in="${jmeter.result.jtlName}" 
                  out="${jmeter.result.htmlName}" 
                  style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
                      <param name="dateReport" expression="${time}"/>
              </xslt>
                  
                  <copy todir="${jmeter.result.html.dir}">
                      <fileset dir="${jmeter.home}/extras">
                          <include name="collapse.png" />
                          <include name="expand.png" />
                      </fileset>
                  </copy>
              </target></project>

          4.1.2、修改build.xml文件,按照實(shí)際的文件路徑配置好


          4.1.3 、配置jmeter.properties

          配置jmeter報告輸出格式為xml,在jmeter/bin目錄下jmeter.properties文件中修改jmeter.save.saveservice.output_format=csv為jmeter.save.saveservice.output_format=xml,并去掉前面的注釋符號#


          4.1.4、準(zhǔn)備測試腳本數(shù)據(jù)

          新建文件夾pc,pc文件夾分別新建buildfile ,resultlog,script 三個文件夾,buildfile文件夾放入build.xml文件,resultlog里分別新建html,jtl文件夾。


          注:Resultlog


          Html文件夾裝的是ant 轉(zhuǎn)化后的結(jié)果


          Jtl文件裝的是meter生成的結(jié)果


          Script:Jmeter執(zhí)行的腳本


          3 測試報告

          5、打開命令行進(jìn)行build.xml文件所在的目錄,輸入ant即可生成報告,報告存放在html文件夾里

          生成的測試報告如下

          6、測試報告優(yōu)化

          用jmeter自帶的測試報告得到的測試報告信息并不是很全,這里參考網(wǎng)上的方法,做一個優(yōu)化


          6.1.1、下載優(yōu)化模板jmeter-results-shanhe-me.xsl,拷貝到j(luò)meter的extras目錄中,如C:\apache-jmeter-2.12\extras


          6.2.2、設(shè)置測試輸出報告要輸出的內(nèi)容,同樣在jmeter.properties中,設(shè)置需要輸出的內(nèi)容為true,并去掉前面的注釋符號#,這里全部設(shè)置成true


          修改前:

          修改后:

          jmeter.save.saveservice.data_type=truejmeter.save.saveservice.label=truejmeter.save.saveservice.response_code=true# response_data is not currently supported for CSV outputjmeter.save.saveservice.response_data=true# Save ResponseData for failed samplesjmeter.save.saveservice.response_data.on_error=falsejmeter.save.saveservice.response_message=truejmeter.save.saveservice.successful=truejmeter.save.saveservice.thread_name=truejmeter.save.saveservice.time=truejmeter.save.saveservice.subresults=truejmeter.save.saveservice.assertions=truejmeter.save.saveservice.latency=true# Only available with HttpClient4#jmeter.save.saveservice.connect_time=truejmeter.save.saveservice.samplerData=truejmeter.save.saveservice.responseHeaders=truejmeter.save.saveservice.requestHeaders=truejmeter.save.saveservice.encoding=truejmeter.save.saveservice.bytes=true# Only available with HttpClient4
          #jmeter.save.saveservice.sent_bytes=truejmeter.save.saveservice.url=truejmeter.save.saveservice.filename=truejmeter.save.saveservice.hostname=truejmeter.save.saveservice.thread_counts=truejmeter.save.saveservice.sample_count=falsejmeter.save.saveservice.idle_time=true

          6.2.3、設(shè)置build文件的報告模板為優(yōu)化后的模板jmeter-results-shanhe-me.xsl

          6.2.4、按前面的方式再次用ant構(gòu)建測試,查看優(yōu)化后的測試報告

          用背景

          之前在LS公司時,產(chǎn)品有多端,要走完一個完整的業(yè)務(wù)流程,手動測試造數(shù)據(jù),總時很麻煩;

          但是UI測試又不是那么的穩(wěn)定,維護(hù)起來效果也不太好;

          所以呢,通過jmeter接口實(shí)現(xiàn)業(yè)務(wù)流程的自動化了,但是CRM并沒有前后端分離,那怎么通過接口來實(shí)現(xiàn)呢,當(dāng)時的處理方法,就是通過jmeter自身的代理,抓包后,處理下相應(yīng)參數(shù)來銜接周邊系統(tǒng);

          當(dāng)然,因?yàn)橐缍?,有些接口headers里面的Content-Type是不一樣的,這樣的話,就要用多線程了,而且前后順序也是有規(guī)定的。

          主題分享

          今天要分享的就是,抓包的接口返回的結(jié)果是html時,怎么來截取自己想要的內(nèi)容

          通過抓包的方式,抓過來的接口,有些返回結(jié)果是html的;一般簡單的,可以用jmeter自帶的正則表達(dá)式匹配出來;但是有些復(fù)雜的,甚至要同時取到返回結(jié)果的多個值時,貌似就有點(diǎn)力不從心了。

          還好jmeter提供了可以編寫java代碼的beanshell,可以通過后置處理器(BeanShell PostProcessor)來處理,當(dāng)時用到的代碼如下:

          四月份趕上跳槽高峰期,面試中,接口測試部分的關(guān)聯(lián)是經(jīng)常被提及的知識點(diǎn)之一,經(jīng)常有同學(xué)因此錯失良機(jī),“關(guān)聯(lián)”可謂是重中之重了,今天就寫一篇關(guān)于Jmeter關(guān)聯(lián)的文章,以作備忘。

          所謂關(guān)聯(lián),通俗的講,就是一個請求響應(yīng)的結(jié)果作為另一個請求提交的參數(shù), 在接口測試中,當(dāng)測試一套完整的業(yè)務(wù)邏輯時,頻繁的需要使用關(guān)聯(lián)。

          比如電子商城的購物車模塊,需要測試購物車商品的刪除實(shí)現(xiàn),首先,訪問購物車接口,獲取所有的購物信息,然后再取出某一條購物信息的 id,再訪問刪除接口。

          那么,Jmeter 中的關(guān)聯(lián)是如何實(shí)現(xiàn)的呢?Jmeter 中的關(guān)聯(lián)實(shí)現(xiàn)策略不止一種,接下來,我們就通過一個案例給大家演示關(guān)聯(lián)實(shí)現(xiàn)的相關(guān)組件。

          需求:兩個http請求,請求A訪問傳智播客官網(wǎng),請求B訪問百度 ,請求A將傳智播客官網(wǎng)源碼中的 title 標(biāo)簽的值取出,傳遞給請求B,在請求B中作為關(guān)鍵字搜索這個 title 值。

          上述需求實(shí)現(xiàn),大致需要三步:

          1、搭建測試計劃框架,設(shè)計取樣器以及結(jié)果樹;

          2、將請求 A 中的結(jié)果使用 Jmeter 關(guān)聯(lián)組件進(jìn)行提??;

          3、將步驟2中提取的結(jié)果傳遞給請求B,執(zhí)行并查看結(jié)果。

          接下來,我們就看一下具體實(shí)現(xiàn):

          搭建測試計劃框架,設(shè)計取樣器以及結(jié)果樹

          這一步應(yīng)該屬于 Jmeter 的最基本實(shí)現(xiàn),在此就不在贅述了。

          將請求 A 中的結(jié)果使用 Jmeter 關(guān)聯(lián)組件進(jìn)行提取

          執(zhí)行該步驟時,我們選用了 Jmeter 的內(nèi)置組件: XPath 提取器, 該提取器是在對標(biāo)簽語言執(zhí)行結(jié)果提取時的常見組件實(shí)現(xiàn)。

          首先,我們需在在被提取的取樣器上添加該提取器:

          然后,設(shè)置提取器的相關(guān)屬性(注意:從 html 文檔提取數(shù)據(jù),一定要勾選 use tidy)。

          最后,提取器執(zhí)行時,提取的結(jié)果將被賦值給組件中聲明的變量(也即引用名稱 myTitle)。

          將步驟2中提取的結(jié)果傳遞給請求B,執(zhí)行并查看結(jié)果

          A中可以提取到傳智播客官網(wǎng)的 title 標(biāo)簽的值,在請求B 中,直接以QueryString的方式提交數(shù)據(jù),然后執(zhí)行,即可查詢到相關(guān)結(jié)果了。

          總結(jié)

          Jmeter 中XPath 關(guān)聯(lián)實(shí)現(xiàn),總需三步:

          1.搭建測試計劃框架,編寫取樣器,添加查看結(jié)果樹;

          2.添加XPath 提取器按照 XPath 表達(dá)式提取數(shù)據(jù)(提取的數(shù)據(jù)被保存進(jìn)了變量);

          3.在需要調(diào)用數(shù)據(jù)的請求中以 ${變量名} 的方式調(diào)用提取到的結(jié)果。


          主站蜘蛛池模板: 亚洲sm另类一区二区三区| 国产福利电影一区二区三区久久久久成人精品综合 | 精品欧美一区二区在线观看| 久久se精品动漫一区二区三区| 精品乱子伦一区二区三区高清免费播放| 日本v片免费一区二区三区| 日本国产一区二区三区在线观看 | 日本一区二区三区在线观看| 中文字幕一区二区在线播放| 黄桃AV无码免费一区二区三区| 亚洲AV无码一区二区三区在线观看 | 亚洲av无码一区二区三区人妖 | 国产精品女同一区二区| 性无码一区二区三区在线观看| 国产成人久久精品一区二区三区| 国99精品无码一区二区三区| 久久久久人妻一区精品色| 蜜臀AV免费一区二区三区| 亚洲av无码一区二区三区人妖| 精品国产AV无码一区二区三区 | 久久精品一区二区三区AV| 伊人无码精品久久一区二区| 国产精品一区电影| 三上悠亚亚洲一区高清| 国模私拍一区二区三区| 国产伦精品一区二区三区女| 国产怡春院无码一区二区| 无码人妻一区二区三区精品视频| 国模精品一区二区三区| 无码国产精品一区二区免费vr| 中文字幕av一区| 日韩少妇无码一区二区三区| 熟妇人妻一区二区三区四区| 91秒拍国产福利一区| 精品一区二区三区在线观看l | 无码人妻av一区二区三区蜜臀 | 国产精品亚洲高清一区二区| 亚洲国产成人一区二区三区| 亚洲欧洲无码一区二区三区| 亚洲一区二区视频在线观看| 精品性影院一区二区三区内射 |