接口測試之Jmeter+Ant+Jenkins接口自動化測試平臺

平臺簡介

一個完整的接口自動化測試平臺需要支持接口的自動執行,自動生成測試報告,以及持續集成。Jmeter支持接口的測試,Ant支持自動構建,而Jenkins支持持續集成,所以三者組合在一起可以構成一個功能完善的接口自動化測試平臺。

環境準備

環境依賴

  • JDK環境配置
  • Jmeter安裝
  • Ant安裝環境變量配置
  • Jenkins安裝

Ant簡介:Apache Ant,是一個將軟件編譯、測試、部署等步驟聯系在一起加以自動化的一個工具,大多用于Java環境中的軟件開發。

下載地址:? 下載之后解壓到任意文件路徑,我這里是放到E盤根目錄。

環境變量配置

  • ANT_HOME E:\apache-ant-1.10.5
  • Path?: %ANT_HOME%\bin
  • ClassPath?%ANT_HOME%\lib

輸入如下命令即可檢查是否安裝成功

注意:如果提示‘ant不是內部命令也不是外部命令’ 說明環境變量可能配置錯誤

Jenkins簡介

Jenkins是一個開源軟件項目,是基于Java開發的一種持續集成工具,用于監控持續重復的工作,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。

下載與安裝

下載地址:?下載后安裝到指定的路徑即可,默認啟動頁面為localhots:8080,如果8080端口被占用無法打開,可以進入到jenkins安裝目錄,找到jenkins.xml配置文件打開,修改如下代碼的端口號即可。

<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments>

平臺搭建

依賴文件配置

  • 首先在Jmeter目錄下面新建一個文件夾?loadTest?(文件夾名稱不要使用下劃線,空格字符),并將Jemter測試腳本放置到該文件夾中。
  • 將Jmeter?extras?文件中的?ant-jmeter-1.1.1.jar?放到Ant中的?lib文件夾中
  • 將Jmeter?extras?文件中的?jmeter-results-detail-report_21.xsl?,build.xmlcollapse.pngexpand.png?放到 ant目錄中的?bin目錄下面。

build.xml配置

在Ant的bin目錄中打開build.xml文件找到以下內容

<property name="testpath" value="${user.dir}"/>
<property name="jmeter.home" value="${basedir}/.."/>
<property name="report.title" value="Load Test Results"/><!-- Name of test (without .jmx) -->
<property name="test" value="Test"/>

參數說明

  • testpath?測試計劃,這里用于存放測試腳本、測試生成的文件、測試報告
  • jmeter.home?Jmeter目錄路徑
  • report.title?測試報告的標題
  • test?jmeter測試腳本的名稱(無需后綴.jmx)

這里根據自己的環境修改為

<property name="testpath" value="C:\apache-jmeter-5.2.1\loadTest"/>
<property name="jmeter.home" value="C:\apache-jmeter-5.2.1"/>
<property name="report.title" value="Jmeter Test Report"/><!-- Name of test (without .jmx) -->
<property name="test" value="jmeter_test"/>

Ant構建

執行如下命令進行構建

ant -buildfile E:\apache-ant-1.10.9\bin\build.xml

結果如下:

?進入到loadTest文件夾可以看到生成如下文件:

?打開html測試報告httpbin_test.html?報告內容如下:

報告優化及批量運行多個腳本

由于jmeter4.0版本默認提供的build.xml不支持通配符來批量運行多個腳本,所以這里修改build.xml配置文件來實現批量執行,具體腳本如下:

Jmeter默認生成報告不是很詳細,因此我們需要進行優化。這里我們使用新的報告模板:,默認的報告模板是jmeter-results-detail-report_21

1、下載style文件:

2、把下載的文件放到jmeter的extras目錄下。

3、修改jmeter.properties文件如下部分,我這里都修改成true,這樣執行完腳本后就會保存這些結果到.jtl文件里面:

jmeter.save.saveservice.data_type=true
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true
# response_data is not currently supported for CSV output
jmeter.save.saveservice.response_data=true
# Save ResponseData for failed samples
jmeter.save.saveservice.response_data.on_error=false
jmeter.save.saveservice.response_message=true
jmeter.save.saveservice.successful=true
jmeter.save.saveservice.thread_name=true
jmeter.save.saveservice.time=true
jmeter.save.saveservice.subresults=true
jmeter.save.saveservice.assertions=true
jmeter.save.saveservice.latency=true
jmeter.save.saveservice.connect_time=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.responseHeaders=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.encoding=false
jmeter.save.saveservice.bytes=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.filename=true
jmeter.save.saveservice.hostname=true
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.sample_count=true
jmeter.save.saveservice.idle_time=true

4、由于jmeter4.0版本默認提供的build.xml不支持通配符來批量運行多個腳本,所以這里修改build.xml配置文件來實現批量執行并且替換為新的測試報告,具體腳本如下:

