Annotated Reading
(1) Specification by Example, by Martin Fowler
- An exhaustive description of the differences between design-by-contract and specification by example.
 
(2) Agile people still don’t get it, by Cédric Beust
- It raises the question on the use of tests as specification language when we have a formal description, a S-system, “How do you specify an exponentiation function with a test?”.
 
(3) Mocks Aren’t Stubs, by Martin Fowler
- Describes the differences between the different types of Test Doubles
 - Contains a discussion on the impact of Stubs and Mocks on design when a test-driven development approach is followed. The use of stubs and the use of mocks may result in software that complies to different design principles.
 
(4) Test-first programming, by VersionOne
- A comprehensive description of test-first programming and its impact and relation with other aspects such as debugging and test-driven development.
 - With test-first programming you spend less time debugging.
 - The analysis created during the debug is lost after it bug is found.
 
(5) Patterns for System Testing, by Linda Rising
- A set of patterns for a quality assurance team. It covers the social and human aspects of testing
 - It is not possible to test everything! How can we efficiently use the time available for testing?
 
(6) The Practical Test Pyramid, by Ham Vocke
- Trade-offs on the type of tests in a system and their frequency.