发布时间:2026/8/19 10:57:16
“像写单元测试一样写性能测试”——k6 完整入门指南 一、k6 是什么k6 使用 Go 语言构建但通过内嵌的 JavaScript 引擎SobekGoja 的分支暴露 JS 脚本 API兼具 Go 的高性能与 JavaScript 的易用性。它的核心特性包括可配置的负载生成、测试即代码、全功能脚本 API、内嵌 JS 引擎、多协议支持、庞大的扩展生态、灵活的指标存储与可视化以及与 Grafana Cloud 的原生集成。AGENTS.md 中对项目的描述也印证了这一点k6 是用 Go 构建的现代负载测试工具允许开发者编写 JavaScript 测试脚本模拟用户行为并测量系统性能支持可配置负载生成、多协议HTTP、WebSocket、gRPC、浏览器以及灵活的指标输出。二、 安装 k6k6 提供多种分发渠道二进制/包管理器README 的 https://grafana.com/docs/k6/latest/ 链接是官方安装文档入口涵盖各平台安装方式。Docker 镜像k6 官方维护了两种镜像 —— 精简版 release 和内置 Chromium 的with-browser可以直接docker run grafana/k6 run script.js使用。其Dockerfile 基于 Debian 镜像构建通过entrypoint.sh脚本启动。Linux 包k6 也支持通过 APT/YUM 仓库安装 .deb/.rpm 包相关打包与发布脚本可参考packaging/目录。三、快速上手第一个 k6 脚本一个最简单的 k6 测试脚本长这样importhttpfromk6/http;import{check,sleep}fromk6;exportconstoptions{thresholds:{http_req_duration:[p(99) 3000],},stages:[{duration:30s,target:15},{duration:1m,target:15},{duration:20s,target:0},],};exportdefaultfunction(){letreshttp.get(https://quickpizza.grafana.com);check(res,{status was 200:(r)r.status200});sleep(1);}这段脚本来自官方 README 示例包含了 k6 最核心的三个概念options配置负载模型stages定义虚拟用户数随时间的变化和通过/失败判定标准thresholds。default函数每个虚拟用户VU每次迭代都会执行的入口函数。check()对响应结果做断言不会中断测试执行但会记录成功/失败指标。写好脚本后直接在命令行运行k6 run script.js即可支持本地 CLI、CI 流水线甚至 Kubernetes 集群上执行。如果不想写代码Grafana 还提供了桌面应用 k6 Studio可以直接生成 k6 脚本。四、协议支持不仅仅是 HTTPk6 支持多种协议模块可通过import语句直接调用协议说明HTTP/1.1、HTTP/2全功能 HTTP 客户端支持批量请求、认证、压缩等WebSocket基于事件的 WebSocket 连接gRPC支持反射的 gRPC 客户端浏览器Browser基于 Chrome DevTools Protocol 的浏览器自动化以 gRPC 为例k6 提供了grpc.Client可以像下面这样调用服务importgrpcfromk6/grpc;constclientnewgrpc.Client();client.connect(grpc.test.k6.io:443);constoverallResponseclient.healthCheck();client.close();这个client.healthCheck()方法在v1.2.0/v1.2.1版本引入用来简化 gRPC 服务的健康检查免去手动调用invoke的样板代码。同版本还改进了 gRPC 对NaN、Infinity浮点值的处理统一使用字符串表示以对齐其他 gRPC API。浏览器自动化则是另一大亮点k6 官方脚手架模板展示了典型用法通过scenarios配置browser: { type: chromium }再用browser.newPage()、page.goto()、page.locator()、page.screenshot()等 API 完成端到端浏览器测试。根据最新代码浏览器模块还支持通过connectOverCDP连接到已有浏览器实例进行调试。五、负载模型场景Scenarios与阶段Stages除了简单的stages递增/递减虚拟用户数外k6 还支持更精细的scenarios配置可以为不同的执行器executor分别设置 VU 数、迭代次数等参数例如浏览器测试模板中用的shared-iterations执行器。官方模板中的 HTTP 协议脚本也展示了典型的stagesthresholds组合用法配合http_req_failed和http_req_duration阈值判定测试是否通过。setup()函数常用于测试开始前的准备工作例如检查目标服务是否可用若不可用则调用exec.test.abort()直接终止测试。六、扩展生态xk6 与自动扩展解析k6 的一大亮点是它庞大的扩展生态。核心之外的协议或功能可以通过 xk6 构建体系添加允许 Go 开发者在不修改 k6 核心代码的情况下扩展新协议、输出方式或 JS API。v1.2.0/v1.2.1版本引入了自动扩展解析Automatic Extension Resolution功能原名 Binary Provisioning默认开启能自动检测脚本中 import 的扩展并自动配置正确的 k6 二进制文件无需再手动编译自定义二进制importfakerfromk6/x/faker;exportdefaultfunction(){console.log(faker.person.firstName());}以前只支持官方扩展后来通过设置K6_ENABLE_COMMUNITY_EXTENSIONStrue环境变量还能使用社区扩展列表中的任意扩展。不过需要注意社区扩展仅支持本地执行k6 run或k6 cloud run --local-executionGrafana Cloud k6 上运行测试时只允许官方扩展。七、断言库Assertions Libraryv1.2.1版本预览发布了全新的断言库提供expect()函数及一系列表达力强的匹配器matcherAPI 设计借鉴自 Playwright 的断言语法支持链式调用同时适用于 HTTP/API 协议测试和浏览器测试场景。八、指标与可观测性k6 在测试执行期间会收集详细的指标数据并支持多种输出后端包括 JSON 文件、InfluxDB、Prometheus 以及原生集成的 Grafana Cloud SaaS 方案用于测试执行、指标关联和数据分析。测试报告中包含丰富的内建指标例如http_req_duration请求耗时含 p90/p95 百分位、http_req_failed失败率、iterations迭代次数、vus虚拟用户数等可以直观展示压测结果的各项统计。九、Cloud 集成与最新亮点v1.6.0版本为 Cloud 命令新增了可配置的默认 Grafana Cloud stack 支持免去每次运行都要指定 project id 的麻烦可以通过stackID选项或K6_CLOUD_STACK_ID环境变量指定使用哪个 stackk6 cloud login--token$MY_TOKEN--stackmy-stack-slug k6 cloud run script.js同一版本还引入了全新的k6 deps命令用于分析并列出脚本或归档文件的所有依赖特别适合在使用自动扩展解析时了解需要哪些扩展来构建自定义二进制。该命令支持以 JSON 格式输出依赖列表方便程序化处理。此外v1.6.0还带来了浏览器 API 的增强frameLocator()、goBack()、goForward()、Crypto 模块的 PBKDF2 支持、jslib 新增的 TOTP 库以及面向 AI 辅助脚本编写的mcp-k6MCP 服务器。

