Construindo software em segurança
com BDD
HENRIQUE LUZ
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
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
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
Por que utilizar em Times Ágeis?
Consequência:
Maior Qualidade do Software
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.
Automatizando os testes
 Ferramentas de Automatização
 Testes Unitários
 JUnit
 TestNG
 Testes Funcionais
 JMeter
 Selenium
 Selenide
 BDD
 Cucumber
 JBehave
Show me the code
 Exemplo:
 App que calcula o valor do estacionamento
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
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

Construindo software em segurança com BDD

  • 1.
    Construindo software emsegurança com BDD HENRIQUE LUZ
  • 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 utilizarem 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 utilizarem Times Ágeis? Consequência: Maior Qualidade do Software
  • 6.
    Testes Unitários xTestes 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.
  • 7.
    Automatizando os testes Ferramentas de Automatização  Testes Unitários  JUnit  TestNG  Testes Funcionais  JMeter  Selenium  Selenide  BDD  Cucumber  JBehave
  • 8.
    Show me thecode  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  Testaraplicação 3D  O canvas é invisível a ferramentas de automatização  Sugestão?  Testar funções JavaScript  Jasmine?  Incluir hiddens  Polui o código