SlideShare a Scribd company logo
1 of 83
Download to read offline
M O C K S , 
 S T U B S 
 A N D
F A K E S . 

¿ W H A T 
 E L S E ?.
 A L E X S O T O B 	 - 	 L O R D O F T H E J A R S . C O M
	alexsotob		lordofthejars
	alexsotob		lordofthejars
Commit	Stage
C O N T I N U O U S
I N T E G R A T I O N
	alexsotob		lordofthejars
U N I T 
 T E S T S
Fast,	Isolated,	Repeteable,	Self-Validating,	Timely
F I R S T
A P P L I C A T I O N S 
 A R E 
 C O M P L E X
T E S T 
D O U B L E
	alexsotob		lordofthejars
M O C K S
	alexsotob		lordofthejars
M O C K S
Pre-programmed
with
expectations
	alexsotob		lordofthejars
M O C K S
Pre-programmed
with
expectations
Behavior
Verification
	alexsotob		lordofthejars
T H E 
 G O O D 
 A N D 
T H E 
 B A D
Fast
	alexsotob		lordofthejars
T H E 
 G O O D 
 A N D 
T H E 
 B A D
Fast
Easy
to
write
	alexsotob		lordofthejars
T H E 
 G O O D 
 A N D 
T H E 
 B A D
Fast
Easy
to
write
Versatile
	alexsotob		lordofthejars
T H E 
 G O O D 
 A N D 
T H E 
 B A D
Fast
Easy
to
write
Versatile
Mockito,
EasyMock,
jMock
	alexsotob		lordofthejars
T H E 
 G O O D 
 A N D 
T H E 
 B A D
Fast
Easy
to
write
Versatile
Mockito,
EasyMock,
jMock
Verbose
	alexsotob		lordofthejars
T H E 
 G O O D 
 A N D 
T H E 
 B A D
Fast
Easy
to
write
Versatile
Mockito,
EasyMock,
jMock
Verbose
Reimplementing
Business
	alexsotob		lordofthejars
T H E 
 G O O D 
 A N D 
T H E 
 B A D
Fast
Easy
to
write
Versatile
Mockito,
EasyMock,
jMock
Verbose
Reimplementing
Business
No
state
	alexsotob		lordofthejars
T H E 
 G O O D 
 A N D 
T H E 
 B A D
Fast
Easy
to
write
Versatile
Mockito,
EasyMock,
jMock
Verbose
Reimplementing
Business
No
state
No
executing
full
stack
	alexsotob		lordofthejars
testCompile	testCompile	(('org.mockito:mockito-all:1.10.19''org.mockito:mockito-all:1.10.19'))		{{
		exclude	group		exclude	group::		'org.hamcrest''org.hamcrest'
}}
D E P E N D E N C I E S
	alexsotob		lordofthejars
@@RunWithRunWith((MockitoJUnitRunnerMockitoJUnitRunner..classclass))
publicpublic		classclass		TestTest		{{
		@Mock	EmailService	email		@Mock	EmailService	email;;
}}
publicpublic		classclass		TestTest		{{
		@Mock	EmailService	email		@Mock	EmailService	email;;
				
		@Before			@Before	publicpublic		voidvoid		beforebefore(())		{{
				MockitoAnnotations				MockitoAnnotations..initMocksinitMocks((thisthis))
				}}
}}
EmailService	emailService	EmailService	emailService	==	Mockito	Mockito..mockmock((EmailServiceEmailService..classclass));;
I N I T
	alexsotob		lordofthejars
MockitoMockito..whenwhen((emailemail..receiveBodyMessagesWithSubjectreceiveBodyMessagesWithSubject(("My	Subject""My	Subject"))))..thenReturnthenReturn(("This	is	My	Message""This	is	My	Message"))
SystemSystem..outout..printlnprintln((emailemail..receiveBodyMessagesWithSubjectreceiveBodyMessagesWithSubject(("Wrong	subject""Wrong	subject"))));;
SystemSystem..outout..printlnprintln((emailemail..receiveBodyMessagesWithSubjectreceiveBodyMessagesWithSubject(("My	Subject""My	Subject"))));;
SystemSystem..outout..printlnprintln((emailemail..receiveBodyMessagesWithSubjectreceiveBodyMessagesWithSubject(("My	Subject""My	Subject"))));;
E X A M P L E
	alexsotob		lordofthejars
MockitoMockito..whenwhen((emailemail..receiveBodyMessagesWithSubjectreceiveBodyMessagesWithSubject((MatchersMatchers..anyStringanyString(())))))..thenReturnthenReturn(("This	is	My	Message""This	is	My	Message"));;
SystemSystem..outout..printlnprintln((emailemail..receiveBodyMessagesWithSubjectreceiveBodyMessagesWithSubject(("Subject""Subject"))));;
E X A M P L E 
 W I T H 
 A N Y
	alexsotob		lordofthejars
InvoiceService	invoiceService	InvoiceService	invoiceService	==		newnew		InvoiceServiceInvoiceService((emailemail));;
invoiceServiceinvoiceService..sendsend(());;
MockitoMockito..verifyverify((emailemail,,	Mockito	Mockito..timestimes((11))))..sendMessagesendMessage((MatchersMatchers..anyStringanyString(()),,	Matchers	Matchers..anyStringanyString(())));;
E X A M P L E 
 V E R I F Y
	alexsotob		lordofthejars
