* Gives us confidence that our code does what we want and expect it to.
* Promotes trust that our code, and so our research, is correct.
-If in doubt, remember [Geoffrey Chang](http://en.wikipedia.org/wiki/Geoffrey_Chang) and in the words of Bruce Eckel, in [Thinking in Java, 3rd Edition](http://www.mindview.net/Books/TIJ/), "If it's not tested, it's broken".
+If in doubt, remember [Geoffrey Chang](http://en.wikipedia.org/wiki/Geoffrey_Chang) and in the words of Bruce Eckel, in [Thinking in Java, 3rd Edition](http://www.mindview.net/Books/TIJ/):
+
+ If it's not tested, it's broken.
## Find out more...
* Run the code on a set of inputs.
* Save the outputs.
-* Refactor the code e.g. to optimise it or parallelise it.
+* Refactor the code, e.g. to optimise it or parallelise it.
* Run the code on the inputs.
* Check that the outputs match the saved outputs.
## Test-driven development
-Given a DNA sequence consisting of A, C, T and G, we can create its *complement*, cDNA, by applying a mapping to each nucleotide in turn,
+Given a DNA sequence consisting of A, C, T and G, we can create its *complement*, cDNA, which is DNA synthesized from a messenger RNA template by applying a mapping to each nucleotide in turn,
* A => T
* C => G
This is a standard format that that is supported by a number of xUnit frameworks which can then be converted to HTML and presented online.
-`nose` defines additional functions which can be used to check for a rich range of conditions e.g..
+`nose` defines additional functions which can be used to check for a rich range of conditions, e.g.
$ python
>>> from nose.tools import *