Top Banner
BDD com Marcelo Toledo - QA - IaaS
20
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Testes utilizando cucumber + PhantomJs

BDD com Marcelo Toledo - QA - IaaS

Page 2: Testes utilizando cucumber + PhantomJs

Agenda

- O que é BDD e Cucumber?

- Motivação

- Case

- Considerações

Page 3: Testes utilizando cucumber + PhantomJs

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

O que é Cucumber

É um framework, que surgiu da evolução de: Jbehave -> Rbehave -> RSpec -> Cucumber

Page 5: Testes utilizando cucumber + PhantomJs

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

QA x QC ?

Motivação

Page 7: Testes utilizando cucumber + PhantomJs

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

MotivaçãoO que estamos deixando para trás:

nossa “pirâmide” atual:

Page 9: Testes utilizando cucumber + PhantomJs

Motivação

Para onde estamos caminhando:

Page 10: Testes utilizando cucumber + PhantomJs

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

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

CASE

Iniciamos com apenas uma feature: BACKUPTemos por enquanto: 19 scenarios 147 steps 3m32.067s

Page 13: Testes utilizando cucumber + PhantomJs

CASE

Exemplo no Jenkins e estrutura do projeto

Page 14: Testes utilizando cucumber + PhantomJs

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

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

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

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

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
Page 20: Testes utilizando cucumber + PhantomJs