in reply to Philosophical question about testing

Does this make me a bad person?
No. The fact that you are writing tests makes you a good person.
It just seems to me that I'm not testing my logic very well in my test script if I'm using the same logic as I used in the module--of *course* it works great!
You have good instincts. You should strive for an orthogonal approach, rather than using a copy of your module code to check your module code. Perhaps one of the CPAN Test modules would be appropriate. A quick look at Test::File looks relevant.
I realize that part of the point of a test is just to make sure the module is complete and in good shape.
The point of a test suite is to make sure the module does what you want it to do, and more specifically, what you said it would do in your public documentation (POD). At a minimum, it should perform basic checks of all the features in your doc. More thoroughly, it should check edge cases of your well-specified input ranges. Then it should check how your module reacts to illegal inputs.
  • Comment on Re: Philosophical question about testing

Replies are listed 'Best First'.
Re^2: Philosophical question about testing
by doom (Deacon) on Oct 29, 2010 at 17:31 UTC

    You have good instincts. You should strive for an orthogonal approach,
    This is true, of course, you should try to think of a way to independently verify what the code does, but I would suggest there isn't any reason to go beserk about it.

    Consider the fact that the algorithm in both code and test may be the same to start with, but they may diverge later. You might go in and refactor the main code, for efficiency, let's say, and then the older style of code out in the tests will be an excellent check on your work.

    In general, tests should be relatively easy to write, or else you (or worse, your boss) will burn-out on it, and start skipping them altogether. A lot of things that would be Bad And Wrong in your real code are okay in your tests... e.g. cut-and-paste is a much more valid approach.