A release involves the delivery of the agreed functionality to our customers. Testing does not allow us to prove that a release is error-free, but testing can drastically reduce the likelihood of errors occurring. We want to ensure that a release has the following characteristics: new agreed functionalities that can be demonstrably delivered, functionality from the predecessor release that remains demonstrably present, while the probability for technical and functional errors in any delivered functionality is minimised. A number of best practices exist to achieve this goal. The foundation is laid from the start with the qualifications and mindset of our employees, who pay great attention to clean execution of the tasks during the implementation phase and verify their own contributions.
If we are responsible for the implementation of the entire system or a part of it, we use automated tests to quickly and comprehensibly check code components for the correctness of the results they produce, or for erroneous environmental conditions during result production (such as overlooked changes to interfaces or database models). We prefer automated integration tests to unit tests, especially under time-critical conditions. Successful unit tests are no guarantee for successful integration tests, while failed integration tests are highly likely to result in failed unit tests. In this respect, our experience shows that integration tests have a higher impact and efficiency, and we create tests (depending on the situation and requirement) in an a priori (test-driven development) or classical way, after the actual implementation of the function has been completed.
Optionally flanked, or if required by certification regulations, the automated tests are supplemented by manual tests at the application level – this is the day-to-day business of our testers. We have experienced technical personnel who are able to put an application that has been handed over to them through its paces. Usually based on the requirements, we create and document test cases, provide the necessary test environment (e.g. prefilled test databases, connected sensors or established network connections) and execute the steps stored for each test case for each build. Based on the consolidated test results, we then decide in consultation with you whether a release candidate can be released, if necessary with limitations/known issues, or whether the problems still have to be resolved before the release.
Regardless of whether you entrust us with a specific testing task for your own project, depending on the requirements and project stage, or whether you entrust us with a full system development – we ensure that the implemented system demonstrably meets your specifications and you can rely on your system.