分布式測試系統建設

2020-12-16 nishanghappy

原創:張少華

背景

隨著自動化測試用例的增長,模塊持續集成中的驗證環節時間也隨之增長。如果使用單臺機器,可能需要幾個小時的時間才能完成一次所有用例的運行。這裡我們能想到的最直接的方法,就是增加機器資源,並行運行測試用例。我們首先使用的方法是,在jenkins中將運行時間長的模塊的功能測試job,拆分為多個可並行執行的job。但即使我們封裝了許多jenkins相關的操作方法,可以使用腳本快速生成一系列job,但是依然存在以下問題:

增減機器成本太高,需調整整個jenkins的任務。並行job運行時間不固定,瓶頸為最慢的job運行的時間。穩定性問題,並行執行機器任何一臺出現問題,都會影響整體任務。

建設目標

為了解決上面的問題,當時我們期望的測試系統有以下要求:

穩定性高,比如某個機器出現問題不會影響整體任務:穩定是重中之重。分布式執行,同一job的多臺機器可並行執行,同時,多個模塊之間也可以並行執行測試任務:充分利用機器資源,提升自動化測試效率。配置方便,機器資源池維護簡單:可以節省維護的人力,將時間用於更有意義的事情上。結果報告清晰,排查問題方便:錯誤case日誌、環境等信息及時保存。我們並沒有使用一些開源的分布式框架,因為我們的需求相對來說比較簡單,而且有一些定製化的需求,同時希望之後測試同學們可以在此之上做二次開發,所以最終我們決定自己實現這一系統。

具體實現

總體設計

整個系統主要分為三個角色模塊:客戶端、控制中心(Master)及worker端,其中client端在。

圖一

對於一個Jenkins job觸發的分布式任務,主要步驟有:

Jenkins job調用客戶端發送請求到控制中心,傳遞job相關信息,請求創建任務。控制中心(Master)根據請求信息創建任務,篩選case創建task列表(每一個case對應一個task,可分布式執行),分配worker。Jenkins客戶端請求控制中心查詢任務狀態接口,列印當前狀態。Worker端請求控制中心獲取可執行的命令,做出相應的拉取代碼、準備環境、執行單個case task、清理環境等命令。所有task執行完後,jenkins客戶端獲取任務結果,退出任務。詳細的交互過程如下如所示:

圖二

如何實現並行執行?

由於我們的case在單臺機器上不能並行執行,所以我們所說的並行是指多臺機器同時執行case;在創建任務的時候,會篩選出所需執行的case,每個case將會對應創建一個task並加入task隊列;worker請求命令時,會從task隊列中挑選合適的task進行分配(case的運行時間長的優先級高,避免出現最後等待case運行結束時間長的情況發生)。

控制中心(Master)

控制中心包括server和後臺數據兩部分,後臺資料庫存儲job信息、case信息、worker信息(資源池)、result信息、配置信息等。Server提供接口供客戶端及worker端訪問,分步執行的控制邏輯都在控制中心實現。

由於控制中心沒有頁面,所以控制中心提供了一系列接口供其他模塊使用:

圖三

客戶端

客戶端,即jenkins job中運行的腳本,每一個jenkins job對應著一個分布式的任務。

首先需要創建任務,請求/job/create接口的時候,我們會把從jenkins job的環境變量中獲取的一些信息發送給Master,如jenkins job的名稱,BUILD_NUM,以及最為重要的模塊信息及代碼倉庫、分支信息。

然後,會使用/job/status循環查詢任務的狀態,實時列印在控制臺輸出裡。

圖四

最後,根據任務運行狀況返回結果。

圖五

worker端

worker端,即實際case運行所在的機器,每個worker都是獨立的,互不影響。通過控制中心接口不停詢問自己應該執行什麼操作。

首先在worker端我們添加了一個系統服務,守護進程持續執行中。

圖六

然後,worker在空閒狀態的時候,會根據接口/worker_get_command循環請求控制中心,如果有命令的話,就會去執行,執行完後,將執行產生的結果、日誌文件上傳到日誌平臺;同時調用/result_update接口,把命令的運行結果傳遞到控制中心。

收益與問題

系統上線後,完美取代了我們之前手動jenkins分組執行自動化測試的方法,首先從服務的健壯性性及正確性來說,很少會出現因為測試環境或是工具出問題而影響整個測試任務的情況,讓開發和測試同學將精力聚焦於case反映出的業務代碼問題上;其次,配置簡單,大大節省了維護時間;最後,由於worker資源池擴充方便,大大發揮了並行的作用,使整個測試任務效率有了很大的提升。

當然,還是存在著進一步優化的空間,比如現在的機器資源是在創建任務時分配好的,可以優化為在整個任務過程中動態調整,充分利用機器資源等。

