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
- Identificar o incremento de funcionalidade.
- Escrever o teste (que falhará inicialmente).
- Implementar a funcionalidade.
- 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).