In addition to the planning and implementation of programming work, the development of new software also includes successful integration. Comprehensive testing is therefore a key factor in ensuring the introduction of a new system.
These tests uncover problems and errors that need to be rectified before delivery to the customer. The various tests build on each other. In this article, we introduce you to the so-called test pyramid and its meaning.
Comprehensive Tests – From the Base to the Top
Comprehensive testing of newly developed software is as important as the programming itself. Comprehensive testing of the system is therefore central and important before the product is launched at the customer. It serves as quality assurance. Testing makes it possible to recognise and rectify problems before the software reaches the end user. Testing should therefore take place from as many perspectives as possible. This is the only way to ensure that the customer can use the finished end product without any problems.
There are basically four different test procedures that should be carried out before finalising new software: Unit test, integration test, system test and acceptance test. The four different tests systematically build on each other and should therefore all be carried out.
In this context, we also speak of the test pyramid. The unit or component test forms the basis. The integration test builds on this at the second level, followed by the system test. The top of the pyramid is the acceptance test. Software that has made it this far should generally only have minor errors. The acceptance test is the last step before the customer, so to speak.
In the following, we will take a closer look at the test pyramid and explain what is tested on the four levels and why these tests are so important.
Basics First – The Unit Test
The unit test has different names, whether unit, component or module test, the purpose remains the same. In the test process, the unit test is used to test the smallest units of software code. These units are considered independently of each other. Only if the smallest parts are functional can the entire software system run without errors.
Unit tests form the basis of the test pyramid, which is obviously due to the fact that this is about the many individual codes that together form the software. The aim of analysing and checking is to find errors in these smallest units at an early stage. The testing process can be divided into four phases.
- Planning: In order to carry out a test procedure efficiently, the process should be planned in advance. This includes, among other things, securing resources and personnel.
- Test cases: The development and preparation of use cases follows on from planning.
- Scripting: Creation of the scripts needed to perform the unit test.
- Unittest: The testing of the individual units naturally comes at the end of the process. The results lead to the optimisation of the software units.
There are different methods for implementing a unit test. Both manual and automated options are available. Manual tests have a greater level of detail, as each individual step is documented. Automated procedures only provide information on the failed units.
Although a unit test cannot usually uncover all errors in the smallest units, this procedure provides early indications of problems. Costs are reduced by optimising the code units identified as faulty. The basis for further tests is also optimally prepared.
Step Two – The Integration Test
In the second step, software testing concentrates on the interaction of several units that were previously checked in the unit test. In the course of a complete test process, the focus widens. After the detailed testing of the individual units, the field of vision is now larger.
Integration tests look at the cooperation between the units, i.e. whether a unit refers to another unit, uses its interface and whether this works smoothly. It is precisely at these interfaces that errors can occur, which a unit test cannot identify due to its focus on the smallest part.
The result of the integration test shows which interfaces between two or more units do not fit together properly. Sources of error can thus be eliminated in a targeted manner.
Step Three – The System Test
The step-by-step check of the interfaces in the integration test is followed by the system test, which again has an expanded focus. As the name suggests, the entire software system is now put to the test. All other systems are now added and analysed as an overall construct. The aim is to clarify whether the software does exactly what it is supposed to do and whether unexpected errors or problems occur when the individual components work together.
Compared to a unit test, system tests require more time, resources and personnel. At this point, the effort required correlates with the complexity of the task. The test combinations are almost infinite. It is therefore important to utilise the resources efficiently. A customised test environment is therefore the be-all and end-all before carrying out the system test.
Once the software has successfully passed the system test and it has been ensured that all requirements have been met, the test process can be finalised.
At the Top – The Acceptance Test
In some cases, the system test is also the final stage of the test pyramid. However, the value of an acceptance test should not be underestimated. Once a software has gone through all the previous steps and the tests and corresponding adjustments have been made, it is worth carrying out a final test to scrutinise the overall construct once again.
The acceptance test is also known as acceptance testing. It is the really final step before the software is delivered to the customer.
This last test is a so-called black box test. The parameters of the test must therefore be defined in advance. The tester therefore determines all the characteristic values that are used to check the input and output data. Depending on who carries out the test, the acceptance test belongs to a different category. There are three different categories.
- Customer Acceptance Testing: The tester is an external supplier
- Factory Acceptance Testing: The tester examines the components
- User Acceptance Testing: The tester is the user
User Acceptance Testing (UAT)
Whether referred to as beta, application or end-user testing, the most important sub-category of acceptance testing is user acceptance testing. Why is it so important? Quite simply, in this process the customer himself checks the software for its handling and usability. Feedback from the customer is some of the most helpful feedback a developer can get.
Ziel einer Software-Programmierung ist es, dem Kunden genau das Produkt zu erstellen, das er sich wünscht. Im UAT testet der Kunde nun die Software auf Herz und Nieren und schau, ob alles so funktioniert, wie es soll. Es steht damit die Benutzerfreundlichkeit und die Akzeptanz seitens der Anwender im Vordergrund.
For programming, the user review provides insight into topics such as Is the software intuitive to use? What problems occur during use? Does the software crash and in which situations does this happen?
If problems and errors occur, the manufacturer has the opportunity to make further adjustments and identify and eliminate the sources of error. In serious cases, the result is more labour-intensive, namely when important applications have been forgotten during programming or the user expresses further wishes when trying out the system.
Support with Testing
The various tests in the test pyramid are essential for bringing a successful product to market. While unit tests are carried out relatively quickly, the complexity and time required increase as the focus of the other tests increases. System tests and, above all, acceptance tests are therefore very time-consuming. In addition, system and acceptance tests are generally not automated and require manpower to carry them out.
In order to ensure the quality of the software, it is therefore advisable to consider support for the time-consuming tests. testup.io can help with user acceptance testing. One example clearly shows how the support provided by the testup.io experts works:
A testup.io customer had been struggling for some time with problems that occurred during his product demos. He was unable to remedy the problem himself and the source of the error could not be found. As the malfunctions were already leaving a bad impression on potential and existing customers, quick help was needed.
testup.io provided the customer with the test environment, which was used to find the source of the error on the basis of comprehensive, automated tests. What did the customer do with the help of the test environment? It used the test tools to run through different scenarios and simulate the software in these examples. Since then, it has used the testup.io test environment for all product demos, as this allows it to ensure quality.
This shows that with testup.io, developers and project managers have a strong and competent partner at their side.
Climbing the Pyramid – Taking the Fear Out of IT Tests
Software errors can have a negative impact on the acceptance of the product. System crashes or malfunctions frustrate the user and dampen confidence in the application or the manufacturer. Even if they consume resources and time, extensive tests are therefore an important element in the development process. The test pyramid is a clear way of visualising the structure of the test process.
According to the pyramid, the test procedure should be well planned and prepared in advance. Good preparation ensures that there are no further undesirable delays during the test procedure. Test environments such as those from testup.io make test implementation even easier.
If you are looking for a solution to simplify the introduction of new software and support it with high-quality product demos, you should give testup.io a try. Rely on thorough testing and convince your customers.
#test_pyramide #technology #strategy #projectmanagement #testpyramide #useracceptance #unittest #systemtest #integrationstest #software #testup