使用 Gemini 編寫服務的綜合監控測試

1. 簡介

在本程式碼研究室中,我們應如何運用「幫我寫」功能,為現有服務編寫綜合監控測試。

您將要執行的操作...

  • 我們會將 API 部署至 Google Cloud Run,以便測試 Google 服務的基礎。
  • 然後編寫合成監控器,這是 Cloud Monitoring 的功能。
  • 您將使用「幫我寫」功能編寫綜合監控器。

課程內容...

  • 什麼是綜合監控。
  • 如何使用 Gemini 的「幫我寫」功能,撰寫驗證核心服務功能的測試案例。

軟硬體需求

  • Chrome 網路瀏覽器
  • Gmail 帳戶
  • 已啟用計費功能的 Cloud 專案
  • 你的 Cloud 專案已啟用 Gemini Code Assist

本研究室的適用對象為各級開發人員,包括初學者。雖然範例應用程式採用 Python 語言,但您不需要熟悉 Python 程式也能瞭解實際情況。

2. 設定

我們現在會在 Google Cloud 專案中啟用 Gemini 版 Cloud。步驟如下:

  1. 請前往 https://console.cloud.google.com,確認已選取這個研究室要執行的 Google Cloud 專案。按一下畫面右上方的「開啟 Gemini」圖示。

28f084ec1e159938.png

  1. Cloud Chat 專用 Gemini 視窗隨即會在控制台右側開啟。按一下「啟用」按鈕,如下所示。如果系統未顯示「啟用」按鈕,而是看到 Chat 介面,可能是因為專案已啟用 Gemini 版 Cloud,您可以直接進行下一個步驟。

e8df9adc4ea43a37.png

  1. 啟用之後,只要查詢一、兩個查詢,就能測試 Cloud 專用 Gemini。目前顯示了幾項查詢範例,但您可以嘗試下列查詢:What is Synthetic Monitoring?

9859ea86a8310cb.png

Cloud 專用 Gemini 會回覆您的問題。參閱這份參考說明文件,瞭解如何在 Google Cloud 中編寫綜合監控項目。

您可以點選右上角的 f68286b2b2ea5c0a.png 圖示,關閉 Gemini 版 Cloud Chat 視窗。

3. 在 Google Cloud Run 中部署 Inventory API 範例

我們在撰寫測試之前,需要有一個範例 API 以供測試。因此,我們將撰寫一個要部署至 Google Cloud Run 的簡單庫存 API。

我們將使用 Cloud Shell IDE,這是以程式碼 OSS 為基礎的開發環境。此環境隨附 Cloud Code IDE 擴充功能,提升 Google Cloud 服務使用效率。步驟如下:

  1. 前往 ide.cloud.google.com。IDE 可能需要一段時間才會顯示,請耐心等候。
  2. 按一下底部狀態列中的「Cloud Code - 登入」按鈕 (如圖所示)。按照指示授權外掛程式。如果您在狀態列中看到「Cloud Code - no project」,請選取該專案,然後從您打算使用的專案清單中選取特定的 Google Cloud 專案。

6f5ce865fc7a3ef5.png

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

709e6c8248ac7d88.png

  1. 在下方狀態列中點選 Google Cloud 專案名稱

f151759c156c124e.png

  1. 畫面上會顯示選項清單。在下方清單中點選「New Application」

91ea9836f38b7f74.png

  1. 選取「Cloud Run」應用程式。
  2. 選取「Python (Flask): Cloud Run」應用程式範本。
  3. 將新應用程式儲存到偏好位置。
  4. 您會收到確認應用程式已建立的通知,同時系統會開啟一個新視窗,並顯示您的應用程式,如下所示。系統隨即會開啟 README.md 檔案。您現在可以關閉該檢視畫面。

ed250f23b0e4fee8.png

  1. 在檔案總管中前往 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)
  1. 下一步是將商品目錄 API 部署至 Cloud Run。您必須透過左上方的選單圖示,從 Cloud Shell IDE 啟動新的終端機工作階段。依序按一下選單圖示和「Terminal」(終端機) →「New Terminal」(新增終端機),如下所示:

289173c68f1addb5.png

  1. 在終端機工作階段中輸入下列指令:
gcloud run deploy --source .
  1. 上述指令會詢問要部署 region 的相關資訊,請選擇 us-central1。系統會要求你允許「unauthenticated invocations,如要授予權限,請說出 y
  2. 服務部署成功後,會提供服務網址。這裡要注意,

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 函式。您的函式必須以 Node.js 編寫,並採用開放原始碼的 Synthetics SDK 架構。Cloud Monitoring 會發布及管理這個架構。

Cloud Monitoring 支援下列類型的綜合監控:

Cloud Monitoring 執行這些綜合監控時,會執行大量繁重的工作。負責以下事項:

  • 定期執行 Cloud 函式。
  • 收集並儲存每次執行作業的結果:
  • 成功和失敗資訊,例如錯誤訊息、錯誤類型和一行程式碼
  • 執行時間
  • 記錄
  • 指標

我們會取得 Gemini 的協助,尤其是 Help Me Write 功能,其中會提供測試的初始程式碼,以便我們利用這項測試進行測試,並根據結果開發其他功能。讓我們開始吧

6. 編寫 Inventory API 測試案例的綜合監控器

我們即將前往 Cloud 控制台撰寫綜合監控項目。

前往 Cloud 控制台的「綜合監控」頁面。畫面隨即顯示以下頁面:

96bfce88f55442f3.png

點選上述頁面中的「建立自動化監控」連結。畫面上隨即會顯示設定表單,如下所示:

af4dde3e9e0a5a16.png

我們已提供一個名稱「s1」,但您可以選擇其他名稱。請留意上方畫面的「正確程式碼」按鈕。按一下該按鈕。

畫面上會出現彈出式視窗,請在其中輸入提示,說明要執行的測試案例,確保 Inventory API 正常運作。

a13e78db15b37dd3.png

在提示編輯方塊中,使用類似下方的提示:

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 檔案中的程式碼和依附元件檔案。

d19340c357f620bd.png

按一下「插入雲端函式」。畫面上會出現 Cloud 函式建立表單,並填入必要的值。

d70e50624a09149a.png

依序點選「套用函式」和「建立」按鈕。這個範例並未選擇任何快訊管道設定,但您可以自由選擇。

這項操作會開始在背景建立 Google Cloud 函式。這可能需要幾分鐘的時間,請耐心等候。

1b07702ea5ac5bdb.png

成功部署 Cloud 函式後,Cloud Monitoring 會開始為您叫用綜合監控器的工作。

一開始會顯示沒有任何叫用,如下所示:

dac473269a289a3b.png

具體執行作業後,即可查看各個執行作業。以下畫面顯示測試是否通過:

dc2d7dd98277fbcc.png

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

8369a02b413d12cc.png

7. 恭喜!

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

8. 參考說明文件