SlideShare a Scribd company logo
What	is	TDD
• It's	a	development	technique	based	on	a	short	development
process
• It's	a	way	to	deeply	analyze	the	expected	behavior	of	a
software	
• It's	a	mean	to	improve	the	quality	of	the	source	code
• It's	a	practice	to	enhance	the	documentation	of	a	software
• It's	a	way	to	ensure	a	safer	way	to	change	the	software	design
TDD	and	Unit	Tests
Unit	tests	can	be	written	before	writing	the	code,	
after	the	code	has	been	written	or	during	the	development
• Unit	Testing	refers	to	what	you	are	testing,	TDD	to	when	you	are
testing
• Unit	Testing	means,	well,	testing	individual	units	of	behavior
The	D	in	the	Middle
• You	let	the	tests	drive	you
• The	tests	tell	you	what	to	do,	what	to	do	next,	what's	done
• The	tests	are	the	skeleton	of	the	API	design
TDD	Workflow
TDD	is	writing	a	test	which	will	fail,	then	writing	the	minimum
amount	of	code	required	to	make	it	run,	then	refactoring	the	code	to
make	it	clean
The	D	at	the	End
• It's	supposed	to	mean	development	but	originally	was	supposed
to	mean	design	
• Test	Driven	Design	is	the	discipline	of	using	Unit	Testing	to
design	the	software
• Working	on	a	better	design	it's	possible	to	improve	the	quality	of
the	software
Small	and	Testable
• Methods	and	functions	should	be	simple	in	order	to	be	testable
• Even	better,	the	code	needed	to	satisfy	a	test	is	usually	a	very
small	chunk	of	code
• As	a	result	the	public	API	are	simple	and	easy	to	maintain
Refactoring
Use	this	catalog	http://goo.gl/Fo9VzV	as	a	
reference	to	existing	refactoring	techniques	
• Restructuring	existing	code	altering	(or	improving)	its	internal
structure	
• Don't	change	its	external	behavior	(or	design)
• It	should	happen	only	when	the	all	tests	are	passing
Why	Refactoring?
• To	improve	the	performances
• To	clean	up	the	code
• To	improve	the	code	reusability		and	maintainability	
• To	improve	the	code	readability
• To	remove	duplicated	code
TDD	+	Refactoring
• TDD	is	not	mainly	a	testing	strategy,	but	a	design	strategy	
• Writing	tests	first	it's	possible	to	get	a	better	decoupled	design
• A	better	decoupled	design	is	easier	to	refactor	too
TDD	and	Bugs
• Never	trust	blindly	developer's	tests
• TDD	is	not	a	replacement	of	Quality	Assurance
• Tests	cannot	catch	all	the	bugs,	functional	testing	is	required
too
TDD	Takes	Too
Much	Time
• Let	developers	to	save	time	preventing	and	identifying
regression	issues
• Writing	failing	tests	first,	developers	will	pinpoint	the	root	of	the
problem	more	effectively	
• Small	problems	will	be	identified	faster
Too	Complex	to
Learn
• Not	so	much,	embracing	change	and	the	unknown	can	be
scaring	for	anyone
• Writing	tests	once	the	code	has	been	written	is	even	more
complex
• Writing	small	tests	before	you	avoid	to	test	a	huge	app	later	and
all	at	once
The	App	is	not
Designed
• Requiring	to	write	unit	tests	before	the	production	code
TDD	drives	to	a	better	task	focus
• Being	focused	on	a	specific	task	let	developers	to	better
understand	it
• A	deeper	focus	and	a	better	understanding	drive	to	a	better
design
Disadvantage	of
TDD
More	Coding
• TDD	means	it's	not	allowed	to	skip	the	tests	so	developers	have
to	write	more	code
• The	amount	of	code	to	maintain	is	b
Increased
Complexity	Using
Mocks,	DI	and	IoC
• Most	of	the	time	developers	have	to	create	mock	data	to	run
tests
• When	using	mocks	developers	start	to	apply	the	dependency
injection	(i.e.	DI)	pattern	
• In	order	to	use	complex	mocks	data	the	Inversion	of	Control
technique	is	ueused
Changing	Issues
• When	the	software	start	to	grow	up	a	change	impacts	also	a
great	number	of	tests
• Developers	need	more	time	to	address	changes
Pragmatic	TDD
Write	Valuable
Tests
• A	test	is	valuable	when	describe	a	condition	to	satisfy	based
upon	software	requirements
• Don't	write	tests	just	to	cover	all	the	source	code,	write	the	tests
following	a	strategy
Choose	the	Right
Tests
• Acceptance	tests
• Smoke	tests
• Integration	tests
• Performance	and	load	tests
Assertions
• Assertions	are	statements	that	perform	an	actual	check	on	the
software’s	output
• A	single	function	called	assert	is	enough	to	express	any	check
• TDD	libraries	have	many	assert	functions	for	specific	needs
(assertFalse,	assertEqual,s,	etc.)
• A	single	assert	should	be	used	in	each	test
• An	assert	failure	should	add	a	clear	message	to	the	test	logs
Test	Double
Objects	the	test	code	creates	and	passes	to	the	SUT	to	replace	real
dependencies:
• dummy,	object	never	used	but	needed	to	fill	some	required
parameter
• fake,	object	that	implements	the	required	functionality	in	a	way
useful	only	in	testing
• stub,	object	that	can	return	predefined	values	to	the	tested
software	
• mock,	object	that	expects	to	be	used	a	specific	number	of	times
returning	predefined	values
Integration	Testing
• A	mid-level	testing	activity	that	verifies	a	certain	set	of	modules
work	correctly	together	
• Integration	tests	are	like	unit	tests	without	using	test	doubles
for	some	dependencies
Fixture
• A	particular	environment	that	must	be	set	up	before	a	test	can
be	run
• It	generally	consists	of	setting	up	all	test	doubles	and
dependencies	for	the	tested	software
Source	&	Tests
Separation
Pick	the	First	Test
• Carefully	read	the	requirements	and	eventually	split	them	if
needed	
• Choose	a	requirement	and	write	a	list	of	tests	for	this
requirement
• Select	a	test	that	is	atomic	and	well	isolated
Write	the	Assertion
First
First	Time	Failure
• How	to	test	something	that	doesn't	exist?
• By	adding	methods	or	functions	to	test		developers	start	to
design	first	the	code
Why	is	Important?
• JavaScript	is	so	flexible	that	some	rules	help	to	improve	the
quality	of	the	code	
• Forces	developers	to	refactor	the	code	and	to	keep	the	functions
small	and	simple
• Helps	to	prevent	common	regressions	issues
• Is	a	way	to	bring	the	language	itself	to	a	more	enterprise	level	
Untestable
JavaScript
var	MyModule	=	(function(){				
				_privateFunc	=	function(){};								
				return	{															
								publicFunc:	_privateFunc								
				};
});
addEventListener('click',	myEventListener);
• Don't	include	all	the	code	in	a	closure	without	exposing	a	public
API
• Don't	use	anonymous	event	handlers,	use	instead	named
functions
Model	View
Presenter
Qunit
• Support	for	testing	asynchronous	code
• Non	standard	(and	non	intuitive)	syntax
• Eight	assertions	available	
• Well	integrated	with	jQuery	(actually	maintained	by	the	jQuery
team)
• Documented	API	http://api.qunitjs.com/
Phantom.js
• Command	Line	based
• Can	use	report	runners	that	get	tied	in	to	CI	environments	
• Support	for	screen	capture
• Support	for	testing	asynchronous	code
• Very	detailed	wiki	https://github.com/ariya/phantomjs/wiki
Buster.js
• Run	tests	from	browser	or	headless	with	PhantomJS	
• Supports	NodeJS	testing
• Don't	need	to	run	server/clients	on	development	computer	(no
need	for	IE)
• Supports	multiple	JavaScript	test	frameworks
Karma.js
• Run	tests	from	browser	or	headless	with	PhantomJS
• Option	to	launch,	capture,	and	automatically	shutdown	browsers
• Write	tests	xUnit	or	BDD	style
• Supports	multiple	JavaScript	test	frameworks
• Extend	it	to	wrap	other	test-frameworks	(Jasmine,	Mocha,	QUnit
built-in)
Even	More
• Mocha.js
• JsTestDriver
• YUI	Yeti
• Casper.js
• Etc.
Browserstack	and
TDD
• Integrated	with	Jenkins,	Bamboo	and	other	CI	tools
• Support	for	testing	tolls	like	Yeti,	TestSwarm,	BunyIP,	TestEm
Behavior	Driven
Development
• Help	the	developers	devising	the	system	identify	appropriate
tests	to	write
• Help	to	write	tests	that	reflect	the	behavior	desired	by	the
stakeholders
• Uses	a	"Ubiquitous	Language"	that	can	be	understood	by	both
the	developer	and	the	customer.
Differences
• BDD	begins	with	a	B	and	TDD	begins	with	a	T	(Mike	Brown)
• BDD	provides	a	new	vocabulary	and	thus	focus	for	writing	a	unit
test
• Basically	it	is	a	feature	driven	approach	to	TDD
Jasmine
Ready	to	meet	a	super	cool	lady?	:)
WAT	?!?
It	is	a	behavior-driven	testing	framework	for	JavaScript	programming
language.	It’s	a	bunch	of	tools	that	you	can	use	to	test	JavaScript
code
• Tests	should	be	sentences
• Tests	should	be	very	small
Sample	Test
describe("Hello	world",	function()	{	
				it("says	hello",	function(){	
								expect(helloWorld()).toEqual("Hello	world!");
				});	
});
Suite
• describe("	Hello	world"...	is	what	is	called	a	suite
• The	name	of	the	suite	(“	Hello	world”	in	this	case)	defines	a
component	of	your	application
Spec
• Inside	of	that	suite	(technically,	inside	of	an	anonymous
function),	is	the	it()	block	
• This	is	called	a	specification,	or	a	spec	for	short
Matcher
• In	this	case,	you’re	testing	if	helloWorld()	does	indeed	return
"Hello	world!"	
• This	check	is	called	a	matcher
toBeDefined
&
toBeUndefined
toBeTruthy	
&
	toBeFalsy
toBeLessThan	
&
toBeGreatherThan
toBe
toEqual
toMatch
toBeCloseTo
toBeNaN
toBeNull
toContain
toThrow
Expectations
Custom	Matchers
beforeEach(function	()	{						this.addMatchers({		
								theNameOfTheMatcher:	function(){	
											//	The	code	to	be	executed	by	the	matcher				
								}
			});		
});
beforeach	&
aftereach
They	allow	you	to	execute	some	code	before	and	after	each	spec
Async	Calls
it("	does	an	asynchronous	call",	function()	{	
				exampleAsyncCall(	function(	response)	{	
								expect(	response).toContain("	something	expected");	
								done();	
				});	
});
Even	more...
Refer	to	the	online	wiki	https://github.com/pivotal/jasmine/wiki
• A	JavaScript	task	runner
• A	project	scaffolding	tool
• Use	it	to	automate	common	task	execution	execution
• Configurable	plugins	such	as	require.js,	handlebar,	jasmine,	etc.
Using	Grunt
• First	of	all	install	grunt	command	line	tool	npm	install	-g	grunt-
cli
• Most	grunt-init	templates	will	automatically	create	a
package.json	file
• Install	grunt	an	the	plugins	npm	install	grunt	--save-dev
• Install	the	jasmine	plugin	npm	install	grunt-contrib-jasmine	--
save-dev
The	Grunt.js	File
Default	Project
Run	and	Compile
The	benefits
Questions	&
Answers
Here	a	slide	to	help	me	to	break	down	the	distance	between	me	and
the	audience

More Related Content

What's hot

Kku2011
Kku2011Kku2011
An Evaluation of Pair Programming Practice
An Evaluation of Pair Programming PracticeAn Evaluation of Pair Programming Practice
An Evaluation of Pair Programming Practice
Kranthi Lakum
 
Audrys Kažukauskas - Introduction into Extreme Programming
Audrys Kažukauskas - Introduction into Extreme ProgrammingAudrys Kažukauskas - Introduction into Extreme Programming
Audrys Kažukauskas - Introduction into Extreme Programming
Agile Lietuva
 
Kanban like another approach for gaming projects, Катерина Гаськова
Kanban like another approach for gaming projects, Катерина ГаськоваKanban like another approach for gaming projects, Катерина Гаськова
Kanban like another approach for gaming projects, Катерина Гаськова
Sigma Software
 
Introduction to Scrum
Introduction to ScrumIntroduction to Scrum
Introduction to Scrum
Fahad Alshareef
 
Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening
Maven Logix
 
Enter the mind of an Agile Developer
Enter the mind of an Agile DeveloperEnter the mind of an Agile Developer
Enter the mind of an Agile Developer
BSGAfrica
 
Agile Practices - eXtreme Programming
Agile Practices - eXtreme ProgrammingAgile Practices - eXtreme Programming
Agile Practices - eXtreme Programming
Aniruddha Chakrabarti
 
Testing strategy for agile projects updated
Testing strategy for agile projects updatedTesting strategy for agile projects updated
Testing strategy for agile projects updated
Tharinda Liyanage
 
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019Joe Cisar - Everything I Know About TDD - Agile Midwest 2019
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019
Jason Tice
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
Knoldus Inc.
 
Acceptance Test Driven Development
Acceptance Test Driven DevelopmentAcceptance Test Driven Development
Acceptance Test Driven Development
Mike Douglas
 
Agile software development and extreme Programming
Agile software development and extreme Programming  Agile software development and extreme Programming
Agile software development and extreme Programming
Fatemeh Karimi
 
Xp exterme-programming-model
Xp exterme-programming-modelXp exterme-programming-model
Xp exterme-programming-modelAli MasudianPour
 
Software Design
Software DesignSoftware Design
Software Design
Ahmed Misbah
 
Engineering practices within scrum
Engineering practices within scrumEngineering practices within scrum
Engineering practices within scrum
SoftServe
 
Agile Software Development with XP
Agile Software Development with XPAgile Software Development with XP
Agile Software Development with XP
Vashira Ravipanich
 
Agile testing principles and practices - Anil Karade
Agile testing principles and practices - Anil KaradeAgile testing principles and practices - Anil Karade
Agile testing principles and practices - Anil Karade
IndicThreads
 
Bringing CD to the DoD
Bringing CD to the DoDBringing CD to the DoD
Bringing CD to the DoD
Gene Gotimer
 
Software Testing with Agile Requirements Practices
Software Testing with Agile Requirements Practices Software Testing with Agile Requirements Practices
Software Testing with Agile Requirements Practices A B M Moniruzzaman
 

What's hot (20)

Kku2011
Kku2011Kku2011
Kku2011
 
An Evaluation of Pair Programming Practice
An Evaluation of Pair Programming PracticeAn Evaluation of Pair Programming Practice
An Evaluation of Pair Programming Practice
 
Audrys Kažukauskas - Introduction into Extreme Programming
Audrys Kažukauskas - Introduction into Extreme ProgrammingAudrys Kažukauskas - Introduction into Extreme Programming
Audrys Kažukauskas - Introduction into Extreme Programming
 
Kanban like another approach for gaming projects, Катерина Гаськова
Kanban like another approach for gaming projects, Катерина ГаськоваKanban like another approach for gaming projects, Катерина Гаськова
Kanban like another approach for gaming projects, Катерина Гаськова
 
Introduction to Scrum
Introduction to ScrumIntroduction to Scrum
Introduction to Scrum
 
Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening
 
Enter the mind of an Agile Developer
Enter the mind of an Agile DeveloperEnter the mind of an Agile Developer
Enter the mind of an Agile Developer
 
Agile Practices - eXtreme Programming
Agile Practices - eXtreme ProgrammingAgile Practices - eXtreme Programming
Agile Practices - eXtreme Programming
 
Testing strategy for agile projects updated
Testing strategy for agile projects updatedTesting strategy for agile projects updated
Testing strategy for agile projects updated
 
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019Joe Cisar - Everything I Know About TDD - Agile Midwest 2019
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
Acceptance Test Driven Development
Acceptance Test Driven DevelopmentAcceptance Test Driven Development
Acceptance Test Driven Development
 
Agile software development and extreme Programming
Agile software development and extreme Programming  Agile software development and extreme Programming
Agile software development and extreme Programming
 
Xp exterme-programming-model
Xp exterme-programming-modelXp exterme-programming-model
Xp exterme-programming-model
 
Software Design
Software DesignSoftware Design
Software Design
 
Engineering practices within scrum
Engineering practices within scrumEngineering practices within scrum
Engineering practices within scrum
 
Agile Software Development with XP
Agile Software Development with XPAgile Software Development with XP
Agile Software Development with XP
 
Agile testing principles and practices - Anil Karade
Agile testing principles and practices - Anil KaradeAgile testing principles and practices - Anil Karade
Agile testing principles and practices - Anil Karade
 
Bringing CD to the DoD
Bringing CD to the DoDBringing CD to the DoD
Bringing CD to the DoD
 
Software Testing with Agile Requirements Practices
Software Testing with Agile Requirements Practices Software Testing with Agile Requirements Practices
Software Testing with Agile Requirements Practices
 

Similar to TDD and PhoneGap

{10.0} Test Driven Development.pptx
{10.0} Test Driven Development.pptx{10.0} Test Driven Development.pptx
{10.0} Test Driven Development.pptx
AmalEldhose2
 
Tdd and bdd
Tdd and bddTdd and bdd
Tdd and bdd
MohamedSubhiBouchi
 
Test Driven Development - a Practitioner’s Perspective
Test Driven Development - a Practitioner’s PerspectiveTest Driven Development - a Practitioner’s Perspective
Test Driven Development - a Practitioner’s Perspective
Malinda Kapuruge
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
Md. Enamul Haque Chowdhury
 
Becoming a better programmer - unit testing
Becoming a better programmer - unit testingBecoming a better programmer - unit testing
Becoming a better programmer - unit testingDuy Tan Geek
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
dcsunu
 
Tdd practices
Tdd practicesTdd practices
Tdd practices
axykim00
 
Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1
Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1
Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1gururguru01
 
Developers Best Practices
Developers Best PracticesDevelopers Best Practices
Developers Best Practices
aqib javaid
 
Test driven developement
Test driven developementTest driven developement
Test driven developementBhavik Panchal
 
Pair programming and introduction to TDD
Pair programming and introduction to TDDPair programming and introduction to TDD
Pair programming and introduction to TDD
Arati Joshi
 
Test-Driven Development Reference Card
Test-Driven Development Reference CardTest-Driven Development Reference Card
Test-Driven Development Reference CardSeapine Software
 
Understanding TDD - theory, practice, techniques and tips.
Understanding TDD - theory, practice, techniques and tips.Understanding TDD - theory, practice, techniques and tips.
Understanding TDD - theory, practice, techniques and tips.
Malinda Kapuruge
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven developmentEinar Ingebrigtsen
 
TDD in Agile
TDD in AgileTDD in Agile
TDD in Agile
Atish Narlawar
 
Clean Code, Code Refactoring & TDD
Clean Code, Code Refactoring & TDDClean Code, Code Refactoring & TDD
Clean Code, Code Refactoring & TDD
Mustafa Dağdelen
 
Agile Software Development Techniques for Daily Use
Agile Software Development Techniques for Daily UseAgile Software Development Techniques for Daily Use
Agile Software Development Techniques for Daily Use
Hristo Iliev
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Developmentbhochhi
 
Tdd
TddTdd
Coding - SDLC Model
Coding - SDLC ModelCoding - SDLC Model

Similar to TDD and PhoneGap (20)

{10.0} Test Driven Development.pptx
{10.0} Test Driven Development.pptx{10.0} Test Driven Development.pptx
{10.0} Test Driven Development.pptx
 
Tdd and bdd
Tdd and bddTdd and bdd
Tdd and bdd
 
Test Driven Development - a Practitioner’s Perspective
Test Driven Development - a Practitioner’s PerspectiveTest Driven Development - a Practitioner’s Perspective
Test Driven Development - a Practitioner’s Perspective
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Becoming a better programmer - unit testing
Becoming a better programmer - unit testingBecoming a better programmer - unit testing
Becoming a better programmer - unit testing
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Tdd practices
Tdd practicesTdd practices
Tdd practices
 
Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1
Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1
Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1
 
Developers Best Practices
Developers Best PracticesDevelopers Best Practices
Developers Best Practices
 
Test driven developement
Test driven developementTest driven developement
Test driven developement
 
Pair programming and introduction to TDD
Pair programming and introduction to TDDPair programming and introduction to TDD
Pair programming and introduction to TDD
 
Test-Driven Development Reference Card
Test-Driven Development Reference CardTest-Driven Development Reference Card
Test-Driven Development Reference Card
 
Understanding TDD - theory, practice, techniques and tips.
Understanding TDD - theory, practice, techniques and tips.Understanding TDD - theory, practice, techniques and tips.
Understanding TDD - theory, practice, techniques and tips.
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven development
 
TDD in Agile
TDD in AgileTDD in Agile
TDD in Agile
 
Clean Code, Code Refactoring & TDD
Clean Code, Code Refactoring & TDDClean Code, Code Refactoring & TDD
Clean Code, Code Refactoring & TDD
 
Agile Software Development Techniques for Daily Use
Agile Software Development Techniques for Daily UseAgile Software Development Techniques for Daily Use
Agile Software Development Techniques for Daily Use
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Tdd
TddTdd
Tdd
 
Coding - SDLC Model
Coding - SDLC ModelCoding - SDLC Model
Coding - SDLC Model
 

More from Giorgio Natili

Driving Assistant Solutions with Android
Driving Assistant Solutions with AndroidDriving Assistant Solutions with Android
Driving Assistant Solutions with Android
Giorgio Natili
 
Isomorphic Reactive Programming
Isomorphic Reactive ProgrammingIsomorphic Reactive Programming
Isomorphic Reactive Programming
Giorgio Natili
 
Service worker API
Service worker APIService worker API
Service worker API
Giorgio Natili
 
The Little Shop of TDD Horrors
The Little Shop of TDD HorrorsThe Little Shop of TDD Horrors
The Little Shop of TDD Horrors
Giorgio Natili
 
Android, getting started
Android, getting startedAndroid, getting started
Android, getting started
Giorgio Natili
 
Clear the UIViewController Mess
Clear the UIViewController MessClear the UIViewController Mess
Clear the UIViewController Mess
Giorgio Natili
 
Big data and mobile
Big data and mobileBig data and mobile
Big data and mobile
Giorgio Natili
 
The short path to ecma 6
The short path to ecma 6The short path to ecma 6
The short path to ecma 6Giorgio Natili
 
WebRTC communication and wearable devices
WebRTC communication and wearable devicesWebRTC communication and wearable devices
WebRTC communication and wearable devicesGiorgio Natili
 
Multithreading development with workers
Multithreading development with workersMultithreading development with workers
Multithreading development with workersGiorgio Natili
 
Undoable architectures
Undoable architecturesUndoable architectures
Undoable architecturesGiorgio Natili
 
WebRTC and Mobile Integration
WebRTC and Mobile IntegrationWebRTC and Mobile Integration
WebRTC and Mobile IntegrationGiorgio Natili
 
Develop, test and debug cross platforms apps with PhoneGap
Develop, test and debug cross platforms apps with PhoneGapDevelop, test and debug cross platforms apps with PhoneGap
Develop, test and debug cross platforms apps with PhoneGapGiorgio Natili
 
Test first
Test firstTest first
Test first
Giorgio Natili
 
Mobile benchmarking-and-profiling
Mobile benchmarking-and-profilingMobile benchmarking-and-profiling
Mobile benchmarking-and-profilingGiorgio Natili
 

More from Giorgio Natili (20)

Driving Assistant Solutions with Android
Driving Assistant Solutions with AndroidDriving Assistant Solutions with Android
Driving Assistant Solutions with Android
 
Isomorphic Reactive Programming
Isomorphic Reactive ProgrammingIsomorphic Reactive Programming
Isomorphic Reactive Programming
 
Service worker API
Service worker APIService worker API
Service worker API
 
The Little Shop of TDD Horrors
The Little Shop of TDD HorrorsThe Little Shop of TDD Horrors
The Little Shop of TDD Horrors
 
I beacon mobile_tea
I beacon mobile_teaI beacon mobile_tea
I beacon mobile_tea
 
Android, getting started
Android, getting startedAndroid, getting started
Android, getting started
 
Clear the UIViewController Mess
Clear the UIViewController MessClear the UIViewController Mess
Clear the UIViewController Mess
 
Big data and mobile
Big data and mobileBig data and mobile
Big data and mobile
 
The short path to ecma 6
The short path to ecma 6The short path to ecma 6
The short path to ecma 6
 
Jasmine 2.0
Jasmine 2.0Jasmine 2.0
Jasmine 2.0
 
Harmonik
HarmonikHarmonik
Harmonik
 
Mobile raspberry pi
Mobile raspberry piMobile raspberry pi
Mobile raspberry pi
 
WebRTC communication and wearable devices
WebRTC communication and wearable devicesWebRTC communication and wearable devices
WebRTC communication and wearable devices
 
Multithreading development with workers
Multithreading development with workersMultithreading development with workers
Multithreading development with workers
 
Ecma6 in 30 minutes
Ecma6 in 30 minutesEcma6 in 30 minutes
Ecma6 in 30 minutes
 
Undoable architectures
Undoable architecturesUndoable architectures
Undoable architectures
 
WebRTC and Mobile Integration
WebRTC and Mobile IntegrationWebRTC and Mobile Integration
WebRTC and Mobile Integration
 
Develop, test and debug cross platforms apps with PhoneGap
Develop, test and debug cross platforms apps with PhoneGapDevelop, test and debug cross platforms apps with PhoneGap
Develop, test and debug cross platforms apps with PhoneGap
 
Test first
Test firstTest first
Test first
 
Mobile benchmarking-and-profiling
Mobile benchmarking-and-profilingMobile benchmarking-and-profiling
Mobile benchmarking-and-profiling
 

TDD and PhoneGap