Estimates plays very important role
in successful projects as incorrect estimates can lead to time crunches , or
improper resource utilization in case of excessive time in estimates.
In this
article we will discuss various factors in estimation and how to create good
estimates in a testing project.
Before providing estimates, we need
to know the requirements of the project. First step before any testing task
including test plans and estimates is to know what we are delivering to the
client. Once we are clear on the requirements, we need to define the tasks that
need to be done as exit criteria for the project.
We have to answer following
points before progressing with estimates:
1. What is the time required to set-up the basic
infrastructure. This includes acquiring resources, testing tools, setting up
environment and training requirements of resources.
2. What are the testing types we are performing in project?
Does it include automation testing, API Testing, and other testing types?
3. What is the Software Development Life cycle followed
in the project, i.e. it is agile, waterfall or V-model, if iterative, what is
the scope of each iteration.
4. Is this project new phase of an existing project
or a version of existing application to released in the current project.
5. Techni Experience of resources working in Project. This
helps to determine the time for preparing test artifacts.
So Once we know answers to above
questions, we need to create a WBS document most preferably in Microsoft
Project which helps in defining the tasks with time estimates, resources
overloading and defining milestones in
project. Below points should be considered while creating the Work Breakdown Sheet.
1. First of all create the high level milestone for
the project. This can be various phases of the project or iterations of project
in and agile methodology.
2. Now create subtask for each milestones of the
project. This will include tasks like test planning, test review, test execution,
test data preparation for various forms of testing and regular team meetings.
3. Task test planning, test review, test data
preparation and test execution requires further breakdown of requirements into
test scenarios and further into Test cases. Once the requirements are broken
down into test scenarios/ test cases, we require estimates for each of the
tasks.
Example:
- Suppose we have 250 test cases in an application
for a particular milestone. We need to define time for test planning, test review,
test execution, and test data preparation for each of the test artifact, can be
test case for manual execution and test script in automation testing.
Automation testing will also include task for framework development.
- Now divide each of the test cases based on test
complexity into high, medium and low complexity. Dividing and allocating time
for each test case using test case complexity is very useful in case of large
number of test cases where estimates for a particular test case in not feasible
and time required for each test case is more or less uniform based on
complexity. In this approach, time estimates are provided for test cases based
on complexity. For e.g. 10 hours for
test case preparation for high complexity, 6 hours for medium complexity, and 4
hours for low complexity.
- In Point b), we provide test estimates based on complexity and was useful since time for test cases was uniform and there was
large set of test cases.
- In case the project has 10 requirement of
varying complexity, like 1 requirement will take 100 hours and other 2 hours,
So Rather providing estimates based on complexity, we can define the estimate
based on past experience of users, and provide below time:
- Min Time to complete the task
- Worst Scenario Time to complete the task.
- Average time to complete the task
- We can calculate the average of above time to
calculate time to complete the task. While providing the estimate as calculated
in step c) we must take into consideration resources experience in the
application and technology.
4. We can provide time for each of the tasks in the
work breakdown sheet. Summing time for all the activities will give us the test
efforts required in the project.
5. We further need to assign task to different types
of resources based on the tasks
and can provide resourcing estimates for
the project. we can define the resources utilization during different phases of
project .
I will try to cover further in future articles
on estimates things I might have missed here.