📜  k6 控制实时 k6 测试 - Javascript (1)

📅  最后修改于: 2023-12-03 15:17:07.439000             🧑  作者: Mango

K6 控制实时 K6 测试 - JavaScript

K6 是一个现代的开源负载测试工具,它使用类似 JavaScript 的语法编写测试脚本。它支持 HTTP、WebSocket、gRPC、TCP 等协议的测试,并且具有实时性和高并发性。在这篇文章中,我们将探讨如何使用 K6 来控制实时测试。

引入 K6

首先,我们需要在项目中引入 K6:

import http from 'k6/http';
import { check } from 'k6';

http 模块用于发起 http 请求,check 是 K6 提供的一个有用的功能,用于在测试过程中检查断言。

编写测试脚本

接下来,我们编写一个测试脚本 realtime.js,该脚本将不断地发起 http 请求,直到得出测试结果为止。具体步骤如下:

  1. 设置测试参数
export let options = {
  vus: 100,
  duration: '30s',
};

该代码片段中,我们设置了 100 个用户同时进行测试,并且测试时长为 30 秒。

  1. 编写测试逻辑
export default function () {
  let res = http.get('http://test.com/api');
  check(res, {
    'status is 200': (r) => r.status === 200,
  });
}

该代码片段中,我们在每个用户都会执行的 default 函数中发起了一个 http 请求,请求 http://test.com/api 接口。接着,我们使用 check 检查请求状态是否为 200。

  1. 运行测试
k6 run realtime.js

这个命令将运行 realtime.js 测试脚本。在执行过程中,我们可以看到 K6 实时输出的测试结果:

running (0s), 00/100 VUs, 0 complete and 0 interrupted iterations
running (1s), 75/100 VUs, 3008 complete and 0 interrupted iterations
running (2s), 100/100 VUs, 6021 complete and 0 interrupted iterations

...

completed ✓
  duration: 30s
  iterations: 9296
  vus: 100
  start_time: 2021-10-19T06:02:42Z
  end_time: 2021-10-19T06:03:12Z
  data_received: 4.1MB
  data_sent: 326kB
  http_reqs: 9296
  http_req_duration_avg: 371.25ms
  http_req_duration_max: 6.40s
  http_req_duration_min: 5.51ms
  http_req_duration_p50: 226.7ms
  http_req_duration_p90: 692.97ms
  http_req_duration_p95: 1.36s
  http_req_duration_p99: 3.33s
  http_req_failed: 0
  http_req_loading_time_avg: 348.35ms
  http_req_loading_time_max: 2.79s
  http_req_loading_time_min: 146.94ms
  http_req_loading_time_p50: 237.79ms
  http_req_loading_time_p90: 588.34ms
  http_req_loading_time_p95: 1.03s
  http_req_loading_time_p99: 2.11s
  http_req_sending_time_avg: 4.49ms
  http_req_sending_time_max: 259.46ms
  http_req_sending_time_min: 0.42ms
  http_req_sending_time_p50: 1.23ms
  http_req_sending_time_p90: 5.58ms
  http_req_sending_time_p95: 10.83ms
  http_req_sending_time_p99: 61.36ms
  http_req_tls_handshaking_time_avg: 0s
  http_req_tls_handshaking_time_max: 0s
  http_req_tls_handshaking_time_min: 0s
  http_req_tls_handshaking_time_p50: 0s
  http_req_tls_handshaking_time_p90: 0s
  http_req_tls_handshaking_time_p95: 0s
  http_req_tls_handshaking_time_p99: 0s
  iterations_per_second: 309.87
  vus_max: 100
总结

在本文中,我们介绍了如何使用 K6 来控制实时测试。首先,我们引入了 K6,然后编写了一个测试脚本,最后使用 k6 run 命令运行测试脚本。如果你希望了解更多关于 K6 的信息,可以访问官方网站 https://k6.io/