#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language english \inputencoding auto \fontscheme default \graphics default \paperfontsize default \papersize Default \paperpackage a4 \use_geometry 0 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title PureUnity \layout Author Mathieu Bouchard \layout Date January 13th, 2006 \layout Abstract This paper covers the theory behind PureUnity, PureData's test framework. \layout Standard \begin_inset LatexCommand \tableofcontents{} \end_inset \layout Section What is testing? \layout Subsection a test tests something that gets tested \layout Standard (write ontological nonsense here) \layout Standard fsdfsdf \layout Standard sfsdfsdf \layout Subsection a triad of testing \layout Standard I've thought of a triad: \layout Itemize A. "the real thing" \layout Itemize B. what it's documented as \layout Itemize C. a way to verify that (1) and (2) agree \layout Standard and another one: \layout Itemize changing A to match B+C: programming \layout Itemize changing B to match A+C: the scientific method (aka reverse engineering) \layout Itemize changing C to match A+B: unit-tests and contracts and scientific experiments \layout Section Methodologies of Testing \layout Standard 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. \layout Subsection test-by-Proof \layout Subsection test-by-Use \layout Subsection test-by-Rule \layout Subsection test-by-Example \layout Section Quelques cossins \layout Subsection Protocol \layout Standard (steal text from the GF paper from Graz) \layout Subsection Preconditions \layout Subsection Postconditions \layout Subsection Wrapconditions \layout Subsection Inheritance \layout Subsection Aspect-programming and stuff \layout Subsection Meta-abstractions \layout Subsection Float-Signal Polymorphism \layout Subsection Unit-Tests \layout Subsection Algebraic Properties \layout Subsection Temporal Logic \layout Subsection TODO \layout Bibliography \bibitem {co99} a constructive deconstruction of type theory by Alistair Cockburn \layout Bibliography \bibitem {key-7} Programming Ruby by David Thomas & Andrew Hunt \layout Bibliography \bibitem {key-6} Abstract Algebra, Dummit & Foote \layout Bibliography \bibitem {key-5} Wikipedia \layout Bibliography \bibitem {key-3} my brain \layout Section* Colophon \layout Standard made with LyX and some coffee \the_end