作为Azure DevOps CD / CI一部分的自动化集成测试

时间:2020-06-03 17:56:23

标签: java azure azure-devops azure-pipelines

基本的Java CRUD应用程序。没什么疯狂的。我们将要相应地测试数据层(因此我们对数据库有依赖性)。

该项目基于Maven,因此管道将运行构建/运行单元测试,然后相应地删除工件。

我的问题是:使用Azure Pipelines处理此问题的最佳实践是什么?我们是否应该运行一个内存数据库,一旦测试完成就可以创建和销毁该数据库(因此基本上保持管道不变,并将其作为已经运行的Maven测试的一部分来处理)?这将使我们能够控制开始的数据并为所有测试创建适当的基准。

在每次推送到我们每次重新构建的docker容器之后,在发布管道中执行此操作更好吗?

什么是Azure DevOps(通常甚至是DevOps)的“最佳实践”?

2 个答案:

答案 0 :(得分:0)

我认为您应该运行Mock对象才能运行测试,而不要使用真实的数据库。您还可以将测试封装在事务中,并强制测试失败并在运行测试后回滚数据库。

答案 1 :(得分:0)

由于测试不依赖于物理部署到环境,因此我将把测试尽可能在您的管道中进行到CI阶段(Azure DevOps构建阶段),因此满足DevOps原则以“快速失败” “。

这还有一个优势,即在拉取请求检查期间也可以轻松运行测试。

在针对实际数据库或内存的集成测试中需要进行权衡。真实的数据库可能会给您带来更多的信心,但是内存数据库可能会导致更可靠的测试套件。

针对已部署的应用程序运行的功能/接受/黑盒测试当然应该放在管道的发布阶段。

祝你好运!希望这会有所帮助。