软件测试环境要不要和软件开发环境隔离?  

发表于:2012-6-29 11:45

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:chenjianjx    来源:51Testing软件测试网采编

  开发环境要不要和测试环境隔离?要就是说,是不是要各用一套数据库等基础设施?

  能隔离当然最好,开发人员和测试人员不会互相干扰。但隔离是有代价的,它意味着你要多引一个数据库,如果你的系统是分布式的,你还要多维护一套MQ、RPC中间件等。

  依我看,需不需要隔离要看系统是否满足下面的三个条件:

  1、两个环境的系统总是要接触到同一份数据

  2、数据被一个系统接触后,业务状态会改变;导致这份数据对另一个系统不再可用

  3、很难禁止两个系统在同一时刻接触到同一份数据

  解释:

  条件1.如果两个环境共享数据库,但开发环境只处理北方数据,测试环境只处理南方的,那不用隔离

  条件2.即使两个环境都会处理北方数据,但如果这种处理是只读的,也就是开发环境用了,测试环境可以再用,那也无所谓

  条件3.即使数据被一个环境处理后,另一个不能用;但如果对数据的接触是人为触发的,也就是说开发环境被人触发数据改动时,不会干扰测试环境的测试,那也无所谓。

  具体的场景:

  1、纯读的网站不必隔离,它不满足条件2

  2、有写、但所有操作都由用户触发的网站也不必隔离,因为它不满足条件3

  3、以全局数据为目标的自启应用需要隔离,比如Quartz,Cron,MQ消费者等,因为它们不满足条件1。以MQ应用为例,如果外部发来的某个数据被测试环境消费过了,开发环境就无法再消费了,这时你应该为开发和测试环境各配一个MQ

  4、对自启应用,如果实在不想隔离,就要在代码里做一些env-specific的东西,使得不同环境不会访问到相同的数据,比如开发环境只能访问数据库里flag=Dev的记录。不过,这种作法对程序和数据的侵入都很大,不值得提倡。但这种做法可以应用到其他环境的隔离上,比如预发环境和正式环境,它们必须使用相同的数据库。

《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • steven_bian
    2012-7-01 21:15:40

    笔者从开发和测试是否互相干扰的角度来谈是不是应该隔离环境,但这个角度太小了。最重要的是隔离和不隔离环境对软件的质量的影响大小。个人强烈建议隔离。
    1、对于一个大的系统,开发的环境往往要比测试环境简单。想保证质量必须由测试构建满足现场需求或大于现场需求的场景。
    2、同样的环境构建方法不同,可能会产生不同的结果。测试要模拟现场构建方式来构建环境,保证发出去的版本现场能够按照指导手册搭建成功,这点开发考虑的会比较少。
    3、开发习惯在自己的环境上打补丁,增加定位信息等,这些往往会影响到正常版本的测试。如果测试测的是一个被开发打过补丁的版本,测试会失去了意义。现场发出去版本和家里的测试版本就会存在差异了。

    4、我的第四点才是笔者提到的影响效率的问题。

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号