阿里研究员:测试稳定性三板斧,我怎么用?
2019-09-06 08:08
1126 查看
阿里妹导读:如何治理测试稳定性问题?很多人会说:环境、流程管控、监控、工具化、加机器、专人负责、等等。这些都是对的。不过这些都是解决方案层面的,而不是方法论和理论体系层面的。今天,阿里研究员郑子颖来说说测试稳定性的三板斧。据说,阿里同学们都非常认同这三板斧,看完文章感觉很多做的事情有了理论基础。
郑子颖:阿里巴巴研究员,2002年上海交通大学计算机系硕士毕业。2018年3月加入阿里,负责质量和技术风险。
某个服务的版本部署的不对
测试执行机的硬盘满了,因为上次运行时写的log没清掉
数据库里有脏数据
测试用例写得有问题
测试运行时有人手工执行了一次定时任务,把流水捞走了
消息串了
...
2. 测试稳定性三板斧
高频(Frequency)
隔离(Isolation)
用完即抛(Disposable)
三板斧之一:高频
缩短验证的delay
变主动验证为“消极等待”
识别intermittent的问题
暴露各层面的不稳定因素
倒逼人肉环节的自动化
提供更多的数据供分析
...
持续打包:以前只是在部署测试环境前才打包,经常因为打包的问题导致部署花了很多时间,还影响了后面的测试进度。针对这个问题,我们做了持续打包,每个小时都会对master的HEAD打包,一旦遇到问题(例如:依赖的mvn包缺失、配置缺失、等等),马上修复。
天天上生产:现在每周发一次生产环境,每次都费事费力。我提出能不能天天上生产。发布还是按照原来的节奏来,每周发一次新代码,一周里的其余日子,就算没有新代码也要走一遍生产发布。空转。不为别的,就是为了要用高频来暴露问题、倒逼人肉环节的自动化、倒逼各种环节的优化。
分支合并很痛苦,那就频繁合并,一天一次,一天多次。做到极致就变成了主干开发,一直在rebase、一直在提交。
蚂蚁的SRE团队也是用的是高频的思路。为了加强容灾能力建设、提高容灾演练的成功率,SRE团队的一个主打思想就是要高频演练,用高频演练来充分暴露问题、倒逼能力建设。
三板斧之二:隔离
避免测试运行彼此影响,减少噪音。
提高效率,执行某些破坏性测试的时候不再需要相互协调
硬隔离(全隔离环境、物理隔离)要成为终态,关键是成本。要在不增加质量盲区的前提下压缩成本。例如,如果能把整个支付系统都压缩在一台服务器里面跑[2],而且所有的功能(包括中间件层面的,例如定时任务、消息订阅、分库分表规则等)都能很好的覆盖,那是一个理想的终局。每个人都可以随时搞几套全量环境,那是很爽的。另外,对架构的拆分解耦(例如,我们做的按域独立发布)是有助于降低硬隔离的成本的,可以把一整套被测系统部署的scope大大缩小。
软隔离(半共享环境,逻辑隔离,链路级别隔离)要成为终局,关键是隔离的效果。如果隔离做到完美了,就能把今天的联调环境部署到生产环境里去跑。这样,就不存在stable环境稳定性的问题了。这样,做到了真正的testing in production,也是个很理想的终局状态。
三板斧之三:用完即抛
我们的test setup能力要很强。我们今天在搞的一键拉起环境,就是这种能力的一部分。而且setup起来以后,要能快速verify。
我们的test strategy、test plan、testability design和test automation,必须不依赖一个long living的测试环境。包括:不能依赖一个long living 的test environment里面的一些老数据。例如,Test automation必须能自己造数据,造自己需要的所有的数据。
联调测试环境默认生命周期是7天。
如果到时间还需要保留,可以延展有效期(expiration date)。每次展期最多可以展7天(相当于是 newExpDate = now + 7,而不是newExpDate = currentExpDate + 7)。
最多可以展期到30天(从createDate开始算),需要30天以上的,需要特批(比如,事业群CTO)。
这样的好处就是倒逼。必须一刀切的倒逼,一开始会有点痛苦,但很快大家就会习惯的,自动化什么的很快就跟上了。不这么逼一逼,很多改进是不会发生的。
解决环境腐化问题,减少脏数据
提高repeatability,确保每次测试运行的环境都是一致的
倒逼各种优化和自动化能力的建设(测试环境的准备、造数据、等等)
提高资源使用的流动性。实际的物理资源不变的前提下,增加流动性就能增加实际容量。
3. 落地
[2] 这样子做,实操层面的一个可能的负面影响是它可能会discourage微服务化治理(包括,域自治性,独立测试、独立发布能力等)。
你可能还喜欢
点击下方图片即可阅读
关注「阿里技术」
把握前沿技术脉搏
相关文章推荐
- 如何提升测试环境的稳定性?来看看阿里内部的实践总结
- 谷歌搜索关键词怎么写测试用例?(阿里电面3)
- 如何提升测试环境的稳定性?来看看阿里内部的实践总结
- 测试计划该怎么写?
- 性能测试的项目应该怎么做
- 软件测试,尚可,怎么行?
- android使用模拟机测试时,若要联网IP地址该怎么写?
- 怎么编写自动化测试用例,如何将自动化测试用例和手工测试用例相辅相成。
- 图解测试之稳定性-如何开始稳定性测试
- Monkey稳定性测试
- 字符串转为整数(阿里一面测试开发岗题目)
- 数据库性能测试---前阿里数据库团队资深DBA杨奇龙
- centos 怎么测试mysql是否安装成功
- 推荐个性能测试工具:阿里PTS
- Beetle进行10亿次请求的压力和稳定性测试
- 04-12 稳定性测试压出来的问题--DB partition number
- 重装系统后怎么将oracle数据库还原(测试版本oracle 11.2 ,数据库冷备份)
- 做了7年手工测试迷茫了怎么办?——给你的建议
- [置顶] v5.51总结-开发人员怎么测试
- Monkey稳定性测试环境搭建说明