I've had some very good success with the
Test::Cmd distro, when testing commandline stuff. I used it to test something that was going to be run in a batch mode, ending up with over 200 tests in less than a month of ad-hoc development. This works equally well for commandshell and batch, cause batch is really just commandshell w/o an active user.
As for web scripts, I've been getting some good traction using a combination of the following:
- Structure the application using CGI::Application and with good modularization. Standard 'make test' works for the API. (My current app is split into 9 CPAN-like distributions and one catch-all install including the templates, CSS, and C::A bootstrap scripts.)
- WWW::Mechanize, which not doing look-and-feel very easily (you have to source-dive the HTML) and not handling JScript events (you have to implement them yourself in the test script), it does do a good job of spot-checking the result. Plus, it nicely handles redirects and the like.
Good luck!
------
We are the carpenters and bricklayers of the Information Age.
Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.