【问题标题】:Testing with docker containers instead of virtual machines使用 docker 容器而不是虚拟机进行测试
【发布时间】:2020-03-27 23:53:14
【问题描述】:

我有一个关于使用 docker 进行测试的问题。

我们的主要解决方案是客户端/服务器解决方案。但是,我们的 Web 应用程序也使用相同的服务器。我们知道我们的 Web 应用程序、服务器和 SQL 数据库可以像今天一样在 docker 容器中运行。

我们所有的客户目前都在物理服务器或虚拟机上运行我们的 Web 应用程序和服务器。

根据我从 docker 网站、docker 课程和以下stackoverflow post 获得的知识,虚拟机和 Docker 容器之间存在差异。

但是与虚拟机相比,是否存在如此大的差异,以至于我们的自动化测试会产生不同的输出或无法捕获 docker 容器中的错误?

据我了解,主要区别在于容器在主机操作系统上运行,而虚拟机在其自己的操作系统实例上运行。那么,在我看来,差异还不足以改变我们测试的输出?

设置

我们的容器设置将与我们的 VM 测试环境完全相同

  • MS-SQL Server 容器
  • 服务器容器(Windows 容器)
  • IIS 容器

【问题讨论】:

    标签: docker testing automated-tests containers virtual-machine


    【解决方案1】:

    VM 和容器之间的差异通常从管理的角度是可见的,例如不同的资源需求或安全问题。从客户的角度来看,应该没有区别。如果应用程序使用定义良好的网络接口,例如Java 有 JDBC 用于与数据库通信,从 VM 到容器的更改应该是透明的,就像从一个 VM 切换到另一个 VM。

    如果自动化测试在 VM 和容器上的结果不同,则意味着应用程序依赖于 VM 中的特定内容,或者测试套件存在问题。应该以一种或另一种方式对其进行调试。

    【讨论】:

      【解决方案2】:

      这一切都取决于。

      第一个问题是配置问题——您需要创建 Docker 映像、安装依赖项、管理配置设置等。如果配置过程与您配置虚拟机的方式不同,则可能在您进行测试时Docker,你不会得到与虚拟机(或者实际上是目标生产环境)相同的结果。这对于负载和性能测试等非功能测试尤其重要。它还可能影响功能测试,例如配置数据库代码页等时。

      第二个问题是您的应用程序是否依赖于任何操作系统功能,或者显示出极端的资源需求。例如,如果您的数据库绝对必须有一定数量的内存,或者您的应用程序服务器需要针对网络超时进行自定义配置,那么这可能很难反映在 Docker 容器上。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-20
        • 1970-01-01
        • 2018-04-22
        • 1970-01-01
        • 1970-01-01
        • 2010-10-05
        • 1970-01-01
        • 2018-05-15
        相关资源
        最近更新 更多