📜 ⬆️ ⬇️

How to calculate the time for testing



... Or, in other words, how to calculate the time for testing so that everyone believes? After all, in fact, we usually have two goals. The first is to count the time in such a way as not to make a mistake and correctly allocate resources - most likely, at first it won't be possible to do it well anyway. The second goal is more realistic: calculate the time for testing so as to prove to someone that you need more people in the team, explain why you don’t have time, etc. Strangely enough, after just 50 you do the second, then and the first will work!

Let's now look at how to count the time for testing, with specific examples.

Case 1: “Here's the TZ, how much time will it take to write test cases?”


Suppose a volume folder with a well-written technical task (TZ) comes to us. We are asked how long it will take to write test scenarios (TS) for the whole case.
')
Before we can answer this question, we would like to know:

From the answers to all these questions depends on how long it takes to write one positive test case - T1. It is also worth considering the time to write one negative TS (it will be denoted as T-1). My experience says that negative TSs are usually written longer - they also usually need more. Of course, it happens differently here, but it seems to me that the better we know the subject area, the better we understand the application, the better we understand where and how it can fall, the more negative we will have the TS. If you have, for example, three negative TSs have one negative, you probably misunderstand the application. If for one positive you can come up with 500 negative TS, this is a good job. My ratio of positive and negative TS is usually from ½ to 1/5.

T. h. We need to calculate the time to write a positive TS, estimate the ratio of positive and negative, and count the time entirely.

Evaluation options:




Example


Let's now see how these techniques work, with a specific example. For example, we are writing a social network for pets. We have a TK for this social network, only 47 pages. Suppose we broke it into homogeneous parts. Here is what we end up with:


Now we will try to calculate how many hours it will take for us to write the vehicle (but, pay attention, not for testing at all):



Our estimates do not agree, but this is normal - at least we were able to calculate approximately. And if we have enough time for evaluation, we can make an assessment in several ways.

We count time when using Agile


Now let's talk about flexible development methodologies, when there is no technical task. It is not very clear how to evaluate, but still some approaches can be distinguished. For example, you can:



Retreat for QA-managers

Now a slight digression for QA-managers, project managers. We can divide all actions for creating and launching test cases into the following components:

CREATION OF THE CU

STARTING TS

Environment Preparation (TCenv)

Fulfillment of preconditions (TRprec)

TC structure preparation (TCstr)

Run Regression Tests (TRreg)

Creating a vehicle for the finished functionality (TCbase)

Running tests for new functionality (TRnew)

Creating a vehicle for new functionality (TCnew)

Build new configurations (Cnew)

Automated Test Creations (TCa)

Number of configurations (Qconf)

Change created TC (TCchng)

Retest after fixing bugs (TRrtst)

Outcome: ÎŁTC = TCenv + TCstr + TCbase + TCnew

+ (TCbase + TCnew) x TCa + TCchng

Total: ÎŁTR = (TRprec + TRreg + TRnew) x Qconf + TRrtst x Qconf + Cnew



How much time does the testing take, we see the table in the formulas below - everything is clear and without comments.

Case 2: "Here is a piece of functionality, how much time will it take for testing?"


How much time will it take to test one or another part of the functional? To estimate this, there are different ways:


What is important to remember in this case? That the new functionality can again require time to prepare the environment. It is important to remember about the existence of a coefficient on familiarity with the system: more time is spent on tests if you run them away the first time than if you run them second or third time. But if the second time comes in a month, then you still chase him away, as if for the first time - however, this is different for everyone.

Case 3: "Why do you not have time?!"


The next, very common question asked by testers: “what do you do, why do you not have time, why do you need help with automation, why do not you want us to release new versions every day - there are no new bugs ? .. "

To show what we do, we can write out for each project all the tasks that are performed in one sprint, and paint them by day: calculate how much time each task takes on a particular day. So you can see the average, maximum and minimum load.

An example of such a table:



