SlideShare uma empresa Scribd logo
1 de 30
The secret art of Agile
Javascripting
Luca Grulla
Italian Agile Day,
Genova, 19/11/10
Our background
Large public facing websites
Significant javascript codebase
with complex DOM interaction
Heavy use of Ajax
Large amount of business logic
Long life expectancy
Disclaimer
This presentation is technology agnostic
Each tool used is replaceable
It is not about how to use jQuery
Technology Stack
• JQuery
• JSTestDriver
• Ewloe
• JavascriptLint
It used to be so
simple…
Rich clients
We want unit tests
Scenario
Login form
Need to validate user credentials
Need to execute a server call via ajax POST
Based on the result we need to show a
welcome or an error message
So what is wrong
with this code ?
We want to test it!
Domain abstraction
Abstraction around
integration points
HTTP
DOM
Presentation
Logic
Business Logic
Our approach
Javascript is a first class language
create abstractions:
business logic
presentation logic
integrations
…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
Tools Considerations
….whatever you like but has to be pluggable
in your Continuous Integration !!
Questions ?
Thank You !
Luca Grulla
luca.grulla@thoughtworks.com
http://www.lucagrulla.it/blog
http://www.github.com/lucagrulla
References
Ewloe
http://github.com/gurrie/ewloe

Mais conteúdo relacionado

Mais procurados

Seminar on Web Application
Seminar on Web ApplicationSeminar on Web Application
Seminar on Web Application
Vinodh Ram
 

Mais procurados (17)

Seminar on Web Application
Seminar on Web ApplicationSeminar on Web Application
Seminar on Web Application
 
GraphQL vs BFF: A critical perspective
GraphQL vs BFF: A critical perspectiveGraphQL vs BFF: A critical perspective
GraphQL vs BFF: A critical perspective
 
Lessons Learnt from Backend Systems Development
Lessons Learnt from Backend Systems DevelopmentLessons Learnt from Backend Systems Development
Lessons Learnt from Backend Systems Development
 
How to choose frontend (head) for headless commerce.
How to choose frontend (head) for headless commerce. How to choose frontend (head) for headless commerce.
How to choose frontend (head) for headless commerce.
 
Serverless chatbot: from idea to production at blazing speed
Serverless chatbot: from idea to production at blazing speedServerless chatbot: from idea to production at blazing speed
Serverless chatbot: from idea to production at blazing speed
 
Go headless with shopify using vsf next by Viral Rana
Go headless with shopify using vsf next   by Viral RanaGo headless with shopify using vsf next   by Viral Rana
Go headless with shopify using vsf next by Viral Rana
 
Developing silverlight 4 applications with expression blend 4 (30 Abr 2010)
Developing silverlight 4 applications with expression blend 4 (30 Abr 2010)Developing silverlight 4 applications with expression blend 4 (30 Abr 2010)
Developing silverlight 4 applications with expression blend 4 (30 Abr 2010)
 
AngularJS
AngularJS AngularJS
AngularJS
 
Beg, Borrow or Steal: The Art of Flashing Without Flashing
Beg, Borrow or Steal: The Art of Flashing Without FlashingBeg, Borrow or Steal: The Art of Flashing Without Flashing
Beg, Borrow or Steal: The Art of Flashing Without Flashing
 
Successful projects with Hyvä - The impact of Developer Happiness
Successful projects with Hyvä - The impact of Developer HappinessSuccessful projects with Hyvä - The impact of Developer Happiness
Successful projects with Hyvä - The impact of Developer Happiness
 
How I built a WebRTC enabled website in 20 minutes!
How I built a WebRTC enabled website in 20 minutes!How I built a WebRTC enabled website in 20 minutes!
How I built a WebRTC enabled website in 20 minutes!
 
Graphql Overview By Chirag Dodia
Graphql Overview By Chirag DodiaGraphql Overview By Chirag Dodia
Graphql Overview By Chirag Dodia
 
Gwt development with errai and forge
Gwt development with errai and forgeGwt development with errai and forge
Gwt development with errai and forge
 
Starting Your First Job in the Software Industry: Tips and Tricks from Nakov
Starting Your First Job in the Software Industry: Tips and Tricks from NakovStarting Your First Job in the Software Industry: Tips and Tricks from Nakov
Starting Your First Job in the Software Industry: Tips and Tricks from Nakov
 
Hyvä from a developer perspective
Hyvä from a developer perspectiveHyvä from a developer perspective
Hyvä from a developer perspective
 
Thadomal IEEE-HTML5-Workshop
Thadomal IEEE-HTML5-WorkshopThadomal IEEE-HTML5-Workshop
Thadomal IEEE-HTML5-Workshop
 
Introjs1.9.18tf
Introjs1.9.18tfIntrojs1.9.18tf
Introjs1.9.18tf
 

Semelhante a Javascript testing IAD2010

AppeX and JavaScript Support Enhancements in Cincom Smalltalk
AppeX and JavaScript Support Enhancements in Cincom SmalltalkAppeX and JavaScript Support Enhancements in Cincom Smalltalk
AppeX and JavaScript Support Enhancements in Cincom Smalltalk
ESUG
 
Prototyping app using JS and HTML5 (Ciklum Kharkiv)
Prototyping app using JS and HTML5 (Ciklum Kharkiv)Prototyping app using JS and HTML5 (Ciklum Kharkiv)
Prototyping app using JS and HTML5 (Ciklum Kharkiv)
Yuriy Silvestrov
 
Wso2 product release webinar introducing jaggery
Wso2 product release webinar   introducing jaggeryWso2 product release webinar   introducing jaggery
Wso2 product release webinar introducing jaggery
WSO2
 
Resume__DotNet_Koushik_Deb
Resume__DotNet_Koushik_DebResume__DotNet_Koushik_Deb
Resume__DotNet_Koushik_Deb
Koushik Deb
 
Javascript Framework Roundup FYB
Javascript Framework Roundup FYBJavascript Framework Roundup FYB
Javascript Framework Roundup FYB
nukeevry1
 
naren 1 year resume
naren 1 year resumenaren 1 year resume
naren 1 year resume
Narendra R
 

Semelhante a Javascript testing IAD2010 (20)

AppeX and JavaScript Support Enhancements in Cincom Smalltalk
AppeX and JavaScript Support Enhancements in Cincom SmalltalkAppeX and JavaScript Support Enhancements in Cincom Smalltalk
AppeX and JavaScript Support Enhancements in Cincom Smalltalk
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWT
 
Deepa Anbalagan
Deepa AnbalaganDeepa Anbalagan
Deepa Anbalagan
 
Prototyping app using JS and HTML5 (Ciklum Kharkiv)
Prototyping app using JS and HTML5 (Ciklum Kharkiv)Prototyping app using JS and HTML5 (Ciklum Kharkiv)
Prototyping app using JS and HTML5 (Ciklum Kharkiv)
 
Fewd week4 slides
Fewd week4 slidesFewd week4 slides
Fewd week4 slides
 
Internship softwaretraining@ijse
Internship softwaretraining@ijseInternship softwaretraining@ijse
Internship softwaretraining@ijse
 
Quo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynoteQuo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynote
 
Wso2 product release webinar introducing jaggery
Wso2 product release webinar   introducing jaggeryWso2 product release webinar   introducing jaggery
Wso2 product release webinar introducing jaggery
 
Unit 4 Java script.pptx
Unit 4 Java script.pptxUnit 4 Java script.pptx
Unit 4 Java script.pptx
 
Dust.js
Dust.jsDust.js
Dust.js
 
Beyond the Oracle Forms Horizon: from Forms to ADF in minutes
Beyond the Oracle Forms Horizon: from Forms to ADF in minutes  Beyond the Oracle Forms Horizon: from Forms to ADF in minutes
Beyond the Oracle Forms Horizon: from Forms to ADF in minutes
 
Oracle Forms Conversion "An automated Approach"
Oracle Forms Conversion "An automated Approach"Oracle Forms Conversion "An automated Approach"
Oracle Forms Conversion "An automated Approach"
 
TDD on OSGi, in practice.
TDD on OSGi, in practice.TDD on OSGi, in practice.
TDD on OSGi, in practice.
 
Resume__DotNet_Koushik_Deb
Resume__DotNet_Koushik_DebResume__DotNet_Koushik_Deb
Resume__DotNet_Koushik_Deb
 
Testing AngularJS Applications at payworks
Testing AngularJS Applications at payworksTesting AngularJS Applications at payworks
Testing AngularJS Applications at payworks
 
Javascript Framework Roundup FYB
Javascript Framework Roundup FYBJavascript Framework Roundup FYB
Javascript Framework Roundup FYB
 
Internship-Report-VitulChauhan-18132023-IT_CRUD-OPERATION.pdf
Internship-Report-VitulChauhan-18132023-IT_CRUD-OPERATION.pdfInternship-Report-VitulChauhan-18132023-IT_CRUD-OPERATION.pdf
Internship-Report-VitulChauhan-18132023-IT_CRUD-OPERATION.pdf
 
naren 1 year resume
naren 1 year resumenaren 1 year resume
naren 1 year resume
 
Real World Single Page App - A Knockout Case Study
Real World Single Page App - A Knockout Case StudyReal World Single Page App - A Knockout Case Study
Real World Single Page App - A Knockout Case Study
 
Introduction to JavaScript - Code Heroku
Introduction to JavaScript - Code HerokuIntroduction to JavaScript - Code Heroku
Introduction to JavaScript - Code Heroku
 

Mais de Luca Grulla

Il grande bluff delle stime
Il grande bluff delle stimeIl grande bluff delle stime
Il grande bluff delle stime
Luca Grulla
 
Agile Estimating And Planning
Agile Estimating And PlanningAgile Estimating And Planning
Agile Estimating And Planning
Luca Grulla
 

Mais de Luca Grulla (10)

Change a gear up with Evolutionary Architecture
Change a gear up with Evolutionary ArchitectureChange a gear up with Evolutionary Architecture
Change a gear up with Evolutionary Architecture
 
Impact! Drive innovation from the front seat
Impact!  Drive innovation from the front seatImpact!  Drive innovation from the front seat
Impact! Drive innovation from the front seat
 
Clojure's killer design decisions
Clojure's killer design decisionsClojure's killer design decisions
Clojure's killer design decisions
 
Transmitting Signal with Clojure
Transmitting Signal with ClojureTransmitting Signal with Clojure
Transmitting Signal with Clojure
 
Innovation at speed
Innovation at speedInnovation at speed
Innovation at speed
 
Embracing Clojure: a journey into Clojure adoption
Embracing Clojure: a journey into Clojure adoptionEmbracing Clojure: a journey into Clojure adoption
Embracing Clojure: a journey into Clojure adoption
 
Firehose
FirehoseFirehose
Firehose
 
Il grande bluff delle stime
Il grande bluff delle stimeIl grande bluff delle stime
Il grande bluff delle stime
 
Agile Estimating And Planning
Agile Estimating And PlanningAgile Estimating And Planning
Agile Estimating And Planning
 
Retrospectives Techniques
Retrospectives TechniquesRetrospectives Techniques
Retrospectives Techniques
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Último (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 

Javascript testing IAD2010