测试左移和测试右移是现在比较热门的概念,今天我们主要介绍一下测试左右移。我们在讨论测试左移和测试右移之前,先将业内最典型的软件开发过程可视化出来,要说最典型的开发过程模型要数瀑布模型了,大概如下图:

在瀑布模型里,测试人员会在整个开发周期快结束的时候才介入。如果发现 bug 后,又要回过头开发进行修改,测试再进行测试,整个软件开发生命周期非常长。测试过程经常成为整个开发周期的瓶颈,随着越来越多的公司开展敏捷开发模式,测试左移就成了软件开发过程的关键实践。

左移是向软件开发周期中的早期移动,测试左移则是将测试向开发阶段,甚至是需求阶段移动。测试左移的目的其实是想在软件开发周期中更早的阶段开展测试活动,比如说我们想在开发阶段就进行测试。测试左移不是等待软件全部可以集成后才进行测试,而是以更小的单元并且更快的频率进行测试。

右移是向软件开发过程的后期移动,比如说在系统部署时和上线后。测试右移就是应用在部署、线上监控的一系列实践活动。随着 DevOps 的兴趣,测试右移的理念也越来越被很多团队引入、发展和壮大。在 DevOps 中,研发和运维是紧密的进行配合,研发人员的角色从之前只完成程序的部署伸展到了运维端,要承担系统线上运行的更多责任。

需要说明的是测试右移绝不仅仅是指研发人员对线上系统的监控,测试右移要进行的活动不但包括研发人员对于线上程序的监控、功能切换、使用线上流量来进行测试等,还包括将持续测试的理念发展到更广阔的空间中,比如基于前端的埋点、全网范围内 App 端的监控、灰度测试等。

在这里举一些我们实践中的一些方法:

测试左移

测试右移

测试右移改变了研发团队如何看待上线后的应用,测试右移会产生一个从线上用户对系统的真正使用到开发过程的持续反馈循环。现在各大互联网公司中的发布效率是极快的,可能很多开发人员经历过从之前的每月或者每周发布一次到现在的每天、每小时发布,或者任何时间都会发布,相信你第一次接触一定会对你产生足够的冲击。正是线上用户和开发人员这种快速、持续反馈的循环才能支撑着这一切。

在线上系统进行测试意味着我们要做到对用户影响到最低,我们要全盘考虑线上用户对系统的使用情况,以及一些数据安全、用户隐私相关的因素。现在有些公司会将线上流量复制到线下,使用线上充分的用户行为对系统进行充分的测试。

通过在用户和研发人员创建反馈系统,可以收集用户的反馈,从而我们能够修复和改进我们的系统使用户满意度更高。借助自动化监控系统,我们可以第一时间获取系统的运行状态,我们对于系统的故障恢复能力更有信心。

持续测试就是通过测试左移、测试右移实践在整个开发周期的每个阶段都进行测试。所以,我们说测试左移和测试右移其实就是在通过各种手段在开发过程的各个阶段里进行测试的实践,每个团队会有每个团队不同的方法。

测试左移和测试右移,是一种理念,是一种文化。


↙↙↙阅读原文可查看相关链接,并与作者交流