BDD + PHP = behat!

Vitor Mattos
Vitor MattosPHP Developer na OLX Brasil en OLX Brasil
BDD + =
BDD + =
“Os comportamentos de uma história são
simplesmente seus critérios de aceitação”
Chris Matts & Dan North
Quem vos apresenta BDD:
Eu! :D
Vitor Mattos
O culpado...
Testes
Por que fazê-los se eu já
posso começar
desenvolvendo?
“Se alguma coisa tem a mais remota chance
de dar errado, certamente dará.”
Edward A. Murphy
Lei de Murphy
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
Teste unitário
O que é isso?
BDD + PHP = behat!
BDD + PHP = behat!
Um exemplo de TDD
com PHPUnit
Test Driven Development
Test Driven Development
Como testar se não tem nem código escrito?
Test Driven Development
Behavior
© 2003, Dan North
O que é BDD?
Tá bom…. BDD pode me ajudar
mas...
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.”
Testes...
Podem ser
escritos
manualmente
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
Pirâmide de testes
Ice-cream testing
BDD no PHP
Como faz?
BDD + PHP = behat!
BDD + PHP = behat!
MUITO CÓDIGO
BDD + PHP = behat!
BDD + PHP = behat!
TEM CÓDIGO PHP
Melhorando os testes
“I have a
dream”
Martin Luther King
O centro do problema
‫דרישות‬
потребностей
‫اﻟﻣﺗطﻠﺑﺎت‬
skenario
需求 Tələblər
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!
O acordo
Agile prega que
programadores devem usar a
linguagem de domínio como
nomenclaturas no código
fonte
(“ubiquitous language”,
“system metaphor” na XP)
u. bí .qu:o
A 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.)
Gherkin
Escreva histórias e cenários de testes
com linguagem ubiqua
Escrevendo histórias
com 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
Escrevendo histórias
com linguagem ubiqua
Feature: Feature description
In order to …
As a …
I need …
Escrevendo histórias
com 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.
Escrevendo histórias
com 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.
Escrevendo histórias
com 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.
Escrevendo histórias
com 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.
Feature
Funcionaldiade
Escrevendo histórias
com 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.
Feature
Funcionaldiade
Scenario
Cenário
Escrevendo histórias
com 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.
Feature
Funcionaldiade
Scenario
Cenário
Step
Passo
BDD + PHP = behat!
Escrevendo uma Feature
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.
Escrevendo uma Feature
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.
Escrevendo uma história!
#language: pt
Funcionalidade: 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.
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.
Escrevendo uma história!
#language: fr
Fonctionnalité: 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.
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.
Instalando o behat
Instalando o behat
O que é
Composer?
mas...
Socorro! Ele já está falando
coisas que não entendo
novamente!
Como utilizar o Composer?
getcomposer.org
Como utilizar o Composer?
Baixe o instalador do composer
Como utilizar o Composer?
O que é um phar?
Como utilizar o Composer?
O que é um phar?
Php ARchive
Como utilizar o Composer?
Cirando arquivo de dependências .json
Como utilizar o Composer?
Como utilizar o Composer?
4.926.844 instalações
desde v2.2 (2011-12-14)
Como utilizar o Composer?
Executando o composer
e instalando o behat
Como utilizar o Composer?
Executando o composer
e instalando o behat
Iniciar o projeto com
Behat
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
"""
Vamos ver como funciona?
Talk is cheap. Show me the code.
(Linus Torvalds)
Annotations
@nnotations
@Given
@When
@Then
Annotations
@nnotations
@Given
@When
@Then
@And
@But
Annotations
@nnotations
@Given
@When
@Then
@And
@But
Profile
Suítes de teste v3.x
Suítes de teste v3.x
Profile
suite #1
suite #1
Profile
suite #1
.feature #1
.feature #2
Classe de contexto
suite #1
.feature #1
.feature #2
Classe de contexto
Suítes de teste v3.x
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 ]
# 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
Mas… quais palavras
posso usar?
Sintaxe da história
Sintaxe da história
Dicionário de dados
Usando PHPUnit no
Behat
Resultado dos testes
passed => passou
failed => falhou
pending => pendente
undefined => indefinido
skipped => omitido
Hooks para Behat
Uma maneira limpa e simples
de customizar o behat
@BeforeFeature, @AfterFeature
@BeforeScenario, @AfterScenario
@BeforeStep, @AfterStep
Hooks para Behat
Melhorando os testes
“I have a
dream”
Martin Luther King
Evoluindo para a web
Múltiplos navegadores
Headless browser
BDD + PHP = behat!
BDD + PHP = behat!
BDD + PHP = behat!
BDD + PHP = behat!
BDD + PHP = behat!
Um breve exemplo...
# language: pt
Funcionalidade: 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"
Vamos ver como funciona?
Conclusão
“Eu cheguei a seguinte conclusão:
não adianta consertar o resto,
conserta a gente ajuda pra
caramba”
Renato Russo
Que país é esse?
Transparência na escrita
dos testes
# language: pt
Funcionalidade: 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 Byron King"
Integra não desenvolvedores
na escrita dos testes
TDD não resolve
tudo
BDD também não
Possibilidade de
automatização de testes
Velocidade para implementar
algo em produção
Deploys automatizados
Baixo custo para
implementar testes
BDD + PHP = behat!
Avaliações
Perguntas
vitor.mattos@phprio.org
linkedin.com/in/vitormattos
1 de 101

Recomendados

BDD: torne viva a documentação de seus sistemas por
BDD: torne viva a documentação de seus sistemasBDD: torne viva a documentação de seus sistemas
BDD: torne viva a documentação de seus sistemasVitor Mattos
409 vistas105 diapositivas
BDD: Torne viva a documentação de seus sistemas por
BDD: Torne viva a documentação de seus sistemasBDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemasVitor Mattos
391 vistas106 diapositivas
Xdebug seus problemas acabaram - tdc floripa 2017 por
Xdebug   seus problemas acabaram - tdc floripa 2017Xdebug   seus problemas acabaram - tdc floripa 2017
Xdebug seus problemas acabaram - tdc floripa 2017Vitor Mattos
480 vistas48 diapositivas
Introdução a Linguagem de Programação Ruby por
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyDiego Rubin
8.5K vistas39 diapositivas
JAVA: Muito mais que uma linguagem por
JAVA: Muito mais que uma linguagemJAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagemliverig
3.5K vistas90 diapositivas
Python - Programando em alto nível por
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nívelIgor Sobreira
3K vistas92 diapositivas

Más contenido relacionado

La actualidad más candente

JavaScript: agora é sério por
JavaScript: agora é sérioJavaScript: agora é sério
JavaScript: agora é sérioLuciano Ramalho
3.2K vistas17 diapositivas
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScript por
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScriptTDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScriptRogério Moraes de Carvalho
1K vistas63 diapositivas
Programando para web com python - Introdução a Python por
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonAlvaro Oliveira
1.9K vistas104 diapositivas
Linguagens Dinamicas na JVM por
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVMWilliam Gouvea
907 vistas51 diapositivas
Curso Java Básico - Aula 01 por
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Natanael Fonseca
1.2K vistas64 diapositivas
Como Construir um compilador-cap 2 por
Como Construir um compilador-cap 2Como Construir um compilador-cap 2
Como Construir um compilador-cap 2Maellson Marques
992 vistas51 diapositivas

La actualidad más candente(20)

Programando para web com python - Introdução a Python por Alvaro Oliveira
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a Python
Alvaro Oliveira1.9K vistas
Linguagens Dinamicas na JVM por William Gouvea
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVM
William Gouvea907 vistas
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ... por George Mendonça
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...
George Mendonça886 vistas
Orientação a Objetos em Python por Luciano Ramalho
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
Luciano Ramalho19.2K vistas
Introdução a JavaScript por Bruno Catão
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
Bruno Catão6.7K vistas
Introdução à linguagem de programação Python por Carlos Schults
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação Python
Carlos Schults4.3K vistas
JavaScript for Beginners por SAPO Sessions
JavaScript for BeginnersJavaScript for Beginners
JavaScript for Beginners
SAPO Sessions1.8K vistas
Apresentação python fábio jr alves por Grupython Ufla
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alves
Grupython Ufla5.9K vistas
Introdução à Programação em Python por Rodrigo Hübner
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em Python
Rodrigo Hübner1.8K vistas
Implementação de Aplicações Móveis e Jogos com Python - Aula 1 por Flávio Ribeiro
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Flávio Ribeiro617 vistas

Destacado

Melhor que whatsapp: telegram + php por
Melhor que whatsapp: telegram + phpMelhor que whatsapp: telegram + php
Melhor que whatsapp: telegram + phpVitor Mattos
2.8K vistas23 diapositivas
Hackeando Dados públicos com python por
Hackeando Dados públicos com pythonHackeando Dados públicos com python
Hackeando Dados públicos com pythonFATEC São José dos Campos
38.6K vistas37 diapositivas
PHP em Background por
PHP em BackgroundPHP em Background
PHP em BackgroundVitor Mattos
2.3K vistas12 diapositivas
Xdebug seus problemas acabaram - TDC - PHPeste por
Xdebug   seus problemas acabaram - TDC - PHPesteXdebug   seus problemas acabaram - TDC - PHPeste
Xdebug seus problemas acabaram - TDC - PHPesteVitor Mattos
628 vistas43 diapositivas
El proceso de desarrollo con herramientas Open Source por
El proceso de desarrollo con herramientas Open SourceEl proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open SourceJose Juan R. Zuñiga
1.1K vistas29 diapositivas
Phpday - Automated acceptance testing with Behat and Mink por
Phpday - Automated acceptance testing with Behat and MinkPhpday - Automated acceptance testing with Behat and Mink
Phpday - Automated acceptance testing with Behat and MinkRichard Tuin
6.7K vistas66 diapositivas

Destacado(20)

Melhor que whatsapp: telegram + php por Vitor Mattos
Melhor que whatsapp: telegram + phpMelhor que whatsapp: telegram + php
Melhor que whatsapp: telegram + php
Vitor Mattos2.8K vistas
PHP em Background por Vitor Mattos
PHP em BackgroundPHP em Background
PHP em Background
Vitor Mattos2.3K vistas
Xdebug seus problemas acabaram - TDC - PHPeste por Vitor Mattos
Xdebug   seus problemas acabaram - TDC - PHPesteXdebug   seus problemas acabaram - TDC - PHPeste
Xdebug seus problemas acabaram - TDC - PHPeste
Vitor Mattos628 vistas
El proceso de desarrollo con herramientas Open Source por Jose Juan R. Zuñiga
El proceso de desarrollo con herramientas Open SourceEl proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open Source
Jose Juan R. Zuñiga1.1K vistas
Phpday - Automated acceptance testing with Behat and Mink por Richard Tuin
Phpday - Automated acceptance testing with Behat and MinkPhpday - Automated acceptance testing with Behat and Mink
Phpday - Automated acceptance testing with Behat and Mink
Richard Tuin6.7K vistas
Seja subversivo, faça testes por Vitor Mattos
Seja subversivo, faça testesSeja subversivo, faça testes
Seja subversivo, faça testes
Vitor Mattos715 vistas
Apresentação feedback cool por Vitor Mattos
Apresentação feedback coolApresentação feedback cool
Apresentação feedback cool
Vitor Mattos222 vistas
Testes automatizados (2) por cesarvianna
Testes automatizados (2)Testes automatizados (2)
Testes automatizados (2)
cesarvianna815 vistas
Gestión de requisitos y su trazabilidad en la Gestión de Servicios TI por OVERTI
Gestión de requisitos y su trazabilidad en la Gestión de Servicios TIGestión de requisitos y su trazabilidad en la Gestión de Servicios TI
Gestión de requisitos y su trazabilidad en la Gestión de Servicios TI
OVERTI828 vistas
Testing and TDD - Laravel and Express Examples por Dragos Strugar
Testing and TDD - Laravel and Express ExamplesTesting and TDD - Laravel and Express Examples
Testing and TDD - Laravel and Express Examples
Dragos Strugar187 vistas
Web Development with Delphi and React - ITDevCon 2016 por Marco Breveglieri
Web Development with Delphi and React - ITDevCon 2016Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016
Marco Breveglieri5.5K vistas
M1 tema 1 deteccion de incendios quimica del fuego por jmsarmientom
M1 tema 1   deteccion de incendios quimica del fuegoM1 tema 1   deteccion de incendios quimica del fuego
M1 tema 1 deteccion de incendios quimica del fuego
jmsarmientom3.8K vistas
SEMINARIO WEB - El ABC del Test Automation: ¿Qué, por qué, cuando y cómo? por Belatrix Software
SEMINARIO WEB - El ABC del Test Automation: ¿Qué, por qué, cuando y cómo?SEMINARIO WEB - El ABC del Test Automation: ¿Qué, por qué, cuando y cómo?
SEMINARIO WEB - El ABC del Test Automation: ¿Qué, por qué, cuando y cómo?
Belatrix Software 728 vistas
Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code... por Cyrille Martraire
Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...
Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...
Cyrille Martraire1.8K vistas
Create a Bot with Delphi and Telegram - ITDevCon 2016 por Marco Breveglieri
Create a Bot with Delphi and Telegram - ITDevCon 2016Create a Bot with Delphi and Telegram - ITDevCon 2016
Create a Bot with Delphi and Telegram - ITDevCon 2016
Marco Breveglieri8.9K vistas
Por qué Cervantes programaba mejor que tú por Javier Acero
Por qué Cervantes programaba mejor que túPor qué Cervantes programaba mejor que tú
Por qué Cervantes programaba mejor que tú
Javier Acero1.2K vistas

Similar a BDD + PHP = behat!

Ruby, Rails e Diversão por
Ruby, Rails e DiversãoRuby, Rails e Diversão
Ruby, Rails e DiversãoJulio Monteiro
919 vistas75 diapositivas
Aspectos profissionais 3pontos por
Aspectos profissionais 3pontosAspectos profissionais 3pontos
Aspectos profissionais 3pontosMiguel Alho
460 vistas47 diapositivas
DDD - Step by Step por
DDD - Step by StepDDD - Step by Step
DDD - Step by StepDiego Dezembro
423 vistas85 diapositivas
O mundo visto de dentro do Ruby por
O mundo visto de dentro do RubyO mundo visto de dentro do Ruby
O mundo visto de dentro do RubyVítor Avelino Dutra Magalhães
509 vistas85 diapositivas
ptt por
pttptt
pttRodrigo Vieira
776 vistas43 diapositivas
Domain-Driven Design por
Domain-Driven DesignDomain-Driven Design
Domain-Driven DesignComunidade NetPonto
1.6K vistas74 diapositivas

Similar a BDD + PHP = behat!(20)

Aspectos profissionais 3pontos por Miguel Alho
Aspectos profissionais 3pontosAspectos profissionais 3pontos
Aspectos profissionais 3pontos
Miguel Alho460 vistas
Desenvolvimento Agil Com Doctrine Orm por Guilherme Blanco
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
Guilherme Blanco10.7K vistas
Behaviour driven development, com jbehave por Marcelo Zeferino
Behaviour driven development, com jbehaveBehaviour driven development, com jbehave
Behaviour driven development, com jbehave
Marcelo Zeferino484 vistas
Programação Orientada a Testes por Gregorio Melo
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a Testes
Gregorio Melo1.5K vistas
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor por Dickson S. Guedes
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorPorque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Dickson S. Guedes343 vistas
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js por Vinicius Reis
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Vinicius Reis355 vistas
Esta começando a programar para a web? Então começe com Rails por ismaelstahelin
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
ismaelstahelin3.2K vistas

Más de Vitor Mattos

Composer dependency manager - TDC - POA 2017 por
Composer   dependency manager - TDC - POA 2017Composer   dependency manager - TDC - POA 2017
Composer dependency manager - TDC - POA 2017Vitor Mattos
396 vistas70 diapositivas
Composer dependency manager por
Composer   dependency managerComposer   dependency manager
Composer dependency managerVitor Mattos
259 vistas47 diapositivas
Contribuindo e criando software livre por
Contribuindo e criando software livreContribuindo e criando software livre
Contribuindo e criando software livreVitor Mattos
437 vistas51 diapositivas
Que oportunidades me encontrem! por
Que oportunidades me encontrem!Que oportunidades me encontrem!
Que oportunidades me encontrem!Vitor Mattos
218 vistas20 diapositivas
Xdebug: Seus problemas acabaram! por
Xdebug: Seus problemas acabaram!Xdebug: Seus problemas acabaram!
Xdebug: Seus problemas acabaram!Vitor Mattos
1.5K vistas19 diapositivas
JasperReports por
JasperReportsJasperReports
JasperReportsVitor Mattos
1.2K vistas11 diapositivas

Más de Vitor Mattos(6)

Composer dependency manager - TDC - POA 2017 por Vitor Mattos
Composer   dependency manager - TDC - POA 2017Composer   dependency manager - TDC - POA 2017
Composer dependency manager - TDC - POA 2017
Vitor Mattos396 vistas
Composer dependency manager por Vitor Mattos
Composer   dependency managerComposer   dependency manager
Composer dependency manager
Vitor Mattos259 vistas
Contribuindo e criando software livre por Vitor Mattos
Contribuindo e criando software livreContribuindo e criando software livre
Contribuindo e criando software livre
Vitor Mattos437 vistas
Que oportunidades me encontrem! por Vitor Mattos
Que oportunidades me encontrem!Que oportunidades me encontrem!
Que oportunidades me encontrem!
Vitor Mattos218 vistas
Xdebug: Seus problemas acabaram! por Vitor Mattos
Xdebug: Seus problemas acabaram!Xdebug: Seus problemas acabaram!
Xdebug: Seus problemas acabaram!
Vitor Mattos1.5K vistas

BDD + PHP = behat!