In reading Philosophy 101, about Truth with a capital "T", and the  non-traditional logics that use new notions of truth, we of course  arrive at Fuzzy Logic with its departure from simple binary true/false  values, and embrace of an arbitrarily wide range of values in between.
Contemplating  this gave me a small AHA moment: Unit Testing is an area where there is  an implicit assumption that "Test Passes" has either a true or false  value.  How about Fuzzy Unit Testing where there is some numeric value  in the 0...1 range which reports a degree of pass/fail-ness? i.e. a percentage  pass/fail for each test.  For example, testing algorithms that  predict something could be given a percentage pass/fail based on how  well the prediction matched the actual value.  Stock market predictions,  bank customer credit default prediction, etc come to mind.  This sort  of testing of predictions about future defaults (i.e. credit grades)  is just the sort of thing that the BASEL II accords are forcing banks  to start doing.
Another great idea (if I do say so  myself) that I had a few years ago was the notion that there is  extra meta-data that could/should be gathered as a part of running unit  test suites; specifically, the performance characteristics of each test  run.  The fact that a test still passes, but is 10 times slower than  the previous test run, is a very important piece of information that we  don't usually get.  Archiving and reporting on this meta-data about  each test run can give very interesting metrics on how the code changes  are improving/degrading performance on various application  features/behavior over time.  I can now see that this comparative  performance data would be a form of fuzzy testing.
Wednesday, June 9, 2010
Subscribe to:
Post Comments (Atom)
 
 

No comments:
Post a Comment