1. مقدمه
در این نرمافزار، ما به استفاده از ویژگی Help Me Write برای نوشتن تستهای نظارت مصنوعی برای سرویسهای موجود شما نگاه خواهیم کرد.
کاری که خواهی کرد...
- شما یک API را در Google Cloud Run مستقر خواهید کرد، که به عنوان پایه ای برای سرویس ما عمل می کند که ما آن را آزمایش خواهیم کرد.
- سپس یک مانیتور مصنوعی می نویسید که یکی از ویژگی های Cloud Monitoring است.
- برای نوشتن مانیتور مصنوعی از ویژگی Help Me Write استفاده خواهید کرد.
آنچه یاد خواهید گرفت...
- مانیتورینگ مصنوعی چیست؟
- نحوه استفاده از ویژگی Help me Write Gemini در Synthetic Monitoring، برای نوشتن موارد آزمایشی که عملکرد خدمات اصلی را تأیید می کند.
آنچه شما نیاز خواهید داشت ...
- مرورگر وب کروم
- یک اکانت جیمیل
- یک پروژه Cloud با فعال کردن صورتحساب
- Gemini Code Assist برای پروژه Cloud شما فعال شد
این آزمایشگاه برای توسعه دهندگان در تمام سطوح، از جمله مبتدیان هدف قرار گرفته است. اگرچه برنامه نمونه به زبان پایتون است، اما برای اینکه بفهمید چه اتفاقی می افتد، نیازی به آشنایی با برنامه نویسی پایتون ندارید.
2. راه اندازی
اکنون Gemini for Cloud را در پروژه Google Cloud خود فعال می کنیم. مراحل زیر را دنبال کنید:
- از https://console.cloud.google.com دیدن کنید و مطمئن شوید که پروژه Google Cloud را که قصد دارید با آن برای این آزمایشگاه کار کنید، انتخاب کرده اید. روی نماد Open Gemini که در بالا سمت راست می بینید کلیک کنید.
- پنجره چت Gemini for Cloud در سمت راست کنسول باز می شود. مطابق شکل زیر بر روی دکمه Enable کلیک کنید. اگر دکمه Enable را نمی بینید و به جای آن یک رابط چت می بینید، به احتمال زیاد Gemini را برای Cloud برای پروژه فعال کرده اید و می توانید مستقیماً به مرحله بعدی بروید.
- هنگامی که آن را فعال کنید، می توانید با پرسیدن یک یا دو پرس و جو از Gemini برای Cloud آزمایش کنید. چند نمونه پرس و جو نشان داده شده است، اما می توانید عبارت زیر را امتحان کنید
What is Synthetic Monitoring?
Gemini for Cloud با پاسخ به سوال شما پاسخ خواهد داد. فهرستی از اسناد مرجع ارائه شده در مورد نحوه نوشتن مانیتورهای مصنوعی در Google Cloud را بررسی کنید.
می توانید روی آن کلیک کنید نماد در گوشه سمت راست بالا برای بستن پنجره چت Gemini for Cloud.
3. یک نمونه Inventory API را در Google Cloud Run مستقر کنید
قبل از نوشتن با تستها، به یک API نمونه نیاز داریم که بتوانیم آن را آزمایش کنیم. برای این کار، یک API موجودی ساده می نویسیم که در Google Cloud Run مستقر خواهیم کرد.
ما از Cloud Shell IDE، یک محیط توسعه مبتنی بر کد OSS با مدیریت کامل استفاده خواهیم کرد. این محیط دارای برنامه افزودنی Cloud Code IDE است که کار با خدمات Google Cloud را کارآمد می کند. مراحل زیر را دنبال کنید:
- از ide.cloud.google.com دیدن کنید. ممکن است کمی طول بکشد تا IDE ظاهر شود، پس لطفا صبور باشید.
- همانطور که نشان داده شده است، روی دکمه Cloud Code - Sign in در نوار وضعیت پایین کلیک کنید. پلاگین را طبق دستورالعمل مجاز کنید. اگر «کد ابری - بدون پروژه» را در نوار وضعیت میبینید، آن را انتخاب کنید و سپس پروژه Google Cloud خاص را از لیست پروژههایی که قصد دارید با آنها کار کنید، انتخاب کنید.
- همانطور که نشان داده شده است روی دکمه 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
باز می شود. فعلاً می توانید آن نمای را ببندید.
- از 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 از طریق نماد منو در بالا سمت چپ راه اندازی کنیم. مطابق شکل زیر روی نماد منو و سپس ترمینال → ترمینال جدید کلیک کنید:
- در جلسه ترمینال دستور زیر را بدهید:
gcloud run deploy --source .
- دستور بالا در مورد
region
برای استقرار می پرسد، لطفاus-central1
را انتخاب کنید. این درخواست می کند کهunauthenticated invocations
مجاز باشد، لطفاً با گفتنy
اجازه دهید. - هنگامی که سرویس با موفقیت مستقر شد، یک URL سرویس ارائه می دهد. توجه داشته باشید که پایین.
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 } ]
اکنون میتوانیم یک آیتم موجودی خاص را از طریق URL زیر بازیابی کنیم. این باید آیتم موجودی را که دارای مقدار id
1 است به شما بازگرداند.
SERVICE_URL/inventory/1
پاسخ باید شبیه به موارد زیر باشد:
{ "id": 1, "name": "Item 1", "quantity": 10 }
در نهایت، میتوانیم سعی کنیم یک آیتم موجودی را که وجود ندارد، بازیابی کنیم.
SERVICE_URL/inventory/200
این باید یک پیام خطا به شما برگرداند زیرا هیچ کالای موجودی با مقدار id
200 وجود ندارد. پاسخ باید مشابه زیر باشد:
{ "error": "Item not found" }
ما اکنون آماده ایم تا با کمک Gemini، تست های نظارت مصنوعی خود را در مانیتورینگ ابری بنویسیم.
5. نظارت مصنوعی در Google Cloud
همانطور که مستندات بیان می کند، مانیتورهای مصنوعی به شما امکان می دهند آنچه را که می خواهید آزمایش کنید و دنباله ای از آزمایش ها را مشخص کنید. به عنوان مثال، می توانید صفحه ورود به سیستم برنامه خود، فرآیند پرداخت فروشگاه تجارت الکترونیک خود یا تماس های API را که برنامه شما با سرویس های شخص ثالث انجام می دهد، آزمایش کنید.
هنگامی که یک مانیتور مصنوعی ایجاد می کنید، یک تابع Cloud نسل دوم را که بر روی Cloud Run ساخته شده است، مستقر می کنید. تابع شما باید در Node.js نوشته شود و بر چارچوب متن باز Synthetics SDK تکیه کند. Cloud Monitoring این چارچوب را توزیع و مدیریت می کند.
Cloud Monitoring از انواع مانیتورهای مصنوعی زیر پشتیبانی می کند:
- مانیتورهای مصنوعی سفارشی یا مبتنی بر موکا به شما این امکان را می دهند که یک عملکرد ابری تک منظوره کاملاً قابل تنظیم را به کار بگیرید.
- چککنندههای پیوند شکسته به شما امکان میدهند گزینههایی مانند URI مبدا، تعداد پیوندهای آزمایششده، و تعداد تلاشهای مجدد را قبل از استقرار یک عملکرد ابری از پیش پیکربندیشده مشخص کنید.
Cloud Monitoring هنگام اجرای این مانیتورهای مصنوعی، کارهای سنگین زیادی را انجام می دهد. مسئول این است:
- اجرای دوره ای Cloud Function شما.
- جمع آوری و ذخیره نتایج هر اجرا:
- اطلاعات موفقیت و شکست، مانند پیام خطا، نوع خطا و خط کد
- زمان اجرا
- سیاههها
- معیارها
ما قصد داریم از Gemini و به طور خاص از ویژگی Help Me Write
که کد اولیه تست ها را در اختیار ما قرار می دهد، کمک بگیریم تا بتوانیم از آن برای آزمایش و همچنین ایجاد ویژگی های اضافی در بالای آن استفاده کنیم. بیا بریم
6. نوشتن مانیتور مصنوعی ما برای موارد تست Inventory API
ما اکنون به کنسول Cloud می رویم تا مانیتور مصنوعی خود را بنویسیم.
از صفحه Synthetic Monitoring در Cloud Console دیدن کنید. با این کار صفحه مطابق شکل زیر ظاهر می شود:
روی لینک ایجاد مانیتور مصنوعی در صفحه بالا کلیک کنید. با این کار یک فرم پیکربندی مانند شکل زیر ظاهر می شود:
ما یک نام s1
ارائه کرده ایم، اما شما می توانید هر نام دیگری را انتخاب کنید. به دکمه HELP ME CODE در صفحه بالا توجه کنید. روی آن کلیک کنید.
با این کار یک پنجره بازشو ظاهر میشود که در آن باید اعلانی را ارائه دهید که موارد آزمایشی را که میخواهید اجرا کنید را برای اطمینان از اینکه 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 سرویس خود جایگزین کنید.
هنگامی که روی GENERATE کلیک کردید، Gemini کد Test Suite و فایل package.json
را نیز مانند شکل زیر تولید می کند. کد ایجاد شده برای شما ممکن است با کدی که در زیر می بینید متفاوت باشد. به کد و فایل های وابستگی در فایل package.json
نگاهی بیندازید.
روی INSERT INTO CLOUD FUNCTION کلیک کنید. با این کار یک فرم ایجاد Cloud Function با مقادیر لازم برای شما ظاهر می شود.
بر روی APPLY FUNCTION و سپس دکمه CREATE کلیک کنید. ما هیچ پیکربندی کانال هشدار را در این مثال انتخاب نکردیم، اما شما در انتخاب آن آزاد هستید.
با این کار فرآیند ایجاد Google Cloud Function در پس زمینه شروع می شود. این ممکن است چند دقیقه طول بکشد، پس صبور باشید.
هنگامی که عملکرد Cloud با موفقیت اجرا شد، Cloud Monitoring کار فراخوانی مانیتور مصنوعی را برای شما آغاز می کند.
در ابتدا خواهید دید که هیچ فراخوانی وجود ندارد، همانطور که در زیر نشان داده شده است:
هنگامی که اجراهای خاصی وجود دارد، می توانید اجرای مختلف را ببینید. صفحه زیر نشان می دهد که آزمون ها در حال گذراندن هستند:
اگر روی نام مانیتور مصنوعی (مثلا s1) کلیک کنید، اجراهای مختلف مانند شکل زیر نشان داده می شود:
7. تبریک می گویم!
تبریک - شما با موفقیت یک API نمونه را در Google Cloud Run پیادهسازی کردید و آزمایشهای نظارت مصنوعی را برای تأیید عملکرد سرویس نوشتید. در طول این فرآیند، شما از Gemini برای کمک به تولید کد برای مجموعه تست استفاده کردید.