About testing: why it is important and what is useful

Write 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 the software we provide to our customers. 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 approaches to software development at different stages but did not yet talk about testing. Meanwhile, testing is one of the most critical moments in developing a product, which should be skipped in no case.

The purpose of testing is to help create a quality product - a strong brick house that will not fall if we decide to complete it. 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 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 of the project, and why?

First of all, to the client. At Attractor Software, we strive to optimize client development costs and do everything so that the client does not overpay.
In the matter of testing for the client, the main argument is the preservation of his money. It is much more expensive to fix a bug in a released product than to prevent it at the development and testing stage.

The tested application will provide your business with safety and security. 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 will find them and are unlikely to be happy. It will be challenging to convince them that the problem is solved, and they can gain trust and use your application. 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 the hands of your real users.
Further on this list is the company itself. For the company and the development team, tests are especially important for the successful maintenance of the project. Many clients of Attractor Software have been cooperating with us for more than three years, and the products that we develop for them are already very, very large-scale. Naturally, the larger the project contains different functionalities, the greater the risk that adding a new function may entail a change in the old functional behavior. Functionality not tested on time 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. Most often, we write them in Gerkin, which is very similar to a simple business language and is easy to read for any customer. For instance:

Function: Feed Amount 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 amount of feed 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 simplest errors that he might not have noticed before.
When the new module is "covered," a qualitative check is carried out to ensure that the main and new cases that appeared in the logic with the advent of new functionality work. This will confirm that the changes that appeared 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. Such tests are immediately implemented in the code; they are written by the developer.
Let's take a simple puzzle. We need to make a form in which we enter the age of the cat 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 in which we 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 merely - 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 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 that it 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 certain 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 actions in program code, which will then be convenient to work with already in the developer's environment.

There are a large number of tools that allow you to analyze and increase the coverage of product tests, add new tests for specific cases, and get rid of 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 will 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