A história contada aqui é totalmente fictícia...
Numa empresa fictícia...
Com personagens fictícios...
Qualquer semelhança... É só semelhança.
(E eu negarei que contei essa história)
Desenvolvimento
Testes
" - Devemos testar toda a feature?"
" - Mas se o valor não for inserido?"
" - Precisamos entender quais são as regras..."
" - E se o motorista não preencher o campo?"
" - Como esse valor aparece no painel de contratação?"
Processo oneroso em tempo e pessoas
Teste de regressão manuais
Uma feature = Vários fluxos
A cada feature, tudo se repete...
Constância nos testes e menos tempo de execução.
Encontramos a qualidade quando entregamos com confiança
Pirâmide que se divide em três patamares, apresentando os principais tipos de testes necessários.
💖 - Valor para a empresa
💰 - Custo dos testes
⏳ - Tempo de criação
Testes ponta a ponta
Simulação de um utilizador real da aplicação
Fluxo da aplicação é testado por completo
💖💖💖 💰💰💰 ⏳⏳⏳
Testes ponta a ponta
Difícil descobrir onde ocorre a falha
Execução bem mais lenta, onerosa.
Equipe de testers
(Unidade, não unitário =P)
"Função com entrada x, deve ter saída y"
Menor unidade da aplicação
(funções e métodos)
💖 💰 ⏳
(Unidade, não unitário =P)
São extremamente rápidos de executar
O desenvolvedor é o principal responsável por ele
Testes de unidade produzem códigos desacoplados
"Já tenho todos os meus testes de unidade e tudo passou sem falhas!"
(disse o desenvolvedor inocente)
Podemos testar o método A e o método B.
Mas a interação entre eles também está correta?
💖💖 💰💰 ⏳⏳
Mike Cohn.
Succeding with agile (2009)
Abuse das unidades
Pense na integração
Essencialize o e2e
Saiba gastar suas forças
Possuir uma suite de testes, é possuir um novo projeto.
Precisamos de definições do escopo e metas a serem alcançadas
Como serão executados os testes?
Qual é o nosso plano para cobertura e abrangência de testes?
Antes de criar os testes, os cenários já devem estar muito bem definidos
Quem serão os encarregados pelos desenvolvimentos e manutenebilidade dos testes?
Qual arquitetura será utilizada no desenvolvimento?
Qual é o nosso plano para cobertura e abrangência de testes?
O que deve ser testado e o que deve continuar manualmente?
Qual serão as ferramentas e frameworks utilizados?