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

1. Introdução

Neste codelab, vamos ver como usar o recurso Quero ajuda para escrever para criar testes de monitoramento sintético nos serviços atuais.

O que você vai fazer…

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

O que você vai aprender…

  • O que é monitoramento sintético.
  • Como usar o recurso "Quero ajuda para escrever" do Gemini no monitoramento sintético para criar casos de teste que vão validar a funcionalidade do serviço principal.

O que é necessário…

  • Navegador da Web Google Chrome
  • Uma conta do Gmail
  • Um projeto do Cloud com faturamento ativado
  • Gemini Code Assist 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 nosso 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 no Cloud vai abrir no lado direito do console. Clique no botão "Ativar" como mostrado abaixo. Se o botão Ativar não aparecer, mas a interface do Chat não aparecer, é provável que você já tenha ativado o Gemini para Cloud no projeto, então siga direto para a próxima etapa.

e8df9adc4ea43a37.png

  1. Depois de ativá-lo, você pode fazer uma ou duas consultas para testar o Gemini para Cloud. Você verá alguns exemplos de consulta, mas é possível tentar a seguinte What is Synthetic Monitoring?

9859ea86a8310cb.png

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

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

3. Implante uma amostra da API Inventory no Google Cloud Run

Antes de começar a programar com os testes, precisaremos de uma API de amostra para realizarmos testes. Para isso, vamos criar 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 em Code OSS. O ambiente tem 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. Talvez demore um pouco para o IDE aparecer.
  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 pela última vez o projeto correto do Google Cloud. Se você precisar ativar a API Cloud AI Companion, faça isso e prossiga.
  2. Depois de selecionar seu projeto do Google Cloud, verifique se aparece na mensagem de status do Cloud Code na barra de status e 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 pelo conteúdo 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. É hora de implantar a API Inventory no Cloud Run. Vamos precisar iniciar uma nova sessão de terminal no ambiente de desenvolvimento integrado do Cloud Shell usando o í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 implantar. Escolha us-central1. Ele vai pedir permissão para unauthenticated invocations. 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 iniciando o navegador e acessando os seguintes endpoints:

SERVICE_URL/inventory

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

[
  {
    "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 específico de inventário pelo URL abaixo. Isso retornará o item de inventário que tem o valor id de 1.

SERVICE_URL/inventory/1

A resposta será semelhante a:

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

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

SERVICE_URL/inventory/200

Isso vai retornar uma mensagem de erro, já que 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 criar nossos testes de monitoramento sintético no Cloud Monitoring com a ajuda do Gemini.

5. Monitoramento sintético no Google Cloud

Conforme indicado na documentação, os monitores sintéticos permitem que você defina o que vai testar e uma sequência de testes. Por exemplo, você pode testar a página de login do seu aplicativo, o processo de finalização de compra da sua 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 2a geração criada no Cloud Run. Sua função precisa ser escrita em Node.js e contar com 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 monitores sintéticos:

O Cloud Monitoring faz um trabalho pesado durante a execução desses monitores sintéticos. Ele é responsável por:

  • Execução periódica da sua função do Cloud.
  • Como coletar e armazenar os resultados de cada execução:
  • Informações de sucesso e falha, como a mensagem, 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 dos testes. Assim, poderemos usá-lo para testar e criar outros recursos. Vamos continuar.

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

Agora vamos acessar o console do Cloud para criar o monitor sintético.

Acesse a página Monitoramento sintético no Console do Cloud. A página será aberta conforme mostrado abaixo:

96bfce88f55442f3.png

Clique no link CRIAR SYNTHETIC MONITOR na página acima. Feito isso, será exibido um formulário de configuração, conforme mostrado abaixo:

af4dde3e9e0a5a16.png

Oferecemos um nome s1, mas você pode escolher qualquer outro. Observe o botão HELP ME CODE na tela acima. Clique nele.

Isso abrirá um pop-up em que você precisará fornecer o comando que descreve os casos de teste que você quer executar para garantir que a API Inventory está funcionando bem.

a13e78db15b37dd3.png

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

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, e você precisa substituir 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 teste 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 INSERT INTO CLOUD FUNCTION. Isso abrirá um formulário de criação de função do Cloud com os valores necessários preenchidos para você.

d70e50624a09149a.png

Clique em APLICAR FUNÇÃO e depois no botão CRIAR. Não escolhemos nenhuma configuração de canal de alerta nesse exemplo, mas você pode selecioná-la.

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

1b07702ea5ac5bdb.png

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

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

dac473269a289a3b.png

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

dc2d7dd98277fbcc.png

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

8369a02b413d12cc.png

7. Parabéns!

Parabéns! Você implantou uma API de amostra no Google Cloud Run e criou 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 Pacote de testes.

8. Documentos de referência