1. 簡介
在本程式碼研究室中,我們應如何運用「幫我寫」功能,為現有服務編寫綜合監控測試。
您將要執行的操作...
- 我們會將 API 部署至 Google Cloud Run,以便測試 Google 服務的基礎。
- 然後編寫合成監控器,這是 Cloud Monitoring 的功能。
- 您將使用「幫我寫」功能編寫綜合監控器。
課程內容...
- 什麼是綜合監控。
- 如何使用 Gemini 的「幫我寫」功能,撰寫驗證核心服務功能的測試案例。
軟硬體需求
- Chrome 網路瀏覽器
- Gmail 帳戶
- 已啟用計費功能的 Cloud 專案
- 你的 Cloud 專案已啟用 Gemini Code Assist
本研究室的適用對象為各級開發人員,包括初學者。雖然範例應用程式採用 Python 語言,但您不需要熟悉 Python 程式也能瞭解實際情況。
2. 設定
我們現在會在 Google Cloud 專案中啟用 Gemini 版 Cloud。步驟如下:
- 請前往 https://console.cloud.google.com,確認已選取這個研究室要執行的 Google Cloud 專案。按一下畫面右上方的「開啟 Gemini」圖示。
- Cloud Chat 專用 Gemini 視窗隨即會在控制台右側開啟。按一下「啟用」按鈕,如下所示。如果系統未顯示「啟用」按鈕,而是看到 Chat 介面,可能是因為專案已啟用 Gemini 版 Cloud,您可以直接進行下一個步驟。
- 啟用之後,只要查詢一、兩個查詢,就能測試 Cloud 專用 Gemini。目前顯示了幾項查詢範例,但您可以嘗試下列查詢:
What is Synthetic Monitoring?
Cloud 專用 Gemini 會回覆您的問題。參閱這份參考說明文件,瞭解如何在 Google Cloud 中編寫綜合監控項目。
您可以點選右上角的 圖示,關閉 Gemini 版 Cloud Chat 視窗。
3. 在 Google Cloud Run 中部署 Inventory API 範例
我們在撰寫測試之前,需要有一個範例 API 以供測試。因此,我們將撰寫一個要部署至 Google Cloud Run 的簡單庫存 API。
我們將使用 Cloud Shell IDE,這是以程式碼 OSS 為基礎的開發環境。此環境隨附 Cloud Code IDE 擴充功能,提升 Google Cloud 服務使用效率。步驟如下:
- 前往 ide.cloud.google.com。IDE 可能需要一段時間才會顯示,請耐心等候。
- 按一下底部狀態列中的「Cloud Code - 登入」按鈕 (如圖所示)。按照指示授權外掛程式。如果您在狀態列中看到「Cloud Code - no project」,請選取該專案,然後從您打算使用的專案清單中選取特定的 Google Cloud 專案。
- 點選畫面右下角的「Gemini」Gemini按鈕,然後選取最後一次正確的 Google Cloud 專案。如果系統要求您啟用 Cloud AI Companion API,請啟用該 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 函式。您的函式必須以 Node.js 編寫,並採用開放原始碼的 Synthetics SDK 架構。Cloud Monitoring 會發布及管理這個架構。
Cloud Monitoring 支援下列類型的綜合監控:
- 自訂或 Mocha 式綜合監控可讓您部署可完全設定的單一用途 Cloud 函式。
- 在部署預先設定的 Cloud 函式之前,您可以透過故障連結檢查工具指定選項,例如來源 URI、測試的連結數量和重試次數。
Cloud Monitoring 執行這些綜合監控時,會執行大量繁重的工作。負責以下事項:
- 定期執行 Cloud 函式。
- 收集並儲存每次執行作業的結果:
- 成功和失敗資訊,例如錯誤訊息、錯誤類型和一行程式碼
- 執行時間
- 記錄
- 指標
我們會取得 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_URL 值替換為您服務的實際 Cloud Run 服務名稱。
點選「產生」後,Gemini 就會產生測試套件程式碼和 package.json
檔案,如下所示。系統為您產生的程式碼可能與下方顯示的程式碼不同。請查看 package.json
檔案中的程式碼和依附元件檔案。
按一下「插入雲端函式」。畫面上會出現 Cloud 函式建立表單,並填入必要的值。
依序點選「套用函式」和「建立」按鈕。這個範例並未選擇任何快訊管道設定,但您可以自由選擇。
這項操作會開始在背景建立 Google Cloud 函式。這可能需要幾分鐘的時間,請耐心等候。
成功部署 Cloud 函式後,Cloud Monitoring 會開始為您叫用綜合監控器的工作。
一開始會顯示沒有任何叫用,如下所示:
具體執行作業後,即可查看各個執行作業。以下畫面顯示測試是否通過:
按一下綜合監控器名稱 (例如 s1),畫面上就會顯示各種執行作業,如下所示:
7. 恭喜!
恭喜!您已成功將 API 範例部署至 Google Cloud Run,並編寫綜合監控測試來驗證服務功能。您在過程中運用 Gemini 生成測試套件的程式碼。