1. مقدمة
في هذا الدرس التطبيقي حول الترميز، سنلقي نظرة على كيفية استخدام ميزة مساعدة في الكتابة لإنشاء اختبارات مراقبة اصطناعية لخدماتك الحالية.
الإجراءات التي ستنفّذها
- وستنشر واجهة برمجة تطبيقات في Google Cloud Run، وهي تمثل أساسًا لخدمتنا التي سنختبرها.
- ستكتب بعد ذلك "أداة مراقبة اصطناعية"، وهي إحدى ميزات "مراقبة السحابة الإلكترونية".
- ستستخدم ميزة "مساعدة في الكتابة" لكتابة "أداة مراقبة اصطناعية".
المعلومات التي ستطّلع عليها:
- المقصود بالمراقبة الاصطناعية
- كيفية استخدام ميزة "مساعدة في الكتابة" من Gemini ضمن أداة "المراقبة الاصطناعية" من أجل تأليف حالات الاختبار التي تتحقّق من وظيفة الخدمة الأساسية
المتطلبات...
- متصفح الويب Chrome
- حساب Gmail
- مشروع على Google Cloud تم تفعيل الفوترة فيه
- تم تفعيل Gemini Code Assist لمشروعك على السحابة الإلكترونية
يستهدف هذا التمرين المعملي المطوّرين من جميع المستويات، بما في ذلك المبتدئين. على الرغم من أن نموذج التطبيق بلغة بايثون، فأنت لست بحاجة إلى أن تكون على دراية ببرمجة بايثون لفهم ما يحدث.
2. ضبط إعدادات الجهاز
سنفعّل الآن "Gemini في Cloud" في مشروع Google Cloud. يُرجى اتّباع الخطوات التالية:
- يُرجى زيارة https://console.cloud.google.com والتأكّد من اختيار مشروع Google Cloud الذي تريد استخدامه في هذا الدرس التطبيقي. انقر على رمز "فتح Gemini" الذي يظهر في أعلى يسار الشاشة.
- ستفتح نافذة المحادثة في "Gemini في Cloud" على يسار وحدة التحكّم. انقر على الزر "تفعيل" كما هو موضّح أدناه. إذا لم يظهر الزر تفعيل وظهرت لك واجهة Chat بدلاً من ذلك، من المحتمل أنّك سبق وفعّلت "Gemini في Cloud" في المشروع ويمكنك الانتقال مباشرةً إلى الخطوة التالية.
- بعد تفعيلها، يمكنك اختبار Gemini for Cloud من خلال طرح سؤال أو طلبَين عليه. يتم عرض بعض نماذج طلبات البحث، ولكن يمكنك تجربة طلب البحث التالي
What is Synthetic Monitoring?
.
سيقدّم لك "Gemini في Cloud" الإجابة عن سؤالك. اطّلِع على قائمة المستندات المرجعية التي تم توفيرها حول كيفية كتابة شاشات اصطناعية في Google Cloud.
يمكنك النقر على رمز في أعلى يسار الصفحة لإغلاق نافذة المحادثة على "Gemini في Cloud".
3- نشر نموذج من Inventory API على Google Cloud Run
قبل بدء الإجابة عن الاختبارات، سنحتاج إلى نموذج لواجهة برمجة تطبيقات يمكننا اختباره. ولهذا السبب، سنكتب واجهة برمجة تطبيقات بسيطة للمستودع وسننشرها على نظام Google Cloud Run.
سنستخدم Cloud Shell IDE، وهي بيئة تطوير مستنِدة إلى Code OSS مُدارة بالكامل. تتوفّر هذه البيئة مع إضافة Cloud Code IDE التي تجعل العمل مع خدمات Google Cloud فعّالاً. يُرجى اتّباع الخطوات التالية:
- انتقِل إلى ide.cloud.google.com. قد يستغرق ظهور بيئة التطوير المتكاملة (IDE) بعض الوقت، لذا يُرجى الانتظار.
- انقر على الزر Cloud Code - تسجيل الدخول في شريط مدى التقدّم السفلي كما هو موضَّح. عليك تفويض المكوّن الإضافي وفقًا للتعليمات. إذا ظهر لك "Cloud Code - no project" في شريط الحالة، اختَر ذلك ثم اختَر المشروع المحدّد على Google Cloud من قائمة المشاريع التي تخطّط للعمل فيها.
- انقر على زر Gemini في أسفل يسار الشاشة كما هو موضّح واختَر المشروع الصحيح على Google Cloud للمرة الأخيرة. إذا طُلِب منك تفعيل واجهة Cloud AI Companion API، يُرجى إجراء ذلك والمتابعة.
- بعد اختيار مشروعك على Google Cloud، تأكَّد من أنّه يمكنك رؤية ذلك في رسالة حالة رمز السحابة الإلكترونية في شريط الحالة وأنّ خدمة Code Assist مفعَّلة أيضًا على يسار الصفحة، في شريط الحالة كما هو موضَّح أدناه:
- انقر على اسم مشروع Google Cloud في شريط الحالة أدناه.
- ستظهر قائمة بالخيارات. انقر على تطبيق جديد من القائمة أدناه.
- اختَر تطبيق 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)
- حان الوقت لنشر واجهة برمجة تطبيقات المخزون في التشغيل السحابي. سنحتاج إلى بدء جلسة Terminal جديدة من بيئة التطوير المتكاملة في Cloud Shell عبر رمز القائمة في أعلى يمين الصفحة. انقر على أيقونة القائمة ثم Terminal ← جديدة كما هو موضح أدناه:
- في جلسة الوحدة الطرفية، أعط الأمر التالي:
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
كما تنص المستندات، تتيح لك أجهزة المراقبة الاصطناعية تحديد ما ستختبره وسلسلة من الاختبارات. على سبيل المثال، يمكنك اختبار صفحة تسجيل الدخول إلى تطبيقك أو عملية الدفع في متجر التجارة الإلكترونية أو طلبات بيانات من واجهة برمجة التطبيقات التي يرسلها تطبيقك إلى خدمات تابعة لجهات خارجية.
عند إنشاء شاشة اصطناعية، يتم تفعيل وظيفة السحابة الإلكترونية من الجيل الثاني التي تستند إلى التشغيل في السحابة الإلكترونية. يجب كتابة الدالة في Node.js وأن تعتمد على إطار عمل SDK لـ Synthetics مفتوح المصدر. توزّع Cloud Monitoring إطار العمل هذا وتديره.
تتيح خدمة Cloud Monitoring استخدام الأنواع التالية من الشاشات الاصطناعية:
- تتيح لك شاشات العرض الاصطناعية أو المخصَّصة المستنِدة إلى Mocha تفعيل وظيفة السحابة الإلكترونية ذات الغرض الواحد والقابلة للضبط بالكامل.
- تتيح لك أدوات التحقّق من الروابط المعطَّلة تحديد خيارات، مثل معرّف الموارد المنتظم (URI) المصدر وعدد الروابط التي تم اختبارها وعدد عمليات إعادة المحاولة قبل نشر دالة Cloud تم ضبطها مسبقًا.
تتولّى مراقبة السحابة الإلكترونية بذل الكثير من الجهد أثناء تشغيل هذه الشاشات الاصطناعية. ويكون مسؤولاً عن:
- التنفيذ الدوري لوظيفة السحابة الإلكترونية.
- جمع وتخزين نتائج كل عملية تنفيذ:
- معلومات النجاح والفشل، مثل رسالة الخطأ ونوع الخطأ وسطر الرمز
- وقت التنفيذ
- السجلّات
- المقاييس
سنستفيد من Gemini، لا سيما ميزة Help Me Write
التي ستزوّدنا بالرمز البرمجي الأولي للاختبارات، حتى نتمكّن من اختبار هذه الميزة وإنشاء ميزات إضافية فيها. لنبدأ.
6- كتابة بيانات الرصد الاصطناعي في حالات اختبار Inventory API
سننتقل الآن إلى Cloud Console لكتابة أداة "الرصد الاصطناعي".
انتقِل إلى صفحة المراقبة الاصطناعية في Cloud Console. سيؤدي ذلك إلى ظهور الصفحة كما هو موضح أدناه:
انقر على الرابط إنشاء مراقب اصطناعي في الصفحة أعلاه. سيؤدي ذلك إلى إظهار نموذج ضبط كما هو موضح أدناه:
لقد قدمنا اسمًا 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 باسم "خدمة تشغيل السحابة الإلكترونية" الفعلي لخدمتك.
بعد النقر على إنشاء، سينشئ Gemini رمز حزمة الاختبار وملف package.json
أيضًا كما هو موضّح أدناه. قد يختلف الرمز الذي تم إنشاؤه لك عن الرمز الموضح أدناه. ألقِ نظرة على الرمز البرمجي وملفات التبعية في ملف package.json
.
انقر على INSERT INTO CLOUD FUNCTION. سيؤدي ذلك إلى ظهور نموذج إنشاء دالة في السحابة الإلكترونية يتضمّن القيم اللازمة التي تمت تعبئتها لك.
انقر على تطبيق وظيفة ثم على الزر إنشاء. لم نختر أي تهيئة لـ "قناة تنبيه" في هذا المثال، ولكن يمكنك تحديد ذلك.
ستبدأ عملية إنشاء دالة Google Cloud في الخلفية. قد يستغرق هذا بضع دقائق، لذا يُرجى الانتظار.
بعد نشر وظيفة Cloud بنجاح، ستبدأ خدمة Cloud Monitoring مهمة استدعاء المراقبة الاصطناعية نيابةً عنك.
سترى في البداية أنّه ما من استدعاءات، كما هو موضّح أدناه:
بعد تنفيذ عمليات تشغيل محددة، ستتمكّن من الاطّلاع على عمليات التنفيذ المختلفة. توضح الشاشة أدناه أن الاختبارات تم اجتيازها:
إذا نقرت على اسم "أداة التتبُّع الاصطناعية" (مثل s1)، ستظهر عمليات التنفيذ المختلفة كما هو موضّح أدناه:
7. تهانينا!
تهانينا، لقد نجحت في نشر نموذج واجهة برمجة تطبيقات في Google Cloud Run وكتبت اختبارات الرصد الاصطناعي للتحقّق من صحة وظائف الخدمة. خلال هذه العملية، استخدمت Gemini لإنشاء الرمز الخاص بـ Test Suite.