Unit tests make it possible to write clean units of code and helps in maintaining such units of code with enough confidence as they evolve. Much like any other code, unit testing code too will become unmanageable and untrustworthy if not written properly. One of the symptoms of a badly written unit test is it's non-determinism. In a wonderful talk (see below), Martin Fowler points out the causes for test non-determinism and provides his solution to tackle them.
In the same talk, he takes on the need for Software Design. He emphasis how internal quality of a clean software would come to help in reduced cost while adding new features, his Design Stamina Hypothesis and different ways in which design is compromised.
He also touches Agile, identifying where are we now in the agile movement and where are we heading and what to expect. Overall, a nice presentation to watch and learn from.
Some highlighting points:
Here is the full talk. Enjoy.
In the same talk, he takes on the need for Software Design. He emphasis how internal quality of a clean software would come to help in reduced cost while adding new features, his Design Stamina Hypothesis and different ways in which design is compromised.
He also touches Agile, identifying where are we now in the agile movement and where are we heading and what to expect. Overall, a nice presentation to watch and learn from.
Some highlighting points:
- Non-deterministic test is WORSE than useless
- Badly designed software is a sin
- Global variables are created by satan as a trap for developers
- Never name a method badly
- Never compromise on design
- Design is a continuous learning
Here is the full talk. Enjoy.