Seguidores

terça-feira, 1 de julho de 2025

Dashboard de Produtividade Pessoal T2E06: BugCT1-8 Automação de teste com Gemini

INTRODUÇÃO

Post anterior: Dashboard de Produtividade Pessoal T2E05: BugCT1-8 Teste da correção do botão PlayTask do Dashboard

Neste episódio 6, da temporada 2, da série Dashboard de Produtividade Pessoal, aprendemos algo muito importante: o teste de um app pode ser feito, automaticamente, pela IA, com base nas especificações fornecidas no Prompt. 

O objetivo deste post é apresentar um prompt para o Gemini 2.5 Pro, com as especificações do "Caso de Teste 1 Tarefa sem pausa", para que o Gemini faça o teste, automaticamente, a fim de validar a correção do BugCT1-8, que ele mesmo fez.


Prompt 1: Explique o Canvas

Olá Gemini! Explique o Canvas.

Resultado do Prompt 1

Olá! Com certeza. Fico feliz em explicar o que é o "Canvas".

Pense no Canvas como o nosso quadro branco digital ou a nossa área de trabalho colaborativa. É o espaço principal, aqui à sua direita, onde eu coloco as respostas mais completas e elaboradas para você.

Enquanto a nossa conversa no chat (à esquerda) é ótima para perguntas rápidas, instruções e diálogos, o Canvas foi projetado para conteúdos mais ricos e que você provavelmente vai querer editar, salvar ou compartilhar.

Aqui estão as principais características do Canvas:

  1. É um Espaço Colaborativo: Eu crio o conteúdo inicial aqui (seja um texto, um código, uma tabela, etc.), e você pode editá-lo diretamente. Quando você me pede uma correção ou uma adição, eu atualizo o conteúdo no mesmo Canvas, mantendo nosso trabalho organizado em um só lugar.
  2. Ideal para Conteúdo Rico: É perfeito para:
    • Códigos: Como os que estamos corrigindo. Note que ele tem formatação especial e, para códigos web (HTML), há um botão "Preview" para ver o resultado.
    • Textos longos: Ensaios, relatórios, roteiros, e-mails ou qualquer outro documento que precise de mais estrutura.
    • Planos e Listas: Como planos de projeto, listas de tarefas ou roteiros de viagem.
  3. É Iterativo: O Canvas é um "documento vivo". Nós o construímos juntos. Você me pede algo, eu crio a primeira versão. Você revisa, pede ajustes, e eu vou refinando o conteúdo até que fique exatamente como você precisa.
  4. Mantém o Foco: Ele separa o nosso "produto final" (o código ou o texto no Canvas) da nossa conversa sobre ele (no chat). Isso mantém tudo mais limpo e organizado.

Em resumo, o Canvas é o nosso espaço de criação principal. É onde as suas ideias e os meus conhecimentos se unem para construir algo concreto e útil para você.

Prompt 2: Você aprendeu a fazer teste?

Olá Gemini! Com sua explicação, entendi o Canvas. Você está construindo o App d2p do zero, a partir de algumas especificações que tenho feito, com refinamentos sucessivos.

Como o App d2p usa Google Sheet no Backend e Apps Script com HTML no Frontend, eu pensei em pedir a você a execução de um caso de teste bem simples. No seu treinamento, você aprendeu a executar um caso de teste e comparar o resultado esperado com o resultado real?

Resultado do Prompt 2

Olá! Sim, essa é uma excelente pergunta e a resposta é sim, eu aprendi e posso fazer isso.

É uma parte fundamental do meu treinamento e do processo que estamos aplicando aqui. Eu não "executo" um caso de teste como um humano faria, clicando na tela, mas eu realizo um processo muito similar através da análise estática e simulação lógica do código.

Funciona assim:

  1. Entendimento do Cenário: Você me fornece o caso de teste, que geralmente inclui:
    • Pré-condições: (Ex: "A planilha está vazia").
    • Passos a serem executados: (Ex: "1. Abrir o app. 2. Clicar em 'Iniciar Jornada'. 3. Adicionar uma tarefa com os dados X, Y, Z.").
    • Resultado Esperado: (Ex: "O botão 'Play' da tarefa deve estar habilitado").
  2. Simulação Lógica (A "Execução"): Eu leio o código (Dashboard.html e Código.gs) e sigo os passos que você descreveu, simulando como o estado da aplicação e os dados na planilha mudam a cada ação.
    • "Clicar em 'Iniciar Jornada'" -> Eu analiso a função handleStartWorkday() e vejo que state.workday.startTime recebe um valor.
    • "Adicionar uma tarefa" -> Eu sigo o fluxo de handleAddTask(), a chamada para google.script.run.addTask(), a execução da função no Código.gs e o retorno para taskAdicionadaComSucesso().
    • "Renderizar a UI" -> Eu verifico a lógica na função updateUI() e renderTasks() para ver como o estado atual da aplicação se traduz visualmente, especialmente as condições para habilitar ou desabilitar botões.
  3. Comparação do Resultado: Após simular todos os passos, eu comparo o estado final do meu "teste lógico" com o Resultado Esperado que você me deu.
  4. Diagnóstico:
    • Se o resultado bate com o esperado: Eu confirmo que, de acordo com a lógica do código, o teste passaria.
    • Se o resultado não bate (um bug): Eu identifico exatamente em qual parte da lógica a divergência ocorreu. Foi o que aconteceu nos nossos últimos ajustes: eu "vi" que o botão não seria habilitado porque a condição task.status !== 'pending' não seria satisfeita, e então propus a correção.

