目录

  • 一、什么是混沌测试
  • 二、环境搭建
  • 三、测试指导文档
  • 四、常用命令介绍
  • 五、注意事项

一、什么是混沌测试

类似于“故障演练”,通过构造各类异常,验证系统在碰到这些异常时是否有做好对应的监控告警、预案处理,针对性地进行加固,防范,从而避免故障发生时所带来的严重后果。通过对各类异常提前做好监控告警和预案处理,增强系统的健壮性,增强分布式系统的信心。

ChaosBlade 是阿里巴巴开源的一款遵循混沌工程原理和混沌实验模型的实验注入工具,帮助企业提升分布式系统的容错能力。

代码git地址:https://github.com/chaosblade-io/chaosblade

二、环境搭建

  1. 登录容器或linux服务器终端,下载chaosblade安装包。
    命令:wget https://chaosblade.oss-cn-hangzhou.aliyuncs.com/agent/github/0.6.0/chaosblade-0.6.0-linux-amd64.tar.gz

  2. 解压安装包,输入命令: tar zxvf chaosblade-0.6.0-linux-amd64.tar.gz

进入解压后的文件夹,即可直接使用工具:

三、测试指导文档

官方文档介绍:https://chaosblade-io.gitbook.io/chaosblade-help-zh-cn/

官方说明和示例压缩包,有需要可以下载使用:chaosblade-help-doc-master.zip

四、常用命令介绍

  1. 挂载 java agent,执行 java 实验场景必要步骤
    ps -ef | grep java(或者你应用的名称) 查找到需要测试的应用的pid:

./blade prepare jvm --pid 1
使用上面命令挂载agent,挂载成功会返回200,此时最好记录下result内的UID,取消挂载时会用到这个UID:

取消挂载使用revoke,使用挂载时返回的UID:
./blade revoke 41814dc1ee3df6a1

  1. 构造各类常用异常命令
    代码中找到需要进行的方法,假设为:com.xxxx.xxxx.web.xxxxController#method1,则下面命令中classname $1的值:com.xxxx.xxxx.web.xxxxController,methodname $2值:method1
操作项 命令内容
JVM超时(controller层http方法超时) ./blade create jvm delay --time 2000 --classname=$1 --methodname=$2 --pid 1
JVM异常(controller层http方法异常) ./blade create jvm throwCustomException --classname=$1–methodname=$2 --exception java.lang.Exception --pid 1
dubbo类超时 ./blade create dubbo delay --time $1 --service $2 --methodname $3 --consumer --pid 1
dubbo类异常 ./blade create dubbo throwCustomException --exception java.lang.Exception --service $1 --methodname $2 --consumer --pid 1
redis超时 ./blade c jedis delay --time $1
redis异常 ./blade c jedis throwCustomException --exception java.lang.Exception --exception-message “chaosblade mock Error”
redis线程池打满 ./blade c jvm throwCustomException --exception java.lang.Exception --classname org.apache.commons.pool2.impl.GenericObjectPool --methodname borrowObject --pid 1
Mybatis超时 ./blade c jvm delay --time $1 --classname org.apache.ibatis.binding.MapperMethod --methodname execute --pid 1
Mybatis异常 ./blade c jvm throwCustomException --exception java.lang.Exception --classname org.apache.ibatis.binding.MapperMethod --methodname execute --pid 1
CPU打满 ./blade create cpu load
内存打满 ./blade c mem load --mode ram --mem-percent 100
磁盘空间打满 ./blade c disk fill --percent 100
磁盘读写IO打满 ./blade create disk burn --read --write
JVM堆内存OOM ./blade c jvm oom --area HEAP
  1. 销毁异常
    异常构造成功会返回200,同时会有UID,取消异常时会使用到这个UID:

销毁异常使用destory,使用创建异常时返回的UID:
./blade destroy 959d6b44f346f61c

  1. 查询异常状态
    查询还未取消挂载的UID ./blade status --type prepare
    查询还未销毁的UID ./blade status --type create
    running状态的即为还未取消或销毁的UID

五、注意事项

  • 创建异常后,可以通过业务现象、日志等方式去验证异常发生后,系统的表现是否符合预期,系统是否有正常触发告警,是否有针对该接口异常做好预案,预案是否生效等。测试完成后,记得销毁异常,避免影响正常业务测试。
  • 举例:假设A系统会调B系统dubbo接口,为了验证当B系统dubbo接口超时或挂掉时,A系统是否有正常触发告警,是否有预案处理,则需要在A系统应用容器中,分别构造B系统dubbo接口方法的接口超时、接口异常两类异常,然后做验证。并且此时只是构造的只是调用方:A调B接口的异常,被调用方:B接口本身并不会异常,所以即使其他系统也有调用B的这个dubbo接口,其他系统业务不会因为A系统在做异常测试而受到影响,依然正常工作。
  • 各类硬件异常测试,目的在于测试各种硬件异常情况下,验证服务稳定性、监控告警、流量调度、弹性伸缩等能力。

