美文网首页
混沌测试-系统极端测试利器

混沌测试-系统极端测试利器

作者: 数齐 | 来源:发表于2024-09-10 20:33 被阅读0次

背景

在我们日常开发过程中,会遇到各种各样的问题。有些是业务问题,可以通过自测以及测试同学测试来发现,还有一类是极端问题,平时一般不会遇到,但是恰好在客户现场出现了打的我们措手不及。没有准备就没法快速定位,所以最好的方式是可以复现问题,从而针对性的解决,所以这类问题的关键是复现。毕竟CPU打满,硬盘不够,系统年轻代、老年代、元空间OOM等这类情况是不容易出现的。如果想让他们稳定复现,从而达到解决甚至后续常态化演练的目的,那么混沌测试可以帮助你。

什么是混沌测试

它的定义是“混沌测试是一种可试验的、基于系统的方法来处理大规模分布式系统中的混乱问题”,但我习惯称它为故障演练,因为通过它可以模拟很多极端场景,像上文提到的CPU打满,OOM等问题都可以进行模拟,从而达到演练故障的目的。今天我们重点说一下混沌测试工具ChaosBlade。

什么是ChaosBlade

ChaosBlade 是阿里巴巴开源的一款遵循混沌工程原理和混沌实验模型的实验注入工具,帮助项目提升容错能力。它的使用场景可以参考官方文档中提到的,如下图

image.png

怎么用是ChaosBlade

安装部署

https://github.com/chaosblade-io/chaosblade/releases下载最新的chaosblade压缩包,放到目标服务器上,解压后配置下环境变量

image.png

如果配置无误后,可以执行下blade命令,正常输出,表示配置无误


image.png

进行混沌实验

本文只演示一个场景,用来说明基础用法,他的其他用法在文档中已经写的很详细了,只要认真阅读,肯定能找到你想要

演练场景:指定JAVA项目使其CPU飚高

创建实验

blade c jvm cfl --pid 4083

image.png

命令找那个的c是create的简写,表示创建实验的意思,jvm表示实验类型,是一个java项目,cfl是cpu fullload的简写,pid是指定java进程,通过top命令可以发现4083这个进程已经将cpu打满了

image.png
结束实验

创建实验成功后的返回值有一个result的字段72fce8dla8f3e09c,这个字段的含义是实验ID,如果你想结束实验,可以执行blade d 72fce8dla8f3e09c,其中d是destory的简写

image.png

演练数据如何沉淀

现阶段我们已经找到了如何创建实验、关闭实验。但是要怎样把实验的数据沉淀下来呢,总不能每次测试都查文档吧,所以你缺一个控制台,它的作用是创建演练计划,沉淀演练数据,进行知识沉淀。简单来说就是把每次执行的实验参数、结果记录下来,可以方便下次使用。但是开源产品目前只有一个就是chaosblade-box,这个工具也是阿里开源的,它可以实现环境的平台化管理,进一步简化用户体验,降低使用门槛。

Chaosblade-Box测评

根据官方文档的指引安装了一下Chaosblade-Box,很有阿里云风味,最核心的一块是将演练场景可视化,不需要再看文档,他会根据你填入的参数生成对应的命令

image.png

另外一个核心功能就是指定机器,演练具体流程

image.png

测评结果

优势:

  1. 没有产品竞争,目前市场只有这一款产品。

  2. 功能丰富,满足对此平台的核心诉求。

劣势:

  1. 没有租户隔离、权限等相关控制,这也是开源社区诟病最多的。

  2. 过于依赖于网络做一些事情,比如说默认脚本从网络上下载agent包之类的,对无互联网的环境不友好,例如我们的云内环境。

  3. 效率有提升空间,目前使用agent做命令下发,数据采集等操作。chaosblade本身可以提供HTTP的服务,这样控制台可以和chaosblade通过http通信,就可以替代agent的大部分功能。

相关资料

<u>chaosblade文档</u>

<u>chaosblade github地址</u>

<u>chaosblade-box github地址</u>

相关文章

  • 六、确定测试系统

    确定测试系统 • 确定测试系统 - 测试系统不仅指用于测试的硬件,也包括测试架构以及测试配置 - 测试架构:测试用...

  • 接口测试简介和流程

    一.接口测试的简介和分类 接口测试就是测试系统组件接口之间的一种测试 分类: 测试外部接口:测试被测系统和外部系统...

  • 接口测试之深入解析 “Postman”工具

    什么是接口测试? 接口测试是测试系统组件间接口的一种测试,接口测试主要用于测试系统与外部其他系统之间的接口,以及系...

  • 接口测试(一)

    接口测试概念: 测试系统间接口的一种测试,测试的对象主要是接口,主要是测试外部系统与所测系统之间以及内部系统之间的...

  • JMeter(三十六)发送HTTPS请求

    Jmeter一般来说是压力测试的利器,最近想尝试jmeter和BeanShell进行接口测试。由于在云阅读接口测试...

  • jmeter发送HTTPS请求

    jmeter一般来说是压力测试的利器,最近想尝试jmeter和BeanShell进行接口测试。由于在云阅读接口测试...

  • 测试过程

    一、测试过程简介 单元测试 集成测试 系统测试 二、测试过程单元集成系统及比较 1.单元测试--函数 单元测试时针...

  • 2、软件测试方法

    测试方法分类 按开发阶段划分1、单元测试2、集成测试3、系统测试4、回归测试5、验收测试ps.在系统测试前,可进行...

  • 『居善地』接口测试 — 2.接口测试定义

    1、接口测试概念 (重点) 接口测试是测试系统组件间接口的一种测试,它界于单元测试与系统测试中间。 接口测试主要用...

  • 系统学习---软件测试的分类

    1.按照测试阶段 单元测试,集成测试,系统测试,验收测试(正式验收测试,Alpha测试,Beta测试) 集成测试-...

网友评论

      本文标题:混沌测试-系统极端测试利器

      本文链接:https://www.haomeiwen.com/subject/iduuljtx.html