一个现代化负载压力测试工具

大家好,又见面了,我是 GitHub 精选君!

背景介绍

在 DevOps 时代,软件开发和测试人员面临着越来越多的挑战,尤其是在性能测试领域。随着应用程序变得越来越复杂,确保系统在高负载情况下依然能稳定运行变得尤为重要。传统的性能测试工具往往操作复杂,缺乏灵活性,而且难以融入现代的自动化开发流程中。这些工具不仅难以编写和维护测试脚本,而且在测试结果分析和可视化方面也显得力不从心。因此,开发和测试团队迫切需要一种既强大又易于使用的现代化性能测试工具来应对这些挑战。

今天要给大家推荐一个 GitHub 开源项目 grafana k6,该项目在 GitHub 有超过 25.1k Star。

一句话介绍该项目:A modern load testing tool, using Go and JavaScript

项目介绍

k6 是一个基于 Go 和 JavaScript 开发的现代化负载测试工具,旨在为开发者和测试人员提供最佳的用户体验。该项目由多年性能和测试行业经验积累而来,特别强调配置灵活的负载生成、代码形式的测试脚本、丰富的 API 支持、以及易于扩展的设计理念。

k6 的核心特点包括:

1、配置灵活的负载生成:即使是低端机器也能模拟出大量的流量。

2、代码形式的测试:可以复用脚本、模块化逻辑、版本控制并与 CI 集成。

3、全功能 API:脚本 API 提供众多功能,帮助模拟真实应用流量。

4、内嵌的 JavaScript 引擎:结合了 Go 的性能和 JavaScript 的编程熟悉度。

5、多协议支持:支持 HTTP、WebSockets、gRPC、浏览器等多种协议。

6、丰富的扩展生态系统:你可以根据需要扩展 k6,社区中已有许多人分享了他们的扩展。

7、灵活的指标存储与可视化:无论是概要统计还是粒度指标,都可以导出到你选择的服务。

8、与 Grafana 云的原生集成:提供测试执行、指标相关性分析等 SaaS 解决方案。

如何使用

以下是一个使用 k6 的示例脚本:

import http from "k6/http";
import { check, sleep } from "k6";

export const options = {
  thresholds: {
    http_req_duration: ["p(99) < 3000"],
  },
  stages: [
    { duration: "30s", target: 15 }, // 30s incr. to 15 user
    { duration: "1m", target: 15 },  // keep 15 user with 1min
    { duration: "20s", target: 0 },  // 20s to desc. to 0 user
  ],
};

export default function () {
  let res = http.get("https://test-api.k6.io/public/crocodiles/1/");
  check(res, { "status was 200": (r) => r.status == 200 });
  sleep(1);
}

你可以在命令行界面(CLI)、CI/CD 系统或 Kubernetes 集群中运行此类脚本。以下是一个示例页面:

项目推介

k6 已经成为许多开发者和测试团队首选的性能测试工具。由于其强大的功能和优秀的开发体验,它在 GitHub 上积累了大量的星标。

以下是该项目 Star 趋势图(代表项目的活跃程度):

更多项目详情请查看如下链接。

开源项目地址:https://github.com/grafana/k6

开源项目作者:grafana

开源协议:GNU Affero General Public License v3.0

以下是参与项目建设的所有成员:

关注我们,一起探索有意思的开源项目。


更多精彩请扫码关注如下公众号。

Written on September 27, 2024