Skip to content
Informática · 10.º Ano

Ideias de aprendizagem ativa

Testes de Software e Validação

Os testes de software exigem prática ativa porque os alunos aprendem a antecipar erros ao lidarem diretamente com código real. Esta abordagem transforma conceitos abstratos em competências concretas, especialmente quando trabalham em equipa e testam casos inesperados.

Aprendizagens EssenciaisDGE: Secundário - ProgramaçãoDGE: Secundário - Resolução de Problemas
20–45 minPares → Turma inteira4 atividades

Atividade 01

Par Programação: Testes Unitários

Os alunos trabalham em pares para escrever funções simples e criar testes unitários que cubram casos normais e edge cases. Executam os testes no interpretador e ajustam o código com base nos resultados falhados. Registam os testes num relatório partilhado.

Preveja comportamentos inesperados num programa com base em diferentes entradas.

Sugestão de FacilitaçãoDurante a par programação em testes unitários, circule pela sala para garantir que ambos os elementos do par discutem casos de teste antes de os implementarem.

O que observarApresente aos alunos um pequeno trecho de código (por exemplo, uma função que calcula a média de uma lista de números). Peça-lhes para escreverem 3 casos de teste: um com entradas normais, um com uma entrada limite (por exemplo, lista vazia ou com um único elemento) e um com uma entrada inválida (por exemplo, lista com texto). Peça para preverem o resultado esperado para cada caso.

AnalisarAvaliarCriarAutogestãoAutoconsciência
Gerar Aula Completa

Atividade 02

Círculo de Investigação45 min · Pequenos grupos

Rotação de Grupos: Testes de Integração

Divida a turma em grupos que desenvolvem módulos separados de um programa. Cada grupo testa a integração com módulos de outros grupos, identificando falhas de interface. Discutem soluções em plenário.

Compare diferentes tipos de testes (unitários, de integração) para garantir a robustez do software.

Sugestão de FacilitaçãoNa rotação de grupos de testes de integração, atribua componentes com dependências claras para que os alunos experienciem falhas reais em interações entre módulos.

O que observarDivida a turma em pequenos grupos. Dê a cada grupo um cenário de software simples (por exemplo, um formulário de login, um carrinho de compras online). Peça-lhes para discutirem e listarem: a) Que tipos de testes seriam mais importantes para este cenário? b) Quais são os 2 casos de limite mais críticos a testar? Peça a cada grupo para partilhar as suas conclusões com a turma.

AnalisarAvaliarCriarAutogestãoAutoconsciência
Gerar Aula Completa

Atividade 03

Círculo de Investigação20 min · Individual

Desafio Individual: Previsão de Erros

Forneça código com bugs ocultos. Os alunos preveem falhas para entradas específicas e escrevem testes preditivos antes de executar. Compar partilham previsões e resultados reais.

Justifique a importância de testar o código antes da sua implementação final.

Sugestão de FacilitaçãoNo desafio individual de previsão de erros, forneça cartões com entradas específicas (vazias, limites, inválidas) para que os alunos simulem cenários sem pistas óbvias.

O que observarEntregue a cada aluno um cartão. Peça-lhes para escreverem: 1) Uma frase que explique a diferença principal entre teste unitário e teste de integração. 2) Um exemplo de um 'edge case' que um programador deveria considerar ao criar uma função de cálculo de idade.

AnalisarAvaliarCriarAutogestãoAutoconsciência
Gerar Aula Completa

Atividade 04

Círculo de Investigação35 min · Turma inteira

Simulação em Aula: Debugging Colaborativo

Apresente um programa com erros. A turma divide-se em equipas para propor testes e validar correções. Votam na melhor estratégia e implementam coletivamente.

Preveja comportamentos inesperados num programa com base em diferentes entradas.

Sugestão de FacilitaçãoNa simulação de debugging colaborativo, interrompa a atividade em pontos-chave para pedir aos alunos que explicitem os erros que detetaram e como os resolveriam.

O que observarApresente aos alunos um pequeno trecho de código (por exemplo, uma função que calcula a média de uma lista de números). Peça-lhes para escreverem 3 casos de teste: um com entradas normais, um com uma entrada limite (por exemplo, lista vazia ou com um único elemento) e um com uma entrada inválida (por exemplo, lista com texto). Peça para preverem o resultado esperado para cada caso.

AnalisarAvaliarCriarAutogestãoAutoconsciência
Gerar Aula Completa

Algumas notas sobre lecionar esta unidade

Comece com exemplos visuais de bugs em sistemas conhecidos (como apps que falham com inputs longos) para mostrar a relevância dos testes. Evite explicar apenas teoria: use atividades que forcem os alunos a falhar e corrigir em tempo real. Pesquisas mostram que a aprendizagem é mais profunda quando os erros são parte integrante do processo, não apenas consequências a evitar.

Os alunos demonstram compreensão ao identificar casos limite, justificar testes unitários versus de integração e corrigir falhas em tempo real. A turma mostra progresso quando as discussões revelam consciência da importância dos testes desde as fases iniciais do desenvolvimento.


Atenção a estes erros comuns

  • Durante a atividade de Par Programação: Testes Unitários, alguns alunos podem dizer que os testes só servem para validar código funcional.

    Peça aos pares que criem casos de teste com entradas inválidas ou limites (ex. lista vazia, valores negativos) antes de testarem o código funcional, mostrando que os testes previnem falhas ocultas.

  • Durante a Rotação de Grupos: Testes de Integração, os alunos confundem testes unitários com testes de integração.

    Dê a cada grupo dois componentes com uma dependência clara (ex. função de cálculo + função de formatação) e peça-lhes para escreverem testes que falham quando a integração está incorreta, contrastando com testes unitários de cada função.

  • Durante o Desafio Individual: Previsão de Erros, os alunos consideram que entradas válidas são suficientes para garantir robustez.

    Forneça um conjunto de entradas não óbvias (ex. strings com caracteres especiais, valores nulos) e peça-lhes para preverem falhas antes de executarem o código, discutindo os resultados em seguida.


Metodologias usadas neste resumo