כתיבת בדיקות של מעקב סינתטי לשירותים באמצעות Gemini

1. מבוא

ב-Codelab הזה, נבחן את השימוש בתכונה עזרה בכתיבה כדי לכתוב בדיקות מעקב סינתטי לשירותים הקיימים שלך.

מה עושים...

  • לאחר מכן תפרסו ממשק API ל-Google Cloud Run, שישמש כבסיס לשירות שלנו שאותו נבדוק.
  • לאחר מכן נכתוב מוניטור סינתטי, שהוא תכונה של Cloud Monitoring.
  • תשתמש בתכונה 'עזרה בכתיבה' כדי לכתוב את המסך הסינתטי.

מה תלמדו...

  • מהו מעקב סינתטי.
  • איך משתמשים בתכונה 'עזרה בכתיבה' של Gemini ב-Synthetic Monitoring כדי לכתוב מקרי בדיקה שיאמתו את הפונקציונליות של השירות המרכזי.

מה צריך...

  • דפדפן האינטרנט Chrome
  • חשבון Gmail
  • פרויקט בענן שהופעל בו חיוב
  • Gemini Code Assist מופעל בפרויקט שלך ב-Cloud

שיעור ה-Lab הזה מיועד למפתחים בכל הרמות, כולל למתחילים. למרות שהאפליקציה לדוגמה היא בשפת Python, לא צריך להכיר תכנות Python כדי להבין מה קורה.

2. הגדרה

עכשיו נפעיל את Gemini ל-Cloud בפרויקט שלנו ב-Google Cloud. כך תעשו זאת:

  1. נכנסים לכתובת https://console.cloud.google.com ומוודאים שבחרתם את הפרויקט ב-Google Cloud שאתם מתכוונים לעבוד איתו בשיעור ה-Lab הזה. לוחצים על הסמל לפתיחת Gemini שמופיע בפינה השמאלית העליונה.

28f084ec1e159938.png

  1. חלון הצ'אט של Gemini ל-Cloud ייפתח בצד שמאל של המסוף. לוחצים על הלחצן 'הפעלה' כמו שמוצג למטה. אם הלחצן הפעלה לא מופיע ובמקום זאת מוצג ממשק Chat, כנראה שכבר הפעלתם את Gemini ל-Cloud בפרויקט, ואתם יכולים לעבור ישירות לשלב הבא.

e8df9adc4ea43a37.png

  1. אחרי שמפעילים את Gemini, אפשר לשאול אותו שאילתה או שתיים כדי לנסות את Gemini ל-Cloud. מוצגות כמה שאילתות לדוגמה, אבל אפשר לנסות את השאילתה הבאה What is Synthetic Monitoring?

9859ea86a8310cb.png

Gemini ל-Cloud יענה על השאלה שלך. אתם מוזמנים לעיין ברשימת משאבי העזר בנושא כתיבה של מוניטורים סינתטיים ב-Google Cloud.

אפשר ללחוץ על הסמל f68286b2b2ea5c0a.png בפינה השמאלית העליונה כדי לסגור את חלון הצ'אט של Gemini ל-Cloud.

3. פריסת Inventory API לדוגמה ב-Google Cloud Run

לפני שנסיים לכתוב עם הבדיקות, נצטרך דוגמה ל-API שאפשר לבצע בו את הבדיקה. לשם כך נכתוב API פשוט למלאי שטחי פרסום שנפרס ב-Google Cloud Run.

אנחנו נשתמש ב-Cloud Shell IDE, סביבת פיתוח מנוהלת שמבוססת על Code OSS. הסביבה כוללת תוסף Cloud Code IDE שמאפשר לעבוד עם שירותי Google Cloud ביעילות. כך תעשו זאת:

  1. נכנסים לכתובת ide.cloud.google.com. יכול להיות שיעבור קצת זמן עד שסביבת הפיתוח המשולבת תופיע, אז צריך להתאזר בסבלנות.
  2. לוחצים על הלחצן Cloud Code – כניסה בשורת הסטטוס התחתונה, כמו שמוצג. מאשרים את הפלאגין לפי ההוראות. אם בשורת הסטטוס כתוב Cloud Code – אין פרויקט, בוחרים את הפרויקט הספציפי ב-Google Cloud מרשימת הפרויקטים שבהם אתם מתכוונים לעבוד.

6f5ce865fc7a3ef5.png

  1. לוחצים על הלחצן Gemini בפינה השמאלית התחתונה כמו שמוצג, ובוחרים את הפרויקט הנכון ב-Google Cloud בפעם האחרונה. אם תתבקשו להפעיל את Cloud AI Companion 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. ב-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)
  1. הגיע הזמן לפרוס את ה-API למלאי ל-Cloud Run. צריך להפעיל סשן חדש ב-Terminal מ-Cloud Shell IDE דרך סמל התפריט בפינה השמאלית העליונה. לוחצים על סמל התפריט ואז על Terminal ← Terminal חדש:

