نوشتن تست های نظارت مصنوعی برای خدمات خود با استفاده از Gemini

۱. مقدمه

در این آزمایشگاه کد، به بررسی استفاده از ویژگی Help Me Write برای نوشتن تست‌های مانیتورینگ مصنوعی برای سرویس‌های موجود شما خواهیم پرداخت.

کاری که انجام خواهی داد...

  • شما یک API را در Google Cloud Run مستقر خواهید کرد که به عنوان پایه‌ای برای سرویسی که ما آزمایش خواهیم کرد، عمل خواهد کرد.
  • سپس یک مانیتور مصنوعی خواهید نوشت که یکی از ویژگی‌های مانیتورینگ ابری است.
  • شما از ویژگی Help Me Write برای نوشتن Synthetic Monitor استفاده خواهید کرد.

آنچه یاد خواهید گرفت...

  • نظارت مصنوعی چیست؟
  • نحوه استفاده از ویژگی Help me Write در Gemini در Synthetic Monitoring، برای نوشتن موارد آزمایشی که عملکرد اصلی سرویس را تأیید می‌کنند.

آنچه نیاز خواهید داشت...

  • مرورگر وب کروم
  • یک حساب جیمیل
  • یک پروژه ابری با قابلیت پرداخت صورتحساب
  • Gemini Code Assist برای پروژه ابری شما فعال شده است

این آزمایشگاه برای توسعه‌دهندگان در تمام سطوح، از جمله مبتدیان، مناسب است. اگرچه برنامه نمونه به زبان پایتون است، اما برای درک آنچه در آن اتفاق می‌افتد، نیازی به آشنایی با برنامه‌نویسی پایتون ندارید.

۲. راه‌اندازی

اکنون Gemini را برای Cloud در پروژه Google Cloud خود فعال خواهیم کرد. مراحل زیر را دنبال کنید:

  1. به آدرس https://console.cloud.google.com مراجعه کنید و مطمئن شوید که پروژه ابری گوگل (Google Cloud Project) مورد نظر خود را برای این آزمایشگاه انتخاب کرده‌اید. روی آیکون Open Gemini که در بالا سمت راست می‌بینید کلیک کنید.

28f084ec1e159938.png

  1. پنجره چت Gemini for Cloud در سمت راست کنسول باز می‌شود. مطابق شکل زیر، روی دکمه فعال‌سازی کلیک کنید. اگر دکمه فعال‌سازی را نمی‌بینید و به جای آن رابط چت را می‌بینید، احتمالاً قبلاً Gemini for Cloud را برای پروژه فعال کرده‌اید و می‌توانید مستقیماً به مرحله بعدی بروید.

e8df9adc4ea43a37.png

  1. پس از فعال شدن، می‌توانید با پرسیدن یک یا دو سوال، Gemini for Cloud را امتحان کنید. چند سوال نمونه نشان داده شده است، اما می‌توانید سوال زیر را امتحان کنید: What is Synthetic Monitoring?

۹۸۵۹ea۸۶a۸۳۱۰cb.png

Gemini for Cloud به سوال شما پاسخ خواهد داد. فهرست مستندات مرجع ارائه شده در مورد نحوه نوشتن مانیتورهای مصنوعی در Google Cloud را بررسی کنید.

شما می‌توانید روی کلیک کنید f68286b2b2ea5c0a.png برای بستن پنجره چت Gemini for Cloud، روی نماد در گوشه بالا سمت راست کلیک کنید.

۳. یک نمونه API موجودی کالا را در Google Cloud Run مستقر کنید

قبل از اینکه شروع به نوشتن تست‌ها کنیم، به یک API نمونه نیاز داریم که بتوانیم روی آن تست کنیم. برای این کار، یک API ساده برای موجودی کالا خواهیم نوشت که آن را روی Google Cloud Run مستقر خواهیم کرد.

ما از Cloud Shell IDE، یک محیط توسعه کاملاً مدیریت‌شده مبتنی بر Code OSS، استفاده خواهیم کرد. این محیط با افزونه Cloud Code IDE ارائه می‌شود که کار با سرویس‌های Google Cloud را کارآمد می‌کند. مراحل زیر را دنبال کنید:

  1. به ide.cloud.google.com مراجعه کنید. ممکن است نمایش IDE کمی طول بکشد، بنابراین لطفاً صبور باشید.
  2. همانطور که نشان داده شده است، روی دکمه Cloud Code - Sign in در نوار وضعیت پایین کلیک کنید. افزونه را طبق دستورالعمل تأیید کنید. اگر عبارت "Cloud Code - بدون پروژه" را در نوار وضعیت مشاهده کردید، آن را انتخاب کنید و سپس پروژه خاص Google Cloud را از لیست پروژه‌هایی که قصد دارید با آنها کار کنید، انتخاب کنید.

