documentação de seus bdd: torne viva a sistemasconf.phprs.com.br/slides/palestra-behat.pdf ·...

106
BDD: torne viva a documentação de seus sistemas Os comportamentos de uma história são simplesmente seus critérios de aceitaçãoChris Matts & Dan North

Upload: doanmien

Post on 09-Nov-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

BDD: torne viva a documentação de seus

sistemas“Os comportamentos de uma história são simplesmente seus critérios de aceitação”

Chris Matts & Dan North

Page 2: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Fotografem, comentem, Twittem!

@VitorMattosRJ

Page 3: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo
Page 4: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo
Page 5: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

https://t.me/ElePHPants

Page 6: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Desenvolvedor PHP desde 2003

Amante de opensource

Evangelista PHP

PHP Zend Certified Engineer ( ZEND024235 )

PHPRio ( https://telegram.me/phprio )

Redes sociais: ( procure por vitormattos )

Quem sou eu?

Page 7: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Ide, e anunciai que o @PHPeste está próximo. Deixai o PHP falar por tua

boca, e alertai aos nativos do Rio Grande do Sul que a

chegada de Rasmus Lerdorf é esperada, e fale ao povo de Java que ainda é tempo de conversão. Fazei isso em memória da comunidade.

Alessandro FeitozaEvangelista PHP

Page 8: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

O culpado...

Page 9: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

TestesPor que fazê-los se eu já

posso começar desenvolvendo?

Page 10: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

“Se alguma coisa tem a mais remota chance de dar errado, certamente dará.”

Edward A. Murphy

Lei de Murphy

Page 11: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Escrevendo testes"É de conhecimento geral entre os analistas de softwares que nunca se elimina o último bug de um programa. Os bugs são aceitos como uma triste realidade. Esperamos eliminá-los todos, um por um, mas nunca conseguiremos nos livrar deles."

Tom DeMarco

Page 12: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Teste unitário

O que é isso?

Page 13: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo
Page 14: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo
Page 15: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Um exemplo de TDDcom PHPUnit

Page 16: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Test Driven Development

Page 17: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Test Driven Development

Como testar se não tem nem código escrito?

Page 18: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Test Driven DevelopmentBehavior

© 2003, Dan North

Page 19: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

O que é BDD?

Tá bom…. BDD pode me ajudarmas...

Page 20: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Definição de BDD por Dan North“BDD is a second-generation, outside–in,

pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology.

It describes a cycle of interactions with well-defined outputs, resulting in the delivery of

working, tested software that matters.”

Page 21: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Testes...

Podem ser escritos

manualmente

Page 22: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Testes automatizados

“A preguiça é a mãe do progresso. Se o homem não

tivesse preguiça de caminhar, não teria inventado a roda”

Mário Quintana

Page 23: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Pirâmide de testes

Page 24: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Pirâmide de testes

Page 25: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Ice-cream testing

Page 26: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

BDD no PHPComo faz?

Page 27: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo
Page 28: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo
Page 29: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

MUITO CÓDIGO

Page 30: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo
Page 31: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo
Page 32: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

TEM CÓDIGO PHP

Page 33: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Melhorando os testes

“I have a dream”

Martin Luther King

Page 34: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

O centro do problemaדרישות

потребностей

المتطلبات

skenario

需求 Tələblər

Page 35: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Programadores conversam usando jargões técnicos( design patterns, abreviações, termos técnicos )

Especialistas do Domínio usam terminologias específicas de suas áreas de conhecimento

(economia, hotelaria, telecom, …)

Softwares são escritos em diversas linguagens

Alguém tem que ceder!

Page 36: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

O acordoAgile prega que

programadores devem usar a linguagem de domínio como

nomenclaturas no código fonte

(“ubiquitous language”,“system metaphor” na XP)

Page 37: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

u. bí .qu:oA language structured around the

domain model and used by all team members to connect all the activities

of the team with the software.(Excerpted from Domain-Driven Design by Eric Evans).

We understand each other.(Excerpted from The Art of Agile Development

by James Shore and Shane Warden,published by O'Reilly.© 2008 the authors.)

Page 38: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Gherkin

Escreva histórias e cenários de testescom linguagem ubiqua

Page 39: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Escrevendo históriascom linguagem ubiqua

Como [X]eu quero [Y]para que [Z]

“Os comportamentos de uma história são

simplesmente seus critérios de aceitação”

Chris Matts & Dan North

Page 40: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Escrevendo históriascom linguagem ubiqua

Feature: Feature description In order to … As a … I need …

Page 41: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Escrevendo históriascom linguagem ubiqua

Feature: Feature description In order to … As a … I need …

Given some initial context (the givens), When an event occurs, Then ensure some outcomes.

Page 42: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Escrevendo históriascom linguagem ubiqua

Feature: Feature description In order to … As a … I need …

Given some initial context (the givens), When an event occurs, Then ensure some outcomes.

Given some initial context (the givens), When an event occurs, Then ensure some outcomes.

Page 43: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Escrevendo históriascom linguagem ubiqua

Feature: Feature description In order to … As a … I need … Scenario: 1st scenario title Given some initial context (the givens), When an event occurs, Then ensure some outcomes. Scenario: 2nd scenario title Given some initial context (the givens), When an event occurs, Then ensure some outcomes.

Page 44: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Escrevendo históriascom linguagem ubiqua

Feature: Feature description In order to … As a … I need … Scenario: 1st scenario title Given some initial context (the givens), When an event occurs, Then ensure some outcomes. Scenario: 2nd scenario title Given some initial context (the givens), When an event occurs, Then ensure some outcomes.

FeatureFuncionaldiade

Page 45: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Escrevendo históriascom linguagem ubiqua

Feature: Feature description In order to … As a … I need … Scenario: 1st scenario title Given some initial context (the givens), When an event occurs, Then ensure some outcomes. Scenario: 2nd scenario title Given some initial context (the givens), When an event occurs, Then ensure some outcomes.

FeatureFuncionaldiade

ScenarioCenário

Page 46: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Escrevendo históriascom linguagem ubiqua

Feature: Feature description In order to … As a … I need … Scenario: 1st scenario title Given some initial context (the givens), When an event occurs, Then ensure some outcomes. Scenario: 2nd scenario title Given some initial context (the givens), When an event occurs, Then ensure some outcomes.

FeatureFuncionaldiade

ScenarioCenário

StepPasso

Page 47: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo
Page 48: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Escrevendo uma FeatureFeature: Feature description In order to … As a … I need … Scenario: 1st scenario title Given some initial context (the givens), When an event occurs, Then ensure some outcomes. Scenario: 2nd scenario title Given some initial context (the givens), When an event occurs, Then ensure some outcomes.

Page 49: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Escrevendo uma FeatureFeature: Feature description In order to … As a … I need … Scenario: 1st scenario title Given some initial context (the givens), When an event occurs, Then ensure some outcomes. Scenario: 2nd scenario title Given some initial context (the givens), When an event occurs, Then ensure some outcomes.

Page 50: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Escrevendo uma história!#language: ptFuncionalidade: Descrição da feature Com o objetivo de … Como … Eu preciso … Cenário: título do primeiro cenário Dado algum contexto inicial, Quando ocorre um evento, Então verifique alguns resultados. Cenário: título do segundo cenário Dado algum contexto inicial, Quando ocorre um evneto, Então verifique alguns resultados.

Page 51: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Escrevendo uma história!#language: jaフィーチャ: Descrição da feature Com o objetivo de … Como … Eu preciso … シナリオ: título do primeiro cenário 前提< algum contexto inicial, もし< ocorre um evento, ならば< verifique alguns resultados. シナリオ: título do segundo cenário 前提< algum contexto inicial, もし< ocorre um evneto, ならば< verifique alguns resultados.

Page 52: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Escrevendo uma história!#language: frFonctionnalité: Descrição da feature Com o objetivo de … Como … Eu preciso … Scénario: título do primeiro cenário Étant donnée algum contexto inicial, Lorsque ocorre um evento, Alors verifique alguns resultados. Scénario: título do segundo cenário Étant donnée algum contexto inicial, Lorsque ocorre um evneto, Alors verifique alguns resultados.

Page 53: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Escrevendo uma história!#language: elΔυνατότητα: Descrição da feature Com o objetivo de … Como … Eu preciso … Σενάριο: título do primeiro cenário Δεδομένου algum contexto inicial, Όταν ocorre um evento, Τότε verifique alguns resultados. Σενάριο: título do segundo cenário Δεδομένου algum contexto inicial, Όταν ocorre um evneto, Τότε verifique alguns resultados.

Page 54: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Instalando o behat

Page 55: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Instalando o behat

Page 56: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

O que é Composer?

mas...

Socorro! Ele já está falandocoisas que não entendo

novamente!

Page 57: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Como utilizar o Composer?

getcomposer.org

Page 58: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Como utilizar o Composer?

Baixe o instalador do composer

Page 59: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Como utilizar o Composer?

O que é um phar?

Page 60: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Como utilizar o Composer?

O que é um phar?

Php ARchive

Page 61: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Como utilizar o Composer?

Cirando arquivo de dependências .json

Page 62: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Como utilizar o Composer?

Page 63: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Como utilizar o Composer?4.926.844 instalações

desde v2.2 (2011-12-14)

Page 64: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Como utilizar o Composer?

Executando o composere instalando o behat

Page 65: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Como utilizar o Composer?

Executando o composere instalando o behat

Page 66: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Iniciar o projeto com Behat

Page 67: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Um teste local simples

Arquivo: features/ls.feature

Feature: ls In order to see the directory structure As a UNIX user I need to be able to list the current directory's contents

Scenario: Given I am in a directory "test" And I have a file named "foo" And I have a file named "bar" When I run "ls" Then I should get: """ bar foo """

Page 68: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Vamos ver como funciona?

Talk is cheap. Show me the code.(Linus Torvalds)

Page 69: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Annotations@nnotations

@Given@When@Then

Page 70: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Annotations@nnotations

@Given@When@Then

@And@But

Page 71: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Annotations@nnotations

@Given@When@Then

@And@But

Page 72: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Profile

Suítes de teste v3.x

Page 73: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Suítes de teste v3.xProfile

suite #1

suite #1

Page 74: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Profilesuite #1

.feature #1

.feature #2

Classe de contexto

suite #1.feature #1

.feature #2

Classe de contexto

Suítes de teste v3.x

Page 75: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Suítes de teste v3.x# behat.yml

default: suites: core_features: paths: [ %paths.base%/features/core ] contexts: [ CoreDomainContext ] user_features: paths: [ %paths.base%/features/web ] filters: { tags: @user } contexts: [ UserContext ] admin_features: paths: [ %paths.base%/features/web ] filters: { tags: @admin } contexts: [ AdminContext ]

Page 76: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

# behat.yml

default: suites: core_features: paths: [ %paths.base%/features/core ] contexts: - FeatureContext: args: base_url: http://meusite.dev parameter1: value1 parameter2: usuario: vitor senha: whiskassache

Suítes de teste v3.x

Page 77: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Mas… quais palavras posso usar?

Page 78: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Sintaxe da história

Page 79: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Sintaxe da história

Page 80: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Dicionário de dados

Page 81: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Usando PHPUnit no Behat

Page 82: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Resultado dos testespassed => passou failed => falhou

pending => pendenteundefined => indefinido

skipped => omitido

Page 83: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Hooks para Behat

Uma maneira limpa e simplesde customizar o behat

@BeforeFeature, @AfterFeature@BeforeScenario, @AfterScenario

@BeforeStep, @AfterStep

Page 84: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Hooks para Behat

Page 85: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Melhorando os testes

“I have a dream”

Martin Luther King

Page 86: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Evoluindo para a web

Page 87: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Múltiplos navegadores

Page 88: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Headless browser

Page 89: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo
Page 90: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo
Page 91: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo
Page 92: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo
Page 93: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo
Page 94: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Um breve exemplo...# language: ptFuncionalidade: Busca na Wikipedia Vamos buscar na Wikipedia por Ada Lovelace e precisamos ver se retorna isto mesmo. @javascript Cenário: Busca por Ada Lovelace Dado estou na página de entrada E preencho "search" com "Ada Lovelace" E pressiono "go" Então devo ver "Ada Augusta King"

Page 95: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Vamos ver como funciona?

Page 96: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Conclusão

“Eu cheguei a seguinte conclusão: não adianta consertar o resto, conserta a gente ajuda pra caramba”

Renato RussoQue país é esse?

Page 97: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Transparência na escrita dos testes

# language

: pt

Funcionali

dade: Busc

a na Wikip

edia

Vamos bus

car na Wik

ipedia por

Ada Lovel

ace

e precisa

mos ver se

retorna i

sto mesmo.

@javascri

pt

Cenário:

Busca por

Ada Lovela

ce

Dado es

tou na pág

ina de ent

rada

E preen

cho "searc

h" com "Ad

a Lovelace

"

E press

iono "go"

Então d

evo ver "A

da Augusta

Byron Kin

g"

Page 98: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Integra não desenvolvedores na escrita dos testes

Page 99: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

TDD não resolve tudoBDD também não

Page 100: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Possibilidade de automatização de testes

Page 101: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Velocidade para implementar algo em produção

Page 102: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Deploys automatizados

Page 103: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Baixo custo para implementar testes

Page 104: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Referênciashttps://github.com/vitormattos/palestra-behat/https://dannorth.nethttp://www.seleniumhq.org/http://behat.org/https://cucumber.io/

Page 105: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo
Page 106: documentação de seus BDD: torne viva a sistemasconf.phprs.com.br/slides/Palestra-Behat.pdf · Amante de opensource Evangelista PHP ... e fale ao povo de Java que ainda é tempo

Perguntas

avalie.se/phprs

Redes sociais ( vitormattos )