When I did it, I saw that the load could not always be optimally distributed - sometimes the load is large, and sometimes half a day there is nothing at all to do. This allows you to make certain conclusions and somehow optimize the process, to distribute the load - for example, to do some things in advance, even if it is not completely consistent with the logic of the process. For example, if we have a lot of free time at the beginning of a sprint, we can already start writing user stories for the next sprint. Although we don’t know the structure of the next sprint, we can most likely predict that these two or three stories will definitely fit into it - they are usually the most critical, usually they have to be rewritten anyway, so this is a good exercise.

So:

  1. Defined a task list.
  2. Defined "input parameters".
  3. Determined time for each task.
  4. Smeared the tasks of the sprint.


Received download in hours by day. And if it turns out that every day you need 24 hours of testing, and we have only two people ... So, we definitely need a third tester!

Case 4.1: "We are releasing the assembly on Friday, or even earlier - so how much time do you need for testing?"

In this case, the testing process is as follows:


  1. Smoke test + test for complete regression x on the number of major platforms + test for basic functionality for all platforms + tests for complete regression on platforms (see the matrix).
  2. Retesting : smoke test + validation of the whole platform.


Tests for a complete regression on the platforms are carried out in this case as follows (Cr, FF, etc., here are different platforms, in this case browsers):



Cr

FF

IE9

IE8

Cr '

FF '

ÎŁ

Smoke test

one

one

one

one

one

one

6

Basic functionality

one

one

one

one

one

one

6

Administration

one











one

Statistics for admins



one









one

User account





one







one

User Posts







one





one

User friends









one



one

User photos











one

one

User Files

one











one

User Settings



one









one



According to this matrix, we see that for each platform we are testing any part of the functional: as a result, it turns out that we have checked all the functionality and tried the work on each platform. We can also shift this matrix - in the end it turns out that for a certain number of runs we will check every function on each platform anyway. This is still a simple scheme - and in fact there may be 20 configurations without the ability to automate their testing - of course, in this case, we will not have time to test everything, and we will test on such a matrix.

As a result, we obtain the following formula:

ÎŁT = (Tprec + Treg) x (Qmain + 1) + (Tprec + Tbase + Tsmoke) x Qconf + (Tsmoke + Tvalidation) x Qconf x Qreturns

Qmain - the number of main configurations on which we test everything.

Qreturns - the number of returns.

By this formula, it is clear how much time it will take. On it, you can try to keep track of time, look at which testing takes the most time. It will also be clear where it is better to automate where - we will understand where automation will save us the most time.

Case 4.2: “Too many tests! Hurry up".


If we are required to perform testing faster, we can cut the number of tests according to the following principles:


In general, the actual testing process can be represented as a triangle. The angles of this triangle are:

  1. Scope of testing.
  2. The number of people in the team.
  3. The period for which you want to perform testing.


The speed and quality of testing depends on these three aspects - it is on them that you need to think in order to successfully plan your work. So, for example, if we are offered to test a product for an unrealistically short period, and we definitely don’t meet or refuse such work (if we don’t want to release a low-quality product, of course), or work with the above aspects. Then we can:

  1. Reduce testing.
  2. Increase the number of people in the team.
  3. Ask to extend the period for testing.


The latter method is perhaps the most reliable: after all, people in a team can give inept ones, and a reduction in the amount of testing can lead to the release of a raw product.

A method also works here - to ask why such terms are. Maybe you need only one function for one client - then we will make him a private release, and later we will test everything else.

And finally, the case: the revision of the already released project


If the project has already been released, but there is a demand to finalize it, how then to calculate the time for testing, for development, etc.? In this case, we count time as usual, but at the same time we multiply it by two, because all people have already forgotten everything, already in other projects - it takes time to get acquainted with the system. In addition, the addition may be outside the standard cycle, therefore, in addition to testing this addition, complete regression may be needed - then we add time to the complete regression.

Posted by: , QA Lead

Source: https://habr.com/ru/post/272193/


All Articles