6f5ce865fc7a3ef5.png

  1. همانطور که نشان داده شده است، روی دکمه Gemini در گوشه پایین سمت راست کلیک کنید و برای آخرین بار پروژه صحیح Google Cloud را انتخاب کنید. اگر از شما خواسته شد که Cloud AI Companion API را فعال کنید، لطفاً این کار را انجام دهید و به مرحله بعد بروید.
  2. پس از انتخاب پروژه گوگل کلود خود، مطمئن شوید که می‌توانید آن را در پیام وضعیت Cloud Code در نوار وضعیت مشاهده کنید و همچنین Code Assist را در سمت راست، در نوار وضعیت، مطابق شکل زیر فعال کرده باشید:

709e6c8248ac7d88.png

  1. روی نام پروژه Google Cloud در نوار وضعیت زیر کلیک کنید.

f151759c156c124e.png

  1. لیستی از گزینه‌ها ظاهر می‌شود. از لیست زیر روی «درخواست جدید» کلیک کنید.

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 راه‌اندازی کنیم. روی نماد منو کلیک کنید و سپس ترمینال → ترمینال جدید را مطابق شکل زیر دنبال کنید:

289173c68f1addb5.png

  1. در بخش ترمینال، دستور زیر را وارد کنید:
gcloud run deploy --source .
  1. دستور بالا در مورد region که باید مستقر شود سوال می‌کند، لطفاً us-central1 را انتخاب کنید. از شما خواسته می‌شود که اجازه unauthenticated invocations را بدهید، لطفاً با گفتن y این اجازه را بدهید.
  2. پس از استقرار موفقیت‌آمیز سرویس، یک URL سرویس ارائه می‌دهد. آن را یادداشت کنید.

۴. API موجودی را آزمایش کنید

اکنون می‌توانید با باز کردن مرورگر و لمس کردن موارد زیر، API مربوط به Inventory را آزمایش کنید:

SERVICE_URL/inventory

این دستور باید ۳ قلم کالا را طبق داده‌های نمونه در سرویس به شما برگرداند. پاسخ نمونه در زیر آمده است:

[
  {
    "id": 1,
    "name": "Item 1",
    "quantity": 10
  },
  {
    "id": 2,
    "name": "Item 2",
    "quantity": 20
  },
  {
    "id": 3,
    "name": "Item 3",
    "quantity": 30
  }
]

اکنون می‌توانیم یک کالای موجودی خاص را از طریق URL زیر بازیابی کنیم. این باید کالای موجودی را که دارای مقدار id ۱ است، به شما برگرداند.

SERVICE_URL/inventory/1

پاسخ باید مشابه زیر باشد:

{
  "id": 1,
  "name": "Item 1",
  "quantity": 10
}

در نهایت، می‌توانیم سعی کنیم کالایی را که وجود ندارد، بازیابی کنیم.

SERVICE_URL/inventory/200

این دستور باید یک پیام خطا به شما برگرداند زیرا هیچ کالای موجودی با مقدار id ۲۰۰ وجود ندارد. پاسخ باید مشابه موارد زیر باشد:

{
  "error": "Item not found"
}

اکنون آماده‌ایم تا با کمک Gemini، تست‌های مانیتورینگ مصنوعی خود را در Cloud Monitoring بنویسیم.

۵. نظارت مصنوعی در فضای ابری گوگل

همانطور که در مستندات آمده است، مانیتورهای مصنوعی به شما امکان می‌دهند آنچه را که می‌خواهید آزمایش کنید و توالی آزمایش‌ها را تعریف کنید. به عنوان مثال، می‌توانید صفحه ورود به سیستم برنامه خود، فرآیند پرداخت فروشگاه تجارت الکترونیک خود یا فراخوانی‌های API که برنامه شما به سرویس‌های شخص ثالث انجام می‌دهد را آزمایش کنید.

وقتی یک مانیتور مصنوعی ایجاد می‌کنید، یک تابع ابری نسل دوم را که بر روی Cloud Run ساخته شده است، مستقر می‌کنید. تابع شما باید در Node.js نوشته شود و به چارچوب Synthetics SDK متن‌باز متکی باشد. Cloud Monitoring این چارچوب را توزیع و مدیریت می‌کند.

