|
First of all, let me deal with the format. This is my first experience of O'Reilly's "Developer's Notebook" series, and I'm not impressed. O'Reilly spend 4 (!) pages at the front of the book (and half a page at the back) trying to explain to the reader what a developer's notebook is all about - attempting to differentiate it from other books in the O'Reilly series.
This section should not be missed. It prepares the reader for the thin paper, jotter-style hatching, coffee stains, layout and lack of diagrams - which could potentially have the casual browser returning the book to the shelf. I certainly started quietly muttering "what the..." upon my first thumb through.
Oh - and O'Reilly say its not a cookbook. Really really.
I don't care how much marketing makeover is applied to a text, but as far as I'm concerned, when the content follows a "how do I do this" ... "here's how you do this" format - its a cookbook.
Did this marketing makeover help me? No. For example, using a "hand writing" font for comments in the margins is not a good idea when those comments can contain code snippets (eg \x{$0} on p30).
The book is aimed at any Perl developer wanting to use testing to do a better job. This to be accomplished by presenting the "frantic scribbling and notes" of a "true-blue alpha geek".
These scribblings are quite shallow in their coverage of the solutions presented. While this may be in keeping with the book's style, as the book proceeded, this shallowness had me wondering if the book wouldn't be equally effective as a FAQ referencing relevant Test::xxx modules.
I question whether this approach is appropriate for the initial chapter; "Beginning Testing". This chapter is ripe for a (shallow) chat about selecting ranges and values for testing. Without at least an awareness of these issues (boundary value analysis etc), the new Perl tester is still flying blind.
On the plus side, the writing style gets to the "meat and two veg" very quickly. Here's a quick list of items which I felt were usefully covered;
- managing and distributing tests
- creation of module test templates (although not mentioning h2xs is surely a huge oversight)
- writing your own test libraries
- test harnesses - carrying out specific actions when tests pass/fail
- testing code on remote machines
- sanity checking of module distributions
- testing without impacting on real-world systems (DB, email, etc) - featuring hijacking of package variables, operators and mocking OO module functionality (my favourite section)
- testing database interaction
- testing web sites - HTML validity, UI functionality (creating, capturing and using user web/user interaction) and the Apache::Test module
- testing CLI-based programmes
- testing C libraries
There's something there for pretty much everyone, although there is no mention of testing for Perl software featuring a non-web GUI (eg Perl/Tk).
Summary
I would recommend this book as a good jump-start for those looking for a quick introduction in Perl testing or those looking for inspiration to introduce more advanced testing procedures to their projects.
For those not interested in moving beyond basic testing of straight forward modules I would leave this book on the shelf and read the POD for Test::Simple, Test::More, Test::Distribution and Test::Kwalitee.
My final comment would be that the format and style left me feeling that the book would perhaps be better off as a chapter in the next edition of Perl Cookbook.
Table of contents
The Developer's Notebook Series Preface Ch1 : Beginning Testing Ch2 : Writing Tests Ch3 : Managing Tests Ch4 : Distributing Your Tests (and Code) Ch5 : Testing Untestable Code Ch6 : Testing Databases Ch7 : Testing Web Sites Ch8 : Unit Testing with Test::Class Ch9 : Testing Everything Else Index