O mercado tem exigido cada vez mais rapidez nas entregas dos times de desenvolvimento, para atender as demandas de negócio e manter a competitividade. Para garantir que essas entregas aconteçam no tempo esperado e com qualidade, é muito importante investir em todos os níveis de teste automatizados. Vamos ver quais são esses níveis de teste e alguns exemplos práticos usando Python de testes unitários, integração, funcionais, performance e mutação.
8. Testes automatizados?
● Feedback rápido;
● Menos passível de erro de execução;
● Executar testes automatizados no decorrer do pipeline ++ qualidade;
9. Testes automatizados?
● Feedback rápido;
● Menos passível de erro de execução;
● Executar testes automatizados no decorrer do pipeline ++ qualidade;
● Melhoria Contínua na Estratégia de Testes;
10. Testes automatizados?
● Feedback rápido;
● Menos passível de erro de execução;
● Executar testes automatizados no decorrer do pipeline ++ qualidade;
● Melhoria Contínua na Estratégia de Testes;
● Testes = especificação executável do comportamento do sistema;
11. Testes automatizados?
● Feedback rápido;
● Menos passível de erro de execução;
● Executar testes automatizados no decorrer do pipeline ++ qualidade;
● Melhoria Contínua na Estratégia de Testes;
● Testes = especificação executável do comportamento do sistema;
● Feedback, Feedback, Feedback;
25. Testes Unitários:
● Feedback extremamente rápido;
● 10-minute build (eXtreme Programming);
● Testes de valores limite, diferentes combinações, exceções…
26. Testes Unitários:
● Feedback extremamente rápido;
● 10-minute build (eXtreme Programming);
● Testes de valores limite, diferentes combinações, exceções…
● Cobertura de Código;
27. Testes Unitários:
● Feedback extremamente rápido;
● 10-minute build (eXtreme Programming);
● Testes de valores limite, diferentes combinações, exceções…
● Cobertura de Código;
● Segurança para fazer mudanças (eXtreme Programming);
28. Testes Unitários:
● Feedback extremamente rápido;
● 10-minute build (eXtreme Programming);
● Testes de valores limite, diferentes combinações, exceções…
● Cobertura de Código;
● Segurança para fazer mudanças (eXtreme Programming);
● Qualidade também nos testes unitários!
29. Testes Unitários:
● Feedback extremamente rápido;
● 10-minute build (eXtreme Programming);
● Testes de valores limite, diferentes combinações, exceções…
● Cobertura de Código;
● Segurança para fazer mudanças (eXtreme Programming);
● Qualidade também nos testes unitários!
● Test Driven Development;
30. Testes Unitários:
● Feedback extremamente rápido;
● 10-minute build (eXtreme Programming);
● Testes de valores limite, diferentes combinações, exceções…
● Cobertura de Código;
● Segurança para fazer mudanças (eXtreme Programming);
● Qualidade também nos testes unitários!
● Test Driven Development;
● Design de Código que permita testes;
31. Testes Unitários:
● Feedback extremamente rápido;
● 10-minute build (eXtreme Programming);
● Testes de valores limite, diferentes combinações, exceções…
● Cobertura de Código;
● Segurança para fazer mudanças (eXtreme Programming);
● Qualidade também nos testes unitários!
● Test Driven Development;
● Design de Código que permita testes;
● Mocks;
35. Cobertura & Análise Estática:
● Verificar qual a % do seu código da aplicação está coberto por testes;
36. Cobertura & Análise Estática:
● Verificar qual a % do seu código da aplicação está coberto por testes;
● Analisar seu código de acordo com algumas regras;
37. Cobertura & Análise Estática:
● Verificar qual a % do seu código da aplicação está coberto por testes;
● Analisar seu código de acordo com algumas regras;
● Verificação por estilo (identação, espaços, convenção de nomes, comentários…);
38. Cobertura & Análise Estática:
● Verificar qual a % do seu código da aplicação está coberto por testes;
● Analisar seu código de acordo com algumas regras;
● Verificação por estilo (identação, espaços, convenção de nomes, comentários…);
● Verificação por boas práticas (duplicação de código, encoding, tamanho de métodos e
classes, criação de variáveis desnecessárias…);
39. Cobertura & Análise Estática:
● Verificar qual a % do seu código da aplicação está coberto por testes;
● Analisar seu código de acordo com algumas regras;
● Verificação por estilo (identação, espaços, convenção de nomes, comentários…);
● Verificação por boas práticas (duplicação de código, encoding, tamanho de métodos e
classes, criação de variáveis desnecessárias…);
● Verificação por bugs (antecipar possíveis problemas);
46. Testes de Mutação:
● Testar seus Testes Unitários;
● Ferramenta introduz mutações no seu código e executa os testes unitários;
47. Testes de Mutação:
● Testar seus Testes Unitários;
● Ferramenta introduz mutações no seu código e executa os testes unitários;
● Se os testes falharem = OK!
48. Testes de Mutação:
● Testar seus Testes Unitários;
● Ferramenta introduz mutações no seu código e executa os testes unitários;
● Se os testes falharem = OK!
● Se os testes passarem = NOK!
55. Testes de Serviços:
● Depois dos Testes de Unidade e antes dos Testes de UI;
● Testar seu app + módulos, componentes, banco de dados;
56. Testes de Serviços:
● Depois dos Testes de Unidade e antes dos Testes de UI;
● Testar seu app + módulos, componentes, banco de dados;
● Sem interface;
57. Testes de Serviços:
● Depois dos Testes de Unidade e antes dos Testes de UI;
● Testar seu app + módulos, componentes, banco de dados;
● Sem interface;
● Stubs;
76. Testes de Performance:
● Comportamento da aplicação diante de uma carga conhecida;
● Baselines;
● Ter um ambiente para esses testes;
77. Testes de Performance:
● Comportamento da aplicação diante de uma carga conhecida;
● Baselines;
● Ter um ambiente para esses testes;
● Definir as métricas;
78. Testes de Performance:
● Comportamento da aplicação diante de uma carga conhecida;
● Baselines;
● Ter um ambiente para esses testes;
● Definir as métricas;
● Análise automática???
84. Testes X Estágios:
● Estágio de Commit:
● Testes Unitários
● Testes de Mutação
● Testes de Integração
● Estágio de Aceite (primeiro ambiente):
● Testes de API
85. Testes X Estágios:
● Estágio de Commit:
● Testes Unitários
● Testes de Mutação
● Testes de Integração
● Estágio de Aceite (primeiro ambiente):
● Testes de API
● Estágio de Aceite (pré-produção):
● Testes de UI
● Testes de Regressão Visual
● Testes de Performance