相关新闻

2026/8/19 10:57:16

从零到一搭建家庭游戏串流服务器:Sunshine保姆级上手手记

从零到一搭建家庭游戏串流服务器:Sunshine保姆级上手手记 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 这个烦恼,是不是也困扰着你 事情要从一个加班的深…

2026/8/19 12:07:33

爱驰U5智能电动SUV技术解析:三电安全、智能座舱与全球化挑战

1. 从“首秀”到“领跑”:爱驰U5的入场时机与市场定位 2019年,当爱驰U5在德国法兰克福车展完成全球首秀时,国内新能源市场正处在一个微妙的分水岭。彼时,“蔚小理”已初步站稳脚跟,特斯拉Model 3国产化的消息甚嚣尘上&…

2026/8/19 12:07:33

基于M5Stack的智能健康饮食机:软硬件结合的项目实践

1. 项目概述:当“健康饮食”遇上“可编程硬件” 最近几年,身边的朋友们聊起健康话题,已经从单纯的“少吃多动”,进化到了对每日营养摄入的精细化管理。大家开始用App记录卡路里,关注蛋白质、碳水、脂肪的比例。但说实话…

2026/8/19 12:07:33

springboot基于Java的教学评价管理系统的设计与实现

选题背景 随着信息技术的快速发展和教育信息化的深入推进,高校及各类教育机构对教学管理的精细化、智能化需求日益增长。传统的教学评价方式主要依赖纸质问卷或人工统计,存在效率低下、数据易丢失、分析能力弱等问题,难以满足现代教育管理的需…

2026/8/19 4:14:28

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 6:58:27

工业传感器与变送器详解:序章 从物理世界到工业数据

序章 从物理世界到工业数据 ——重新认识工业传感器与变送器 工业自动化系统正变得日益复杂。今天的工业现场早已不是简单的控制回路,而是由多层技术共同构成的立体体系:PLC、DCS、SCADA、MES、工业互联网、边缘计算与人工智能。控制系统可以执行复杂算法,工业网络可以实现…

2026/8/19 0:00:35

【单片机课程设计/毕业设计】基于 STM32 与 WiFi 模块的室内通风智能管控系统设计 基于 STM32 的人体存在感知自适应风扇控制系统设计(018503)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/8/19 0:00:35

AI如何驱动数学猜想生成:从大语言模型到自动化数学发现

1. 项目概述:当AI开始“猜”数学定理 最近在AI研究圈里,一个名为“Moonshine”的项目引起了不小的讨论。这名字本身就挺有意思,直译是“月光”,但在数学史上,它特指一个神秘而美丽的联系——魔群月光猜想,连…

2026/8/19 0:00:36

Agentic Web:构建智能体原生网络的基础设施挑战与四大支柱

1. 从“被动网络”到“能动网络”:一个正在发生的范式转移 如果你最近关注AI和Web技术的前沿动态,可能会频繁听到“Agentic Web”这个词。它不像“Web3”那样带着浓厚的金融色彩,也不像“元宇宙”那样充满科幻感,但它所描绘的未来…

2026/8/18 18:23:10

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/19 4:14:38

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/18 7:12:40

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…