负载测试对于测量网站、Web 应用程序和 API 性能在正常、沉重甚至突发流量峰值期间非常重要。 本文将帮助了解使用 Docker 容器与持续集成 (CI) 工具的负载测试。 Docker 加载测试应用程序的方法允许在用户之间共享测试,并使用 Docker 容器轻松复制测试环境。 我们将简要说明 Docker 是什么,并使用 Docker 容器和工具通过 CI 加载测试应用程序。
什么是码头?
码头工人! 您可能在您的团队中听说过这个迷人的词,或者在技术博客中读过,一开始听起来也可能令人生畏。 Docker 是一个容器化平台,它将应用 源代码 和所有依赖项包打包在一起,形成一种称为 Docker 容器的形式。 它确保应用程序在任何环境中运行,而不用考虑操作系统或系统配置的开销。 这不酷吗?
此外,Docker是一种流行的工具,它使得使用容器构建,部署和运行应用程序 变得非常容易。 因此,我们的应用程序可以运行在任何地方具有相同的行为。 重要的是,Docker 是开源的。
什么是码头容器?
Docker 容器是一个轻量级的独立、可执行的软件包,它包含应用程序所需的一切:代码库、系统库、系统工具和设置。 容器将代码及其依赖项包装在一起,可帮助应用程序从一个环境快速可靠地运行到另一个环境。
使用 Docker,开发人员可以专注于编写代码,而不必担心应用程序在哪个系统运行,这使得应用程序具有可移植性。 应用程序在本地计算机上运行的方式与生产相同或相同。
码头工人的主要特点
- 易于扩展。 由于容器重量轻,码头集装箱可以在几秒钟内启动,并可以轻松扩展。
- 提高生产力。 它简化了应用程序开发、环境设置的技术开销。 此外,它还有助于在孤立的环境中执行应用程序,并减少资源的使用。
- 应用程序隔离。 每个应用程序彼此独立运行,并独立运行应用程序。
- 降低基础设施和维护成本。 它有助于支持将现有平台轻松移动到 Docker,从而降低维护成本,从而以自动化方式运行。
- 沼泽。 Swarm 是 Docker 容器的群集和调度工具。 它允许用户管理跨多个主机部署的多个容器。
- 路由网格。 它有助于路由和平衡到容器的 流量 。
码头工人的好处
- Docker 支持应用程序可移植性。
- Docker 可实现更快的开发发布周期。
- 它闪耀着 微服务架构。
- Docker 为应用程序提供了隔离环境。
- Docker 支持更快、轻松地对应用程序进行水平缩放。
- 它能够有效地利用资源。
码头内 CI 工具
Docker 的最大好处是,我们并不担心依赖性冲突。 例如,如果我们想用 Golang 1.11 构建一个项目,用 Golang 1.12 版本构建一个项目,Docker 可以帮助隔离它并为两者创建映像,甚至可以在不同的容器上并行运行两者而不会发生冲突,这在 服务器。 使用不同版本烘焙的映像可以保存到注册表中,并可以用作 Jenkins 等持续集成工具的一部分。
Jenkins 在这种情况下提供支持,它选择为性能测试或集成测试构建的可用 Docker 映像,并保存从零开始烹饪 Docker 映像的开销。 Docker 层缓存在这里节省了大量时间。 作为 CI 管道的一部分,我们需要为性能测试创建 Docker 映像,并且可以使用 CI 运行此映像以执行应用程序的性能测试。 我们甚至可以自动执行此步骤,通过添加或更改每个功能,我们都可以运行性能测试,以基准测试并保护 由于最近的更改而导致的性能影响。
使用 Docker 进行性能测试的限制
虽然 Docker 有许多优点,但它在执行性能测试时存在许多限制:
- 当我们在同一台计算机上使用多个 Docker 容器运行重负载测试模拟时,它可能会消耗运行中的服务器的大量 CPU,这可能会影响我们的测试结果。
- 通过 Docker 的性能测试报告缺少足够的应用程序详细信息。
- 我们可能需要微调运行性能测试的主机操作系统和容器。
- 由于 Docker 容器是一次性的,因此可能导致报告丢失。
为了使我们摆脱所有这些限制,我们可以使用像 LoadView 这样的解决方案,它可以轻松地与 Jenkins 集成,以帮助自动化性能测试过程。
LoadView 负载测试与 Jenkins 集成
每当我们测试任何应用程序时,我们都会测试它是否在功能上如预期的那样工作。 如果有效,我们标记应用程序的功能正常工作。 但在现实世界中,数百个甚至数千个用户使用相同的应用程序,这可能会带来自身的并发症。 关键是要知道,您的应用程序可以经得起预期的流量需求,特别是如果它是创造收入的关键。
显然,并非所有应用程序都与产生收入有关,但无论如何, 用户体验 仍然是将访问者从在线门吸引到在线结账柜台的重要因素。 如果在这个过程中的任何时候,他们的经验是缓慢的,滞后的,或只是简单的混乱,他们将立即失去兴趣。 他们不在乎他们的体验不好的原因是因为您的网站或应用程序同时有成千上万的 其他用户 。 据他们所知,他们认为他们是唯一使用您的应用程序的人。 很难相信,但这是真的。 就像现实世界一样,他们有时必须像其他人一样排队等候。 只要确保他们的等待是无缝的,愉快的,而不是太长。
我们需要验证我们的应用程序是否可以处理此类流量。 因此,随着每次更改或新功能开发,我们都可以通过我们的 LoadView 插件对应用程序运行负载或压力测试,该插件可以与 Jenkins 集成。
现在,我们将看看 通过 Jenkins 与 LoadView 的集成运行负载测试所涉及的步骤:
- 在开始使用 LoadView 负载测试方案在 Jenkins 中测试您的生成之前,我们需要在 LoadView 上设置一个测试方案,其中我们可以添加需要压力测试的 API 列表。
- 要开始与 Jenkins 集成,我们需要一个 LoadView 唯一标识符作为 LoadView 安全令牌。
- 在 LoadView 中,在帐户集成添加集成负载测试 Web > > API 下 > 创建集成 UID。 复制此集成 UID。
- 要设置压力测试,我们需要测试方案 ID。 方案 ID 可以在方案设置页面上找到,如下所示。
在詹金斯配置 LoadView 插件
- 登录您的 Jenkins 帐户。
- 在 Jenkins 中,转到凭据添加 > 凭据 > LoadView 安全令牌 (UID)。 配置和验证凭据:
- 种类: LoadView 安全令牌 (UID)。
- 范围:设置为 全局。
- ID:保留默认值或指定唯一 ID。
- 描述: 输入唯一的描述,以设置它与其他测试分开。
- UID:从您的 LoadView 帐户输入 UID。 添加后, 选择”验证 UID” 以确保 Jenkins 可访问 LoadView API。
3. 接下来,选择一个作业,然后单击” 配置”
- 转到生成Build > 生成后操作 > 添加生成后操作 > LoadView-Run 负载测试方案。 为生成指定 LoadView 压力测试设置:
- 凭据:使用说明选择 API 密钥。
- 方案 ID:粘贴要在生成中使用的测试方案 ID。 从 LoadView 中的方案页复制 ID。
- 错误阈值:您可以在这里设置特定方案可接受的错误阈值。 如果百分比超过该阈值,它将标记为 Jenkins 中的故障。
- 平均时间: 指定测试期间的平均 响应时间限制。 与错误阈值一样,如果超出限制,则在 Jenkins 中将其记录为失败。
- 单击”保存”。
查看测试结果:
测试运行时,状态实时显示在 Jenkins 控制台输出 中。
总结: 码头应用负载测试
虽然 Docker 有许多优点,但执行负载测试时可能会有一些限制,例如,在同一台计算机上使用多个 Docker 容器时,服务器上消耗大量 CPU,这会极大地影响测试结果。 借助 LoadView这样的解决方案,我们可以轻松地与 Jenkins 等 CI 工具集成,从而创建和管理负载测试,同时使用来自完全托管的云的数千个并发连接。
本文简要介绍了如何使用 Docker 和 Jenkins 执行 基于云的负载测试。 与我们的性能工程师一起设置 演示 ,以了解有关设置测试场景和用 LoadView 配置负载测试的更多信息。
立即试用 LoadView 平台并获得多达 5 个免费测试 以开始使用。