6. Testes automatizados
● Evita recriar arquivos mainS;
● Poupa tempo durante manutenção;
● Validar automaticamente que pequenos incrementos;
7. Teste unitários
● Garantem que sua aplicação continue funcionando após alguma alteração em sua
base de código;
● Funcionam através de comparação de resultados das funções a serem testadas com
valores esperados;
12. Testes unitários - questionamento...
● Os testes escritos estão testando tudo que deveriam?
● É possível saber isso?
13. Testes unitários - questionamento...
IAPOIS!
Para isso, basta medir a cobertura dos testes unitários com….
14. Testes de cobertura
● Testes de cobertura verificam a cobertura de testes unitários;
● Em termos práticos, acusam quais cenários do código fonte
estão e quais não estão sendo testados.
19. Testes de cobertura - questionamento...
● Temos uma suíte de testes unitários, ok!
● Verificamos que a cobertura dos mesmos é de 100%, ok!
● Mas, nossa suíte de testes realmente é boa?
22. Testes de cobertura - questionamento...
● Pequenas mudanças como essas podem passar em alguns testes e
em outros não;
● Por conta disso, é interessante rodar a suíte de testes com um código
similar ao código fonte, contendo pequenas falhas: Mutante
23. Testes de mutação
● Após criar o código fonte, os testes unitários para testar pequenas
unidades do código, o teste de cobertura para verificar o que está e
não sendo testado, ainda é possível testar a suíte de teste!
25. Testes de mutação - A ideia
● Você tem um programa original (P) e sua suíte de testes (TS);
● De P cria-se um conjunto de mutantes (MS) modificando pequenas
partes do código;
● Depois, você aplica-se cada mutante de MS em TS.
26. Testes de mutação - A ideia
● Você tem um programa original (P) e sua suíte de testes (TS);
● De P cria-se um conjunto de mutantes (MS) modificando pequenas
partes do código;
● Depois, você aplica-se cada mutante de MS em TS.
30. Testes de mutação - A ideia
● Pode acontecer de alguns mutantes passarem nos testes, ao invés de
serem mortos. Quando isso acontece existem duas implicações:
○ Ou a suíte de testes não é efetiva;
○ Ou o mutante gerado é equivalente ao código original;
34. Resumindo
● Testes automatizados trazem um bom custo benefício no médio e longo prazo;
● Garantem qualidade ao software;
● Testes unitários servem para testar unidades básicas do sistema;
● Teste de cobertura servem para quantificar a cobertura dos testes;
● Testes de mutação testam a suíte de testes para avaliar seu comportamento
mediante códigos com bugs;
35. Referências e links
● Meu artigo no Medium sobre tests:
https://medium.com/@abuarquemf/how-can-you-ensure-the-suite-test-efficiency
-5fab9e54e78e;
● Códigos da palestra: https://github.com/ABuarque/TestsArticle;