InvoiceService	invoiceService	InvoiceService	invoiceService	==		newnew		InvoiceServiceInvoiceService((emailemail));;
invoiceServiceinvoiceService..sendsend(());;
ArgumentCaptor	argument	ArgumentCaptor	argument	==	ArgumentCaptor	ArgumentCaptor..forClassforClass((StringString..classclass));;
MockitoMockito..verifyverify((emailemail,,	Mockito	Mockito..timestimes((11))))..sendMessagesendMessage((argumentargument..capturecapture(()),,	Matchers	Matchers..anyStringanyString(())));;
AssertAssert..assertThatassertThat((argumentargument..getValuegetValue(()),,	CoreMatchers	CoreMatchers..startsWithstartsWith(("Invoice:""Invoice:"))));;
E X A M P L E 
 A R G U M E N T 
 C A P T O R
	alexsotob		lordofthejars
EmailService	email	EmailService	email	==		newnew		EmailServiceEmailService(());;
EmailService	spyEmail	EmailService	spyEmail	==	Mockito	Mockito..spyspy((emailemail));;
InvoiceService	invoiceService	InvoiceService	invoiceService	==		newnew		InvoiceServiceInvoiceService((spyEmailspyEmail));;
invoiceServiceinvoiceService..sendsend(());;
MockitoMockito..verifyverify((spyEmailspyEmail,,	Mockito	Mockito..timestimes((11))))..sendMessagesendMessage((argumentargument..capturecapture(()),,	Matchers	Matchers..anyStringanyString(())));;
E X A M P L E 
 S P Y
	alexsotob		lordofthejars
testCompile	testCompile	(('org.powermock:powermock-module-junit4:1.6.4''org.powermock:powermock-module-junit4:1.6.4'))
testCompile	testCompile	(('org.powermock:powermock-api-mockito:1.6.4''org.powermock:powermock-api-mockito:1.6.4'))
D E P E N D E N C I E S
	alexsotob		lordofthejars
@@RunWithRunWith((PowerMockRunnerPowerMockRunner..classclass))
@@PrepareForTestPrepareForTest((StaticClassStaticClass..classclass))
publicpublic		classclass		MyTestMyTest		{{
}}
P R E P A R E 
 F O R 
 M O C K I N G
	alexsotob		lordofthejars
PowerMockitoPowerMockito..mockStaticmockStatic((StaticClassStaticClass..classclass));;
MockitoMockito..whenwhen((StaticClassStaticClass..getValuegetValue(())))..thenReturnthenReturn(("Hello""Hello"));;
SystemSystem..outout..printlnprintln((StaticClassStaticClass..getValuegetValue(())));;
PowerMockitoPowerMockito..verifyStaticverifyStatic(());;
M O C K 
 S T A T I C
	alexsotob		lordofthejars
PowerMockitoPowerMockito..whenNewwhenNew((MyClassMyClass..classclass))
																												..withNoArgumentswithNoArguments(())
																												..thenThrowthenThrow((newnew		IOExceptionIOException(("error	message""error	message"))));;
																												
X	x	X	x	==		newnew		XX(());;
xx..createMyClasscreateMyClass(());;
PowerMockitoPowerMockito..verifyNewverifyNew((MyClassMyClass..classclass))..withNoArgumentswithNoArguments(());;
M O C K 
 C O N S T R U C T O R
	alexsotob		lordofthejars
Calculator	calculator	Calculator	calculator	==	PowerMockito	PowerMockito..spyspy((newnew		CalculatorCalculator(())));;
PowerMockitoPowerMockito..doReturndoReturn((truetrue))..whenwhen((calculatorcalculator,,		"isCalculated""isCalculated"));;
SystemSystem..outout..printlnprintln((calculatorcalculator..calculatecalculate(())));;
PowerMockitoPowerMockito..verifyPrivateverifyPrivate((calculatorcalculator))..invokeinvoke(("isCalculated""isCalculated"));;
P R I V A T E 
 M E T H O D
	alexsotob		lordofthejars
All	that	Glitters	is	not	Gold
B E 
 A W A R E
	alexsotob		lordofthejars
ifif		((SystemSystem..currentTimeMilliscurrentTimeMillis(())		>>	pojo	pojo..getStartDategetStartDate(())		++	expiration	expiration))		{{
}}
E X A M P L E 
 O F 
 S Y S T E M
	alexsotob		lordofthejars
