I have developed a semi-automatic test generator for web applications.
I've called it "RoboWeb" and it's now available for download from
sourceforge, hoping that it can be useful to others.

The project page at sourceforge is
http://sourceforge.net/projects/roboweb.

Here's an excerpt from the README, and after it a comparison with
Test::CGI, which is a tool at CPAN whose intent is similar.

  RoboWeb is a suite of Perl scripts that allow for  recording live user
browsing sequences and insert assertions during them to later reproduce
and automatically verify correctness of output of a web application.

  Recording test sequences is easy: just fire the roboweb_proxy script
and make your browser point to it. The proxy will generate a test
sequence script as you browse and you can insert "must_match"  commands
in the recorded sequence by entering regular expressions directly in
your browser's URL box. These commands get translated into assertions
that will be run against the server response text when the sequences are
reproduced, to verify that server responses are correct.

  RoboWeb will also automatically put your web application backend
database in a constant 'test-scenario' state before recording test
sequences and before executing  test scripts. This allows for reliable
testing of complex web applications.

  Also, the recorded test sequence scripts support cookies, which allows
them to interact successfully with most web application.

  After you collect a number of test sequences you can execute them via
the TEST script, which will produce standard perl Test::Harness output.


COMPARISON WITH THE Test::CGI MODULE

The intent of Test::CGI is almost the same. It's about crafting test
sequences that will be run against a web application in an automated
fashion.  The main differences I see between both approaches are:

1. RoboWeb makes it much easier to generate a test suite, because test
sequence scripts under it are almost completely machine generated,
except assertions, which are easily inserted by entering regexps in the
URL box as you browse through your app. Test::CGI instead requires that
all HTTP requests be hand coded by the test writer.

2. RoboWeb runs against a live web server, versus Test::CGI, which runs
web apps as standalone CGI processes. Test::CGI is less complete in this
regard, because it doesn't allow to test apps in the environment they'll
be running on (e.g. mod_perl apps that rely on persitent variables are
not testable with Test::CGI).

3. The RoboWeb client (which uses LWP::UserAgent and an HTTP::Cookie
jar) supports cookies, which allow it to test most web applications.
Test::CGI does not support cookies.

4. Test::CGI cannot request plain documents, whereas Roboweb can.

5. Both RoboWeb and Test::CGI produce Test::Harness output.


Regards,

Claudio Garcia


Reply via email to