[技術專案3]--流量回放專案總結
阿新 • • 發佈:2021-06-27
1、背景
最近做了一個測試專案-流量回放。我主要負責前端的工作。 該專案主要功能是回放線上的介面資料,用以進行自動化測試,畢竟線上的資料大,場景多。拿到這批資料測試用例後,無論是用來壓測還是用來進行介面自動化價值都是很大的 流量回放的價值:通過記錄線上流量,在開發或者測試環境回放,來發現系統是否能夠正常執行,降低程式碼變動整體系統帶來的風險。2、技術背景
- 後端用的springboot,前端vue
- 後端主要是從es中讀取資料,將介面的url、入引數、出引數等需要的資料,進行過濾,放到對應的資料庫中。然後組裝對應介面的用例,生成最終的測試用例,將資料流出供下面業務場景使用
- 前端搭建測試平臺,主要功能有專案管理:以專案和業務做區分,管理專案中的介面;用例執行:單條多條用例執行;任務管理:建立任務,以任務的維度進行管理對應介面的用例
3、主要功能展示
主要分為3大塊:介面庫、流量回放、系統配置3.1、介面庫
以專案的維度將介面分類,一個專案下多個介面,一個介面對應多條用例【該功能是對拿到的資料進行的延伸功能】 最終頁面是一個介面對應的用例頁面。可以對單用例執行,單介面多用例執行,對該介面的用例進行增刪改查,可批量匯入用例3.2、流量回放
這個是主要的功能,以建立計劃的維度將計劃與介面關聯。當然每個介面都有用例的屬性,自然三者進行了關聯- 計劃:建立了某個計劃就可以選擇關聯多個介面,可以將該計劃整個執行,可以單個介面執行,當然也可以一個介面下的某個用例執行。最終生成這個計劃的報告。ps該計劃的報告肯定是多條,每個維度執行一次就生成一次報告。報告中有該計劃每次任務維度的報告。有整個計劃的報告
- 計劃下介面:就是一個計劃可以關聯多個介面。每個介面進行更新,就是定時拉取該介面下從es拿到的回放的介面資料。
- 介面下用例:這個就是對單個介面進行的操作。執行用例時因為有對應操作,所以可以手動設定期望結果,如code=100等;可以自動設定期望結果:將上次執行的介面設定為期望結果;因為有些介面是post請求,對一些一次性操作的引數需要修改下,如引數中的郵箱等,所以設定了批量修改引數,對該介面下用例進行批量替換引數;進行比對的時候有些返回介面不需要比對,如時間等,所以可以設定忽略項,執行時比對就忽略了該項;單個介面可以編輯它的引數域名地址期望結果;
3.3、系統配置
就是為介面執行進行的輔助功能設定- 使用者列表:不用說了,就是該專案的使用者表
- 環境配置:設定的環境資訊,對應有環境的header
4、部署總結
最終前後端都完成後,進行的伺服器的部署,將專案放到伺服器上,在jenkins上部署了對應的專案,以便有程式碼更新時,可以方便部署4.1、Jenkins配置專案
配置對應的git地址;配置對應的執行指令碼;執行完成後將對應的包放到伺服器上固定的位置A(npm run build:prod後打成一個dist的資料夾,需要將資料夾壓縮成dist.zip的包)這個備註中說明下如何打包成壓縮檔案rm -rf /neworiental/latest/aliceVue/* && unzip -d /neworiental/latest/aliceVue/ /neworiental/backupalice/dist.zip
4.2、伺服器配置
在上一步驟中的A位置建立資料夾,放專案的包 在/neworienta目錄建立backupalice目錄 在/neworiental/latest/建立aliceVue目錄 設定nginx: cd /usr/local/nginx/conf/site vim alice.conf====前端nginx==== server { listen 80; server_name alice.xdf.cn; location /alice { alias /neworiental/latest/aliceVue/; index index.html; try_files $uri $uri/ /alice/index.html; } error_page 500 502 503 504 /50json.html; location = /50json.html { root /usr/share/nginx/html; } location ~* ^/prod-api/(.*) { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; if ($request_uri ~ /prod-api/(.+)) { set $p1 $1; } proxy_pass http://alice-api/alice/$p1; } } 後端配置server upstream alice-api { server 127.0.0.1:9898; keepalive 1000; }
重啟nginx ../../sbin/nginx -s reload