编写您的第一个测试
k6 是一个可靠性测试工具。它帮助开发人员模拟真实用户行为,并测试他们的系统在此基础上的表现。在 k6 中编写测试可以让您在生产环境中出现之前识别潜在问题,例如响应时间慢或系统故障。
您的测试目标可能有所不同。您可能想检查性能、可靠性或可扩展性。根据您的目标,您的脚本可能需要不同的配置,例如模拟多个用户或长时间运行测试。
k6 测试是使用 JavaScript 或 TypeScript 编程语言编写的,这使得开发人员能够轻松访问,并且易于集成到现有的代码库和项目中。通过编写 k6 测试脚本,您可以控制 k6 的行为、执行的操作以及它的表现。
跟随并学习如何编写您的第一个测试脚本,并开始测试您应用程序的可靠性。
在您开始之前
编写 k6 脚本,您需要:
- 对 JavaScript 或 TypeScript 有基本的了解。
- 如果您对这些语言不熟悉,请查看 k6 Studio ,它帮助用户在不编写代码的情况下生成测试。或者,探索我们的。
- 在您的机器上 安装 k6 。
- 一个用于编写脚本的代码编辑器,例如 Visual Studio Code 或 JetBrains 编辑器 。
- 请参考 配置您的代码编辑器 以了解如何启用自动补全和其他功能。
k6 测试的基本结构
为了让 k6 能够解释和执行您的测试,每个 k6 脚本都遵循一个共同的结构,围绕几个核心组件展开:
- 默认函数 :这是测试逻辑所在的地方。它定义了您的测试将执行什么以及在执行期间的行为。它应该作为脚本中的默认函数导出。
- 导入 :您可以导入额外的 k6 模块 或 JavaScript 库 (jslibs) 来扩展您的脚本功能,例如发起 HTTP 请求或模拟浏览器交互。请注意,k6 并不是建立在 Node.js 之上,而是使用其自己的 JavaScript 运行时。与某些 npm 模块的兼容性可能有所不同。
- 选项(可选) :使您能够配置测试的执行,例如定义虚拟用户的数量、测试持续时间或设置性能阈值。请参阅 选项 以获取更多详细信息。
- 生命周期操作(可选) :因为您的测试可能需要在测试逻辑执行之前和/或之后运行代码,例如从文件中解析数据,或从 Amazon S3 下载对象, 生命周期操作 允许您编写代码,可以是预定义的函数或在特定代码范围内,这些代码将在测试执行的不同阶段被执行。
编写您的第一个测试脚本
让我们来创建一个简单的测试,该测试对一个 URL 执行 10 次 GET HTTP 请求,并在请求之间等待 1 秒。这个脚本将帮助您理解 k6 测试脚本的基本结构。
- 创建测试文件 : 测试文件可以命名为您喜欢的任何名称,并可以放置在项目中的任何位置,但它应该具有
.js或.ts扩展名。在这个例子中,创建一个名为my-first-test.js的 JavaScript 文件。打开您的终端并运行以下命令:touch my-first-test.js - 导入 k6 模块 : 由于最终目标是执行 HTTP 请求,因此在文件顶部导入 k6 的
http模块。为了帮助模拟真实场景,还要从k6模块导入sleep函数。
// 导入 http 模块来发起 HTTP 请求。从这里开始,您可以使用 `http` 方法发起 HTTP 请求。
import http from 'k6/http';
// 导入 sleep 函数来引入延迟。从这里开始,您可以使用 `sleep` 函数在测试脚本中引入延迟。
import { sleep } from 'k6';
- 定义选项 : 为了执行 10 次 HTTP 请求,定义一个选项块以配置测试执行。在这种情况下,将迭代次数设置为 10,以指示 k6 执行默认函数 10 次。在导入语句下方添加以下代码:
import http from 'k6/http';
import { sleep } from 'k6';
export const options = {
// 定义测试的迭代次数
iterations: 10,
};
- 定义默认函数 :默认导出的函数是测试脚本的入口点。它将根据您在
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);
}
扩展你的脚本
在你对这个基本脚本感到满意后,你可以通过多种方式扩展它的功能。以下是一些可以帮助你入门的想法:
- 多个请求 :您可以添加更多
http.get()或http.post()请求来模拟复杂的用户流程。 - 使用 TypeScript: 如果您更喜欢 TypeScript,k6 也支持它。您可以在我们的 TypeScript 指南 中了解更多信息。
- 阈值、检查和指标 : 您可以添加条件来监控性能。例如,您可以设置阈值以确保响应时间不超过某个限制。请参阅 阈值 和 检查 以获取更多详细信息。
- 浏览器测试 :使用浏览器模块模拟用户交互,例如点击按钮或填写表单。这对于测试 Web 应用程序非常有用。请参阅 使用 k6 浏览器 以获取更多详细信息。
您还可以使用 k6 new 命令来加快编写 k6 测试脚本的过程,特别是在测试新服务或应用程序时。试试看!
现在您已经编写了第一个 k6 测试脚本,是时候运行它了。请参考 运行 k6 以了解如何执行您的脚本并分析结果。