摘要:在产品上云之前,云上数据的可信(安全性、可靠性等)成为大家关注的重点。

引言

疫情之下,科技支撑有目共睹,多个产业迎来逆势增长。科技创新赋能的“云技术”,不再仅仅是战“疫”的重要工具,更将带动全社会的数字化转型,对产业发展产生深远的意义。而在产品上云之前,云上数据的可信(安全性、可靠性等)一直是大家关注的重点。

近年来,云上可靠性事故的案例层出不穷。如:

  • 2018年7月XX云因存储空间使用率过高发起搬迁扩容。为加快速度,运维人员手动关闭了搬迁过程的数据校验,并在搬迁完成后立即释放了源数据空间。由于物理硬盘固件版本缺陷导致的静默错误,文件系统元数据损坏,导致租户数据丢失;
  • 2018年9月4日清晨因雷电导致XX云中南美Region机房制冷异常,引起部分设备损坏/自动关闭,大部分云服务器中断超24小时;
  • 2018年10月21日晚,GitHub对故障的100G光纤设备维护更换导致东海岸数据中心网络中断43秒,由此引发数据库异常,服务降级持续24小时11分钟;
  • 2019年X月,XX云某region因代码缺陷导致包周期EIP出现大量退订,引起客户业务故障引发客户强烈不满。恢复丢失资源约花费XX分钟。

“云技术”带来了数字化变革,但云上的可靠性问题又一次次让客户胆战心惊,下面重点谈谈如何做云上的可靠性测试。

1 什么是可靠性测试

可靠性测试就是采用特定的方法激活系统中的各种故障(FAULT),通过观察失效(FAILURE)的发生情况来对系统容错能力(故障定位、故障恢复、故障报告等)进行评估并利用该评估结果来推动产品持续减少失效的一种测试活动。

产品的可靠性能力主要体现在防错能力、容错能力和纠错能力。因此可靠性测试也主要围绕产品的这三大能力进行测试。

  • 防错能力主要考察服务的故障预警能力,如CPU、内存、磁盘等的容量监控告警能力。
  • 容错能力主要考察服务故障后的故障隔离、故障自恢复的能力以及隔离时间。
  • 纠错能力则主要考察业务故障后告警能力以及故障修复文档的可操作性。

2 可靠性测试设计

可靠性测试设计主要从产品故障模式库和业务流程两方面着手进行分析:

故障模式考虑的因素包括外部因素和内部因素。内部因素包括软件,硬件,网络和数据。外部因素包括人,负载,灾难,电力,环境等。

流程驱动主要从异常逻辑、异常事件、业务运行环境三方面来分析:

  • 异常逻辑主要包括(1)流程处理逻辑结果不符合预期;(2)流程处理逻辑过程中所发生的非期望事件。
  • 异常事件对业务流程的影响最终也会体现到逻辑上来,产生异常或不产生异常与切入点有关,需要通过多次反复操作增加冲突几率。
  • 业务运行环境不稳定对业务的影响,主要指周边服务/链路状态不稳定,系统资源占用不稳定等对业务流程的影响。

无论从哪个角度出发,均属于抽取式分析。无法达到故障模式和业务流程的完全组合覆盖。产品故障模式库实例化无法考虑所有业务流程,业务流程可靠性分析也不会考虑所有故障模式。故障场景分析即是将测试对象分析结果与故障模式相结合,将系统结构、组网架构、业务场景和关键数据融入到故障模式和业务流程的分析中,分别生成故障模式用例、功能测试异常用例、性能测试异常用例,共同构成可靠性用例。

3 可靠性测试框架

一个完整的可靠性测试框架主要由四部分组成,业务背景流量、激活故障的平台或工具、被测对象及故障后的监控平台(主要用于监控故障注入后的告警、隔离恢复时间)。

可靠性测试框架:

业务背景流量是由业务的基本功能或性能场景组成的,主要是用来在故障注入前和故障注入后检测业务是否正常,故障注入前需保证业务0错误才能准确看到故障注入后系统的反应;故障注入后检查业务背景流量主要是为了观察故障后业务的隔离恢复时间。

