Is the project going to a new level? Testing needed

Suppose that you, the product creator, have studied the target audience, hired an experienced team of developers and analysts, taken market share, marketers attract partners, customer service managers advise thoroughly, you regularly run promotions.

It would seem that you have everything. But user payments and the audience began to decline, and customers began to refuse the product.

Perhaps it is a matter of production? Take a look inside and maybe you will see how:

  • hotfixes come out more often than releases;
  • or a support service is inundated with requests and continuously parses critical defects;
  • or meaningful cohorts of users cannot get the key features of the service.

And, even after identifying problems at this stage, it is not always possible to understand how to regulate the whole process, because often each element of the chain separately does its job well, and the end result is not happy. Think maybe it's time to hire testers?



***


Each team member can test. According to Agile principles, this activity is officially performed by everyone, not just testers. Analysts know better than anyone what features the customer expects and how they should work. Unit tests, code reviews, pair programming and regular developer self-tests ensure the quality of the code. But there are cases when this testing becomes insufficient for the final quality. At this moment, independent testing comes to the "scene".

Testing performed by an independent professional group is called independent. The less the team affects the procedures and conclusions conducted by testers, the more independent it is. B. Beiser in the work "Testing the black box & raquo; wrote: “The purpose of independent testing is to look at the product from a different point of view, and therefore to perform other tests; thus, more versatile testing is performed than if only the developers were testing. ”
Professional testing begins with a test analysis and test design:

  • selection of a minimum set of checks to ensure the maximum amount of functionality;
  • setting the sequence of test runs in accordance with the criticality of the functional and the risks of defect release.

The need for professional independent testing arises under the following conditions:

1. Rapid growth


The success of the product in the competition is a great event, as well as an unexpected load on production. New users, new requirements, large-scale changes force the team to perform more tasks in less time. As a result, the team does not have time to test or intuitive testing ( Ad-hoc testing ) misses critical defects.

Testing is developing in parallel with other areas of knowledge in software production.

Approaches and methodologies are not so volatile, the latest innovation in test design was published in 2009 by James A. Whittaker in his book “Exploratory Software Testing” . Meanwhile, new tools for testing are being developed continuously, among them:

  • Tools for quick verification of layout on different browsers and devices, reconciliation with layouts, spell checking, page response time, etc.
  • Tools for executing, redirecting, modifying, decoding, tracking API requests;
  • Tools for preparing test data and conditions in web, desktop, mobile, api applications.

Professional testers improve and speed up testing with the help of modern techniques and tools, pay special attention to finding effective solutions, while allowing the team to focus on modernizing business processes.

2. Entropy


A long-lived software product speaks of business stability. On the other hand, over the course of several years the product adapted to the market, customers, users, accumulated a variety of functionalities, including logically contradictory ones. The statistics of the HR portal show that the natural level of staff turnover in IT is 8-10% per year, which means that in 5 years the development team can be updated by almost half. During the life of the product, the team may change the architect and key developers, people who knew the original architecture and the logic of its scaling.

According to F. Brooks in the work   “Mythical Man-Month”,any system seeks to destroy the structure and increase entropy with each new correction. Over time, the product acquires the so-called legacy-code, inherited from incompatible functionality, quick bugfix, inexperienced developer. However, under pressure from deadlines, the team does not always have time to cover the code with unit tests. Under such conditions, it is impossible to predict which parts of the code will be affected by this or that correction and which defect will give rise.

Professional testers check not only new features, but also the regression of the entire system. The content and method of conducting regression testing is the subject of a separate focus.

3. Customization


It’s good when a product receives new cohorts of users, scales to cities and countries, specializes functionality for different roles, and adapts to the lifetime of users in the system. From the perspective of the system, this increases the amount of critical functionality and how to use it. The same function can be used for different purposes and in different conditions by cohorts of users. There are so many roles and conditions in a large complex system that the analyst can forget about one of them during the development of requirements. In fact, a killer-feature for one role can become a blocking defect for another, no less significant.

Professional testing checks the use of the system for compliance with the goals of users, asks clarifying questions, and adjusts the content of regression testing in accordance with the new priorities and business tasks of the system. Updating the set and priorities of the tests is the subject of special attention of the tester.

4. Distribution


The IT environment today provides endless choices, micro-service architecture, cloud data centers, distributed project teams. Whole products, from the user's point of view, are actually split into micro-applications, written in different development languages, located on different continents, created by different project teams and companies.

For example, buying a trinket in an online store, on the one hand, is an action of a few clicks, on the other hand, processing and transferring data in at least three applications - on the store’s website, in the payment gateway and payment system. Each application is developed by a project team with its goals, organizational structure, plans.

Under these conditions, the likely result is “the bullet flew out, the problem is on your side”: when each team developed its own part in accordance with the requirements, but together they do not add up to a work function.
Before commissioning, professional testers consult, supervise, configure environments for the integration testing run, and perform checks from the perspective of the end user, and not just the requirements for individual components.

Thus, large, age-related, popular, rapidly changing products oblige testing to be a separate type of activity. Effective testing is armed with specialized methodologies, tools, and a specific goal that is different from the goals of the rest of the team. The goal of the analyst is to find out the real needs of the customer, the goal of the developer is to deliver the ordered changes in full, the goal of the tester is to test the entire system, examine the user and encounter defects instead.

***


The delegation of testing a separate role under the control of a team is the second step to independent testing. Testers can be hired on their own or outsourced testing in an independent organization.

From outsourcing testing at this step, the company receives:

  • professional testing of your product with relevant tools;
  • guaranteed qualified personnel. Outsourcing specializes in the selection and development of employee competencies;
  • the opportunity to use testing for a limited time, to attract an additional type of testing or to replace it;
  • transparent work of testers.

Outsourcing testing companies work for a reputation: the higher it is, the better the service is provided. How are things going with testing in your company? Share your experience :)

All Articles