大家熟悉的测试工作(也是传统的瀑布式),是接到项目后参与需求评审,然后根据需求文档写写用例和准备脚本,等开发提测之后正式开始测试、提bug、回归,测试通过后就结束了,项目交给运维上线,之后投入下一个项目继续重复这样的流程。

这样的流程看似没什么问题,但缺点是:

测试过程是在一定时间间隔内发生的,测试人员必须等待产品完全构建才能找到错误和故障。不可否认,花费的时间超过了可以商定的时间,等待代码成为测试人员的瓶颈。

测试同学非常被动:当需求质量、开发质量差的时候,你只能被动接受,结果就是你会进行漫长痛苦的测试过程以及因为质量差导致上线延期;

Bug的成本在后期是非常高的,需要花费很多精力和时间去修复。甚至严重的情况是产品都不能按时发布,导致很大的损失。

很有可能一个线上问题裸奔了几个月,最后是业务方先发现才排查到是Bug导致,由于影响时间过长给公司造成的损失巨大,还被质疑为什么这么明显简单的问题上线之后没人发现。

不管是测试左移还是测试右移,都是为产品质量服务。不要把提测认为是测试活动的开始,上线是测试活动的结束,更不要认为质量只是测试同学需要关注的。

01 测试左移

测试左移的思想,本质是越早的发现不合理的地方出问题的几率就越低。

测试左移的原则支持测试团队在软件开发周期早期和所有干系人合作。因此他们能清晰地理解需求以及设计测试用例去帮助软件“快速失败”,促使团队更早的修改所有的bug。

参与和理解会使测试人员获取产品完整的知识,彻底想清楚各种场景,根据软件行为设计实时的场景,这些都会帮助团队在编码完成之前识别出一些缺陷。

我看到对于测试左移很好的理解,真正的测试左移就包含2个方面:

提高质量上限

提高质量上限,其实是通过一系列活动,来避免问题或者本身就让我们起步就变得很好的,一句话:良好的开始是成功的一半

提高质量下限

提高质量下限,其实是通过一系列的活动,让我们的质量成果得以保证的

测试左移,其实就是通过一系列的活动,能提高质量的上限,缩短测试的周期,提高质量的下限,这样子,我们就可以在不断提高下限的过程中,始终将质量稳定在一个水平线上,而和团队一起追求更高的目标了。

从不重视代码质量的第一天开始,就埋下了问题修复,定位的成本和修复问题再次引入问题的成本。

当测试在周期的早期开始时,团队会更专注于质量,并且“让我们在第一时间获得正确的编码”前景。这有助于节省大量时间,并减少软件开发团队必须为特定代码执行的迭代次数。

测试左移,我们可以做什么

对于测试左移其实我们还有很多东西要做,就好像一开始说到的都是为产品质量服务,那么在研发流程中的任何角色、人员都要为质量服务。

有哪些活动可以提高质量上限(举例)?

健康的项目流程(合理并且严格遵守的项目流程)

合理的需求分析(评估需求的质量,分析需求的合理性以及完整性)

出色的系统架构

完整的系统设计(评估设计的质量,分析需求的合理性以及完整性)

充分利用静态代码扫描

进行研发标准的定义

更早的测试分析(先于开发完成需求的分析,做好各种评审的准备)

尽早的测试执行(提早参与测试执行,在集成前就发现一些问题)

有哪些活动可以提高质量下限(举例)?

健康的测试流程

优秀的测试用例

合理的测试计划

合适的自动化

适当的探索式测试

开发自测(TDD、BDD,测试提供更好的用例、技术支持)

团队质量意识的培养

对于测试左移,也需要一个重要的基础,工程习惯,SDLC成熟度,测试分层,持续集成,链路上延展发布的节奏,纵深上需要贴合业务的专精领域的深度探索,代码扫描(规范,问题,安全,异常等),CR, 代码提交行为分析,test double(mock , fake, stub,dummy), UT, 自动化,验收测试等。左移需要工程效率具备不亚于研发的代码能力。

因此对于测试左移,笔者认为可以围绕质量服务思想展开,参与人员则不仅仅局限于测试人员

测试左移实践问题

当然实践起来会存在一些问题,例如笔者团队实践起来,就出现了

测试要求提供概要设计、接口文档!!!

测试要求单元测试必须通过!!!

测试干预需求设计!!!

很多人都认为是测试在要求完成一些没必要的事情,测试在干预我的工作。

其实问题的矛盾点在于前面说过的一句话:不管是测试左移还是测试右移,都是为产品质量服务。不要把提测认为是测试活动的开始,上线是测试活动的结束,更不要认为质量只是测试同学需要关注的。

对于测试左移的落实,最重要的就是全员质量服务意识的培养

02 测试右移

左移是往测试之前的开发阶段移,右移是往发布之后移。也就是产品上线了之后也可以进行一些测试活动。当然在生产环境直接做测试是不推荐的,但是我们可以在生产环境做监控,监控线上性能和可用率,一旦线上发生任何问题,尽快反应,提前反应,给用户良好的体验。技术同学要比业务方先发现问题,如果业务方已经发现业务量明显下降,说明问题已经很严重了。

测试右移其实还可以理解为如果线上发生任何问题,我们有没有能力第一时间发现问题并解决问题,并保证线上数据的一致性或尽可能少的影响线上用户,以及并且实时获取用户反馈。

测试右移,我们可以做什么

对于测试右移,线上监控可以是突破点,举例:

闭环的线上问题反馈-检查-解决-更新流程

更便捷的日志查看、回传服务

丰富有效的log,便于问题的快速定位

丰富的监控指标(例如业务异常点指标)

成本监控(例如短信发送等)

