F u n c t i o n a l T e s t i n g
If the aim of a software development project is to "deliver widget X to do task Y" then the aim of
"functional testing" is to prove that widget X actually does task Y.
Simple ? Well, not really.
We are trapped by the same ambiguities that lead developers into error. Suppose the requirements
specification says widget "X must do Y" but widget X actually does Y+Z? How do we evaluate Z?
Is it necessary? Is it desirable? Does it have any other consequences the developer or the original
stake-holder has not considered? Furthermore how well does Y match the Y that was specified by
the original stake-holder?
Here you can being to see the importance of specifying requirements accurately. If you can't specify
them accurately then how can you expect someone to deliver them accurately or for that matter
test them accurately?
This sounds like common sense but it is much, much harder than anything else in the software
development life cycle. See my Primer on Project Management for a discussion.
Alpha and Beta Testing
There are some commonly recognised milestones in the testing life cycle.
Typically these milestones are known as "alpha" and "beta". There is no precise definition for what
constitutes alpha and beta test but the following are offered as common examples of what is
meant by these terms :
Alpha enough functionality has been reasonably completed to enable the first
round of (end-to-end) system testing to commence. At this point the interface
might not be complete and the system may have many bugs.
Beta the bulk of functionality and the interface has been completed and
remaining work is aimed at improving performance, eliminating defects and
completing cosmetic work. At this point many defects still remain but they are
generally well understood.
Beta testing is often associated with the first end-user tests.
The product is sent out to prospective customers who have registered their interest in
participating in trials of the software. Beta testing, however, needs to be well organised
and controlled otherwise feedback will be fragmentary and inconclusive. Care must also
be taken to ensure that a properly prepared prototype is delivered to end-users,
otherwise they will be disappointed and time will be wasted.