14

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

这是我们遵循的过程:业务提出功能请求,开发使其发生并将其部署到测试环境中。然后业务测试它(UAT),如果没问题,该功能将包含在下一个生产部署中。

问题是测试数据库的最佳实践。开发人员将测试环境视为他们的游乐场,有时他们将数据库重置为初始状态以进行测试。另一方面,业务人员认为测试数据库必须是稳定的,不应该重置。我们想解决这个问题,并决定测试环境应该属于开发团队还是业务团队。(开发人员不希望企业将自己的鼻子放在测试环境中,但业务团队正在为服务器付费。)

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

4

5 回答 5

15

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

1)本地:基本上是你的机器。在这里,您甚至可以在要求同行评审之前对您的更改进行编码和测试。

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

3) 暂存:您认为您的代码有效并且您喜欢它的外观。您创建一个拉取请求是为了让您的同行在它被合并到主分支之前查看它。他们在这里发表评论并解决可能的问题,因为您对所做的更改更加确定 Bamboo 将其部署到更“稳定”的代码所在的 Staging 环境,并且更真实的数据存储在任何数据库中。部署后,另一位开发人员/测试人员可以检查您的更改是否真正有效,并使您成为“Staging Env 中的 QA Sign off”。

4) 稳定:好的,现在您完全确定您的更改在部署到 Staging 后可以正常工作,并且没有任何损坏。您将分支合并到 master,Bamboo 编译 master 并部署到稳定环境中的另一组服务器(在您完成部署到生产之前,没有其他人应该合并到 master,以避免合并不相关的合并)。此环境应该是生产、数据、代码和服务器条件的副本。在这里,您可以向经理、产品负责人或负责人展示您所做的更改,以在将其发送到生产之前验证您的工作。你得到了最后的批准,一切都很好,你满头大汗,你已经连续工作了 30 天来完成这个改变,你的妻子和你离婚了,但你非常有信心它会完美地工作。

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

这是一个圆满的结局,因为拥有如此多的“测试”环境可确保质量,在每个人(不仅仅是您)完全确定更改正在发挥作用之前,不会对生产进行任何更改。

于 2017-07-19T16:53:09.903 回答
12

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

于 2011-03-12T22:03:52.920 回答
7

如果可能,请在本地计算机上为每个开发人员提供自己的数据库。这样他们就可以在不影响其他人的情况下为所欲为。这应该会显着降低使用测试数据库的欲望,为业务 UAT 提供更稳定的环境。

于 2011-11-01T22:03:57.317 回答
3

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

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

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

3) 参考架构:这可能是一些人所说的 pre-prod,但在规模和弹性方面与生产基本相同。这将具有类似于 prod 的变更控制和管理程序。一旦产品发布给客户,该环境将支持进一步的测试活动,尤其是全面性能测试、故障转移以及操作故障分类和维护活动。

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

希望这可以帮助

于 2013-04-12T21:41:33.227 回答
0

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

于 2021-05-05T10:06:27.753 回答