如同单元测试,但用于性能测试
DevOps时代开发人员和测试人员的现代负载测试工具。
k6是一款现代化的负载测试工具,建立在我们在性能和测试行业多年经验的基础之上。它被设计得强大、可扩展且功能丰富。其核心设计目标是提供最佳的开发者体验。
其核心特性包括:
- 可配置的负载生成。 即使是低端机器也能模拟大量流量。
- 测试即代码。 重用脚本、模块化逻辑、版本控制,并将测试与CI集成。
- 全面的API。 脚本API功能丰富,帮助您模拟真实的应用程序流量。
- 内嵌JavaScript引擎。 结合了Go语言的性能和JavaScript的脚本编写熟悉度。
- 多协议支持。HTTP、WebSockets、gRPC、浏览器等。
- 大型扩展生态系统。 您可以扩展k6以满足您的需求。许多人已经与社区分享了他们的扩展!
- 灵活的指标存储和可视化。 汇总统计或精细指标,可导出到您选择的服务。
- 与Grafana云原生集成。 SaaS解决方案用于测试执行、指标关联、数据分析等。
这就是21世纪的负载测试。
示例脚本
import http from "k6/http";
import { check, sleep } from "k6";
// 测试配置
export const options = {
thresholds: {
// 断言99%的请求在3000ms内完成。
http_req_duration: ["p(99) < 3000"],
},
// 虚拟用户数量的增减
stages: [
{ duration: "30s", target: 15 },
{ duration: "1m", target: 15 },
{ duration: "20s", target: 0 },
],
};
// 模拟用户行为
export default function () {
let res = http.get("https://test-api.k6.io/public/crocodiles/1/");
// 验证响应状态
check(res, { "状态为200": (r) => r.status == 200 });
sleep(1);
}
您可以在CLI上运行这样的脚本,或在CI中运行,或在Kubernetes集群中运行。
文档
文档涵盖了使用k6的所有方面。一些亮点包括:
- 入门。安装、运行测试、检查结果。
- HTTP请求。让您的虚拟用户使用HTTP方法。 或者,查看其他协议。
- 阈值。为您的测试设置目标,并编码您的SLO。
- 选项。配置您的负载、持续时间、TLS证书等等。
- 场景。 选择如何模拟您的工作负载:开放模型、闭合模型、恒定RPS、固定迭代等。
- 结果输出。研究、过滤和导出您的测试结果。
- JavaScript API。所有k6模块的参考和示例。
- 扩展。扩展k6以支持新协议和用例。
这些链接仅仅是冰山一角!如果您正在寻找概念性信息,可以阅读测试类型、测试策略,或众多有见地的博客文章。
路线图
我们的团队致力于不断改进并提供最佳的用户体验。公开路线图涵盖了我们团队将专注的面向用户的功能、用户体验改进和JavaScript支持。请记住,时间框架和优先级可能会发生变化,但我们认为分享我们的愿景很重要。
我们希望它能为未来的发展计划提供清晰的概览。我们欢迎通过GitHub提供反馈、纠正和建议,以使其更加全面、易于访问,并为社区创造价值。
值得一提的是,我们认为赞同(点赞)是确定社区需求的重要指标之一。如果您想向我们展示某个功能的重要性,请给它一个赞。
贡献
如果您想为k6的开发做出贡献或提供帮助,请先阅读CONTRIBUTING.md。在开始编码之前,最好先与k6维护者讨论您的计划和实现细节,尤其是涉及重大变更和功能时。您可以在您要解决问题的GitHub issue中进行讨论(如果不存在,请创建一个)。
注意: 要披露安全问题,请参阅SECURITY.md。
支持
要获取帮助、报告错误、建议功能以及与他人讨论k6,请参阅SUPPORT.md。
许可证
k6根据AGPL-3.0许可证分发。