全鏈路壓測效能10倍提升的壓測工具實踐筆記【開源】【原創】

2022-11-18 18:00:50

背景

創業型公司或創新型專案往往團隊資源有限,人員能力水平有限,難以投入專業自動化壓測人員;
同時部分業務(tob/toc場景)長期有中小型活動場景帶來小規模流量並行,需要產研能長期保障並及時感知和解決網站效能和穩定性問題。

目標

1. 開發人員5分鐘上手壓測,30分鐘熟練。
2. 常規效能壓測自動化,常態化;零開發,零測試投入;1分鐘自動化生成報告,快速定位問題!
3. 針對場景(運營活動)效能壓測自動化,整體壓測效能提升10倍。減少1名專業壓測人員投入!

方案

按照五個維度打造研發管理體系思考和規劃,按照自身場景,考慮自研全鏈路壓測工具;
本身工具開發難度不高,專案速度快,投入週期短;同時也長期解決問題,靈活適配,能有效達成目標;
 
lmc-autotest BSF全鏈路壓測工具開源地址:https://gitee.com/chejiangyi/lmc-autotest
基於BSF基礎框架構建全鏈路壓測框架,從框架層面進行流量錄製(也可以從瀏覽器自定義錄製),從工具層面進行流量回放,進行效能壓測,自動輸出壓測報告,自動進行全鏈路功能驗收,從而提升測試效能,指導網站效能優化。

全鏈路壓測架構設計

1. 業務層引入bsf core和autotest jar包,該基礎框架可以對流量進行取樣錄製。
2. 取樣錄製的流量批次同步到mysql儲存引擎。
3. 全鏈路壓測管理端,進行任務編寫並啟動壓測任務。
4. 壓測任務分發到壓測到節點叢集,並進行樣本流量批次回放壓測。
5. 超過時間或者指定條件後,自動生成壓測報告。

全鏈路壓測任務執行生命週期

任務分別由樣本篩選指令碼,錯誤過濾樣本指令碼,壓測請求前指令碼,壓測請求後指令碼,任務終止指令碼組成。
壓測節點收到任務後按照任務執行生命週期,不間斷進行壓測,直到命中「任務終止指令碼規則」後,正常退出。

全鏈路壓測管理端功能

1. 任務管理:可以對客製化的壓測任務進行編寫,管理。可以實現不同場景和不同姿勢的壓測進行客製化。編寫任務幫助檔案
2. 定時計劃:可以對所有任務進行定時計劃編寫,管理。實現任務定時自動化排程。編寫定時計劃幫助檔案
3. 節點狀態:可以管理所有壓測節點的心跳和狀態及當前的效能情況。
4. 壓測報告:可以管理所有壓測任務自動生成的報告。
5. 執行紀錄檔:所有壓測任務和定時計劃執行的執行紀錄檔,在壓測執行異常的時候,可以檢視執行紀錄檔獲悉。
6. 取樣查詢:自動化bsf框架錄製的流量或者使用者自動匯入的流量,可以通過此選單進行查詢和模擬呼叫驗證。
7. 公共方法庫:通過定義公共的方法庫,簡化任務和定時計劃的編寫。公共方法庫幫助檔案
8. 使用者管理:可以管理平臺使用者和token授權。
9. 幫助檔案:到gitee原始碼管理檔案和一些最佳實踐檔案。

快速編譯

注意 bsf-core.jar和bsf-autotest.jar包,可能出現包參照錯誤,請至gitee release中下載相應jar包。
cd lmc-autotest 
mvn install

快速安裝

一般在mysql8.0,jdk8環境下,三步執行即可安裝。同樣也可以支援雲原生方式安裝,如阿里雲安裝最佳實踐
#web管理端
nohup java -jar \
-Dspring.datasource.druid.url=jdbc:mysql://127.0.0.1:3306/autotest?useSSL=false \
-Dspring.datasource.druid.username={資料庫} \
-Dspring.datasource.druid.password={資料庫} \
lmc-autotest-provider.jar > provider.log 2>&1 &

#壓測節點
nohup java -jar \
-Dspring.datasource.druid.url=jdbc:mysql://127.0.0.1:3306/autotest?useSSL=false \
-Dspring.datasource.druid.username={資料庫} \
-Dspring.datasource.druid.password={資料庫} \
lmc-autotest-task.jar > task.log 2>&1 &

支援多語言使用和第三方介入

完善的實踐檔案

功能介面展示

 

 

 

 

 

by 車江毅
 
加微信,可免費試用交流!