Testing is an evaluation process to find out whether a system or its components meet the specified requirements. This process consists of technical levels starting by software development experts and extending to the end-user. Test levels are mainly for identifying missing areas and preventing duplication between SDLC stages. Software development life cycle (SDLC) consists of many stages including requirement analysis, design, development, testing, and maintenance. Each stage is also tested. For this reason, there are various levels of testing.
There are four main test levels. These; unit testing, integration testing, system testing, and acceptance testing.
- Unit Testing
Unit or component testing is the most basic type of testing. Unit testing checks the functioning of the software by isolating each component (modules, programs, classes, objects, etc.). It is also made to prove that each component is correct in terms of fulfillment and functionality.
Unit testing is usually done by software developers with the help of a simulator or development environment. Any errors that occur are corrected immediately, without being recorded. Such tests should be done at the earliest stages of the software development process, and the software should be delivered to the test team in this way.
A software development professional should consider writing unit testing as part of the software development process. Thanks to unit testing, errors are detected during the software development process. This saves time and money. The BDD (Behavior Driven Development) approach, which lowers the costs in the SDLC cycle, is the biggest proof of the importance of writing unit tests. Unit testing is essential to produce quality products!
- Integration Testing
Integration means unification. Integration testing can be done during the integration of components of the software or during the integration of two different software. Therefore, integration tests can be done at different test levels such as unit integration tests and system integration tests.
Components that software development experts test separately during unit testing can cause errors when integrated with each other. Integration testing aims to test whether these different components (units) of the system work together correctly.
3. System Testing
System testing is carried out in a complete and integrated system. Allows checking the suitability of the system according to the requirements. Tests the general interaction of components. Includes load, performance, reliability, and safety tests.
The system test is the final test to verify that the system meets the specification. Therefore, it evaluates both functional and non-functional requirements for the test. System testing of functional requirements begins by using the black box techniques best suited for the system to be tested. Then, by switching to white box techniques, errors that black box tests cannot catch can be caught.
To minimize the risk of error regarding the environment where the system will operate, the test environment should be as close to the live environment as possible in the system test.
- Acceptance Testing
The purpose of acceptance testing is to build trust in the system, its parts, or the non-functional requirements of the system. The main focus in acceptance testing is not to find errors, but to show that the system is ready for life. However, even if the main focus is not on finding errors, many errors can occur, from typos to errors that can cause a big problem in the application.
Acceptance tests are generally done by the user or the customer. However, other shareholders may also be involved in this process.
Acceptance tests can be at many stages:
User Acceptance Test
It verifies that the system is suitable for use by end-users.
Operational (Acceptance) Test
It is the acceptance of the system by the system administrators.
Acceptance Tests According to the Contract
The acceptance test performed according to the contract is carried out according to the terms of the contract of the software specially developed for the customer. The acceptance criteria should be determined when the parties accept the contract.
Acceptance Tests According to Legal Legislation
The acceptance test performed according to the legislation is carried out according to the legislation determined by the state, such as legal or safety regulations.
Packaged software developers want to get feedback from their potential or existing customers before putting the software they developed on the market for sale. The alpha test is carried out in a controlled manner within the company that develops the software.
Beta (Field) Test
Beta testing or field testing is performed in an uncontrolled manner in customers ‘or potential customers’ environments.
Note: Some tend to include Regression Testing as a separate level of software testing, but this is a misconception. Regression Testing is a type of test that can be performed at any of the four main levels.
Is the Test Order Important?
These four test levels cannot be applied haphazardly during software development. The four test levels should not only be seen as a hierarchy from simple to complex, but the entire development process should also be seen as a sequence extending from the initial stage to the final stages.
Also, do not think that the acceptance test is only done after software development work. For example, in the Agile approach, acceptance testing can be performed every 2 weeks as part of the sprint demo. In a more traditional organization, 3-4 versions are published per year and user acceptance testing is performed in each version.
As a result, testing must be done at every stage of the SDLC process. The earlier the bug is detected, the less the cost of fixing the bug.