4 levels of software testing
We have already talked about Business Process Automation. So, imagine that you decided to automate business processes within your company and the question arose about software testing. What do you know about software testing? Do you find the software development phase important?
According to the ANSI/IEEE 1059 standard, software testing is a process of analyzing a software item to detect the differences between existing and required conditions (i.e., defects) and to evaluate its features.
Software testing is not just a simple search for bugs. This is a process aimed at determining the quality of a software product in line with expectations and customer requirements. Testing is important because software bugs could be expensive or even dangerous. For example, in April 2015, Bloomberg terminal in London crashed due to a software glitch and affected more than 300,000 traders on the financial markets. It forced the government to postpone a 3 billion pound debt sale.
Software testing has 4 levels and each level has a specific purpose:
- Unit testing
- Integration testing
- System testing
- Acceptance testing
A unit is the smallest functional part of a program or application. The unit cannot function separately but only in combination with other units. Unit testing is a level of the software testing process where individual units of software are tested. Developers write tests for each non-trivial function or method. This allows you to quickly check whether the code change has led to errors in the already tested parts of the program. It also facilitates the detection and elimination of such errors.
Integration testing is the next level after unit testing. This is a level of the software testing process where a group of interacting modules is tested. The purpose of integration testing is to ensure that the modules function successfully in conjunction with each other. This testing level is designed to find interface defects between the modules and functions.
There are several approaches to integration testing:
- Bottom-up Integration Testing:
Testing takes place from the bottom up. The lowest level modules are tested first, moving up to the higher-level modules. It finally culminates in integrating the high-level modules to a low level to ensure the system is working as intended. Drivers are used as a temporary module for integration testing.
- Top-down Integration Testing:
Top-down integration testing is a technique used to simulate the behavior of the lower-level modules that are not yet integrated. Stubs are the modules that act as a temporary replacement for a called module and give the same output as that of the actual product.
System testing is a level of the software testing process where the application is tested as a whole. At this stage, the application is tested in an environment similar to where the application will be deployed. The goal at this level is to evaluate whether the system has complied with all of the outlined requirements.
There are two approaches to system testing:
- Requirements based - for each requirement, test cases are written to verify that this requirement is met.
- Use case base - based on the idea of how to use the product, use cases are created. For a specific use case, one or more scenarios can be defined. Test cases are written for each script to be tested.
Acceptance testing is a formal testing process that checks the compliance of the system with the requirements and is conducted with the aim of:
- determining whether the system meets the acceptance criteria;
- the decision of the customer or product owner is accepted by the application or not.
During this stage, the user will test the system to find out whether the application meets their business’ needs. If the user is satisfied, the system is ready for release.
Our work is in line with Agile methodologies. We test all the development stages. Our company testing process begins at the stage of analyzing customer requirements, requiring us to initially determine whether customer requirements are realistic. This is the first step in the Software Testing Life Cycle (STLC). We will describe it in detail in the next article.
Why does our QA-engineer start working at the stage of requirements analysis? In the early stages, it is easier to find bugs and fix them. When requirements are determined and clear, the development can begin. Each developer checks his part of the code. Then, our QA-team checks the code again. We believe that code-review helps to avoid bugs and improve the code quality.
Testing at all stages of development makes the product more stable, subsequently leading to cost reduction. If you work with us, you do not have to worry about the security of your application and budget.