Como criar testes de monitoramento sintético para seus serviços usando o Gemini

1. Introdução

Neste codelab, vamos usar o recurso Me ajude a escrever para criar testes de monitoramento sintético para seus serviços atuais.

O que você vai fazer…

  • Você vai implantar uma API no Google Cloud Run, que vai servir de base para o serviço que vamos testar.
  • Em seguida, você vai escrever um monitor sintético, que é um recurso do Cloud Monitoring.
  • Você vai usar o recurso "Me ajude a escrever" para criar o monitor sintético.

O que você vai aprender…

  • O que é o monitoramento sintético.
  • Como usar o recurso "Me ajude a escrever" do Gemini no monitoramento sintético para criar casos de teste que validem a funcionalidade principal do serviço.

O que é necessário…

  • Navegador da Web Google Chrome
  • Uma conta do Gmail
  • Um projeto do Cloud com faturamento ativado
  • O Gemini Code Assist está ativado para seu projeto do Cloud

Este laboratório é voltado para desenvolvedores com todos os níveis de conhecimento, inclusive iniciantes. O aplicativo de amostra está na linguagem Python, mas você não precisa conhecer esse tipo de programação para entender o que está acontecendo.

2. Configuração

Agora vamos ativar o Gemini para Cloud no projeto do Google Cloud. Siga estas etapas:

  1. Acesse https://console.cloud.google.com e confira se você selecionou o projeto do Google Cloud com que vai trabalhar neste laboratório. Clique no ícone "Abrir o Gemini" no canto superior direito.

28f084ec1e159938.png

  1. A janela de chat do Gemini para Cloud vai abrir no lado direito do console. Clique no botão "Ativar" como mostrado abaixo. Se o botão Ativar não aparecer e, em vez disso, uma interface do chat for mostrada, é provável que você já tenha ativado o Gemini para Cloud no projeto e vá direto para a próxima etapa.

e8df9adc4ea43a37.png

  1. Depois da ativação, é possível testar o Gemini para Cloud com uma ou duas consultas. Alguns exemplos de consultas são mostrados, mas é possível tentar a seguinte consulta What is Synthetic Monitoring?

9859ea86a8310cb.png

O Gemini para Cloud vai responder à pergunta. Confira a lista de documentação de referência fornecida sobre como escrever monitores sintéticos no Google Cloud.

Clique no ícone f68286b2b2ea5c0a.png no canto superior direito para fechar a janela de chat do Gemini para Cloud.

3. Implantar uma API Inventory de amostra no Google Cloud Run

Antes de escrever os testes, precisamos de uma API de exemplo para testar. Para isso, vamos escrever uma API de inventário simples que será implantada no Google Cloud Run.

Vamos usar o Cloud Shell IDE, um ambiente de desenvolvimento totalmente gerenciado baseado no Code OSS. O ambiente vem com a extensão IDE do Cloud Code, que torna o trabalho com os serviços do Google Cloud eficiente. Siga estas etapas:

  1. Acesse ide.cloud.google.com. Pode levar algum tempo para o ambiente de desenvolvimento integrado aparecer. Aguarde.
  2. Clique no botão Cloud Code – Fazer login na barra de status inferior, conforme mostrado. Autorize o plug-in conforme instruído. Se a barra de status mostrar Cloud Code – sem projeto, clique na opção e escolha o projeto do Google Cloud com que você quer trabalhar na lista.

6f5ce865fc7a3ef5.png

  1. Clique no botão Gemini no canto inferior direito, conforme mostrado, e selecione o projeto correto do Google Cloud pela última vez. Se for necessário ativar a API IA do Google Cloud Companion, faça isso e continue.
  2. Depois de selecionar o projeto na nuvem do Google Cloud, confira se a mensagem de status do Cloud Code aparece na barra de status. Analise também se o Code Assist está ativado à direita, na barra de status, conforme mostrado abaixo:

709e6c8248ac7d88.png

  1. Clique no nome do projeto do Google Cloud na barra de status abaixo.

f151759c156c124e.png

  1. Uma lista de opções vai aparecer. Clique em Novo aplicativo na lista abaixo.

91ea9836f38b7f74.png

  1. Selecione o aplicativo do Cloud Run.
  2. Selecione o modelo de aplicativo Python (Flask): Cloud Run.
  3. Salve o novo aplicativo no local de sua preferência.
  4. Uma notificação confirma que o aplicativo foi criado. Além disso, uma nova janela é aberta com o aplicativo carregado, conforme mostrado abaixo. Um arquivo README.md é aberto. Por enquanto, você pode fechar essa visualização.

ed250f23b0e4fee8.png

  1. No Explorer, acesse o arquivo app.py e substitua o conteúdo pelo mostrado abaixo:
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. Agora é hora de implantar a API de inventário no Cloud Run. É necessário iniciar uma nova sessão do terminal no Cloud Shell IDE pelo ícone de menu no canto superior esquerdo. Clique no ícone de menu e em Terminal → Novo terminal, conforme mostrado abaixo:

289173c68f1addb5.png

  1. Na sessão do terminal, execute o seguinte comando:
