SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
Criando	mocks com	
phophecy
Júlio de	Lima
@juliodelimas
PHP	Conferece Brasil 2016
PROPHECY É UM	FRAMEWORK	OPEN-SOURCE
CONTRUÍDO	COM	O	INTUITO	DE	FACILITAR	A	
CRIAÇÃO	DE	DUBLÊS	DE	TESTE
DUBLÊS	DE	TESTE	SÃO	OBJETOS	UTILIZADOS
PARA	IMITAR	O	FUNCIONAMENTO	DE
OUTROS	OBJETOS
HÁ MUITAS	VARIAÇÕES	DE	DUBLÊS,	MAS	OS
MAIS	CONHECIDOS	SÃO:
DUMMY																 STUB																				MOCK
Não recebe e	nem
retorna valores
Podem receber valores
e	retorna-los,	mas	não
possuem expectativas
São	Stubs	que	possuem
expectativas sobre si
Esses dublês são utilizados,	em sua maioria,
dentro de	classes	de	teste	de	unidade.	
O	principal	objetivo,	neste caso,	é simular
classes	externas a	qual está sendo testada.
Agora	vamos falar um	pouco sobre testes	de	unidade,
por isso,	pense em como você desenvolveria
o	requisito abaixo?
Pessoa
--------------
float Peso
float Altura
IMC =	Peso	*	Altura	²
IMC	menor	ou	igual	a	17 Muito	abaixo	do	peso
IMC	maior	que	17	e	menor ou	igual	a	18,49 Abaixo	do	peso
IMC	maior	que	18,49	e	menor ou	igual	a	24,99 Peso	Normal
IMC	maior	que	24,99	e	menor ou	igual	a	29,99 Acima	do	Peso
IMC	maior	que	29,99	e	menor ou	igual	a	34,99 Obesidade	I
IMC	maior	que	34,99 e	menor ou	igual	a	39,99 Obesidade	II	(severa)
IMC	maior	que	39,99 Obesidade	III	(mórbida)
Agora	vamos falar um	pouco sobre testes	de	unidade,
por isso,	pense em como você desenvolveria
o	requisito abaixo?
Pessoa
--------------
float Peso
float Altura
IMC =	Peso	*	Altura	²
IMC	menor	ou	igual	a	17 Muito	abaixo	do	peso
IMC	maior	que	17	e	menor ou	igual	a	18,49 Abaixo	do	peso
IMC	maior	que	18,49	e	menor ou	igual	a	24,99 Peso	Normal
IMC	maior	que	24,99	e	menor ou	igual	a	29,99 Acima	do	Peso
IMC	maior	que	29,99	e	menor ou	igual	a	34,99 Obesidade	I
IMC	maior	que	34,99 e	menor ou	igual	a	39,99 Obesidade	II	(severa)
IMC	maior	que	39,99 Obesidade	III	(mórbida)
Quantos	teste	seriam	necessários para	
cobrir todas as	possibilidades?
No	mínimo 4	para	o	cálculo do	IMC
Altura e	Peso	informados,	apenas altura informada,	
apenas peso	informado e	nenhum informado
E	outros	7	para	cada partição da	classificação do	IMC
Sendo um	para	cada uma das	classificações:	
”Muito abaixo do	peso”,	”Abaixo do	peso”,	etc.
Como	estes testes	tratam de	exercitar a	menor
parte	do	código,	são denominados testes	de	unidade.
Lembre-se,	testes	de	unidade são feitos de	forma	isolada,	
ou seja,	os testes	os métodos de	cada classe separadamente
Para	que	isso seja possível,	é necessário que	os conceitos de	
Orientação a	Objetos e	suas características básicas de
baixo acoplamento e	alta coesão sejam utilizados no	
desenvolvimento do	software
Para	automatizar testes	de	unidade no	PHP
utizaremos o	PHPUnit,	um	framework	open-source
muito utilizado pela	comunidade
Assim chegamos ao objetivo do	uso do	Prophecy:
Simular classes	externas dentro dos	testes	de	unidade
que	avaliam nossas classes	e	métodos!
Prophecy	resume-se	a	
Um	profeta,	suas profecias,	
algumas promessas e	predições
Veja um	exemplo
// Instanciando a classe concreta
$pessoa = new Pessoa()
// Usando o Prophecy
$profeta = new ProphecyProphet();
$profecia = $profeta->prophesize('Pessoa');
$profecia->getAltura(Argument::any())->willReturn(1.89);
$pessoa = $profecia->reveal();
Live	Coding!
Confira o	projeto no	repositório abaixo:
https://github.com/juliodelimas/criando-mocks-prophecy
Dúvidas?
Júlio de	Lima
@juliodelimas
PHP	Conferece Brasil 2016

