1. 簡介
在本程式碼研究室中,我們將瞭解如何使用「幫我寫」功能,為現有服務撰寫綜合監控測試。
執行步驟
- 您將 API 部署至 Google Cloud Run,做為我們測試服務的基礎。
- 接著,您會編寫綜合監控器,這是 Cloud Monitoring 的一項功能。
- 您將使用「幫我寫」功能撰寫合成監控器。
課程內容...
- 瞭解綜合監控。
- 瞭解如何在 Synthetic Monitoring 中使用 Gemini 的「幫我寫」功能,撰寫測試案例來驗證核心服務功能。
事前準備
- 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 對話視窗。點選「啟用」按鈕,如下所示。如果沒有看到「啟用」按鈕,而是看到 Chat 介面,表示您可能已為專案啟用 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 - Sign in」按鈕,如下圖所示。依指示授權外掛程式。如果狀態列顯示「Cloud Code - no project」,請選取該項目,然後從專案清單中選取要使用的特定 Google Cloud 專案。

- 如圖所示,按一下右下角的「Gemini」Gemini按鈕,然後最後一次選取正確的 Google Cloud 專案。如果系統要求啟用 Cloud AI Companion API,請啟用並繼續操作。
- 選取 Google Cloud 專案後,請確認狀態列的 Cloud Code 狀態訊息中已顯示該專案,且狀態列右側也已啟用 Code Assist,如下所示:

- 按一下下方狀態列中的 Google Cloud 專案名稱。

- 系統會顯示選項清單,按一下下方清單中的「New Application」。

- 選取「Cloud Run」應用程式。
- 選取「Python (Flask): Cloud Run」應用程式範本。
- 將新應用程式儲存到偏好的位置。
- 系統會顯示通知,確認您已建立應用程式,並開啟新視窗,載入應用程式,如下所示。系統會開啟
README.md檔案。目前可以關閉該畫面。

- 在檔案總管中前往
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 啟動新的終端機工作階段。按一下選單圖示,然後依序點選「Terminal」→「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"
}
現在我們已準備好在 Gemini 的協助下,於 Cloud Monitoring 中編寫綜合監控測試。
5. Google Cloud 中的綜合監控
如說明文件所述,合成監控器可讓您定義要測試的內容和測試順序。舉例來說,您可以測試應用程式的登入頁面、電子商務商店的結帳程序,或是應用程式對第三方服務發出的 API 呼叫。
建立綜合監控時,您會部署以 Cloud Run 為基礎的第 2 代 Cloud Function。函式必須以 Node.js 編寫,並依附開放原始碼的 Synthetics SDK 架構。Cloud Monitoring 會發布及管理這個架構。
Cloud Monitoring 支援下列類型的綜合監控器:
- 自訂或以 Mocha 為基礎的綜合監控項目可讓您部署完全可設定的單一用途 Cloud 函式。
- 失效連結檢查工具可讓您指定選項 (例如來源 URI、測試的連結數量和重試次數),然後再部署預先設定的 Cloud 函式。
執行這些綜合監控項目時,Cloud Monitoring 會執行許多繁重的工作。負責:
- 定期執行 Cloud Functions。
- 收集並儲存每次執行的結果:
- 成功和失敗資訊,例如錯誤訊息、錯誤類型和程式碼行
- 執行時間
- 記錄
- 指標
我們將使用 Gemini,特別是 Help Me Write 功能,取得測試的初始程式碼,以便進行測試,並在此基礎上建構額外功能。我們開始吧。
6. 為 Inventory API 測試案例編寫綜合監控項目
現在我們要前往 Cloud Console,編寫綜合監控器。
前往 Cloud 控制台的「綜合監控」頁面。系統會顯示如下所示的頁面:

按一下上述頁面中的「CREATE SYNTHETIC MONITOR」(建立合成監控) 連結。系統會顯示如下所示的設定表單:

我們已提供名稱「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_URL 值替換為服務的實際 Cloud Run 服務名稱。
按一下「生成」後,Gemini 會生成測試套件程式碼和 package.json 檔案,如下所示。為您生成的程式碼可能與下方顯示的程式碼不同。查看 package.json 檔案中的程式碼和依附元件檔案。

按一下「INSERT INTO CLOUD FUNCTION」(插入到 Cloud Functions)。系統會顯示 Cloud Functions 建立表單,並為您填入必要值。

依序點選「套用函式」和「建立」按鈕。在本範例中,我們未選擇任何警報管道設定,但您可以自由選取。
系統會在背景啟動 Google Cloud 函式建立程序。這項作業可能需要幾分鐘,請耐心等候。

Cloud 函式部署完成後,Cloud Monitoring 就會開始為您叫用綜合監控項目。
一開始您會看到沒有任何呼叫,如下所示:

一旦有特定執行作業,您就能查看各種執行作業。下圖顯示測試已通過:

按一下「綜合監控」名稱 (例如 s1),就會顯示各種執行作業,如下所示:

7. 恭喜!
恭喜!您已成功將範例 API 部署至 Google Cloud Run,並編寫綜合監控測試來驗證服務功能。過程中,您運用 Gemini 生成測試套件的程式碼。