scrum gathering rio 2014 - melhorando sua estratégia de testes automatizados
DESCRIPTION
Palestra ministrada no segundo dia do Scrum Gathering Rio 2014, em 05/09/2014.TRANSCRIPT
Melhorando sua Estratégia de Testes Automatizados!
Stefan [email protected] / stefanteixeira.com.br
Sobre o palestranteStefan 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: [email protected]!• 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 [email protected]!stefanteixeira.com.br!@stefan_teixeira