当前位置:网站首页>MeterSphere開源持續測試平臺與阿裏雲雲效DevOps的集成
MeterSphere開源持續測試平臺與阿裏雲雲效DevOps的集成
2022-06-25 01:45:00 【FIT2CLOUD飛致雲】
6月24日,MeterSphere一站式開源持續測試平臺發布v1.20.8 LTS版本。
本文將分享如何集成MeterSphere一站式持續測試平臺與阿裏雲雲效DevOps平臺,幫助企業快速補足DevOps流水線的最後一公裏。
一、持續測試:DevOps最後一公裏
說起DevOps,大部分人的第一反應或者說映入腦海的就是CI/CD(Continuous Integration/Continuous Delivery,即持續集成與持續交付)。但是,要想構建能够支撐起持續交付的軟件研發能力,與之相輔相成的軟件測試能力必不可少。
正如《持續測試白皮書》(“軟件質量報道”公眾號與MeterSphere項目組聯合撰寫)在《持續測試產生的背景與意義》章節中所說:“目前,大家普遍認為持續測試是指軟件持續交付流水線中的一種可隨時開展且具有連續性的測試自動化測試流程。它基於强調全方比特的測試能力,以及測試、開發和運維良好的融合自動化測試能力,但它更關注利用自動化測試能力在持續交付流水線全過程中及時、准確地給團隊提供當前版本的質量和使用體驗反饋,從而切實保障軟件持續交付過程中的質量”。

從經典的持續交付莫比烏斯環中也可以解讀出“持續測試應該作為一項基礎和持續的測試活動、貫穿於整個軟件交付周期之中。”企業開展持續測試能够幫助企業盡快獲得軟件發布後業務風險的反饋。
由中國信息通信研究院牽頭撰寫的全球首個DevOps標准,即《研發運營一體化(DevOps)能力成熟度模型》中第3部分——《持續交付》章節中也闡明了,測試管理是持續交付七大能力域之一。

參照《研發運營一體化(DevOps)能力成熟度模型》要求,軟件行業先後引入了SCRUM敏捷軟件開發模型、持續構建、持續部署、持續監控等一系列最佳實踐。而不同於CI/CD工具集,例如GitLab或者GitHub成為代碼庫標准,Jenkins成為持續集成工具主流。
而測試本身,在DevOps流程體系中並沒有一個平臺或者工具完成所有的測試類型,用戶會采用不同的工具完成不同的測試類型。乃至同一種測試都采用了不同的工具,比如接口測試有采用Postman、JMeter、pytest等。而不同的測試工具都無法非常適配地嵌入集成到DevOps流程體系中,從而導致了測試速度、測試反饋等方面的滯後問題。
相比於其他環節,測試領域無論從工具的集成還是最佳實踐等方面,都已經成為企業落地敏捷及DevOps實施的最大瓶頸之一。
二、阿裏雲雲效DevOps平臺簡介
阿裏雲雲效是雲原生時代一站式BizDevOps平臺,支持公共雲、專有雲和混合雲多種部署形態。
雲效DevOps提供項目協作、代碼管理、持續交付流水線、雲原生應用交付、在線IDE、制品倉庫、測試管理、知識庫 、效能洞察九大產品。

詳情可進入鏈接查看:
https://www.aliyun.com/product/yunxiao?channel=yy_sem_key_yunxiao&utm_content=se_1009966124。
三、MeterSphere開源持續測試平臺簡介
MeterSphere是一站式開源持續測試平臺, 涵蓋測試跟踪、接口測試、UI測試、性能測試、 團隊協作及融入DevOps等功能,全面兼容JMeter、Postman、Swagger、Selenium等主流開源標准。
MeterSphere的五大功能模塊如下圖所示:

