菜单
文档breadcrumb arrow 录制你的第一个脚本
开源

录制你的第一个脚本

本教程介绍如何使用 k6 Studio 创建录制、设置自定义规则以及生成测试脚本。

在本教程中,你将

  • 使用 https://quickpizza.grafana.com/ 服务创建测试录制。
  • 学习如何创建分组来组织你的测试录制。
  • 查看测试录制中的请求和响应数据。
  • 使用生成器创建关联、参数化和自定义代码规则。
  • 从生成器验证你的测试脚本。
  • 导出你的测试脚本。

开始之前

要完成本教程,你需要

注意

本教程使用 quickpizza.grafana.com 服务,这是一个公共共享环境。你可以使用它来跟随本教程,或者使用你自己的服务。如果你想部署一个私有实例,quickpizza.grafana.com 服务也是开源的

创建测试录制

要创建测试录制

  1. 打开 k6 Studio 桌面应用程序。

  2. 点击 Record Flow

  3. Starting URL 下输入“quickpizza.grafana.com”。

  4. 点击 Start recording。几秒钟后,你应该会看到一个 Google Chrome 窗口打开,并在 k6 Studio 应用程序中看到 Requests 头部。

  5. 在 k6 Studio 中,点击 Default group 旁边的编辑按钮,将其重命名为“Homepage”,然后按 Enter 键。

  6. 接下来点击 Create group,将其命名为“Generate pizza”,然后按 Enter 键。分组有助于组织你的测试脚本,使其将来更容易编辑和维护,并为你提供测试脚本中每个分组的时间指标。

  7. 在浏览器窗口中,点击 Pizza, Please! 按钮。你应该会看到一个生成的推荐。

  8. 在推荐下方,点击 Love it! 按钮。将出现一条消息:“Please log in first.”。

这将完成“Generate pizza”分组的请求。

登录服务

下一步,你将登录服务以便能够为披萨评分

  1. 在 k6 Studio 应用程序中,点击 Create group,将其命名为“Log in”,然后按 Enter 键。
  2. 在浏览器中,点击屏幕右上角的 Login/Profile 链接。你应该会看到一个身份验证对话框。
  3. 用户名输入“studio-user”。密码输入“k6studiorocks”。

你将登录到测试服务,这将完成“Log in”分组的请求。

生成并评分一个命名披萨

在下一步中,你将再次生成并评分一个披萨,这次使用自定义名称。

  1. 在 k6 Studio 中,点击 Create group,将其命名为“Generate and rate custom pizza”,然后按 Enter 键。

  2. 在浏览器中,点击 Back to main page 链接。你应该会再次看到主页。

  3. 在页面右上角,切换 Advanced 输入框,页面上将出现一个表单,用于自定义生成的披萨。

  4. 在表单中,在 Custom Pizza Name 输入框中插入名称“testedpizza”,然后点击 Pizza, Please! 按钮。你应该会看到一个生成的具有相同名称的推荐。

  5. 在推荐下方,点击 Love it! 按钮,将出现一条消息:“Rated!”。

  6. 在 k6 Studio 中,点击 Stop recording

点击 Stop recording 后,k6 Studio 会将录制保存为 HAR 文件。

重命名录制

在侧边栏中,你可以在创建录制后更改其名称。操作步骤如下:

  1. 在 k6 Studio 中,右键点击左侧边栏中你刚创建的录制。
  2. 将录制重命名为 generate pizza
  3. Enter 键确认更改。

检查响应和请求数据

完成录制后,你可以可视化测试录制中包含的每个请求的请求和响应数据。

要查看请求的请求和响应数据,请从 Requests 列表中点击你想检查的请求。

请求和响应面板有选项卡,你可以在其中查看请求的头部、负载或 cookie,以及响应的头部、内容和 cookie。对于响应内容选项卡,你还可以以不同格式查看,例如原始数据或预览。

从测试录制生成脚本

要从测试录制生成脚本

  • 如果上一步你仍打开着测试录制,点击右上角的 Create test generator
  • 你也可以点击左侧 Generator 旁边的 + 号,然后在右上角选择你的录制。

将出现一个对话框,允许你从录制中选择用于生成脚本的主机。选择 quickpizza.grafana.com 并点击 Continue

生成器允许你通过用户界面生成和修改 k6 测试脚本,而无需编写 JavaScript 代码。

在顶部,你可以像在录制器中一样从该视图检查录制。在底部,你可以看到 Test rules 列表,其中已添加了一个 Verification rule

Test rules 是你可以添加到生成器文件中以修改从录制生成的脚本的对象。默认创建的 Verification rule 会修改脚本以添加Checks。这些检查会验证当你运行脚本时,从响应接收到的状态码是否与你之前录制的状态码相同。这是验证你的应用程序是否按预期工作的良好起点。

你还可以通过选择顶部面板中的 Script 选项卡来检查将生成的脚本。

验证测试脚本

