Synthetische Monitoring-Tests für Ihre Dienste mit Gemini schreiben

1. Einführung

In diesem Codelab sehen wir uns an, wie Sie mit der Funktion Formuliere für mich synthetische Monitoring-Tests für Ihre vorhandenen Dienste erstellen können.

Aufgaben

  • Sie stellen eine API in Google Cloud Run bereit, die als Grundlage für den zu testenden Dienst dient.
  • Anschließend schreiben Sie einen synthetischen Monitor, ein Feature von Cloud Monitoring.
  • Sie verwenden die Funktion „Formuliere für mich“, um den synthetischen Monitor zu schreiben.

Lerninhalte

  • Was synthetisches Monitoring ist.
  • So verwenden Sie die Funktion „Formuliere für mich“ von Gemini in Synthetic Monitoring, um Testläufe zu erstellen, mit denen die Kernfunktionen des Dienstes validiert werden.

Voraussetzungen

  • Chrome-Webbrowser
  • Ein Gmail-Konto
  • Ein Cloud-Projekt mit aktivierter Abrechnung
  • Gemini Code Assist für Ihr Cloud-Projekt aktiviert

Dieses Lab richtet sich an Entwickler aller Erfahrungsstufen, auch an Anfänger. Obwohl die Beispielanwendung in Python geschrieben ist, müssen Sie sich nicht mit der Python-Programmierung auskennen, um zu verstehen, was passiert.

2. Einrichtung

Wir aktivieren jetzt Gemini für Cloud in unserem Google Cloud-Projekt. Gehen Sie dazu so vor:

  1. Rufen Sie https://console.cloud.google.com auf und achten Sie darauf, dass Sie das Google Cloud-Projekt ausgewählt haben, mit dem Sie in diesem Lab arbeiten möchten. Klicken Sie oben rechts auf das Symbol zum Öffnen von Gemini.

28f084ec1e159938.png

  1. Rechts in der Console wird das Chatfenster für Gemini für Cloud geöffnet. Klicken Sie auf die Schaltfläche „Aktivieren“ (siehe unten). Wenn Sie die Schaltfläche Aktivieren nicht sehen, sondern stattdessen eine Chat-Oberfläche, haben Sie Gemini for Cloud wahrscheinlich bereits für das Projekt aktiviert und können direkt mit dem nächsten Schritt fortfahren.

e8df9adc4ea43a37.png

  1. Sobald die Funktion aktiviert ist, können Sie Gemini für Cloud testen, indem Sie ein oder zwei Anfragen stellen. Es werden einige Beispielabfragen angezeigt, Sie können aber auch die folgende Abfrage ausprobieren: What is Synthetic Monitoring?.

9859ea86a8310cb.png

Gemini for Cloud antwortet auf Ihre Frage. Sehen Sie sich die Liste der Referenzdokumentation an, in der beschrieben wird, wie Sie synthetische Monitore in Google Cloud schreiben können.

Sie können rechts oben auf das Symbol f68286b2b2ea5c0a.png klicken, um das Chatfenster für Gemini für Cloud zu schließen.

3. Beispiel-Inventory API in Google Cloud Run bereitstellen

Bevor wir mit dem Schreiben der Tests beginnen, benötigen wir eine Beispiel-API, die wir testen können. Dazu schreiben wir eine einfache Inventar-API, die wir in Google Cloud Run bereitstellen.

Wir verwenden die Cloud Shell-IDE, eine vollständig verwaltete Entwicklungsumgebung, die auf Code OSS basiert. Die Umgebung enthält die Cloud Code IDE-Erweiterung, die die Arbeit mit Google Cloud-Diensten effizienter macht. Gehen Sie dazu so vor:

  1. Rufen Sie ide.cloud.google.com auf. Es kann eine Weile dauern, bis die IDE angezeigt wird.
  2. Klicken Sie unten in der Statusleiste auf die Schaltfläche Cloud Code – Anmelden (siehe Abbildung). Autorisieren Sie das Plug-in wie beschrieben. Wenn in der Statusleiste Cloud Code – kein Projekt angezeigt wird, wählen Sie diese Option aus und wählen Sie dann das Google Cloud-Projekt aus der Liste der Projekte aus, mit denen Sie arbeiten möchten.

