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
- Unit Testing
- Integration Testing
- 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).