few years ago, the work of the application tester was underestimated. Often the role of testing was on the margins of the project, and sometimes it was even overlooked. In recent years this trend has started to change. The importance of tests is more and more often equal to the work of programmers, and business starts to notice the importance of tests in projects. What is the daily work of a tester and his responsibility in a project and what tools does he use? I will try to answer these questions later in the article.
The tester's work begins at the first kickoff meeting. Then the team is introduced to the subject matter of the project, receives documentation and other information necessary to learn about the specifics of the project. Such a meeting is sometimes omitted, team members receive the documentation beforehand, and after getting acquainted with the materials the first planning begins. Already then both the tester and the other team members have at least a general knowledge of the project and should be able to plan the first sprint. Already at the stage of reading the documentation, the tester should plan the test cases. This approach helps to prepare for planning subsequent sprints and working on specific tasks. After the planning meeting, from which the team leaves with the user story written down, the division of user stories into tasks begins. This is mainly a programmer's task, but it is good if a tester is also involved in the process. This allows them to get more insight into the next areas of the project. The tester, taking part in the analysis of each issue, absorbs knowledge from the programmers, but also makes comments or suggestions on how to carry out particular tasks. Such an approach often allows avoiding various misunderstandings, e.g. concerning the appropriate division of tasks and the order of their completion, so that the tester can test subsequent tasks at each stage without unnecessary waiting.
The implementation of subsequent tasks in the project is often tedious work. It starts with the analysis of documentation, cases of use, individual tasks, and finally tests, and ends with implementation into production. The tester participates in project work from the analysis of documentation and implementation of project tasks to implementation. Most often the first implementation is not the last one, and in the meantime there is maintenance, i.e. taking care of maintaining the stability of the application at every stage, between each implementation and after implementation. Maintenance, most often referred to as support, is reacting to reported bugs, customer or team members who noticed some irregularities. The role of the tester is to verify possible reports, and after improving the application, to test the correctness of task execution.
Testing - what does it mean?
How does application testing look like? Testing is primarily to check the correctness of the task, compliance with the specification. When checking a given task, it is often necessary to check also other functionalities that could be affected by the change. Controlling other functionalities gives the tester confidence that the execution of a particular task has not adversely affected other areas of the application.
Such checking of other functionalities is called regression tests. They are intended to confirm the correct operation of functionalities that have already been implemented.
In his or her daily work, the tester must ensure that the application works correctly on different browsers, mobile devices, and in specific situations also on different operating systems.
Tester also has various tools available to support the testing process. These are primarily browser add-ons, extending the functionality of browsers with new possibilities. With the help of such add-ons, the tester can e.g. view the communication of the browser (client) <=> application (server).
Automatic tests help to maintain application stability at every stage of development, as well as after implementation. The simplest automatic tests can be performed using a browser add-on called Selenium IDE. This plugin allows you to record test steps and play the test on demand.
Automatic tests that offer many more possibilities are written using one of the programming languages, such as Java. In this case, programming knowledge is already required, sometimes also the operation of databases.
Other tools used in the tester's work are tools supporting the process of software delivery (uploading applications to particular test and production environments, running automatic tests). Such a tool is e.g. Jenkins, by means of which the whole process is automated and transparent.
Jenkins is a tool with the help of which it is possible to start e.g. the process of building and implementing applications (so-called deployment) and to run automatic tests. Each of these elements (deployment, automatic tests, etc.) is called tasks. These tasks are reported accordingly when completed.
Test report is delivered e.g. by e-mail or text message to interested persons. Such a process allows for much less involvement of people through greater use of automation.
What does the automation of the above-mentioned processes give us? First of all, it lowers the costs of project delivery, its post-implementation service, while constantly monitoring the tasks. The reports allow for a constant control of the application stability and provide information about emerging defects. Automatic application testing can take place 24 hours a day, 7 days a week with minimal human involvement. A human being in this process is only supposed to react to errors appearing in reports. Tasks can be started manually on demand or triggered automatically by means of the so-called cron (a program for cyclic task execution).
Load and performance tests
Another area I want to write about is load and performance tests. These are tests with which the tester can check how the application reacts to a heavy load. High load is primarily a large number of users using the application in a specific period of time. For this type of tests we use tools that allow to simulate many users. Such an application is for example JMeter. Among other things, it is possible to set the number of users using the application, the entry time of all users and the number of cycle repeats.
After starting a test, it is possible to track its progress and, most of all, errors and current execution times. Thanks to these data we can observe how the application behaves with increasing load. When more and more errors appear and times start to increase significantly, it means that the threshold at which the application becomes inefficient has been reached. Then we should ask ourselves if this is what we expected, or if we want the application to be more efficient. However, the fault often does not lie on the side of the application, and also on the side of the server-network infrastructure. It happens, however, that the application does not cope with a large number of users and should be optimized accordingly.
The last topic I just wanted to mention is security tests. These are tests that check the vulnerability of applications to various types of hacking attacks. These tests are very complicated and very specialized knowledge and tools are needed here. This area of testing is most often handled by specialized companies or specially trained testers.
I hope that I have managed to bring a little closer to the tester's work, the application testing process
and show the importance of the tester's role in the project.
The following statements should be a summary of the tester's work and the entire test process:
- tester usually has the last word when it comes to the correctness of tasks,
- tester checks and decides whether a given functionality has been implemented according to the design assumptions and works correctly,
- sometimes the tester has to say "Stop! The application is not working properly! We can't implement it on time!" or "It's OK! Green light for deployment!",
- tester must have a broad knowledge of the project, the individual tasks,
- tester must have extensive knowledge of various technologies, tools supporting the process of software development and testing.
At the end, let us imagine a project without a tester, implementation without a tester, post-implementation maintenance without a tester. Imagine the inability to finalize the order in the online store because there was no one to check it after the "corrections". Imagine the functionalities that worked with the previous implementation, and the next one stopped working because no one checked whether the new changes do not spoil the previously working areas of the application. Imagine the financial losses resulting from this.