289173c68f1addb5.png

  1. בסשן Terminal, נותנים את הפקודה הבאה:
gcloud run deploy --source .
  1. הפקודה שלמעלה תשאל על region לפריסה. צריך לבחור us-central1. תוצג בקשה למתן הרשאה ל-unauthenticated invocations. כדי לאשר זאת, יש לומר y.
  2. לאחר שהשירות ייפרס בהצלחה, תוצג בו כתובת 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

הפעולה הזו אמורה להחזיר הודעת שגיאה כי אין פריט במלאי עם הערך 200 id. התגובה אמורה להיות דומה לזו:

{
  "error": "Item not found"
}

עכשיו אנחנו מוכנים לכתוב בדיקות סינתטיות למעקב ב-Cloud Monitoring בעזרת Gemini.

5. מעקב סינתטי ב-Google Cloud

כפי שמצוין במסמכי התיעוד, ניטורים סינתטיים מאפשרים להגדיר את מה שאתם עומדים לבדוק ורצף של בדיקות. לדוגמה, אתם יכולים לבדוק את דף ההתחברות של האפליקציה, את תהליך התשלום בחנות המסחר האלקטרוני או את הקריאות ל-API שהאפליקציה שולחת לשירותי צד שלישי.

כשיוצרים מעקב סינתטי, פורסים פונקציה של Cloud Functions מדור שני, המבוססת על Cloud Run. עליכם לכתוב את הפונקציה ב-Node.js ולהסתמך על מסגרת Synthetics SDK בקוד פתוח. מערכת Cloud Monitoring מפיצה ומנהלת את ה-framework.

ב-Cloud Monitoring יש תמיכה בסוגים הבאים של מסכים סינתטיים:

השימוש ב-Cloud Monitoring כרוך במאמץ רב תוך כדי הפעלת המוניטורים הסינתטיים האלה. היא אחראית ל:

  • הרצה תקופתית של הפונקציה של Cloud Functions.
  • איסוף ואחסון של התוצאות של כל הפעלה:
  • מידע על הצלחה ועל כשלים, כמו הודעת השגיאה, סוג השגיאה ושורת הקוד
  • זמן הביצוע
  • יומנים
  • מדדים

אנחנו נעזרים ב-Gemini ובתכונה Help Me Write שתספק לנו את הקוד הראשוני לבדיקות, כדי שנוכל להשתמש בו כדי לבדוק ולפתח תכונות נוספות. קדימה, מתחילים.

6. כתיבת מוניטור סינתטי למקרי הבדיקה של Inventory API

עכשיו אנחנו עוברים אל מסוף Cloud כדי לכתוב את המוניטור הסינתטי שלנו.

נכנסים לדף Synthetic Monitoring במסוף 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

לוחצים על INSERT INTO CLOUD FUNCTION. פעולה זו תפתח טופס ליצירת פונקציה של Cloud Functions עם הערכים הנדרשים שאוכלסו עבורכם.

d70e50624a09149a.png

לוחצים על החלת הפונקציה ואז על הלחצן יצירה. לא בחרנו הגדרה של ערוץ התראות בדוגמה הזו, אבל אפשר לבחור אותה.

הפעולה הזו תתחיל את תהליך יצירת הפונקציה של Google Cloud Functions ברקע. התהליך עשוי להימשך כמה דקות, אז צריך להתאזר בסבלנות.

1b07702ea5ac5bdb.png

לאחר שהפונקציה של Cloud Functions פרוסה בהצלחה, Cloud Monitoring יתחיל עבורכם במשימה להפעיל את המעקב הסינתטי.

בהתחלה תראו שאין הפעלות, כפי שמוצג בהמשך:

dac473269a289a3b.png

אחרי שיהיו הפעלות ספציפיות, תוכלו לראות את ההפעלות השונות. המסך הבא מראה שהבדיקות עוברות בהצלחה:

dc2d7dd98277fbcc.png

לחיצה על השם של המעקב הסינתטי (למשל s1) תציג את הפעולות הבאות:

8369a02b413d12cc.png

7. מעולה!

כל הכבוד! פרסתם בהצלחה API לדוגמה ב-Google Cloud Run וכתבתם בדיקות סינתטיות של מעקב כדי לאמת את הפונקציונליות של השירות. בזמן התהליך השתמשת ב-Gemini כדי ליצור את הקוד לחבילת הבדיקה.

8. מסמכי עזר