缓存测试分享篇:如何利用测试环境进行灰度测试缓存迁移solo
此文已由作者王婷英授权网易云社区发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验。
缓存,看到这两个字,第一反应,最近怎么又要弄缓存的改造啊,这个测试好复杂,一不不留心就踩一个线上bug。实在头疼。一般对于这方面的测试,都不会掉以轻心。但还是会踩到雷。那么怎么做才可以又快又好完成这个任务呢?相信每个QA都会有自己的测试应对方案,来达到高质量的上线。
接下来进行分享下社区这边测试solo缓存迁移的测试方案,有不周到的地方大家多提建议,有更好的方案,也可以分享下,让我们能更快更好的应对这方面的测试工作。本次社区这边迁移solo的工程有comment、comment-compose、community-compose、contact-compose等核心工程。
案例一:contact-compose的solo迁移(改动不大,代码改动整体比较清晰)
图一:专辑的改动
上面这两张图都是对contact-compose工程里涉及到专辑的内容进行NKV变更为solo,大家可以看到这个的代码的改动基本是一对一的改动,改动的范围基本都知道。那么接下来我们需要怎么测试这个需求。
【测试流程】
第一步、我们看了开发开发代码改动不是很大,然后就可以自己按照开发修改的地方列定下回归的范围
第二步、梳理下这个工程哪些业务是用到了缓存。
第三步、可以再找开发对一下范围
第四步、就双方进行评估下回归范围,就可以解决掉了。
通过上面的步骤,我们不仅可以做到心中有数,还可以起到监督开发是否有遗漏的地方没有修改。
上面这个是NKV的缓存迁移为solo的缓存,但是我们测试中还存在NCR的缓存,那么接下来聊一下NCR缓存的迁移。
案例二:community-compose的solo迁移(改动多,复杂性高)
图三:代码简单的统计修改数
当我看到这个改动,瞬间人变得紧致起来了,零碎的看开发改的代码,看了两天,当时抱着这个肯定会出线上bug的心情在忐忑的测试。
图四:community-compose工程对应的solo业务key有18个
这个回归起来如果没有一周肯定是不行了,当时心里这么一想,压力很大,怎么办还有好多任务,这个也是卡在4月底上线。有点想加班加死的想法。于是,我先把代码都部署上,把开关都关闭的时候,花了两个小时验证了下社区的核心功能没有什么问题。然后我再把这18个Key全部都打开了,回归了下正常的情况没发现异常后,我开始灰度了。在我心灰灰的时候,就在想,这么高风险的任务,怎样才能更好的去避免线上不出问题?突然一个开发过来和我说,单测过不了了,怎么办?
此时很感谢这位开发,让我想到了可以不用靠一己之力来处理了。借助灰度方案来协助这个高危需求。可能有人以为我是准备拿到beta环境进行灰度,NO,NO。预估了下再近一周内community-compose不会有上线,及时有上线也都是走hotfix分支,于是我把代码合到了dev分支,在stable_dev进行灰度。
采用用stable_dev进行灰度原因如下:
1、stable_dev环境的调用方是非常的多
2、stable_dev环境是单测执行环境
基于上面这两点,stable_dev可以模拟多并发下写缓存和读缓存的操作。可以不用自己担心,只要关注下群里对应的环境反馈,保证工程能正常的运行。同时每天定时关注下stable_dev对应的solo相关的日志即可。
总结:
1、对于部分迁移solo缓存改动不大的工程,我们可以按照常规流程去测试
2、对于复杂性高、改动大的工程进行solo迁移,我们可以用类比的方式利用有限的资源去协助测试(如用stable_dev环境进行灰度)
网易云免费体验馆,0成本体验20+款云产品!
更多网易技术、产品、运营经验分享请点击。
相关文章:
【推荐】 Impala源码之资源管理与资源隔离
缓存测试分享篇:如何利用测试环境进行灰度测试缓存迁移solo的更多相关文章
- (转)深入探讨在集群环境中使用 EhCache 缓存系统
简介: EhCache 是一个纯 Java 的进程内缓存框架,具有快速.精干等特点,是 Hibernate 中默认的 CacheProvider.本文充分的介绍了 EhCache 缓存系统对集群环境的 ...
- 深入探讨在集群环境中使用 EhCache 缓存系统
EhCache 缓存系统简介 EhCache 是一个纯 Java 的进程内缓存框架,具有快速.精干等特点,是 Hibernate 中默认的 CacheProvider. 下图是 EhCache 在应用 ...
- 在集群环境中使用 EhCache 缓存系统|RMI 集群模式
RMI 是 Java 的一种远程方法调用技术,是一种点对点的基于 Java 对象的通讯方式.EhCache 从 1.2 版本开始就支持 RMI 方式的缓存集群.在集群环境中 EhCache 所有缓存对 ...
- 如何利用Pre.im分发iOS测试包
大众创新万众创业,在移动互联网的风口,移动APP开发与测试发展方兴未艾,受到了越来越多的重视.相较 iOS,Android 的开发环境更加开放.Android 开发者要测试应用时,只需发个 APK 安 ...
- Google测试分享-测试经理
首先大家可以思考下,google的测试经理角色必须具备什么样的能力.据不完全统计,google的测试经理,超过一半之前都做过TE的角色(大家可以想想为啥):对于与被测产品相关的任何使用问题,测试经理都 ...
- 从一到二:利用mnist训练集生成的caffemodel对mnist测试集与自己手写的数字进行测试
通过从零到一的教程,我们已经得到了通过mnist训练集生成的caffemodel,主要包含下面四个文件: 接下来就可以利用模型进行测试了.关于测试方法按照上篇教程还是选择bat文件,当然python. ...
- Shell编程-条件测试 | 基础篇
什么是Shell Shell是一个命令解释器,它会解释并执行命令行提示符下输入的命令.除此之外,Shell还有另一个功能,如果要执行多条命令,它可以将这组命令存放在一个文件中,然后可以像执行Linux ...
- openstack开发环境与代码测试
一.openstack单组件开发环境 1.Python虚拟环境搭建 主要参考文献: https://virtualenv.pypa.io/en/latest/virtualenv.html 说明:Py ...
- 转:google测试分享-测试经理
原文: http://blog.sina.com.cn/s/blog_6cf812be0102vode.html 前言:这个系列分享的内容大部分都是出自于<google是如何测试的>的书, ...
随机推荐
- MySQL基于二进制日志的主从复制
一.什么是MySQL的主从复制? MySQL可以将一个数据库设置为主库,另一个数据库设置为该主库的从库,当主库发生了变更,会同步到从库中.MySQL的主从架构,可以是星型的,也可以是线型的. 星型架构 ...
- 剑指Offer:对称的二叉树【28】
剑指Offer:对称的二叉树[28] 题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. 题目分析 Java题解 /* publi ...
- HDU - 3068 最长回文 【Manacher】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=3068 思路 n^3 的做法 对于每个字符 同时 往左往右搜 但是要分奇偶 就是 n^3 n^2 的做法 ...
- php中一些比常见做法更好的实践
有些被我们习以为常的做法未必就是最好的,它们可能存在一些安全问题,而解决这些隐患的成本,其实并不高: 密码 常见做法是直接MD5进行加密,比如这样: //加密 $passwordStr = md5($ ...
- 郝健: Linux内存管理学习笔记-第1节课【转】
本文转载自:https://blog.csdn.net/juS3Ve/article/details/80035751 摘要 MMU与分页机制 内存区域(内存分ZONE) LinuxBuddy分配算法 ...
- Cannot load JDBC driver class 'com.mysql.jdbc.Driver '
最近在学JAVA, SSM, 照着网上的例子系统启动后总是报这个错(IDE :IEDA): HTTP Status 500 - Request processing failed; nested ex ...
- SecureCRT连接Ubuntu失败(远程系统拒绝访问)
SecureCRT连接Ubuntu失败,长时间的重新连接,连接不了. Ubuntu默认未安装ssh远程加密连接服务. 使用命令,安装即可. sudo apt-get install openssh-s ...
- Use trained sklearn model with pyspark
Use trained sklearn model with pyspark from pyspark import SparkContext import numpy as np from sk ...
- ZJOI2012题解
t1灾难 给一个食物网 如果一个生物吃的所有东西都灭绝了 它也跟着灭绝 求每个生物灭绝时跟着灭绝的生物数量 支配树裸题,我们先拓扑排序,然后建立一棵树满足一个点灭绝时,有且仅有它的子树跟着灭绝 考虑如 ...
- Java 的序列化Serializable接口介绍及应用
常看到类中有一串很长的 如 private static final long serialVersionUID = -4667619549931154146L;的数字声明.这些其实是对此类进行序列化 ...