测试右移是指相对于测试左移而言的,测试右移是指项目发布到生产环境之后,进行的一些测试活动,但是这里的测试活动并不是我们常说的测试活动,而是通过一些环境监控、业务监控、APM等一些手段对服务的可用性、稳定性等的一些考量,从而实现一旦发现生产环境的问题,尽快将问题暴露给制品团队进行快速修复,给用户良好的体验。
1、在Ops的交叉
右移,就是移动到生产环境,这也就决定了在该部分的测试活动和我们常说的测试活动有着很多的区别。那么在生产环节的测试活动和我们实际的测试活动就会有很多区别了。在传统的测试角色分工中,生产环境的负责人是我们的Ops同学,Ops的核心工作理念是“稳”,这就和我们测试中的快速验证,快速修复的一些方法有些冲突了。既然有一些差异,又如何右移呢?
测试的右移不是仅仅说的是去生产环境进行测试活动,当然也是有一些可以在生产环境的测试活动的,我们后面在文中也会详细说明。测试右移不是和Ops同学的冲突,而是利用了Ops的一些技术平台给我们一些判断的输入来源,然后再结合测试原有的一些技术沉淀,完成服务质量的保障工作。
利用运维技术平台:可以充分利用Ops同学提供的监控平台、日志平台等数据,监控数据的live状态,从而更早的发现生产环节的问题,并将对应问题的一些留痕数据(日志信息、监控数据等)记录到缺陷系统中,辅助解决对应生产缺陷(如果造成损失也可能是故障) 利用自动化测试:可以利用自动化测试手段为生产环节提供业务正确性的巡检功能,这样可以在Ops保障服务Live的基础之上,自动化测试模拟的业务逻辑又能保障业务的live,这样也是监控分层的一种思绪。
PS:任何的层级解决方案,都是为了弥补层级之间的一些间隙而设计的。
2、通过生产数据反哺测试左移
用户使用系统的行为有可能并不是按照这个我们预期的方法来进行的,因此我们需要在右移的环节中,通过一些前端埋点等技术,留痕真实用户的使用方法、喜好等从而可以在测试左移的时候反哺业务需求,这样就可以将很多右移中获得的有价值的内容,在左移过程中落地实现,从而最大化保障从业务到需求的环节。
当然如果要实现反哺测试右移,必须要实现真正的敏捷测试,而不是仅仅是穿着敏捷外衣的伪敏捷实践。
3、生产环境的测试
虽然生产环境是以稳定为前提的,但是也是有测试技术手段可以在稳定的前提下可以实施的。
全链路测试:全链路测试是通过流量录制回放技术,在生产环境完成的测试技术。当然要实施生产环境的全链路测试并不是测试工程师的事情,这需要对SUT(被测系统,system under test)做全套的技术改造,具体可以详细学习一下全链路测试的文章。
灰度环境:有了灰度环境就有了可以在部分环境先上线,然后进行一些测试活动或者实验活动。(参考:《测试的右移,上线后如何设计灰度方案?》)
AB测试:AB测试有可能在用户增长领域比测试用的更多,但它也是一种生产环节的测试验证活动,因此我们也把他放到这里。(参考《A/B测试:让版本迭代不困难》)
测试右移的重点落地还是QA,那么这个QA既是质量保障(Quality Assurance),也有质量分析(Quality Analysis),更有质量倡导(Quality Advocate)。
源自公众号 独行高飞