1. Introducción
En este codelab, veremos cómo utilizar la función Ayúdame a escribir para crear pruebas de supervisión sintética para tus servicios existentes.
Actividades
- Implementarás una API en Google Cloud Run, que actuará como base para nuestro servicio que probaremos.
- Luego, escribirás un monitor sintético, que es una función de Cloud Monitoring.
- Usarás la función Ayúdame a escribir para redactar el monitor sintético.
Qué aprenderás
- Qué es la supervisión sintética
- Cómo usar la función Ayúdame a escribir de Gemini en la supervisión sintética para crear casos de prueba que validen la funcionalidad principal del servicio
Qué necesitarás
- Navegador web Chrome
- Una cuenta de Gmail
- Un proyecto de Cloud con la facturación habilitada
- Gemini Code Assist habilitado para tu proyecto de Cloud
Este lab está dirigido a desarrolladores de todos los niveles, incluidos principiantes. Aunque la aplicación de muestra está en lenguaje Python, no es necesario que sepas programar en ese lenguaje para entender lo que se hace.
2. Configuración
Ahora habilitaremos Gemini para Cloud en nuestro proyecto de Google Cloud. Sigue los pasos que se indican a continuación:
- Ve a https://console.cloud.google.com y asegúrate de haber seleccionado el proyecto de Google Cloud con el que planeas trabajar en este lab. Haz clic en el ícono de Abrir Gemini que ves en la esquina superior derecha.

- La ventana de chat de Gemini for Cloud se abrirá en el lado derecho de la consola. Haz clic en el botón Habilitar como se muestra a continuación. Si no ves el botón Habilitar y, en cambio, ves una interfaz de chat, es probable que ya hayas habilitado Gemini para Cloud en el proyecto y puedas continuar directamente con el siguiente paso.

- Una vez que esté habilitada, haz una o dos consultas para probar Gemini for Cloud. Se muestran algunas consultas de ejemplo, pero puedes probar con la siguiente consulta
What is Synthetic Monitoring?.

Gemini for Cloud responderá tu pregunta. Consulta la lista de documentación de referencia que se proporcionó sobre cómo escribir monitores sintéticos en Google Cloud.
Puedes hacer clic en el ícono
de la esquina superior derecha para cerrar la ventana de chat de Gemini para Cloud.
3. Implementa una API de Inventory de muestra en Google Cloud Run
Antes de comenzar a escribir las pruebas, necesitaremos una API de muestra con la que podamos realizar pruebas. Para ello, escribiremos una API de inventario simple que implementaremos en Google Cloud Run.
Usaremos el IDE de Cloud Shell, un entorno de desarrollo completamente administrado basado en Code OSS. El entorno incluye la extensión de Cloud Code para IDE, que hace que trabajar con los servicios de Google Cloud sea eficiente. Sigue los pasos que se indican a continuación:
- Visita ide.cloud.google.com. Es posible que el IDE tarde un poco en aparecer, así que ten paciencia.
- Haz clic en el botón Cloud Code - Acceder en la barra de estado de la parte inferior como se muestra. Autoriza el complemento según las instrucciones. Si ves "Cloud Code (ningún proyecto)" en la barra de estado, selecciónalo y elige el proyecto específico de Google Cloud de la lista de proyectos con los que planeas trabajar.

- Haz clic en el botón Gemini en la esquina inferior derecha como se muestra y selecciona por última vez el proyecto de Google Cloud correcto. Si se te solicita que habilites la API de Cloud AI Companion, hazlo y continúa.
- Una vez que selecciones tu proyecto de Google Cloud, asegúrate de que puedas verlo en el mensaje de estado de Cloud Code en la barra de estado y de tener Code Assist habilitado en la barra de estado del lado derecho, como se muestra a continuación:

- Haz clic en el nombre del proyecto de Google Cloud en la barra de estado que aparece a continuación.

- Aparecerá una lista de opciones. Haz clic en Aplicación nueva en la lista que aparece a continuación.

- Selecciona aplicación Cloud Run.
- Selecciona la plantilla de aplicación Python (Flask): Cloud Run.
- Guarda la aplicación nueva en la ubicación que quieras.
- Una notificación confirmará que se creó tu aplicación y se abrirá una nueva ventana con tu aplicación cargada, como se muestra a continuación. Se abrirá un archivo
README.md. Ahora puedes cerrar esa vista.

- En el Explorador, visita el archivo
app.pyy reemplázalo por el contenido que se muestra a continuación:
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)
- Es momento de implementar la API de inventario en Cloud Run. Deberemos iniciar una nueva sesión de la terminal desde el IDE de Cloud Shell por medio del ícono de menú en la parte superior izquierda. Haz clic en el ícono de menú y, luego, en Terminal → Terminal nueva como se muestra a continuación:

