本篇为【从零开始学产品】系列课第1章第4节
欢迎到公众号菜单栏,获取产品经理课程更多资料

上节课我们说到了,Bug的生命周期,而只有在测试环境和线上环境发现的Bug,才会被称之为Bug。

倒底什么是测试环境,什么是线上环境,开发环境又是什么,三者之间的关系怎么样?

一 从【开发环境】说起

这是蛮荒之地,惟有力量和自然法则永存。

研发领域

开发环境是研发团队的领地,你可以把开发环境当成是蛮荒之地。

在这里,惟有力量和自然法则才是统治者:

野蛮的研发团队成群结队的出现,频繁的发布版本,经常爆发小规模的资源冲突。

荒草重生,各种奇异和鬼怪的现象都会在开发环境出现,就像是一个还未完全成形的小世界。

你看到的一切都有可能是假像,昨天发生的事情,到了今天就可能是完全不一样的结果。

为什么会这样?

第一,研发团队需要提供假数据来保证前后端并发开发。

第二,研发团队经常会出现思维漏洞。

第三,不少研发团队的成员没有持续集成的习惯,总是在自己本地环境中做研发。

第四,开发环境没有版本管理,所有的依赖关系都不够稳定。

第五,开发环境是思想从诞生到落地的重要过程,产品经理的意志最终被研发团队执行并展现在世人面前,研发团队和产品经理的理解偏差也会随之浮现。

破局

在开发环境中,产品经理或者是测试人员需要提前介入么?

按照我们之后描述的敏捷开发来看,产品经理和测试人员不需要在开发环境正式的介入:

特别是当出现开发人员说来不及测试了,所以请测试团队在开发环境先进行测试的时候。

这样会导致更混乱,合理的解决办法是,在明确优先级的情况下,分出迭代,先保证重要的功能进入测试环境。

那么,产品人员和测试人员需要做的是什么?

需要是每天在晨会之后,或者是任意一个时间段,到开发环境去看一下,关键的逻辑有没有错误,有没有重大的偏差,而不是做严谨的测试。

Demo

开发环境对于产品人员和测试人员而言,最重要的环节还在于是Demo。

关于Demo,我们陆续发现有一些误区,特此声明。

第一,Demo是开发团队向产品团队交付,所以Demo的主角是研发团队。

第二,Demo应该依照Story去演示功能,防止有遗漏。

第三,Demo之后就会打Tag(固定代码版本),所以Demo应该是非常严谨的。

从来都没存在所谓的主流程跑通,而是应该一行代码都不需要改动,直接发布到测试环境。

第四,Demo过程中,有一个Demo通过的基本原则:

就是但凡是肉眼能够发现的错误,都应该记为不通过。

而不是说,有几个Minor级别的小问题,可以通过。

第五,下次Demo的时候,可以只演示Demo中出现的问题,以节省时间。

第六,产品人员和测试人员应该参加Demo。

Demo的时候不仅是要看一下研发团队的操作,还应该自己亲自在PC或者是手机上操作。

第七,Demo的数据应该使用仿真数据 ,(而不是随意填写的测试一,测试王八蛋之类的)。

第八,在Demo之前,应该先进行性能测试,UI自检规范和CodeReview,三者通过之后才允许Demo。

第九,如果有Bug的修复,也应该在开发环境先向测试人员演示通过,才允许发布到测试环境,以减少反复发布测试的次数。

第十,Demo过程中发现的问题,应该记录下来责任人和预计修复时间。

好了,从混沌无序的开发环境,到发布到测试环境,必须有序且稳定:

随着开发人员的深入,冲突的规则越来越少,我们通常认为在测试环境,应该检测出来的Major级别以上的Bug为0,不多于4个的Normal Bug。

从开发环境通过了Demo,升级到测试环境,就进入了我们的秩序山谷-测试环境

(是的,我改了名字,秩序山谷更适应测试环境的名字~)

二  秩序的力量-【测试环境】

我们更新一下图,如下所示。

测试领域

测试环境,是测试人员所掌控的世界。

在这里,所有的Bug的发现,流转,验收和版本的管理,必须摆脱开发环境的野蛮和无序。

测试环境的秩序体现在以下几个环节:

第一,发布到测试环境需要登记。

我们通常使用Wiki来管理测试环境的发布,在测试环境中,只有两种情况下才允许被发布:

一种是新的迭代开发,一种是Bug的修复。

这是指,每一次的发布,要么是对一个迭代开发的需求,要么是对一个Bug的修复。

不允许说,我这次发布的功能改了什么什么东西,而我们在需求和Bug管理工具上根本看不到。

第二,发布到测试环境,必须要指定版本号。

第三,发布到测试环境,必须要指定回滚版本。

第四,测试环境发布之后,必须由运维,开发依次验证是否发布成功。

