Escolar Documentos
Profissional Documentos
Cultura Documentos
Development
Na prtica: Cucumber + Selenium + Java
Agenda
Objetivos
Conceitos
Processo tradicional (Sem BDD)
Problemas do processo tradicional
Motivos e histria
Alternativa: BDD
Conhecendo BDD
Comparao - BDD vs tradicional
Obstculos para adoo de BDD
Prtica
Ferramentas utilizadas
cucumber-jvm
Estudo de caso 1: Teste unitrio (Oi mundo)
Selenium
Estudo de caso 2: busca de projeto no github com Selenium
Objetivos
Conceitos - Processo
tradicional (sem BDD)
Modelo em cascata
Conceitos - Processo
tradicional (sem BDD)
Modelo RUP
Conceitos - Processo
tradicional (sem BDD)
Conceitos - Problemas do
processo tradicional
Conceitos - Motivos e
Histria
Programa = especificao
Conceitos - Alternativa:
BDD
Conceitos - Conhecendo
BDD
Modelo gil de desenvolvimento de segunda gerao, surgindo a partir do TDD (Test Driven
Development) e do DDD (Domain Driven Design)
Testes = Requisitos
Conceitos - Conhecendo
BDD
Conceitos - Conhecendo
BDD
Narrativa (estria):
o Deve ter um ttulo bem definido
o Composta de cenrios
o Deve definir um papel, um feature e um benefcio (As a [role] I want
[feature] so that [benefit] )
Componentes de um cenrio:
o Given - pr-condio do teste
o When - Teste propriamente dito
o Then - Resultado esperado
Conceitos - Conhecendo
BDD
BDD
Gasto de
esforo =
levantamento
de requisitos +
anlise & design
+ criao de
testes +
execuo dos
testes +
desenvolviment
o
Gasto de
esforo =
levantamento
de cenrios +
desenvolviment
o
Durante o
projeto em
andamento,
normalmente
algum
esqueceu de
algo
Maior facilidade
por todos para
enxergar o que
ser
desenvolvido
Conceitos - Obstculos
para adoo de BDD
Prtica - Ferramentas
utilizadas
Prtica - Ferramentas
utilizadas - Cucumber JVM
O que faz:
o L texto e acha o mtodo java correspondente
o Gera relatrios
o Prov integrao com JUnit/ANT
Feature: Oi mundo
Scenario: Diga oi
Given Minha saudacao e "Oi"
When Eu executo minha aplicacao
Then Ela deveria responder com "Oi mundo"
Cdigo inicial:
Classe JUnit:
import cucumber.junit.Cucumber;
import org.junit.runner.RunWith;
@RunWith(Cucumber.class)
@Cucumber.Options(format = { "pretty", "html:target/cucumber-html-report" })
public class RunCukesTest {
}
Relatrio inicial:
Implementao do cdigo:
package cucumber.examples.java.helloworld;
Relatrio final:
Prtica - Ferramentas
utilizadas - Selenium
Automatizao:
Execuo:
Relatrio: