Strategies For Testing Ajax Web Applications

As a Python web developer you are probably familiar with the paradigms of testing simple web applications. Your test case makes a GET / POST request, your program responds with an HTML page, and your test verifies the HTML elements. Unfortunately, today’s typical web application is not so simple! Since modern browsers support asynchronous JavaScript (Ajax) very well, the HTML response might deliver program code to run on the client’s web browser. The browser’s runtime environment would then interact with your server-side Python program and you now have a big problem: How does your test suite cover both server-side functionality and client-side functionality? This talk will use a real Python / Ajax web application as an example then offer practical strategies for creating a fast, scalable test suite to help ensure that each release of such an app works as intended. It goes beyond just the tools and technologies; it examines architectural strategies — how and when to use stubs, how to design a testable UI, etc — so that as your application grows in size, your tests remain fast and effective.

Source and slides for this presentation