Guia Completo de Testes de Software e Metodologia TDD

Classificado em Computação

Escrito em em português com um tamanho de 4,02 KB

Teste de Componentes

Componentes de software são complexos e compostos por vários objetos que interagem entre si. O acesso à sua funcionalidade é feito através de interfaces bem definidas.

  • Teste de componentes: Foca em demonstrar que a interface do componente se comporta de acordo com as especificações (assume-se que os testes unitários internos estão completos).

Erros de Interfaces

  • Uso errado da interface: O componente chama outro de forma incorreta (ex: ordem errada de parâmetros).
  • Percepção errada da interface: O componente chamador assume um funcionamento incorreto do componente chamado.
  • Erros de sincronização: Componentes funcionam a velocidades diferentes, causando acesso a informações desatualizadas.

Guia de Testes de Interface

  • Testar parâmetros nos extremos dos valores válidos.
  • Testar sempre com valores nulos.
  • Desenhar testes que forcem falhas.
  • Utilizar testes de stress.
  • Alterar a ordem de ativação dos componentes.

Testes de Sistema

Integração de componentes para criar uma versão completa do sistema, focando nas interações e compatibilidade entre eles.

  • Foco: Verificar se os dados são transferidos corretamente, no tempo certo e através das interfaces adequadas.
  • Processo coletivo: Frequentemente realizado por equipas separadas, sem o envolvimento direto de programadores ou designers.

Testes com Use Cases

Os Use Cases identificam interações com o sistema e servem como base para testar o comportamento integrado dos componentes.

Regras de Teste

Como testes exaustivos são impossíveis, definem-se regras para garantir a cobertura:

  • Testar todas as funções acessíveis via menus.
  • Testar combinações de funções do mesmo menu.
  • Testar entradas de dados com valores válidos e inválidos.

Test-Driven Development (TDD)

Metodologia ágil onde a escrita do código é intercalada com testes. Os testes são escritos antes da implementação.

Processo TDD

  1. Identificar o incremento de funcionalidade.
  2. Escrever o teste (que falhará inicialmente).
  3. Implementar a funcionalidade.
  4. Executar os testes até que todos passem.

Vantagens do TDD

  • Cobertura de código: Todo o código possui testes associados.
  • Teste de regressão: Conjunto de testes incremental.
  • Debug simplificado: Facilidade em localizar problemas.
  • Documentação: Os testes descrevem o comportamento esperado do sistema.

Testes de Release

Processo de testar uma versão específica pronta para uso fora do ambiente de desenvolvimento. Foca em demonstrar que o sistema atende aos requisitos e possui qualidade.

Testes Baseados em Requisitos

Exemplo: Sistema de Clínica de Saúde. Testa-se a lógica de alertas de alergias a medicamentos, incluindo casos de sucesso, falha e ignorância de avisos pelo utilizador.

Testes de Desempenho e Utilizadores

  • Desempenho: Avalia fiabilidade e carga (testes de stress).
  • Testes de utilizadores: Essenciais para validar o ambiente real de trabalho.

Tipos de Testes de Utilizadores

  • Alfa: No local da equipa de desenvolvimento.
  • Beta: Disponibilizado aos utilizadores para feedback.
  • Aceitação: O cliente decide se o sistema está pronto para produção.

Exemplo Prático: Calculadora de Strings (TDD)

Implementação de um método add(string numbers) seguindo TDD: começar pelos casos simples (string vazia, um ou dois números) e evoluir para casos complexos (números desconhecidos, separadores \n).

Entradas relacionadas: