5. Browser Web/Application server
Framework
Lib
Lib
6. Browser Web/Application server
Framework
Lib
Your
code Lib
7. Browser Web/Application server
Framework
Lib
External
Your systems
code Lib
8. Browser Web/Application server
Framework
Lib
External
Your systems
code Lib
circa 2000
9. Browser Web/Application server
Framework
Lib
External
JS Your systems
code Lib
circa 2000
2004
10. Browser Web/Application server
Framework
Lib Lib
Your External
JS Your systems
code
Lib code Lib
circa 2000
2008
2004
11. Browser Web/Application server
Framework
Lib Lib
Your External
Your systems
code
Lib code Lib
Mature test automation
Not so much tools and practices
80. What now?
JavaScript test frameworks Browser Drivers
- Screw.Unit - Selenium-RC
- QUnit - Watir
- JSSpec - WebDriver
- YUI Test
- unittest.js Browser Emulators
- JsUnit - HtmlUnit
- and lots more ...
http://delicious.com/mdub/javascript+testing
Notes de l'éditeur
We’re talking about web-APPS, not just web-sites.
We’re talking about web-APPS, not just web-sites.
We’re talking about web-APPS, not just web-sites.
We’re talking about web-APPS, not just web-sites.
We’re talking about web-APPS, not just web-sites.
We’re talking about web-APPS, not just web-sites.
We’re talking about web-APPS, not just web-sites.
We’re talking about web-APPS, not just web-sites.
We’re talking about web-APPS, not just web-sites.
We’re talking about web-APPS, not just web-sites.
We’re talking about web-APPS, not just web-sites.
We’re talking about web-APPS, not just web-sites.
We’re talking about web-APPS, not just web-sites.
We’re talking about web-APPS, not just web-sites.
We’re talking about web-APPS, not just web-sites.
We’re talking about web-APPS, not just web-sites.
So, at what levels can we test?
stuff breaks
Broken stuff makes you look bad
So ... you fix it!
but then you add more features
the more stuff you have, the more likely it is to be broken WITHOUT YOU KNOWING
the more stuff you have, the more likely it is to be broken WITHOUT YOU KNOWING
where should you focus your testing efforts?
sure, focus on business value, BUT
think about what might be broken ...
the new stuff, ‘cos you changed it
the old stuff, ‘cos you’re not looking at it
ie. EVERYTHING
so, you get MORE testers
but manual regression testing costs money, and takes lot of time
but manual regression testing costs money, and takes lot of time
manual testing
manual testing
manual testing
manual testing
manual testing
manual testing
manual testing
manual testing
manual testing
automated testing provides the confidence needed to keep moving forward
So, at what levels can we test?
test the whole thing, end-to-end
At the other extreme: test small components
Big because they require a lot of work to create
Powerful because they exercise many components of the system at once
Convincing because they prove that the components hang together
Slow because they exercise all the infrastructure
In-exact because it can be hard to find the cause of a failure
High-maintenance because many things may require the test to be modified
Big because they require a lot of work to create
Powerful because they exercise many components of the system at once
Convincing because they prove that the components hang together
Slow because they exercise all the infrastructure
In-exact because it can be hard to find the cause of a failure
High-maintenance because many things may require the test to be modified
Big because they require a lot of work to create
Powerful because they exercise many components of the system at once
Convincing because they prove that the components hang together
Slow because they exercise all the infrastructure
In-exact because it can be hard to find the cause of a failure
High-maintenance because many things may require the test to be modified
Big because they require a lot of work to create
Powerful because they exercise many components of the system at once
Convincing because they prove that the components hang together
Slow because they exercise all the infrastructure
In-exact because it can be hard to find the cause of a failure
High-maintenance because many things may require the test to be modified
Big because they require a lot of work to create
Powerful because they exercise many components of the system at once
Convincing because they prove that the components hang together
Slow because they exercise all the infrastructure
In-exact because it can be hard to find the cause of a failure
High-maintenance because many things may require the test to be modified
Big because they require a lot of work to create
Powerful because they exercise many components of the system at once
Convincing because they prove that the components hang together
Slow because they exercise all the infrastructure
In-exact because it can be hard to find the cause of a failure
High-maintenance because many things may require the test to be modified
Big because they require a lot of work to create
Powerful because they exercise many components of the system at once
Convincing because they prove that the components hang together
Slow because they exercise all the infrastructure
In-exact because it can be hard to find the cause of a failure
High-maintenance because many things may require the test to be modified
Big because they require a lot of work to create
Powerful because they exercise many components of the system at once
Convincing because they prove that the components hang together
Slow because they exercise all the infrastructure
In-exact because it can be hard to find the cause of a failure
High-maintenance because many things may require the test to be modified
Plentiful because they’re cheap
Quick because they’re low-overhead
Focused because they point the finger directly at the cause of failure
Resilient because they’re isolated from unrelated parts of the system
Limited because, individually, they don’t test very much
Plentiful because they’re cheap
Quick because they’re low-overhead
Focused because they point the finger directly at the cause of failure
Resilient because they’re isolated from unrelated parts of the system
Limited because, individually, they don’t test very much
Plentiful because they’re cheap
Quick because they’re low-overhead
Focused because they point the finger directly at the cause of failure
Resilient because they’re isolated from unrelated parts of the system
Limited because, individually, they don’t test very much
Plentiful because they’re cheap
Quick because they’re low-overhead
Focused because they point the finger directly at the cause of failure
Resilient because they’re isolated from unrelated parts of the system
Limited because, individually, they don’t test very much
Plentiful because they’re cheap
Quick because they’re low-overhead
Focused because they point the finger directly at the cause of failure
Resilient because they’re isolated from unrelated parts of the system
Limited because, individually, they don’t test very much
Plentiful because they’re cheap
Quick because they’re low-overhead
Focused because they point the finger directly at the cause of failure
Resilient because they’re isolated from unrelated parts of the system
Limited because, individually, they don’t test very much
Plentiful because they’re cheap
Quick because they’re low-overhead
Focused because they point the finger directly at the cause of failure
Resilient because they’re isolated from unrelated parts of the system
Limited because, individually, they don’t test very much
JavaScript unit tests run really FAST!
Talk about why
Cross-browser, cross-version testing
Mainly for libraries - you probably don’t need it