激活故障的方式有两种,(1)通过业务场景的构造触发故障自然发生;(2)故障注入测试:直接模拟某种故障,属人为产生故障。

  • 业务场景构造测试方法:

压力测试:通过使系统达到一定的负荷状态(或超过其设计的最大负荷),用以检验系统在资源利用率高的情况下的工作状况;

长稳测试:在一定的压力状况下系统持续较长时间运行能力的测试;

异常业务场景测试:通过异常操作、业务配置、异常业务流量等构造异常业务场景进行测试,主要有:主备倒换、插拔网线、触发时序类问题等。

  • 故障注入测试方法:

网络级故障注入:覆盖网络组网相关的接口、链路、物理连接、时间时钟等故障对象的故障模式;

系统级故障注入:覆盖单系统内的链路、时间时钟等故障对象的故障模式的模拟;

资源类故障注入:覆盖进程在使用内存类(动态内存、消息包、消息队列)、CPU、硬盘/FLASH等系统资源类故障对象的故障模式;

数据类故障注入:覆盖数据库、文件等数据类故障对象的故障模式;

接口健壮性测试:覆盖系统中的各种接口协议消息及其对应的故障模式;

硬件故障注入:覆盖硬件平台中的单板、硬盘、内存、网卡芯片、CPU、总线、控制器等故障对象的故障模式。

被测对象系统即为将要注入故障的受体。

故障后的监控手段通常也叫做运维可靠性主要包括告警、故障恢复时间、故障恢复指南、日志定位能力等,用于检测系统在故障后的纠错能力。

4 结束语

可靠性测试的关键是了解业务组网、架构和业务场景。基于业务组网和架构选择合适的故障模式,在合理的点注入故障,然后得到预期的效果。可靠性测试分析既要求测试人员了解客户应用场景,又要求熟悉系统业务流程,所以需要测试人员和开发人员共同完成。

从客户应用的角度进行:客户应用场景是测试人员擅长的,对指导测试也比较直接。主要有:大业务压力、长时间运行、业务叠加、多服务同时操作设备、流量模型、异常报文、业务配置顺序、异常操作等。

从系统实现的角度进行:需要开发和测试团队合作进行分析。主要有:时序问题、内存泄漏、组件失效、CPU过载等。

本文分享自华为云社区《浅谈云上可靠性测试》,原文作者:xiongJ 。

点击关注,第一时间了解华为云新鲜技术~

