Módulo 10 · Aula 10.2 · Plano de testes e relatório de falha
| Carga horária | Dificuldade | Ferramenta | Competências |
|---|---|---|---|
| 8 h/a | ⭐⭐ | papel, editor de texto, Godot | C5, C8 |
Objetivos de aprendizagem
- Escrever um plano de testes: o que testar, como e o que deveria acontecer.
- Escrever um relatório de falha (bug report) que outra pessoa consiga repetir.
- Classificar falhas por gravidade.
- Testar o jogo de outra dupla e receber o teste do próprio jogo sem levar para o lado pessoal.
Pré-requisitos
Aula 10.1; um jogo pronto (Projeto 6 ou anterior).
Materiais
Modelos atividades/modelos/plano-de-testes.md e atividades/modelos/relatorio-de-falha.md; jogos da turma.
Conceitos
Plano de testes. Uma tabela. Cada linha é um caso de teste: o que fazer e o que deveria acontecer. Escrever o resultado esperado antes de testar é o que transforma "joguei e achei legal" em teste de verdade (lembre do caixa da Aula 10.1).
| Nº | O que fazer | Resultado esperado | Resultado obtido | Passou? |
|---|---|---|---|---|
| 1 | chegar na porteira sem a chave | aviso "A porteira está trancada. Ache a chave!" e não passa | ||
| 2 | pegar a chave | chave some; placar "Chave: achou!" | ||
| 3 | sair em menos tempo que o recorde | tela de fim mostra o novo melhor tempo |
De onde tirar os casos. Das regras do jogo (cada regra vira pelo menos um caso), dos limites (borda da tela, tempo zerado, primeiro recorde) e das coisas que um jogador apressado faz (apertar duas teclas juntas, apertar Espaço na tela de fim).
Teste automático e teste manual. Os jogos de referência do curso têm testes automáticos (testes/godot/): scripts que apertam teclas e conferem resultados sozinhos. Eles pegam o que dá para medir (posição, placar, tempo). O teste manual, com gente jogando, pega o resto: "a câmera dá enjoo", "não entendi para onde ir". Os dois se completam.
Relatório de falha. Quem acha o erro quase nunca é quem conserta. Por isso o relatório precisa permitir repetir a falha:
| Campo | Exemplo bom | Exemplo ruim |
|---|---|---|
| título | Porteira abre sem a chave quando se chega de costas | porta bugada |
| passos para repetir | 1. começar; 2. ir até a porteira sem pegar a chave; 3. virar de costas; 4. andar para trás até encostar | sei lá, fui andando |
| esperado | não abre e mostra o aviso | |
| obtido | abre | não funciona |
| frequência | 3 de 3 tentativas | às vezes |
| gravidade | alta: dá para terminar sem a chave | |
| ambiente | Godot 4.7.2, computador 5 do laboratório | |
| anexo | foto da tela ou GIF |
(A falha do exemplo foi inventada para ensinar a escrever; no Chave da Porteira a área Perto foi feita para perceber o jogador dos dois lados, de frente ou de costas.)
Gravidade.
| Nível | Quer dizer | Exemplo |
|---|---|---|
| crítica | o jogo fecha ou trava | erro de execução ao pegar a chave |
| alta | dá para ganhar ou perder sem querer | atravessar parede |
| média | atrapalha, mas dá para jogar | aviso some rápido demais |
| baixa | detalhe | palavra com erro de digitação |
Como receber um relatório. O relatório fala do jogo, não de quem fez. A resposta é "obrigado, vou tentar repetir", não "no meu computador funciona".
Exemplos
O teste automático do Chave da Porteira tem 41 verificações em 7 grupos: mapa, tela de início, montagem, movimento, câmera, porteira e chave, fim e melhor tempo. Leia a lista dos nomes (são frases em português) como exemplo de plano de testes escrito.
Tutorial passo a passo
Parte A. Ler um plano pronto (60 min)
- Rode
testes/godot/testar_porteira.gd(instruções emtestes/godot/LEIAME.md) ou leia o arquivo. Liste as 41 frases dosconfira(...). - Quais regras do jogo não têm teste? (Por exemplo: "o aviso some depois de 2,5 s".)
Parte B. Plano do próprio jogo (120 min)
- Copie o modelo
plano-de-testes.mdpara a pasta do seu projeto. - Escreva pelo menos 15 casos, com o resultado esperado preenchido, cobrindo regras, limites e o jogador apressado.
Parte C. Testar o jogo de outra dupla (140 min)
- Troque de computador com outra dupla. Rode o plano dela no jogo dela, preenchendo "obtido" e "passou?".
- Para cada falha, um relatório (
relatorio-de-falha.md), com foto da tela. - Depois, 10 minutos de jogo livre, sem plano: anote o que estranhou.
Parte D. Devolver e corrigir (100 min)
- Entregue os relatórios. Cada dupla tenta repetir as falhas recebidas, corrige as de gravidade crítica e alta, e anota no diário.
Imagens
Não há capturas nesta aula. Os relatórios da turma levam fotos da tela do próprio jogo.
Indicação da interface
Sem interface nova. Foto da tela no Windows: tecla Print Screen ou Windows + Shift + S (Ferramenta de Captura).
O código completo
Trecho de testes/godot/testar_porteira.gd, para mostrar como um caso de teste vira código:
print("Porteira trancada")
var lugar_porteira := porteira.global_position
jogador.global_position = lugar_porteira + Vector3(0, 0.1, -tam * 0.6)
jogador.rotation.y = PI
await esperar_fisica(5)
confira("aviso de porteira trancada", aviso.visible and aviso.text.contains("trancada"), aviso.text)
confira("porteira continua fechada", not porteira.aberta)
await segurar("frente", 1.5)
confira("porteira fechada segura o jogador", jogador.global_position.z < lugar_porteira.z - 0.3, str(jogador.global_position))Explicação do código
- Os passos para repetir viraram linhas: pôr o jogador perto da porteira, virar de frente, segurar a seta.
- Cada
confiraé uma linha do plano: o nome é o resultado esperado; a condição confere o obtido.
Resultado esperado
Plano de testes com 15 casos, relatórios de falha para outra dupla e correções registradas no diário.
Problemas comuns
| Sintoma | Causa | Solução |
|---|---|---|
| "tudo passou" | casos fáceis demais, ou esperado escrito depois de jogar | incluir limites e jogador apressado; escrever o esperado antes |
| quem conserta não consegue repetir | passos vagos | passos numerados, do começo do jogo |
| discussão na troca de relatórios | crítica pessoal | falar do jogo, com o relatório na mão |
Exercício guiado
O relatório diz só "às vezes atravessa a parede". O que falta? (Resposta: os passos para repetir, em qual parede, com que tecla, quantas vezes em quantas tentativas, e o computador.)
Desafio individual
Transforme três casos do seu plano em verificações automáticas, copiando o estilo do testar_porteira.gd.
Desafio avançado (opcional)
Faça um teste que rode a partida inteira sozinho (o curso usou um "passeio automático" assim para gravar o GIF do Chave da Porteira, Aula 10.6).
Critérios de avaliação
- Plano com esperado escrito antes do teste.
- Relatórios repetíveis, com gravidade e foto.
- Correções registradas.
Checklist de conclusão
Extensão
Escreva um relatório de falha de algum aplicativo que você usa no celular. Seguiu todos os campos?