1. 简介
在此 Codelab 中,我们将了解如何利用帮我写功能为现有服务编写合成监控测试。
实践内容…
- 您将向 Google Cloud Run 部署一个 API,该 API 将作为我们测试的服务的基础。
- 然后,您将编写合成监控工具,这是 Cloud Monitoring 的一项功能。
- 您将使用“帮我写”功能来编写综合监控器。
学习内容…
- 什么是合成监控。
- 如何使用 Gemini 的“帮我写”功能在 Synthetic Monitoring 中编写测试用例,以验证核心服务功能。
所需条件…
- Chrome 网络浏览器
- Gmail 账号
- 启用了结算功能的 Cloud 项目
- 已为您的云项目启用 Gemini Code Assist
本实验的适用对象为各种水平的开发者,包括新手。虽然示例应用使用的是 Python 语言,但您无需熟悉 Python 编程就能理解代码内容。
2. 设置
我们现在将在 Google Cloud 项目中启用 Gemini for Cloud。请按下面给出的步骤操作:
- 访问 https://console.cloud.google.com,并确保您已选择计划用于本实验的 Google Cloud 项目。点击显示在右上角的“打开 Gemini”图标。

- Gemini for Cloud 聊天窗口会在控制台右侧打开。点击“启用”按钮,如下所示。如果您没有看到启用按钮,而是看到了聊天界面,可能是因为您已经为项目启用了 Gemini for Cloud,可以直接执行下一步。

- 启用 Gemini for Cloud 后,您可以向其发出一两句查询来测试一下。下方显示了几个查询示例,不过您可以尝试以下查询
What is Synthetic Monitoring?

Gemini for Cloud 会回答您的问题。查看提供的参考文档列表,了解如何在 Google Cloud 中编写合成监控工具。
您可以点击右上角的
图标关闭 Gemini for Cloud 聊天窗口。
3. 在 Google Cloud Run 上部署示例 Inventory API
在开始编写测试之前,我们需要一个可用于测试的示例 API。为此,我们将编写一个简单的库存 API,并将其部署到 Google Cloud Run 上。
我们将使用 Cloud Shell IDE,这是一个基于 Code OSS 的全托管式开发环境。该环境随附 Cloud Code IDE 扩展程序,可让您高效使用 Google Cloud 服务。请按下面给出的步骤操作:
- 访问 ide.cloud.google.com。IDE 可能需要一段时间才能显示,请耐心等待。
- 如图所示,点击底部状态栏中的 Cloud Code - 登录按钮。按照说明对插件进行授权。如果您在状态栏中看到 Cloud Code - no project,请选择该选项,然后从项目列表中选择您打算使用的 Google Cloud 项目。

- 如图所示,点击右下角的 Gemini 按钮,然后再次选择正确的 Google Cloud 项目。如果系统要求您启用 云 AI Companion API,请按照要求操作,然后继续。
- 选择 Google Cloud 项目后,请确保您能够在状态栏的 Cloud Code 状态消息中看到该项目,并且在状态栏右侧看到已启用 Code Assist,如下所示:

- 点击下方状态栏中的 Google Cloud 项目名称。

- 系统会显示一个选项列表。点击下方列表中的新应用。

- 选择 Cloud Run 应用。
- 选择 Python (Flask): Cloud Run 应用模板。
- 将新应用保存到首选位置。
- 系统会显示一条通知,确认已创建应用,并打开一个新窗口,其中加载了您的应用,如下所示。系统会打开一个
README.md文件。您可以暂时关闭该视图。

- 在 Explorer 中,访问
app.py文件并将其替换为如下所示的内容:
from flask import Flask, jsonify, request
app = Flask(__name__)
inventory = [
{
'id': 1,
'name': 'Item 1',
'quantity': 10
},
{
'id': 2,
'name': 'Item 2',
'quantity': 20
},
{
'id': 3,
'name': 'Item 3',
'quantity': 30
}
]
@app.route('/inventory', methods=['GET'])
def get_inventory():
return jsonify(inventory)
@app.route('/inventory/<int:id>', methods=['GET'])
def get_inventory_item(id):
for item in inventory:
if item['id'] == id:
return jsonify(item)
return jsonify({'error': 'Item not found'}), 404
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=8080)
- 现在,您可以将商品目录 API 部署到 Cloud Run 了。我们需要通过左上角的菜单图标,从 Cloud Shell IDE 启动新的终端会话。点击菜单图标,然后点击终端 → New Terminal,如下所示:

