Motivation

This is a reference guide for testing software in an incremental development environment. Together with monitoring and alerting this guide hopefully manages to think about testing in a holistic framework which covers the design, implementation, build, release, and (post-)live stages including the security.
During my time at university I found it useful to keep an Integration toolkit at hand when solving calculus problems and to use it as a reference when solving many different types of integrals. As software development is also intellectual work, I like to think that it is also desirable to keep a toolkit for every stage of the software engineering process and especially for the various testing areas.

Software testing methods

In Sommerville's Software Engineering \cite{2008software}  we can read that he assigns testing two purposes: validation for the stakeholders that the software works as intended and verification as a defect discovery process to "root out errors, undesirable behavior, data corruption and other incorrect consequences."

Testing Levels

  1. Unit Testing
  2. Integration Testing
  3. System Testing
Unit testing tests the functions. Integration testing tests the interfaces between components. System testing tests the system as a whole (end-to-end).