Test Generation: Model Based Testing
Testes Automáticos: Reduzindo Custos e Aumentando Eficiência
Introdução aos Testes Automáticos
- Os testes são essenciais para garantir a qualidade do software, mas possuem custos associados. A geração automática de testes pode ajudar a reduzir esses custos.
- Muitos desenvolvedores não têm motivação para escrever testes, o que torna a automação uma solução interessante.
Geração Automática de Testes
- Pesquisadores buscam maneiras de eliminar os custos da criação manual de testes através da geração automática, utilizando especificações formais do sistema.
- Um exemplo é o uso de máquinas de estados, onde cada caminho representa um teste possível, definindo estados iniciais, ações e estados finais esperados.
Abordagens Baseadas em Modelos
- As abordagens baseadas em modelos derivam casos de teste a partir do comportamento especificado do sistema. Isso permite criar subconjuntos desse comportamento como casos de teste.
- Embora essa abordagem reduza custos na execução dos testes, construir especificações detalhadas ainda pode ser caro e nem sempre viável.
Especificações com JML
- O uso da linguagem JML (Java Modeling Language) permite especificar pré-condições e pós-condições associadas a métodos.
- Exemplo prático: um método que ordena um array deve ter uma pré-condição que garante que o array não seja nulo e uma pós-condição que assegura que o array está ordenado após a execução.
Geração Automática com Pré e Pós Condições
- Com as especificações adequadas, ferramentas podem gerar automaticamente os testes ao criar entradas aleatórias que satisfazem as pré-condições.
- Após executar o método testado, verifica-se se as pós-condições são válidas; isso simplifica o processo de teste ao utilizar as próprias condições como oráculo.
Exemplos Práticos de Testes Gerados
- Ferramentas automatizadas conseguem gerar entradas para testar métodos com base nas condições estabelecidas nas especificações.
- Exemplos incluem arrays gerados aleatoriamente sendo testados quanto à sua ordenação após chamar o método correspondente.