开发环境(DEV):开发环境是程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告。所有的开发和配置在这个环境里进行。一般情况下,只有这个环境可以改配置和进行开发,并且一般不在这个环境下创建数据。(开发环境就是每个开发人员电脑上的开发环境,只有开发人员可以配置和开发,写数据测试放在测试环境)
测试环境(UAT):提供测试人员使用,代码分支除了可以使用master分支外,其他的分支也是可以的。一般是克隆一份生产环境的配置,一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。新开发和配置通过系统传输到测试环境,进行功能测试,可以创建数据。(开发人员开发完上传到 SVN,测试人员下载下来测试。如果测试人员不懂 IDE,就由开发人员下载好,直接通过IP地址访问来测试的。
生产环境(PROD):所有服务器上的代码都已经是最新的了。是指正式提供对外服务的,一般会关掉错误报告,打开错误日志。可以理解为包含所有的功能的环境,任何项目所使用的环境都以这个为基础,然后根据客户的个性化需求来做调整或者修改。正式使用的系统环境。 一般情况下,一个环境对应一个服务器,也有一些公司把开发、测试等环境放到一个服务器的。(从SVN上通过 FTP 下载下来,然后在服务器上的 tomcat 部署、发布,服务器是 linux 的)
回归环境
如果同时有好几个人参与同一个项目,那么基于master分支可能拉出非常多的开发分支,那么当这些分支合并到master上后,master上的功能可能受到影响,这种情况下,会使用一个回归环境,部署master分支的代码。
预发布环境
这个环境中,一般会连接生产环境的数据库,使用生产环境的数据来进行测试。从生产环境不定期同步,保持和生产环境的设置、数据一致性,也是用于测试,它和测试环境最大的区别就是它和生产系统的同步性最高,几乎一样,有些测试,比如需要大数据量的,用这个环境测试看程序性能比用测试环境(一般情况下数据较少)会更准确。(不是必须的,有的公司没有)
灰度发布版本
预发布环境过后,就是灰度发布了。由于一个项目,一般会部署到多台机器,所以灰度1台至3台,看看新功能是否ok,如果失败则只需要回滚几台,比较方便。注意,由于是灰度发布几种几台,所以一般会使用跳板机,然后进行域名绑定,这样才可以保证只访问有最新代码的服务器。
三个环境也可以说是系统开发的三个阶段:开发->测试->上线,其中生产环境也就是通常说的真实环境.
在企业级软件的测试过程中,经常会划分为三个阶段——单元测试,SIT和UAT,如果开发人员足够,通常还会在SIT之前引入代码审查机制(Code Review)来保证软件符合客户需求且流程正确。下面简单介绍一下SIT和UAT的基本情况。
SIT (System Integration Testing) 系统集成测试,也叫做集成测试,是软件测试的一个术语,在其中单独的软件模块被合并和作为一个组测试。它在单元测试以后和在系统测试之前。集成测试在已经被单元测试检验后进行作为它的输入模式,组织它们在更大的集合,和递送,作为它的输出,集成系统为系统测试做准备。集成测试的目的是校验功能、性能和可靠性要求,配置在主设计项目中。
UAT (User Acceptance Testing)用户验收测试,通常是由最终软件的用户(通常这些用户不了解软件的具体逻辑,而对业务逻辑却相当熟悉)进行的测试,因此是面向最终用户的测试,结束之后通常就可以发布生产环境了。