作者|陳俊華、劉琳琳
異常測試是有别于功能測試和性能測試的一種測試類型,通過異常測試,可以發現由系統異常、依賴服務異常、應用本身異常等原因引起的問題,提高系統的穩定性。
目 的
在日常測試中,由于排期緊張以及異常情況難以模拟,異常測試通常被大家忽略或者放棄。隻要功能沒問題,就可以上線。但是線上情況千奇百怪,伺服器當機、使用者走到代碼的犄角旮旯、三方服務挂掉等情況無可避免,是以對于系統的健壯性和穩定性,異常測試不可或缺,但異常測試往往是通過讓研發預留bug、注釋代碼、到測試機上殺死服務等方法進行,代價較大,且有可能帶着bug上線。異常測試平台搭建的目的就是降低異常測試的門檻。
工具選型
目前異常測試工具有很多,比如模拟網絡異常的tc(Traffic Control)、netem和iptables,模拟代碼注入故障的jvm-sandbox,以及在生産環境随機模拟故障的Chao Monkey架構,經過了多次調研,秉持着“拿來主義”的原則,最終采用了“集大成”的chaosblade。chaosblade提供了cpu、磁盤、記憶體、網絡、jvm等異常的注入功能。chaosblade的jvm異常注入能力是基于jvm-sandbox,提供了無侵入運作aop的能力,使用起來比jvm-sandbox更加簡單。同時,它還提供了server模式,可以暴露web服務,上層可以通過http進行調用。
方 案
将chaosblade服務在目标伺服器上啟動,然後springboot服務進行調用,springboot再對chaosblade進行一次封裝(沒有什麼是通過一次封裝解決不了的,如果有,那就兩次),簡化chaosblade的使用和對資料進行存儲,以及一些針對我司的個性化需求,再通過前端,将參數界面化,通過一些簡單的填寫,就可以進行相應的異常注入。
後端實作
遇到無法編譯的lib包解決辦法:
git上下載下傳chaosblade-exec-jvm源碼,在查找需要編譯的類那裡将無法打開的lib包直接跳過即可。
前端頁面
CPU滿載場景 ,在ip的輸入框,輸入指定的IP 位址,IP的CPU負載會達到100% 。使用者要有該機器的權限才可以操作。
解除滿載的操作 操作記錄 清單 --->點選詳情 進入詳情頁面 ;
點選解除故障按鈕 ,cpu負載恢複到之前狀态
自定義方法傳回值
填寫方法的服務名、包名、全路徑類名、方法名,傳回值的json格式。
日志擷取傳回值資訊,然後轉成json格式,放入到輸入框中,該類型的異常注入時間在10s左右,請耐心等待。解除異常與上邊操作一緻
未來預期
- 首次注入時間通常在15s以上,前端表現為接口逾時,後續可以修改逾時時間,提高使用者體驗
- 将前端的很多輸入框修改為選擇項,進一步提高效率
- 加入重試和編輯功能
- 提供動态mock能力
往期精彩回顧
異常場景測試
轉轉App代碼覆寫率方案
測試環境問題排查的那些事兒
廣告召回自動化測試之路
場景接口測試平台搭建實踐
轉轉釋出系統問題排查實戰
業務場景抽離,助力測試提效
工具嘗鮮--單元測試自動生成工具 evosuite
輔助型QA轉型之路
Matrix-ApkChecker的實際應用
一名測試實習生的心路曆程
轉轉直播測試揭秘
App測試,安裝包走過的一生
RPC服務接口測試自動化初探
H5頁面多端相容測試與監控
移動端自動化測試-遠端裝置排程
電商業務測試方案與實戰落地(轉轉)
IOS遠端真機控制實踐
Java位元組碼增強技術介紹