今日主讲:
1、混沌测试的概念
2、做混沌测试的原因和重要性
3、混沌测试的准备工作
4、实战混沌测试
5、总结
一、混沌测试的概念
什么是混沌测试呢?
混沌测试是一种可试验的、基于系统的方法来处理大规模分布式系统中的混乱问题。通过不断试验,了解系统的实际能承受的韧性边界并建立信心,通过不同的试验方法和目的,观察分布式系统的行为和反应。一句话——以试验的方法尽早揭露系统弱点。
二、做混沌测试的原因和重要性
混沌测试类似于“故障演练”,不局限于测试,而更像是工程实践。为什么这么说,通常的测试用例会有“期望结果”和“实际结果”,通过将两个结果比较,或者对用户行为的预期,来判断测试通过或失败。而混沌试验类似于”探索性测试“,试验本身没有明确是输入和预期结果,通过对系统和服务的干预,来观察系统的”反应“。将混沌测试原则融入在试验过程中:在生产环境小规模模拟系统故障并定期自动化执行试验,通过试验结果与正常结果进行比对,观察系统”边界“。
三、混沌测试的准备工作
需要提前列出需要演练的场景,比如:服务名称,场景描述,注入的故障类型,预期的故障结果,实际的故障结果,后续的优化计划等等。演练的内容可以有如下内容:(包括但不限于)
四、混沌测试实战
目前我公司是通过ChaosBlade平台进行二次开发,作为混沌测试演练平台
这里会以我司的混沌平台为例:
1、创建实验
填写一个实验名称,比如我们需要注入的是dubbo接口异常,我们可以设置该故障名称为XX服务XX接口dubbo接口异常,方便后续查找实验
2、配置实验参数。
演练维度:container
机器:选择对应服务的机器
添加演练内容:
chaosblade.container-dubbo.throwCustomException
注入异常接口名称:com.xx.xx.service.api
目标注入故障的方法:selectSellerShop
抛出的异常:java.lang.RuntimeException
注入方式:选择客户端注入,一般故障模拟都是从客户端调用
配置完成后保存参数
3、执行实验
执行实验,从客户端调用接口,并同时查看日志
这里我还添加了监控,可以查看比如CPU使用率,内存使用率等。
这里可以看到,已经打印了异常日志,该故障的预期是不展示对应的优惠券,此时从客户端的表现来看,确实没有展示优惠券,由此可见,该故障注入成功,且预期与实际表现一致。
终止实验:故障恢复,停止后要测试一下故障是否真的恢复
五、总结:
在做混沌测试的时候,一定要区分混沌和bug的区别,做混沌的目的是为了测试系统的容错能力,且对应的研发是否有真的实现对服务的兜底处理,尽量多的对线上已经出现的或者能预期的异常场景进行混沌测试,才能更大能力的保障系统的稳定。
最后,关于软件测试学习,offer选择等等,都可以通过后台私信交流。需要学习资料或者帮忙修改简历也可以私信!!也可百度搜索“特斯汀软件测试腾讯课堂”或关注公众号“特斯汀软件测试”,里面涵盖很多精彩免费视频或干货知识