NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.
All the Perl that's Practical to Extract and Report
Stories, comments, journals, and other submissions on use Perl; are Copyright 1998-2006, their respective owners.
Testing Strategies (Score:2)
Question: How do I test something graphical? For example, I have routines that are generating charts and graphs in PNG format.
Answer: One way would be to pre-generate "known good" charts and graphs, save them in a test_data directory and, run your routines and see if the output files are the same.
Question: How would I test a GUI interface for something?
Answer: I've struggled with this and for the most part, I don't think there are good, generic answers. One suggestion that I've heard is to have the system take screenshots of the GUIs and use the method listed in my previous answer. This is very fragile and non-portable, however. Further, a decent answer would vary depending upon how you create your GUI (Template Toolkit front ends would be tested much differently from a Tk framework).
Question: How do I test routines with side effects? (i.e., routine prints to the screen rather than or in addition to returning a value).
Answer: one way is to build hooks into your system:
And in your test suite:
Not only does it make it easy to trap the data, you later have a very easy way of logging, trapping, or munging those _print messages.
As for the last technique, I used to hate to do that because it seemed "wrong" to build testing hooks into the code. As times goes on, though, I've found that it makes testing easier and I've never found an actual drawback.
Reply to This
quick and dirty GUI testing (Score:2)
Then create a checksum (md5 is kind of small but I liked to use sha1). Then you just need to create a checksum on the test image and compare checksums, and then you could flag an image for human review.
There was some other super simple things I came up with as well for images and rough UI testing.
Re:Testing Strategies (Score:1)
Redirecting "all output" is slightly more challenging if the legacy code doesn't have the hooks Ovid recommends, but not impossible. Although "pri