我们应该如何在Docker容器中测试我们的应用程序?

时间:2018-05-23 14:01:35

标签: automated-tests

我们在Docker容器中有一个Java应用程序,它有一个Docker Db2数据库&side-car'。在DevOps管道(Jenkins)中,我们运行单元测试,并在组件之间进行集成测试。运行SonarQube,如果一切顺利,我们将转移到Staging环境。在自动化测试步骤中,我们使用最新的代码库构建应用程序容器,然后我们继续使用Cucumber框架运行自动验收测试。

问题是关于使用数据库进行测试:我们应该在新的/隔离的容器中启动db2,还是使用常见的'测试团队在该env中用于手动测试的DB2容器?需要最佳实践,经过验证的方法和建议。

1 个答案:

答案 0 :(得分:0)

对于部署后测试(API测试,端到端测试),我会尽量避免在其他环境中使用相同的数据库,并为这些测试设置专用数据库。

原因是:

  • 对于API测试,端到端测试,我想控制数据库中可用的数据。如果与其他环境共享数据库,测试可能会因为奇怪的原因而失败(例如,有人意外修改了测试期望处于某种状态的记录)。
  • 出于同样的原因,我不希望API测试,端到端测试也影响其他人测试。如果某人正在进行测试并意识到数据被部署后测试消灭,那将会非常烦人。

通常在CI中,我们有步骤:

  • clear test db
  • 运行迁移
  • 种子基本数据
  • 部署服务器
  • 运行部署后测试