in reply to Development and deployment - some basic guidance

Excellent.   Excellent.

On the subject of “testing,” you should pay close attention to the many Perl modules that exist for this purpose ... Test::Mechanize, Test::More, and ... well ... many, many more.   You see these tools at work every time you install a CPAN module on your system:   first they build themselves, then they test themselves.   All of the source-code to do that is right there, usually in a subdirectory called t.   Study it carefully to see how it works.

Strongly encourage your developers ... most especially including you! ... to “test as you go.”   Write a feature, then immediately write a test for it.   Run these tests continually, during the development process.   This has two very important advantages to you:

  1. You know it works.   You know that you can walk on it (carefully, now) without plunging into the river below.   You know where the latest bug probably isn’t.
  2. As time goes by, you know it's still working.   It is surprisingly easy to “break something” that you thought was working properly, and to not realize it at the time.

This is also a very useful way to immediately check for problems when you update the production system.   Define a series of tests that check for incomplete information, packages that can’t be found or that won’t load, or any other sort of “sanity check” you might need.   (Since these tests may change from time to time, of course you store them in the version-control system along with everything else.)   As soon as the production system is updated, run the tests.   If something is not-right, you will thereby know about it at once.   Ideally, you would arrange for this sort of thing to be done “automagically.”

Replies are listed 'Best First'.
Re^2: Development and deployment - some basic guidance
by pemungkah (Priest) on Sep 23, 2010 at 21:27 UTC
    Absolutely! This was my reason for pushing Hudson. In addition to making it easy to build your stuff and have it ready for deployment, it does a great job of tracking tests. (I think I've gone on about it at great length about it elsewhere...)

    Key takeaways, anyway, are prove --formatter TAP::Formatter::JUnit >TEST-testname.xml and adding **/TEST-*.xml to Hudson as the files it should search for to find test results. This combination automatically captures all your test output and lets Hudson track the number of tests, whether they succeed or fail, and so on.