使用Docker容器而不是虚拟机进行测试

时间:2019-12-03 10:12:01

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

我对使用docker进行测试有疑问。

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

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

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

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

根据我的理解,主要区别在于容器在主机操作系统上运行,而虚拟机在其自己的操作系统实例上运行。因此,从我的角度来看,差异还不足以改变我们的测试结果吗?

设置

我们的容器设置与虚拟机测试环境中的设置完全相同

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

这一切都取决于。

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

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

相关问题