第五,测试环境的发布,原则上只允许每天发布一次。

运维人员依据每天的测试登记,不能无脑发布。

所有的操作步骤应该写在Wiki上,所有的脚本和Sql都应该在测试环境的Wiki中登记。

严格执行流程,严禁开发人员和运维人员脱离Wiki单独发布。

第六,测试环境中,开发人员应该只有读日志的权限,不应该重启和发布的权限。

测试到发布

测试环境并不是单纯意义上的找Bug,更是对线上环境发布的演练。

所以测试环境其实是包含了“演练发布脚本”+“寻找系统Bug”两个环节。

而我们往往会忽视掉第一点,等到线上环境发布的时候出现问题,再怎么甩锅都没用了。

你可以理解为测试环境是试婚,又或者是婚前同居,但其实测试环境远远比试婚或者是同居更复杂和严谨。

在测试环境中,找出来的问题越多,心里会越踏实,如果你一个Bug没找到,太完美反而会有不真实的感觉。

在测试环境中,遇到被卡住流程,无法进行操作验证是非常头疼的一件事,所以倒推而来,Demo的重要性。

测试环境中,还应该做出一个很重要的判断,就是发布计划:

这应该由测试,产品和研发共同决定发布的排期。

发布到正式环境,同样应该是需要在Wiki登记,我们接下来看一看,穿越秩序山谷,是怎么样到达真实界元的。

三  【线上环境】-爱我,就用这把刀插进我心里

我想看看,我自己的心里倒底喜欢谁,听说只要刀够快,就可以让我在死之前,看到一个真实的自己。
不,你看不到,你只能看到她在心里,留下了什么。

上线

上线永远都是一件恐怖又期待的事情,像少女等情人,怕他不来,又怕他乱来。

上线的严肃程度远超开发环境,历经开发和测试的层层把关,倒底系统上线之后是什么样子,答案即将揭晓。

但无论如何,对线上的操作应该谨记的重要原则如下:

1.如有问题,五分钟之内无法解决,立刻回滚,严禁在线上调试和解决问题。

2.发布必须选择每天活跃用户最少的时候。

3.视发布版本的重要度来决定是否要对用户公告停机或者是不停机维护。

4.视发布版本的重要度来决定是否对新功能做运营推广。

5.线上发布必须所有团队在线 (不要求在场,毕竟通常都是深夜发布,或者是凌晨5点发布)

6.发布之后,运维,研发,测试和产品必须依次验证。

7.发布之后,重点观察用户的反馈和系统日志,有很多种异常情况,是你无论在测试环境测试的多严谨,都可能预料不到的。

(就好像无论你认识一个人多久,都不可能完全了解他一样)。

8.正常来讲,一周只允许两个时间点来发布,周二或者是周四,不选择周末之前的一天,这样,如果真的发布失败,还有一个白天的时间用以解决问题。

9.准备好要祭天的程序员。

10.发布应该分成正常发布和紧急发布。

严谨的流程

线上的Bug,一旦是Major级别,可以定性成是事故了,对事故:

往往需要摆脱正常发布的限制,可以走紧急发布流程:

通常是在单独的Wiki页面登记,由产品总监和技术总监签字画押。

流程可以后补,但是不能不补,特别是对于没有打版本发布的场景,手工修改的一些页面,或者是字段:

往往有可能会被开发人员忘记,又被覆盖掉。

对于App的,有审核时间的限制,所以向前兼容性,是产品经理要提前重点告知开发团队,并在测试环境严谨测试的。

版本更新通常是分成强制更新和非强制更新,也由产品人员和研发人员共同决定。

四 小结

规范

这次讲的三个环境,开发,测试和线上,每一个环境都有他自己不同的特点。

测试人员的正常工作环境,就是测试环境,但是不可避免的和开发环境/线上环境都有接触。

不知道哪里有一些遗漏,欢迎在评论中指出~~

另外,文中举的例子,和一些约定,可以结合自己公司的实际情况做一些变动。

但是希望大家能够理解:

每一条,其实都是踩着由无数Bug和程序员、产品经理的尸体形成的规范~

这其实是属于敏捷开发中的内容,在我们的另一个专栏里,从零开始学敏捷开发,会有一些内容和这里的有部分重复,也可以用来互相印证。

小编注:

【从零开始学敏捷开发】致力于将一套可落地执行的敏捷开发流程分享给大家

该流程面向项目团队全体成员,定位了每个职业在敏捷开发流程中扮演的角色,以及在项目研发不同阶段的流程规范。

无论是对团队协作开发一无所知的项目新手,还是想要提高团队开发效率,减少BUG数量的技术总监,都能从自己的角度有所收获。

欢迎扫码关注

第一章第四节的内容就到此结束

下节预告:

【更强大的测试:自动化测试和性能测试】,敬请期待

