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"

Made with Slides.com