关键指标每日监控(服务器指标)

生产数据监控(警报)(通过sql语句实现生产数据监控,例如是否有多个订单号一样的订单出现等)

因此对于测试右移,我认为可以围绕问题反馈、发现、定位、监控展开,参与人员则不仅仅局限于运维人员

测试右移,实践问题

当然一样的,实践起来也是存在问题,除了技术问题之外,还有例如:

  • 线上监控搭建后无人使用
  • 线上问题反馈机制,业务人员不配合等等
  • 监控指标不合理,反而被认为增加服务器负载

测试右移的落实,除了质量服务的培养,更加重要的反而可能是:完善的反馈、发现、定位,在监控架构完善后,怎么更好的与项目流程结合,不要让其成为累赘


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

都在说测试左移和右移,只有这篇文章说明白了相关推荐

  1. 阿里10年测试大佬带你搞懂测试左移和右移

    看到我们论坛一个测试开发知识体系,对于测试左移和右移, 有点不太懂,看了2篇文章,强行提笔总结了下,还有部分内容是直接翻译的.关于测试左移和右移.测试左移中提到了尽早的发现问题.以及持续集成.尽可能的 ...

  2. 测试左移和右移:不是左右逢源而是左右突击

    持续测试是在软件交付生命周期过程中,以防控业务风险为目的,将每一个业务交付阶段都辅以测试活动进行质量保障,并尽最大可能自动化,通过测试结果不断的反馈给制品过程的测试实践活动.随着持续测试实践的广泛应用 ...

  3. 女生适合做测试吗?看完这篇文章你就懂了

    前言 在我们的传统的想法中,女生的编程思维可能会弱于男生,也导致好多女生会直接躲开编程领域,女程序员的数量也是比较少的,但是也并不是所有的IT行业女生数量都是少于男生的,比如说软件测试,那么女生做软件 ...

  4. 如何用计算机测摄像头信号,如何使用ping命令测试网络摄像头连通性?这篇文章告诉你...

    前言 在做智能化弱电项目时,前端摄像头设备安装结束后,我们会对网络摄像头进行调试,调试过程中会遇到前端摄像头没有图像或者图像出来了画面卡顿的现象.我们会采用ping命令来测试网络的连通性和网络承载能力 ...

  5. 微服务测试怎么做,看看这篇文章就懂了

    开发团队越来越多地选择微服务架构而不是单体结构,以提高应用程序的敏捷性.可扩展性和可维护性.随着决定切换到模块化软件架构--其中每个服务都是一个独立的单元,具有自己的逻辑和数据库,通过 API 与其他 ...

  6. PAKDD 2019 都有哪些重要看点?看这篇文章就够了!...

    雷锋网 AI 科技评论按:亚太地区知识发现与数据挖掘国际会议(Pacific Asia Knowledge Discovery and Data Mining,PAKDD)是亚太地区数据挖掘领域的顶级 ...

  7. PAKDD 2019 都有哪些重要看点?看这篇文章就够了!

    雷锋网 AI 科技评论按:亚太地区知识发现与数据挖掘国际会议(Pacific Asia Knowledge Discovery and Data Mining,PAKDD)是亚太地区数据挖掘领域的顶级 ...

  8. BAT为何都看中智能音箱这个小玩意儿?这篇文章说清楚了

    2017年7月5日,李彦宏乘坐"无人车"驶上五环这件事刷了屏,百度和阿里不约而同对智能音箱进行布局反而没多少人关注. 上午,百度发布DuerOS开放平台让第三方硬件公司开发具有对话 ...

  9. 好多人都说存储过程很难?认真看这篇文章就够了

    何为存储过程? 存储过程是在数据库管理系统中保存的.预先编译的并能实现某种功能的sql程序,说直白点,java知道吧?和java的方法一样. 每遇到一个新的知识点时,我们都会看看它的优点,从而加深对它 ...

最新文章

  1. c++关于map的find和count的使用
  2. 第二次冲刺------第三天
  3. 高等数理统计(part6)--统计决策问题
  4. Mybatis源码:Executor 模板模式
  5. 如果你也会C#,那不妨了解下F#(4):了解函数及常用函数
  6. python wxpython_python GUI wxPython
  7. C语言——冒泡排序法
  8. 三元表达式、列表推导式、生成器表达式、递归、内置函数、匿名函数
  9. 一文搞懂Python知识难点------装饰器
  10. MySQL 基础--时间戳类型
  11. java exec 关闭,Java学习之使用Runtime.exec()启动、关闭Tomcat
  12. Spring的标签和验证等模块
  13. 关于opencv中的imread()函数声明
  14. Linux-四-常见符号
  15. eclipse设置背景图片(并非更换主题)
  16. linux安装键盘鼠标失灵,在archlinux安装界面这卡住了,鼠标键盘失灵
  17. 为什么你不想学习?只想玩?人是如何一步一步废掉的
  18. gerrit的第一次提交记录
  19. 线性插值函数的基函数构造
  20. java: 无法将类com.aaa.xxx中的构造器xxx应用到给定类型

热门文章

  1. VIM:消除~ 和 .un~后缀的备份文件
  2. dns服务器如何修改静态dns条目,静态地址怎么设置dns服务器
  3. 邮件服务中550、553和禁止中继错误原因和解决方法
  4. 靠“小龙虾”打天下,信良记的路还走得通吗?
  5. 在ubuntu16.04下测试ffplay程序
  6. OpenBlock Desktop v2.3.1积木编程
  7. java mail 附件 dat,邮件附件winmail.dat文件的正确打开姿势
  8. Plugin: Memory Dump by aeon update 12.10
  9. C语言实现家族树的建立与操作
  10. tensorflow导出冻结图模型