<?xml version="1.0" encoding="UTF-8"?>
<hash>
  <created-at>03/31/2009</created-at>
  <event-id type="integer">2009</event-id>
  <title>Agile JavaScript Testing</title>
  <submitted-at>03/31/2009</submitted-at>
  <updated-at>06/04/2009</updated-at>
  <id type="integer">139</id>
  <user-id nil="true"></user-id>
  <website nil="true"></website>
  <description>h3. Intro
* Test Driven Development - What is it, why do it, what are the advantages?
* Challenges of web applications - browser quirks, asynchronous ajax, dynamic-ness of JavaScript language
* Future VMs will run JS faster, making &quot;bigger&quot;, more processing intensive apps possible within a browser
* Traditionally web applications have most business logic running server side.
* Testing for server-side web applications has matured over the past few years
* AJAX applications have large amounts of code executing in the browser in JavaScript
* This creates a growing need for testing at the browser level, but this area is still young and not as widely practiced

h3. What do we gain?
* Stable development - iterate without fear of breaking existing features
* Easier refactoring - rewrite the guts of your app and be confident it continues to work
* Speed - stop refreshing and clicking through your app to verify things are working, thats what computers are for
* Automation - repeatable tests help you do the right thing every time, without having to think about it

h3. Getting Started
* What libraries and methodologies exist for JavaScript testing?
* A simple example - a client-side form validation library and a suite of tests for verifying it works as expected

h3. Going further
* A complex example - integration testing, scripting user stories
* Testing across multiple browsers
* Incorporating JS tests into a larger development workflow with server-side tests
* Continous integration - running tests automatically, every time you commit</description>
  <affiliation nil="true"></affiliation>
  <biography nil="true"></biography>
  <presenter nil="true"></presenter>
</hash>
