About testing: why is it essential and what is useful

Close
Do you have any questions? Contact us!
I agree the Terms of Service
published May 22, 2020

One of our company's most important tasks is to ensure the quality of our customers' software. This is a complex process that, in addition to collecting functional requirements and the development itself, includes determining quality parameters, developing a testing strategy, conducting various software checks, detecting and describing defects, fixing them, and stabilizing the product.
In previous articles, we talked a lot about our software development approaches at different stages but did not yet talk about testing. Meanwhile, testing is one of the most critical moments in developing a product.

The purpose of testing is to help create a quality product. To ensure product stability, many types of testing have to be carried out - manual, modular, migration, automatic, load, and others; all of them help us prevent defects and contribute to the high quality of product development.

We often call defects "bugs". A bug is a piece of code with an error due to which the system cannot fulfill its function. This does not always mean that everything does not work. It may work, but not as expected.
It is testing at all stages of development that helps us identify weaknesses and vulnerabilities, determine project requirements, and provide reliable information about the product's quality and condition.

Who needs testing and why?

First of all, the client. At Attractor Software, we strive to optimize client development costs.
In the matter of testing, the main argument is saving the client's money. It is much more expensive to fix a bug in a released product than prevent it at the development and testing stage.

Just imagine, you have a payment system, and it works fine. The user pays for the service and receives it. However, a problem that was not identified when all possible scenarios were not tested allowed the money to come not to you but a third-party bank account. Such a vulnerability, which was not discovered at the time, could be a considerable loss. The problem may not be so dramatic, but tests in time make it possible to identify all system behavior scenarios and prescribe the desired behavior.

If you release a product containing a certain number of bugs, users won't be happy facing them. It will be challenging to convince them that the problem is solved and earn their trust back. The first impression is difficult to change, so it is crucial to release a high-quality product and make sure that it is working before it falls into your real users' hands.
Further on this list is the company itself. For the company and the development team, tests are significant for the successful maintenance of the project. Many Attractor Software clients have been cooperating with us for more than three years, and the products that we develop for them are already very large-scale. Naturally, the larger the project, the greater the risk that adding a new function may change the old functional behavior. Not tested functionality may conflict and thereby increase the number of defects. But we are working not on deterioration but continuous improvement and development of the provided product. Testing, in this case, guarantees us that the quality of the services we provide will not fall.

Tests also help when new specialists are introduced into the project - we know for sure that a new project participant will not break the already implemented functionality, which has been carefully tested. From myself, I want to say that test tickets serve as excellent documentation for the code and the project as a whole. We often write them in Gerkin, which is very similar to a simple business language and is easy to read for any customer. For instance:

Function: Portion Size Calculation
Scenario: When entering valid parameters, the correct answer is displayed.
When I am on the form page
And enter the age of 5 years
And I enter the weight of 5 kg
Then I see the weight of a portion 500 g
The main thing in the testing process, of course, is the developer. When writing a test, the developer begins to understand the product requirements better. By clarifying some points when writing tests, the developer makes his code more stable and eliminates the most straightforward errors that he might not have noticed before.
When the new module is "covered," a qualitative check is carried out to ensure that the central and contemporary cases work. This will confirm that the changes that occurred in the application did not break anything.

We often resort to the TDD approach in development. TDD (Test Driven Development) is a test-based development.Let's take a simple puzzle. We need to make a form in which we enter the cat's age and its weight, and in return, we get how much food the cat should eat per day. How to approach this task using the TDD approach:
  1. We are writing a test to verify that the getCatFood () function returns the desired values in different situations.
  2. Check that the tests have fallen (no code yet)
  3. We write the function code very carefully- so that the tests pass.
  4. Check that the tests passed.
  5. At this step, we can think about the quality of the code. We can safely change the code as you like because we have tests that will confidently say that we were mistaken somewhere.
  6. Repeat all the above steps.

In our team, test cases based on user experience are most often conducted by the project manager.
A test case is a set of steps that you need to follow to ensure that the product has no errors and works according to the requirements. This includes the functionality tested and the testing method. There are different methods for making the test, each of which reveals the disadvantages of a particular type.

In testing, we like to use Selenium - a software library with several products that simulate user actions. A separate plug-in of this product can even record program code activities, which will then be convenient to work within the developer's environment.

Many tools allow you to analyze and improve the product test coverage, add new tests for specific cases, and eliminate duplicate tests. Thus, we can ensure the stable operation of the entire system and satisfy the customers and clients.

If you want to get a product that will meet your expectations and work stably under any conditions - we are ready to help you! Contact us.
Did you like this article?
Share article on social networks
Worked on the article:
Maria Ilchenko
Manager of corporate culture and Internal communications
Made on
Tilda