测试和生产环境的最佳实践

时间:2011-03-12 21:49:01

标签: production-environment test-environments

在我工作的公司,我们有两个环境:测试和生产。由于成本原因,我们目前没有开始新的环境。

以下是我们遵循的流程:业务部门发布功能请求,开发实现并在测试环境中部署。然后进行业务测试(UAT),如果没问题,该功能将包含在下一个生产部署中。

问题显示在测试数据库上。开发人员将测试环境视为他们的游乐场,有时他们将数据库保持在初始状态以进行测试。另一方面,商业人士认为测试数据库必须稳定,不应重置。我们希望解决此问题,并确定测试环境是否应属于开发团队或业务团队。 (开发人员不希望企业放弃测试环境,但业务团队正在为服务器付费。)

关于环境的最佳做法是什么?你能推荐一篇关于这个的文章吗?

5 个答案:

答案 0 :(得分:8)

在我们公司,还有两个数据库,一个测试和一个生产数据库。测试数据库主要用于开发人员的测试,但有时也用于业务测试。每天使用生产数据库的实际副本刷新此数据库。所以这个数据库既可以是游乐场,也可以是严肃的测试数据库。但第三个开发数据库是最佳选择。我们有一个,但此刻它已被打破。但是当你得到其中之一时,你应该确保它经常刷新。当开发人员将其用作游乐场时,它将偏离生产环境,并且其数据既旧又破坏。因此,开发人员将无法自己测试。因此,请确保定期刷新此数据库(可能每天更新,或至少每周一次)。

答案 1 :(得分:6)

我曾在许多公司工作,每个公司都有不同的环境,我最喜欢的环境有5个环境:

1)本地:基本上是你的机器。在此之前,您可以在请求同行进行审核之前对您的更改进行编码和测试。

2)开发:如果由于某种原因你无法在本地测试你的代码(主要是依赖性问题:"我的代码在我的机器中编译了neves,但它在Jenkins / Bamboo / Travis"中完美编译),然后您将更改推送到Git中的功能分支,并使Bamboo编译并将其部署到您可以测试的开发服务器(您仍然不确定它是否可行,因此到目前为止还没有同行评审。)

3)分期:您认为您的代码有效,并且您喜欢它的外观。您创建一个Pull请求,以便您的对等方在合并到主分支之前查看它。在这里,他们发表评论并解决可能出现的问题,因为您对自己所做的更改更加肯定,Bamboo会将其部署到Staging环境中,在此环境中更多"稳定"代码存在,更现实的数据存储在任何数据库中。部署后,另一位开发人员/测试人员可以检查您的更改是否真正有效并让您在分段环境中进行QA签名。"

4)稳定:好的,现在你最终确定你的更改工作,因为你部署到Staging并且没有任何损坏。您将分支合并到master和Bamboo compiles master并部署到Stable Environment中的另一组服务器(在完成部署到Production之前,没有其他人应该合并到master,以避免合并不相关的合并)。此环境应该是生产,数据,代码和服务器条件的副本。您可以在此处向经理,产品所有者或负责人员展示您的更改,以便在将其投入生产之前验证您的工作。你得到了最后的批准,一切都很好,你出汗了,你连续工作了30天才能完成这项改变,你的妻子离婚了,但你确信它完美无瑕。

5)生产:客户连接的地方使用公司服务,或者将软件的最终版本发送给客户。只需点击几下Bamboo,您就可以将其部署到生产服务器或编译最终版本。它是绿色的,一切似乎都没问题。你查看Splunk寻找错误,一切都很好,生活很美好,你在离开之前再喝一口咖啡,你开车回家,整个周末和你的狗一起睡觉。

这是一个美好的结局,因为有这么多"测试"环境确保质量,在每个人(不仅仅是你)完全确定更改正在发挥作用之前,不会有任何变化。

答案 2 :(得分:4)

如果可能,请为每个开发人员在本地计算机上提供自己的数据库。这样她就可以随心所欲地做任何事,而不会影响其他任何人。这应该会大大降低她玩测试数据库的愿望,为商业UAT提供更稳定的环境。

答案 3 :(得分:2)

我相信为了建立一个支持所有ALM / SDLC活动的环境战略,应该有4个要求:

1)开发环境:允许Dev使用新的代码/概念,通常使用存根和驱动程序进行一些基本的集成测试进行单元测试。这种环境应该有松散的变更控制程序,并且通常不会与生产任何接近相同的规模。这是开发团队可以根据需要构建和拆除设置的地方。

2)互操作环境:可以进一步测试系统集成并增加非功能测试的能力I.e可能是一个具有比Dev更大可扩展性的弹性环境。我会看到这种环境有更严格的变更控制和管理。测试将在此环境中执行集成和系统测试。

3)参考架构:这是一些人可能称之为预生产的,但在规模和弹性方面与生产基本相同。这将改变控制和管理程序,类似于产品。此产品将支持进一步的测试活动,特别是一旦产品向客户推出,将进行全面的性能测试,故障转移以及操作故障分类和维护活动。

4)生产:此环境将支持实时客户,因此在这种情况下,测试活动将受到限制。这将得到全面管理,并具有严格的变更管理和配置管理流程。

希望这有帮助

答案 4 :(得分:0)

您可以为每个开发人员提供最新的数据库 docker 映像,以便在他们的本地环境中播放。如果数据损坏,他们可以重新创建容器。