一文带大家上手jmeter最大的竞品压测工具 Grafana k6

什么是k6?

k6是一款开源负载测试工具,由Grafana Labs开发维护,专注于现代云环境和微服务架构的高并发压测。它采用Go语言编写,使用JavaScript(ES6)作为脚本语言。还提到它特别适合CI/CD集成和自动化性能测试。

k6 凭借其 ​​Go 语言高性能内核​​、​​JavaScript 脚本灵活性​​、​​云原生深度集成​​三大核心技术,重新定义了负载测试的开发者体验。尤其适合追求高效、可编程性及 CI/CD 自动化的团队,在 API 和微服务架构的性能验证场景中具有显著优势

安装运行k6

下载地址

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

找到自己需要的版本进行下载,本文将以windows版本为例进行讲解。

安装

下载成功后,默认安装就好,然后把k6.exe添加到系统的环境变量中,在cmd窗口中输入k6,输出如下:

新建脚本 k6_demo1.js

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

export const options = {
  vus: 2,              // 模拟2个虚拟用户
  duration: '3s',      // 测试持续3秒
  http: { timeout: '30s' },  // 设置HTTP超时为30秒
};

export default function () {
  const res = http.get('https://www.baidu.com');
  console.log(`状态码: ${res.status}`);  // 打印响应状态
  sleep(1);  // 模拟用户等待1秒
}

运行

执行如下命令,即可执行压力测试

k6 run C:\Users\Administrator\Desktop\k6_demo1.js

测试结果查询

命令行实时结果查看

  TOTAL RESULTS

    HTTP
    http_req_duration.......................................................: avg=32.78ms min=25.31ms med=28.05ms max=57.24ms p(90)=43.9ms p(95)=50.57ms
      { expected_response:true }............................................: avg=32.78ms min=25.31ms med=28.05ms max=57.24ms p(90)=43.9ms p(95)=50.57ms
    http_req_failed.........................................................: 0.00%  0 out of 6
    http_reqs...............................................................: 6      1.828032/s

    EXECUTION
    iteration_duration......................................................: avg=1.08s   min=1.02s   med=1.03s   max=1.22s   p(90)=1.2s   p(95)=1.21s
    iterations..............................................................: 6      1.828032/s
    vus.....................................................................: 2      min=2      max=2
    vus_max.................................................................: 2      min=2      max=2

    NETWORK
    data_received...........................................................: 194 kB 59 kB/s
    data_sent...............................................................: 1.4 kB 421 B/s
 

名称

描述

vus

当前的虚拟用户数

vus_max

虚拟用户的最大数量(已预先分配VU资源,以确保在扩大负载级别时性能不会受到影响)

iterations

测试中的VU执行JS脚本(default函数)的总次数。

iteration_duration

完成默认/主函数的完整迭代所花费的时间,可以看到平均消耗时间,最大最小,以及百分之90请求所用时间等,这点与jmeter相似。

dropped_iterations

在k6 v0.27.0中引入,由于缺少VU(对于到达率执行程序)或缺少时间(由于基于迭代的执行程序中的maxDuration过期)而无法启动的迭代次数。

data_received

接收到的数据量

data_sent

发送的数据量

checks

断言成功率

云端可视化报告查看(需注册,免费版有并发限制)

  1. 注册k6 Cloud账号
  2. 获取API Token并登录:

    k6 login cloud --token <YOUR_API_TOKEN>

  3. 运行测试并上传结果:

    k6 run --out cloud hello.js

  4. 浏览器访问控制台输出的URL查看实时图表(含响应时间分布、吞吐量曲线等)

备注:由于没有使用k6云端相关功能,这里就进行忽略了,这里把获取api token的页面发送给大家

本地HTML报告查看

添加如下脚本,可以生成美观的html报告

import { htmlReport } from "https://raw.githubusercontent.com/benc-uk/k6-reporter/main/dist/bundle.js";
export function handleSummary(data) {
  return { "d:/summary.html": htmlReport(data) };
}

报告展示效果如下:

三种类型报告对比

报告类型​​优势​​适用场景​
命令行输出即时查看、无需配置快速调试/简单验证
云端报告(k6 Cloud)多维度图表、历史对比、团队协作正式测试/长期监控
本地HTML报告离线可用、自定义样式内网环境/CI集成

k6使用流程说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试开发Kevin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值