关于Jmeter+Ant+Jenkins作为接口、性能自动化框架的误区
說明:Apach-Jmeter有完善的桌面客戶端,關聯數據的處方方式,各種參數化的方式,各種Jar包的擴展,也可以用作抓包工具使用,當然最重要的是它是【開源!開源!開源!】,重要的事說三遍,目前也有基于maven方式的構建方式,Jmeter在保證了其全面性的基礎上,又完善了其使用上的便捷性,必須給它打滿分。
如題:
Jmeter+Ant+Jenkins用作接口自動化測試框架甚至UI自動化測試框架的確十分優秀,各種參數化,正則,斷言,數據存儲,通過Ant構建還可以將其.jtl結果文件轉換成HTML文件,通過Jenkins完整的展現在Web頁面上,各種性能指標,每個接口的詳情都十分清晰的展現在頁面上,當然這只是基于.jtl文件小于50M的情況。(如果將這50M文件轉換成HTML文件也需要3個小時左右),但現實是,你既然要做性能自動化,那么你產生的.jtl文件就不是50M這么點了,結合我的實際經驗,每次產生的.jtl文件都在500M以上,轉換成HTML文件是不可能的,你的PC已經沒有足夠的內存去處理了,就會造成Jenkins或者Ant處于假死的狀態,你是拿不到HTML文件的,.jtl文件給領導他們看得了嗎,答案是不能!
?
?
重點來了,選取Jmeter+Ant+Jenkins做接口自動化與性能自動化時要區別對待,你要仔細分析你的實際需求,接口自動化是細分到每個接口都要看到詳情明細,所以你的測試結果必須清晰,這里你就有必要將.jtl文件轉換成HTML文件。性能自動化,我們關注的響應時間、吞吐量、請求的成功率、Cpu、內存等性能指標,關注的重點是高并發下服務端運行的穩定性,關注的是服務端的概況,這里我們就沒必要關注每個接口的詳情了,產生的.jtl結果文件也是很大的,我們沒必要將其轉換成HTML文件,Jenkins有一個性能分析的插件?Performance Plugin ,使用它將本次性能測試的核心性能指標轉換在Jenkins頁面上即可,速度相當快,至于具體的錯誤分析,詳細的接口信息就需要自己打開Jmeter客戶端去仔細分析了,這里性能測試是做不到完全自動化的,當然我能力有限,能做到的只有這些。
?
當然Jmeter+Ant+Jenkins用作自動化框架時你可以隨意切換測試模式,想做性能自動化就把Ant的build.xml文件轉換.jtl的相關配置注釋掉,想做接口自動化就把轉換.jtl的相關配置放開。
?
附build.xml文件內容。
<?xml version="1.0" encoding="UTF8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<!-- 需要改成自己本地的jmeter目錄-->
<property name="jmeter.home" value="D:\jmeter\apache-jmeter-3.2" />
<!-- jmeter生成的jtl格式的結果報告的路徑-->
<property name="jmeter.result.jtl.dir" value="D:\jmeter\云診所核心性能場景\report\jtl" />
<!-- jmeter生成的html格式的結果報告的路徑-->
<property name="jmeter.result.html.dir" value="D:\jmeter\云診所核心性能場景\report\html" />
<!-- ?生成的報告的前綴-->
<property name="ReportName" value="TestReport" />
<!--property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" /-->
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}.jtl" />
<!--property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" /-->
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}.html" />
<target name="run">
<antcall target="test" />
<!--antcall target="report" /-->
</target>
<target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<!-- 聲明要運行的腳本“*.jmx”指包含此目錄下的所有jmeter腳本-->
<testplans dir="D:\jmeter\云診所核心性能場景" includes="*.jmx" />
<property name="jmeter.save.saveservice.output_format" value="xml"/>
</jmeter>
</target>
<!--接口自動化時開啟下方配置,做性能自動化時生成的jtl文件過大,會導致ant假死-->
<!--path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path-->
<!--target name="report">
<tstamp>
<format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" />
</tstamp>
<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="${report.datestamp}"/>
</xslt-->
<!-- 拷貝報告所需的圖片資源至目標目錄 -->
<!--copy todir="${jmeter.result.html.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.png" />
<include name="expand.png" />
</fileset>
</copy>
</target-->
</project>
轉載于:https://www.cnblogs.com/zw520ly/p/8805491.html
總結
以上是生活随笔為你收集整理的关于Jmeter+Ant+Jenkins作为接口、性能自动化框架的误区的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 借用的对vue-cli配置对解析
- 下一篇: 博客园添加访问人数统计超详细教程