6f5ce865fc7a3ef5.png

  1. Klicken Sie rechts unten auf die Schaltfläche Gemini (siehe Abbildung) und wählen Sie noch einmal das richtige Google Cloud-Projekt aus. Wenn Sie aufgefordert werden, die Cloud AI Companion API zu aktivieren, tun Sie dies und fahren Sie fort.
  2. Nachdem Sie Ihr Google Cloud-Projekt ausgewählt haben, prüfen Sie, ob es in der Cloud Code-Statusmeldung in der Statusleiste angezeigt wird und ob Code Assist rechts in der Statusleiste aktiviert ist (siehe unten):

709e6c8248ac7d88.png

  1. Klicken Sie in der Statusleiste unten auf den Google Cloud-Projektnamen.

f151759c156c124e.png

  1. Eine Liste mit Optionen wird angezeigt. Klicken Sie in der Liste unten auf Neue Anwendung.

91ea9836f38b7f74.png

  1. Wählen Sie die Cloud Run-Anwendung aus.
  2. Wählen Sie die Anwendungsvorlage Python (Flask): Cloud Run aus.
  3. Speichern Sie die neue Anwendung am gewünschten Speicherort.
  4. In einer Benachrichtigung wird bestätigt, dass die Anwendung erstellt wurde, und ein neues Fenster mit der geladenen Anwendung wird geöffnet (siehe unten). Eine README.md-Datei wird geöffnet. Sie können diese Ansicht jetzt schließen.

ed250f23b0e4fee8.png

  1. Rufen Sie im Explorer die Datei app.py auf und ersetzen Sie sie durch den unten gezeigten Inhalt:
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. Jetzt ist es an der Zeit, die Inventory API in Cloud Run bereitzustellen. Wir müssen über das Menüsymbol links oben eine neue Terminalsitzung in der Cloud Shell IDE starten. Klicken Sie auf das Menüsymbol und dann auf Terminal → Neues Terminal, wie unten dargestellt:

289173c68f1addb5.png

  1. Geben Sie in der Terminalsitzung den folgenden Befehl ein:
gcloud run deploy --source .
  1. Mit dem obigen Befehl wird nach einem region für die Bereitstellung gefragt. Wählen Sie us-central1 aus. Sie werden aufgefordert, unauthenticated invocations zuzulassen. Bestätigen Sie dies mit y.
  2. Nachdem der Dienst erfolgreich bereitgestellt wurde, wird eine Dienst-URL angezeigt. Notieren Sie sich das.

4. Inventory API testen

Sie können die Inventory API jetzt testen, indem Sie den Browser starten und die folgenden Endpunkte aufrufen:

SERVICE_URL/inventory

Sie sollten drei Inventarelemente zurückerhalten, wie in den Beispieldaten im Dienst. Die Beispielantwort finden Sie unten:

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

Wir können jetzt ein bestimmtes Inventarelement über die unten stehende URL abrufen. Dadurch sollte der Inventarartikel mit dem id-Wert 1 zurückgegeben werden.

SERVICE_URL/inventory/1

Die Antwort sollte in etwa so aussehen:

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

Schließlich können wir versuchen, ein Inventarelement abzurufen, das nicht vorhanden ist.

SERVICE_URL/inventory/200

Sie sollten eine Fehlermeldung erhalten, da es keinen Inventarartikel mit dem id-Wert 200 gibt. Die Antwort sollte in etwa so aussehen:

{
  "error": "Item not found"
}

Wir können jetzt mit Gemini unsere Synthetic Monitoring-Tests in Cloud Monitoring schreiben.

5. Synthetisches Monitoring in Google Cloud

Wie in der Dokumentation beschrieben, können Sie mit synthetischen Monitoren definieren, was Sie testen möchten, und eine Testsequenz festlegen. Sie können beispielsweise die Anmeldeseite Ihrer Anwendung, den Bezahlvorgang Ihres Onlineshops oder die API-Aufrufe testen, die Ihre Anwendung an Drittanbieterdienste sendet.

Wenn Sie einen synthetischen Monitor erstellen, stellen Sie eine Cloud Functions-Funktion der 2. Generation bereit, die auf Cloud Run basiert. Ihre Funktion muss in Node.js geschrieben sein und auf dem Open-Source-Synthetics SDK-Framework basieren. Cloud Monitoring verteilt und verwaltet dieses Framework.

