去年大半年参与某清算中心健壮性测试体系和重要业务线系统落地试点工作,在借鉴互联网头部企业和国有大型银行混沌工程实施思路基础上,梳理出包括健壮性测试规范、健壮性测试指南、基础案例库、测试案例思维导图等健壮性测试指导性文档。

通常来说健壮性测试目的为了建立对系统抵御生产环境中失控条件的能力以及信心。 避免因某种未预料到的场景,引起类似蝴蝶效应或多米诺骨牌效应,导致大面积的系统混乱、故障和服务中断,对客户的业务造成影响事件的发生。

同时通过混沌工程实验,及时发现和修复系统中潜在问题,来提高验证系统的高可用性和团队应急能力的升级。

目前健壮性测试体系案例部分已经包括基准测试案例和个性化测试案例。 涵盖了应用层、数据库层、平台层、中间件层、路由层、缓存层等主流的应用高可用测试领域,并筛选出一些重要的业务线系统 (比如清算、支付、收单系统等) 进行落地试点的重要业务线,取得初步成果。

在各业务线的平台层、消息中间件层、应用层、数据库层、路由层均发现了一些传统测试难以发现的高可用设计等方面的问题。

在整个测试周期的前期,我们通过对历史故障异常(硬件、系统、程序相关故障、以及资源饱和或资源抖动导致异常),业务间强弱依赖、业务主要核心功能三个维度进行分析,结合故障发生后可能导致后果严重度(灾难性影响、破坏性影响、极小影响)、发生频率(高、中、低)筛选出对应健壮性测试场景、测试范围、测试重点,给出稳态指标。

测试手段主要有两种

常见故障场景注入

故障主要硬件故障场景、docker及虚机类型故障场景,基础及应用软件故障场景、依赖故障场景、JVM故障场景等。

极端异常注入

极端异常比如cpu计算资源超载、内存饱和网络抖动丢包延迟,服务上下游调用超时异常、服务线程池满;磁盘IO资源空间饱和、数据库慢查询死锁连接池满、文件句柄满等。

总体初步实现常见异常故障和复杂异常故障模拟 ,我们目前采用jvm字节码增强方式实现无侵入可扩展性高的mock(主要模拟服务返回码被篡改、服务超时,线程池异常、服务调用异常等服务级别故障场景)。

目前 故障注入介质包括jvm-sandbox/chaosblade/Litmus/Stress等,统一以命令行调用方式集成,整体测试目的 最终验证系统服务是否健壮,有足够的弹性易扩展,可以容忍计划外的故障。

测试过程中重点关注

分布式系统脏读是否会导致资损风险,服务是否存在级联失败风险,失败重试机制(上行或下行输入的大幅波动是否存在重试风暴)。

是否存在拜占庭故障(不满足幂等性,多线程处理安全性问题)、其中线程安全性常出现在单实例的类变量在多线程情况下被赋值修改导致数据错乱,比如订单状态被多线程重复修改导致非预期的终态变化。

异步事件响应中断后对系统影响(是否存在资损风险,比如出现单边账问题)。

故障转移隔离时发生的主从切换的脏读问题影响面。系统恢复自愈能力。

系统压力过载时对非核心交易进行熔断降级,是否会导致核心交易产生级联失败(服务拆分不合理)问题。

分布式节点宕掉后其前端RPC调用交易重试是否满足幂等性、

负载均衡算法使用是否合理,超时重试机制有效性,超时设置是否满足漏斗原则,集群体系脑裂的规避方式有效性、分布式事务交易一致性、IO密集型操作比如联机批量落库时出现IO阻塞背景下系统可用性等。

下游异常导致服务线程池满后导致其他服务级联失败问题。

服务队列满、阻塞的自动检测、预警及处理机制是否满足预期要求。

后续发展计划

针对业务特性结合金融级可靠性要求,历次生产问题,进一步抽象并设计面向业务的脆弱性分析规则或模型,持续推进实现业务技术脆弱性的全自动化或智能化分析。

看完这篇文章的你,大概对银行金融行业非常感兴趣。


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

