开源负载测试神器K6

简介:K6是一个强大的开源负载和性能测试工具,用于测试软件系统的性能和可靠性。K6的使用主要是编写测试脚本并运行,这些脚本主要用JavaScript编写,可以使用HTTP,WebSocket等多种协议进行测试。并且易于安装和运行,而且功能丰富,能够进行复杂的负载测试,测试脚本使用JavaScript编写,可以编写复杂的测试逻辑,模拟真实的用户行为,支持查看和修改源代码。

对比:

JMeter: K6更轻量,更易于自动化。而JMeter虽然功能强大,但是界面复杂,学习曲线较陡峭。
Locust: K6支持更多的协议,如gRPC和WebSocket。
Gatling: K6的测试脚本使用JavaScript编写,比Gatling的Scala更通用,更易学。

历史攻略:

容器化CICD+Locust性能压测

locust2.0+教程:011 - Locust Test Report

locust2.0+教程:012 - 压测websocket

locust2.0+教程:013 - 使用FastHttpUser提升压力机性能

locust2.0+教程:014 - 压测XML-RPC

locust2.0+教程:015 - 压测GRPC

sanic:启动和访问

github项目安装地址:

https://github.com/grafana/k6/releases

安装:

# Debian的Linux系统
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61
echo "deb https://dl.bintray.com/loadimpact/deb stable main" | sudo tee -a /etc/apt/sources.list
sudo apt-get update
sudo apt-get install k6

# Mac
brew install k6

# Windows的 MSI 安装程序
https://github.com/grafana/k6/releases

案例源码sc.js

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

export default function () {
  http.get('http://test.k6.io');
  sleep(1);
}

运行:

# case-1
k6 run sc.js

# case-2
k6 run sc.js -u 100 -d 60s

参数详解:

-u, --vus:同时运行的虚拟用户(VUs)的数量。例如,k6 run --vus 10 script.js将会在执行script.js时使用10个VUs。

-d, --duration:测试的持续时间。例如,k6 run --duration 60s script.js将会运行测试60秒。

-s, --stages:阶段性的负载配置。这允许你在一个测试中改变虚拟用户的数量。例如,k6 run --stages 30s:20,1m:15,30s:10 script.js 将会在前30秒中使用20个VUs,在接下来的1分钟中使用15个VUs,然后在最后的30秒中使用10个VUs。

-i, --iterations:测试执行的总迭代次数。例如,k6 run --iterations 100 script.js将会运行测试直到达到100次迭代。

--paused:开始一个已经暂停的测试。这个选项允许你从K6的HTTP API开始测试。

--no-teardown:禁用teardown阶段。

--no-setup:禁用setup阶段。

-e, --env:设置环境变量。例如,k6 run -e MYVAR=myvalue script.js将会设置一个名为MYVAR的环境变量。

--http-debug:打印调试信息。例如,k6 run --http-debug=full script.js将会打印出所有HTTP请求和响应。

运行结果1:

开源负载测试神器K6_第1张图片

运行结果2:
开源负载测试神器K6_第2张图片

被测服务运行情况:

开源负载测试神器K6_第3张图片

注意事项:

1、K6脚本的执行环境并不是完整的浏览器或Node.js环境,因此不能使用一些特定于这些环境的API。
2、应该尽可能地模拟真实的用户行为。这可能需要生成不同的用户凭证,使用适当的间隔和延迟等。
3、注意观察和解析测试结果。K6生成的详细报告可以帮助理解系统在不同负载下的行为。

你可能感兴趣的:(开源,性能测试,k6)