gcloud run deploy --source .
  1. O comando acima vai perguntar sobre um region para implantação. Escolha us-central1. Ele vai pedir para permitir o unauthenticated invocations. Para isso, diga y.
  2. Depois que o serviço for implantado, ele vai fornecer um URL de serviço. Anote isso.

4. Testar a API Inventory

Agora você pode testar a API Inventory. Para isso, abra o navegador e acesse os seguintes endpoints:

SERVICE_URL/inventory

Isso vai retornar três itens de inventário, de acordo com os dados de amostra no serviço. Confira um exemplo de resposta:

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

Agora podemos recuperar um item de inventário específico usando o URL abaixo. Isso vai retornar o item de inventário com o valor id de 1.

SERVICE_URL/inventory/1

A resposta será semelhante a esta:

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

Por fim, podemos tentar recuperar um item de inventário que não existe.

SERVICE_URL/inventory/200

Isso vai retornar uma mensagem de erro porque não há um item de inventário com o valor id de 200. A resposta será semelhante a esta:

{
  "error": "Item not found"
}

Agora estamos prontos para escrever nossos testes de monitoramento sintético no Cloud Monitoring com a ajuda do Gemini.

5. Monitoramento sintético no Google Cloud

Conforme a documentação, os monitores sintéticos permitem definir o que você vai testar e uma sequência de testes. Por exemplo, você pode testar a página de login do aplicativo, o processo de finalização da compra da loja de e-commerce ou as chamadas de API que o aplicativo faz para serviços de terceiros.

Ao criar um monitor sintético, você implanta uma função do Cloud de 2ª geração, que é criada no Cloud Run. Sua função precisa ser escrita em Node.js e usar o framework do SDK do Synthetics de código aberto. O Cloud Monitoring distribui e gerencia esse framework.

O Cloud Monitoring é compatível com os seguintes tipos de monitor sintético:

O Cloud Monitoring faz muito trabalho pesado ao executar esses monitores sintéticos. Ela é responsável por:

  • Execução periódica da sua função do Cloud.
  • Coletar e armazenar os resultados de cada execução:
  • Informações de sucesso e falha, como a mensagem e o tipo de erro e a linha de código
  • Tempo de execução
  • Registros
  • Métricas

Vamos usar o Gemini e, especificamente, o recurso Help Me Write, que vai fornecer o código inicial para os testes. Assim, podemos usar esse código para testar e criar outros recursos. Vamos começar.

6. Como escrever nosso monitor sintético para casos de teste da API Inventory

Agora vamos ao Console do Cloud para escrever nosso monitor sintético.

Acesse a página Monitoramento sintético no Console do Cloud. Isso vai abrir a página mostrada abaixo:

96bfce88f55442f3.png

Clique no link CRIAR MONITOR SINTÉTICO na página acima. Isso vai abrir um formulário de configuração, como mostrado abaixo:

af4dde3e9e0a5a16.png

Fornecemos um nome s1, mas você pode escolher qualquer outro. Observe o botão Me ajude com o código na tela acima. Clique nele.

Isso vai abrir um pop-up em que você precisa dar o comando que descreve os casos de teste que quer executar para garantir que a API Inventory esteja funcionando corretamente.

a13e78db15b37dd3.png

Na caixa de edição de comando, use um comando como o abaixo:

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

Fornecemos três casos de teste. Substitua o valor SERVICE_URL pelo nome real do serviço do Cloud Run.

Depois de clicar em GERAR, o Gemini vai gerar o código do pacote de testes e o arquivo package.json, conforme mostrado abaixo. O código gerado para você pode ser diferente do mostrado abaixo. Confira o código e os arquivos de dependência no arquivo package.json.

d19340c357f620bd.png

Clique em INSERIR NA FUNÇÃO DO CLOUD. Isso vai abrir um formulário de criação do Cloud Functions com os valores necessários preenchidos para você.

d70e50624a09149a.png

Clique em APLICAR FUNÇÃO e no botão CRIAR. Não escolhemos nenhuma configuração de canal de alerta neste exemplo, mas você pode selecionar uma.

Isso vai iniciar o processo de criação da função do Cloud em segundo plano. Isso pode levar alguns minutos.

1b07702ea5ac5bdb.png

Depois que a função do Cloud for implantada, o Cloud Monitoring vai começar a invocar o monitor sintético para você.

No início, você vai notar que não há invocações, conforme mostrado abaixo:

dac473269a289a3b.png

Quando houver execuções específicas, você poderá conferir as várias execuções. A tela abaixo demonstra que os testes estão sendo aprovados:

dc2d7dd98277fbcc.png

Se você clicar no nome do monitor sintético (por exemplo, s1), as várias execuções vão aparecer, conforme mostrado abaixo:

8369a02b413d12cc.png

7. Parabéns!

Parabéns! Você implantou uma API de exemplo no Google Cloud Run e escreveu testes de monitoramento sintético para validar a funcionalidade do serviço. Durante o processo, você usou o Gemini para gerar o código do conjunto de testes.

8. Documentos de referência