testes utilizando cucumber + phantomjs
TRANSCRIPT
![Page 1: Testes utilizando cucumber + PhantomJs](https://reader030.vdocuments.us/reader030/viewer/2022032617/55ae119c1a28aba03b8b46b6/html5/thumbnails/1.jpg)
BDD com Marcelo Toledo - QA - IaaS
![Page 2: Testes utilizando cucumber + PhantomJs](https://reader030.vdocuments.us/reader030/viewer/2022032617/55ae119c1a28aba03b8b46b6/html5/thumbnails/2.jpg)
Agenda
- O que é BDD e Cucumber?
- Motivação
- Case
- Considerações
![Page 3: Testes utilizando cucumber + PhantomJs](https://reader030.vdocuments.us/reader030/viewer/2022032617/55ae119c1a28aba03b8b46b6/html5/thumbnails/3.jpg)
O que é BDD?
Behavior Driven Development é uma técnica que evoluiu a partir do TDD
É uma descrição do comportamento do sistema e a partir disso, se desenvolve o sistema
Colaboração entre Dev + QA + P.O. + UX
![Page 4: Testes utilizando cucumber + PhantomJs](https://reader030.vdocuments.us/reader030/viewer/2022032617/55ae119c1a28aba03b8b46b6/html5/thumbnails/4.jpg)
O que é Cucumber
É um framework, que surgiu da evolução de: Jbehave -> Rbehave -> RSpec -> Cucumber
![Page 5: Testes utilizando cucumber + PhantomJs](https://reader030.vdocuments.us/reader030/viewer/2022032617/55ae119c1a28aba03b8b46b6/html5/thumbnails/5.jpg)
CaracterísticasEspecificação do comportamento escrita em linguagem natural.
A especificação se torna teste e critério de aceitação, descrevendo exemplos de comportamento do software antes da implementação (feedback cedo).
Como qualquer teste automatizado, esses testes são usados na regressão durante a evolução do software.
É uma especificação baseada no valor do negócio através de exemplos de uso e de fácil compreensão.
![Page 6: Testes utilizando cucumber + PhantomJs](https://reader030.vdocuments.us/reader030/viewer/2022032617/55ae119c1a28aba03b8b46b6/html5/thumbnails/6.jpg)
QA x QC ?
Motivação
![Page 7: Testes utilizando cucumber + PhantomJs](https://reader030.vdocuments.us/reader030/viewer/2022032617/55ae119c1a28aba03b8b46b6/html5/thumbnails/7.jpg)
Motivação
- QC - Utilizado no processo de desenvolvimento de software tradicional (RUP, Waterfall, etc)
- QA - Processo Ágil
- Precisamos alterar o processo de teste na Locaweb, deixar de ser QC e realmente começar a ser QA.
![Page 8: Testes utilizando cucumber + PhantomJs](https://reader030.vdocuments.us/reader030/viewer/2022032617/55ae119c1a28aba03b8b46b6/html5/thumbnails/8.jpg)
MotivaçãoO que estamos deixando para trás:
nossa “pirâmide” atual:
![Page 9: Testes utilizando cucumber + PhantomJs](https://reader030.vdocuments.us/reader030/viewer/2022032617/55ae119c1a28aba03b8b46b6/html5/thumbnails/9.jpg)
Motivação
Para onde estamos caminhando:
![Page 10: Testes utilizando cucumber + PhantomJs](https://reader030.vdocuments.us/reader030/viewer/2022032617/55ae119c1a28aba03b8b46b6/html5/thumbnails/10.jpg)
CASE
- POC em IaaS
Há uma série de "combos" para se usar o BDD com a linguagem Ruby:
- RSpec + Selenium Webdriver (PhantonJS??)-> Cucumber + RSpec + Capybara + PhantonJS (ou Selenium)
![Page 11: Testes utilizando cucumber + PhantomJs](https://reader030.vdocuments.us/reader030/viewer/2022032617/55ae119c1a28aba03b8b46b6/html5/thumbnails/11.jpg)
CASE
Lições aprendidas:- Escrever features declarativas- Inserir narrativa nas features- Evitar steps conjuntivos (mais de uma ação no
mesmo step)- Reusar step definitions (utilizar variáveis nos steps)- Não abusar do uso de backgrounds
![Page 12: Testes utilizando cucumber + PhantomJs](https://reader030.vdocuments.us/reader030/viewer/2022032617/55ae119c1a28aba03b8b46b6/html5/thumbnails/12.jpg)
CASE
Iniciamos com apenas uma feature: BACKUPTemos por enquanto: 19 scenarios 147 steps 3m32.067s
![Page 13: Testes utilizando cucumber + PhantomJs](https://reader030.vdocuments.us/reader030/viewer/2022032617/55ae119c1a28aba03b8b46b6/html5/thumbnails/13.jpg)
CASE
Exemplo no Jenkins e estrutura do projeto
![Page 14: Testes utilizando cucumber + PhantomJs](https://reader030.vdocuments.us/reader030/viewer/2022032617/55ae119c1a28aba03b8b46b6/html5/thumbnails/14.jpg)
Obstáculos
- Identificação de um padrão inicial- Indefinição quanto ao local do projeto- Aprendizado do time- Quebra de paradigma - resistência
(aprendizado, já faço teste, tempo de feedback)
![Page 15: Testes utilizando cucumber + PhantomJs](https://reader030.vdocuments.us/reader030/viewer/2022032617/55ae119c1a28aba03b8b46b6/html5/thumbnails/15.jpg)
Obstáculos
- Demora na implementação e entrega (como qualquer teste realizado, ganha-se na frente)
- Elaboração de cenários errada pode levar a adoção ao fracasso (nem todos os testes devem ser automatizados)
- Nem todo teste é automatizável (?????)
![Page 16: Testes utilizando cucumber + PhantomJs](https://reader030.vdocuments.us/reader030/viewer/2022032617/55ae119c1a28aba03b8b46b6/html5/thumbnails/16.jpg)
Vantagens- Cucumber facilita outside-in, mas não força você a usá-
la desta forma
- Fornece testes legíveis e atrativos para todas as partes do time inclusive as não técnicas, o que possibilita a inclusão de todos neste processo (QA, PO, UX)
- Aumento de comunicação, amenizando ambiguidade
- Regressão = garantia
![Page 17: Testes utilizando cucumber + PhantomJs](https://reader030.vdocuments.us/reader030/viewer/2022032617/55ae119c1a28aba03b8b46b6/html5/thumbnails/17.jpg)
Vantagens
Ajuda o time a:- Compreender melhor os requisitos através
de exemplos.- Ter uma documentação viva (executável) e
de fácil leitura.- Mais uma forma de testes de regressão.
![Page 18: Testes utilizando cucumber + PhantomJs](https://reader030.vdocuments.us/reader030/viewer/2022032617/55ae119c1a28aba03b8b46b6/html5/thumbnails/18.jpg)
Considerações finais- Testes não garantem ausência de defeitos.- TDD contribui para qualidade interna e reduz custo e
tempo de manutenção do produto, portanto, pode ser aplicado também.
- BDD contribui para qualidade externa e reduz custo e tempo de revalidação das funcionalidades do produto.
- Eliminar gargalo em QA.
- Caminhar para Continuous Delivery/Deployment.
![Page 19: Testes utilizando cucumber + PhantomJs](https://reader030.vdocuments.us/reader030/viewer/2022032617/55ae119c1a28aba03b8b46b6/html5/thumbnails/19.jpg)
![Page 20: Testes utilizando cucumber + PhantomJs](https://reader030.vdocuments.us/reader030/viewer/2022032617/55ae119c1a28aba03b8b46b6/html5/thumbnails/20.jpg)