In this article, we will be learning about Software Test Estimation, why it is important, how to do it and some of its best practices.
Software Test Estimation is a management activity to calculate and approximate time, effort, expenses and resources required to complete test execution in a given environment.
Estimation is crucial to planning the project, allocating resources, and optimizing activities which yields high-grade software quality. It helps avoiding exceeding time limits and overshooting budgets. Once we are able to estimate the problem through testing then it becomes easier for us to come up with an ideal solution. Also, the cost of testing a software while it is being developed is always less than the cost of testing the software after its complete development
Time − It is the most valuable resource in any project. Every project needs to be delivered within a deadline. Managers calculate the optimal time needed for each segment and accordingly set up a schedule which in turn helps in executing tasks in a timely and organized manner. Time estimation helps create a good reputation and thus attracts customers.
Resources − To execute any task, an adequate amount of resources in required such as infrastructure, specialists, time and money. Without enough resources, a task cannot be efficiently completed. It is necessary to estimate the available resources and add those that are needed.
Cost − All tasks including testing need expenses. The overall budget should be calculated beforehand so that the customer can be assured that the task will be kept under the budget and no additional payments will be required.
Human Skills − Human skills means the, professional skills knowledge and experience of the persons that will be working on the project. They are a deciding factor in the outcome of the project.
Insights from past experience − It’s a good practice to review the past projects that had similar challenges to the current one.
Available documents − The test management repository tools are quite helpful and can be referred to evaluate and define the scope of the project.
Assumptions about the type of work − Past working experiences help in making assumptions about the project.
Calculation of potential risks and threats − The project team needs to figure out the potential risks and threats that may occur in the future.
Allocation of responsibilities − The roles and responsibilities of all the persons should be clearly defined who would be working on the estimation process.
Documentation and tracking of the estimation records − All the information regarding the estimation process should be well documented.
Activities to be performed during the estimation process −
Organizing the team that is to work on the estimation process
Divide the project into various phases
Computing the estimation based on previous projects and professional experience
Prioritizing the possible threats and risks and coming up with solutions to reduce these risks
Reviewing and documenting the relevant part of the process
Submitting the work to relevant stakeholders
There are various Software Test Estimation techniques which are as follows −
Work Breakdown Structure (WBS)
Function Point Analysis (FPA)
In this technique the whole project is divided into small fragments to obtain the following hierarchy − the project is broken into sub-modules; each sub-module is broken down into functionalities which are further divided into sub- functionalities. Ultimately, we get a very comprehensive structure. Each small task is allocated to each team member and is responsible for completing it in a given time. The project is checked at every step.
WBS is the most powerful and effective method among others. It promotes and enhances team cooperation and personal commitment.
It is a statistical technique that divides the main task into smaller tasks like WBS.
Then three possible scenarios are estimated for each sub-task −
The best case −
This is an optimistic scenario, considering we have all the required resources, no issue arises, we have a professional and talented team and the task can be completed in 100 man-hours(BC).
The most likely case −
This is a normal scenario assuming that we have a good team, almost everything we need, everything is under control and in case of any issue it is dealt efficiently and the task can be completed in 150 man-hours(MC).
The worst case −
This is a pessimistic scenario, considering we have a novice team, nothing goes right and the task can be completed in 200 man-hours(WC).
Average value for the estimation is
E = (BC + 4MC + WC) / 6
To be more accurate, we need to consider standard deviation (SD) which is
SD = (WC – BC) / 6
So, the team needs E +/- SD person-hours to complete the sub task.
3-point Estimation is one of the most effective methods for software testing when we experience and insights from past projects. The extract of this method is to find out the best and worst working conditions for the team.
It is a widely used testing method and is based on surveys of the experts involved in the testing process. A panel of experts under the supervision of a manager give personal opinions and also providing reasons for their opinion. After the first round, as the range of answer is quite wide, the experts are asked to review their answers and also to take into consideration other members’ opinion. Several rounds take place until the range of answers is diminished and the average value is calculated. The process is finished after a predefined criterion such a limited number of rounds or when the results are stable.
This method shows the functionality of the software from the user’s point of view. It calculates total effort as a function of time, cost or size. Just like in WBS, the project is divided into modules. Each module is then assigned to a functional point (FP) based on its complexity. Simple tasks get lower point, difficult ones get higher. Total effort is calculated as −
Total Effort (TE) = Total Functional Point(FP) x Estimate Defined per FP
Estimate Defined per FP is a value that a test manager defines on the basis of how
experienced the team is and is calculated with respect to time, cost or size.
The above methods use a bottom-up approach in which case all the sub-tasks are estimated separately before we can plan the project, schedule and budget and all the details and requirements are present. Thus, these methods have drawbacks due to great speed of changes in the software world.
More and more customers now demand agile development, as it stresses on continuous delivery, process is user-centred and provides a competitive edge. Agile estimation uses top-down approach unlike traditional methods.
Initially we process currently available data and provide a good enough estimation to start the project. As the project progresses, more information and details are revealed. This new information is integrated into the estimation. This method enables team to estimate new features effectively.
Collaboration − All team members take part in the estimation process
High level software quality − Through regular testing, issues can be detected and resolved while being developed.
Customer satisfaction − Customers can monitor the software during development and can update their requirements thus allowing the team to modify the tests easily.
Test-driven − Testers can review the project while developing it rather than after its development.
Continuous testing − Teams test the project regularly while developing it and thus the project is continuously developing.
Continuous feedback − Testers continuously provide feedback to the team allowing them to make adjustments quickly.