为什么我把测试工作做得挺好的,线上环境还会出Bug?这些Bug可能是因为当初设计时就有的漏洞,也可能是部署不当带来的问题。

测试就不能做点什么改变这种被动的现状吗?有,你需要践行测试左移测试右移

传统测试流程

1

测试流程

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

2

流程弊端

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

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

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

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

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

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

测试左移

1

是什么?

测试左移的思想本质是越早的发现不合理的地方,出问题的几率就越低。测试左移的原则支持测试团队在软件开发周期早期和所有干系人合作。因此他们能清晰地理解需求以及设计测试用例去帮助软件“快速失败”,促使团队更早的修改所有的bug。

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

2

怎么样?

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

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

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

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

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

3

怎么做?

在团队的Devops开发下,对于测试左移进行的操作:

  • 编写单元测试,通过单元测试提前进行测试;

  • Code Review,通过代码走读发现一些基础的问题;

  • 参与需求评审,提出需求不清晰、不合理、遗漏等意见,了解开发的实现方式;

  • 参与研发需求分解,协助梳理分解遗漏点;

  • 参与概要、接口设计评审,协助梳理遗漏逻辑;

  • 提早输出测试导图,开发编码前进行评审;

  • 部分功能提测,提早开始测试;

  • 自动化测试,用于回归确保旧版本功能正确性;

对于测试左移,进行了相应的尝试后,也发现了测试左移实践的问题:

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

  • 测试要求单元测试必须通过;

  • 测试干预需求设计;

很多人都认为是测试在要求完成一些没必要的事情,测试在干预我的工作。
其实问题的矛盾点在于前面说过的一句话:不管是测试左移还是测试右移,都是为产品质量服务。不要把提测认为是测试活动的开始,上线是测试活动的结束,更不要认为质量只是测试人员需要关注的。对于测试左移的落实,最重要的就是全员质量服务意识的培养。

4

测试需要关注什么?

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

  • 了解和评估需求,发掘需求的不合理之处,提供针对性的建议,提高需求的质量。

  • 了解和评估产品设计方案,发现设计的漏洞,并及时反馈给产品人员,避免问题到了测试阶段才暴露出来,影响产品按时发布。

  • 了解产品的技术实现,通过查看开发文档,接口文档等,执行静态测试发掘问题,检查代码问题。

提高质量上限:

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

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

  • 出色的系统架构;

  • 充分利用静态代码扫描;

  • 进行研发标准的定义;

提高质量下限:

  • 健康的测试流程;

  • 优秀的测试用例;

  • 合理的测试计划;

  • 合适的自动化;

  • 适当的探索式测试;

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

  • 尽早的测试;

  • 团队质量意识的培养;

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

测试右移

1

是什么?

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

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

2

怎么样?

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

  • 线上监控搭建后使用率不高;

  • 线上问题反馈机制,业务人员不配合等等;

  • 监控指标不合理,反而被认为增加服务器负载;

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

3

怎么做?

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

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

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

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

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

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

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

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

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

4

测试需要关注什么?

软件一经发布,就要对线上日志监控和预警。及早发现问题,及早修复,将损失降到最低。而不是等用户反馈了,才去解决。如果等到用户反馈问题,说明问题影响反馈已经很大了。

  • 测试上线及时验证,有问题,开发快速回滚代码

  • 上线后开发监控服务日志,日志报错,代码回滚

  • xdcs监控服务流量,出现流量报警快速定位问题

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

  • 生产数据监控(警报)

  • 用户反馈问题及时跟进,针对缺陷,通知开发尽快解决,针对体验,通知产品打磨细节,更好的服务用户。

灰度发布,数据隔离,线上监控,线上验收。当业务方由于环境等原因,有些功能必须在线上验收。线上验收的原则是尽可能的不要影响到原有功能和使用业务的用户,这个就需要做好很好的隔离,所以从研发一开始的设计就从线上可测性角度就需要考虑到这一点,功能做好隔离,数据做好隔离,一旦出现问题,我们有相对应的风险预案,如何清除脏数据,如何将功能降级等,前期的设计都要考虑好,发布完成以后我们还需要考虑运营层面的事情。

采集线上数据,包括业务数据和性能数据,建立一个健康的产品数据模型。业务数据可以通过数据挖掘,生成用户画像,有助于产品人员做出相应的决策,包括改进现有功能,开发新功能满足用户需求,砍掉某些不合适的功能等。性能数据,最直接的作用就是运维人员做出相应的硬件调整,包括硬件扩容,整合闲置资源等。也可以给架构师提供一些系统架构设计上的调整。