Weitere ähnliche Inhalte

Andere mochten auch

проект зелена бібліотека
проект зелена бібліотекапроект зелена бібліотека
проект зелена бібліотекаOlena Bashun
 
Qualidade e Teste de Software - O que preciso saber
Qualidade e Teste de Software - O que preciso saberQualidade e Teste de Software - O que preciso saber
Qualidade e Teste de Software - O que preciso saberKamilla Queiroz Xavier
 
Spivpratsia z gromadamy_umovy_konkursu_4
Spivpratsia z gromadamy_umovy_konkursu_4Spivpratsia z gromadamy_umovy_konkursu_4
Spivpratsia z gromadamy_umovy_konkursu_4Library Franko
 
Presentation Virtuele Straat
Presentation Virtuele StraatPresentation Virtuele Straat
Presentation Virtuele StraatVinger
 
[QANinjaConference] Carreira em Testes: Ainda vale a pena?
[QANinjaConference] Carreira em Testes: Ainda vale a pena?[QANinjaConference] Carreira em Testes: Ainda vale a pena?
[QANinjaConference] Carreira em Testes: Ainda vale a pena?Júlio de Lima
 
aguazulito mi llano lindo
aguazulito mi llano lindoaguazulito mi llano lindo
aguazulito mi llano lindokonith02
 
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e WebdriverJúlio de Lima
 
ORCID Overview: Why your Lifelong Identifier is Important in the Digital Age ...
ORCID Overview: Why your Lifelong Identifier is Important in the Digital Age ...ORCID Overview: Why your Lifelong Identifier is Important in the Digital Age ...
ORCID Overview: Why your Lifelong Identifier is Important in the Digital Age ...ORCID, Inc
 
Thermography For The Assemssment Of Buildings
Thermography For The Assemssment Of BuildingsThermography For The Assemssment Of Buildings
Thermography For The Assemssment Of Buildingsbobberry8
 

Andere mochten auch (14)

проект зелена бібліотека
проект зелена бібліотекапроект зелена бібліотека
проект зелена бібліотека
 
El acceso abierto al conocimiento científico
El acceso abierto al conocimiento científico El acceso abierto al conocimiento científico
El acceso abierto al conocimiento científico
 
Qualidade e Teste de Software - O que preciso saber
Qualidade e Teste de Software - O que preciso saberQualidade e Teste de Software - O que preciso saber
Qualidade e Teste de Software - O que preciso saber
 
Spivpratsia z gromadamy_umovy_konkursu_4
Spivpratsia z gromadamy_umovy_konkursu_4Spivpratsia z gromadamy_umovy_konkursu_4
Spivpratsia z gromadamy_umovy_konkursu_4
 
Presentation Virtuele Straat
Presentation Virtuele StraatPresentation Virtuele Straat
Presentation Virtuele Straat
 
[QANinjaConference] Carreira em Testes: Ainda vale a pena?
[QANinjaConference] Carreira em Testes: Ainda vale a pena?[QANinjaConference] Carreira em Testes: Ainda vale a pena?
[QANinjaConference] Carreira em Testes: Ainda vale a pena?
 
aguazulito mi llano lindo
aguazulito mi llano lindoaguazulito mi llano lindo
aguazulito mi llano lindo
 
Hola a todos
Hola a todosHola a todos
Hola a todos
 
Selenium
SeleniumSelenium
Selenium
 
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
 
Presentación1 MÁQUINAS SIMPLES
Presentación1 MÁQUINAS SIMPLESPresentación1 MÁQUINAS SIMPLES
Presentación1 MÁQUINAS SIMPLES
 
ORCID Overview: Why your Lifelong Identifier is Important in the Digital Age ...
ORCID Overview: Why your Lifelong Identifier is Important in the Digital Age ...ORCID Overview: Why your Lifelong Identifier is Important in the Digital Age ...
ORCID Overview: Why your Lifelong Identifier is Important in the Digital Age ...
 
Thermography For The Assemssment Of Buildings
Thermography For The Assemssment Of BuildingsThermography For The Assemssment Of Buildings
Thermography For The Assemssment Of Buildings
 
Magnetom Spectra RM 3T -SIEMENS
Magnetom Spectra RM 3T -SIEMENSMagnetom Spectra RM 3T -SIEMENS
Magnetom Spectra RM 3T -SIEMENS
 

