diff options
-rw-r--r-- | doc/PureUnity.txt | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/doc/PureUnity.txt b/doc/PureUnity.txt new file mode 100644 index 0000000..f5e6056 --- /dev/null +++ b/doc/PureUnity.txt @@ -0,0 +1,107 @@ +PureUnity + +Mathieu Bouchard <matju@artengine.ca> + +January 13th, 2006 + +Abstract + +This paper covers the theory behind PureUnity, +PureData's test framework. + +Table of Contents + +1 What is testing? + 1.1 a test tests something that gets tested + 1.2 a triad of testing +2 Methodologies of Testing + 2.1 test-by-Proof + 2.2 test-by-Use + 2.3 test-by-Rule + 2.4 test-by-Example +3 Quelques cossins + 3.1 Protocol + 3.2 Preconditions + 3.3 Postconditions + 3.4 Wrapconditions + 3.5 Inheritance + 3.6 Aspect-programming and stuff + 3.7 Meta-abstractions + 3.8 Float-Signal Polymorphism + 3.9 Unit-Tests + 3.10 Algebraic Properties + 3.11 Temporal Logic + 3.12 TODO + + + +1 What is testing? + +1.1 a test tests something that gets tested + +(write ontological nonsense here) + +1.2 a triad of testing + +I've thought of a triad: + +A. "the real thing" + +B. what it's documented as + +C. a way to verify that (1) and (2) agree + +and another one: + +changing A to match B+C: programming + +changing B to match A+C: the scientific method (aka +reverse engineering) + +changing C to match A+B: unit-tests and contracts and +scientific experiments + +2 Methodologies of Testing + +I once called unit-tests "test-by-example" and +contracts "test-by-rule". I think that those names are +preferable to the more common names. I also hadlisted +"test-by-use" which is to use the software in practice: +this may include testing a component A using the unit +tests for B because B uses A.The last I had listed was +"test-by-proof", which is rarer and is the only one +that requires analysing the implementation. + +2.1 test-by-Proof + +2.2 test-by-Use + +2.3 test-by-Rule + +2.4 test-by-Example + +3 Quelques cossins + +3.1 Protocol + +3.2 Preconditions + +3.3 Postconditions + +3.4 Wrapconditions + +3.5 Inheritance + +3.6 Aspect-programming and stuff + +3.7 Meta-abstractions + +3.8 Float-Signal Polymorphism + +3.9 Unit-Tests + +3.10 Algebraic Properties + +3.11 Temporal Logic + +3.12 TODO |