首页 > 解决方案 > K6 - docker 容器中的并行测试

问题描述

我有一个关于 K6 并行测试的概念性问题。我想并行运行多个测试脚本。如果我选择使用如下所示的 docker compose 文件运行它们,我们可以说它是真正意义上的并行吗?据我了解,docker compose 中的每个 k6 容器都是一个带有自己处理器的独立单元?那是对的吗?那么这可以称为并行测试吗?

version: '3'
services:
  k6_test:
    image: loadimpact/k6
    container_name: test_k6
    volumes:
       - ./:/specs
    command: run /tests/test_spec.js
    ports:
       - "6565:6565"

  k6_test2:
    image: loadimpact/k6
    container_name: test2_k6
    volumes:
       - ./:/specs
    command: run /tests/test2_spec.js
    ports:
       - "6566:6566"

标签: dockerparallel-processingk6

解决方案


您将拥有两个独立的容器,并且测试将能够并行运行。他们将使用正常的 Linux 内核调度机制,不一定有“自己的处理器”;即使您只有一个物理内核,此设置也可以正常工作,并且您可以并行执行。

话虽如此,一种更典型的称为“并行测试”的方法是拥有一个能够自行并行运行多个测试的测试运行器。例如,许多单元测试系统都有一个“并行测试”选项,可以在多个线程上运行测试。由于 k6 更像是一个负载测试工具,它能够启动多个并发 HTTP 请求,而无需您展示的那种手动设置;k6 文档中的负载测试压力测试描述了一些典型设置。


推荐阅读