分佈式應用異常測試一二說

  異常測試按性質分爲應用層的業務邏輯異常測試、系統硬件/網絡/文件/數據庫/緩存/中間件異常測試,其中包含了許多的場景(單機、分佈式),但全部的場景均和這兩項有直接的關係。前端

     業務邏輯異常測試體如今當上述的第二種異常發生時,是否能根據業務的須要或者架構的設計作出合理的業務處理反應,這是創建在第二種異常測試之上的,所以異常測試的關係也已經很是明確了,第一種測試根據業務的不一樣,範圍和流程有不肯定性,第二種測試則是在一些明確的規則和約定下進行。數據庫

 

     當架構演進到分佈式,每每在測試過程當中給人無從下手的錯覺,尤爲在異常測試方面,其實否則,前面提到的單機和分佈式看似是兩種類型,單獨看,單機的異常影響範圍可能會小一些,但事實上他們在分佈式環境中會產生互相影響:後端

  • 單機:從系統層面來講就是指單一進程,從異常測試角度來看,影響範圍發生在線程或進程級別,線程級別的異常可能致使線程的結束,且沒有啓動新的線程來代替,進程級別可能致使線程鎖的不釋放,致使其餘線程都掛起等待。緩存

  • 分佈式:分佈式是一個協同工做的應用環境,這種異常每每容易引發其餘進程的掛起,或者數據庫、緩存、中間件的問題,主要有網絡調用所佔用的資源、數據庫訪問等。服務器

    單機的異常若是處理不當,會引發整個環境中的資源不可用,從而致使環境中的每一個單機都出現異常。根據上述的一些概念,能夠列出異常測試中最重要的一些場景:網絡

  • 系統資源:cpu、內存使用率太高,可否能將請求切到到資源利用率低的服務器上;架構


     

  • 數據量大小和形式:數據到底應該注入多少知足後續的壓力測試,各服務對數據格式的要求和轉換;jvm


     

  • 文件讀寫:分佈式

    • 本地寫:對同一個文件打開的的數量過多,或者只打開不關閉,致使文件句柄數超過系統閾值;測試

    • 本地讀:打開一個不存在的文件,是否有對應處理邏輯;

    • 網絡存儲:服務不可用;


           

  • 應用鏈接:

    • 短鏈接:請求方未設置超時時間,長時間等待響應方的響應,從而致使請求的大量堆積,線程池的處理線程被用完,致使大量新的用戶請求被拒絕;

    • 長鏈接:在網絡出現異常情況後,斷開的鏈接是否能從新創建,請求方如拿到失效的鏈接,是否能處理異常;


       

  • 數據庫:

    • 數據源切換:若是所切換的數據源鏈接處於不可用狀態或宕機時,是否會長時間等待或重試;

    • 表鎖、行鎖:長時間更新操做,致使其餘對此表的修改操做被掛起;

    • 慢SQL的預防:經過對SQL的提早分析,來預防慢SQL相關的問題,及時告知DBA進行優化;


           

       

  • 緩存:

    • key的失效:在獲取不到key後,是否能正常處理;

    • 鎖的釋放:申請到鎖的一方若是意外重啓,是否能在重啓後釋放鎖;

    • 緩存服務不可用;


       

  • 消息中間件:

    • 消息記錄表切換:是否丟失;

    • 清除消息記錄:是否丟失記錄;


 

  • 服務發現:

    • 服務不可用:是否有其餘處理措施;

    • 單臺不可用:是否能從新選舉,從新創建鏈接;


             

  • 應用容器:

    • 鏈接數:配置優化;

    • 請求處理線程:配置優化;

    • jvm堆棧大小:參數優化;


           

  • 前端靜態化頁面:

    • 後端服務不可用;

    • 緩存不可用;


       

  • 數據庫中間件:

    • 數據訪問是否在錯誤發生後進行了正確的轉移;

    • 對於上層業務來講是否進行了正確的向下隔離;

相關文章
相關標籤/搜索