Écrire des tests de surveillance synthétique pour vos services avec Gemini

1. Introduction

Dans cet atelier de programmation, nous allons voir comment utiliser la fonctionnalité M'aider à écrire pour créer des tests de surveillance synthétique pour vos services existants.

Ce que vous allez effectuer...

  • Vous allez déployer une API dans Google Cloud Run, qui servira de base pour notre service que nous allons tester.
  • Vous rédigerez ensuite une surveillance synthétique, une fonctionnalité de Cloud Monitoring.
  • Vous allez utiliser la fonctionnalité M'aider à écrire pour écrire la surveillance synthétique.

Ce que vous allez apprendre...

  • Qu'est-ce que la surveillance synthétique ?
  • Comment utiliser la fonctionnalité M'aider à écrire de Gemini dans la surveillance synthétique pour créer des scénarios de test qui valideront le fonctionnement du service principal.

Ce dont vous avez besoin...

  • Navigateur Web Chrome
  • Un compte Gmail
  • Un projet Cloud pour lequel la facturation est activée
  • Gemini Code Assist activé pour votre projet Cloud

Cet atelier s'adresse aux développeurs de tous niveaux, y compris aux débutants. Bien que l'exemple d'application soit en langage Python, vous n'avez pas besoin de maîtriser la programmation Python pour comprendre le processus.

2. Configuration

Nous allons maintenant activer Gemini pour Cloud dans notre projet Google Cloud. Suivez les étapes ci-dessous :

  1. Accédez à https://console.cloud.google.com et veillez à sélectionner le projet Google Cloud que vous comptez utiliser dans cet atelier. Cliquez sur l'icône Ouvrir Gemini en haut à droite.

28f084ec1e159938.png

  1. La fenêtre de chat Gemini pour Cloud s'ouvre sur le côté droit de la console. Cliquez sur le bouton "Enable" (Activer) comme illustré ci-dessous. Si le bouton Activer ne s'affiche pas, mais qu'une interface Chat s'affiche à la place, cela signifie que vous avez probablement déjà activé Gemini pour Cloud pour le projet et que vous pouvez passer directement à l'étape suivante.

e8df9adc4ea43a37.png

  1. Une fois qu'il est activé, vous pouvez tester Gemini pour Cloud en lui posant une ou deux requêtes. Quelques exemples de requêtes sont affichés, mais vous pouvez essayer la requête suivante What is Synthetic Monitoring?

9859ea86a8310cb.png

Gemini pour Cloud vous fournira la réponse à votre question. Consultez la liste de documentation de référence qui vous a été fournie pour apprendre à écrire des surveillances synthétiques dans Google Cloud.

Vous pouvez cliquer sur l'icône f68286b2b2ea5c0a.png en haut à droite pour fermer la fenêtre de discussion Gemini pour Cloud.

3. Déployer un exemple d'API Inventory sur Google Cloud Run

Avant d'écrire avec les tests, nous avons besoin d'un exemple d'API à tester. Pour cela, nous allons écrire une API d'inventaire simple que nous allons déployer sur Google Cloud Run.

Nous allons utiliser l'IDE Cloud Shell, un environnement de développement entièrement géré basé sur Code OSS. L'environnement est fourni avec l'extension IDE Cloud Code qui permet d'utiliser efficacement les services Google Cloud. Suivez les étapes ci-dessous :

  1. Accédez à ide.cloud.google.com. Veuillez patienter, car l'affichage de l'IDE peut prendre un certain temps.
  2. Cliquez sur le bouton Cloud Code – Se connecter dans la barre d'état inférieure (voir ci-dessous). Autorisez le plug-in comme indiqué. Si Cloud Code – Aucun projet est affiché dans la barre d'état, cliquez dessus. Dans la liste des projets, sélectionnez le projet Google Cloud que vous comptez utiliser.

6f5ce865fc7a3ef5.png

  1. Cliquez sur le bouton Gemini en bas à droite, comme illustré, puis sélectionnez une dernière fois le bon projet Google Cloud. Si vous êtes invité à activer l'API Cloud AI Companion, veuillez le faire et continuer.
  2. Après avoir sélectionné votre projet Google Cloud, vérifiez qu'il s'affiche dans le message d'état Cloud Code de la barre d'état et que Code Assist est également activé à droite, dans la barre d'état, comme illustré ci-dessous:

709e6c8248ac7d88.png

  1. Cliquez sur le nom du projet Google Cloud dans la barre d'état ci-dessous.

f151759c156c124e.png

  1. Une liste d'options s'affiche alors. Cliquez sur Nouvelle application dans la liste ci-dessous.

91ea9836f38b7f74.png

  1. Sélectionnez l'application Cloud Run.
  2. Sélectionnez le modèle d'application Python (Flask): Cloud Run.
  3. Enregistrez la nouvelle application à l'emplacement de votre choix.
  4. Une notification confirme que votre application a été créée. Une nouvelle fenêtre s'ouvre et l'application est chargée, comme illustré ci-dessous. Un fichier README.md est ouvert. Vous pouvez fermer cette vue pour le moment.

ed250f23b0e4fee8.png

  1. Depuis l'explorateur, accédez au fichier app.py et remplacez-le par le contenu ci-dessous:
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. Il est temps de déployer l'API Inventory sur Cloud Run. Nous devons lancer une nouvelle session de terminal à partir de l'IDE Cloud Shell via l'icône de menu en haut à gauche. Cliquez sur l'icône de menu, puis sur Terminal → New Terminal (Terminal → Nouveau terminal), comme indiqué ci-dessous :

289173c68f1addb5.png

  1. Dans la session de terminal, exécutez la commande suivante:
gcloud run deploy --source .
  1. La commande ci-dessus demande des informations sur un region à déployer. Veuillez sélectionner us-central1. Vous serez invité à autoriser unauthenticated invocations. Veuillez l'autoriser en disant y.
  2. Une fois le service déployé, il fournit une URL de service. À noter.

4. Tester Inventory API

Vous pouvez maintenant tester Inventory API en lançant le navigateur et en cliquant sur les points de terminaison suivants:

SERVICE_URL/inventory

Vous devriez obtenir trois articles d'inventaire, selon l'échantillon de données du service. L'exemple de réponse est présenté ci-dessous:

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

Nous pouvons désormais récupérer un article spécifique de l'inventaire via l'URL ci-dessous. Cette commande devrait renvoyer l'élément d'inventaire dont la valeur id correspond à 1.

SERVICE_URL/inventory/1

La réponse doit être semblable à ceci:

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

Enfin, nous pouvons essayer de récupérer un article d'inventaire qui n'existe pas.

SERVICE_URL/inventory/200

Un message d'erreur devrait s'afficher, car aucun élément d'inventaire n'a la valeur 200 pour id. La sortie devrait ressembler à ce qui suit :

{
  "error": "Item not found"
}

Nous sommes maintenant prêts à écrire nos tests de surveillance synthétique dans Cloud Monitoring à l'aide de Gemini.

5. Surveillance synthétique dans Google Cloud

Comme indiqué dans la documentation, les surveillances synthétiques vous permettent de définir ce que vous allez tester, ainsi qu'une séquence de tests. Par exemple, vous pouvez tester la page de connexion de votre application, le processus de paiement de votre boutique en ligne ou les appels d'API que votre application envoie à des services tiers.

Lorsque vous créez une surveillance synthétique, vous déployez une fonction Cloud de 2e génération basée sur Cloud Run. Votre fonction doit être écrite en Node.js et s'appuyer sur le framework du SDK Synthetics Open Source. Cloud Monitoring distribue et gère ce framework.

Cloud Monitoring est compatible avec les types de surveillance synthétique suivants:

Cloud Monitoring effectue beaucoup de tâches fastidieuses lors de l'exécution de ces surveillances synthétiques. Elle est responsable des points suivants:

  • Exécution périodique de votre fonction Cloud
  • Collecter et stocker les résultats de chaque exécution:
  • Des informations sur la réussite et l'échec, telles que le message d'erreur, le type d'erreur et la ligne de code
  • Durée d'exécution
  • Journaux
  • Métriques

Nous allons nous appuyer sur Gemini, et plus particulièrement sur la fonctionnalité Help Me Write, qui nous fournira le code initial des tests. Nous pourrons ainsi l'utiliser pour tester et développer des fonctionnalités supplémentaires. C'est parti.

6. Écrire notre surveillance synthétique pour les scénarios de test de l'API Inventory

Nous allons maintenant accéder à la console Cloud pour écrire notre surveillance synthétique.

Accédez à la page Surveillance synthétique dans la console Cloud. La page suivante s'affiche:

96bfce88f55442f3.png

Cliquez sur le lien CREATE SYNTHETIC MONITOR figurant sur la page ci-dessus. Un formulaire de configuration s'affiche, comme illustré ci-dessous:

af4dde3e9e0a5a16.png

Nous avons fourni le nom s1, mais vous pouvez en choisir un autre. Notez le bouton HELP ME CODE (AIDEZ-MOI À CODE) dans l'écran ci-dessus. Cliquez dessus.

Une fenêtre pop-up s'affiche. Vous devez y saisir une requête qui décrit les scénarios de test à exécuter pour vérifier que l'API Inventory fonctionne correctement.

a13e78db15b37dd3.png

Dans la zone de saisie de la requête, utilisez une requête semblable à celle indiquée ci-dessous:

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

Notez que nous avons fourni trois scénarios de test. Vous devez remplacer la valeur SERVICE_URL par le nom réel du service Cloud Run de votre service.

Une fois que vous avez cliqué sur GÉNÉRER, Gemini génère le code de la suite de tests et le fichier package.json, comme indiqué ci-dessous. Le code généré pour vous peut différer de celui que vous voyez ci-dessous. Examinez le code et les fichiers de dépendances dans le fichier package.json.

d19340c357f620bd.png

Cliquez sur INSERT INTO CLOUD FUNCTION (INSÉRER DANS LA FONCTION CLOUD). Un formulaire de création de fonction Cloud s'affiche, avec les valeurs nécessaires renseignées.

d70e50624a09149a.png

Cliquez sur APPLIQUER LA FONCTION, puis sur le bouton CRÉER. Nous n'avons choisi aucune configuration de canal d'alerte dans cet exemple, mais vous êtes libre de la sélectionner.

Cette opération lance le processus de création de la fonction Google Cloud en arrière-plan. Cette opération peut prendre quelques minutes. Soyez patient.

1b07702ea5ac5bdb.png

Une fois la fonction Cloud déployée, Cloud Monitoring commence à appeler la surveillance synthétique pour vous.

Au début, vous ne verrez aucun appel, comme illustré ci-dessous:

dac473269a289a3b.png

Une fois qu'il y a des exécutions spécifiques, vous pouvez voir les différentes exécutions. L'écran ci-dessous montre que les tests ont réussi:

dc2d7dd98277fbcc.png

Si vous cliquez sur le nom de la surveillance synthétique (par exemple, "s1"), les différentes exécutions s'affichent, comme indiqué ci-dessous:

8369a02b413d12cc.png

7. Félicitations !

Félicitations ! Vous avez déployé un exemple d'API dans Google Cloud Run et écrit des tests de surveillance synthétique pour valider le fonctionnement du service. Au cours du processus, vous avez utilisé Gemini afin de générer le code de la suite de tests.

8. Documents de référence