#testing
## Unit testing
- Testing of single components
- Automated (regression) checks
## Integration testing
- Testing of interactions between components and even systems
- Examples: Database integration testing, component integration testing, system integration testing
## System testing
- Testing performed against the whole working system or product in an "[[End-to-end testing|end-to-end]]" fashion
- Find out whether the software is ready to be used by customers, establish confidence, validate that the system is complete, verify that functional/non-functional behavior is as specified
- Test environment should correspond to the production environment
- Performed by the vendor, assisted by automated smoke tests
## Acceptance testing
- Quite similar to system testing, but the distinction here is who performs the testing: Acceptance testing is usually performed by people outside the vendor, i.e. by customers and end users, or by business stakeholders
- Forms of acceptance tests: User acceptance testing, operational testing, regulatory testing, alpha/beta testing
- I would say that acceptance tests can only be performed with an [[Exploratory testing|exploratory approach]] and cannot be automated