grafana/k6
GitHub: grafana/k6
一款基于 Go 和 JavaScript 的现代负载测试工具,帮助开发团队以代码化的方式进行性能测试和 SLO 验证。
Stars: 30801 | Forks: 1561
就像单元测试一样,但专为性能而生
DevOps 时代面向开发者和测试人员的现代负载测试工具。
Download · Documentation · Community Forum · Public Roadmap
**k6** 是一款现代负载测试工具,建立在我们在性能和测试行业[多年经验](https://k6.io/about)的基础之上。 它的构建初衷是强大、可扩展且功能丰富。其核心设计目标是提供**最佳的开发者体验**。 它的核心特性包括: - **可配置的负载生成。** 即使是低端机器也能模拟大量流量。 - **测试即代码。** 复用脚本,模块化逻辑,版本控制,并将测试集成到你的 CI 中。 - **功能丰富的 API。** 脚本 API 提供了丰富的功能,帮助你模拟真实的应用程序流量。 - **内嵌 JavaScript 引擎。** 兼具 Go 的性能与 JavaScript 的脚本熟悉度。 - **多协议支持**。支持 HTTP、WebSockets、gRPC、浏览器等。 - **庞大的扩展生态系统。** 你可以扩展 k6 以满足你的需求。许多人已经与社区分享了他们的扩展可用的扩展。 - **灵活的指标存储与可视化**。支持摘要统计或细粒度指标,并可导出到你选择的服务。 - **原生集成 Grafana Cloud**。用于测试执行、指标关联、数据分析等的 [SaaS 解决方案](https://grafana.com/products/cloud/k6/)。 这就是 21 世纪的负载测试模样。 ## 示例脚本 ``` import http from "k6/http"; import { check, sleep } from "k6"; // Test configuration export const options = { thresholds: { // Assert that 99% of requests finish within 3000ms. http_req_duration: ["p(99) < 3000"], }, // Ramp the number of virtual users up and down stages: [ { duration: "30s", target: 15 }, { duration: "1m", target: 15 }, { duration: "20s", target: 0 }, ], }; // Simulated user behavior export default function () { let res = http.get("https://quickpizza.grafana.com"); // Validate response status check(res, { "status was 200": (r) => r.status == 200 }); sleep(1); } ``` 你可以在 CLI、CI 或 Kubernetes 集群中运行此类脚本。 ## 文档 文档涵盖了使用 k6 的所有方面。部分重点内容包括: - [快速入门](https://grafana.com/docs/k6/latest/)。安装、运行测试、检查结果。 - [HTTP 请求](https://grafana.com/docs/k6/latest/using-k6/http-requests/)。让你的虚拟用户使用 HTTP 方法。 或者,查看其他[协议](https://grafana.com/docs/k6/latest/using-k6/protocols/)。 - [阈值](https://grafana.com/docs/k6/latest/using-k6/thresholds/)。为你的测试设定目标,并将你的 SLO 代码化。 - [选项](https://grafana.com/docs/k6/latest/using-k6/k6-options/)。配置你的负载、持续时间、TLS 证书等等。 - [场景](https://grafana.com/docs/k6/latest/using-k6/scenarios/)。 选择如何对你的工作负载进行建模:开放式模型、封闭式模型、恒定 RPS、固定迭代次数等。 - [结果输出](https://grafana.com/docs/k6/latest/results-output/)。研究、过滤并导出你的测试结果。 - [JavaScript API](https://grafana.com/docs/k6/latest/javascript-api/)。所有 k6 模块的参考和示例。 - [扩展](https://grafana.com/docs/k6/latest/extensions/)。扩展 k6 以支持新的协议和用例。 这些链接仅仅触及皮毛!如果你正在寻找概念性信息,可以阅读关于[测试类型](https://grafana.com/docs/k6/latest/testing-guides/test-types/)、[测试策略](https://grafana.com/docs/k6/latest/testing-guides/)的内容,或者阅读众多内容丰富的[博客文章](https://k6.io/blog)之一。 ## 路线图 我们的团队致力于持续改进并提供尽可能最佳的用户体验。[公开路线图](https://github.com/orgs/grafana/projects/443/views/1)涵盖了团队将重点关注的面向用户的功能、UX 改进以及对 JavaScript 的支持。请注意,时间表和优先级可能会发生变化,但我们认为分享我们的愿景非常重要。 我们希望它能清晰地概述我们对未来开发的计划。我们欢迎通过 GitHub 提供反馈、修正和建议,以使其对社区更加全面、易于访问和有价值。 值得一提的是,我们将[点赞支持](https://github.com/grafana/k6/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc)视为确定社区需求的关键指标之一。如果你想向我们展示某项功能的重要性,请为其点赞。 ## 支持 如需获取帮助、报告 Bug、提出功能建议以及与他人讨论 k6,请参阅 [SUPPORT.md](SUPPORT.md)。 ## 许可证 k6 基于 [AGPL-3.0 许可证](https://github.com/grafana/k6/blob/master/LICENSE.md)分发。
标签:CMS安全, Go, JavaScript, LNA, Python工具, Ruby工具, 子域名突变, 性能测试, 数据可视化, 日志审计, 测试工具, 负载测试