了解最新技术文章
虚拟化容器在软件应用程序开发和部署中的使用在几乎所有垂直行业中都在增加。容器提供了虚拟化的优势,而不会耗尽计算资源。在测试过程中使用容器时,容器可能会有所帮助,但也可能成为障碍的滋生地。
让我们了解使用容器来测试软件和计算组件的优点和一些陷阱。
适用于 QA 和开发团队的现代测试用例管理软件
下载免费试用版
简单来说,容器就是一个轻量级的虚拟机(VM)。但是,虽然虚拟机是操作系统的完整独立副本,但容器仅包含需要隔离的资源,其余部分与完整操作系统共享。容器与计算机上运行的操作系统共享的资源包括内核以及许多二进制文件和库。共享不需要本地且可写的项目大大减少了每个容器的资源需求。
使用容器的一种方法是使用流行的容器平台,例如Docker或rkt(发音为“rocket”),根据计算机运行的操作系统启动容器。您可以同时运行多个容器。由于容器共享底层操作系统的许多部分,因此您几乎总是可以在计算机上运行比虚拟机更多的容器。
您不仅限于计算机运行的操作系统。您可以运行使用您计算机上未运行的多种不同操作系统之一的容器。每个容器都需要一个基本操作系统,因此您通常可以运行具有所需操作系统(例如特定 Linux 发行版)的完整副本的 VM,然后启动使用 Linux VM 作为基础的多个容器。与本机操作系统共享一样,容器共享基础虚拟机的许多资源。
容器占用空间小意味着您可以同时创建和启动多个映像。您还可以存储多个容器映像,而无需占用与虚拟机一样多的磁盘空间 - 大多数容器的大小为兆字节,而虚拟机的大小通常为千兆字节。更小的尺寸意味着您可以比传统虚拟机更轻松、更快速地创建、存储和传输容器。
容器可以轻松创建正在运行的操作系统、虚拟机或其他容器的映像。通常,您可以在一分钟内创建一个新容器。这种简单快速的创建意味着您可以拍摄系统快照,然后在另一台计算机上运行该容器。这就像复制一台计算机然后在其他地方运行它一样。
容器可以提供解决软件测试挑战的绝佳机会。在许多情况下,软件开发组织维护单独的开发、测试和生产服务器。该策略为每个功能提供了分离和自治,但它可能导致环境之间的差异越来越大。一种环境中的任何数据或配置更改都会增加其他环境之间的差距。除非您积极地将所有更改复制到其他环境,否则您的开发、测试和生产系统将变得越来越不同。
容器提供了创建运行环境的副本,然后在其他计算机上运行这些环境的能力。例如,您可以创建一个生产容器,然后在您自己的笔记本电脑上运行它。作为软件测试人员,它可以提供一种使用生产数据和配置来测试软件的方法。通过减少模拟测试环境与用户在生产中交互的环境之间的差异,您可以执行更真实的功能测试。
无论您是从当前运行的系统还是从精心配置的基础映像创建容器,您都可以在易于重置为已知状态的受控环境中运行测试。如果您想再次运行一套测试,甚至终止测试并重新开始,您不必从头开始重建容器及其配置;你只需扔掉一个并旋转另一个即可。您可以快速停止当前容器并从基础映像或正在运行的系统创建另一个容器。在很短的时间内,您就可以以全新的形象启动并运行。
创建和启动容器的简便性以及在其他计算机上运行容器的能力使得基于容器的测试比使用传统的单独计算机更加敏捷和响应更快。虽然有些人可能会认为使用虚拟机可以实现类似的结果,但它会带来更高的性能和存储成本。容器体积小、速度快,使各种镜像之间的切换变得快速、轻松。
一些开发组织在整个软件开发生命周期中使用容器。您可以开发应用程序组件以在专用容器中运行,而不仅仅是使用容器进行测试。应用程序组件容器只需要支持应用程序的特定子集即可提供少量服务。这些容器使得启动特定容器进行测试,然后部署完整应用程序的一部分变得更加容易。在这样的环境中,完整的应用程序是容器的集合,这些容器一起工作以提供一系列应用程序服务。
下一篇:安全的加密货币真的存在吗?