Tag Archives: thesis

Screenshot

Automatic Invariant Detection in Dynamic Web Applications

For the last year, I have been working on my master project and two weeks ago I finally graduated. I did my master project at Tam Tam, an internet agency that provides full service internet services. It was nice to work there and if I did not have the opportunity to expand my own company I would have applied for a job at Tam Tam.

The project was about automatically finding invariants in web applications. The first focus was finding invariants in the JavaScript parts, but later on we extended the scope a bit and also included invariants over the DOM. While most of the techniques I developed can be used in a very generic way, my implementation depends on Crawljax. I developed plugins to Crawljax, under the name of InvarScope, that can automatically find these invariants and use them for regression testing.

We submitted a paper based on my work to ICSE’11, so before that was finished I was not allowed to blog or publish any of my work. Well, we made the deadline, so I can now release all of the code, my thesis and the paper itself.

The code I wrote is available in a subdirectory of the Crawljax plugins Google code project. We’re currently in the process of fixing all Maven dependencies, cleaning up some code and making it all work with the current Crawljax trunk version, so expect a binary release in a few days.

Don’t hesitate to contact me if you have any questions!

Screenshot

Crawljax 1.8 released

I’m working on a cool project for my master thesis: Crawljax. Crawljax is a website crawler that supports JavaScript. This is done by opening a real browser such as Firefox and controlling it via WebDriver. The core of Crawljax does only that: crawling websites. However, there is a very flexible plugin system available that allows you to do all kinds of cool things such as creating a static mirror of an AJAX website or creating test suites for you AJAX webapplications.

Download Crawljax now and give it a try!

To get a better grasp of what is possible, have a look at the Google Tech Talk a colleague of mine did: