国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁(yè) > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

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

0
分享至

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

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

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

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

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

筆者在應(yīng)用環(huán)境申請(qǐng)了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的測(cè)試環(huán)境。

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

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

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

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

安裝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ù)庫(kù)),鏈接地址是:10.5.153.1:27017,用戶名為"arex",密碼為"iLoveArex"。請(qǐng)注意,在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前端頁(yè)面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如下,僅供參考,相對(duì)目錄可能都需要修改:

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)建用于測(cè)試的程序鏡像。

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

以下是運(yùn)行community-test工具時(shí)所使用的原始命令行,并且提供了與數(shù)據(jù)庫(kù)和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頁(yè)面中顯示。

·-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è)面查看應(yīng)用注冊(cè)情況:

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

回歸測(cè)試

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

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

在本文的演示中,筆者使用Collection中的批量執(zhí)行功能對(duì)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)并提交以后,新版本要編譯測(cè)試,則執(zhí)行以下步驟:

1.拉取新代碼

2.編譯代碼并打包

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

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

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

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

測(cè)試問題定位

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

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

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

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

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

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

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

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

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

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

總結(jié)

本文主要描述的是

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

2.AREX Agent編譯獲取

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

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

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

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

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

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

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

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

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

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

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(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)推薦
春節(jié)后,這4種蔬菜不要隨便買!菜販子:我從來不吃,顧客搶著買

春節(jié)后,這4種蔬菜不要隨便買!菜販子:我從來不吃,顧客搶著買

阿龍美食記
2026-02-26 10:37:19
西方陣營(yíng)集體站隊(duì)!多國(guó)力挺美以行動(dòng),伊朗徹底陷入孤立

西方陣營(yíng)集體站隊(duì)!多國(guó)力挺美以行動(dòng),伊朗徹底陷入孤立

老馬拉車莫少裝
2026-03-01 00:00:55
女孩當(dāng)小姐,一晚要提供4到5次上門服務(wù),2015年被親人點(diǎn)到不赴約

女孩當(dāng)小姐,一晚要提供4到5次上門服務(wù),2015年被親人點(diǎn)到不赴約

漢史趣聞
2025-11-08 09:27:32
重慶高速公路集團(tuán),穆軍任上被查,曾任兩江新區(qū)最大國(guó)企董事長(zhǎng)

重慶高速公路集團(tuán),穆軍任上被查,曾任兩江新區(qū)最大國(guó)企董事長(zhǎng)

新浪財(cái)經(jīng)
2026-02-28 20:20:04
離婚7年,39歲楊冪高調(diào)宣布喜訊,和前夫劉愷威已經(jīng)拉開距離

離婚7年,39歲楊冪高調(diào)宣布喜訊,和前夫劉愷威已經(jīng)拉開距離

洲洲影視娛評(píng)
2026-02-27 13:23:45
單局53-0被逆轉(zhuǎn)!4冠王送大禮,吳宜澤單桿73分逆轉(zhuǎn),追到1-1!

單局53-0被逆轉(zhuǎn)!4冠王送大禮,吳宜澤單桿73分逆轉(zhuǎn),追到1-1!

劉姚堯的文字城堡
2026-02-28 21:57:49
臉都不要了!中國(guó)男籃贏球后,裁判身份曝光不簡(jiǎn)單,或遭重罰

臉都不要了!中國(guó)男籃贏球后,裁判身份曝光不簡(jiǎn)單,或遭重罰

輸在感情刀
2026-02-28 01:24:16
特朗普鎖定目標(biāo),首個(gè)拒絕美國(guó)的國(guó)家出現(xiàn),哈梅內(nèi)伊安排好了后事

特朗普鎖定目標(biāo),首個(gè)拒絕美國(guó)的國(guó)家出現(xiàn),哈梅內(nèi)伊安排好了后事

兵說
2026-02-28 00:20:47
伊朗外長(zhǎng):伊朗已將導(dǎo)彈射程限制在2000公里以內(nèi)

伊朗外長(zhǎng):伊朗已將導(dǎo)彈射程限制在2000公里以內(nèi)

新華社
2026-02-27 10:33:20
黎巴嫩總理:貝魯特不會(huì)讓任何人將本國(guó)拖入戰(zhàn)爭(zhēng)

黎巴嫩總理:貝魯特不會(huì)讓任何人將本國(guó)拖入戰(zhàn)爭(zhēng)

參考消息
2026-02-28 17:39:04
馬布里,48歲,剛領(lǐng)著一位中國(guó)姑娘去領(lǐng)了證。