<?xml version="1.0" encoding="UTF-8"?><project name="ant-jmeter-test" default="run" basedir="."><!-- 根據時間戳來命名測試報告名稱-->
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp><!-- 需要改成自己本地的 Jmeter 目錄-->
<property name="jmeter.home" value="D:\Users\apache-jmeter-5.2.1" />
<!-- 設置腳本的測試目錄-->
<property name="jmeter.dir" value="loadTest" /><!-- jmeter生成jtl格式的結果報告的路徑-->
<property name="jmeter.result.jtl.dir" value="${jmeter.home}\${jmeter.dir}\report\jtl" />
<!-- jmeter生成html格式的結果報告的路徑-->
<property name="jmeter.result.html.dir" value="${jmeter.home}\${jmeter.dir}\report\html" /><!-- 生成的報告的前綴-->
<property name="ReportName" value="TestReport" />
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.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.jtl.dir}/${ReportName}${time}.jtl"><!-- 聲明要運行的腳本。"*.jmx"指包含此目錄下的所有jmeter腳本,也可以指定具體執行的腳本-->
<testplans dir="${jmeter.home}\${jmeter.dir}" includes="*.jmx" />
<property name="jmeter.save.saveservice.output_format" value="xml"/></jmeter>
</target><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.shanhe.me.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><path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path>
</project>

5、執行腳本,生成報告如下,明顯感覺展示的內容比之前的報告多很多,定位問題也比較方便直觀:

?

集成到Jenkins

在Jenkins新建一個任務jmeter_test

在構建選項中選擇Invoke Ant?然后在Build File輸入build.xml配置文件路徑。注意:不要輸入到Targets里面去了,需要點擊高級選項后才可以顯示出Build File

?執行之后可以看到控制臺輸出和cmd的控制臺輸出是一樣的

如果想定制構建則可以在構建觸發器中選擇Build periodically?如果想每個工作日下班18時執行,則可以如下設置:

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/34981.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/34981.shtml
英文地址,請注明出處:http://en.pswp.cn/news/34981.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

BOLT- 識別和優化熱門的基本塊

在BOLT中&#xff0c;識別和優化熱門的基本塊之所以關鍵&#xff0c;是因為BOLT的主要目標是優化程序以更好地利用硬件特性&#xff0c;特別是指令緩存&#xff08;ICache&#xff09;。以下是BOLT如何識別和優化熱門基本塊的流程&#xff1a; 收集性能數據: BOLT開始的時候并不…

idea - 刷新 Git 分支數據 / 命令刷新 Git 分支數據

一、idea - 刷新 Git 分支數據 idea 找到 fetch 選項&#xff0c;重新獲取分支數據 二、命令刷新 Git 分支數據 git fetch參考鏈接 1. 遠程Gitlab新建的分支在IDEA里不顯示

jxls導出問題

