異常測試是有別于功能測試和性能測試又一種測試類型,通過異常測試歹撒,可以發(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)的異常注入房维。
后端實現(xiàn)
遇到無法編譯的lib包解決辦法:
git上下載chaosblade-exec-jvm源碼沼瘫,在查找需要編譯的類那里將無法打開的lib包直接跳過即可
前端頁面
未來預(yù)期
1、提高異常注入穩(wěn)定性咙俩,目前由于chaosblade本身bug耿戚,首次注入基本上都會失敗,以后可以加入主動重試和存在取消功能
2阿趁、將前端的很多輸入框修改為選擇項膜蛔,進一步提高效率
3、加入重試和編輯功能
4脖阵、提供動圖mock能力