- 在终端会话中,输入以下命令:
gcloud run deploy --source .
- 上述命令会询问要部署的
region,请选择us-central1。系统会要求允许unauthenticated invocations,请通过说出y来允许。 - 成功部署服务后,系统会提供一个服务网址。记下这一点。
4. 测试 Inventory API
您现在可以启动浏览器并访问以下端点,以测试 Inventory API:
SERVICE_URL/inventory
这应该会返回 3 个商品目录项,与服务中的示例数据一致。示例回答如下:
[
{
"id": 1,
"name": "Item 1",
"quantity": 10
},
{
"id": 2,
"name": "Item 2",
"quantity": 20
},
{
"id": 3,
"name": "Item 3",
"quantity": 30
}
]
现在,我们可以通过以下网址检索特定商品。这应该会返回 id 值为 1 的商品。
SERVICE_URL/inventory/1
回答应类似于以下内容:
{
"id": 1,
"name": "Item 1",
"quantity": 10
}
最后,我们可以尝试检索不存在的商品。
SERVICE_URL/inventory/200
由于没有 id 值为 200 的商品,因此该命令应返回一条错误消息。响应应该类似以下内容:
{
"error": "Item not found"
}
现在,我们已准备好在 Cloud Monitoring 中借助 Gemini 编写合成监控测试。
5. Google Cloud 中的合成监控
如文档中所述,合成监控工具使您可以定义要测试的内容以及测试序列。例如,您可以测试应用的登录页面、网店的结账流程,或是应用对第三方服务进行的 API 调用。
创建合成监控工具时,您需要部署基于 Cloud Run 构建的第 2 代 Cloud Functions 函数。您的函数必须使用 Node.js 编写,并依赖于开源 Synthetics SDK 框架。Cloud Monitoring 会分发和管理此框架。
Cloud Monitoring 支持以下类型的合成监控工具:
- 您可以使用自定义或基于 Mocha 的合成监控工具来部署完全可配置的单一用途 Cloud Functions 函数。
- 借助损坏的链接检查工具,您可以在部署预配置的 Cloud Function 之前指定选项,例如源 URI、测试的链接数量和重试次数。
Cloud Monitoring 在执行这些合成监控工具时会完成大量繁重的工作。它负责:
- Cloud Functions 函数的定期执行。
- 收集并存储每次执行的结果:
- 成功和失败信息,例如错误消息、错误类型和代码行
- 执行时间
- 日志
- 指标
我们将借助 Gemini,特别是 Help Me Write 功能,为我们提供测试的初始代码,以便我们使用该代码进行测试,并在此基础上构建更多功能。我们开始吧。
6. 为 Inventory API 测试用例编写合成监控工具
现在,我们将前往 Cloud 控制台来编写合成监控器。
访问 Cloud 控制台中的合成监控页面。系统会显示如下所示的页面:

点击上页中的创建合成监控器链接。系统会显示一个配置表单,如下所示:

我们已提供名称 s1,但您可以选择任何其他名称。请注意上图中的帮我编码按钮。点击该按钮。
系统随即会显示一个弹出式窗口,您需要在其中提供提示,说明要执行的测试用例,以确保 Inventory API 正常运行。

在提示编辑框中,使用如下所示的提示:
Help me write Node.js based synthetic test script with the assert module that performs the following tests:
1. A GET operation on SERVICE_URL/inventory. The http response code returned should be 200.
2. A GET operation on SERVICE_URL/inventory/1. The http response code returned should be 200. The response data is JSON format. It should be a single object with attributes as follows: "id" value should be 1, "name" value should be "Item 1" and "quantity" value should be 10.
3. A GET operation on SERVICE_URL/inventory/200. The https response code returned should be 404. The response data is in JSON format. It should be a single object with attributes as follows: "error" value should be "Item not found".
请注意,我们提供了 3 个测试用例,您应将 SERVICE_网址 值替换为您的服务的实际 Cloud Run 服务名称。
点击生成后,Gemini 将生成测试套件代码和 package.json 文件,如下所示。为您生成的代码可能与下方显示的代码有所不同。查看 package.json 文件中的代码和依赖项文件。

点击插入到 Cloud Functions。系统随即会显示 Cloud Functions 创建表单,其中已为您填充必要的值。

点击应用函数,然后点击创建按钮。在此示例中,我们未选择任何提醒渠道配置,但您可以随意选择。
这将在后台启动创建 Google Cloud Function 的流程。这可能需要几分钟的时间,请耐心等待。

成功部署 Cloud Functions 函数后,Cloud Monitoring 将开始为您调用合成监控工具。
一开始,您会看到没有调用,如下所示:

一旦有具体的跑步活动,您就可以看到各种执行情况。以下屏幕截图显示测试已通过:

如果您点击合成监控工具名称(例如 s1),系统会显示各种执行情况,如下所示:

7. 恭喜!
恭喜!您已成功将示例 API 部署到 Google Cloud Run,并编写了合成监控测试来验证该服务的功能。在此过程中,您利用 Gemini 帮助生成了测试套件的代码。