1. Introduction
Dans cet atelier de programmation, nous allons voir comment utiliser la fonctionnalité Aide-moi à é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 sur Google Cloud Run, qui servira de base à notre service que nous allons tester.
- Vous allez ensuite écrire un monitor synthétique, qui est une fonctionnalité de Cloud Monitoring.
- Vous utiliserez la fonctionnalité M'aider à écrire pour rédiger le Synthetic Monitor.
Ce que vous allez apprendre...
- Qu'est-ce que la surveillance synthétique ?
- Découvrez comment utiliser la fonctionnalité M'aider à écrire de Gemini dans Synthetic Monitoring pour créer des scénarios de test qui valident la fonctionnalité principale du service.
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 :
- 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.

- La fenêtre de chat Gemini pour Cloud s'ouvre sur le côté droit de la console. Cliquez sur le bouton "Activer", comme indiqué ci-dessous. Si le bouton Activer n'est pas affiché et que vous voyez à la place une interface de chat, vous avez probablement déjà activé Gemini pour Cloud pour le projet. Vous pouvez alors passer directement à l'étape suivante.

- Une fois Gemini pour Cloud activé, vous pouvez effectuer un test en lui posant une ou deux questions. Vous en trouverez ci-dessous quelques exemples. Vous pouvez demander
What is Synthetic Monitoring?.

Gemini pour Cloud répondra à votre question. Consultez la liste de la documentation de référence fournie sur la façon d'écrire des surveillances synthétiques dans Google Cloud.
Pour fermer la fenêtre de chat de Gemini pour Cloud, vous pouvez cliquer sur l'icône
située en haut à droite.
3. Déployer un exemple d'API Inventory sur Google Cloud Run
Avant de commencer à écrire des tests, nous aurons besoin d'un exemple d'API sur lequel nous pourrons effectuer des tests. Pour ce faire, nous allons écrire une simple API d'inventaire que nous déploierons sur Google Cloud Run.
Nous allons utiliser Cloud Shell IDE, 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 de travailler efficacement avec les services Google Cloud. Suivez les étapes ci-dessous :
- Accédez à ide.cloud.google.com. L'IDE peut mettre un certain temps à s'afficher. Veuillez patienter.
- 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.

- Cliquez sur le bouton Gemini en bas à droite, comme indiqué, 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.
- Une fois que vous avez sélectionné votre projet Google Cloud, vérifiez que le message d'état Cloud Code s'affiche dans la barre d'état et que l'assistance au codage est également activée à droite, dans la barre d'état, comme illustré ci-dessous :

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

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

- Sélectionnez l'application Cloud Run.
- Sélectionnez le modèle d'application Python (Flask): Cloud Run.
- Enregistrez la nouvelle application à l'emplacement de votre choix.
- 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.mdest ouvert. Vous pouvez fermer cette vue pour le moment.

- Dans l'explorateur, accédez au fichier
app.pyet 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)
- Il est temps de déployer l'API d'inventaire sur Cloud Run. Nous devons lancer une nouvelle session de terminal à partir de Cloud Shell IDE en cliquant sur l'icône de menu située en haut à gauche. Cliquez sur l'icône de menu, puis sur Terminal → New Terminal (Terminal → Nouveau terminal), comme indiqué ci-dessous :

- Dans la session de terminal, saisissez la commande suivante :
gcloud run deploy --source .
- La commande ci-dessus vous demandera de déployer un
region. Veuillez sélectionnerus-central1. Il vous demandera d'autoriserunauthenticated invocations. Veuillez l'autoriser en disanty. - Une fois le service déployé, une URL de service est fournie. Notez-le.
4. Tester l'API Inventory
Vous pouvez maintenant tester l'API Inventory en lançant le navigateur et en accédant aux points de terminaison suivants :
SERVICE_URL/inventory
Vous devriez obtenir trois articles d'inventaire, conformément aux exemples de données du service. Voici un exemple de réponse :
[
{
"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 d'inventaire spécifique via l'URL ci-dessous. Vous devriez obtenir l'élément d'inventaire dont la valeur id est égale à 1.
SERVICE_URL/inventory/1
La réponse devrait ressembler à 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 article d'inventaire n'a la valeur id de 200. 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 avec l'aide de Gemini.
5. Surveillance synthétique dans Google Cloud
Comme indiqué dans la documentation, les synthétiques vous permettent de définir ce que vous allez tester et 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 effectue vers des services tiers.
Lorsque vous créez un monitor synthétique, vous déployez une fonction Cloud Functions de deuxième génération, qui est basée sur Cloud Run. Votre fonction doit être écrite en Node.js et s'appuyer sur le framework SDK Synthetics Open Source. Cloud Monitoring distribue et gère ce framework.
Cloud Monitoring accepte les types de contrôles synthétiques suivants :
- Les surveillances synthétiques personnalisées ou basées sur Mocha vous permettent de déployer une fonction Cloud à usage unique entièrement configurable.
- Les vérificateurs de liens brisés vous permettent de spécifier des options, telles que l'URI d'origine, le nombre de liens testés et le nombre de nouvelles tentatives, avant de déployer une fonction Cloud préconfigurée.
Cloud Monitoring effectue une grande partie du travail lourd lors de l'exécution de ces surveillances synthétiques. Il est responsable des éléments suivants :
- Exécution périodique de votre fonction Cloud.
- Collecter et stocker les résultats de chaque exécution :
- 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 faire appel à Gemini, et plus précisément à la fonctionnalité Help Me Write, qui nous fournira le code initial pour les 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 Synthetic Monitor.
Accédez à la page Surveillance synthétique dans la console Cloud. La page suivante s'affiche :

Cliquez sur le lien CREATE SYNTHETIC MONITOR (CRÉER UN MONITOR SYNTHÉTIQUE) sur la page ci-dessus. Un formulaire de configuration s'affiche, comme illustré ci-dessous :

Nous avons fourni un nom s1, mais vous pouvez en choisir un autre. Remarquez le bouton M'AIDER À CODER sur l'écran ci-dessus. Cliquez dessus.
Un pop-up s'affiche alors. Vous devez y saisir la requête décrivant les scénarios de test que vous souhaitez exécuter pour vous assurer que l'API Inventory fonctionne correctement.

Dans la zone d'édition du prompt, utilisez un prompt comme celui 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 cas de test. Vous devez remplacer la valeur SERVICE_URL par le nom réel du service Cloud Run pour 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 illustré ci-dessous. Le code généré pour vous peut être différent de celui affiché ci-dessous. Examinez le code et les fichiers de dépendances dans le fichier package.json.

Cliquez sur INSÉRER DANS CLOUD FUNCTIONS. Un formulaire de création de fonction Cloud s'affiche, avec les valeurs nécessaires déjà renseignées.

Cliquez sur APPLY FUNCTION (Appliquer la fonction), puis sur le bouton CREATE (Créer). Dans cet exemple, nous n'avons sélectionné aucune configuration de canal d'alerte, mais vous pouvez le faire.
Le processus de création de la fonction Cloud Google démarre en arrière-plan. Cette opération peut prendre quelques minutes. Merci de patienter.

Une fois la fonction Cloud déployée, Cloud Monitoring commence à appeler la surveillance synthétique pour vous.
Au début, vous verrez qu'il n'y a pas d'invocations, comme indiqué ci-dessous :

Une fois les exécutions spécifiques disponibles, vous pourrez les consulter. L'écran ci-dessous montre que les tests sont réussis :

Si vous cliquez sur le nom du Synthetic Monitor (par exemple, s1), les différentes exécutions s'affichent, comme illustré ci-dessous :

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