馬布里,48歲,剛領(lǐng)著一位中國(guó)姑娘去領(lǐng)了證。

南權(quán)先生
2026-02-28 15:50:16
洗草莓時(shí),有人放食鹽,有人放面粉,果農(nóng):都不對(duì),教你正確做法

洗草莓時(shí),有人放食鹽,有人放面粉,果農(nóng):都不對(duì),教你正確做法

阿龍美食記
2026-02-28 10:49:43
中國(guó)駐伊朗大使館通報(bào)伊朗陸地邊境口岸情況

中國(guó)駐伊朗大使館通報(bào)伊朗陸地邊境口岸情況

新華社
2026-03-01 00:29:02
浙江一男子口頭勸醉酒朋友別開車后離開,朋友幾分鐘后駕車身亡;法院:死者屬嚴(yán)重醉酒狀態(tài),不應(yīng)僅限于口頭提醒,男子被判賠9.5萬余元

浙江一男子口頭勸醉酒朋友別開車后離開,朋友幾分鐘后駕車身亡;法院:死者屬嚴(yán)重醉酒狀態(tài),不應(yīng)僅限于口頭提醒,男子被判賠9.5萬余元

揚(yáng)子晚報(bào)
2026-02-28 11:21:00
免去劉忠義的公安部部長(zhǎng)助理職務(wù)

免去劉忠義的公安部部長(zhǎng)助理職務(wù)

創(chuàng)作者_(dá)W4T9
2026-02-27 20:07:55
被罵“后媽式早餐“的她,全網(wǎng)有100萬人在追更!

被罵“后媽式早餐“的她,全網(wǎng)有100萬人在追更!

媽咪OK
2026-02-27 15:16:05
伊朗的投降王牌:只要美國(guó)松綁,出賣中國(guó)利益絕不會(huì)有半點(diǎn)猶豫

伊朗的投降王牌:只要美國(guó)松綁,出賣中國(guó)利益絕不會(huì)有半點(diǎn)猶豫

老范談史
2026-02-28 06:45:51
五角大樓怒了!F-35首席教官去中國(guó)打工,難怪我軍總能逮個(gè)正著

五角大樓怒了!F-35首席教官去中國(guó)打工,難怪我軍總能逮個(gè)正著

書紀(jì)文譚
2026-02-28 16:48:05
中國(guó)借給委內(nèi)瑞拉的650億打了水漂?美財(cái)長(zhǎng)放話:別想從那拿石油

中國(guó)借給委內(nèi)瑞拉的650億打了水漂?美財(cái)長(zhǎng)放話:別想從那拿石油

王二哥老搞笑
2026-02-28 11:04:45
1歲娃心臟有個(gè)大洞,英國(guó)醫(yī)生說沒救了!結(jié)果網(wǎng)友眾籌150萬,硬給救活了!

1歲娃心臟有個(gè)大洞,英國(guó)醫(yī)生說沒救了!結(jié)果網(wǎng)友眾籌150萬,硬給救活了!

英國(guó)那些事兒
2026-02-27 23:25:51
2026-03-01 01:19:00
51Testing軟件測(cè)試網(wǎng) incentive-icons
51Testing軟件測(cè)試網(wǎng)
中國(guó)軟件測(cè)試人的精神家園
1528文章數(shù) 13252關(guān)注度
往期回顧 全部

科技要聞

狂攬1100億美元!OpenAI再創(chuàng)融資神話

頭條要聞

媒體:美以的真實(shí)目標(biāo)已經(jīng)擺上臺(tái)面 不達(dá)目的不罷休

頭條要聞

媒體:美以的真實(shí)目標(biāo)已經(jīng)擺上臺(tái)面 不達(dá)目的不罷休

體育要聞

球隊(duì)主力全報(bào)銷?頂風(fēng)擺爛演都不演了

娛樂要聞

周杰倫兒子正面照曝光,與父親好像

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

沖突爆發(fā) 市場(chǎng)變天?

汽車要聞

嵐圖泰山黑武士版3月上市 搭載華為四激光智駕方案

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

數(shù)碼
游戲
健康
時(shí)尚
家居

數(shù)碼要聞

小米超薄充電寶亮相MWC,98g有多能打?

所有人保持嘴角不變!生化危機(jī):安魂曲里昂騷話大盤點(diǎn)

轉(zhuǎn)頭就暈的耳石癥,能開車上班嗎?

這6款發(fā)色居然這么火?50張圖可以直接給tony

家居要聞

素色肌理 品意式格調(diào)

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