异常测试是有别于功能测试和性能测试的一种测试类型,通过异常测试,可以发现由系统异常、依赖服务异常、应用本身异常等原因引起的问题,提高系统的稳定性。
目的
在日常测试中,由于排期紧张以及异常情况难以模拟,异常测试通常被大家忽略或者放弃。只要功能没问题,就可以上线。但是线上情况千奇百怪,服务器宕机、用户走到代码的犄角旮旯、三方服务挂掉等情况无可避免,因此对于系统的健壮性和稳定性,异常测试不可或缺,但异常测试往往是通过让研发预留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能力
另外,欢迎加入软件测试技术交流群 313782132 ~进群可领取免费软件测试资料以及群内测试大牛解惑!
测试工程师职业发展路线图
功能测试 — 接口测试 — 自动化测试 — 测试开发 — 测试架构师
加油吧,测试人!如果你需要提升规划,那就行动吧,在路上总比在起点观望的要好。事必有法,然后有成。
资源不错就给个推荐吧~