30
The secret art of Agile Javascripting Luca Grulla Italian Agile Day, Genova, 19/11/10

Javascript testing IAD2010

Embed Size (px)

DESCRIPTION

Italian Agile Day 2010 Presentation about Javascript testing

Citation preview

Page 1: Javascript testing IAD2010

The secret art of Agile Javascripting

Luca Grulla

Italian Agile Day, Genova, 19/11/10

Page 2: Javascript testing IAD2010

Our background

Large public facing websitesSignificant javascript codebasewith complex DOM interactionHeavy use of Ajax Large amount of business logic

Long life expectancy

Page 3: Javascript testing IAD2010

Disclaimer

This presentation is technology agnosticEach tool used is replaceableIt is not about how to use jQuery

Page 4: Javascript testing IAD2010

Technology Stack• JQuery• JSTestDriver• Ewloe• JavascriptLint

Page 5: Javascript testing IAD2010

It used to be so simple…

Page 6: Javascript testing IAD2010

Rich clients

Page 7: Javascript testing IAD2010

We want unit tests

Page 8: Javascript testing IAD2010

Scenario

Login formNeed to validate user credentialsNeed to execute a server call via ajax POSTBased on the result we need to show a

welcome or an error message

Page 9: Javascript testing IAD2010
Page 10: Javascript testing IAD2010
Page 11: Javascript testing IAD2010
Page 12: Javascript testing IAD2010
Page 13: Javascript testing IAD2010

So what is wrong with this code ?

Page 14: Javascript testing IAD2010
Page 15: Javascript testing IAD2010

We want to test it!

Page 16: Javascript testing IAD2010

Domain abstraction

Page 17: Javascript testing IAD2010

Abstraction around integration points

Page 18: Javascript testing IAD2010

HTTP

DOMPresentation Logic

Business Logic

Page 19: Javascript testing IAD2010
Page 20: Javascript testing IAD2010
Page 21: Javascript testing IAD2010
Page 22: Javascript testing IAD2010
Page 23: Javascript testing IAD2010
Page 24: Javascript testing IAD2010
Page 25: Javascript testing IAD2010
Page 26: Javascript testing IAD2010

Our approachJavascript is a first class language

create abstractions:business logicpresentation logicintegrations…but not limited to a specific pattern !!

Keep your presentation logic class as skinny as possible in order to express intents

Favour interaction tests over integration tests

Page 27: Javascript testing IAD2010

Tools Considerations

….whatever you like but has to be pluggable in your Continuous Integration !!

Page 28: Javascript testing IAD2010

Questions ?

Page 29: Javascript testing IAD2010

Thank You !

Luca Grulla [email protected]://www.lucagrulla.it/bloghttp://www.github.com/lucagrulla

Page 30: Javascript testing IAD2010

References

Ewloe http://github.com/gurrie/ewloe