GSP1330

Visão geral
O Gemini é um colaborador com tecnologia de IA que ajuda as equipes de desenvolvimento a criar, implantar e operar aplicativos com mais rapidez e eficiência.
Neste laboratório, você vai aprender como o Gemini para desenvolvedores ajuda a depurar código e a gerar testes de unidade, como ao testar condições de limite no código.
Os laboratórios deste curso abrangem um ciclo de vida de desenvolvimento de software (SDLC, na sigla em inglês) típico do ponto de vista dos desenvolvedores de aplicativos. Outros aspectos do SDLC (requisitos, segurança, monitoramento etc.) serão abordados em outros cursos.
Objetivos
Neste laboratório, você vai aprender a usar o Gemini para desenvolvedores para:
- Identificar e resolver erros de execução com a ajuda desse recurso.
- Gerar testes de unidade para funções.
O que você vai aprender
A Cymbal Superstore é uma plataforma de compras on-line de sucesso sempre em busca melhorias para se manter competitiva no mercado. Como parte dos esforços contínuos de desenvolvimento, foi criado um novo recurso chamado "Novos produtos" para que os usuários descubram mais facilmente as novidades disponíveis na loja.

O novo endpoint newproducts foi implantado no ambiente de testes, mas não é exatamente o que o proprietário da empresa quer. Você precisa fazer algumas modificações e depurar o novo código. Para manter o foco do laboratório em como o Gemini para desenvolvedores pode ajudar você, o novo código será adicionado à base de código original. Você também vai desenvolver alguns testes de unidade dos serviços de back-end.
Configuração e requisitos
Antes de clicar no botão Começar o Laboratório
Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é ativado quando você clica em Iniciar laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.
Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, e não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.
Confira os requisitos para concluir o laboratório:
- Acesso a um navegador de Internet padrão (recomendamos o Chrome).
Observação: para executar este laboratório, use o modo de navegação anônima (recomendado) ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e de estudante, o que poderia causar cobranças extras na sua conta pessoal.
- Tempo para concluir o laboratório: não se esqueça que, depois de começar, não será possível pausar o laboratório.
Observação: use apenas a conta de estudante neste laboratório. Se usar outra conta do Google Cloud, você poderá receber cobranças nela.
Como iniciar seu laboratório e fazer login no console do Google Cloud
-
Clique no botão Começar o laboratório. Se for preciso pagar por ele, uma caixa de diálogo vai aparecer para você selecionar a forma de pagamento.
No painel Detalhes do Laboratório, à esquerda, você vai encontrar o seguinte:
- O botão Abrir Console do Google Cloud
- O tempo restante
- As credenciais temporárias que você vai usar neste laboratório
- Outras informações, se forem necessárias
-
Se você estiver usando o navegador Chrome, clique em Abrir console do Google Cloud ou clique com o botão direito do mouse e selecione Abrir link em uma janela anônima.
O laboratório ativa os recursos e depois abre a página Fazer Login em outra guia.
Dica: coloque as guias em janelas separadas lado a lado.
Observação: se aparecer a caixa de diálogo Escolher uma conta, clique em Usar outra conta.
-
Se necessário, copie o Nome de usuário abaixo e cole na caixa de diálogo Fazer login.
{{{user_0.username | "Username"}}}
Você também encontra o nome de usuário no painel Detalhes do Laboratório.
-
Clique em Próxima.
-
Copie a Senha abaixo e cole na caixa de diálogo de Olá.
{{{user_0.password | "Password"}}}
Você também encontra a senha no painel Detalhes do Laboratório.
-
Clique em Próxima.
Importante: você precisa usar as credenciais fornecidas no laboratório, e não as da sua conta do Google Cloud.
Observação: se você usar sua própria conta do Google Cloud neste laboratório, é possível que receba cobranças adicionais.
-
Acesse as próximas páginas:
- Aceite os Termos e Condições.
- Não adicione opções de recuperação nem autenticação de dois fatores (porque essa é uma conta temporária).
- Não se inscreva em testes gratuitos.
Depois de alguns instantes, o console do Google Cloud será aberto nesta guia.
Observação: para acessar os produtos e serviços do Google Cloud, clique no Menu de navegação ou digite o nome do serviço ou produto no campo Pesquisar.
Ativar o Cloud Shell
O Cloud Shell é uma máquina virtual com várias ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud. O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.
-
Clique em Ativar o Cloud Shell
na parte de cima do console do Google Cloud.
-
Clique nas seguintes janelas:
- Continue na janela de informações do Cloud Shell.
- Autorize o Cloud Shell a usar suas credenciais para fazer chamadas de APIs do Google Cloud.
Depois de se conectar, você verá que sua conta já está autenticada e que o projeto está configurado com seu Project_ID, . A saída contém uma linha que declara o projeto PROJECT_ID para esta sessão:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
A gcloud é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.
- (Opcional) É possível listar o nome da conta ativa usando este comando:
gcloud auth list
- Clique em Autorizar.
Saída:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (Opcional) É possível listar o ID do projeto usando este comando:
gcloud config list project
Saída:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Observação: consulte a documentação completa da gcloud no Google Cloud no guia de visão geral da gcloud CLI.
Tarefa 1: Investigar, gerar e testar o código
Definir as variáveis de ambiente
- No Cloud Shell, execute o comando a seguir para definir as variáveis de ambiente necessárias.
export PROJECT_ID=$(gcloud config get-value project)
export REGION={{{project_0.default_region|Lab Region}}}
export ZONE={{{project_0.startup_script.lab_zone|Lab Zone}}}
- Copie os arquivos necessários para o Cloud Shell do bucket do Cloud Storage.
gsutil -m cp -r gs://duet-appdev/cymbal-superstore .
Investigar o código
Além da capacidade do Gemini de explicar segmentos de código com que você não está familiarizado, a ferramenta de IA também cria comentários para você adicionar ao código para aumentar a compreensão durante os futuros ciclos de manutenção.
- Abra o editor ao clicar na opção Abrir editor, que aparece no canto superior direito da janela do Cloud Shell.

