测试环境和开发环境隔离有必要吗?或者那些情况需要隔离 哪些不需要
你是指一人一套环境吗?如果是的话就太有必要了
开发在开发环境调试,调试好了让测试部署到测试环境
不然你会经常发现为什么昨天可以的今天就不可以了,因为开发偷偷提交了一个 bug
必须隔离
隔离了开发真的会用开发环境吗?不会,开发环境没数据 还是会在测试环境,因为他们懒得造数据
一般来说会按不同的阶段区分以下环境:开发,测试,预生产,生产。
开发环境:用以开发联调。如果有什么环境改动,比如数据库加字段改字段,以及开发库的代码等,都会先在开发环境部署并且进行开发调试。
测试环境:比起开发环境会相对稳定。只有开发联调和内测通过的变动,才应该更新到测试环境。所以由于开发和测试处于不同的阶段,测试环境和开发环境是需要区分开的。
预生产环境:在正式部署到正式环境之前需要在预生产环境进行部署验证。因此预生产环境是需要和生产环境一致,或者比生产环境早一个版本的(在预部署阶段)
生成环境: 不用细说了。
我们之前的代码会有 dev, qa, release, release-tag 四个库去对应上面四个环境:
太有必要了!我司就没有分离,开发测试都用的同一个环境。遇到项目比较急的时候,测试还没测完,后端要是改了 bug 就一直重启服务,导致测试只有停下来等!一天估计接近一半时间都在等重启(bug 多,改的质量还低,有些 bug 影响了流程,也只能等他们改)。而且还经常把测试正在使用的数据给霍霍了。给领导提过几次,说要把开发和测试环境分开,不然效率太低,领导说的是另一台服务器带不动了,就没下文了…(终究还是舍不得花钱?)
看投入产出比。
个人经验,假设说现状是没有隔离,如果有下面的情况,建议隔离:
1、经常出现一个功能一会可以,一会不行。问了整个研发团队都没人反馈,只能不了了之,上线时这个功能是可以还是不可以都得碰运气
2、阻塞性问题出现频繁,而且卡住后大家一起上都得解好几个小时,其他人只能等,然后加班赶进度
3、有些配置或开关,打开后会严重影响其他人使用(比如直接通过开关关掉用户登录)。但开发需要开,测试需要关,两边需要有冲突
不过隔离后必须要解决的问题是,开发环境的持续维护。
一方面,开发人比测试多,变更更频繁,且上去的很可能是没有跑通过的代码,出问题可能性更大。
另一方面,如果系统服务比较多,链路比较复杂,开发不熟悉整个环境,容易自己改动破坏了流程的正常使用而不自知。
这个持续维护的成本,很可能对开发团队而言挺高的。但不处理好的话,开发环境就会变得无法使用(流程都走不通,也没人知道怎么解决,相当于废掉了),为了项目进度,测试环境还是会被开发占用做联调。
最好的办法是,一套公共环境维持和线上版本一致,然后每个需求开发自己可以基于这个公共环境复制一套,测试也自己复制一套,上线后这些环境回收,并更新公共环境。这样就不用持续维护一个环境了,而且以需求为单位人数会少一些,也避免了太多人使用相互影响。不过背后就需要有比较完善的环境管理平台了,人工操作成本太高了。
要保证测试结果的准确性,就必须提高环境的稳定性,而提高稳定性就必须环境独立,不光应用层独立,DB 也要独立,我们 team 目前就这么做的,大概用 300+ vm,还不算容器,测试环境测试维护。
以前在银行做测试,测试环境都应该是仿生产环境的,当然不允许开发人员上去操作。所有环境都测试人员专门使用,才能保障环境和生产保持高度一致, 从而发现更多的问题。 因为研发环境的参数、服务器之类的配置和生产完全不一样 包括数据库数据,一些问题你测不出来。
不隔离就没有所谓实质” 送测 “环节了
说穿了,还是持续维护工作量大且 “价值” 不大的问题。脏活累活谁都不想干,所以不要抱怨环境 XXX 的问题,因为连 “你” 都不想去 “整理”!环境有问题,及时修了就好,修不好 “升级” 让领导们知道 “风险”。
有必要,小时候吃不起零食的时候总是分着吃 后来条件好了就一人一袋吃 真香。
很有必要的,开发人员在开发的时候应该有一套开发环境,方便开发人员在开发的时候调试代码,还有就是开发完成后用于开发自测。
不分开,后面麻烦
一般来说,每个 team member 都能独占一套测试环境就已经是很理想的情况了。300+VM / 20+ 人,什么情况?是一套环境需要使用多台 VM 吗?
这能说明你们的系统庞大、测试环境占用资源多。如果开发环境也使用了差不多规模的资源,且开发和测试团队不存在环境共享,才能说明你们测试环境和开发环境是隔离的。
每天前后端各自发布三四次(合起来 N 次),页面经常突然失效,会不会烦死
成本的问题,如果不隔离,导致效率降低的成本,比部署维护多套环境的成本低,也可以不隔离;这些通过环境或者隔离来处理只是一个方面吧,在项目流程上应该也要考虑,比如每一个发包之后,哪些环境要更新到和线上一致,哪些又不需要,数据也要定期维护;不过还真没遇到过,开发测试用同一套环境的情况;我们这边是广告项目,依赖的一些公关服务其实是用同一台环境的,比如大数据,或者模型服务的环境,其他的后台相关的服务其实有多套主环境/分支环境,资源复用其实也不高,资源复用的话,可能还需要实现调度平台,成本太高了。
现在已经有了,然后开发又变成使用测试环境了,都不想动手造数据,就想着用现成的,没现成的就叫你给他弄。小公司流程各种不规范,想推没那么容易,涉及到钱的话就更不简单了。
突然想起来我实习做的第一个测试工具,可以把 excel 里面的数据上传到数据库里面,造数据全靠 excel 一路拉下来,嘎嘎嘎。如果大佬不想开发测试工具,也可以用 navicat,把 excel 里面的测试数据上传到 MySQL 数据库里面