生产环境质量保障的四大挑战
前面的文章分享过线上质量保障的第一要务——业务防资损的内容,也聊过我对于线上质量保障的一些实践和想法,但最终,想法和实践是要落地才能产生价值的。
这篇文章,聊聊生产环境质量保障相关的话题,即为了保障生产环境的质量,我们要面临哪些挑战。
测试环境和生产环境的区别
传统的软件测试实践中,大部分测试活动的开展都是在测试环境进行的。无论是为了验证被测系统的功能正确性、系统健壮性,还是异常场景下的容错和处理能力,我们会采用各种极端方法来对系统展开测试。
在测试环境有时候为了便于测试和debug,甚至会直接修改数据库数据或者修改服务配置。之所以这样做,一方面是直接修改可以更快的验证,另一方面则是无论在测试环境做什么都不会对业务运行造成直接的影响和故障,即这样做理论上来说是没有多少风险和损失的。
虽然测试环境不稳定或者被测服务如果经常无故挂了,也会影响测试活动的正常开展,降低测试过程效率。但因为在测试环境,所以大家也默认接受了测试环境的不稳定以及服务挂了又得找人看看原因或者重启服务的事实。
但是在生产环境,则不能做这些操作了,因为可能仅是一个配置参数的变化,就可能导致生产环境大面积故障。生产环境和测试环境最大的区别,就是各种变更操作带来的风险和损失无完全不在一个量级。
生产环境质量保障的四大挑战
近几年测试左移右移的理念在越来越多的公司有了落地实践,测试右移简单来说,就是将测试工作结束的环节从运维阶段向后拓展,即覆盖到服务发布、线上巡检,进行持续质量运营和度量评估。
测试右移的手段,常见的有线上自动化巡检、配置变更检查、灰度发布验证、应急响应、质量度量和评估。要落地这些测试右移的工程实践,在我看来,有如下四点问题需要解决。
场景复杂
这点不难理解,为了保障生产环境的系统质量,开展测试右移的实践,首先要解决的就是场景问题。生产环境的场景复杂性,主要有如下三点:
- 用户场景复杂:典型的特征是多端用户(网页/客户端/移动端/小程序)、多种网络情况(移动网络/Wi-Fi/热点)、用户操作习惯,这几点特征带来的挑战其实就是用户体验问题。
- 业务场景复杂:这点其实不用解释,稍微有一点规模的业务系统,要面临的就是几百个接口上千个业务场景。复杂的业务场景带来的挑战其实就是如何保障业务正常运营,如何达成业务目标价值。
- 系统架构复杂:时下很流行的分布式系统架构、容器化部署本身就是一个很复杂的技术体系,更不要提支撑这套复杂技术体系的多域名、多机房、多集群。在这种复杂的技术架构下,对质量保障工作来说最大的挑战就是每次迭代或者技术改进,如何保证系统的稳定性问题。
数据污染
测试环境可以随意用各种测试账号和数据,甚至可以直接修改数据库的数据来达到快速验证的效果,但生产环境肯定不能这么干,风险太高,变更带来的影响不可评估。
要保障生产环境的系统质量,开展测试右移的实践,在我看来最难的一点就是数据污染问题,即我们的测试右移操作不能对生产业务造成影响,要对这些测试右移操作产生的数据有合理的处理手段。
比如要在生产环境开展自动化巡检,典型的可能造成数据污染的场景如下:
- 巡检账号:巡检账号要考虑到权限问题,不同权限会带来不同的安全隐患。
- 巡检数据:巡检所使用的数据和执行巡检所产生的数据,要进行数据隔离和数据清理。
- 巡检日志:执行巡检产生的日志,要考虑如何管理甚至脱敏,否则会影响一些基于日志的业务报表。
- 巡检机制:执行巡检的流程如何制定?巡检任务是否需要审批?需要哪些角色配合?这些都很考验组织管理能力。
风控安全
风控和安全的因素,在很多小公司是很容易被忽略的,这也就导致了很多的薅羊毛和账号信息泄漏导致的财产损失问题。在生产环境进行测试右移实践,需要考虑到如下几点:
- 风控规则:巡检任务如何制定才能满足风控规则,比如行为习惯、账号IP、敏感字符。
- 黑白名单:巡检是个高频场景,且执行任务的服务IP相对集中,容易被拉黑,要考虑黑白名单禁用放行。
- 安全合规:巡检使用的数据是否符合数据安全规定(地址/手机号)?以及应用安全和网络安全等各种规则。
权限管理
权限管理主要考虑如下六点:
- 用户权限:某些系统或者场景,允许同一用户不同账号登陆操作。
- 账号权限:不同的账号有不同的权限范围,可以执行不同的操作,
- 登录权限:账号登录的设备、登陆的IP地址甚至人脸识别验证场景。
- 执行权限:某些操作或者任务要对已登录账号进行鉴权,是否在权限范围内。
- 审批权限:最常见的就是财务和人事OA系统的审批场景,以及是否可以临时授权。
- 通知权限:生产巡检产生的结果或者数据,可以通知哪些角色,要屏蔽哪些账号角色。
以上就是在生产环境开展质量保障工作,落地测试右移要面临的四大挑战,解决了这些问题,生产环境的质量保障工作才能顺利开展。