aboutsummaryrefslogtreecommitdiff
path: root/doc/PureUnity.lyx
blob: 20cc6f2fae93b26dae27dead5f50eaea2a51f3a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
#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 <matju@artengine.ca>
\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