总结

测试左移的落实,最重要的就是全员质量服务意识的培养。测试右移的落实,除了质量服务的培养,更加重要的是:完善的反馈、发现、定位问题,提升用户体验。相比较,测试左移的价值更高,尽早发现并解决问题,成本更低。

无论是测试左移还是测试右移,测试人员开始从质量控制转变成质量保证,从被动发现软件问题到主动提高软件质量,从团队的边缘人物转变成团队的活跃分子,这都值得为之践行。

推荐阅读

测试经理:"抓个包都不会?回家种地得了!"

测试经理的3个月试用期转正报告

接口测试常用工具及测试方法(新手篇)

顶级辅助之测试左移与测试右移相关推荐

  1. DevOps模式下测试左移和测试右移

    一.什么是DevOps模式 可以参看我的上一篇文章:什么是DevOps模式,本文主要介绍DevOps模式下测试左移和测试右移可以做的事项有哪些~ 二.测试左移内容 2.1 PRD评审 这一点相信很多测 ...

  2. 一文搞懂测试左移和测试右移

    软件测试技术应当贯穿整个软件开发生命周期.对软件产品(包括阶段性产品)进行验证和确认的活动过程,其核心目标是尽快尽早地发现软件产品中所存在的各种问题 bug-- 与用户需求.预先定义的不一致性. 然而 ...

  3. 什么是测试左移和测试右移,如何落地?

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 测试左移和测试右移模型 对软件产品而言,传统的质量模 ...

  4. 都在说测试左移和右移,只有这篇文章说明白了

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

  5. 【软件测试】敏捷方法与测试左移

    文章目录 敏捷方法 测试左移 测试左移与DevOps 敏捷方法 当敏捷开发方法(Agile Development Methods)出现时,人们认为它们"最适合约 50 人或更小的团队,这些 ...

  6. 敏捷开发流程下的测试(一)敏捷测试核心

    敏捷开发下的测试(一)敏捷测试核心 本文是参考ThoughtWork冰玉老师(https://blog.csdn.net/bingyulin)讲的敏捷课程加上自己的理解写的,想听原版可以关注Thong ...

  7. 【软件测试】8年资深测试,聊一聊测试技术的厚度......

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

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

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

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

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

最新文章

  1. ASCII码对应表chr(9)、chr(10)、chr(13)、chr(32)、chr(34)、chr(39)、chr(.. 以及oracle中使用chr
  2. Unix/Linux下文件基本操作[zt]
  3. 12-函数的定义+自调+实参及形参理解
  4. java随机星星怎么闪_canvas画随机闪烁的星星
  5. php用a什么软件来下载,AMQB官方PHP库
  6. 查看mysql某人执行了什么语句_详解MySQL如何监控系统全部执行过的sql语句
  7. 百面机器学习 #3 经典算法:01-1 线性可分(硬间隔)支撑向量机SVM
  8. win7 apache+php+mysql_win7下手动配置apache+php+mysql记
  9. Seldom2.0: 如何更简单的实现HTTP接口测试
  10. 重写 geturl Openlayers中使用TileCache加载预切割图片作为基础地图图层
  11. 《简明Python教程》学习笔记
  12. 磨煤机监测参数及实际运行数据
  13. CryptoJS 加密
  14. mysql查询自然周_Hive和MySQL中自然周保持一致的方法
  15. Microsoft Office Word 2007 转换为 Microsoft Office Word 2003兼容方法
  16. vue,videojs实现hls直播(萤石视频回放)
  17. Python爬虫:scrapy爬取斗鱼直播图片
  18. PAT乙级 1070 结绳 python
  19. 北京理工大学·Python网络爬虫与信息提取·知识整理
  20. 基于L298N的STM32的直流电机PWM调速控制

热门文章

  1. 思科交换机不恢复配置重置特权密码
  2. csgo内置服务器文件夹,centos7搭建csgo服务器
  3. dell设置从ssd启动_戴尔笔记本如何设置从ssd启动系统?
  4. DSP28335驱动Lcd12864显示Ds18b20采集到的温度,并通过Sci方式传输至PC,使用Matlab制作上位机软件进行数据保存与显示
  5. 【网络编程知识】使用Socket通信,做一个简单的多人聊天室
  6. 计算机科学与计算机技术?
  7. 手写简易WEB服务器
  8. 通过访问系统通讯录,获取选择用户的全名和电话
  9. 计算机uc,解密UC浏览器计算机版本的新功能
  10. slax9Linux中文,湖湘杯-WriteUp | CN-SEC 中文网