There is no system that is 100% correct. Every system or procedure has bugs. Know that everything you write is not correct--it is subject to change, and will need correction. Some of the best systems in the world are modelled around this fact.
One, in particular, is the airline industry, and we know there have been very few accidents, except of late. Their risk is modelled around systemic failure or the Swiss cheese model, represented in this diagram:
Each component of your system can have bugs, which is expected. The problem comes into being when the holes line up and a flaw is exposed. Having an adequate set of tests along the way can help with this problem.
In this chapter, we will cover the following topics:
- Test-driven development
- Integration API testing
- xUnit