云上可靠性测试:让我们一起给开发找点事儿相关推荐

  1. 基于FPGA的简易数字频率计+上板测试(小梅哥AC620FPGA开发板)

    基于FPGA的简易数字频率计+上板测试(小梅哥AC620FPGA开发板 目录 主要架构 1.计数模块 2.数码显示模块 3.控制信号模块 4.分频模块 例化模块 上板测试图 附:74HC595移位寄存 ...

  2. 云服务器上传文件怎么这么慢,百度云上传速度慢怎么办?教你如何加快百度云上传速度...

    现在有很多朋友使用百度网盘进行资料存储,但是上传和下载的速度却总是有些问题.最近有位朋友的百度网盘下载速度很快,但是上传速度很慢的时候,不知道为什么会这样.那么,这种情况应该如何解决呢?下面就来看一下 ...

  3. 云服务器上传文件怎么这么慢,百度云上传速度太慢怎么回事_百度云网盘上传速度太慢怎么解决-win7之家...

    百度云是百度推出的一项云存储服务,给用户们提供文件的网络备份.同步和分享服务,不过最近有用户发现百度云要上传资料的时候发现速度太慢了,这是怎么回事呢,针对这个问题,小编给大家讲解一下百度云网盘上传速度 ...

  4. taro开发微信小程序-添加开发者预览,上传测试版本(十四)

    taro开发微信小程序,上传测试版本,如果需要访问网络需要打开调试模式,如果配置了https协议的服务,提示对应的服务器证书无效,那么必须正确配置ssl证书,可以在阿里云或者腾讯云申请. 添加开发者预 ...

  5. 致青春!一键上线你们专属的云上毕业纪念册

    简介:毕业不说再见,青春不散场!在云端,在一起!在问答https://developer.aliyun.com/ask/321737的留言区域晒出自己「线上环境」部署的毕业纪念册,在6月30号18点之 ...

  6. 云上创新,与时代前行(阿里云游记)

    凌云时刻 此文记录和杭茹去往北京参加阿里云峰会和开发者大会. 是参会总结,也是游记. 前言 我关注云已经有一段时间,上个月去深圳参加华为的开发者大会时(少年游,不虚此行(难忘深圳)),大会现场就有非常 ...

  7. SpringCloud 应用在 Kubernetes 上的最佳实践 — 部署篇(开发部署)

    作者 | 孤弋  阿里云高级技术专家,负责 EDAS 的开发和用户体验优化工作. 导读:在上一篇文章<SpringCloud 应用在 Kubernetes 上的云上实践 - 开发篇>中讲到 ...

  8. 3测试图片显示置信度_云上的移动性能测试平台

    1. 功能决定现在,性能决定未来 性能测试在移动测试领域一直是一个大难题,它最直观的表现是用户在前台使用 App 时的主观体验,然而决定体验优劣的背后,涉及到了许许多多的技术变迁. 当我们习惯于诺基亚 ...

  9. python web开发c6——阿里云上ubuntu+flask+gunicorn+nginx服务器部署(一)简单测试

    简述 Nginx在服务器部署中的作用 请求通过Nginx实现反向代理,将请求提交给代理服务器.本文中只用了一台服务器,所以是代理到本机. gunicorn的作用 作为服务器代码的容器.接收Nginx的 ...

最新文章

  1. Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) E. DNA Evolution 树状数组
  2. [USACO08DEC]在农场万圣节Trick or Treat on the Farm
  3. fms安装教程 linux_FMS安装
  4. 很久没更新博客了,再发协同开发中SVN使用规范
  5. Time-of-Flight技术在距离测量和定位上的应用
  6. 论文小综 | 文档级关系抽取方法(上)
  7. VB 删除数组中的重复元素
  8. linux命令应用大词典.pdf,Linux命令应用大词典
  9. 前端页面常用代码参考
  10. 无限容量还不限速的网盘,了解一下~
  11. 比较两组数据的差异用什么图更直观_第四节 单因素完全随机实验设计及数据处理...
  12. Z字型变幻,整数反转
  13. 第5届全国“机器学习及其应用”研讨会
  14. halcon机器视觉之玩转车牌识别-超人视觉罗超
  15. 单片机24秒倒计时c语言,单片机汇编语言24秒倒计时程序
  16. 安卓微信8.0.22 正式版,5个隐秘改变你发现了吗?
  17. 绘画系统-Processing版
  18. C加加中的数组与指针-基础语法
  19. kl压缩 matlab,KL 变换实习matlab代码
  20. 【原创】利用xbrowser进行远程连接

热门文章

  1. Bootstrap下拉菜单标题
  2. Python 中的json字符串以及使用
  3. mysql硬盘安装方法_Mysql安装教程
  4. ap map 脚本_【图片】fgotool辅助脚本:检测各种素材消耗AP最少的前三个地点【命运冠位指定吧】_百度贴吧...
  5. English trip EM2-LP-3A Gifts Teacher:Patrick
  6. [Swift通天遁地]一、超级工具-(13)使用PKHUD制作各种动态提示窗口
  7. 如何dos中查看当前MySQL版本信息?
  8. shell下将文件中的分隔符从‘\t‘转换成‘,‘
  9. 信度和效度经典例子_浅析经典目标检测评价指标--mmAP(一)
  10. php 编译 iconv错误,php编译错误:configure: error: Please reinstall the iconv library.