在下一步中,你可以验证从录制创建的测试脚本,检查你的脚本是否正常工作。要验证测试脚本

  1. 在 k6 Studio 中,点击 Requests 旁边的 Script 选项卡。
  2. 点击右上角的 Validate

验证器会单次迭代运行你的脚本,并允许你检查发送的请求和响应,以及查看 k6 的任何日志和检查。

对于本教程,运行前面步骤创建的脚本会导致一些请求应该返回 200 状态码,但实际上返回的是 401 状态码。

发生这种情况有两个原因

  1. 登录端点使用 CSRF 令牌验证请求。
  2. 披萨评分端点使用 pizza.id 属性来评价随机生成的披萨。

这两种情况都是常见场景,其中 API 或服务需要从某个端点检索信息,然后在后续请求中使用该信息。

在接下来的步骤中,你将学习如何使用规则自定义脚本并使其正常工作。

关联动态数据

如果你检查 POST 请求 /api/csrf-token 的数据,你会发现它生成了一个 csrf token。

这是动态值的一个例子,你在生成脚本时无法预测它,因为该值是在你访问登录表单时由服务器生成的,服务器在你提交表单时期望该值返回。

你需要一种方法来自定义脚本,使其知道在运行时获取此值并从录制的提取中替换该值。你可以通过使用 Correlation Rule 来做到这一点。

要添加关联规则

  1. 在 k6 Studio 中,点击 + Add rule 并从条目中选择 Correlation
  2. Extractor 下,将 Target 字段设置为 Headers
  3. Begin 字段中,输入 csrf_token=
  4. End 字段中,输入 ;

在请求列表中,你会看到 Value extractedmatch 标签出现在几个请求旁边。这些是此特定规则从中提取或替换值的请求。在规则编辑器底部,你可以看到已提取的值。

k6 Studio 会在你编辑规则时实时更新标签。这有助于查看何时实际匹配以及实际替换了哪些值。替换值时,规则默认会尝试找到该值的出现位置并自动替换它们。如果你需要更多控制,可以打开开关自定义替换器选择器。

有了这个规则,你无需编写任何代码即可为脚本添加动态数据关联。

如果再次运行验证步骤,你会看到其中一个失败的请求返回了 201 状态码。

还有一个失败的请求与生成的披萨 ID 未被提取并在下一个请求中使用有关。要解决这个问题

  1. 在 k6 Studio 中,点击 + Add rule 并从条目中选择 Correlation
  2. Extractor 下,将 Target 字段设置为 Body,将 Type 字段设置为 JSON
  3. JSON path 字段中,输入 pizza.id

这会将生成的披萨 ID 与 Generate pizzaGenerate and rate custom pizza 分组中的请求关联起来。

你可以再次验证测试脚本,所有请求都应该返回正确的状态码,并且 k6 检查都应该通过。

参数化值

你可以利用参数化规则修改文本中的值,并将其替换为变量,甚至 CSV 或 JSON 文件中的数据。

要添加参数化规则

  1. Test rules 下,点击 + Add rule 并选择 Parameterization
  2. Type 字段更改为 Text
  3. Text 输入框中,输入你之前生成自定义披萨时使用的名称。
  4. 在右侧的 Value 下,插入你想要替换的新值。例如 Grotpizza

你会看到录制中的 POST 请求旁边现在带有 match 标签。如果你检查 Payload,可以看到它现在使用了新定义的名称。

插入自定义 JavaScript 片段

你可以利用 Custom Code 规则在脚本中插入自定义 JavaScript 片段。

  1. 在 k6 Studio 中,点击 + Add rule 并从条目中选择 Custom Code
  2. Snippet 输入框中,输入 console.log('hello k6')

如果你打开 Script 选项卡,可以看到脚本实时更新,该片段被插入到每个请求之前。

导出测试脚本

要导出测试脚本

  1. 在 k6 Studio 中,点击 Requests 旁边的 Script 选项卡。
  2. 点击右上角的 Export
  3. 输入脚本名称。
  4. 点击 Export

保存脚本后,它会出现在左侧的 Scripts 下。你可以右键点击脚本并点击 Open containing folder 在你的系统中找到它,然后使用 k6 运行它。

总结

总结如下

  • 你使用 https://quickpizza.grafana.com/ 服务创建了测试录制。
  • 你创建了分组,将测试录制组织成逻辑步骤。
  • 你学习了如何查看测试录制中的请求和响应数据。
  • 你从测试录制创建了生成器,并学习了如何使用关联、参数化和自定义代码规则。
  • 你学习了在生成器中设置规则后如何验证测试脚本。
  • 你从测试录制和规则设置导出了测试脚本。

现在你可以使用相同的步骤为你自己的应用程序或服务创建测试录制并生成测试脚本。然后你可以使用这些脚本通过 k6 CLI 或 Grafana Cloud k6 运行性能测试。

下一步

既然你已经学习了如何使用 k6 Studio 的基础知识,你可以