问答 测试环境和开发环境隔离有必要吗

Jiizukelee · 2020年04月30日 · 最后由 index9-44 回复于 2020年12月05日 · 10091 次阅读

测试环境和开发环境隔离有必要吗?或者那些情况需要隔离 哪些不需要

共收到 30 条回复 时间 点赞

必须隔离

J 回复

隔离了权限就要收回来啊

一般来说会按不同的阶段区分以下环境:开发,测试,预生产,生产。

开发环境:用以开发联调。如果有什么环境改动,比如数据库加字段改字段,以及开发库的代码等,都会先在开发环境部署并且进行开发调试。

测试环境:比起开发环境会相对稳定。只有开发联调和内测通过的变动,才应该更新到测试环境。所以由于开发和测试处于不同的阶段,测试环境和开发环境是需要区分开的。

预生产环境:在正式部署到正式环境之前需要在预生产环境进行部署验证。因此预生产环境是需要和生产环境一致,或者比生产环境早一个版本的(在预部署阶段)

生成环境: 不用细说了。

我们之前的代码会有 dev, qa, release, release-tag 四个库去对应上面四个环境:

  1. 开发在 Dev 库开发,部署到开发环境联调,完成内测 后代码合并到 qa 库。
  2. 测试用 qa 库代码部署到测试环境进行测试。测试通过并准备上线的需求,将对应代码合并到 release 库。 3.使用 release 库代码部署到预生产环境进行最后一轮测试。测试通过后,可以上线。
  3. 使用 release 库上线,并且在此版本打 tag 进行备份。

太有必要了!我司就没有分离,开发测试都用的同一个环境。遇到项目比较急的时候,测试还没测完,后端要是改了 bug 就一直重启服务,导致测试只有停下来等!一天估计接近一半时间都在等重启(bug 多,改的质量还低,有些 bug 影响了流程,也只能等他们改)。而且还经常把测试正在使用的数据给霍霍了。给领导提过几次,说要把开发和测试环境分开,不然效率太低,领导说的是另一台服务器带不动了,就没下文了…(终究还是舍不得花钱?)

Old-LJ 回复

如果你着急只是想隔离环境 那不用另一个服务器 你直接先弄两个 Tomcat 环境不就行了么

看投入产出比。

个人经验,假设说现状是没有隔离,如果有下面的情况,建议隔离:
1、经常出现一个功能一会可以,一会不行。问了整个研发团队都没人反馈,只能不了了之,上线时这个功能是可以还是不可以都得碰运气
2、阻塞性问题出现频繁,而且卡住后大家一起上都得解好几个小时,其他人只能等,然后加班赶进度
3、有些配置或开关,打开后会严重影响其他人使用(比如直接通过开关关掉用户登录)。但开发需要开,测试需要关,两边需要有冲突

不过隔离后必须要解决的问题是,开发环境的持续维护
一方面,开发人比测试多,变更更频繁,且上去的很可能是没有跑通过的代码,出问题可能性更大。
另一方面,如果系统服务比较多,链路比较复杂,开发不熟悉整个环境,容易自己改动破坏了流程的正常使用而不自知。

这个持续维护的成本,很可能对开发团队而言挺高的。但不处理好的话,开发环境就会变得无法使用(流程都走不通,也没人知道怎么解决,相当于废掉了),为了项目进度,测试环境还是会被开发占用做联调。

最好的办法是,一套公共环境维持和线上版本一致,然后每个需求开发自己可以基于这个公共环境复制一套,测试也自己复制一套,上线后这些环境回收,并更新公共环境。这样就不用持续维护一个环境了,而且以需求为单位人数会少一些,也避免了太多人使用相互影响。不过背后就需要有比较完善的环境管理平台了,人工操作成本太高了。

要保证测试结果的准确性,就必须提高环境的稳定性,而提高稳定性就必须环境独立,不光应用层独立,DB 也要独立,我们 team 目前就这么做的,大概用 300+ vm,还不算容器,测试环境测试维护。

以前在银行做测试,测试环境都应该是仿生产环境的,当然不允许开发人员上去操作。所有环境都测试人员专门使用,才能保障环境和生产保持高度一致, 从而发现更多的问题。 因为研发环境的参数、服务器之类的配置和生产完全不一样 包括数据库数据,一些问题你测不出来。

不隔离就没有所谓实质” 送测 “环节了

Old-LJ 回复

需要分开啊😞

说穿了,还是持续维护工作量大且 “价值” 不大的问题。脏活累活谁都不想干,所以不要抱怨环境 XXX 的问题,因为连 “你” 都不想去 “整理”!环境有问题,及时修了就好,修不好 “升级” 让领导们知道 “风险”。

有必要,小时候吃不起零食的时候总是分着吃 后来条件好了就一人一袋吃 真香。

很有必要的,开发人员在开发的时候应该有一套开发环境,方便开发人员在开发的时候调试代码,还有就是开发完成后用于开发自测。

J 回复

sql 文件,或者把测试备份库给开发自己更新

匿名 #17 · 2020年06月14日

不分开,后面麻烦

归零 回复

用了 300+VM,你们 team 多少人?

陈恒捷 回复

没明白以需求为单位该怎么理解,能详细说下吗

深度思考 回复

一般来说,每个 team member 都能独占一套测试环境就已经是很理想的情况了。300+VM / 20+ 人,什么情况?是一套环境需要使用多台 VM 吗?

Thirty-Thirty 回复

嗯,系统太庞大了,有套分布式高并发系统,就占用了一半机器资源,还有大数据的组件等。

深度思考 回复

这能说明你们的系统庞大、测试环境占用资源多。如果开发环境也使用了差不多规模的资源,且开发和测试团队不存在环境共享,才能说明你们测试环境和开发环境是隔离的。

J 回复

把测试数据库导入一份即可。 他们自己就有数据了

Thirty-Thirty 回复

嗯,资源使用就是这样的,开发和测试环境从网络侧就隔离了,不同的 wlan

每天前后端各自发布三四次(合起来 N 次),页面经常突然失效,会不会烦死

成本的问题,如果不隔离,导致效率降低的成本,比部署维护多套环境的成本低,也可以不隔离;这些通过环境或者隔离来处理只是一个方面吧,在项目流程上应该也要考虑,比如每一个发包之后,哪些环境要更新到和线上一致,哪些又不需要,数据也要定期维护;不过还真没遇到过,开发测试用同一套环境的情况;我们这边是广告项目,依赖的一些公关服务其实是用同一台环境的,比如大数据,或者模型服务的环境,其他的后台相关的服务其实有多套主环境/分支环境,资源复用其实也不高,资源复用的话,可能还需要实现调度平台,成本太高了。

Old-LJ 回复

大佬我想问一个问题,你们像这种情况,自己申请一个内部的服务器用不行嘛,网上看好像也就 1k 来块钱,反之部署在公司里面

index9-44 回复

现在已经有了,然后开发又变成使用测试环境了,都不想动手造数据,就想着用现成的,没现成的就叫你给他弄。小公司流程各种不规范,想推没那么容易,涉及到钱的话就更不简单了。

Old-LJ 回复

突然想起来我实习做的第一个测试工具,可以把 excel 里面的数据上传到数据库里面,造数据全靠 excel 一路拉下来,嘎嘎嘎。如果大佬不想开发测试工具,也可以用 navicat,把 excel 里面的测试数据上传到 MySQL 数据库里面

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册