亚洲中文字幕乱码亚洲-蜜桃成熟视频在线观看-免费中文字幕视频在线-中国五十路熟妇洗澡视频-亚洲av伊人啪啪c-国产精品成人一区二区-国产自拍视频一区在线观看-成人一区不卡二区三区四区-亚洲情精品中文字幕99在线

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

開源!AREX接口自動(dòng)化回歸測試的全過程

0
分享至

AREX是一款開源的基于真實(shí)請求與數(shù)據(jù)的自動(dòng)化回歸測試平臺(tái)(項(xiàng)目地址:https://github.com/arextest),利用JavaAgent技術(shù)與比對技術(shù),通過流量錄制回放能力實(shí)現(xiàn)快速有效的回歸測試。同時(shí)提供了接口測試、接口比對測試等豐富的自動(dòng)化測試功能,無需編程能力也可快速上手。

在使用AREX流量錄制功能時(shí),AREX Java?Agent會(huì)記錄生產(chǎn)環(huán)境中Java應(yīng)用的數(shù)據(jù)流量和請求信息,并將這些信息發(fā)送給AREX數(shù)據(jù)存取服務(wù)(Storage Service),由數(shù)據(jù)存取服務(wù)導(dǎo)入Mongodb數(shù)據(jù)庫中進(jìn)行存儲(chǔ)。當(dāng)需要進(jìn)行回放測試時(shí),AREX調(diào)度服務(wù)(Schedule Service)將會(huì)根據(jù)用戶的配置和需求,通過數(shù)據(jù)存取服務(wù)從數(shù)據(jù)庫中提取被測應(yīng)用的錄制數(shù)據(jù)(請求),然后向目標(biāo)驗(yàn)證服務(wù)發(fā)送接口請求。同時(shí),Java Agent會(huì)將錄制的外部依賴(外部請求/DB)的響應(yīng)返回給被測應(yīng)用,目標(biāo)服務(wù)處理完成請求邏輯后返回響應(yīng)報(bào)文。隨后調(diào)度服務(wù)會(huì)將錄制的響應(yīng)報(bào)文與回放的響應(yīng)報(bào)文進(jìn)行比對,驗(yàn)證系統(tǒng)邏輯正確性,并將比對結(jié)果推送給分析服務(wù)(Report Service),由其生成回放報(bào)告,供測試人員檢查。在整個(gè)過程中,AREX的緩存服務(wù)Redis負(fù)責(zé)緩存回放過程中的Mock數(shù)據(jù)和比對結(jié)果,以提高比對效率。

本文以community-test工具為例,從AREX Agent配置到錄制回放、問題定位,完整展示AREX接口自動(dòng)化回歸測試的全過程。

community-test(https://github.com/arextest/arex-community-test)是一個(gè)由AREX提供的用于測試和驗(yàn)證AREX系統(tǒng)功能的工具,它是一個(gè)Java應(yīng)用程序,依賴于MySQL和Redis,用于模擬業(yè)務(wù)服務(wù)。

AREX運(yùn)行環(huán)境

筆者在應(yīng)用環(huán)境申請了Linux服務(wù)器,這是由OPS提供的設(shè)備。

服務(wù)器的IP地址是10.5.153.1,擁有128GB內(nèi)存和32 Core。該服務(wù)器可以通過公司辦公網(wǎng)進(jìn)行訪問,但其他外部環(huán)境無法訪問。主要目的是在該服務(wù)器上安裝AREX服務(wù)和部署community-test的測試環(huán)境。

為了確保服務(wù)器能夠訪問公網(wǎng),需要進(jìn)行一些設(shè)置。在安裝過程中,需要下載AREX的安裝包,并獲取community-test的代碼進(jìn)行編譯和發(fā)布。如果你的服務(wù)器可以直接訪問公網(wǎng),則可以跳過設(shè)置代理的步驟。否則,需要設(shè)置代理以確保服務(wù)器能夠訪問公網(wǎng)。

在端口方面,沒有限制對外暴露的端口數(shù)量。然而,現(xiàn)在OPS對每個(gè)服務(wù)器做了限制,缺省情況下只允許外部訪問的端口是80和8080,其他端口默認(rèn)是被block的。

另外,遠(yuǎn)程訪問受限,本次演示是通過跳板機(jī)登錄到服務(wù)器的。

通過錄制回放進(jìn)行回歸測試

安裝AREX

遠(yuǎn)程登錄10.5.153.1,新建目錄arex。

cd arex

git clone https://github.com/arextest/deployments.git

執(zhí)行以下命令啟動(dòng)AREX:

#讀取當(dāng)前目錄的docker-compose.yml文件,并以服務(wù)的方式啟動(dòng)

docker-compose up-d

#讀取當(dāng)前目錄的docker-compose-distribute.yml文件,并以服務(wù)的方式啟動(dòng)

docker-compose-f docker-compose-distribute.yml up-d

#讀取當(dāng)前目錄的docker-compose-mongo4.4.21.yml文件,并以服務(wù)的方式啟動(dòng),因?yàn)槟承┓?wù)器硬件版本的原因,不能啟動(dòng)5.0的mongodb

docker-compose-f docker-compose-mongo4.4.21.yml up-d

啟動(dòng)后,可以使用docker-compose ps?命令查看各個(gè)服務(wù)的狀態(tài)和配置:

·State是各個(gè)服務(wù)狀態(tài),Up才是正確的,如果是其他狀態(tài),則需要重啟服務(wù)或者查看服務(wù)的日志,檢查不能啟動(dòng)的原因。

·arex-front就是前端,這里我的端口沒有修改,缺省為8088端口。你可以根據(jù)你的環(huán)境配置想要的端口,比如80端口。

·MongoDB的端口仍然是默認(rèn)的27017(你也可以使用你的MongoDB工具連接到數(shù)據(jù)庫),鏈接地址是:10.5.153.1:27017,用戶名為"arex",密碼為"iLoveArex"。請注意,在Docker Compose的配置中,鏈接地址應(yīng)為:mongodb://arex:iLoveArex@mongodb:27017/arex_storage_db,這是因?yàn)樵贒ocker Compose中使用的是服務(wù)名進(jìn)行網(wǎng)絡(luò)連接。因此,你可以使用以下地址訪問MongoDB:mongodb://arex:iLoveArex@10.5.153.1:27017/arex_storage_db。

·arex-storage的端口是8093,這是需要在agent配置中指定的端口。在我的環(huán)境中配置的storage地址是10.5.153.1:8093。

使用docker-compose images?查看各個(gè)服務(wù)組件運(yùn)行的版本:

AREX的各個(gè)組件都是0.2.10,其中`arex-node`服務(wù)后續(xù)要去掉,而且功能也沒有更新,還是0.2.7版本。

啟動(dòng)后,在當(dāng)前啟動(dòng)目錄下有兩個(gè)目錄。其中`arex-logs`?是存儲(chǔ)各個(gè)服務(wù)的日志,`arex-data`用于存儲(chǔ)數(shù)據(jù)。

啟動(dòng)后,可以在命令行中查看日志:

·docker-compose logs:查看全部的日志

·docker-compse logs arex-report-service:查看Report服務(wù)的日志

安裝后訪問AREX前端頁面http://10.5.153.1:8088/,輸入郵箱獲取驗(yàn)證碼進(jìn)行登錄,如下圖:

至此,AREX的安裝結(jié)束。

community-test業(yè)務(wù)服務(wù)安裝

下載編譯AREX Agent代碼

git clone https://github.com/arextest/arex-agent-java.git

cd arex-agent-java

mvn clean package

編譯完成:

檢查當(dāng)前目錄下的arex-agent-jar目錄,是否存在最新編譯的arex agent jar文件:

編譯community-test代碼

拉取代碼:

git clone https://github.com/arextest/arex-community-test.git

使用`mvn clean package`編譯項(xiàng)目:

為了運(yùn)行方便,將community-test?進(jìn)行容器化部署:

FROM tomcat:9.0-jdk8-openjdk

ARG WAR_FILE=./target/arex-agent-test-0.0.1-SNAPSHOT.war

ADD$WAR_FILE/usr/local/tomcat/webapps/

WORKDIR/usr/local/tomcat/conf

RUN sed-i'N;152a\\t'server.xml

ADD./arex-agent-0.2.0.jar/usr/local/tomcat/

ADD./arex-agent-bootstrap-0.2.0.jar/usr/local/tomcat/

WORKDIR/usr/local/tomcat

EXPOSE 8080

CMD["catalina.sh","run"]

容器化編譯shell如下,僅供參考,相對目錄可能都需要修改:

cd../arex-community-test

mvn clean package

cp../deployments/dockerfile/community.Dockerfile./Dockerfile

cp../arex-agent-java/arex-agent-jar/arex-agent-0.3.0.jar./arex-agent-0.3.0.jar

cp../arex-agent-java/arex-agent-jar/arex-agent-bootstrap-0.3.0.jar./arex-agent-bootstrap-0.3.0.jar

docker build-t arexadmin01/arex-community-test:0.0.1.

rm-rf./Dockerfile

rm-rf./arex-agent-0.3.0.jar

rm-rf./arex-agent-bootstrap-0.3.0.jar

cd..

至此,已經(jīng)成功創(chuàng)建用于測試的程序鏡像。

SUT應(yīng)用配置AREX Agent

以下是運(yùn)行community-test工具時(shí)所使用的原始命令行,并且提供了與數(shù)據(jù)庫和Redis的連接配置,如下:

environment:

-JAVA_TOOL_OPTIONS=-Dspring.datasource.url=jdbc:mysql://cmysql:3306/community?useUnicode=true&characterEncoding=utf-8-Dspring.datasource.username=arex_admin-Dspring.datasource.password=arex_admin_password-Dspring.redis.host=credis-Dspring.redis.port=6379

增加AREX的配置:

environment:

-JAVA_TOOL_OPTIONS='-javaagent:/usr/local/tomcat/arex-agent-0.3.0.jar'-Darex.service.name=community-service-Darex.storage.service.host=10.5.153.1:8093-Darex.enable.debug=true-Dspring.datasource.url=jdbc:mysql://cmysql:3306/community?useUnicode=true&characterEncoding=utf-8-Dspring.datasource.username=arex_admin-Dspring.datasource.password=arex_admin_password-Dspring.redis.host=credis-Dspring.redis.port=6379

·'-javaagent:/usr/local/tomcat/arex-agent-0.3.0.jar'這部分就是我們編譯的AREX Agent的JAR文件,該JAR文件將作為Java代理(Java agent)加載到應(yīng)用程序中。

·-Darex.service.name=community-service:這是應(yīng)用程序的名稱,它將在AREX Replay頁面中顯示。

·-Darex.storage.service.host=10.5.153.1:8093:這是AREX Storage服務(wù)的地址,指定為10.5.153.1:8093。

·-Darex.enable.debug=true:這是一個(gè)配置選項(xiàng),如果設(shè)置為true,則將以調(diào)試模式運(yùn)行,即會(huì)錄制所有的流量。在生產(chǎn)環(huán)境中,建議將其設(shè)置為false。

啟動(dòng)arex-community-test?服務(wù),隨后在AREX前端頁面查看應(yīng)用注冊情況:

可以看到,被測試應(yīng)用community-test?已經(jīng)成功運(yùn)行,其訪問地址為http://10.5.153.1:8080/。

回歸測試

生產(chǎn)環(huán)境發(fā)布運(yùn)行

現(xiàn)在,arex-agent已經(jīng)成功地啟動(dòng)并在應(yīng)用程序中運(yùn)行,在錄制過程中,用戶無需進(jìn)行任何特殊的操作或干預(yù),可以按照常規(guī)方式對外提供服務(wù)或手動(dòng)訪問應(yīng)用程序。

在本文的演示中,筆者使用Collection中的批量執(zhí)行功能對community-service?進(jìn)行訪問,訪問地址為http://10.5.153.1:8080/。

在訪問過程中,arex-agent會(huì)自動(dòng)開始錄制并將錄制的AREX用例存儲(chǔ)起來,無需用戶手動(dòng)進(jìn)行錄制操作。

業(yè)務(wù)代碼更新

當(dāng)我們的業(yè)務(wù)需求實(shí)現(xiàn)并提交以后,新版本要編譯測試,則執(zhí)行以下步驟:

1.拉取新代碼

2.編譯代碼并打包

3.重點(diǎn):保持AREX Agent的配置不變,特別是應(yīng)用名,AREX是利用應(yīng)用名來識(shí)別應(yīng)用和管理用例的。因此在新版本的編譯和測試過程中,應(yīng)保持與之前版本相同的應(yīng)用名配置。

4.發(fā)布代碼到測試環(huán)境:將編譯和打包后的應(yīng)用程序代碼發(fā)布到測試環(huán)境中,以便進(jìn)行進(jìn)一步的測試和驗(yàn)證。

在測試環(huán)境進(jìn)行回歸測試

進(jìn)入AREX Replay頁面,選擇community-service?服務(wù),在右邊回放界面上點(diǎn)擊"Start Replay"按鈕,輸入回放的地址(我用的是同一個(gè)環(huán)境,所以地址還是http://10.5.153.1:8080/),開始回放:

測試問題定位

如果測試比對全部執(zhí)行且沒有任何差異,則測試通過:

如果測試過程中發(fā)現(xiàn)問題,如下所示:

點(diǎn)擊存在問題的回放報(bào)告,展示所有的接口及其回歸測試情況,如下圖:

點(diǎn)擊DiffScenes(New),將以總體統(tǒng)計(jì)視圖顯示差異點(diǎn)所在。value diff,就是新老版本比對的差異在值差異。

繼續(xù)點(diǎn)擊差異點(diǎn),查看差異細(xì)節(jié),如下圖。左邊是benchmark,即生產(chǎn)錄制的值;右邊是Test,即測試環(huán)境回放過程中返回的值,兩者不一致即返回差異信息。

根據(jù)發(fā)現(xiàn)的差異,找到代碼中存在問題的點(diǎn):

·確認(rèn)問題,將問題修復(fù),重復(fù)"業(yè)務(wù)代碼更新"的章節(jié),修改→測試發(fā)布→比對。

·確認(rèn)非問題,則將此節(jié)點(diǎn)設(shè)置為過濾節(jié)點(diǎn),下次回放跳過該節(jié)點(diǎn)比對。

·持續(xù)此操作,將所有的差異點(diǎn)都確認(rèn)修復(fù)或者差異在預(yù)期范圍內(nèi)。

·確認(rèn)修復(fù)和發(fā)布版本。

總結(jié)

本文主要描述的是

1.AREX環(huán)境搭建

2.AREX Agent編譯獲取

3.被測試服務(wù)加上AREX Agent的配置

4.被測試服務(wù)在生產(chǎn)環(huán)境常規(guī)運(yùn)行,無須干預(yù),逐步建立AREX錄制回放用例

5.被測試服務(wù),因需求而代碼修改

6.被測試服務(wù)打包,加上AREX agent的配置,并發(fā)布測試環(huán)境,

7.在AREX Replay界面輸入測試環(huán)境地址,進(jìn)行回放

8.檢查回放結(jié)果

1)回放差異在預(yù)期內(nèi),過濾掉差異節(jié)點(diǎn)

2)回放差異非預(yù)期內(nèi),修復(fù)BUG,重復(fù)6到8的操作

9.直至回歸測試沒有非預(yù)期內(nèi)差異為止,測試通過,被測試應(yīng)用發(fā)布生產(chǎn)環(huán)境

最后:在我的V:atstudy-js,可以免費(fèi)領(lǐng)取一份10G軟件測試工程師面試寶典文檔資料。以及相對應(yīng)的視頻學(xué)習(xí)教程免費(fèi)分享!其中包括了有基礎(chǔ)知識(shí)、Linux必備、Shell、互聯(lián)網(wǎng)程序原理、Mysql數(shù)據(jù)庫、抓包工具專題、接口測試工具、測試進(jìn)階-Python編程、Web自動(dòng)化測試、APP自動(dòng)化測試、接口自動(dòng)化測試、測試高級持續(xù)集成、測試架構(gòu)開發(fā)測試框架、性能測試、安全測試等。

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
腸道是否長息肉,會(huì)有4個(gè)提示,上廁所時(shí)要記的多看一眼!

腸道是否長息肉,會(huì)有4個(gè)提示,上廁所時(shí)要記的多看一眼!

芹姐說生活
2026-04-19 23:32:30
離大譜!大媽沖進(jìn)餐廳強(qiáng)行放生龍蝦,結(jié)果人家是寵物,直接被她救死了...

離大譜!大媽沖進(jìn)餐廳強(qiáng)行放生龍蝦,結(jié)果人家是寵物,直接被她救死了...

英國那些事兒
2026-04-17 23:25:19
日本突襲!28萬億市場,中國被踢出局,高市早苗亮出3張底牌

日本突襲!28萬億市場,中國被踢出局,高市早苗亮出3張底牌

瑛派兒老黃
2026-04-20 10:40:36
廣東一酒店女子拆快遞誤甩飛美工刀打到同事脖頸,酒店:沒有劃到脖子,不是故意的

廣東一酒店女子拆快遞誤甩飛美工刀打到同事脖頸,酒店:沒有劃到脖子,不是故意的

瀟湘晨報(bào)
2026-04-19 20:49:12
多名院士研究發(fā)現(xiàn):吃一把花生,就等于吃了兩勺黃油,真的假的?

多名院士研究發(fā)現(xiàn):吃一把花生,就等于吃了兩勺黃油,真的假的?

蜉蝣說
2026-04-20 10:18:20
為什么在我國不允許拍鬼片了?看完網(wǎng)友的真實(shí)經(jīng)歷,感覺禁得好

為什么在我國不允許拍鬼片了?看完網(wǎng)友的真實(shí)經(jīng)歷,感覺禁得好

情感大頭說說
2026-04-20 03:02:35
砸6700億建雄安,面積抵3個(gè)紐約,如今究竟咋樣了?

砸6700億建雄安,面積抵3個(gè)紐約,如今究竟咋樣了?

娛樂圈的筆娛君
2026-03-26 12:15:32
遲來的關(guān)心猶如砒霜!網(wǎng)友:快退休了我媽突然擔(dān)心我值班沒飯吃

遲來的關(guān)心猶如砒霜!網(wǎng)友:快退休了我媽突然擔(dān)心我值班沒飯吃

夜深愛雜談
2026-04-20 09:16:13
徐明聯(lián)手本拉登家族,400億硬剛中石油,帝國崩塌

徐明聯(lián)手本拉登家族,400億硬剛中石油,帝國崩塌

圓夢的小老頭
2026-04-17 23:52:41
萬字長文!黃仁勛:DeepSeek深度耦合華為,對美國來說將是災(zāi)難

萬字長文!黃仁勛:DeepSeek深度耦合華為,對美國來說將是災(zāi)難

財(cái)通社
2026-04-19 17:42:25
基辛格談中印戰(zhàn)爭:雙方刻意碰撞結(jié)果,中國借印度給各國標(biāo)明紅線

基辛格談中印戰(zhàn)爭:雙方刻意碰撞結(jié)果,中國借印度給各國標(biāo)明紅線

談史論天地
2026-04-19 07:59:55
聰明又招財(cái)!2026年這3個(gè)生肖人緣好到爆,財(cái)富接不完

聰明又招財(cái)!2026年這3個(gè)生肖人緣好到爆,財(cái)富接不完

毅談生肖
2026-04-20 10:49:51
第185場!1995年至今:詹姆斯季后賽勝場超越馬刺排名第一

第185場!1995年至今:詹姆斯季后賽勝場超越馬刺排名第一

北青網(wǎng)-北京青年報(bào)
2026-04-19 20:20:14
考古:大明湖挖出文物證實(shí),濟(jì)南是中國唯一5000年連續(xù)建城的城市

考古:大明湖挖出文物證實(shí),濟(jì)南是中國唯一5000年連續(xù)建城的城市

文史達(dá)觀
2026-03-27 16:15:00
戀愛腦的女人能有多離譜?看完評論區(qū)我愣住了,這些事真的存在嗎

戀愛腦的女人能有多離譜?看完評論區(qū)我愣住了,這些事真的存在嗎

夜深愛雜談
2026-04-19 09:56:53
內(nèi)維爾:阿森納已經(jīng)盡力做到最好,但瓜帥和曼城是一臺(tái)機(jī)器

內(nèi)維爾:阿森納已經(jīng)盡力做到最好,但瓜帥和曼城是一臺(tái)機(jī)器

懂球帝
2026-04-20 07:07:06
蘋果斷崖式領(lǐng)先,華為緊隨其后,小米第三

蘋果斷崖式領(lǐng)先,華為緊隨其后,小米第三

科技鋒說
2026-04-19 09:32:52
隨著曼城2-1槍手,利物浦2-1,英超最新排名出爐!槍手70分領(lǐng)跑

隨著曼城2-1槍手,利物浦2-1,英超最新排名出爐!槍手70分領(lǐng)跑

薇說體育
2026-04-20 10:52:44
愛德華茲:整場追著穆雷跑真的很累 他幾乎參與了每一次進(jìn)攻戰(zhàn)術(shù)

愛德華茲:整場追著穆雷跑真的很累 他幾乎參與了每一次進(jìn)攻戰(zhàn)術(shù)

北青網(wǎng)-北京青年報(bào)
2026-04-19 20:20:35
魯尼要去美國報(bào)道世界杯,科琳希望與他保持距離&分開冷靜

魯尼要去美國報(bào)道世界杯,科琳希望與他保持距離&分開冷靜

喜歡歷史的阿繁
2026-04-20 10:48:28
2026-04-20 11:24:49
51Testing軟件測試網(wǎng) incentive-icons
51Testing軟件測試網(wǎng)
中國軟件測試人的精神家園
1558文章數(shù) 13260關(guān)注度
往期回顧 全部

科技要聞

藍(lán)色起源一級火箭完美回收 客戶衛(wèi)星未入軌

頭條要聞

失蹤女老板被找到 嫌犯曾改名整容還催警察"還我清白"

頭條要聞

失蹤女老板被找到 嫌犯曾改名整容還催警察"還我清白"

體育要聞

七大獎(jiǎng)項(xiàng)候選官宣!文班或全票DPOY

娛樂要聞

章子怡!增重20斤素顏拍新片

財(cái)經(jīng)要聞

月之暗面IPO迷局

汽車要聞

外觀非常驚艷 全新一代寶馬6系有望回歸

態(tài)度原創(chuàng)

本地
房產(chǎn)
親子
手機(jī)
健康

本地新聞

12噸巧克力有難,全網(wǎng)化身超級偵探添亂

房產(chǎn)要聞

官宣簽約最強(qiáng)城更!海口樓市,突然殺入神秘房企!

親子要聞

普通家庭養(yǎng)娃補(bǔ)鈣,90% 家長都補(bǔ)錯(cuò)了!

手機(jī)要聞

上市還沒半年!三星三折疊屏手機(jī)面臨退市 友商跟華為差距太遠(yuǎn)

干細(xì)胞抗衰4大誤區(qū),90%的人都中招

無障礙瀏覽 進(jìn)入關(guān)懷版