Mehr von Júlio de Lima

[ATC2021] Distribuição de Testes em Diferentes Camadas
[ATC2021] Distribuição de Testes em Diferentes Camadas[ATC2021] Distribuição de Testes em Diferentes Camadas
[ATC2021] Distribuição de Testes em Diferentes CamadasJúlio de Lima
 
ALTER FACE Test Heuristic
ALTER FACE Test HeuristicALTER FACE Test Heuristic
ALTER FACE Test HeuristicJúlio de Lima
 
[ScrumDay2020] A evolução da responsabilidade em testes
[ScrumDay2020] A evolução da responsabilidade em testes[ScrumDay2020] A evolução da responsabilidade em testes
[ScrumDay2020] A evolução da responsabilidade em testesJúlio de Lima
 
Reducing the scope of load test analysis (STAREast 2020)
Reducing the scope of load test analysis (STAREast 2020)Reducing the scope of load test analysis (STAREast 2020)
Reducing the scope of load test analysis (STAREast 2020)Júlio de Lima
 
[TDC2019] Inteligência Artificial e Testes in a Nutshell
[TDC2019] Inteligência Artificial e Testes  in a Nutshell[TDC2019] Inteligência Artificial e Testes  in a Nutshell
[TDC2019] Inteligência Artificial e Testes in a NutshellJúlio de Lima
 
[GaragemTalks2019] Cultura de Testes e Qualidade de Software
[GaragemTalks2019] Cultura de Testes e Qualidade de Software[GaragemTalks2019] Cultura de Testes e Qualidade de Software
[GaragemTalks2019] Cultura de Testes e Qualidade de SoftwareJúlio de Lima
 
[MoT SP #1] PRISMA para Testes Baseados em Risco
[MoT SP #1] PRISMA para Testes Baseados em Risco[MoT SP #1] PRISMA para Testes Baseados em Risco
[MoT SP #1] PRISMA para Testes Baseados em RiscoJúlio de Lima
 
Mindset de QA em Diferentes Contextos
Mindset de QA em Diferentes ContextosMindset de QA em Diferentes Contextos
Mindset de QA em Diferentes ContextosJúlio de Lima
 
[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvem[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvemJúlio de Lima
 
[7Masters Aug, 2018] Escolhas durante automação de testes de API
[7Masters Aug, 2018] Escolhas durante automação de testes de API[7Masters Aug, 2018] Escolhas durante automação de testes de API
[7Masters Aug, 2018] Escolhas durante automação de testes de APIJúlio de Lima
 
[Front in Sampa 2018] Desenvolvendo como QAs
[Front in Sampa 2018] Desenvolvendo como QAs[Front in Sampa 2018] Desenvolvendo como QAs
[Front in Sampa 2018] Desenvolvendo como QAsJúlio de Lima
 
Mindset do QA em diferentes contextos
Mindset do QA em diferentes contextosMindset do QA em diferentes contextos
Mindset do QA em diferentes contextosJúlio de Lima
 
[QANinjaConf2017] Testes de Regressão Visual com Galen Framework
[QANinjaConf2017] Testes de Regressão Visual com Galen Framework[QANinjaConf2017] Testes de Regressão Visual com Galen Framework
[QANinjaConf2017] Testes de Regressão Visual com Galen FrameworkJúlio de Lima
 
[QANinjaConference] Automação de Testes com Codeception
[QANinjaConference] Automação de Testes com Codeception[QANinjaConference] Automação de Testes com Codeception
[QANinjaConference] Automação de Testes com CodeceptionJúlio de Lima
 
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)Júlio de Lima
 
[PHPConferenceBR] Automação de testes com Codeception
[PHPConferenceBR] Automação de testes com Codeception[PHPConferenceBR] Automação de testes com Codeception
[PHPConferenceBR] Automação de testes com CodeceptionJúlio de Lima
 
[UNIP2015] Testando a Performance de Aplicações Web com JMeter
[UNIP2015] Testando a Performance de Aplicações Web com JMeter[UNIP2015] Testando a Performance de Aplicações Web com JMeter
[UNIP2015] Testando a Performance de Aplicações Web com JMeterJúlio de Lima
 
Palestra DevOps para Teste de Software
Palestra DevOps para Teste de SoftwarePalestra DevOps para Teste de Software
Palestra DevOps para Teste de SoftwareJúlio de Lima
 
[TICNOVA2015] Palestra sobre Automação de Testes
[TICNOVA2015] Palestra sobre Automação de Testes[TICNOVA2015] Palestra sobre Automação de Testes
[TICNOVA2015] Palestra sobre Automação de TestesJúlio de Lima
 
TDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-AssuredTDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-AssuredJúlio de Lima
 

Mehr von Júlio de Lima (20)

[ATC2021] Distribuição de Testes em Diferentes Camadas
[ATC2021] Distribuição de Testes em Diferentes Camadas[ATC2021] Distribuição de Testes em Diferentes Camadas
[ATC2021] Distribuição de Testes em Diferentes Camadas
 
ALTER FACE Test Heuristic
ALTER FACE Test HeuristicALTER FACE Test Heuristic
ALTER FACE Test Heuristic
 
[ScrumDay2020] A evolução da responsabilidade em testes
[ScrumDay2020] A evolução da responsabilidade em testes[ScrumDay2020] A evolução da responsabilidade em testes
[ScrumDay2020] A evolução da responsabilidade em testes
 
Reducing the scope of load test analysis (STAREast 2020)
Reducing the scope of load test analysis (STAREast 2020)Reducing the scope of load test analysis (STAREast 2020)
Reducing the scope of load test analysis (STAREast 2020)
 
[TDC2019] Inteligência Artificial e Testes in a Nutshell
[TDC2019] Inteligência Artificial e Testes  in a Nutshell[TDC2019] Inteligência Artificial e Testes  in a Nutshell
[TDC2019] Inteligência Artificial e Testes in a Nutshell
 
[GaragemTalks2019] Cultura de Testes e Qualidade de Software
[GaragemTalks2019] Cultura de Testes e Qualidade de Software[GaragemTalks2019] Cultura de Testes e Qualidade de Software
[GaragemTalks2019] Cultura de Testes e Qualidade de Software
 
[MoT SP #1] PRISMA para Testes Baseados em Risco
[MoT SP #1] PRISMA para Testes Baseados em Risco[MoT SP #1] PRISMA para Testes Baseados em Risco
[MoT SP #1] PRISMA para Testes Baseados em Risco
 
Mindset de QA em Diferentes Contextos
Mindset de QA em Diferentes ContextosMindset de QA em Diferentes Contextos
Mindset de QA em Diferentes Contextos
 
[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvem[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvem
 
[7Masters Aug, 2018] Escolhas durante automação de testes de API
[7Masters Aug, 2018] Escolhas durante automação de testes de API[7Masters Aug, 2018] Escolhas durante automação de testes de API
[7Masters Aug, 2018] Escolhas durante automação de testes de API
 
[Front in Sampa 2018] Desenvolvendo como QAs
[Front in Sampa 2018] Desenvolvendo como QAs[Front in Sampa 2018] Desenvolvendo como QAs
[Front in Sampa 2018] Desenvolvendo como QAs
 
Mindset do QA em diferentes contextos
Mindset do QA em diferentes contextosMindset do QA em diferentes contextos
Mindset do QA em diferentes contextos
 
[QANinjaConf2017] Testes de Regressão Visual com Galen Framework
[QANinjaConf2017] Testes de Regressão Visual com Galen Framework[QANinjaConf2017] Testes de Regressão Visual com Galen Framework
[QANinjaConf2017] Testes de Regressão Visual com Galen Framework
 
[QANinjaConference] Automação de Testes com Codeception
[QANinjaConference] Automação de Testes com Codeception[QANinjaConference] Automação de Testes com Codeception
[QANinjaConference] Automação de Testes com Codeception
 
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
 
[PHPConferenceBR] Automação de testes com Codeception
[PHPConferenceBR] Automação de testes com Codeception[PHPConferenceBR] Automação de testes com Codeception
[PHPConferenceBR] Automação de testes com Codeception
 
[UNIP2015] Testando a Performance de Aplicações Web com JMeter
[UNIP2015] Testando a Performance de Aplicações Web com JMeter[UNIP2015] Testando a Performance de Aplicações Web com JMeter
[UNIP2015] Testando a Performance de Aplicações Web com JMeter
 
Palestra DevOps para Teste de Software
Palestra DevOps para Teste de SoftwarePalestra DevOps para Teste de Software
Palestra DevOps para Teste de Software
 
[TICNOVA2015] Palestra sobre Automação de Testes
[TICNOVA2015] Palestra sobre Automação de Testes[TICNOVA2015] Palestra sobre Automação de Testes
[TICNOVA2015] Palestra sobre Automação de Testes
 
TDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-AssuredTDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-Assured
 

Criando mocks com Prophecy