O documento discute Behavior Driven Development (BDD) e como ele pode ser usado para construir software de forma segura em times ágeis. BDD enfatiza o desenvolvimento orientado a comportamentos e resultados com foco no domínio do negócio e na linguagem ubíqua para estimular a colaboração entre membros da equipe. Testes funcionais automatizados são escritos usando uma linguagem natural como Gherkin para validar as histórias de usuário e permitir o desenvolvimento evolutivo.
2. Agenda
O que é BDD?
Por que utilizar em Times Ágeis?
Testes Unitários x Testes Funcionais
Automatizando os testes
Show me the code
Problemas e Limitações
Nossos desafios
3. O que é BDD?
Behavior Driven Development
Prática de desenvolvimento de software
Foco no comportamento e resultado
Ubiquitous Language
Baseada no domínio do negócio
Estimula colaboração entre membros do time
Direcionado a valores de negócio.
Outside-In Development
Story Features > Pending Tests > Implementação > Testes funcionais
4. Por que utilizar em Times Ágeis?
Linguagem Natural para definir comportamentos
Gherkin
Estimula engajamento do cliente
Artefatos semelhantes as práticas ágeis
User stories (.feature)
Favorece o desenvolvimento evolutivo
Sprints de acordo com comportamentos
Melhora entendimento do negócio por parte do time
Maior isolamento da aplicação
Facilita a escrita de testes
5. Por que utilizar em Times Ágeis?
Consequência:
Maior Qualidade do Software
6. Testes Unitários x Testes Funcionais
Testes unitários
Geralmente mais baratos
Código executável
Mais isolado
Possibilita evoluir o design da aplicação com segurança
Testes Funcionais
De acordo com a especificação (US)
Mais caros. Principalmente se forem manuais.
Código executável
Possibilita evoluir o design da aplicação
Se complementam.
Teste unitário não garante funcionalidade correta
Teste funcional captura erros ao final do desenvolvimento da feature
Não garantem ausência de bugs. REDUZEM!
Maior facilidade de identificar problemas.
8. Show me the code
Exemplo:
App que calcula o valor do estacionamento
9. Problemas e Limitações
Aplicação com uma grande quantidade de testes
Demora ao executar toda a bateria
Possível Solução: Paralelização
Sensível a falhas ao alterar UI
Evitar uso do xpath
Difícil simular testes mais complexos
Ex: Drag/drop, Acesso ao File System, etc..
Necessidade de incluir muitos waits/delays afetará a perfomance
10. Nossos desafios
Testar aplicação 3D
O canvas é invisível a ferramentas de automatização
Sugestão?
Testar funções JavaScript
Jasmine?
Incluir hiddens
Polui o código