异常测试平台搭建

异常测试是有别于功能测试和性能测试又一种测试类型,通过异常测试,可以发现由于系统异常、依赖服务异常、应用本身异常等原因引起的性能瓶颈,提高系统的稳定性。

目的

在日常测试中,由于排期紧张以及异常情况的难以模拟,异常测试通常被大家所忽略或者放弃。只要功能没问题,就可以上线。但是线上情况千奇百怪,服务器宕机、用户走到代码的犄角旮旯、三方服务挂逼等情况无可避免的发生,因此对于一个系统的健壮性和稳定性,异常测试不可或缺,但之前的异常测试手段基本上都是让研发预留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的使用和对数据进行存储,以及一些针对我司的个性化需求,再通过前端,将参数界面化给用户,用户通过一些简单的填写,就可以进行相应的异常注入。


image.png

后端实现

image2.png

遇到无法编译的lib包解决办法:
git上下载chaosblade-exec-jvm源码,在查找需要编译的类那里将无法打开的lib包直接跳过即可


image3.png

前端页面

未来预期

1、提高异常注入稳定性,目前由于chaosblade本身bug,首次注入基本上都会失败,以后可以加入主动重试和存在取消功能
2、将前端的很多输入框修改为选择项,进一步提高效率
3、加入重试和编辑功能
4、提供动图mock能力

你可能感兴趣的:(异常测试平台搭建)