article-spots
article-carousel-spots
programs
Hard skills
About testing and testers without myths and stereotypes
19 May 2020

What do testers do and why are they so important? What career growth is possible for those who choose testing as their profession? Dmitry Lebedev, Senior Software Test Automation Engineer, and Aleksandr Pozdniakov, a graduate of the EPAM training center, tell us what testing really is. Let us figure it out!

Is testing interesting? 

Testing is a multisided and very interesting process. A novice specialist has a wide range of development opportunities in testing. For example, you can develop your skills in backend testing, a part of the software hidden from the user’s eyes. Or, you can dive into user interface testing, a part of the system through which the user interacts with the application. Perhaps, you prefer testing games. Or, you like load testing. Or, you would like to feel like a “hacker” and go into security testing. Everything is possible in testing! 

Why are testers so important? 

Let us say we are developing an E-learning application for elementary school students. Imagine what would happen if we skipped the testing stage and provided our application to schools “as is”. Students, with their acquisitive mind, will test out the application by clicking all the buttons. For example, they will block their teacher in voice chat, which will lead to the lesson disruption. If we tested the application more responsibly in terms of functions it should perform and thought out the limitations in advance, this would not have happened. 

What does a tester do on a project? 

The role of a tester on a project is to check the result of the entire team (developers, system engineers, business analysts) work. A tester checks the compliance of the application developed by the programmers with the requirements. In other words, a tester is a conventional “universal soldier” who must understand not only how separate parts of the application work, but also the overall behavior of the system; and how changes in one module can affect the entire application. An equally important task for a tester is to understand and evaluate application requirements in terms of their operability. 

Could you be more specific? 

Let us imagine that our team is developing a WEB-oriented application for sales. Our application will have a cart to which users should be able to add products. How can we determine that the implemented module meets our expectations? How do you know if our users can add products to the cart? Moreover, our users must be able to pay for products, which means that we need to interact with third-party services allowing payment. How can we make sure that the interaction will be successful? This is only one scenario of interaction with the shopping cart, and there should be many more. This is where the greatest benefit from a tester’s work comes in. 

Practical example: Everyone has scissors at home and the main function of scissors is to cut one object from fabric or paper into two pieces. This is the expected behavior of our system. By closing the blades of the scissors, we get the real behavior of the system. If the scissors from the moment of leaving the factory do not cut paper, but only create creases, then they do not perform their function, which means that the actual behavior of the system does not correspond to the expected one. 

Who are you, Mr. Tester? 

A tester is a person who ensures the quality of the product being developed. A tester compares the requirements and the implemented application, comparing them for deviations. A tester can test both the whole system and a small part of it. 

Definitions  

So, we get to the review of basic definitions used in software testing. Oddly enough, our review begins with the question “What is software testing?”. 

Software testing is a process of investigation, software product testing, the purpose of which is to check the correspondence between the actual behavior of a program and its expected behavior on a finite set of tests selected in a certain way (ISO/IEC TR 19759:2005). 

There are many definitions of software testing, let us consider one more: 

Software testing is one of the software quality assurance methods, a software analysis process focused on identifying the degree of software compliance with the requirements. 

Therefore, software quality assurance is a system of measures to ensure compliance with requirements and expectations (ISO 9000:2005). Quality assurance includes testing, prototyping, code inspection, and some other methods. 

As you can see, all three definitions use the term “requirements”. What are the requirements? What are they needed for? Why do they even exist? In short, from a testing perspective, requirements help a quality assurance engineer focus on specific tasks. Note also that testing is an endless process, and it is physically impossible to test everything. 

Who is good for testing? 

You can always find “attention to detail”, “scrupulousness”, “responsibility”, etc. in the description of numerous vacancies (yes, the market demand is consistently high here) for the position of “Software testing engineer”. These are very important characteristics. We will only add this list with a few more qualities that are necessary for a top testing specialist: 

A good tester is someone who: 

  • Knows how to communicate with people and work in a team. 
  • Is not afraid to clarify details, even those that seem obvious. 
  • Always ready to learn a new subject field. 

What types of testing are there? 

As it was already said, software testing is a multisided process, and there is always a place for development. 

For example, if a team develops an application for different versions of operating systems, browsers, or other platforms, then a tester must have Compatibility Testing skills. Or, for example, a team develops a mobile version of an application, then Mobile Testing needs to be done. Or maybe you can simplify your life by making routine tasks in code? Then Automated Testing is for you. 

What about career growth? What can you expect after the junior level? 

There are many career opportunities for testers (as well as developers) in the company. A tester, like any other technician, can grow from a Junior Specialist to a Lead Specialist. 

For example, in EPAM, you can become a Tech Lead, Delivery Manager (DM), and Resource Manager (RM). Experience in testing will be a significant advantage if the development in one of the listed roles is a priority for you. Moreover, the work of a tester is no less responsible than the work of a developer, and it is rated just as highly. 

Summing up 

Software testing is one of the rapidly developing areas with high demand in the IT market. Testers are in demand in a wide variety of business areas (automotive, E-learning, E-commerce, Life Sciences, etc.), and within the area itself, you will find many different development opportunities from Mobile Testing to Data Quality. Thus, by becoming a testing specialist, you can improve your competencies in completely different fields, choosing the right direction for your career growth!