=================================================================================================
以上就是本次的全部内容,如果对你有帮助,欢迎关注我的vx公众号:程序员杨叔,各类文章都会第一时间在上面发布,持续分享全栈测试知识干货,你的支持就是作者更新最大的动力~

混沌测试工具chaosblade介绍及常用命令汇总相关推荐

  1. 干货 | 阿里巴巴混沌测试工具ChaosBlade两万字解读

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 一.前言 ChaosBlade 是一款遵循混沌工程实验原理,建立在阿里巴巴近十年故障测试和演练 ...

  2. 阿里开源混沌工程工具 ChaosBlade

    开发四年只会写业务代码,分布式高并发都不会还做程序员? >>>   近日,阿里开源了混沌工程工具 ChaosBlade.该项目是遵循混沌工程(Chaos Engineering)原理 ...

  3. 云原生 | 混沌工程工具 ChaosBlade Operator Pod 篇(文末赠书)

    作者:丁源 RadonDB 测试负责人 负责 RadonDB 云数据库.容器化数据库的质量性能测试,迭代验证.对包括云数据库以及容器化数据库性能和高可用方案有深入研究. 继<混沌工程工具 Cha ...

  4. 六年打磨!阿里开源混沌工程工具 ChaosBlade

    阿里妹导读:减少故障的最好方法就是让故障经常性的发生.通过不断重复失败过程,持续提升系统的容错和弹性能力.今天,阿里巴巴把六年来在故障演练领域的创意和实践汇浓缩而成的工具进行开源,它就是 " ...

  5. [原创]Android Monkey测试工具使用介绍

    [原创]Android Monkey测试工具使用介绍 1 Android Monkey介绍 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件 ...

  6. redis 介绍和常用命令

    redis 介绍和常用命令 redis简介 Redis 是一款开源的,基于 BSD 许可的,高级键值 (key-value) 缓存 (cache) 和存储 (store) 系统.由于 Redis 的键 ...

  7. nvm介绍及常用命令

    nvm介绍及常用命令 1.为什么使用nvm? nvm是一个管理nodejs版本的工具.在实际的开发中,有些项目的开发依赖需要低版本的nodejs运行环境,此时我们就需要使用nvm来降低nodejs版本 ...

  8. git 工具常用命令汇总

    git是一个分布式版本控制工具,比svn要强大很多,适用于中大型的团队开发.svn比较适合中小型的团队开发.多个git版本一般用repo工具进行控制. 常用命令: 1. 仓库管理 git init  ...

  9. Android测试solo,SoloPi支付宝开源的 Android 专项测试工具的介绍与快速上手

    SoloPi支付宝开源的 Android 专项测试工具的介绍与快速上手 SoloPi:支付宝开源的 Android 专项测试工具的介绍与快速上手 MTSC2019大会上,Soloπ算是一次正式的在公众 ...

最新文章

  1. 机器学习常用激活函数
  2. 验证组播的TTL阀值
  3. 0118互联网新闻 | 抖音成央视春晚独家社交媒体传播平台;石墨任务清单小程序上线...
  4. 【题解】p1064 金明的预算方案
  5. touchstart与click同时触发
  6. Django(part12)--模板的标签
  7. 阿里云mysql创建多个用户_阿里云MySQL创建指定用户访问指定表
  8. 集成学习(三)——LightGBM
  9. 用PARL训练mini-alphaGO
  10. 你不知道的Linux的发展史
  11. js每日一题(11)
  12. Chromium for windows (2015)
  13. php 数字 字母组合,PHP生成数字字母组合或纯数字的唯一订单号
  14. 屏幕监控软件怎样监控电脑的扩展屏?
  15. dr.fone for android,Wondershare Dr.Fone for Android
  16. 单片机右移c语言程序,51单片机+点阵8*8上、下、左、右移显示C程序(原创)
  17. 购房从银行贷款d,准备每月还款p,月利率为r,计算多少月能还清。
  18. rollback mysql_MySQL事务-ROLLBACK,COMMIT用法详解
  19. 证书风险错误提示及常见证书问题
  20. 解析美团外卖智能配送的AI技术原理(附PPT)

热门文章

  1. Column 'parent_id' specified twice问题解决--insertable = false, updatable = false的使用
  2. redhat 7配置ftp server
  3. JSONObject.parseObject()
  4. EventTarget.addEventListener()事件监听
  5. 关系型数据库保证数据完整性和一致性的方法
  6. 论文笔记:ReDet: A Rotation-equivariant Detector for Aerial Object Detection
  7. Karp’s Cell and Molecular Biology 卡普的细胞与分子生物学
  8. 创建订单轮询查看支付状态
  9. 配置全面升级!骨传导耳机机皇——南卡Runner Pro 4新发布!
  10. 模块九:mouse、key、joystick模块