Test Estimation Techniques
What is Software Estimation?
Estimation as the word suggests is a rough calculation of the value, number, quantity, or extent of something. In a Software project, estimation is planning and managing effort, time and cost that take to complete the project activities.
What will happen without proper estimation?
Poor estimation leads to dragged timeline, undesired product and finally an unsatisfied customer. The company will not be able to provide the expected product to the customer in the expected timeline and budget.
To overcome these issues, Software projects use different Estimation methods
Before we start estimating, we need to have a clear vision of What to Estimate
What to Estimate?
1. Resources — We need to have enough resources to carry out our project activities. Resources can be people, hardware, software, facilities, etc. The project team need to have a clear idea on the quality and quantity of the resources needed in the project
2. Time — Time defines the success of a project. Even though the team provides the best solution, it is not provided during the desired timeline, the customer will not be satisfied. So, time is very important in a software project. Each project task needs to have a clear time to start and finish.
3. Human Skills — The skillset of everyone in the team affect the estimation. A team with high technical skills will finish the project in a less given time than a team with low technical skills.
4. Cost — The project team should have a clean understanding of how much it will cost for each activity in the project.
The Estimation Process
Same as other project activities, there is a process for Test Estimation too.
Step 1: Divide the project into small tasks
Step 2: Assign each task a team member
Sep 3: Estimate effort for each task
Step 4: Estimate effort for total project
It is always better to have the project divided into smaller tasks before we start our estimation process. It will make the estimation process simple and easy. You can use a work breakdown structure technique to divide the project into modules and modules into small tasks. Then, assign each task to a responsible person from the team. Now, we need to focus on how to estimate effort for each task. Let us go through few techniques that are used in the industry now.
Wideband Delphi technique
This method involves multiple estimators and obtain an overall estimate by combining their individual estimation. This method focuses more on experience rather than any statistical formula.
Wideband Delphi techniques consists of four steps.
Step 1. Kickoff meeting
The kickoff meeting describes the project and its requirements to all estimators. All the estimators agree on the same standard to follow in carrying out the estimation.
Step 2. Individual Estimation
Each estimator estimates the tasks.
Step 3. Discussion Meeting
All the estimators present their estimation and reasons for the estimation for each task and discuss problems and solutions which will be taken into consideration for the next round of estimation process.
Step 4. Repeat
Repeat Step 2 and 3 as many times as necessary until obtaining a clear and sufficient estimation which is agreed by all the estimators.
Function Point/Testing Point Analysis
This method involves dividing the system under test to smaller functionalities. The more complex the system is the more functionalities are there. After deciding the functional points the Test Manager has to give weightage to each functional point considering the complexity. Based on the weightage of each functional point we can decide the complexity of the module. For example, if the weightage of certain functional points are 2,5,3 and 3 , the total weightage of the module is 13. Based on the total weightage of each module, the complexity can be decided.
So, after you provide weightage to each functional point the testing duration (how much time needs to test) can be decided.
Based on the effort and time, the cost for each functionality also can be measured.
3-Point Software Testing Estimation Technique
This is one of the simple but useful technique followed by Project Manager. But it is mostly based on the experience level of the Project Manager.
In this method, each task is estimated based on three values.
The best-case estimate
The most likely estimate
The worst case estimate
The Project Manager needs to come up with testing duration for each task in all these three cases. And based on a statistical analysis the duration for the task can be determined.
Percentage Distribution
In this method all phases of Software Development Life Cycle are assigned effort in percentage (%) based on past data and experience. Then, percentage for all testing activities are further assigned.
Test Estimation best practices
- Have a buffer time
What if one of your talented member suddenly quits the job, or testing environments gets delayed or unsupportive? Unpredictable things can happen within the project. So, we need to add some extra time for the Testing tasks when preparing the estimation
2. Plan for inevitable
What if the Test data you received are corrupted so you need to request them again from the customer which may take additional two days. What if some of your hardware or software gets corrupted so you need to replace them in the middle of testing. There is a risk in everything. So, you need to have a backup plan and risk mitigation plan with the estimations.
3. Follow your estimation
Unless there are major changes in the requirements or project plan, the estimation should not be changed time to time. You need to stick to your estimation.