Isso vai abrir o editor do Visual Studio Code. É possível visualizar o editor em uma nova janela usando a opção presente na barra de menus do Cloud Shell.
- Acesse Arquivo > Abrir pasta….

- Selecione o diretório cymbal-superstore e clique em OK.


A pasta selecionada agora deve estar visível na seção Explorador do editor do Visual Studio Code.

-
Abra o arquivo index.ts na pasta backend.
-
No canto superior direito do arquivo, clique na seta ao lado de Gemini
.
-
Clique em Selecionar projeto do Gemini Code Assist para escolher o projeto a ser usado no Gemini. Na lista, selecione ID do projeto.


- Se aparecer um comando na parte de baixo do editor informando que o Gemini Code Assist não está ativado para o projeto selecionado, clique no botão Ativar API no comando para executar essa ação.

Gerar o código
- No arquivo index.ts, role até a linha
102, onde aparece o seguinte texto: /newproducts endpoint code goes here.
Substitua essa linha pelo comentário mostrado abaixo.
{{{project_0.startup_script.prompt_1 | "Comment 1"}}}
{{{project_0.startup_script.prompt_2 | "Comment 2"}}}
- Selecione o comentário recém-adicionado e clique no ícone de lâmpada amarela exibido. Na lista, clique na seguinte opção:
Gemini: Generate code.

- O Gemini mostra algumas sugestões de código. Confira o código sugerido e aceite ao clicar em Aceitar ou pressionar a tecla Tab. O código será semelhante a este:

Observação:
- O Gemini sabia o significado de "estão em estoque". Essa é uma expressão bastante conhecida, com um significado comum, e por isso a ferramenta usou isso nesse caso. Se o requisito for menos comum, pode ser necessário um exemplo.
- O uso de uma propriedade de dados chamada "quantidade" permitiu que o Gemini a associasse ao conceito de "em estoque". Se você nomear suas variáveis, propriedades e métodos com abreviações ou outras palavras não padronizadas, seu código não será tão facilmente mantido por outras pessoas, e o Gemini será menos específico nas sugestões.
- Mesmo que não tenha sido solicitado, o Gemini sugeriu um código com a verificação de execução do banco de dados para manter a consistência com outros endpoints no arquivo.
Testar o código
- Volte ao terminal do Cloud Shell usando o botão Abrir terminal na barra de ferramentas da janela do Cloud Shell. No terminal do Cloud Shell, execute o comando a seguir:
cd ~/cymbal-superstore/backend
npm run start
A saída vai ficar semelhante a esta:

- Abra outro terminal no Cloud Shell clicando na opção + na barra de ferramentas da janela do Cloud Shell e chame o endpoint no localhost.
curl localhost:8000/newproducts
e veja a saída no primeiro terminal, que foi cancelada e houve um erro.
A saída vai ficar semelhante a esta:

Clique em Verificar meu progresso para conferir o objetivo.
Gerar e testar o código.
Tarefa 2: Investigue com o Gemini Chat
-
Abra o arquivo index.ts no editor.
-
Abra o Gemini Chat conforme mostrado na captura de tela e insira no comando a mensagem de erro fornecida.
{{{project_0.startup_script.prompt_2_1 | "Mensagem de erro a ser inserida no comando"}}}