从零开始学产品第五篇:三个环境,开发、测试和线上相关推荐

  1. 从零开始学产品第六篇:更强大的测试,自动化测试和性能测试

    本篇为[从零开始学产品]系列课第1章第5节 欢迎到公众号菜单栏,获取产品经理课程更多资料 "测试就是拿点鼠标在电脑上瞎点,或者是用手机随便戳几下么?" "不,是有计划有意 ...

  2. 从零开始学产品第七篇:常用的功能模块有哪些

    一个系统中都有哪些模块组成,对于初学者来说,可能还不能够区分的很清楚. 但是仔细回想一下,是不是几乎所有的功能都有登录和注册的功能? 启动页,Banner,轮播,个人中心,关于我们,意见反馈,设置,忘 ...

  3. 从零开始学架构5 - 实战篇

    从零开始学架构5 - 实战篇 38 | 架构师应该如何判断技术演进的方向? 潮流派? 保守派? 跟风派? 技术演进的动力 1)对于产品类业务,答案看起来很明显:技术创新推动业务发展! 苹果开发智能手机 ...

  4. 从零开始学建站-主机篇

    从零开始学建站-主机篇 主机的基础知识 对于网站来说,主机的意义不同于传统意义的PC.简单地说,主机就是存放网站内容的地方,可以称之为"主机空间"."网站服务器" ...

  5. 从零开始学架构2 - 高性能篇

    从零开始学架构2 - 高性能篇 从0开始学架构.高性能篇 14 | 高性能数据库集群:读写分离 读写分离原理 读写分离的基本原理是将数据库读写操作分散到不同的节点上,下面是其基本架构图. 读写分离的基 ...

  6. 从零开始学 Python 之基础篇

    从零开始学 Python 之基础篇 前言 大家好,这里是「痴海」从零开始学习 Python 系列教程.此文首发于「痴海」公众号,欢迎大家去关注.学习一门语言最好的办法,就是教懂别人.在这公众号,我会从 ...

  7. 互联网神经学系列第五篇:研究大脑中的谷歌,脸书和华为思科路由,脑互联网生理学

    本文是互联网神经学系列第五篇-"大脑中的类互联网应用和结构,脑互联网生理学" 一.人类大脑研究的困境 大脑的秘密一直是科学皇冠上最明亮的宝石之一,但在两千年前,人们确连它的重要意义 ...

  8. 【从零开始学Skynet】基础篇(九):调试控制台服务

    Skynet自带了一个调试控制台服务debug_console,启动它之后,可以查看节点的内部状态. 1.启用调试控制台 (1)在skynet/examples目录下新建main_console.lu ...

  9. 【高德地图API】从零开始学高德JS API(三)覆盖物——标注|折线|多边形|信息窗口|聚合marker|麻点图|图片覆盖物

    原文地址为: [高德地图API]从零开始学高德JS API(三)覆盖物--标注|折线|多边形|信息窗口|聚合marker|麻点图|图片覆盖物 摘要:覆盖物,是一张地图的灵魂.有覆盖物的地图,才是完整的 ...

最新文章

  1. LUT 查表反色处理
  2. php用户登录后跳转到主页,phpmyadmin登录后跳到首页的问题
  3. 网上报名的一些感慨.
  4. mac php 怎么启动命令,Mac 使用homebrew启动PHP环境命令
  5. linux安装mq报5724,linux下MQ简单配置手册.doc
  6. 雨滴桌面时间插件_Win10美化向——如何搭配你的桌面
  7. [转载] 七龙珠第一部——第005话 邪恶沙漠的雅木茶
  8. (二)Python 装饰器
  9. Invest授粉模型问题求助
  10. UltraEdit 26 总是偶尔提示运行的是试用模式
  11. zmq xsub/xpub 实现消息订阅(一)
  12. spring 如何加载applicationContext.xml
  13. Win7系统应用技巧集锦
  14. 六【 SpringMVC框架】
  15. python os.system保存返回值_python中os.system的返回值
  16. 云时代下,传统和新型存储的博弈已经开始
  17. pip3 install -i sklearn 安装报错
  18. “终端有鸿蒙,云端有安超!” 鸿蒙落地,安超有什么新动作?
  19. VSCode 翻译插件一览表
  20. linux下修改DNS服务

热门文章

  1. 线性回归的梯度下降和正规方程组求解
  2. LVS负载均衡DR模式部署
  3. Web Service概念
  4. oracle的会话(session)
  5. 从app加载页面说开去
  6. 互利网上数字金融典型场景: 网购运费险
  7. Jquery------三种选择器(基本选择器、过滤选择器、表单过滤选择器)
  8. layui表格——table.render(options)(转)
  9. (4)理解 neutron ml2---port创建流程代码解析
  10. Springboot的常规属性配置和类型安全配置