- En la sesión de la terminal, ingresa el siguiente comando:
gcloud run deploy --source .
- El comando anterior preguntará sobre un
regionpara implementar. Eligeus-central1. Te pedirá que permitasunauthenticated invocations. Para ello, diy. - Una vez que el servicio se implemente correctamente, se proporcionará una URL de servicio. Anota eso.
4. Prueba la API de Inventory
Ahora puedes probar la API de Inventory. Para ello, inicia el navegador y accede a los siguientes extremos:
SERVICE_URL/inventory
Esto debería devolverte 3 elementos de inventario según los datos de muestra del servicio. A continuación, se muestra una respuesta de ejemplo:
[
{
"id": 1,
"name": "Item 1",
"quantity": 10
},
{
"id": 2,
"name": "Item 2",
"quantity": 20
},
{
"id": 3,
"name": "Item 3",
"quantity": 30
}
]
Ahora podemos recuperar un artículo de inventario específico a través de la siguiente URL. Esto debería devolverte el artículo del inventario que tiene el valor id de 1.
SERVICE_URL/inventory/1
La respuesta debería ser similar a la siguiente:
{
"id": 1,
"name": "Item 1",
"quantity": 10
}
Por último, podemos intentar recuperar un artículo del inventario que no existe.
SERVICE_URL/inventory/200
Esto debería devolverte un mensaje de error, ya que no hay ningún artículo de inventario con el valor id de 200. La respuesta podría ser similar a la siguiente:
{
"error": "Item not found"
}
Ahora sí, podemos escribir nuestras pruebas de supervisión sintética en Cloud Monitoring con la ayuda de Gemini.
5. Supervisión sintética en Google Cloud
Como se indica en la documentación, los monitores sintéticos te permiten definir qué vas a probar y una secuencia de pruebas. Por ejemplo, puedes probar la página de acceso de tu aplicación, el proceso de confirmación de compra de tu tienda de comercio electrónico o las llamadas a la API que tu aplicación realiza a servicios de terceros.
Cuando creas un monitor sintético, implementas una función de Cloud Functions de 2ª gen. que se basa en Cloud Run. Tu función debe escribirse en Node.js y depender del framework de código abierto del SDK de Synthetics. Cloud Monitoring distribuye y administra este framework.
Cloud Monitoring admite los siguientes tipos de monitores sintéticos:
- Los monitores sintéticos personalizados o basados en Mocha te permiten implementar una Cloud Function de un solo propósito completamente configurable.
- Los verificadores de vínculos rotos te permiten especificar opciones, como el URI de origen, la cantidad de vínculos probados y la cantidad de reintentos, antes de implementar una función de Cloud Functions preconfigurada.
Cloud Monitoring realiza una gran cantidad de trabajo pesado mientras ejecuta estos monitores sintéticos. Es responsable de lo siguiente:
- Ejecución periódica de tu Cloud Function
- Recopila y almacena los resultados de cada ejecución:
- Información de éxito y error, como el mensaje de error, el tipo de error y la línea de código
- Tiempo de ejecución
- Registros
- Métricas
Vamos a usar la ayuda de Gemini y, específicamente, la función Help Me Write, que nos proporcionará el código inicial para las pruebas, de modo que podamos usarlo para probar y también crear funciones adicionales sobre él. Comencemos.
6. Cómo escribir nuestro monitor sintético para los casos de prueba de la API de Inventory
Ahora iremos a Cloud Console para escribir nuestro monitor sintético.
Visita la página Synthetic Monitoring en la consola de Cloud. Aparecerá la página que se muestra a continuación:

Haz clic en el vínculo CREATE SYNTHETIC MONITOR en la página anterior. Aparecerá un formulario de configuración como el que se muestra a continuación:

Proporcionamos el nombre s1, pero puedes elegir cualquier otro. Observa el botón AYÚDAME A ESCRIBIR CÓDIGO en la pantalla anterior. Haz clic en él.
Aparecerá una ventana emergente en la que deberás proporcionar la instrucción que describa los casos de prueba que deseas ejecutar para asegurarte de que la API de Inventory funcione correctamente.

En el cuadro de edición de instrucciones, usa una instrucción como la que se muestra a continuación:
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".
Ten en cuenta que proporcionamos 3 casos de prueba y que debes reemplazar el valor de SERVICE_URL por el nombre real del servicio de Cloud Run para tu servicio.
Una vez que hagas clic en GENERATE, Gemini generará el código del paquete de pruebas y el archivo package.json, como se muestra a continuación. El código que se genera para ti puede diferir del que se muestra a continuación. Observa el código y los archivos de dependencia en el archivo package.json.

Haz clic en INSERT INTO CLOUD FUNCTION. Se abrirá un formulario de creación de Cloud Functions con los valores necesarios completados.

Haz clic en APLICAR FUNCIÓN y, luego, en el botón CREAR. En este ejemplo, no elegimos ninguna configuración de canal de alertas, pero puedes seleccionar la que quieras.
Esto iniciará el proceso de creación de la función de Google Cloud en segundo plano. Este proceso puede tardar unos minutos, así que ten paciencia.

Una vez que se implemente correctamente la Cloud Function, Cloud Monitoring comenzará la tarea de invocar el monitor sintético por ti.
Al principio, verás que no hay invocaciones, como se muestra a continuación:

Una vez que haya ejecuciones específicas, podrás ver las distintas ejecuciones. En la siguiente pantalla, se muestra que las pruebas se aprobaron:

Si haces clic en el nombre del monitor sintético (p.ej., s1), se mostrarán las distintas ejecuciones, como se muestra a continuación:

7. ¡Felicitaciones!
¡Felicitaciones! Implementaste correctamente una API de muestra en Google Cloud Run y escribiste pruebas de supervisión sintética para validar la funcionalidad del servicio. Durante el proceso, usaste Gemini para generar el código del conjunto de pruebas.