A saída vai ficar semelhante a esta:

Observação: o Gemini gera um resultado diferente a cada vez que é executado. Por isso, os resultados exibidos podem não corresponder à sua resposta.
- Examine o código para resolver o problema atual. O comando abaixo é o que você determina ser a origem do erro:
const query = firestore
const products = await firestore
.collection("inventory")
.where("timestamp", ">", new Date(Date.now() - 604800000))
.where("quantity", ">", 0);
.where("timestamp", ">=", sevenDaysAgo)
.where("quantity", ">", 0)
.get();
A resposta do Gemini propõe as opções de modificar os filtros para que se tornem filtros de igualdade ou excluir um dos filtros de desigualdade.
Primeiro, vamos remover o filtro "quantity" da chamada do Firestore para resolver o erro.
- Para remover o filtro de desigualdade "quantity", remova o seguinte fragmento de código do arquivo index.ts.
.where("quantity", ">", 0);
Esse código pode ser removido para que a função opere sem erros. Não será possível filtrar os produtos com uma quantidade de 0 da resposta da API. Por isso, eles não vão atender ao requisito de negócios e vão falhar. É preciso ter cuidado para não inserir itens esgotados. Há várias abordagens adequadas para isso, e algumas delas podem funcionar melhor do que outras. Por isso, vamos pedir ajuda ao Gemini.
- Faça a pergunta abaixo no Gemini Chat e verifique se o arquivo index.ts está aberto.
{{{project_0.startup_script.prompt_2_2 | "Pergunta para o Gemini Chat"}}}
A saída vai ficar semelhante a esta:

Se o Gemini insistir em sugerir a adição de duas cláusulas WHERE mesmo depois que você redefinir a conversa, use a seguinte técnica para receber uma resposta diferente.
{{{project_0.startup_script.prompt_2_3 | "Abordagem diferente de perguntas no Gemini Chat"}}}
O Gemini muitas vezes oferece uma alternativa que pode ser experimentada. Talvez seja necessário redefinir a conversa e modificar o comando algumas vezes para conseguir uma opção que não seja o Firestore.
Observação: às vezes, o Gemini fica teimoso e oferece apenas opções aleatórias (e ilegais) do Firestore. Nesse caso, o estudante terá apenas que seguir em frente com a sugestão oferecida.
A saída vai ficar semelhante a esta:

- Modifique o código atual adicionando o snippet de código no arquivo index.ts.
if (p.quantity > 0) {
productsArray.push(p);
}
Após a modificação, o código deve ficar assim:

Testar o código com as mudanças acima.
- Abra o terminal do Cloud Shell e cole o comando abaixo.
cd ~/cymbal-superstore/backend
npm run start
- Abra outra guia do terminal e chame o endpoint
localhost.
curl localhost:8000/newproducts
A saída vai ficar semelhante a esta:

- Vamos tentar outra forma com um comentário inline e remover a condição adicionada acima. O código final seria semelhante a este.

- Adicione o comentário abaixo antes da linha productsArray.push(p). Pressione Ctrl+Enter para gerar um código. Aceite o código se ele retornar
if (p.quantity > 0).
{{{project_0.startup_script.prompt_2_4 | "Comentário na mensagem"}}}
Comente o filtro para que ele fique assim:

Clique em Verificar meu progresso para conferir o objetivo.
Investigue com o Gemini Chat.
Observação: como há várias maneiras de codificar essa correção, o Gemini pode oferecer muitas sugestões. Quando isso acontece, é preciso avaliar as opções. Isso também pode resultar em algumas correções de sintaxe, como mostrado acima.
Tarefa 3: Como executar os testes
- Acesse o terminal do Cloud Shell e execute o comando abaixo.
cd cymbal-superstore/backend
npm run test
A saída vai ficar semelhante a esta:

- Abra o arquivo index.test.ts na pasta "backend". Este arquivo contém alguns testes simples desenvolvidos com uma ferramenta chamada
supertest, usando o framework de teste Jest. Analise os testes atuais e peça ao Gemini para explicar o que não estiver claro.
Tarefa 4: Desenvolver testes com a ajuda do Gemini
Nesta tarefa, você vai escrever um teste para a nova API Products no back-end com a ajuda do Gemini.
Desenvolver o teste
- Abra o arquivo index.test.ts na pasta "backend". Na parte de baixo do arquivo, adicione os comentários a seguir.
{{{project_0.startup_script.prompt_3_1 | "Comentário na mensagem 1 em index.test.ts"}}}
{{{project_0.startup_script.prompt_3_2 | "Comentário na mensagem 2 em index.test.ts"}}}
- Selecione o comentário recém-adicionado e clique no ícone de lâmpada amarela exibido. Na lista, clique na seguinte opção:
Gemini: Generate code. Pressione Tab para aceitar a sugestão.
Este é um exemplo do código gerado. Você também pode colar o código abaixo.
describe('GET /newproducts', () => {
it('should return a 200 status code', async () => {
const response = await request(app)
.get('/newproducts');
{{{project_0.startup_script.prompt_3_3 | "Linha de código gerada pelo Gemini"}}};
});
it('should return a list of new products with length 8', async () => {
const response = await request(app)
.get('/newproducts');
expect(response.body.length).toBe(8);
});
});
Executar o teste
- Execute os comandos abaixo no terminal do Cloud Shell.
cd ~/cymbal-superstore/backend
npm run test
A saída vai ficar semelhante a esta:

- Investigue qual teste falhou rolando os resultados na saída do terminal.

Observação: essa resposta indica que o teste falhou. O valor 10 era a contagem de novos produtos, incluindo produtos com quantidade 0. Os novos requisitos de negócios indicam que os itens fora de estoque devem ser filtrados, mas o teste mostra que algo está errado.
Clique em Verificar meu progresso para conferir o objetivo.
Escrever testes para a nova API de produtos.
Corrigir o erro
- Abra o arquivo index.ts na pasta "backend" e remova o comentário para o filtro que foi adicionado na última tarefa. O código atualizado deve ficar assim:
//não insira produtos esgotados
if (p.quantity > 0)
productsArray.push(p);
- Execute o teste novamente no terminal do Cloud Shell.
cd ~/cymbal-superstore/backend
npm run test
A saída vai ficar semelhante a esta:

Tarefa 5: Teste de condição de limite
Pode ser difícil realizar testes de condição de limite. Essa dificuldade decorre da necessidade de considerar cenários inesperados, como listas vazias ou saldos negativos. São situações que não deveriam ocorrer, mas que podem surgir durante a execução. Nesse contexto, vejamos se o Gemini pode ajudar.
- Para fornecer a resposta mais genérica, feche todos os arquivos abertos. Redefina o Gemini Chat ao clicar no ícone Nova conversa (+) acima da conversa e insira o seguinte comando:
{{{project_0.startup_script.prompt_4_1 | "Comando para condições de limite"}}}
A saída vai ficar semelhante a esta:
Sim, posso ajudar você a criar testes para condições de limite.
A análise de valor limite é uma parte crucial dos testes de software.
Envolve testes nas "bordas" ou "limites" dos domínios de entrada.
Esses são os lugares onde os erros costumam se esconder.
Para ajudar você da melhor forma possível, preciso de mais informações. Por exemplo:
- Qual linguagem de programação você está usando?
- Você pode fornecer o código (ou um snippet dele) que quer testar?
- Quais são as entradas e os intervalos válidos esperados?
- Abra o arquivo index.ts na pasta
backend para fornecer mais informações ao Gemini. Faça perguntas ao Gemini sobre testes de limite para o endpoint /newproducts. Abra o chat do Gemini e digite:
{{{project_0.startup_script.prompt_4_2 | "Comando para testes de limite para o endpoint '/newproducts'"}}}
A saída vai ficar semelhante a esta:

Observação: alguns desses itens foram gerados com base no próprio código (adicionados nos últimos 7 dias e em estoque) e em condições de limite mais gerais que o Gemini identificou como típicas para esse tipo de código. Isso é muito útil para começar a criar um conjunto sólido de condições de limite.
- Para transformar em testes reais, abra o arquivo index.test.ts. Copie o comentário abaixo e adicione essa informação ao final do arquivo.
{{{project_0.startup_script.prompt_4_3 | "Comentário na mensagem no arquivo index.test.ts"}}}
A saída vai ficar semelhante a esta:

- Adicione o código a seguir após o comentário acima no arquivo index.test.ts.
describe('GET /newproducts', () => {
it('should not return products that are out of stock', async () => {
const response = await request(app)
.get('/newproducts');
response.body.forEach((product: any) => {
expect(product.quantity).toBeGreaterThan(0);
});
});
});
- Execute o teste novamente no terminal do Cloud Shell. A saída será como a mostrada abaixo.
A saída vai ficar semelhante a esta:

Clique em Verificar meu progresso para conferir o objetivo.
Teste de condição de limite.
Parabéns!
Ao finalizar este laboratório, você adquiriu proficiência no uso do Gemini para desenvolvedores para melhorar os recursos de depuração de código e simplificar a geração de testes de unidade, principalmente ao avaliar condições de limite no código.
Manual atualizado em 17 de outubro de 2025
Laboratório testado em 17 de outubro de 2025
Copyright 2025 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.