【星雲測試】Devops微服務架構下具有代碼級穿透能力的精準測試

来源:https://www.cnblogs.com/davidtest/archive/2018/12/10/10096931.html
-Advertisement-
Play Games

微服務是Devops場景下熱門的開發框架,在大型項目中被廣泛採用。它把一個大型的單個應用程式和服務拆分為數十個的支持微服務,獨立部署、互相隔離,通過擴展組件來處理功能瓶頸問題,比傳統的應用程式更能有效利用計算資源。微服務之間無需關心對方的模型,它通過事先約定好的介面進行數據流轉,使業務可以高效響應市 ...


微服務是Devops場景下熱門的開發框架,在大型項目中被廣泛採用。它把一個大型的單個應用程式和服務拆分為數十個的支持微服務,獨立部署、互相隔離,通過擴展組件來處理功能瓶頸問題,比傳統的應用程式更能有效利用計算資源。微服務之間無需關心對方的模型,它通過事先約定好的介面進行數據流轉,使業務可以高效響應市場變化。但微服務一個明顯的表象就是隨著服務的增多,傳統的測試模式受到很大制約,無法有效進行下去,威脅到整體系統質量。所有J2EE代碼層白盒採集工具都無法區分覆蓋和具體功能的對應關係,只能以後臺模式“籠統“的採集一個階段的總的覆蓋,無法滿足對於Devops下對於故障定位、深度測試分析以及敏捷發佈演算法的要求。
 
  星雲測試(www.teststars.cc)發佈分散式微服務精準測試解決方案,是目前市場上唯一可達到在複雜分散式系統中,跨多個伺服器進行代碼白盒級分析、實現請求分散式追蹤的測試平臺。其中產品內的穿透模塊,可以支持各種主流微服務通信架構。例如httpclient,springcloud微服務架構、阿裡dubbo微服務架構,以及消息隊列,將併發訪問場景下跨多個服務多組代碼邏輯分離並重建追蹤出來。實現業務邏輯的代碼在開發層面通過微服務離散後,在測試階段則可以反向複原整個完整代碼執行視圖。精準測試裡面的穿線概念(Threadingtest)增加了第三層含義,即針對的分散式服務的穿透能力。
 
【星雲測試】Devops微服務架構下具有代碼級穿透能力的精準測試
 
  微服務場景下,一個完整請求會跨多個計算(服務)節點,而對於以節點為剖面的各種測試和監控手段都變得不那麼直接和有效。一個請求鏈路的失效和性能故障等問題,從一個計算節點剖面去分析是很困難的,因為在一個計算節點剖面上的數據是混合型數據,而無法區分這裡面的數據來自於那個請求。原始的方法無法將一個調用鏈路上的所有信息完整的重新刻畫出來。業界流行的APM技術可以某種程度實現這種調用鏈路分析,該項技術主要用於監控,體現的數據是組件級的,而且為了性能考慮還經常抽取樣本,無法達到測試要求的代碼級的分析。
 
  微服務採用的“分而治之”的策略,而精準測試對於微服務的測試和運營管控上採用的是“概覽全局”的策略。精準測試在編譯階段,重新將微服務所有模塊視為一個完整項目,統一編譯和插裝,經過插裝後的代碼重新部署到原有節點上。在微服務的啟動過程中附加上分散式追蹤所需要的agent啟動,即可完成微服務場景下達到測試用例級的代碼全調用路徑分析。由於微服務有多個程式模塊,星雲測試平臺支持模塊級增量編譯模式,即每次編譯替換某一個模塊就可以生成一個新的版本,而無需將所有微服務模塊全新編譯。
 
  穿透和分散式追蹤的原理,這裡要重點將以下星雲測試JavaEE應用伺服器agent的能力。agent提供了一個虛擬jsp的技術,通過agent啟動的被測應用,都附加了一個虛擬jsp,地址類似於http://www.appundertest.com/teststars.jsp。  訪問這個頁面可以用來指本機的用戶,一般這個設置和精準測試示波器的登錄用戶需要一致。設置完成後,對被測試應用的請求將附加上一個用戶標識的cookie信息,這個信息會在微服務的多層架構中一直攜帶和穿透。例如從瀏覽器發起的一個帶著用戶標識信息的請求,到了應用服務的處理線程中,這個線程執行的所有代碼將附加上這個用戶信息,如果應用在向後調用其他的節點的服務,則這個用戶信息會繼續向後傳遞,直到最後的執行節點。由於每個節點的代碼均有精準測試系統插裝的代碼,會自動的向用戶請求發起端的示波器回饋數據,那麼就可以實現將整個調用鏈路上的代碼邏輯發送給示波器。示波器收到數據後,將動態數據和代碼編譯階段的程式靜態數據結合起來,即可展示全鏈路的程式調用路徑信息。從另外角度,當微服務系統有多個請求同時並行的時候,那麼每個示波器收到的是自己對應的請求代碼的全鏈路執行情況,而其他示波器用戶和其他普通用戶的數據則不會被收錄進來。
 
【星雲測試】Devops微服務架構下具有代碼級穿透能力的精準測試
 上圖是一個spring cloud微服務架構下兩個節點的調用圖。當從第一層入口組件訪問後,入口組件向後調用下一層節點的時候,後一層節點的運行線程自動取到了前一層節點的用戶信息,並且加入到了第二層節點的運行線程式控制件。這樣,通過精準測試示波器(登錄用戶標識和請求標識一致)就可以收到兩個節點的數據。實現多個用戶同時訪問分散式應用的時候,不同用戶出發的數據自動分離,路由到對應的示波器,最終對應到用例上。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ...
  • vue route transition vue router 切換動畫 特性 模擬前進後退動畫 基於css3流暢動畫 基於sessionStorage,頁面刷新不影響路由記錄 路由懶載入,返回可記錄滾動條位置 前進後退的判斷與路由路徑規則無關 支持任意基於Vue的UI框架 demo 手機掃碼 "在 ...
  • // 簡訊提交驗證 //$(function(){ var daoshu = 60; var timer = null; //手機號 function checkPhone(){ var phoneNumber = $.trim($('#t_code').val()); var phone = do ...
  • var time = new Date(); //當前時間 var year = time.getFullYear();//當前年份 var month = time.getMonth()+1; //當前月份 var Same_day = time.getDate(); //當前月份幾號 var t... ...
  • 1、基礎準備: 先來瞭解下,如何運用js實現select動態添加option。 //1.動態創建select function createSelect(){ var mySelect = document.createElement("select"); mySelect.id = "mySele ...
  • Bootstrap -- 文本,背景,其他樣式 1. 文本樣式:展示了不同的文本顏色 使用文本樣式: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> ...
  • 1. 你能描述一下漸進增強和優雅降級之間的不同嗎? 2. 請說說瀏覽器內核的組成? 3. 為什麼利用多個功能變數名稱來請求網路資源會更有效? 4. 說說前端開發中, 如何進行性能優化? 5. 從前端角度出發, 談談做好網站seo需要考慮什麼? ...
  • 調用 // 分頁import pages from 'components/common/pages/pages' components: { pages }, <pages :total="total" :page-size="pageSize" @handleSizeChangeSub="han ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...