Melhorando sua Estratégia 
de Testes Automatizados! 
Stefan Teixeira! 
stefanfk@gmail.com / stefanteixeira.com.br
Sobre o palestrante 
Stefan Teixeira! 
• QA Engineer @ Orga Systems! 
• Bacharel em Ciência da Computação pela UFRJ! 
• Finalizando MBA em Garantia de Qualidade de Software pela Escola 
Politécnica da UFRJ! 
• Mantém um blog técnico sobre testes: stefanteixeira.com.br! 
• Certificado CTAL-TM / TA pelo ISQTB e CPRE-FL pelo IREB! 
Contatos:! 
• E-mail: stefanfk@gmail.com! 
• Twitter: twitter.com/stefan_teixeira! 
• Facebook: facebook.com/stefan.teixeira! 
• LinkedIn: linkedin.com/in/stefanteixeira! 
• GitHub: github.com/stefanteixeira! 
• SlideShare: slideshare.net/stefanteixeira 
2
Testes Automatizados
Testes pela UI?
Testes de unidade?
Como as empresas 
começam a automatizar 
testes?
Ferramentas record-playback
• Simples criar novos testes! 
• Não requerem skills de programação
Mas seria uma pena 
se a gente…
• … incluísse um novo campo?! 
• … alterasse o id de um campo?
E a médio/longo 
prazo…
Problemas!! 
• Alto custo de manutenção! 
• Testes lentos -> aumento do tempo de build e 
de feedback! 
• Falsos negativos
E com o tempo de feedback lento…! 
• Perda de confiança do time! 
• Time deixa de rodar os testes
Falando sobre 
feedback…
Importância do tempo de build e 
feedback! 
• XP (Extreme Programming)! 
‣ 10-minute build! 
! 
• James Shore (The Art of Agile Development)! 
‣ 10 or 15-minute build! 
!
“That's about the right amount of time to 
stretch my legs, get some coffee, and 
talk over our work with my pairing 
partner.”! 
! 
- James Shore, The Art of Agile Development
Importância do tempo de build e 
feedback! 
• Dan Bodart! 
‣ Palestra - “Crazy Fast Build Times - or when 
10 seconds starts to make you nervous”! 
‣ Mostra formas de reduzir em até 10 vezes o 
tempo de build de uma aplicação! 
‣ Link da palestra no InfoQ: http://goo.gl/ 
ScN6HH
E os testes de 
unidade?
Testes de unidade! 
! 
• Boa quantidade e cobertura de testes -> 
menor necessidade de testes exaustivos 
pela UI! 
• Rodam muito rápido -> feedback mais 
rápido! 
• Muito efetivos para testar valores limite ou 
combinações de desvios no código
Testes de unidade! 
! 
• Por definição, testam componentes isolados! 
• Como testamos a integração entre 
componentes? Criando um teste que 
navegue pela UI?
Pirâmide de 
Automação de Testes
Mike Cohn (Succeeding with Agile)
Testes na camada de serviço! 
! 
• Preencher o gap entre unidade e UI! 
• Testar regras de negócio “abaixo" da UI! 
• Também chamados de Subcutaneous Tests 
(Martin Fowler)
Testes na camada de serviço! 
! 
• Também chamados de Testes de 
Integração, API Tests, etc.! 
• Testar a aplicação sem depender da 
interface (Web, Mobile, etc.)! 
• Geralmente utilizados para BDD -> validar 
critérios de aceite das user stories
Arquillian (arquillian.org)
Testes pela UI
Foco de Testes pela UI:! 
! 
• Smoke Tests! 
• xBrowser Testing! 
• Visual Regression Testing
E quando automatizamos 
tudo pela UI?
Como melhorar testes 
pela UI?
#1: Page Objects
#2: Headless Browsers
Frameworks Headless Browsers 
Selenium WebDriver 
PhantomJS (GhostDriver), 
HTMLUnit (HTMLUnitDriver) 
Capybara 
PhantomJS (Poltergeist), 
HTMLUnit (Celerity) 
CasperJS PhantomJS, SlimerJS
#3: BDD
Linguagem Gherkin (Given/When/Then)
#4: Paralelizar testes
#5: Tratar código de teste 
como código de produção!
“What makes a clean test? Three things. 
Readability, readability, and readability.”! 
! 
- Uncle Bob Martin, Clean Code! 
! 
! 
“Any fool can write code that a computer can 
understand. Good programmers write code that 
humans can understand.”! 
! 
- Martin Fowler, Refactoring: Improving the Design of Existing 
Code
Obrigado! 
Stefan Teixeira! 
stefanfk@gmail.com! 
stefanteixeira.com.br! 
@stefan_teixeira

Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados

  • 1.
    Melhorando sua Estratégia de Testes Automatizados! Stefan Teixeira! stefanfk@gmail.com / stefanteixeira.com.br
  • 2.
    Sobre o palestrante Stefan Teixeira! • QA Engineer @ Orga Systems! • Bacharel em Ciência da Computação pela UFRJ! • Finalizando MBA em Garantia de Qualidade de Software pela Escola Politécnica da UFRJ! • Mantém um blog técnico sobre testes: stefanteixeira.com.br! • Certificado CTAL-TM / TA pelo ISQTB e CPRE-FL pelo IREB! Contatos:! • E-mail: stefanfk@gmail.com! • Twitter: twitter.com/stefan_teixeira! • Facebook: facebook.com/stefan.teixeira! • LinkedIn: linkedin.com/in/stefanteixeira! • GitHub: github.com/stefanteixeira! • SlideShare: slideshare.net/stefanteixeira 2
  • 3.
  • 4.
  • 5.
  • 6.
    Como as empresas começam a automatizar testes?
  • 7.
  • 8.
    • Simples criarnovos testes! • Não requerem skills de programação
  • 9.
    Mas seria umapena se a gente…
  • 10.
    • … incluísseum novo campo?! • … alterasse o id de um campo?
  • 11.
  • 12.
    Problemas!! • Altocusto de manutenção! • Testes lentos -> aumento do tempo de build e de feedback! • Falsos negativos
  • 13.
    E com otempo de feedback lento…! • Perda de confiança do time! • Time deixa de rodar os testes
  • 14.
  • 15.
    Importância do tempode build e feedback! • XP (Extreme Programming)! ‣ 10-minute build! ! • James Shore (The Art of Agile Development)! ‣ 10 or 15-minute build! !
  • 16.
    “That's about theright amount of time to stretch my legs, get some coffee, and talk over our work with my pairing partner.”! ! - James Shore, The Art of Agile Development
  • 17.
    Importância do tempode build e feedback! • Dan Bodart! ‣ Palestra - “Crazy Fast Build Times - or when 10 seconds starts to make you nervous”! ‣ Mostra formas de reduzir em até 10 vezes o tempo de build de uma aplicação! ‣ Link da palestra no InfoQ: http://goo.gl/ ScN6HH
  • 18.
    E os testesde unidade?
  • 19.
    Testes de unidade! ! • Boa quantidade e cobertura de testes -> menor necessidade de testes exaustivos pela UI! • Rodam muito rápido -> feedback mais rápido! • Muito efetivos para testar valores limite ou combinações de desvios no código
  • 20.
    Testes de unidade! ! • Por definição, testam componentes isolados! • Como testamos a integração entre componentes? Criando um teste que navegue pela UI?
  • 22.
  • 23.
  • 24.
    Testes na camadade serviço! ! • Preencher o gap entre unidade e UI! • Testar regras de negócio “abaixo" da UI! • Também chamados de Subcutaneous Tests (Martin Fowler)
  • 25.
    Testes na camadade serviço! ! • Também chamados de Testes de Integração, API Tests, etc.! • Testar a aplicação sem depender da interface (Web, Mobile, etc.)! • Geralmente utilizados para BDD -> validar critérios de aceite das user stories
  • 26.
  • 27.
  • 28.
    Foco de Testespela UI:! ! • Smoke Tests! • xBrowser Testing! • Visual Regression Testing
  • 29.
    E quando automatizamos tudo pela UI?
  • 32.
  • 33.
  • 35.
  • 37.
    Frameworks Headless Browsers Selenium WebDriver PhantomJS (GhostDriver), HTMLUnit (HTMLUnitDriver) Capybara PhantomJS (Poltergeist), HTMLUnit (Celerity) CasperJS PhantomJS, SlimerJS
  • 38.
  • 39.
  • 40.
  • 42.
    #5: Tratar códigode teste como código de produção!
  • 43.
    “What makes aclean test? Three things. Readability, readability, and readability.”! ! - Uncle Bob Martin, Clean Code! ! ! “Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”! ! - Martin Fowler, Refactoring: Improving the Design of Existing Code
  • 44.
    Obrigado! Stefan Teixeira! stefanfk@gmail.com! stefanteixeira.com.br! @stefan_teixeira