That a set of knives can come  
as a package, i.e. one set, says that packaging does not  
unduly restrict content. 
That allows us to turn to the issue of automatic generation of  
test data.  You have manual, partially automatic, and  
automatic as options.  The most impractical generation in  
practice is manual based on hundreds of millions of such  
incomplete attempts.  If it were practical, you would not  
require beta testing or beta testers and no incorrect logic  
would ever get released. 
Remember that's the only mistakes you can make in  
programming are syntax, semantics, and logic.  We can  
accomplish the first two in software rather quickly and  
accurately.  That leaves only mistakes in logic.  The means for  
their discovery lies in preparing sets of test data applied  
during execution. 
Now how do you prepare this test data, manually,  
automatically, or somewhere inbetween?  You have the effort  
to prepare the test data, that for scripting the tests, that for  
executing the tests, and that for verifying the results.  Any  
errors discovered in the verification process means a process  
of correction and reiteration of the tests.  It's little wonder  
that project guidelines suggest that you give twice the  
amount of time to testing than has occurred up to that point. 
You either run the test linearly, i.e. a sequence of one test at  
a time, or in parallel.  Proper parallel execution requires  
independent sets of test data, one set per test, and  
independent, isolated test environments.  Therein lies the use  
of beta tests and beta testers, particularly since you pay for  
neither which amounts to a lowering of development costs. 
However, even with all this, even in the absence of cost or  
time constraints, you have incomplete testing: logic errors still  
appear in released versions.  Now comes along logic  
programming and the use of predicate logic.  Predicate logic  
declares not only the data variables involved but also the  
range of values of those variables.  You can specify these  
ranges as contiguous or non-contiguous with points outside of  
acceptable (true) results, on the boundary, and within.  Given  
a set of data variables and their values the predicate logic  
will iterate through all possible combinations in its testing  
process. 
Now that still leaves a largely manual verification process, no  
mean task with large volumes of results.  It only produces  
"true" results, making it difficult enough to detect "false  
positives".  As an option you could have it produce "false"  
results, making it difficult enough to detect "false negatives". 
The peg solitaire program constitutes an exhaustive true/false  
proof of the algorithm involved in that it generates all  
possible paths.  If you know a solution exists and the  
algorithm doesn't find it, then you have a logic error in the  
algorithm.  If you don't know a solution exists, i.e. if you  
cannot postulate a "true" solution, you have no idea if it is  
logically correct or not. 
You do know, however, that this algorithmic production, this  
automatic generation of test data, occurs millions of times  
faster and cheaper than its manual preparation.  It does not  
matter that it might increase the verification time.  It has  
significantly reduced the overall time along with the result of  
error-free code. 
More importantly it has eliminated the need for parallel  
testing, beta testing, and beta testers.  It further supports  
true independence of the individual developer to go his own  
way, to pursue his own goals, whether or not shared with  
anyone else. 
===================================================== 
To unsubscribe from this list, send an email message 
to "steward@scoug.com". In the body of the message, 
put the command "unsubscribe scoug-programming". 
For problems, contact the list owner at 
"rollin@scoug.com". 
===================================================== 
Return to [ 05 | 
April | 
2003 ]
The Southern California OS/2 User Group
P.O. Box 26904
Santa Ana, CA  92799-6904, USA
Copyright 2001 the Southern California OS/2 User Group.  ALL RIGHTS 
RESERVED. 
SCOUG, Warp Expo West, and Warpfest are trademarks of the Southern California OS/2 User Group.
OS/2, Workplace Shell, and IBM are registered trademarks of International 
Business Machines Corporation.
All other trademarks remain the property of their respective owners.