Testes Automatizados
Por onde começar?
Olá, tudo bem?
Marcela Godoy
Salto/SP
Full stack developer @ AGV H&N
@magodoy88
magodoycruz@gmail.com
Disclaimer
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)
"- Vamos desenvolver uma nova feature"
Era uma vez...
"- Fazer teste dá muito trabalho"
"- Vai demorar mais pra entregar a feature"
"- Teste deve custar caro"
E além disso...
"...Temos os testes manuais!"
O que foi alterado pelos devs?
O que se espera dessa funcionalidade?
O que se espera dessa funcionalidade?
"- Devemos testar toda a feature ou algo específico?"
"- O que eu preciso testar e o que é esperado neste teste?"
"- E se o usuário preencher de uma forma errada?"
Entendimento do cenário e regras de negócio como um todo
"...Temos os testes manuais!"
Muitos fluxos envolvidos
Teste de regressão necessário
A cada feature, tudo se repete...
"...Temos os testes manuais!"
Encontramos a qualidade quando entregamos com confiança
Falar sobre testes é falar sobre confiança
Pessoas tem dias bons e ruins. Isso pode interferir no resultado de seus testes manuais
Testes Automatizados
Constância nos testes e menos tempo de execução.
Testes Automatizados
Script, código ou sistema responsável pela realização de testes na aplicação
Executar mais vezes em menos tempo
Maior confiança no desenvolvimento
"Implementar de maneira sábia os testes, você deve"
(Yoda, Mestre)
Pirâmide de Testes
Mike Cohn
Pirâmide de Testes
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 End to End (e2e)
Testes de ponta a ponta
Fluxo completo da funcionalidade
Simulação de um utilizador real
💖💖💖 💰💰💰 ⏳⏳⏳
Difícil descobrir onde ocorre a falha
Execução bem mais lenta, onerosa.
Testes de Unidade
Menor unidade da aplicação
(funções e métodos)
💖💖 💰💰 ⏳⏳
"Função com entrada x, deve ter saída y"
Testes de Unidade
Desenvolvedor costuma ser o principal responsável
Rápida criação e execução
TDD - Desenvolvimento Guiado a testes
O teste de unidade não deve depender de nenhuma outra parte da aplicação ou fatores externos para serem executados.
"Ai Marcela, mas eu preciso dos dados de banco pra conseguir testar a função"
"Mas é impossível sem os dados do serviço externo!!!"
"Mas a função recebe como parâmetro um objeto que foi criado em outra função..."
Simulação de comportamento de um objeto parq que possa ser utilizado em um teste unitário
O tal do Mock...
Dado simulado, fake...
"Testes de unidade falam sobre a saúde do código e facilitam sua melhora contínua"
Códigos desacoplados, melhor manutenibilidade...
"Já tenho todos os meus testes de unidade e tudo passou sem falhas! Minha aplicação está 100% ok!"
(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?
Testes de Integração
Menor unidade da aplicação
(funções e métodos)
💖💖 💰💰 ⏳⏳
"Função com entrada x, deve ter saída y"
Testes Automatizados - 3.0
By Marcela Godoy Cruz
Testes Automatizados - 3.0
- 432