Portanto, pode me passar o seu caso de teste. É uma maneira excelente e muito eficaz de garantirmos que o App d2p funcione exatamente como você espera.

Prompt 3: Automação de teste

Olá Gemini! Execute o Caso de Teste 1 do App d2p, conforme as especificações abaixo:

Pré-condições: A planilha está vazia.

Passos a serem executados:

1. Abrir o app d2p.

2. Clicar em 'Iniciar Jornada'.

3. Adicionar uma tarefa com os dados:

Nome: Tarefa 1 Teste 1

Codigo: S00.1.1.01

Pontos: 5

4. Clicar no botão “Play”, para executar a tarefa.

5. Aguardar 2 segundos e clicar no botão “Finalizar” para encerrar a tarefa.

6. Clicar em 'Finalizar Jornada'.

Resultado Esperado:

Coluna A(Nome): Tarefa 1 Teste 1

Coluna B(Codigo): S00.1.1.01

Coluna C(Pontos): 5

Coluna D(Status): completed

Coluna E(DuracaoEfetivaSegundos): 2

Coluna F(DataConclusao): 23/06/2025 (o formato deve ser dd/mm/aaaa hh:mm:ss)

Resultado do Prompt 3

Olá! Entendido. Realizei uma simulação lógica completa do Caso de Teste 1, seguindo cada passo que você especificou, analisando como o código se comportaria e como os dados seriam alterados tanto no frontend (o estado do app) quanto no backend (a planilha).

O resultado da análise é muito positivo! O teste passa em quase todos os critérios, mas identifiquei um ponto de melhoria importante no formato da data para garantir que ele corresponda exatamente ao que você espera.

Apresento a análise detalhada e a correção necessária no Canvas abaixo.

Análise da Execução do Caso de Teste 1

23 de jun., 10:49

Análise da Execução do Caso de Teste 1

Executei uma simulação lógica completa do teste, e o resultado geral é um SUCESSO. A aplicação se comporta como esperado na maior parte do fluxo.

Comparativo: Resultado Esperado vs. Resultado Simulado

Campo

Resultado Esperado

Resultado Simulado (Lógica do Código)

Status

Nome

Tarefa 1 Teste 1

Tarefa 1 Teste 1

Correto

Codigo

S00.1.1.01

S00.1.1.01

Correto

Pontos

5

5

Correto

Status

completed

completed

Correto

DuracaoEfetiva

2

2

Correto

DataConclusao

23/06/2025 hh:mm:ss

Mon Jun 23 2025 10:31:XX GMT-0300 (...)

⚠️ Ponto de Melhoria

Conclusão da Análise

O fluxo principal do aplicativo (iniciar jornada, adicionar e executar tarefa, finalizar jornada) funciona perfeitamente. O único ponto de divergência é o formato da data de conclusão.

  • O que Acontece Hoje: O script salva um objeto de data (new Date()) diretamente na planilha. O Google Sheets então aplica uma formatação padrão, que pode não ser a que você deseja (dd/mm/aaaa hh:mm:ss).
  • O que Precisa Acontecer: Precisamos formatar a data explicitamente no formato desejado antes de salvá-la na planilha.

Ação Necessária: Corrigir o Formato da Data

Para garantir que a data seja sempre salva no formato correto, precisamos fazer um pequeno ajuste no arquivo Código.gs. Vou usar a função Utilities.formatDate() do Apps Script para isso.

Abaixo está o bloco de código da função updateTaskStatus já com a correção. Você só precisa substituir esta função no seu arquivo Código.gs.

 

Aqui está o código corrigido para o arquivo Código.gs.

Código.gs (Formato de Data Corrigido)

23 de jun., 10:32

Abrir (Ao clicar neste botão, o código foi apresentado no lado direito do Canvas, depois foi copiado para atualizar o Apps Script)

Com esta alteração no Código.gs, o Caso de Teste 1 será concluído com 100% de sucesso, atendendo a todos os seus critérios.

CONCLUSÃO

Neste post foram estabelecidos os padrões para escrever Prompt para o Gemini 2.5 Pro executar, automaticamente, os testes do app d2p.

No Prompt 1 (Explique o Canvas), solicitamos ao Gemini uma explicação a respeito do Canvas. Aprendemos que é adequado para o tipo de serviço que estamos solicitando, que é a construção de um app pelo Gemini, a partir de nossas especificações.

No Prompt 2 (Você aprendeu a fazer teste?), fizemos esta pergunta ao Gemini e ele respondeu afirmativamente, fornecendo até um formato de Prompt.

No Prompt 3 (Automação de teste), especificamos o Caso de Teste 1 e o Gemini executou e, ainda, encontrou uma oportunidade de melhoria no código e fez a implementação, imediatamente.

Próximo post:

Nenhum comentário:

Postar um comentário

Entendendo a Metáfora "Home Office é Moto Boy"

Dashboard de Produtividade Pessoal T3E03: Integrando gráfico XmR com app d2p

INTRODUÇÃO Post anterior:  Dashboard de Produtividade Pessoal T3E02: Integrando gráfico Burndown com app d2p Este é o episódio 3 da temporad...