O documento discute testes de software e Behavior-Driven Development (BDD), apresentando BDD como uma abordagem para superar as dificuldades de Test-Driven Development (TDD). Também mostra como frameworks baseados em Cucumber podem ser usados para testes de classes e interfaces, e integrados a soluções como Selenium e Continuous Integration.
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020
Indo além dos testes de classes com BDD (Behavior-Driven Development) - InterCon 2017
1.
2. • Microsoft Most Valuable Professional (MVP)
• Multi-Plataform Technical Audience Contributor (MTAC)
• Mais de 15 anos de experiência na área de Tecnologia
• Autor Técnico e Palestrante
• Um dos organizadores do Canal .NET e do .NET SP
Renato Groffe
h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
3. Agenda
• Testes de software: uma visão geral
• Um pouco sobre BDD (Behavior-Driven
Development)
• Indo além com BDD...
5. Por que testar um software?
• Garantir que o projeto atende às especificações
• Detectar falhas e defeitos antes da subida para produção
• TDD (Test-Driven Development) é uma das abordagens
mais conhecidas
6. Test-Driven Development (TDD)
• Desenvolvimento cíclico baseado na
codificação e execução de testes de
unidade
• Testes são escritos antes mesmo da
codificação de classes ou métodos
• Abordagem comumente associada às
metodologias ágeis
9. Dificuldades na adoção de TDD
• Verificar pontos isolados (métodos, classes)
nem sempre é uma solução eficiente ou
garantia de sucesso
• Problemas costumam surgir durante a
integração de partes relacionadas
• Testes de unidade são compreendidos
apenas por pessoas com um perfil mais
técnico
11. Behavior-Driven Development (BDD)
• Uma resposta às dificuldades geradas por TDD
• Metodologia de desenvolvimento proposta por Dan North em
2006
• User stories (histórias) descrevem o comportamento de features
(funcionalidades)
12. Estrutura de uma user story
Funcionalidade:
Cenário:
Dado
E
E
Quando
Então
E
E
13. Behavior-Driven Development (BDD)
Elaboração de um teste com
falhas (Red)
Execução com sucesso do teste
definido anteriormente (Green)
Identificar pontos de
melhoria no código (Refactor)
• Ciclo de desenvolvimento muito semelhante àquele existente
para TDD
14. Behavior-Driven Development (BDD)
• As histórias fazem uso de uma linguagem ubíqua
(compreendida por todos os envolvidos no projeto)
Especialistas
de Negócio
Especialistas
Técnicos
Linguagem
ubíqua
15. Behavior-Driven Development (BDD)
• Frameworks permitem que as user stories sejam executadas como testes de aceitação
ou regressão a partir de uma IDE
• Cucumber → primeira ferramenta a suportar BDD e base utilizada pelos principais
frameworks
• Gherkin → mecanismo utilizado pelo Cucumber para interpretar uma história; suporte
à internacionalização
• As principais plataformas da atualidade contam com opções baseadas no Cucumber
17. Analisando as possibilidades
• Frameworks baseados no Cucumber são geralmente
empregados no teste de classes
• Mas o uso de técnicas de BDD e desses frameworks se resume
apenas a isto?
19. O que mais podemos fazer?
• Conforme já discutido, user stories podem descrever o
comportamento de uma funcionalidade
• Este comportamento pode descrever a interação do usuário
com uma interface Web
• Ou ainda em uma mobile app...
20. Há mais possibilidades utilizando Cucumber
• Frameworks baseados no Cucumber podem ser combinados a
outras soluções de testes
• Isto é aplicável tanto a aplicações Web, quanto a soluções
mobile
21. Há mais possibilidades utilizando Cucumber
• Continuous integration → É possível combinar o uso de
frameworks baseados no Cucumber com soluções como Visual
Studio Team Services (VSTS) e Jenkins
22. Um novo exemplo,
agora com Selenium...
4 casas de arrendondamento
Conversão de milhas para km: