首頁>Club>
12
回覆列表
  • 1 # 急速馬力快de原始碼控

    一,埋點是什麼?

    埋點是軟體開發中的一個術語,用於採集資料或者驗證程式碼執行過程,不只是Java才有,各種開發語言中都有成熟的SDK開發包和框架使用。

    埋點的場景有多種,可以在程式執行時,還有在單元測試時。可以在伺服器,也可以在客戶端。可以收集程式執行資料,也可以收集使用者資料。

    二,單元測試時的埋點

    重點補充單元測試時用到的埋點技術。

    單元測試的目的是測試被測函式。但是被測函式往往不是那麼“簡單”,首先有入參,其次要依賴使用其它的變數、函式、資料、還有第三方介面,等等。

    被測試函式的程式碼執行路徑也會有多個,比如if-else,異常處理。

    如何模擬不同的場景,控制被測函式的執行依賴環境,驗證執行過程和返回結果是否符合預期?以Java開發為例,使用JUnit + Mockit,一個典型的單元測試組成如下:

    1. mock模擬依賴的資料、變數、函式、第三方介面,等等

    2. stub打樁埋點,設定期望的執行過程、入參、出參等資訊。

    3. verify驗證程式碼執行過程,比如埋點的函式被呼叫了1次,入參是abc。

    4. doThrow設定異常丟擲,驗證異常發生時的處理邏輯是否符合預期。

    三,單元測試的埋點示例

    舉個例子,被測試函式parseMsg(),讀取ActiveMQ訊息內容,轉換成JSONObject

    1,模擬入參TestMessage

    2,在getText()函式處打樁埋點,設定返回值

    3,呼叫被測試函式,驗證getText()函式被呼叫了一次

    4,驗證異常發生時,處理邏輯是否正確

  • 2 # AA蘇西老師

    埋點場景可以分為2大類:

    1、客戶端埋點,一般指的是移動端或者web客戶端、桌面端,常用於使用者行為的分析和監控。通常我們會考慮,流量、產品、使用者這幾大指標,用於產品決策。

    2、服務端埋點,在很多情況下我們的java系統都是純底層應用,這種情況最典型的就是透過對介面的埋點來進行請求、結果、異常、耗時等全鏈路的監控分析,特別是微服務架構的應用,當然這種情況一般都不需要業務開發人員來進行埋點,通常都是公司框架內建了埋點。當然,在業務上服務端也可以對業務行為進行埋點,這樣我們就可以行程自身的業務大盤。

    建議你學習下北京 尚學堂的Java課程

  • 3 # 拒海

    埋點大概分成2種

    業務埋點

    這裡埋點的含義就是:預先在使用者可能操作的"點",埋下上報的程式碼,一旦使用者發生了操作,我就上報該使用者操作的詳細資訊

    一般是要產品或者運營提出需求,在哪裡埋點,比如

    這就是所謂的大資料了,可以分析出使用者對什麼樣的內容感興趣,從而更精準的向用戶推薦內容

    最好就是使用者每一個操作都能上報給後臺,使用者不操作,也會觸發上報,比如,"進入了xx頁面n秒鐘沒有操作"

    要說明的是,這種埋點和具體你用哪種開發語言無關

    監控埋點

    這種埋點不是給產品和運營分析使用者的,是讓開發/運維對自己的程式有個更精準的認識

    比如

    定時採集伺服器的cpu負載,記憶體佔用情況,io負載,java 的 gc 資訊程式執行某個功能的耗時,進行遠端呼叫時的耗時程式在一段時間內捕捉到了哪些異常在一段時間內,遠端介面的平均響應時間,請求次數,成功返回次數,失敗次數,超時次數等等

    這種埋點有助於開發、運維分析程式的效能問題,監控程式的健康程度,提早進行異常的告警

    這樣的埋點稱為metric,grafana就是一款很優秀的開源的metric監控,你只需要定時把埋點資料提交給它,可以檢視各項metric的統計曲線,並設定告警規則,當某個metric達到告警閾值,可以透過郵件、簡訊、即時通訊程式(IM)向你推送告警資訊

    由於這樣的埋點對業務程式碼有很嚴重的侵入,所以很多公司會開發通用的埋點框架,採用反射等方式進行執行監控

  • 中秋節和大豐收的關聯?
  • 贏駟有幾個王后?