Cloud Monitoring unterstützt die folgenden Arten von synthetischen Monitoren:

Cloud Monitoring übernimmt einen Großteil der Arbeit bei der Ausführung dieser synthetischen Monitore. Sie ist für Folgendes verantwortlich:

  • Regelmäßige Ausführung Ihrer Cloud Functions-Funktion.
  • Ergebnisse der einzelnen Ausführungen erfassen und speichern:
  • Informationen zu Erfolg und Misserfolg, z. B. Fehlermeldung, Fehlertyp und Codezeile
  • Ausführungszeit
  • Logs
  • Messwerte

Wir werden Gemini und insbesondere die Funktion Help Me Write verwenden, um den ersten Code für die Tests zu erhalten. So können wir diesen Code testen und zusätzliche Funktionen darauf aufbauen. Los gehts.

6. Synthetischen Monitor für die Inventory API-Testläufe schreiben

Wir wechseln jetzt zur Cloud Console, um unseren synthetischen Monitor zu erstellen.

Rufen Sie in der Cloud Console die Seite Synthetisches Monitoring auf. Dadurch wird die Seite wie unten abgebildet aufgerufen:

96bfce88f55442f3.png

Klicken Sie auf der oben genannten Seite auf den Link SYNTHETISCHES MONITORING ERSTELLEN. Dadurch wird ein Konfigurationsformular wie unten dargestellt aufgerufen:

af4dde3e9e0a5a16.png

Wir haben den Namen s1 angegeben, Sie können aber einen beliebigen anderen Namen auswählen. Achten Sie auf die Schaltfläche HELP ME CODE auf dem Bildschirm oben. Klicken Sie darauf.

Daraufhin wird ein Pop-up-Fenster angezeigt, in dem Sie den Prompt eingeben müssen, der die Testläufe beschreibt, die Sie ausführen möchten, um sicherzustellen, dass die Inventory API ordnungsgemäß funktioniert.

a13e78db15b37dd3.png

Verwenden Sie im Bearbeitungsfeld für Prompts einen Prompt wie den folgenden:

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". 

Wir haben drei Testläufe bereitgestellt. Ersetzen Sie den Wert SERVICE_URL durch den tatsächlichen Namen des Cloud Run-Dienstes für Ihren Dienst.

Wenn Sie auf GENERATE (GENERIEREN) klicken, generiert Gemini den Test-Suite-Code und die Datei package.json, wie unten dargestellt. Der für Sie generierte Code kann sich von dem unten gezeigten Code unterscheiden. Sehen Sie sich den Code und die Abhängigkeitsdateien in der Datei package.json an.

d19340c357f620bd.png

Klicken Sie auf IN CLOUD-FUNKTION EINFÜGEN. Dadurch wird ein Formular zum Erstellen einer Cloud Functions-Funktion mit den erforderlichen Werten angezeigt.

d70e50624a09149a.png

Klicken Sie auf FUNKTION ANWENDEN und dann auf die Schaltfläche ERSTELLEN. In diesem Beispiel haben wir keine Konfiguration für den Benachrichtigungschannel ausgewählt. Sie können das aber tun.

Dadurch wird im Hintergrund die Google Cloud-Funktion erstellt. Dies kann einige Minuten dauern.

1b07702ea5ac5bdb.png

Sobald die Cloud Functions-Funktion bereitgestellt wurde, ruft Cloud Monitoring den synthetischen Monitor für Sie auf.

Am Anfang sehen Sie, dass es keine Aufrufe gibt, wie unten dargestellt:

dac473269a289a3b.png

Sobald es bestimmte Läufe gibt, können Sie sich die verschiedenen Ausführungen ansehen. Der Screenshot unten zeigt, dass die Tests erfolgreich sind:

dc2d7dd98277fbcc.png

Wenn Sie auf den Namen des synthetischen Monitors klicken (z.B. „s1“), werden die verschiedenen Ausführungen wie unten dargestellt angezeigt:

8369a02b413d12cc.png

7. Glückwunsch!

Herzlichen Glückwunsch! Sie haben eine Beispiel-API in Google Cloud Run bereitgestellt und Synthetic Monitoring-Tests geschrieben, um die Funktionalität des Dienstes zu prüfen. Dabei haben Sie Gemini verwendet, um den Code für die Testsuite zu generieren.

8. Referenzdokumente