跳到主要内容

编写您的第一个测试

k6 是一个可靠性测试工具。它帮助开发人员模拟真实用户行为,并测试他们的系统在此基础上的表现。在 k6 中编写测试可以让您在生产环境中出现之前识别潜在问题,例如响应时间慢或系统故障。

您的测试目标可能有所不同。您可能想检查性能、可靠性或可扩展性。根据您的目标,您的脚本可能需要不同的配置,例如模拟多个用户或长时间运行测试。

k6 测试是使用 JavaScript 或 TypeScript 编程语言编写的,这使得开发人员能够轻松访问,并且易于集成到现有的代码库和项目中。通过编写 k6 测试脚本,您可以控制 k6 的行为、执行的操作以及它的表现。

跟随并学习如何编写您的第一个测试脚本,并开始测试您应用程序的可靠性。

在您开始之前

编写 k6 脚本,您需要:

  • 对 JavaScript 或 TypeScript 有基本的了解。
    • 如果您对这些语言不熟悉,请查看 k6 Studio ,它帮助用户在不编写代码的情况下生成测试。或者,探索我们的。
  • 在您的机器上 安装 k6
  • 一个用于编写脚本的代码编辑器,例如 Visual Studio CodeJetBrains 编辑器

k6 测试的基本结构

为了让 k6 能够解释和执行您的测试,每个 k6 脚本都遵循一个共同的结构,围绕几个核心组件展开:

  1. 默认函数 :这是测试逻辑所在的地方。它定义了您的测试将执行什么以及在执行期间的行为。它应该作为脚本中的默认函数导出。
  2. 导入 :您可以导入额外的 k6 模块JavaScript 库 (jslibs) 来扩展您的脚本功能,例如发起 HTTP 请求或模拟浏览器交互。请注意,k6 并不是建立在 Node.js 之上,而是使用其自己的 JavaScript 运行时。与某些 npm 模块的兼容性可能有所不同。
  3. 选项(可选) :使您能够配置测试的执行,例如定义虚拟用户的数量、测试持续时间或设置性能阈值。请参阅 选项 以获取更多详细信息。
  4. 生命周期操作(可选) :因为您的测试可能需要在测试逻辑执行之前和/或之后运行代码,例如从文件中解析数据,或从 Amazon S3 下载对象, 生命周期操作 允许您编写代码,可以是预定义的函数或在特定代码范围内,这些代码将在测试执行的不同阶段被执行。

编写您的第一个测试脚本

让我们来创建一个简单的测试,该测试对一个 URL 执行 10 次 GET HTTP 请求,并在请求之间等待 1 秒。这个脚本将帮助您理解 k6 测试脚本的基本结构。

  1. 创建测试文件 : 测试文件可以命名为您喜欢的任何名称,并可以放置在项目中的任何位置,但它应该具有 .js.ts 扩展名。在这个例子中,创建一个名为 my-first-test.js 的 JavaScript 文件。打开您的终端并运行以下命令:
    touch my-first-test.js
  2. 导入 k6 模块 : 由于最终目标是执行 HTTP 请求,因此在文件顶部导入 k6 的 http 模块。为了帮助模拟真实场景,还要从 k6 模块导入 sleep 函数。
// 导入 http 模块来发起 HTTP 请求。从这里开始,您可以使用 `http` 方法发起 HTTP 请求。
import http from 'k6/http';

// 导入 sleep 函数来引入延迟。从这里开始,您可以使用 `sleep` 函数在测试脚本中引入延迟。
import { sleep } from 'k6';
  1. 定义选项 : 为了执行 10 次 HTTP 请求,定义一个选项块以配置测试执行。在这种情况下,将迭代次数设置为 10,以指示 k6 执行默认函数 10 次。在导入语句下方添加以下代码:
import http from 'k6/http';
import { sleep } from 'k6';

export const options = {
// 定义测试的迭代次数
iterations: 10,
};
  1. 定义默认函数 :默认导出的函数是测试脚本的入口点。它将根据您在 iterations 选项中定义的次数重复执行。在此函数中,向一个 URL 发出 GET 请求,并在请求之间引入 1 秒的延迟。将以下代码添加到您的脚本中:
    import http from 'k6/http';
    import { sleep } from 'k6';
    export const options = {
    iterations: 10,
    };
    // 默认导出的函数将被 k6 作为测试脚本的入口点。它将在测试的整个持续时间内按照“迭代”重复执行。
    export default function () {
    // 向目标 URL 发起 GET 请求
    http.get('https://quickpizza.grafana.com');
    // 休眠 1 秒来模拟真实世界的使用情况
    sleep(1);
    }

扩展你的脚本

在你对这个基本脚本感到满意后,你可以通过多种方式扩展它的功能。以下是一些可以帮助你入门的想法:

  1. 多个请求 :您可以添加更多 http.get()http.post() 请求来模拟复杂的用户流程。
  2. 使用 TypeScript: 如果您更喜欢 TypeScript,k6 也支持它。您可以在我们的 TypeScript 指南 中了解更多信息。
  3. 阈值、检查和指标 : 您可以添加条件来监控性能。例如,您可以设置阈值以确保响应时间不超过某个限制。请参阅 阈值检查 以获取更多详细信息。
  4. 浏览器测试 :使用浏览器模块模拟用户交互,例如点击按钮或填写表单。这对于测试 Web 应用程序非常有用。请参阅 使用 k6 浏览器 以获取更多详细信息。

您还可以使用 k6 new 命令来加快编写 k6 测试脚本的过程,特别是在测试新服务或应用程序时。试试看!

现在您已经编写了第一个 k6 测试脚本,是时候运行它了。请参考 运行 k6 以了解如何执行您的脚本并分析结果。