Testing is the process of modeling all kinds of scenarios of user actions in order to search for developer errors. Testing is so important because usually when you are creating a software product, about half of the time and budget is spent specifically on this stage.
The tester has to quickly find as many application errors as possible. This is an important stage of software quality assurance, aimed at a thorough study of the program code and identification of errors in its operation. The software is examined by testing engineers who try on the role of end-users, simulating situations in accordance with test scenarios and recording the result.
Today, there is a sufficient number of frameworks that support all existing programming languages aimed to automate the process. It would seem like the easiest thing - just choose the appropriate software platform and test your application in automatic mode. But not everything is as simple as we would like it to be, and therefore manual testing is not giving up its positions. It ensures the high quality of the application, and significantly reduces your expenses.
Let’s now review the pros of manual testing compared to the automated testing.
A qualified tester can get information about the status of the product relying on personal experience. In the case of automated testing, this is impossible because it is based on previously developed cases, and changing the algorithm requires a certain amount of time, thus, a certain amount of expenses.
Another advantage of manual testing is the possibility of improvisation. Suppose a customer made a decision to change an app function before release. In this case, you have to rewrite ready-made software tests. When testing in automated mode, this requires updating and checking autotests, and this procedure costs time and money. In manual mode, updating the feature is much easier and costs less.
The ultimate goal of any testing is to check whether the application provides the expected results and whether it has any errors. The testing of functions that affect the further development of the application is especially important. In this situation, reconfiguring the autotest can cause a shift in the schedule and missed deadlines.
To keep up with the competition, you will have to add new functionality to your application from time to time. Manual testing will allow you to quickly test the new features of the product without creating autotests.
Manual testing is especially important when developing mobile applications, which are usually created in short sprints and require minimal time to implement features. The tester immediately informs the team about the identified bugs and continues working. Automated testing can be done later by preparing large arrays of code.
The final argument for manual testing is that automation is more expensive. It requires specialists with the appropriate qualifications and the appropriate remuneration. Autotests need to be kept up to date, that is, until the release. Having to work on always advancing the automated tests will negatively affect the speed of application development and team motivation in general.
There are a few beliefs that might make you hesitate about choosing manual testing. Let’s take a look at the most popular ones.
If you don’t want to pay for testing at the development stage, you will have to pay for technical support and bug fixing after the product is released to the market. Early testing helps reduce software maintenance costs.
Testing itself is carried out almost simultaneously with the development, so there is no reason to believe that this process takes a lot of time. The truth is that fixing the errors identified at the testing stage takes time and effort, but it is easier than fixing them after the release.
Obviously, testing depends on the code written. But still, it is necessary to check the software requirements and create test artifacts, and both of these procedures can be performed before the software product is completely ready.
It is impossible to say that testing covers 100% and that all bugs are easy to predict and fix. The fact is that most problems can be predicted at the testing stage, but exhaustive testing is hardly possible.
The purpose of testing is to find and identify the maximum possible number of bugs. It is impossible to find them all. Not even the most expensive modern automated testing tools can guarantee 100% protection of software against bugs.
In fact, evaluation of all possible shortcomings in terms of product quality is a joint responsibility of:
designers who need to provide an exhaustive description of system scenarios;
developers who must adhere to established rules and standards;
testers who must analyze all this data and check all possible options for the system and indicate what needs to be fixed.
This is one of the most common misconceptions related to testing. Trying to find the one to blame is not a good strategy. The whole team is responsible for the quality of the product. Software testing teams enforce the quality standards during product development. Monitoring teams also point out problem areas to development teams, and their joint responsibility is to fix the problem and release error-free software.
Full automation of the testing process is not possible. To varying degrees, manual testing is always necessary. The testing and quality assurance teams are to evaluate how much the system needs manual and automated testing.
In general, automated testing tools work best when it comes to simple, accurate, cyclical checks that require processing large amounts of information, but testing that requires ingenuity and decision making is best done manually.
A tester must have deep knowledge to help them anticipate and find problems in specific software. This work requires a creative approach and developed imagination since you need to see the connection of all elements of the system and be able to predict possible failures in its work.
The tester is supposed to understand the entire cycle of software functioning, interdependence, and mutual influence of its individual modules. Formulating test approaches, developing tests, and carrying out testing are quite creative processes.
Manual testing needs to follow several parameters.
Depending on the task, functional or non-functional testing is performed. The purpose of functional testing is to check which functions are implemented in the product. During non-functional testing, the engineer checks how the software works as a whole. The following parameters are tested:
performance - work under load;
whether the interface is convenient;
protection of the software product from hacker attacks, unauthorized access to data, etc.;
whether there are any problems during installation, uninstallation, or software updates;
software compatibility with a specific environment;
reliability - work under continuous load;
localization of the software versions (linguistic and cultural aspects).
This may be positive or negative:
Positive - tests whether the program matches the expected user behavior;
Negative - shows how the product will work in case of unexpected user behavior.
You can test:
Separate software modules, units of software. This type of testing can be carried out by the developers themselves.
Integration between individual modules.
The entire system - for compliance with the requirements for the software product.
Testing can be carried out:
according to previously written cases;
in the mode of simultaneous development and testing;
without the development of tests, based on the tester’s intuition and experience;
According to the importance of the tested functions, testing is divided into:
Smoke testing - checking the most important functionality of a software product;
Testing the critical path - checking the functionality used by typical users in everyday activities;
Advanced testing - verification of all declared functionality;
Generally speaking, the manual approach is recommended for the following types of testing:
Research testing. In preparing the script, the tester relies solely on their own experience, intuition, and logical conclusions. The study is carried out fast and without quality documentation. The goal is to quickly identify critical defects in the software.
Usability testing. Naturally, analysing software for usability cannot be automated. It can only be done by a human.
Intuitive testing does not involve a pre-prepared script. In the verification process, the engineer relies on personal experience, common sense, and product knowledge. By improvising, the tester identifies software bugs.
We start preparing test cases along with the start of product development. Cases may vary in level of detail, but we make sure to provide coverage for all software, so that we are ready for immediate testing.
Testing begins with a smoke test, which shows whether the product is ready for verification. Simply put, a function or application starts up, and we check if it is possible to start functional testing. The term "smoke test" is old, it has been around since the time of microcircuits, which sometimes smoked during incorrect operation. In our case, this is the first test of the product’s performance that shows if it is possible to log in at all, without specifying whether the data entered in the fields are valid, whether additional features such as password reminders things work. If all this works, we proceed to a deep check of this module - we take negative cases with boundary values, and assess the compliance with validation rules.
The next stage is an array of regression tests done for the purpose of finding errors, even in those places where there were no problems before. Regression is an assessment of the product’s functionality on a standard set of cases during the implementation of each new module and each change. When developers add new functionality, the current version may be damaged or a new feature may conflict with existing ones.
For example, adding new screens, and therefore changing the navigation, can disrupt the functioning of the menu, or at least its presentation.
Problems can also be caused by updating the library used by the application and changing the environment it works in. The role of the regression testing is the greater the more often the application is updated. You should not be limited to a single test carried out when the feature is already implemented - you need to check all the changes.
A full test is, of course, carried out when the release candidate with one or more features is ready to go into production, but it is still necessary to apply certain relevant cases at certain stages of development.
The last stage is the release candidate. This is a beta test by our testers and business testing when the product is evaluated by the customer or a specific group of users. After that, the application is ready to go into production.
But the work does not end there - we test application updates and their compatibility with earlier versions, compile cases for checking innovations, and, if necessary, automate these scenarios.
Some Utor customers come to us insisting on fully automated testing, believing this is the only reliable way to test. From our experience, automation may be the worst option for a company. Why? Because there are many tests that are performed only once or twice, and therefore you don’t need to spend precious time on automating them. We saved one of our customer’s money by doing a quick manual check of his site, which did not support the iPad. It took only a few days.
Manual testing is ideal for new small applications where something often changes at the level of graphic design. These are usually video games and e-commerce websites. Here, manual testing is the best way to control and correct errors. For example, in manual mode, we quickly found a code error in a client’s website, as a result of which the “Send” button in the logo of the cart dropped 49 pixels lower, which led to incorrect displaying of the letters.
What tools do we use? The main manual testing tool is the experience and intuition of Utor team engineers. As for technical means, here are our tools and services:
Pairwise Testing– Pairwiser;
Performance – PageSpeed от Google, WebPageTest.
This is not a complete list of manual testing tools. If you are interested, we will provide you with all the information about the applications of manual testing that will be used to validate your particular product.
It is hardly possible to create a software component that can perfectly copy the systems of human perception in the foreseeable future.
This means that a product manufactured for a real person should be checked by a real person. To a greater extent, this applies to the visual design of the product - “moving” blocks and elements, the correct display of media files, etc. - for a very long time, this will be controlled exclusively by the tester.
It is impossible to fully and efficiently automate a process as original as testing the ease of use for programs or components This is especially applicable to gaming products and applications, which include a lot of animation and visual subtleties.
Whatever happens in the future it will not be the "death" of a manual tester, but evolution to a new level of professional development.
In this regard, the UTOR team fully meets modern trends and is ready to take on an order of any level of complexity. Feel free to contact us to discuss your product testing strategy and build a team of professional testers.