相關焦點

  • Filecoin第二輪測試網榜首:時空雲科技——分布式網絡運營商
    公司簡介深圳時空雲科技有限公司是一家專注於分布式存儲、分布式計算、分布式資料庫技術研發的高新技術公司,旗下投資孵化「IPFS中國社區」、「FILPool礦池」、「蜘蛛礦機」等子品牌,專業從事Filecoin礦機研發、礦場建設
  • 光纖分布式振動檢測系統
    基於φ-OTDR原理的分布式光纖振動傳感技術以其分布式、長距離、可定位的獨特優勢,加上光纖傳感技術自身的抗電磁幹擾、功耗小、布設靈活、成本較低等優勢,特別適用於重點區域周界安防、油氣管道防盜挖監測、通信鏈路安全預警等應用領域。   基於上述需求和優勢,長飛公司開發出光纖分布式振動傳感系統(DVS),並在上述領域得到廣泛應用。
  • XSKY分布式存儲助力運營商關鍵業務系統
    運營商加碼分布式架構以往,運營商IT系統優先選擇小型機、各種高端伺服器、磁碟陣列以及大型商業資料庫等進行構建。在這種技術體系下,IT系統整體架構複雜,煙囪式架構導致信息割裂,各系統間數據不能互通和共享,存在著諸如橫向擴容困難、資源綜合利用效率低、維護成本高等顯著弊端。
  • 助力全國IPFS分布式雲存儲中心建設
    耘存短期目標:加速IPFS節點拓展及礦池建設。中期目標: IPFS垂直媒體、IPFS落地應用與生態搭建。長期目標:全國分布式雲存儲中心建設。耘存科技是一家專注於分布式雲存儲區塊鏈技術的企業。公司專注於軟體技術開發和區塊鏈研究應用,以偉大的IPFS(InterPlanetary File System)為分布式雲存儲市場切入點。目前已經在上海、常熟、杭州、寧波等地設立礦場,並在香港等地展開部署。未來佔據分布式存儲市場主要份額,全球布局IDA機房,為分布式雲存儲及流媒體等大數據存儲需求的項目和企業提供伺服器。並提供全方位一體化應用落地建設服務。
  • 小鳥科技「火鳳」系列雙碼流IP化編解碼分布式系統
    「火鳳」系列雙碼流IP化編解碼分布式產品,顧名思義,它是跨時代的雙碼流分布式系統產品是集合了深壓縮分布式和淺壓縮分布式的特性的涅槃重生產品。而是將兩種制式的系統相互融合,形成更完善的解決方案。早在2015年伊始,小鳥科技就推出了AVCNet-B系列分布式產品,實現多系統間的互聯互通。在2019年推出的新一代B系列深壓縮分布式系統,針對上述深壓縮分布式的缺點,都進行有針對性的系統優化,通過FPGA+DSP的全新架構,彌補了深壓縮分布式的缺點。
  • 分布式跟蹤系統的四大功能模塊如何協同工作
    其理由是確立的:微服務通常會發生讓人意想不到的錯誤,而分布式跟蹤則是描述和診斷那些錯誤的最好方法。也就是說,一旦你準備將分布式跟蹤集成到你自己的應用程式中,你將很快意識到對於不同的人來說「分布式跟蹤Distributed Tracing」一詞意味著不同的事物。此外,跟蹤生態系統裡擠滿了具有相似內容的重疊項目。
  • 分布式微服務架構成確定性趨勢 撬動銀行新一輪IT改造
    同時,解耦分布式系統架構使得各子系統之間關聯性得以解耦,每個結點都是一個可以獨立運行的單元,單結點失效也不會影響整個系統運行,因而大大降低了運維成本和安全隱患,確保高可靠性。  此外,分布式架構的可靠性也在多次壓力測試中逐步得到驗證。可靠性主要體現在銀行對實時交易業務的強一致性要求,這需要通過各類容錯、糾錯及補償機制來加以保證。
  • 床長人工智慧教程免費分享——分布式系統 in 2010s
    所以我們選擇了從另一個方向解決這個問題,提升分布式環境下的復現率,能方便復現的就能好解決,這個思路也是最近幾年很火的。做的幾個關鍵點定義穩態,記錄正常環境下的以及關注的重要指標。定義系統穩態後,我們分為實驗組和對照組進行實驗,確認在理想的硬體情況下,無論如何操作實驗組,最後都會回歸穩態。
  • 美國NASA推出X-57飛機 驗證測試分布式電推進技術
    作為NASA的「X」系列技術驗證機中首種採用全電推進的型別,X-57採用了獨特的分布式電推進系統,其技術在輕型飛機、通用飛機、支線客機等類型飛機上具有良好的應用前景,對於電動飛機技術儘早實用化並投入商業運營是一次非常有價值的探索,因而其動向一直吸引著外界的關注。
  • 加速信息變革 提供決策優勢 美軍建設下一代分布式通用地面系統
    9月26日,美國《超越地平線》雜誌刊文《下一代分布式通用地面系統:加速變革,提供決策優勢》,指出大國競爭的回歸、威脅環境的演變、情報系統的過時下一代分布式通用地面系統(DCGS)為空軍及飛行員提供了新優勢,使情報分析人員能夠融合多源情報,並與空軍「先進作戰管理系統」和「聯合全域指揮與控制」的最新成果相結合,將在各個層面為美軍提供決策優勢。
  • 基於分布式帳本技術的跨境支付系統應用
    分布式帳本技術及其在跨境支付領域的應用分析分布式帳本是一種在網絡成員之間共享、複製和同步的資料庫。與典型的帳本系統不同,分布式帳本系統由該系統的所有參與者而不是由一個中心方(例如銀行或清算中心)進行維護。它以密碼學技術為基礎,通過分布式多節點共識機制,完整、不可篡改地記錄交易過程。
  • 淵亭分布式圖資料庫DataExa-Seraph測評性能遠超JanusGraph!
    淵亭DataExa-Seraph界面01 綜合測試結果JanusGraph 作為一款開源的分布式圖資料庫系統,在性能和功能上都有不錯的表現,DataExa-Seraph 作為一款分布式圖資料庫系統,在性能,安全能力,管理能力,高可用能力均有優異的表現。
  • 新一代分布式文件系統XGFS揭秘——元數據服務
    XSKY新一代分布式文件系統XGFS揭秘——元數據服務新一代分布式文件存儲系統XGFS,基於最新一代NVMe/SCM存儲介質設計,利用高性能LSM存儲引擎,結合XSKY獨有專利技術的鍵值設計,構建出完全自主的元數據服務…本文系揭秘XGFS系列之首篇內容。
  • 某部醫院數據中心系統建設採購項目(二次)中標公告
    某部醫院數據中心系統建設採購項目(二次)中標公告窗體頂端某部醫院數據中心系統建設採購項目(二次)>中標公告甘肅新一工程諮詢有限公司受某部醫院的委託,對某部醫院數據中心系統建設採購項目(二次)以公開招標的形式進行採購,評標小組於2020年9月
  • XnMatrix 聯合多方發起 50 億投產建設籤約儀式 共建分布式存儲...
    11 月 19 日,由 XnMatrix 及旗下冰河分布式存儲實驗室聯合主辦,星鐵中國協辦的「分布式存儲 2020 年度峰會」在成都隆重舉行。本次峰會以分布式儲存技術加速 Web3.0 新一輪科技、產業變革為契機,探討高效、安全、低成本的數據存儲解決方案,推動前沿技術成果落地應用,助力分布式儲存產業生態建設。
  • 完美的分布式監控系統——普羅米修斯
    Prometheus於2012年由SoundCloud創建,目前已經已發展為最熱門的分布式監控系統。Prometheus完全開源的,被很多雲廠商(架構)內置,在這些廠商(架構)中,可以簡單部署Prometheus,用來監控整個雲基礎架構設施。比如DigitalOcean或Docker都是普羅米修斯作為基礎監控。
  • 「互動」科藍軟體:公司Goldilocks分布式資料庫已完成百行測試
    來源:金融界網站科藍軟體(300663)在互動平臺上表示,7月,公司Goldilocks分布式資料庫剛剛獲得工信部信通院第十批大數據產品能力測評證書,同時為《資料庫服務能力成熟度模型》標準制定參與單位。
  • 汽車CAN/LIN網絡系統測試
    汽車CAN/LIN總線系統測試的關鍵是測試流程、測試標準和測試工具,掌握專業的總線分析和測試工具的使用技術,開發測試軟體並將它們應用到測試過程是對中國汽車廠家和汽車工程師的重大挑戰,本文介紹CAN/LIN總線設計、仿真、分析和測試工具。
  • 解決分布式系統事務一致性的幾種方案對比,你有更好的嗎?
    在分布式系統中,同時滿足「一致性」、「可用性」和「分區容錯性」三者是不可能的。分布式系統的事務一致性是一個技術難題,各種解決方案孰優孰劣?寫在前面在 OLTP 系統領域,我們在很多業務場景下都會面臨事務一致性方面的需求,例如最經典的 Bob 給 Smith 轉帳的案例。傳統的企業開發,系統往往是以單體應用形式存在的,也沒有橫跨多個資料庫。
  • IPFS的分布式Web新協議∣實現分布式雲存儲
    IPFS的分布式Web的新協議,實現分布式雲存儲IPFS(星際文件系統)是為未來分布式網絡開發的一種協議。它旨在通過構建一個更加分散化的網絡來挑戰傳統的HTTP協議,用於在internet在客戶端和伺服器之間傳輸任何數據。IPFS旨在取代HTTPS成為網際網路的默認協議。