建设健壮性测试体系是怎样的经历?聊聊我的心得相关推荐

  1. 2 软件测试之健壮性测试

    健壮性测试是边界值分析的一种简单扩展.除了变量的边界值分析之外,还要分析变量值比最高值高出一点和比最低值低一点的情况下会出现什么反应.

  2. 软件质量测试中的健壮性测试是什么?一文和你说

    当大多数人开车时,他们不会担心刹车失灵.当他们的孩子得到一个新玩具时,他们也不担心因故障受伤.事实上,大多数人在日常生活中根本不担心系统故障. 这是因为软件开发人员或质量控制工程师已经解决了质量问题. ...

  3. 功能测试、健壮性测试

    功能测试.即测试软件系统的功能是否正确,其依据是需求文档,如<产品需求规格说明书>.由于正确性是软件最重要的质量因素,所以功能测试必不可少. 健壮性测试.即测试软件系统在异常情况下能否正常 ...

  4. 软件测试的健壮性测试和兼容性测试

    一.健壮性测试 健壮性测试只是一个概念,用于测试系统在出现故障的时候,是否能够自动恢复或者忽略故障继续持续的运行,比如说我们在使用APP的过程中,有多个模块,其中有一个模块出现了问题, 其他模块是否能 ...

  5. 移动端测试 APP启动性能分析 WebView性能分析 H5性能分析 卡顿分析 帧分析 CPU统计 网络流量分析 耗电量指标 弱网测试 健壮性测试 兼容性测试 Amdahl

    Android官网使用指南性能:https://developer.android.com/topic/performance 一.APP启动性能分析 APP的启动过程 调用起APP.创建一个空白窗口 ...

  6. 爱奇艺移动端APP健壮性测试的设计与实践

    ‍ ‍ 01 前言 一款APP的发布以及新功能的迭代需要经过严格的质量保证,而崩溃性问题是影响APP稳定的头号问题.其中,因前端不兼容后端服务数据格式变更而引起的崩溃问题占有一定的比例.这类崩溃问题一 ...

  7. 边界测试技术——健壮性测试、最坏情况测试、健壮最坏情况测试

    转载 https://blog.csdn.net/dreamchasering/article/details/72614674 =================================== ...

  8. 解析边界测试技术——健壮性测试、最坏情况测试、健壮最坏情况测试

    黑盒测试--边界测试 边界值分析是一种常用的黑盒测试方法,是对等价类划分方法的补充:所谓边界值,是指相对于输入等价类和输出等价类而言,稍高于其最高值或稍低于最低值的一些特定情况.边界值分析的步骤包括确 ...

  9. 软件测试 3(边界值) -- 健壮性测试

    软件测试专栏 上一篇 主目录 下一篇 目录 1 基本思想 2 测试实例 3 总结 [前言] 健壮性测试是在边界值测试的基础上做的扩充,关于<软件的边界值测试> 边界值测试(4N+1).健壮 ...

最新文章

  1. Makefile 选项 CFLAGS 、LDFLAGS 、LIBS
  2. linux命令关闭电脑,SELinux关闭命令详解linux操作系统 -电脑资料
  3. 你真的懂点击率(CTR)建模吗?
  4. nvm用标准sata ahci码_能者多劳!让NVMe固态硬盘做系统盘的同时,加速SATA数据盘...
  5. bind函数怎么用JAVA_面试官:能解释一下javascript中bind、apply和call这三个函数的用法吗...
  6. MyBatis架构图
  7. 业务如何驱动技术发展
  8. ZEMAX | 如何创建复杂的非序列物体
  9. ckeditor5加字数_CKEditor5 输入文字时拼音和汉字同时输入问题
  10. 北京大学肖臻老师《区块链技术与应用》公开课笔记:以太坊原理(三):智能合约
  11. 手机图片怎么加水印?只需三步即可完成
  12. for循环下标 shell_Shell数组操作 带下标遍历
  13. 华为 编程语言实验室,薪水_作为实验室科学家学习编程
  14. 【记录】游戏体验报告怎么写(自我成长篇)
  15. 老鸟程序员才知道的一些事
  16. 一个面试我的后端妹子问的405错误
  17. 二极管质量好坏判断方法,轻松学会-通程创品
  18. 详解二叉树的前序遍历
  19. cortex-M3/cortex-M4处理器简介
  20. python parameter参数

热门文章

  1. php验证手机号和身份证号
  2. 问题:The ABAP program lines are wider than the internal table.
  3. 体积最小,极速秒装的APK安装器
  4. Mozilla FireFox Gecko内核源代码解析(4.nsHTMLTokens)
  5. 基于XML的可升级矢量图像(SVG)浅析
  6. Android应用统计-使用时长及次数统计(一)
  7. AIX AIO, DIO, CIO
  8. 20201104-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises07
  9. 傻-amp;gt;天使
  10. 【第39天】实现一个冒泡排序