■ 測試管理:遠超TestLink的使用體驗,覆蓋從編寫用例到生成測試報告的完整流程;
■ 接口測試:媲美Postman體驗 ,接口管理、Mock、多協議支持、場景自動化,你想要的全都有;
■ UI測試 :基於Selenium瀏覽器自動化,高度可複用的測試脚本;無需複雜的代碼編寫,人人都可開展的UI自動化測試;
■ 性能測試:兼容JMeter,支持Kubernetes和雲環境,輕松支持高並發、分布式的性能測試;
■ 團隊協作、融入DevOps:用戶管理、租戶管理、權限管理、資源管理,無論團隊規模如何,總有適合的落地方式。
四、為什麼需要對雲效和MeterSphere進行集成?
基於雲效DevOps平臺介紹描述,雲效DevOps平臺集成需求管理、代碼管理、流水線、制品倉庫、應用交付管理、測試管理等。
但是在實際的使用中,在測試功能域中雲效只包含了面向開發人員的單元測試和測試用例(手工測試)管理(可以給用例標記不同的測試類型,例如接口自動化,但是無實際作用)。如下圖所示,這樣的功能對於一些應用交付測試是遠遠不够的。


因此,為了更好地在DevOps環節中引入自動化測試,需要引入測試平臺。能够將測試作為一項服務來提供,而不僅僅是測試工具進行使用。
對企業而言,無論產出比和對整體測試人員使用的友好度(並不是所有測試人員都可以基於Python寫接口自動化)方面,MeterSphere開源項目在業內都有著不錯的口碑。所以MeterSphere和雲效進行有效的集成,可以打通雲效DevOps中測試最後的一個環節,實現“一加一大於二”的效果。
五、MeterSphere與雲效集成的具體操作流程
本次實操Demo重點依賴雲效的流水線,實操環境采用了GitHub代碼庫、阿裏雲雲效流水線、阿裏雲個人鏡像倉庫、本地Jenkins環境、一臺本地虛擬機(用於自動化部署)、MeterSphere平臺、MeterSphere平臺的Jenkins插件。
本次模擬場景如下:

■ MeterSphere部署
MeterSphere官網提供了一鍵部署脚本:curl -sSL
https://GitHub.com/metersphere/metersphere/releases/latest/download/quick_start.sh | sh
具體其他部署詳見MeterSphere官網:
https://metersphere.io/docs/quick_start/quick_start/
■ MeterSphere Jenkins插件部署
1. GitHub上下載MeterSphere Jenkins插件 :
https://GitHub.com/metersphere/jenkins-plugin;
2. 在Jenkins的插件管理頁面,上傳並安裝下載好的HPI插件包;
3. 插件安裝後,在指定的Jenkins構建任務中,添加“MeterSphere”類型的構建步驟;

根據圖示進行配置,填寫認證信息並選擇需要觸發執行的測試計劃(本文測試計劃名稱為MeterSphere-demo-testplan)。

■ 雲效具體配置步驟
1. 開通阿裏雲雲效產品使用

2. 新建與配置流水
① 新建流水線;

② 選擇空白模板的流水線;

③ 添加代碼源:流水線中添加流水線GitHub代碼倉庫源(提示需要GitHub授權),選擇GitHub的命名空間、倉庫和分支;

④ 添加構建:選擇鏡像構建並推送至阿裏雲鏡像倉庫個人版,選擇鏡像倉庫(需要提前在阿裏雲區域中開通鏡像倉庫),填寫Dockerfile路徑(在GitHub代碼庫中需要包含Dockerfile文件,詳見文末GitHub樣例),配置企業微信通知(需要提前創建企業微信助手的WebHook);


⑤ Docker部署:選擇主機組(需要准備可以連接到互聯網一臺主機,按照提示安裝阿裏雲的Agent),編寫部署脚本;

⑥ 觸發MeterSphere自動化測試:填寫安裝了MeterSphereJenkins插件的Jenkins Master信息,填寫Job名稱(本次實踐名稱為MeterSphere-demo-testplan)。

備注:Jenkins實例全局安全設置中需關閉“防止跨站點請求偽造”選項,不然此部署會失敗。
https://cloud.tencent.com/developer/article/1941884(竟然是騰訊雲的社區貼)
整體的流水線如下圖所示:

■ GitHub配置
1. GitHub示例項目;


2. 查看雲效流水線中的WebHook;

3. GitHub代碼庫中配置WebHook,“Let me select individual events”選項中勾選“Pull requests”。


六、最終集成效果展示
編輯GitHub中index.heml中的文件信息,然後commit changes提交;

顯示已經觸發流水線,雲效流水線中已經正在運行;

點擊流水線名稱可以查看詳細運行信息;

可以查看每個步驟執行情况;



同時企業微信已經收到每個階段的相應的消息通知;



打開自動化部署系統頁面,內容信息已經更新為代碼修改的內容。

可以在MeterSphere平臺中消息中心,配置詳細的測試結果企業微信通知;

點擊企業微信的MeterSphere報告詳情連接或者登錄MeterSphere平臺,可以查看具體的報告內容和測試結果。

七、總結
結合阿裏雲雲效DevOps平臺和MeterSphere一站式開源持續測試平臺,企業可以快速補足DevOps流水線的最後一公裏。
當然,本文只是一個在Demo環境的操作演示,並非正式的生產環境,供大家參考與思路參照。比如在觸發自動化測試前,在流水線中加入自動化檢測“自動化部署是否已經完成”的檢測,只有檢測到部署完成後才會進行自動化測試(本文只是在脚本裏面加了下sleep )。不同的企業可以結合自己的研發、交付、測試要求,將MeterSphere開源持續測試平臺串聯到自己的交付流水線中。
边栏推荐
- 门店无线音箱造假?索尼回应:产品预留了有线连接接口 复杂场景下可以使用
- Tencent cloud wecity Industry joint collaborative innovation to celebrate the New Year!
- Basic knowledge of assembly language (2) -debug
- Abnova BSG monoclonal antibody description in Chinese and English
- After integrating the aurora push plug-in in the uni app, the real machine debugging prompts "the currently running base does not contain the native plug-in [jg-jpush]..." Solutions to problems
- Deoxyribonuclease I instructions in Chinese and English
- 结合实操带你吃透Redis持久化
- Abnova丨5-甲基胞嘧啶多克隆抗体中英文说明
- 海河实验室创新联合体成立 GBASE成为首批创新联合体(信创)成员单位
- MPLS notes Part 1
猜你喜欢
Icml2022 | establishing a continuous time model of counterfactual results using neural control differential equations
(CVPR 2020) Learning Object Bounding Boxes for 3D Instance Segmentation on Point Clouds
【LeetCode】11、盛最多水的容器
天书夜读笔记——深入虚函数virtual
PMP考试“临门一脚”如何踢得漂亮?
Bi-sql create
Longest continuous sequence [diffusion method + space for time]
实验5 8254定时/计数器应用实验【微机原理】【实验】
Use redis' sorted set to make weekly hot Reviews
Abnova CSV magnetic beads description in Chinese and English
随机推荐
AutoCAD - two extension modes
Day 04 - file IO
matlab 取整
The innovation consortium of Haihe laboratory established gbase and became one of the first member units of the innovation Consortium (Xinchuang)
Longest continuous sequence [diffusion method + space for time]
屡获大奖的界面控件开发包DevExpress v22.1官宣发布
Install mysql5.6 under linux64bit - the root password cannot be modified
Use redis' sorted set to make weekly hot Reviews
AUTOCAD——两种延伸方式
通达信哪个开户更安全,更好点
How to prepare for the last day of tomorrow's exam? Complete compilation of the introduction to the second building test site
Which account is safer and better for access letter
Icml2022 | establishing a continuous time model of counterfactual results using neural control differential equations
Tencent cloud wecity Hello 2022!
Redis and jedis
Cake review fatigue in the secondary market of innovative drugs: phase III clinical success and product approval
Unity C# 网络学习(六)——FTP(一)
Application session coverage solutions with different ports on the same server
1. package your own scaffold 2 Create code module
[leetcode] 11. Container with the most water