![請添加圖片描述](https://img-blog.csdnimg.cn/bc74c4207818491c93b75e19b3333451.png 為什么最后導出的文件還是按原樣導出啊&#xff0c;沒有填充數據 ![在這里插入圖片描述](https://img-blog.csdnimg.cn/d4500b9a98c042f6b64a5d0650071303.png

qt多線程使用方式

有5個方式&#xff1a;可以參考這個博客&#xff1a;Qt 中開啟線程的五種方式_qt 線程_lucky-billy的博客-CSDN博客 注&#xff1a;為了實現更加靈活的線程管理&#xff08;因為這5種都有一些不方便之處&#xff1a;QThread需要子類化且不能傳參&#xff0c;moveToThread不能傳…

【leetcode】459. 重復的子字符串(easy)

給定一個非空的字符串 s &#xff0c;檢查是否可以通過由它的一個子串重復多次構成。 示例 1: 輸入: s “abab” 輸出: true 解釋: 可由子串 “ab” 重復兩次構成。 示例 2: 輸入: s “aba” 輸出: false 示例 3: 輸入: s “abcabcabcabc” 輸出: true 解釋: 可由子串 “ab…

ChatGPT等人工智能編寫文章的內容今后將成為常態

BuzzFeed股價上漲200%可能標志著“轉向人工智能”媒體趨勢的開始。 周四&#xff0c;一份內部備忘錄被華爾街日報透露BuzzFeed正計劃使用ChatGPT聊天機器人-風格文本合成技術來自OpenAI&#xff0c;用于創建個性化盤問和將來可能的其他內容。消息傳出后&#xff0c;BuzzFeed的…

ubuntu 20.04 RK3568網絡的優先級設置

1、背景 硬件使用RK3568 CPU&#xff0c;操作系統采用ubuntu 20.04 Lxqt桌面的版本。硬件上具有一個有線以太網卡&#xff0c;一個wifi網卡&#xff0c;一個5G網卡。由于操作系統默認的網絡優先級為有線網卡的最高&#xff0c;5G網卡次之。在一個業務應用中需要5G網卡的連接外…

文本三劍客之grep命令和awk命令 1.0 版本

grep awk 1.grep命令1.1 基本格式1.2 常用選項 2.awk命令2.1 awk工作原理2.2 awk命令格式2.3 awk常用內置變量 1.grep命令 1.1 基本格式 grep [選項]… 查找條件 目標文件1.2 常用選項 選項功能 -m [ x ]匹配x次 后停止,x為具體數字-v取反 -i忽略字符大小寫 -n顯示匹配的 …

Dynamic CRM開發 - 實體介紹

實體簡介 在CRM中,實體(Entity)是數據的基本載體,也是構建業務邏輯網絡的基礎節點。 實體可以理解為數據庫中的一張表(實體中的字段對應數據庫表的字段),比如創建一個實體存儲客戶信息,創建一個實體存儲產品信息,產品實體里可以創建一個查找類型的字段(類似表的外鍵)…

【Express.js】集成RabbitMQ

集成RabbitMQ 本節我們介紹在 express.js 中集成 rabbitmq. RabbitMQ 是一個消息隊列中間件&#xff0c;常用于請求削峰&#xff0c;事務的隊列處理&#xff0c;事件訂閱機制的實現等。 準備工作 創建一個 express.js 項目&#xff08;本文基于evp-express-cli&#xff09;…

【三維編輯】Seal-3D:基于NeRF的交互式像素級編輯

文章目錄 摘要一、引言二、方法2.1.基于nerf的編輯問題概述2.2.編輯指導生成2.3.即時預覽的兩階段學生訓練 三、實驗四、代碼總結 項目主頁: https://windingwind.github.io/seal-3d/ 代碼&#xff1a;https://github.com/windingwind/seal-3d/ 論文: https://arxiv.org/pdf/23…

創建一個Spring Boot項目

安裝所需軟件&#xff1a;首先確保你的計算機上已經安裝了Java JDK和Maven構建工具。你可以從官方網站下載并按照說明進行安裝。 創建一個新的Spring Boot項目&#xff1a;在命令行或終端中使用Maven命令創建一個新的Spring Boot項目。執行以下命令&#xff1a;mvn archetype:…

阿里云輕量應用服務器_2核4G4M_2核2G3M_性能測評

阿里云輕量應用服務器2核2G3M帶寬108元一年&#xff0c;系統盤為50GB高效云盤&#xff1b;輕量服務器2核4G4M帶寬&#xff0c;60GB高效云盤297.98元12個月。目前輕量應用服務器只有2核2G和2核4G有活動&#xff0c;阿里云百科分享阿里云輕量應用服務器入口&#xff1a; 目錄 阿…

【Qt高階】老Qt都不一定清楚的“QObject線程親和性”【2023.08.13】

老Qt都不一定清楚的“線程親和性” 與題目無關 感覺自己還挺2&#xff0c;有粉絲點了那個契約者會給up發個鼓勵的話&#xff0c;我還以為是人私信發的&#xff0c;都挨個感謝了&#xff0c;后來才意識到是系統自動發的&#x1f623;&#x1f623;&#x1f623;。 自上上期視頻對…

Three.js陰影

目錄 Three.js入門 Three.js光源 Three.js陰影 Three.js紋理貼圖 使用燈光后&#xff0c;場景中就會產生陰影。物體的背面確實在黑暗中&#xff0c;這稱為核心陰影&#xff08;core shadow&#xff09;。我們缺少的是落下的陰影&#xff08;drop shadow&#xff09;&#…

【數據結構】——棧、隊列的相關習題

目錄 題型一&#xff08;棧與隊列的基本概念&#xff09;題型二&#xff08;棧與隊列的綜合&#xff09;題型三&#xff08;循環隊列的判空與判滿&#xff09;題型四&#xff08;循環鏈表表示隊列&#xff09;題型五&#xff08;循環隊列的存儲&#xff09;題型六&#xff08;循…

一文揭秘餓了么跨端技術的演進、實踐與落地

跨端技術背景與演進歷程 跨端&#xff0c;究竟跨的是哪些端&#xff1f; 自 90 年的萬維網出現&#xff0c;而后的三十多年&#xff0c;我們依次經歷了 PC 時代、移動時代&#xff0c;以及現在的萬物互聯&#xff08;的 IoT &#xff09;時代&#xff0c;繁榮的背后&#xff…

【Apollo】Apollo-ros版本架構學習與源碼分析

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 這篇文章主要介紹Apollo-ros版本架構學習與源碼分析。 無專精則不能成&#xff0c;無涉獵則不能通。——梁啟超 歡迎來到我的博客&#xff0c;一起學習&#xff0c;共同進步。 喜歡的朋友可以關注一下&a…

微信小程序如何自定義分享卡片文案和圖片

微信小程序提供了onShareAppMessage方法&#xff0c;專門用來監聽用戶點擊頁面內轉發按鈕&#xff08;button 組件 open-type"share"&#xff09;或右上角菜單“轉發”按鈕的行為&#xff0c;并自定義轉發內容。 > 注意&#xff1a;只有定義了此事件處理函數&…

Android studio 設置安卓手機

參考這個鏈接 ghttps://developer.android.com/studio/debug/dev-options 列出常用手機的設置&#xff0c;但是我的手機不在此列 Google Pixel Settings > About phone > Build number Samsung Galaxy S8 and later Settings > About phone > Software informa…