مانیتورینگ ابری از انواع مانیتورهای مصنوعی زیر پشتیبانی می‌کند:

Cloud Monitoring هنگام اجرای این مانیتورهای مصنوعی، کارهای سنگین زیادی انجام می‌دهد. این بخش مسئول موارد زیر است:

  • اجرای دوره‌ای عملکرد ابری شما.
  • جمع‌آوری و ذخیره نتایج هر اجرا:
  • اطلاعات موفقیت و شکست، مانند پیام خطا، نوع خطا و خط کد
  • زمان اجرا
  • سیاههها
  • معیارها

ما قصد داریم از Gemini و به طور خاص از ویژگی Help Me Write که کد اولیه برای تست‌ها را در اختیار ما قرار می‌دهد، کمک بگیریم تا بتوانیم از آن برای آزمایش و همچنین ایجاد ویژگی‌های اضافی بر روی آن استفاده کنیم. بیایید شروع کنیم.

۶. نوشتن مانیتور مصنوعی برای موارد آزمایشی API موجودی

اکنون برای نوشتن مانیتور مصنوعی خود به کنسول ابری می‌رویم.

به صفحه Synthetic Monitoring در Cloud Console مراجعه کنید. این صفحه‌ای مانند تصویر زیر را نمایش می‌دهد:

96bfce88f55442f3.png

روی لینک CREATE SYNTHETIC MONITOR در صفحه بالا کلیک کنید. این کار فرم پیکربندی را مطابق شکل زیر نمایش می‌دهد:

af4dde3e9e0a5a16.png

ما نام s1 را ارائه داده‌ایم، اما شما می‌توانید هر نام دیگری را انتخاب کنید. به دکمه‌ی «کمک به کد» در صفحه‌ی بالا توجه کنید. روی آن کلیک کنید.

این کار یک پنجره بازشو (popup) نمایش می‌دهد که در آن باید فرمی را پر کنید که موارد آزمایشی (test case) مورد نظر برای اجرا را شرح می‌دهد تا از عملکرد صحیح API موجودی (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". 

توجه داشته باشید که ما ۳ مورد آزمایشی ارائه کرده‌ایم و شما باید مقدار SERVICE_URL را با نام واقعی سرویس Cloud Run برای سرویس خود جایگزین کنید.

پس از کلیک بر روی GENERATE ، Gemini کد Test Suite و فایل package.json را نیز مطابق شکل زیر تولید می‌کند. کدی که برای شما تولید می‌شود ممکن است با کدی که در زیر می‌بینید متفاوت باشد. به کد و فایل‌های وابستگی در فایل package.json نگاهی بیندازید.

d19340c357f620bd.png

روی INSERT INTO CLOUD FUNCTION کلیک کنید. این یک فرم ایجاد تابع ابری با مقادیر لازم برای شما ایجاد می‌کند.

d70e50624a09149a.png

روی دکمه‌ی «اعمال تابع» (APLY FUNCTION) و سپس دکمه‌ی «ایجاد» (CREATE) کلیک کنید. ما در این مثال هیچ پیکربندی کانال هشداری انتخاب نکردیم، اما شما می‌توانید آن را انتخاب کنید.

این کار فرآیند ایجاد تابع گوگل کلود را در پس‌زمینه آغاز می‌کند. این کار ممکن است چند دقیقه طول بکشد، پس صبور باشید.

1b07702ea5ac5bdb.png

پس از استقرار موفقیت‌آمیز تابع ابر، Cloud Monitoring وظیفه فراخوانی مانیتور مصنوعی را برای شما آغاز خواهد کرد.

در ابتدا خواهید دید که هیچ فراخوانی وجود ندارد، همانطور که در زیر نشان داده شده است:

dac473269a289a3b.png

پس از اجرای تست‌های خاص، می‌توانید اجراهای مختلف را مشاهده کنید. صفحه زیر نشان می‌دهد که تست‌ها با موفقیت انجام شده‌اند:

dc2d7dd98277fbcc.png

اگر روی نام مانیتور مصنوعی (مثلاً s1) کلیک کنید، اجراهای مختلف را مطابق شکل زیر نشان می‌دهد:

8369a02b413d12cc.png

۷. تبریک می‌گویم!

تبریک می‌گوییم - شما با موفقیت یک API نمونه را در Google Cloud Run مستقر کرده‌اید و تست‌های Synthetic Monitoring را برای اعتبارسنجی عملکرد سرویس نوشته‌اید. در طول این فرآیند، از Gemini برای تولید کد برای Test Suite استفاده کرده‌اید.

۸. اسناد مرجع