in reply to Regression testing

Well, certainly take a long look at the regression tests in the Perl core. They're not in the best shape (I swear there are at least 5 different methods for doing the ok/not ok thing), but they are extremely thorough, and in general show the right ways to test things.

I don't think you'll find too many examples of different (separable) functionalities being tested together. I'm not sure I can think of a particularly easy or sensible way to do that. Would there really be no way of testing certain functionality without needing to test two objects together? I can't think of any example where a test in the core checks more than one distinct functionality at a time.

The general point of regression testing is to define functionality by testing the building blocks -- once you have the simple operations guaranteed, they'll fit together correctly.

Most important is maintaining the test suite. Any time you fix a bug, write a test for it. Any time you change functionality, write a test for it. Any time you add documentation, write a test to make sure that things are behaving the way that you're documenting them. In fact, that's a good way to start to fill out your test suite -- go through your documentation and write a test for everything you assert about your modules.

Replies are listed 'Best First'.
RE: Re: Regression testing
by knight (Friar) on Sep 26, 2000 at 23:45 UTC
    Any time you fix a bug, write a test for it.

    And be sure to test the new (or modified) test by running it against the non-fixed, buggy version of the code and making sure the test fails as you'd expect (a la the eXtreme Programming model). THEN fix the code and make sure it passes the test. Otherwise, it's easy to mistakenly write a test that your "fix" passes because it doesn't really test the condition you thought it tested...