javajava..timetime..Clock	clockClock	clock;;
publicpublic		voidvoid		XX(())		{{
				ifif		((eventDateeventDate..isBeforeisBefore((LocalDateLocalDate..nownow((clockclock))))		{{
				}}
}}
J A V A 
 8
	alexsotob		lordofthejars
TimeResolution	clockTimeResolution	clock;;
publicpublic		voidvoid		XX(())		{{
				ifif		((clockclock..nownow(())		>>	pojo	pojo..getStartDategetStartDate(())		++	expiration	expiration))		{{
				}}
}}
J A V A
	alexsotob		lordofthejars
S T U B S
	alexsotob		lordofthejars
S T U B S
Canned
answers
to
calls
	alexsotob		lordofthejars
S T U B S
Canned
answers
to
calls
State
Verification
	alexsotob		lordofthejars
publicpublic		classclass		EmailServiceStubEmailServiceStub		implementsimplements		EmailServiceEmailService		{{
				privateprivate	List	emails		List	emails	==		newnew		ArrayListArrayList<<>>(());;
				
				publicpublic		voidvoid		sendMessagesendMessage((String	subjectString	subject,,	String	body	String	body))		{{
								thisthis..emailsemails..addadd((newnew		EmailEmail((subjectsubject,,	body	body))));;
				}}
				
				publicpublic	String		String	receiveBodyMessagesWithSubjectreceiveBodyMessagesWithSubject((String	subjectString	subject))		{{
								//	...//	...
				}}
}}
E M A I L 
 S E R V I C E
	alexsotob		lordofthejars
T H E 
 G O O D 
 A N D 
T H E 
 B A D
Fast
	alexsotob		lordofthejars
T H E 
 G O O D 
 A N D 
T H E 
 B A D
Fast
Easy
to
write
	alexsotob		lordofthejars
T H E 
 G O O D 
 A N D 
T H E 
 B A D
Fast
Easy
to
write
Versatile
	alexsotob		lordofthejars
T H E 
 G O O D 
 A N D 
T H E 
 B A D
Fast
Easy
to
write
Versatile
Reimplementing
Business
	alexsotob		lordofthejars
T H E 
 G O O D 
 A N D 
T H E 
 B A D
Fast
Easy
to
write
Versatile
Reimplementing
Business
Logic
is
outside
test
	alexsotob		lordofthejars
T H E 
 G O O D 
 A N D 
T H E 
 B A D
Fast
Easy
to
write
Versatile
Reimplementing
Business
Logic
is
outside
test
State
	alexsotob		lordofthejars
	alexsotob		lordofthejars
@Rule@Rule
publicpublic	WireMockRule	wireMockRule		WireMockRule	wireMockRule	==		newnew		WireMockRuleWireMockRule((80898089));;
stubForstubFor((getget((urlEqualTourlEqualTo(("/planets/""/planets/"))))
								..willReturnwillReturn((aResponseaResponse(())
																								..withHeaderwithHeader(("Content-Type""Content-Type",,		"application/json""application/json"))
																								..withBodywithBody((FilesFiles..readAllBytesreadAllBytes((configFileconfigFile..toPathtoPath(())))))))
));;
clientclient..targettarget(("http://localhost:8089/""http://localhost:8089/"))..pathpath(("planets/""planets/"));;
W I R E M O C K
	alexsotob		lordofthejars
F A K E S
	alexsotob		lordofthejars
F A K E S
Working
implementations
	alexsotob		lordofthejars
F A K E S
Working
implementations
With
shortcuts
	alexsotob		lordofthejars
	alexsotob		lordofthejars
	alexsotob		lordofthejars
	alexsotob		lordofthejars
T H E 
 G O O D 
 A N D 
T H E 
 B A D
Almost
real
	alexsotob		lordofthejars
T H E 
 G O O D 
 A N D 
T H E 
 B A D
Almost
real
Test
full
stack
	alexsotob		lordofthejars
T H E 
 G O O D 
 A N D 
T H E 
 B A D
Almost
real
Test
full
stack
Slow
	alexsotob		lordofthejars
T H E 
 G O O D 
 A N D 
T H E 
 B A D
Almost
real
Test
full
stack
Slow
Learn
New
Tech
	alexsotob		lordofthejars
T H E 
 G O O D 
 A N D 
T H E 
 B A D
Almost
real
Test
full
stack
Slow
Learn
New
Tech
Different
Behaviour
	alexsotob		lordofthejars
M O C K I N G 
 2 . 0
	alexsotob		lordofthejars
	alexsotob		lordofthejars
testCompile	testCompile	(('org.jboss.byteman:byteman-bmunit:3.0.3''org.jboss.byteman:byteman-bmunit:3.0.3'))		{{
		exclude	group		exclude	group::		'org.testng''org.testng'
}}
B Y T E M A N
	alexsotob		lordofthejars
publicpublic		WebWriterWebWriter((String	filenameString	filename))		{{
				thisthis..filename	filename	==	filename	filename;;
				
}}
publicpublic	PrintStream		PrintStream	openFileopenFile(())		{{
		File	file			File	file	==		newnew		FileFile((filenamefilename));;
				trytry		{{
				FileOutputStream	fos					FileOutputStream	fos	==		newnew		FileOutputStreamFileOutputStream((filefile));;
				PrintStream	ps					PrintStream	ps	==		newnew		PrintStreamPrintStream((fosfos,,		truetrue));;
								returnreturn	ps	ps;;
				}}		catchcatch		((FileNotFoundExceptionFileNotFoundException	e	e))		{{
				System				System..outout..printlnprintln(("Unable	to	open	file	""Unable	to	open	file	"		++	file	file..getNamegetName(())));;
				System				System..outout..printlnprintln((ee));;
								returnreturn		nullnull;;
				}}
}}
B Y T E M A N
	alexsotob		lordofthejars
@@RunWithRunWith((orgorg..jbossjboss..bytemanbyteman..contribcontrib..bmunitbmunit..BMUnitRunnerBMUnitRunner..classclass))
publicpublic		classclass		TestTest		{{
		@Test		@Test
		@		@BMRuleBMRule((name	name	==		"handle	file	not	found""handle	file	not	found",,
				targetClass					targetClass	==		"java.io.FileOutputStream""java.io.FileOutputStream",,
				targetMethod					targetMethod	==		"(File)""(File)",,
				action					action	==		"throw	new	FileNotFoundException(	"Ha	ha	Byteman	fooled	you	again!"	)""throw	new	FileNotFoundException(	"Ha	ha	Byteman	fooled	you	again!"	)"
				))
				publicpublic		voidvoid		handleFileNotFoundhandleFileNotFound(())	throws	FileNotFoundException		throws	FileNotFoundException	{{
				System				System..outout..printlnprintln(("--------	handleFileNotFound	---------""--------	handleFileNotFound	---------"));;
				WebWriter	writer					WebWriter	writer	==		newnew		WebWriterWebWriter(("foo.html""foo.html",,		"Andrew""Andrew"));;
				PrintStream	ps					PrintStream	ps	==	writer	writer..openFileopenFile(());;
				Assert				Assert..assertTrueassertTrue((ps	ps	====		nullnull));;
				System				System..outout..printlnprintln(("--------	handleFileNotFound	---------n""--------	handleFileNotFound	---------n"));;
				}}
}}
B Y T E M A N
	alexsotob		lordofthejars
D O C K E R 
 A S 
T E S T I N G 
 T O O L
	alexsotob		lordofthejars
	alexsotob		lordofthejars
Pipeline	Plugin
C O N T I N U O U S
I N T E G R A T I O N 
 A S 
 C O D E
	alexsotob		lordofthejars
	alexsotob		lordofthejars
stage	stage	'compileAndUnit''compileAndUnit'
node	node	{{
								git	branch								git	branch::		'master''master',,	url	url::		'https://github.com/lordofthejars/starwars.git''https://github.com/lordofthejars/starwars.git'
								gradle									gradle	'clean	test''clean	test'
								stash	excludes								stash	excludes::		'build/''build/',,	includes	includes::		'**''**',,	name	name::		'source''source'
								stash	includes								stash	includes::	'build	'build//jacocojacoco/*.exec',	name:	'unitCodeCoverage'/*.exec',	name:	'unitCodeCoverage'
								step([$class:	'JUnitResultArchiver',	testResults:	'**/								step([$class:	'JUnitResultArchiver',	testResults:	'**/buildbuild//testtest--resultsresults//**..xml'xml']]))
}}
stage	stage	'codeQuality''codeQuality'
parallel	parallel	'pmd''pmd'		::		{{
				node					node	{{
								unstash									unstash	'source''source'
								gradle									gradle	'pmdMain''pmdMain'
																stepstep(([[$$classclass::		'PmdPublisher''PmdPublisher',,	pattern	pattern::		'build/reports/pmd/*.xml''build/reports/pmd/*.xml']]))
								}}
}},,		'jacoco''jacoco'::		{{
				node					node	{{
								unstash									unstash	'source''source'
								unstash									unstash	'unitCodeCoverage''unitCodeCoverage'
								gradle									gradle	'jacocoTestReport''jacocoTestReport'
								}}
}}
J E N K I N S F I L E 
 ( 1 / 2 )
	alexsotob		lordofthejars
stage	stage	'assemble-binaries''assemble-binaries'
nodenode(('linux''linux'))		{{
				unstash					unstash	'source''source'
								withEnvwithEnv(([["SOURCE_BUILD_NUMBER=${env.BUILD_NUMBER}""SOURCE_BUILD_NUMBER=${env.BUILD_NUMBER}"]]))		{{
								gradle									gradle	'assemble''assemble'
								}}
}}
input	messageinput	message::		"Deploy	Application	to	QA	?""Deploy	Application	to	QA	?"
stage	namestage	name::		'Deploy	to	QA''Deploy	to	QA',,	concurrency	concurrency::		11
node	node	{{
				echo					echo	"Application	Deployed	to	QA.""Application	Deployed	to	QA."
}}
J E N K I N S F I L E 
 ( 2 / 2 )
	alexsotob		lordofthejars
	alexsotob		lordofthejars
L E T ' S 
 W I N D 

D O W N
	alexsotob		lordofthejars
W H A T 
 Y O U 
 H A V E 
 S E E N
Unit
tests
should
be
FIRST
	alexsotob		lordofthejars
W H A T 
 Y O U 
 H A V E 
 S E E N
Unit
tests
should
be
FIRST
Mock,
Stubs
and
Fakes
	alexsotob		lordofthejars
W H A T 
 Y O U 
 H A V E 
 S E E N
Unit
tests
should
be
FIRST
Mock,
Stubs
and
Fakes
PowerMock
as
Design
Warning
	alexsotob		lordofthejars
W H A T 
 Y O U 
 H A V E 
 S E E N
Unit
tests
should
be
FIRST
Mock,
Stubs
and
Fakes
PowerMock
as
Design
Warning
Docker
as
Testing
Tool
	alexsotob		lordofthejars
W H A T 
 Y O U 
 H A V E 
 S E E N
Unit
tests
should
be
FIRST
Mock,
Stubs
and
Fakes
PowerMock
as
Design
Warning
Docker
as
Testing
Tool
Jenkins
is
not
static
anymore
	alexsotob		lordofthejars
	alexsotob		lordofthejars
Q U E S T I O N S
	alexsotob		lordofthejars

http://lordofthejars.github.io/mock-stub-fake/

asotobu@gmail.com
	alexsotob		lordofthejars
H T T P S : / / G I T H U B . C O M / L O R D O F T H E J A R S / S T A R W A R S
H T T P : / / S I T E . M O C K I T O . O R G /
H T T P S : / / G I T H U B . C O M / J A Y W A Y / P O W E R M O C K
H T T P : / / W I R E M O C K . O R G /
H T T P : / / A R Q U I L L I A N . O R G /
H T T P : / / B Y T E M A N . J B O S S . O R G /
H T T P S : / / G I T H U B . C O M / J E N K I N S C I / W O R K F L O W - P L U G I N

More Related Content

What's hot

JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys
JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys
JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys PROIDEA
 
Ankara jug mayıs 2013 sunumu
Ankara jug mayıs 2013 sunumuAnkara jug mayıs 2013 sunumu
Ankara jug mayıs 2013 sunumuAnkara JUG
 
Baremetal deployment scale
Baremetal deployment scaleBaremetal deployment scale
Baremetal deployment scalebaremetal
 
Baremetal deployment
Baremetal deploymentBaremetal deployment
Baremetal deploymentbaremetal
 
GitGot: The Swiss Army Chainsaw of Git Repo Management
GitGot: The Swiss Army Chainsaw of Git Repo ManagementGitGot: The Swiss Army Chainsaw of Git Repo Management
GitGot: The Swiss Army Chainsaw of Git Repo ManagementJohn Anderson
 
Effective codereview | Dave Liddament | CODEiD
Effective codereview | Dave Liddament | CODEiDEffective codereview | Dave Liddament | CODEiD
Effective codereview | Dave Liddament | CODEiDCODEiD PHP Community
 
My Notes from https://www.codeschool.com/courses/git-real
My Notes from  https://www.codeschool.com/courses/git-realMy Notes from  https://www.codeschool.com/courses/git-real
My Notes from https://www.codeschool.com/courses/git-realEneldo Serrata
 
Graduating to Jenkins CI for Ruby(-on-Rails) Teams
Graduating to Jenkins CI for Ruby(-on-Rails) TeamsGraduating to Jenkins CI for Ruby(-on-Rails) Teams
Graduating to Jenkins CI for Ruby(-on-Rails) TeamsDaniel Doubrovkine
 
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)Bram Adams
 
JDO 2019: Serverless Hype Driven Development - Grzegorz Piotrowski
JDO 2019: Serverless Hype Driven Development - Grzegorz Piotrowski JDO 2019: Serverless Hype Driven Development - Grzegorz Piotrowski
JDO 2019: Serverless Hype Driven Development - Grzegorz Piotrowski PROIDEA
 
Monitoring using Sensu
Monitoring using SensuMonitoring using Sensu
Monitoring using Sensuripienaar
 
Practical git for developers
Practical git for developersPractical git for developers
Practical git for developersWim Godden
 
GoCracow #5 Bartlomiej klimczak - GoBDD
GoCracow #5 Bartlomiej klimczak - GoBDDGoCracow #5 Bartlomiej klimczak - GoBDD
GoCracow #5 Bartlomiej klimczak - GoBDDBartłomiej Kiełbasa
 
Chaos Engineering on Microservices - 윤석찬, AWS 테크에반젤리스트
Chaos Engineering on Microservices - 윤석찬, AWS 테크에반젤리스트 Chaos Engineering on Microservices - 윤석찬, AWS 테크에반젤리스트
Chaos Engineering on Microservices - 윤석찬, AWS 테크에반젤리스트 Channy Yun
 

What's hot (20)

JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys
JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys
JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys
 
Ankara jug mayıs 2013 sunumu
Ankara jug mayıs 2013 sunumuAnkara jug mayıs 2013 sunumu
Ankara jug mayıs 2013 sunumu
 
Git::Hooks
Git::HooksGit::Hooks
Git::Hooks
 
rioinfo2012
rioinfo2012rioinfo2012
rioinfo2012
 
Baremetal deployment scale
Baremetal deployment scaleBaremetal deployment scale
Baremetal deployment scale
 
Baremetal deployment
Baremetal deploymentBaremetal deployment
Baremetal deployment
 
GitGot: The Swiss Army Chainsaw of Git Repo Management
GitGot: The Swiss Army Chainsaw of Git Repo ManagementGitGot: The Swiss Army Chainsaw of Git Repo Management
GitGot: The Swiss Army Chainsaw of Git Repo Management
 
Effective codereview | Dave Liddament | CODEiD
Effective codereview | Dave Liddament | CODEiDEffective codereview | Dave Liddament | CODEiD
Effective codereview | Dave Liddament | CODEiD
 
Meteor WWNRW Intro
Meteor WWNRW IntroMeteor WWNRW Intro
Meteor WWNRW Intro
 
My Notes from https://www.codeschool.com/courses/git-real
My Notes from  https://www.codeschool.com/courses/git-realMy Notes from  https://www.codeschool.com/courses/git-real
My Notes from https://www.codeschool.com/courses/git-real
 
Loading...git
Loading...gitLoading...git
Loading...git
 
Graduating to Jenkins CI for Ruby(-on-Rails) Teams
Graduating to Jenkins CI for Ruby(-on-Rails) TeamsGraduating to Jenkins CI for Ruby(-on-Rails) Teams
Graduating to Jenkins CI for Ruby(-on-Rails) Teams
 
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
 
JDO 2019: Serverless Hype Driven Development - Grzegorz Piotrowski
JDO 2019: Serverless Hype Driven Development - Grzegorz Piotrowski JDO 2019: Serverless Hype Driven Development - Grzegorz Piotrowski
JDO 2019: Serverless Hype Driven Development - Grzegorz Piotrowski
 
Git SCM
Git SCMGit SCM
Git SCM
 
Cooking with Chef
Cooking with ChefCooking with Chef
Cooking with Chef
 
Monitoring using Sensu
Monitoring using SensuMonitoring using Sensu
Monitoring using Sensu
 
Practical git for developers
Practical git for developersPractical git for developers
Practical git for developers
 
GoCracow #5 Bartlomiej klimczak - GoBDD
GoCracow #5 Bartlomiej klimczak - GoBDDGoCracow #5 Bartlomiej klimczak - GoBDD
GoCracow #5 Bartlomiej klimczak - GoBDD
 
Chaos Engineering on Microservices - 윤석찬, AWS 테크에반젤리스트
Chaos Engineering on Microservices - 윤석찬, AWS 테크에반젤리스트 Chaos Engineering on Microservices - 윤석찬, AWS 테크에반젤리스트
Chaos Engineering on Microservices - 윤석찬, AWS 테크에반젤리스트
 

Similar to Mocks, Stubs and Fakes. ¿What Else?

iOS 개발자의 Flutter 체험기
iOS 개발자의 Flutter 체험기iOS 개발자의 Flutter 체험기
iOS 개발자의 Flutter 체험기Wanbok Choi
 
Dr Strangler and Mr Hype - Strangler pattern w praktyce
Dr Strangler and Mr Hype - Strangler pattern w praktyceDr Strangler and Mr Hype - Strangler pattern w praktyce
Dr Strangler and Mr Hype - Strangler pattern w praktyceMichał Kurzeja
 
Hello, Is That FreeSWITCH? Then We're Coming to Check You!
Hello, Is That FreeSWITCH? Then We're Coming to Check You!Hello, Is That FreeSWITCH? Then We're Coming to Check You!
Hello, Is That FreeSWITCH? Then We're Coming to Check You!PVS-Studio
 
Aaron Bedra - Effective Software Security Teams
Aaron Bedra - Effective Software Security TeamsAaron Bedra - Effective Software Security Teams
Aaron Bedra - Effective Software Security Teamscentralohioissa
 
PostgreSQL Day italy 2016 Unit Test
PostgreSQL Day italy 2016 Unit TestPostgreSQL Day italy 2016 Unit Test
PostgreSQL Day italy 2016 Unit TestAndrea Adami
 
A Journey with React
A Journey with ReactA Journey with React
A Journey with ReactFITC
 
Elixir Elevated: The Ups and Downs of OTP at ElixirConf2014
Elixir Elevated: The Ups and Downs of OTP at ElixirConf2014Elixir Elevated: The Ups and Downs of OTP at ElixirConf2014
Elixir Elevated: The Ups and Downs of OTP at ElixirConf2014Greg Vaughn
 
Controlling Technical Debt with Continuous Delivery
Controlling Technical Debt with Continuous DeliveryControlling Technical Debt with Continuous Delivery
Controlling Technical Debt with Continuous Deliverywalkmod
 
From Node.js to Design Patterns - BuildPiper
From Node.js to Design Patterns - BuildPiperFrom Node.js to Design Patterns - BuildPiper
From Node.js to Design Patterns - BuildPiperLuciano Mammino
 
Mattia Manzati - Real-World MobX Project Architecture - Codemotion Rome 2019
Mattia Manzati - Real-World MobX Project Architecture - Codemotion Rome 2019Mattia Manzati - Real-World MobX Project Architecture - Codemotion Rome 2019
Mattia Manzati - Real-World MobX Project Architecture - Codemotion Rome 2019Codemotion
 
Formal Verification of Transactional Interaction Contract
Formal Verification of Transactional Interaction ContractFormal Verification of Transactional Interaction Contract
Formal Verification of Transactional Interaction ContractGera Shegalov
 
JSARToolKit / LiveChromaKey / LivePointers - Next gen of AR
JSARToolKit / LiveChromaKey / LivePointers - Next gen of ARJSARToolKit / LiveChromaKey / LivePointers - Next gen of AR
JSARToolKit / LiveChromaKey / LivePointers - Next gen of ARYusuke Kawasaki
 
Strangler Pattern in practice @PHPers Day 2019
Strangler Pattern in practice @PHPers Day 2019Strangler Pattern in practice @PHPers Day 2019
Strangler Pattern in practice @PHPers Day 2019Michał Kurzeja
 
Risking Everything with Akka Streams
Risking Everything with Akka StreamsRisking Everything with Akka Streams
Risking Everything with Akka Streamsjohofer
 
Scala as a Declarative Language
Scala as a Declarative LanguageScala as a Declarative Language
Scala as a Declarative Languagevsssuresh
 
Programming Languages and their influence in Thinking
Programming Languages and their influence in ThinkingProgramming Languages and their influence in Thinking
Programming Languages and their influence in ThinkingHernan Wilkinson
 

Similar to Mocks, Stubs and Fakes. ¿What Else? (20)

Logging in code
Logging in codeLogging in code
Logging in code
 
iOS 개발자의 Flutter 체험기
iOS 개발자의 Flutter 체험기iOS 개발자의 Flutter 체험기
iOS 개발자의 Flutter 체험기
 
CQRS + ES. Más allá del hexágono
CQRS + ES. Más allá del hexágonoCQRS + ES. Más allá del hexágono
CQRS + ES. Más allá del hexágono
 
Dr Strangler and Mr Hype - Strangler pattern w praktyce
Dr Strangler and Mr Hype - Strangler pattern w praktyceDr Strangler and Mr Hype - Strangler pattern w praktyce
Dr Strangler and Mr Hype - Strangler pattern w praktyce
 
Hello, Is That FreeSWITCH? Then We're Coming to Check You!
Hello, Is That FreeSWITCH? Then We're Coming to Check You!Hello, Is That FreeSWITCH? Then We're Coming to Check You!
Hello, Is That FreeSWITCH? Then We're Coming to Check You!
 
Aaron Bedra - Effective Software Security Teams
Aaron Bedra - Effective Software Security TeamsAaron Bedra - Effective Software Security Teams
Aaron Bedra - Effective Software Security Teams
 
PostgreSQL Day italy 2016 Unit Test
PostgreSQL Day italy 2016 Unit TestPostgreSQL Day italy 2016 Unit Test
PostgreSQL Day italy 2016 Unit Test
 
A Journey with React
A Journey with ReactA Journey with React
A Journey with React
 
Elixir Elevated: The Ups and Downs of OTP at ElixirConf2014
Elixir Elevated: The Ups and Downs of OTP at ElixirConf2014Elixir Elevated: The Ups and Downs of OTP at ElixirConf2014
Elixir Elevated: The Ups and Downs of OTP at ElixirConf2014
 
Controlling Technical Debt with Continuous Delivery
Controlling Technical Debt with Continuous DeliveryControlling Technical Debt with Continuous Delivery
Controlling Technical Debt with Continuous Delivery
 
From Node.js to Design Patterns - BuildPiper
From Node.js to Design Patterns - BuildPiperFrom Node.js to Design Patterns - BuildPiper
From Node.js to Design Patterns - BuildPiper
 
Mattia Manzati - Real-World MobX Project Architecture - Codemotion Rome 2019
Mattia Manzati - Real-World MobX Project Architecture - Codemotion Rome 2019Mattia Manzati - Real-World MobX Project Architecture - Codemotion Rome 2019
Mattia Manzati - Real-World MobX Project Architecture - Codemotion Rome 2019
 
Formal Verification of Transactional Interaction Contract
Formal Verification of Transactional Interaction ContractFormal Verification of Transactional Interaction Contract
Formal Verification of Transactional Interaction Contract
 
JSARToolKit / LiveChromaKey / LivePointers - Next gen of AR
JSARToolKit / LiveChromaKey / LivePointers - Next gen of ARJSARToolKit / LiveChromaKey / LivePointers - Next gen of AR
JSARToolKit / LiveChromaKey / LivePointers - Next gen of AR
 
Strangler Pattern in practice @PHPers Day 2019
Strangler Pattern in practice @PHPers Day 2019Strangler Pattern in practice @PHPers Day 2019
Strangler Pattern in practice @PHPers Day 2019
 
Risking Everything with Akka Streams
Risking Everything with Akka StreamsRisking Everything with Akka Streams
Risking Everything with Akka Streams
 
Kotlin Coroutines and Rx
Kotlin Coroutines and RxKotlin Coroutines and Rx
Kotlin Coroutines and Rx
 
Scala as a Declarative Language
Scala as a Declarative LanguageScala as a Declarative Language
Scala as a Declarative Language
 
Programming Languages and their influence in Thinking
Programming Languages and their influence in ThinkingProgramming Languages and their influence in Thinking
Programming Languages and their influence in Thinking
 
JavaScript 101
JavaScript 101JavaScript 101
JavaScript 101
 

More from Alex Soto

Kubernetes Native Java
Kubernetes Native JavaKubernetes Native Java
Kubernetes Native JavaAlex Soto
 
Reactive Programming for Real Use Cases
Reactive Programming for Real Use CasesReactive Programming for Real Use Cases
Reactive Programming for Real Use CasesAlex Soto
 
Chaos Engineering Kubernetes
Chaos Engineering KubernetesChaos Engineering Kubernetes
Chaos Engineering KubernetesAlex Soto
 
Chaos Engineering Kubernetes
Chaos Engineering KubernetesChaos Engineering Kubernetes
Chaos Engineering KubernetesAlex Soto
 
Microservices testing and automation
Microservices testing and automationMicroservices testing and automation
Microservices testing and automationAlex Soto
 
Testing in Production: From DevTestOops to DevTestOps
Testing in Production: From DevTestOops to DevTestOpsTesting in Production: From DevTestOops to DevTestOps
Testing in Production: From DevTestOops to DevTestOpsAlex Soto
 
Supersonic Subatomic Java
Supersonic Subatomic JavaSupersonic Subatomic Java
Supersonic Subatomic JavaAlex Soto
 
From DevTestOops to DevTestOps
From DevTestOops to DevTestOpsFrom DevTestOops to DevTestOps
From DevTestOops to DevTestOpsAlex Soto
 
Istio service mesh & pragmatic microservices architecture
Istio service mesh & pragmatic microservices architectureIstio service mesh & pragmatic microservices architecture
Istio service mesh & pragmatic microservices architectureAlex Soto
 
Zero Downtime Deployment in Microservices era
Zero Downtime Deployment in Microservices eraZero Downtime Deployment in Microservices era
Zero Downtime Deployment in Microservices eraAlex Soto
 
Service Mesh Patterns
Service Mesh PatternsService Mesh Patterns
Service Mesh PatternsAlex Soto
 
Supersonic, Subatomic Java
Supersonic, Subatomic JavaSupersonic, Subatomic Java
Supersonic, Subatomic JavaAlex Soto
 
Zero Downtime Deployment in Microservices era
Zero Downtime Deployment in Microservices eraZero Downtime Deployment in Microservices era
Zero Downtime Deployment in Microservices eraAlex Soto
 
Long Live and Prosper To Monolith
Long Live and Prosper To MonolithLong Live and Prosper To Monolith
Long Live and Prosper To MonolithAlex Soto
 
Sail in the cloud - An intro to Istio commit
Sail in the cloud - An intro to Istio commitSail in the cloud - An intro to Istio commit
Sail in the cloud - An intro to Istio commitAlex Soto
 
KubeBoot - Spring Boot deployment on Kubernetes
KubeBoot - Spring Boot deployment on KubernetesKubeBoot - Spring Boot deployment on Kubernetes
KubeBoot - Spring Boot deployment on KubernetesAlex Soto
 
Sail in the Cloud - An intro to Istio
Sail in the Cloud  - An intro to IstioSail in the Cloud  - An intro to Istio
Sail in the Cloud - An intro to IstioAlex Soto
 
Testing XXIst Century
Testing XXIst CenturyTesting XXIst Century
Testing XXIst CenturyAlex Soto
 
Arquillian Constellation
Arquillian ConstellationArquillian Constellation
Arquillian ConstellationAlex Soto
 
Testing for Unicorns
Testing for UnicornsTesting for Unicorns
Testing for UnicornsAlex Soto
 

More from Alex Soto (20)

Kubernetes Native Java
Kubernetes Native JavaKubernetes Native Java
Kubernetes Native Java
 
Reactive Programming for Real Use Cases
Reactive Programming for Real Use CasesReactive Programming for Real Use Cases
Reactive Programming for Real Use Cases
 
Chaos Engineering Kubernetes
Chaos Engineering KubernetesChaos Engineering Kubernetes
Chaos Engineering Kubernetes
 
Chaos Engineering Kubernetes
Chaos Engineering KubernetesChaos Engineering Kubernetes
Chaos Engineering Kubernetes
 
Microservices testing and automation
Microservices testing and automationMicroservices testing and automation
Microservices testing and automation
 
Testing in Production: From DevTestOops to DevTestOps
Testing in Production: From DevTestOops to DevTestOpsTesting in Production: From DevTestOops to DevTestOps
Testing in Production: From DevTestOops to DevTestOps
 
Supersonic Subatomic Java
Supersonic Subatomic JavaSupersonic Subatomic Java
Supersonic Subatomic Java
 
From DevTestOops to DevTestOps
From DevTestOops to DevTestOpsFrom DevTestOops to DevTestOps
From DevTestOops to DevTestOps
 
Istio service mesh & pragmatic microservices architecture
Istio service mesh & pragmatic microservices architectureIstio service mesh & pragmatic microservices architecture
Istio service mesh & pragmatic microservices architecture
 
Zero Downtime Deployment in Microservices era
Zero Downtime Deployment in Microservices eraZero Downtime Deployment in Microservices era
Zero Downtime Deployment in Microservices era
 
Service Mesh Patterns
Service Mesh PatternsService Mesh Patterns
Service Mesh Patterns
 
Supersonic, Subatomic Java
Supersonic, Subatomic JavaSupersonic, Subatomic Java
Supersonic, Subatomic Java
 
Zero Downtime Deployment in Microservices era
Zero Downtime Deployment in Microservices eraZero Downtime Deployment in Microservices era
Zero Downtime Deployment in Microservices era
 
Long Live and Prosper To Monolith
Long Live and Prosper To MonolithLong Live and Prosper To Monolith
Long Live and Prosper To Monolith
 
Sail in the cloud - An intro to Istio commit
Sail in the cloud - An intro to Istio commitSail in the cloud - An intro to Istio commit
Sail in the cloud - An intro to Istio commit
 
KubeBoot - Spring Boot deployment on Kubernetes
KubeBoot - Spring Boot deployment on KubernetesKubeBoot - Spring Boot deployment on Kubernetes
KubeBoot - Spring Boot deployment on Kubernetes
 
Sail in the Cloud - An intro to Istio
Sail in the Cloud  - An intro to IstioSail in the Cloud  - An intro to Istio
Sail in the Cloud - An intro to Istio
 
Testing XXIst Century
Testing XXIst CenturyTesting XXIst Century
Testing XXIst Century
 
Arquillian Constellation
Arquillian ConstellationArquillian Constellation
Arquillian Constellation
 
Testing for Unicorns
Testing for UnicornsTesting for Unicorns
Testing for Unicorns
 

Recently uploaded

GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptrcbcrtm
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 

Recently uploaded (20)

GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.ppt
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 

Mocks, Stubs and Fakes. ¿What Else?