“Gaining knowledge, is the first step to wisdom, Sharing it, is the first step to humanity…” – Unknown
There are several approaches available for test estimation. Some are very theoretical and do not fit in day-to-day project activities. Software projects are living in nature and it is not easy to backtrack once you build software because every change affects cost and schedule. Due to this dynamic nature of software projects, it is vital that estimation is done in a way that is practical and pragmatic for the quality and timely delivery of the project.
Before we dive in, Let’s get some Estimation humor – Without humor, the world is even boring, and this is just an article.
- Any project can be estimated accurately…
…once it’s completed
- Accurate estimation is not impossible…
…for the person who doesn’t have to do it.
- The person who says it will take the longest and cost the
most is probably…
…the only one with a clue how to do the job.
Why is Test Estimate needed?
Two most frequent questions you get from your clients when discussing test engagements:
- How long will your team take to complete testing?
- How much will it cost?
Estimation is done often because it helps in forecasting how much will the project cost and when will the project get completed. Proper analysis and effort estimation is necessary for successfully planning for a testing project. Any flaw in critical estimation phase would result in missing the project deadlines, reducing ROI and lose of client’s faith.
What to Estimate?
- Resources: Resources are required to carry out any project task. They can be people, tools, environment, funding, or anything else capable of being defined as requirements to complete a project activity.
- Time: Time is the most valuable resource in a project. Every project has a deadline to delivery.
- Skills / Experience: Skills can be defined by the knowledge and experience of the team members. Yes, this affects your estimation. For example, a team, whose members have low testing skills, will take more time to finish the project than the one which has high testing skills.
- Cost: If all the above factors are estimated correctly, the cost will automatically get generated.
In this article, We will try to learn some points which are helpful to prepare good test estimations. We will not be discussing the standard methods for test estimations like testing metrics (we will discuss those in a separate article), instead discuss some tips on –
Factors need to consider while estimating testing efforts:
1. How about a buffer time?
Having a buffer in the estimation helps you to cope with any delay that may occur and ensures maximum test coverage.
2. Do all builds come bug-free?
We should consider the fact that test cycle depends on the stability of the build. If the build is not stable, then developers may need more time to fix and obviously, the testing cycle gets extended automatically. Always dedicate 20% of the estimated time in Bug retest.
3) Availability of All Resources for Estimated Period
The test estimation should consider all the leaves planned by the team members in the next few weeks or next few months. This will ensure that the estimations are realistic. (Do consider some sick leaves as not everyone in your team is fit like Kohli or Dhoni).
4) Parallel Testing – Concurrency than Sequential?
Many times we come across a situation where we can test two or more thread-safe things at the same time. Try to keep it to a minimum as multitasking could be hazardous if not executed properly. Consider it only after analyzing the situation.
5) Estimation is not one time Task– So re-visit the estimations regularly
We should frequently re-visit the test estimations and make modification if needed. We should not extend the estimation once we freeze it unless there are major changes in requirement.
6) Do You Know Your Team?
If you are aware of the strengths and weaknesses of members working in your team then you can estimate testing tasks more precisely. While estimating one should consider the fact that all members may not yield same productivity level. Some QA’s can execute faster compared to others. Though this is not a major factor it affects the estimation.
7) Historical data of the previous estimation for improvement and accuracy
Experiences from past projects play a vital role while preparing new time estimates. We can try to overcome the difficulties or issues we faced in past projects. We can analyze how the previous estimates were and how much they helped to deliver the product on time. Again, please keep one thing in mind – not every project is the same, so do not apply this tip everywhere.
Apart from the aforesaid 7 points, of course, do consider the scope of your project to identify – What to test and what not to test. Also, a rough calculation, approximation, educated/informed guess, rough guess are the synonyms of Estimation. So, don’t strive for the accuracy & be adaptive.
According to functional decomposition framework, not everything should get incorporated in the single article.
So, I will be writing a separate article (maybe in a month or two) to discuss some standard Testing Techniques which we can use to estimate our testing tasks. The following estimation techniques have been compiled from several sources:
- Delphi Technique
- Wideband Delphi (WDS)
- Work Breakdown Structure
- Three-point estimation
- Function Point/Testing Point Analysis
- Percentage of development effort method
Stay Tuned! for next article… and do comment if you have any other tip on the estimation of tasks in better and efficient way.