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

Sad*_*ran 11 production-environment test-environments

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

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

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

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

Gol*_*rol 9

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

  • **开发数据库**."我们有一个,但现在已经破了."_**我生命中的故事**_ (6认同)

hmo*_*ica 9

我曾经在很多公司工作,每个公司都有不同的环境,我最喜欢的环境有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是否正在寻找错误,一切都很好,生活是美好的,你在离开之前再喝一口咖啡,你开车回家,整个周末和你的狗一起睡觉.

这是一个圆满的结局,因为有这么多"测试"环境可以确保质量,直到每个人(不仅仅是你)完全确定更改正在发挥作用之前,没有任何变化.


jru*_*ann 6

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