異常測試平臺搭建

異常測試是有別于功能測試和性能測試又一種測試類型,通過異常測試,可以發(fā)現(xiàn)由于系統(tǒng)異常、依賴服務(wù)異常、應(yīng)用本身異常等原因引起的性能瓶頸,提高系統(tǒng)的穩(wěn)定性。

目的

在日常測試中,由于排期緊張以及異常情況的難以模擬,異常測試通常被大家所忽略或者放棄。只要功能沒問題,就可以上線。但是線上情況千奇百怪,服務(wù)器宕機、用戶走到代碼的犄角旮旯、三方服務(wù)掛逼等情況無可避免的發(fā)生,因此對于一個系統(tǒng)的健壯性和穩(wěn)定性,異常測試不可或缺,但之前的異常測試手段基本上都是讓研發(fā)預(yù)留bug、注釋代碼、到測試機上殺死服務(wù)等,代價較大,且有可能帶著bug上線。降低異常測試的門檻,就是異常測試平臺搭建的目的。

工具選型

目前異常測試工具有很多,比如模擬網(wǎng)絡(luò)異常的tc(Traffic Control)、netem和iptables,模擬代碼注入故障的jvm-sandbox工具,以及在生產(chǎn)環(huán)境隨機模擬各種故障的Chao Monkey框架等等,經(jīng)過了多次調(diào)研,秉持著“拿來主義”的原則,最終采用了“集大成”的chaosblade。chaosblade提供了cpu、磁盤、內(nèi)存、網(wǎng)絡(luò)、jvm等異常的注入功能。chaosblade的jvm異常注入能力底層是基于jvm-sandbox,提供了無侵入,運行aop的能力,使用起來比jvm-sandbox更加簡單。同時,它還提供了server模式,可以暴露web服務(wù),上層可以通過http進行調(diào)用。

方案

將chaosblade服務(wù)在目標服務(wù)器上啟動,然后springboot服務(wù)進行調(diào)用,springboot再對chaosblade再進行一次封裝(沒有什么是通過一次封裝解決不了的,如果有,那就兩次),簡化chaosblade的使用和對數(shù)據(jù)進行存儲,以及一些針對我司的個性化需求,再通過前端,將參數(shù)界面化給用戶,用戶通過一些簡單的填寫,就可以進行相應(yīng)的異常注入。


image.png

后端實現(xiàn)

image2.png

遇到無法編譯的lib包解決辦法:
git上下載chaosblade-exec-jvm源碼,在查找需要編譯的類那里將無法打開的lib包直接跳過即可


image3.png

前端頁面

未來預(yù)期

1、提高異常注入穩(wěn)定性,目前由于chaosblade本身bug,首次注入基本上都會失敗,以后可以加入主動重試和存在取消功能
2、將前端的很多輸入框修改為選擇項,進一步提高效率
3、加入重試和編輯功能
4、提供動圖mock能力

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容