Software Testing
Test methods in software development
Software testing is an essential part of quality assurance in software development. High-quality (low-error, stable, etc.) as well as requirement oriented programs satisfy customers and ensure the placing of follow-up orders.
Tests and test methods should ensure this. https://en.wikipedia.org/wiki/Software_testing (29/05/2019)
Test levels
Test levels can be derived from the V-model, for example:

V-Model and software testing
Component testing/Unit testing
Unit tests automatically test each software component by calling each method with specific parameters to test it for the expected return value. These tests are implemented by the developers (see also TDD - Testdriven Development).
Integration testing
Integration tests or interaction tests check the correct cooperation of different components or subsystems. The focus here is on interfaces and correct data exchange. Especially in smaller projects, these are often implemented by developers themselves, e.g. on the basis of automated unit testing.
System testing
System tests check the entire system against functional requirements (desired functionality) and non-functional requirements (e.g. reliability, response time, usability, etc.).
These tests are usually performed by special testers (preferably not by the developers themselves) on a test environment that simulates the customer's productive environment. It has been shown that developers are not objective enough in their point of view and do not reckon with errors that they have made themselves.
Acceptance testing
An acceptance testing, also known as user acceptance testing (UAT), end-user testing, operational acceptance testing (OAT) or field (acceptance) testing) is a testing of the delivered software by the customer or client himself. They are usually a prerequisite for invoicing. This tests should be carried out on the productive environment (possibly with copies of real data).
The acceptance testing could, for example, be preceded by so-called beta testing (also field tests) by the customer, which involve a preliminary version of the software.
Conclusion
The boundaries between test levels are often blurred and tests can be classified and named in many ways.
It is crucial that testing takes place at the start of the project. Successful tests find errors. The earlier this happens, the more time, money and trouble is saved. Already in the design phase, the customer can be shown, for example, a functionless input mask that shows that certain parameters have not been taken into account (a static test method: Review).
The horror scenario par excellence is that the customer only realizes during the acceptance test: "Yes, that's not how we actually imagined it!"