Scrittura di test di monitoraggio sintetici per i tuoi servizi utilizzando Gemini

1. Introduzione

In questo codelab, vedremo come utilizzare la funzionalità Aiutami a scrivere per creare test di monitoraggio sintetico per i tuoi servizi esistenti.

Cosa farai...

  • Eseguirai il deployment di un'API in Google Cloud Run, che fungerà da base per il nostro servizio che testeremo.
  • Poi scriverai un monitoraggio sintetico, che è una funzionalità di Cloud Monitoring.
  • Utilizzerai la funzionalità Aiutami a scrivere per scrivere il monitoraggio sintetico.

Cosa imparerai...

  • Che cos'è il monitoraggio sintetico.
  • Come utilizzare la funzionalità Aiutami a scrivere di Gemini nel monitoraggio sintetico per creare scenari di test che convalideranno la funzionalità del servizio di base.

Che cosa ti serve...

  • Browser web Chrome
  • Un account Gmail.
  • Un progetto Cloud con fatturazione abilitata
  • Gemini Code Assist abilitato per il tuo progetto Cloud

Questo lab è rivolto a sviluppatori di tutti i livelli, inclusi i principianti. Anche se l'applicazione di esempio è in linguaggio Python, non è necessario avere familiarità con la programmazione Python per capire cosa sta succedendo.

2. Configurazione

Ora abiliteremo Gemini per Cloud nel nostro progetto Google Cloud. Procedi come indicato di seguito:

  1. Visita https://console.cloud.google.com e assicurati di aver selezionato il progetto Google Cloud con cui prevedi di lavorare per questo lab. Fai clic sull'icona Apri Gemini che vedi in alto a destra.

28f084ec1e159938.png

  1. Sul lato destro della console si aprirà la finestra della chat di Gemini per Cloud. Fai clic sul pulsante Abilita come mostrato di seguito. Se non vedi il pulsante Abilita, ma vedi un'interfaccia di Chat, è probabile che tu abbia già abilitato Gemini per Cloud per il progetto e puoi andare direttamente al passaggio successivo.

e8df9adc4ea43a37.png

  1. Una volta abilitato, puoi testare Gemini per Cloud chiedendogli una o due query. Vengono mostrati alcuni esempi di query, ma puoi provare la seguente query What is Synthetic Monitoring?

9859ea86a8310cb.png

Gemini per Cloud risponderà con la risposta alla tua domanda. Consulta l'elenco della documentazione di riferimento che è stato fornito su come scrivere monitor sintetici in Google Cloud.

Puoi fare clic sull'icona f68286b2b2ea5c0a.png nell'angolo in alto a destra per chiudere la finestra della chat di Gemini per Cloud.

3. Esegui il deployment di un'API Inventory di esempio su Google Cloud Run

Prima di iniziare a scrivere i test, abbiamo bisogno di un'API di esempio su cui eseguire il test. A questo scopo, scriveremo una semplice API di inventario di cui eseguiremo il deployment su Google Cloud Run.

Utilizzeremo l'IDE di Cloud Shell, un ambiente di sviluppo completamente gestito basato su Code OSS. L'ambiente include l'estensione IDE Cloud Code che rende efficiente l'utilizzo dei servizi Google Cloud. Procedi come indicato di seguito:

  1. Visita la pagina ide.cloud.google.com. La visualizzazione dell'IDE potrebbe richiedere un po' di tempo, quindi ti chiediamo di avere pazienza.
  2. Fai clic sul pulsante Cloud Code - Accedi nella barra di stato in basso come mostrato. Autorizza il plug-in come da istruzioni. Se nella barra di stato vedi il messaggio "Cloud Code - no project" (Cloud Code - nessun progetto), selezionalo e scegli il progetto Google Cloud specifico dall'elenco dei progetti con cui prevedi di lavorare.

6f5ce865fc7a3ef5.png

  1. Fai clic sul pulsante Gemini nell'angolo in basso a destra, come mostrato, e seleziona un'ultima volta il progetto Google Cloud corretto. Se ti viene chiesto di abilitare l'API Cloud AI Companion, fallo e vai avanti.
  2. Dopo aver selezionato il progetto Google Cloud, assicurati di poterlo vedere nel messaggio di stato di Cloud Code nella barra di stato e di avere attivato Code Assist sulla destra, nella barra di stato, come mostrato di seguito:

709e6c8248ac7d88.png

  1. Fai clic sul nome del progetto Google Cloud nella barra di stato in basso.

f151759c156c124e.png

  1. Viene visualizzato un elenco di opzioni. Fai clic su New Application (Nuova applicazione) dall'elenco seguente.

91ea9836f38b7f74.png

  1. Seleziona l'applicazione Cloud Run.
  2. Seleziona il modello di applicazione Python (Flask): Cloud Run.
  3. Salva la nuova applicazione nel percorso che preferisci.
  4. Una notifica conferma la creazione dell'applicazione; si apre una nuova finestra con l'applicazione caricata, come mostrato di seguito. Viene aperto un file README.md. Per ora puoi chiudere la visualizzazione.

ed250f23b0e4fee8.png

  1. Da Spazio di esplorazione, accedi al file app.py e sostituiscilo con i contenuti mostrati di seguito:
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 momento di eseguire il deployment dell'API di inventario in Cloud Run. Dovremo avviare una nuova sessione del terminale dall'IDE di Cloud Shell tramite l'icona del menu in alto a sinistra. Fai clic sull'icona del menu e poi su Terminale → Nuovo terminale, come mostrato di seguito:

289173c68f1addb5.png

  1. Nella sessione del terminale, esegui questo comando:
gcloud run deploy --source .
  1. Il comando precedente richiederà informazioni su un region di cui eseguire il deployment. Scegli us-central1. Verrà richiesto di consentire unauthenticated invocations. Consentilo dicendo y.
  2. Una volta eseguito correttamente il deployment del servizio, verrà fornito un URL del servizio. Tienilo in considerazione.

4. Testare l'API Inventory

Ora puoi testare l'API Inventory avviando il browser e raggiungendo i seguenti endpoint:

SERVICE_URL/inventory

In questo modo dovresti ricevere tre articoli di inventario in base ai dati di esempio presenti nel servizio. Di seguito viene fornita una risposta di esempio:

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

Ora possiamo recuperare un elemento specifico dell'inventario tramite l'URL riportato di seguito. Dovresti ricevere l'elemento dell'inventario che ha il valore id pari a 1.

SERVICE_URL/inventory/1

La risposta dovrebbe essere simile alla seguente:

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

Infine, possiamo provare a recuperare un elemento di inventario che non esiste.

SERVICE_URL/inventory/200

Dovrebbe essere visualizzato un messaggio di errore poiché non esiste un elemento dell'inventario con un valore pari a 200 per id. La risposta dovrebbe essere simile alla seguente:

{
  "error": "Item not found"
}

Ora siamo pronti a scrivere i nostri test di monitoraggio sintetico in Cloud Monitoring con l'aiuto di Gemini.

5. Monitoraggio sintetico in Google Cloud

Come indicato nella documentazione, i monitor sintetici consentono di definire ciò che testerai e una sequenza di test. Ad esempio, puoi testare la pagina di accesso della tua applicazione, la procedura di pagamento del tuo negozio di e-commerce o le chiamate API che la tua applicazione effettua a servizi di terze parti.

Quando crei un monitoraggio sintetico, esegui il deployment di una funzione Cloud Functions di 2a generazione basata su Cloud Run. La funzione deve essere scritta in Node.js e basarsi sul framework SDK sintetico open source. Cloud Monitoring distribuisce e gestisce questo framework.

Cloud Monitoring supporta i seguenti tipi di monitoraggi sintetici:

Cloud Monitoring esegue molte attività complesse durante l'esecuzione di questi monitoraggi sintetici. È responsabile di:

  • Esecuzione periodica della funzione Cloud Functions.
  • Raccolta e archiviazione dei risultati di ogni esecuzione:
  • Informazioni su operazioni riuscite e non riuscite, ad esempio messaggio, tipo e riga di codice.
  • Tempo di esecuzione
  • Log
  • Metriche

Prenderemo l'aiuto di Gemini, in particolare della funzionalità Help Me Write, che ci fornirà il codice iniziale per i test, in modo da poterla usare per testarla e sviluppare funzionalità aggiuntive. Iniziamo.

6. Scrittura del nostro monitoraggio sintetico per gli scenari di test dell'API Inventory

Ora mi sposterò sulla console Cloud per scrivere il nostro monitoraggio sintetico.

Visita la pagina Monitoraggio sintetico nella console Cloud. Verrà visualizzata la pagina riportata di seguito:

96bfce88f55442f3.png

Fai clic sul link CREA UN MONITORAGGIO SINTETICO nella pagina qui sopra. Verrà visualizzato un modulo di configurazione come mostrato di seguito:

af4dde3e9e0a5a16.png

Abbiamo fornito un nome s1, ma puoi sceglierne un altro. Osserva il pulsante Aiutami a programmare nella schermata sopra. Faccio clic su OK,

Si aprirà un popup in cui dovrai fornire il prompt che descrive gli scenari di test da eseguire per assicurarti che l'API Inventory funzioni correttamente.

a13e78db15b37dd3.png

Nella casella di modifica del prompt, utilizza un prompt come quello fornito di seguito:

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

Tieni presente che abbiamo fornito tre scenari di test e devi sostituire il valore SERVICE_URL con il nome effettivo del servizio Cloud Run per il tuo servizio.

Dopo aver fatto clic su GENERA, Gemini genera il codice della Test Suite e anche il file package.json, come mostrato di seguito. Il codice generato potrebbe essere diverso da quello visualizzato di seguito. Dai un'occhiata al codice e ai file delle dipendenze nel file package.json.

d19340c357f620bd.png

Fai clic su INSERT INTO CLOUD FUNCTION. Verrà visualizzato un modulo di creazione della funzione Cloud Functions con i valori necessari compilati automaticamente.

d70e50624a09149a.png

Fai clic su APPLICA FUNZIONE e quindi sul pulsante CREA. In questo esempio non abbiamo scelto alcuna configurazione del canale di avviso, ma puoi selezionarla.

Questa operazione avvierà il processo di creazione della funzione Google Cloud Functions in background. Questa operazione potrebbe richiedere alcuni minuti, quindi abbi pazienza.

1b07702ea5ac5bdb.png

Una volta eseguito il deployment della funzione Cloud Functions, Cloud Monitoring inizierà a richiamare il monitoraggio sintetico per te.

All'inizio vedrai che non sono presenti chiamate, come mostrato di seguito:

dac473269a289a3b.png

Quando ci sono esecuzioni specifiche, potrai vedere le varie esecuzioni. La schermata seguente mostra il superamento dei test:

dc2d7dd98277fbcc.png

Facendo clic sul nome del monitor sintetico (es. s1), verranno visualizzate le varie esecuzioni come mostrato di seguito:

8369a02b413d12cc.png

7. Complimenti!

Complimenti: hai eseguito il deployment di un'API di esempio in Google Cloud Run e hai scritto test di monitoraggio sintetico per convalidare la funzionalità del servizio. Durante il processo, hai utilizzato Gemini per generare il codice per la Test Suite.

8. Documenti di riferimento