When it comes to software quality, testing is undoubtedly an important tool to ensure the success of the development phases by minimizing the occurrence of bugs and possible problems before the solution is deployed to the customer.
In order to understand software as a product, it is essential that it is subjected to the tests that certify that the software meets the requirements and performs the functions correctly and without errors. Just as an automobile manufacturer tests its vehicles before delivering them to the end user, the software solution must also be tested to ensure that it is of the required quality.
Software testing must cover the entire project development. In other words, the solution must be tested throughout its development so that each stage and completed functionality is evaluated in advance in order to proceed with the properly tuned solution.
Those who are looking for a company to develop a software solution certainly expect that their needs will be met in the best possible way. Therefore, there are quality dimensions:
Confidence: here it is necessary to know if the system is so intact that there are no errors during the execution, and if it has no errors and interruptions that can affect, for example, the functioning and/or safety of the software;
Functionality: it is necessary to evaluate if the system meets the parameters defined in the project, if its functionalities match;
Performance: is the system robust enough? Are there no problems in its execution when there is high load? When the robustness tests are performed, one looks for the scenarios that can cause the software to fail.
There are different types of tests that can be applied to a software to identify its bugs and improve the quality of the developed solution, the main ones are:
White box testing - uses the internal aspect of the program/system, the source code, to evaluate its components. It is also called structural testing. It involves examining the internal structural design and code of the program to test it. Furthermore, it can include such items as: analysing Data flow, state, cycles, etc.
Black box test – Unlike the previous test, which prioritizes internal aspects, the black box test examines external aspects, namely the functional requirements for the system. It is also known as a functional technique. The system behavior must be fully observed via input and output.
Gray box test - this type of test combines the previous two, hence the term "grey". Both internal and external aspects, input and output are evaluated;
Regression tests – tests are carried out for each version of software in which functionalities are changed. In this way, it is avoided that errors previously corrected in the software appear again when something new is added.
Unit testing - testing smaller software units in isolation to see if they all work properly. In agile methods, the goal is to run unit tests very frequently for quality assurance;
Integration Testing – after the units have been tested, they are verified to work properly together. The interaction between components or systems is checked;
Load Test – This test is performed to evaluate the usage limits of the software, how much it supports in terms of information volume, i.e. the stability of a system under heavy loads is evaluated;
Usability Tests - These tests are performed by a small group of users to see if the software meets their needs. This test analyses how the user utilizes the system and checks where he has more difficulties;
Stress Test – Here the software is pushed to its performance and functional limit to assess at what point it is no longer working properly. A stress test is, therefore, necessary to test the stability of the CPU, cache and main memory after overclocking.
Cross-browser testing – it is checked whether the website supports different Internet browsers (including Google Chrome, Firefox, Internet Explorer, Microsoft Edge, Opera, Safari).
In a world increasingly connected by technology, software testing is of a great importance as companies need to function correctly in order to remain competitive. Any mistake in a financial management program can result in huge financial losses. A bug in medical device software can kill someone or make it difficult to care for someone in need.
And it's not just the most extreme cases that require high-quality software testing, because a simple bug in a commonly used program can lead to the user complaining or not recommending it to other users and migrating to the competition. Whoever loses is the one who developed the software. That's why testing software is so important.
Developers often work with the mindset of "How is this going to work?". A good tester thinks, "How can this be broken?" - a very different mindset. The developer will have a hard time moving away from the "how it works" mentality as opposed to the "how it should work" mentality. Therefore, it is best to have the program tested by someone with a high degree of objectivity, such as QA or test engineers.
If no problems are found after the code review, the task is submitted to the test server (read more about the code review process in our other article).
At Kenner Soft we perform two types of tests: automated and manual.
When the code gets to the test server, we first do the load test via the K6 tool. The load test measures the system behavior when the system load increases (e.g. due to parallel users) in order to find out which load can actually be managed.
After that, testing is done using the Google Lighthouse tool. It allows website performance audits, with this tool one can test performance, Progressive Web App, SEO, Accessibility and Best Practices and check if the Google Page Speed Insights have not dropped.
Automated testing is then carried out using the TestCafe tool. It helps to do cross-browser testing of web applications without much configuration effort.
In addition, we use Lambdatest for cross-browser testing.
After that, the manual testing is performed. During manual testing, the tester checks the functionality of the website, for example, whether all blocks, texts, images are displayed correctly and are not shifted, or whether the individual business logic works correctly and without errors.
If the testing was successful and no errors were found, the task can be transferred to the live server. However, if bugs are found at any of these stages, the developers will fix them. All the processes of testing are repeated until everything works properly.
In the next step, we use the Release Manager. If all tasks with the same code version are successfully checked by all tests, the system publishes the release automatically. Only now it is possible to transfer this release to the customer's live or stage shop.
After release is on the customer's live server, all stages of testing are carried out again, but already on the live shop (i.e. automated testing via K6, Google Lighthouse and TestCafe and then manual testing).
Our agency Kenner Soft Services GmbH pays a lot of attention to the quality of the services provided. We check everything very thoroughly and carefully to deliver the best result to the customers .