Results 1 to 4 of 4

Thread: software estimation techniques

  1. #1
    Junior Member
    Join Date
    Oct 2007

    software estimation techniques

    I have never used any software estimation techniques to provide the the testing cycle duration(it all depends on the type of testing) and also while for writing the testcases. (all depends on the complexity of the requirement.)

    How do I answer these question in the interviews.

    Request you to provide the estimation metrics commonly used.


  2. #2

    Thumbs up Re: software estimation techniques

    Test cases are estimated based on the complexity of the requirement.Then the timeline for data creation and test execution are fixed based on how the test cases estimated.

    The test cases are estimated into three types:
    1. Simple
    2. Medium and
    3. Complex

    the complexity is estimated based on the following factors:
    i. Transactions
    ii. Interfacing with other test cases
    iii. Verification points
    iv. Test data
    v. Complexity weight
    vi. Adjustment factor

    some of the adjustment factors are
    domain knowledge & complexity, integration with other hardware devices such as hand-held devices, scanners, printers, multi-lingual support, software/hardware set up, environment set up, build management, configuration management, preparation of test bed, operating system combinations, browser combinations, stable requirements etc., a test case is said to be simple or complex or medium based on the following table. However, the table is generic it may differ based on the depth and comlexity of the requirements:

    simple average complex
    transactions <2 3-6 >6
    interfacing other test cases 0 <3 >3
    ver. Points <2 3-8 >8
    test data not req req req
    complexity weight 1 2 3
    adj. Factor 2 4 8

    Last edited by sridharrganesan; 11-02-2007 at 10:04 AM.

  3. #3
    Junior Member
    Join Date
    Oct 2007

    Re: software estimation techniques

    Thank you.

  4. #4
    The Importance of Good Estimation
    Software projects are typically controlled by four major variables; time, requirements, resources (people, infrastructure/materials, and money), and risks. Unexpected changes in any of these variables will have an impact on a project. Hence, making good estimates of time and resources required for a project is crucial. Underestimating project needs can cause major problems because there may not be enough time, money, infrastructure/materials, or people to complete the project. Overestimating needs can be very expensive for the organization because a decision may be made to defer the project because it is too expensive or the project is approved but other projects are "starved" because there is less to go around.

    In my experience, making estimates of time and resources required for a project is usually a challenge for most project teams and project managers. It could be because they do not have experience doing estimates, they are unfamiliar with the technology being used or the business domain, requirements are unclear, there are dependencies on work being done by others, and so on. These can result in a situation akin to analysis paralysis as the team delays providing any estimates while they try to get a good handle on the requirements, dependencies, and issues. Alternatively, we will produce estimates that are usually highly optimistic as we have ignored items that need to be dealt with. How does one handle situations such as these?

    Useful Estimation Techniques
    Before we begin, we need to understand what types of estimates we can provide. Estimates can be roughly divided into three types:

    Ballpark or order of magnitude: Here the estimate is probably an order of magnitude from the final figure. Ideally, it would fall within two or three times the actual value.
    Rough estimates: Here the estimate is closer to the actual value. Ideally it will be about 50% to 100% off the actual value.
    Fair estimates: This is a very good estimate. Ideally it will be about 25% to 50% off the actual value.

    Deciding which of these three different estimates you can provide is crucial. Fair estimates are possible when you are very familiar with what needs to be done and you have done it many times before. This sort of estimate is possible when doing maintenance type work where the fixes are known, or one is adding well-understood functionality that has been done before. Rough estimates are possible when working with well-understood needs and one is familiar with domain and technology issues. In all other cases, the best we can hope for before we begin is order of magnitude estimates. Some may quibble than order of magnitude estimates are close to no estimate at all! However, they are very valuable because they give the organization and project team some idea of what the project is going to need in terms of time, resources, and money. It is better to know that something is going to take between two and six months to do rather than have no idea how much time it will take. In many cases, we may be able to give more detailed estimates for some items rather than others. For example, we may be able to provide a rough estimate of the infrastructure we need but only an order of magnitude estimate of the people and time needed.

    Doing an order of magnitude estimate
    This is what most of us face when starting off a new project. New technology, teams unfamiliar with the technology or domain, or unclear requirements ensure that this will probably be the best estimate we can provide.

    Break the project down into the different tasks needed. Try to get as many tasks as possible. A useful way to break down tasks is to consider typical software activities such as analysis, design, build, demo, test, fix, document, deploy, and support and see if they are required for each task and whether they need to be broken out into new tasks.
    Evaluate each task on two scales: complexity (high, medium, low) and size of work (large, medium, small). A less complex task may still involve a large amount of work; for example, loading a database with information from paper forms may take several weeks. A very complex task may not involve much actual work but can still take a lot of time, as in tuning a database for optimum performance. Complex tasks are usually hard to split between many people/teams while large-size, less complex tasks can usually be split up between many people/teams.
    Tasks effectively fall into one of nine combinations of complexity and size. For each combination, define an expected amount of time and resources required. For example, we could say that low complexity and small-size tasks will take one week at most, medium complexity and small-size tasks will take three weeks, and so on. These weighing factors will differ based on the team and project and should be reviewed after the project to help get better values the next time. Add together all these values for each task to get an estimate of time and resources required.

    Size 1) tune database
    large 1) load data 1) integrate with security system 2) create data validation routines

    Doing rough and fair estimates
    These estimates can be done when you have a good idea of the tasks to be done and how to do them.

    Those who will do the actual work are the best people to do these estimates. One then can add up all the estimates from different people to get the final estimates.
    Ensure you collect estimates on the three variables of time, people, and infrastructure/material needs.
    Break down tasks to as detailed a level as possible. As mentioned previously, it can help to consider typical software activities such as analysis, design, build, demo, test, fix, document, deploy, and support and see if they are required for each task. Break tasks down to a granularity of eighty hours or less.

    The preceding techniques can help one achieve better estimates. Review estimated needs versus actual needs after every project. Identify what was correct and what was wrong. This will help you improve the next time. As with many other activities, experience will help you get better!

    Last edited by sridharrganesan; 01-17-2008 at 05:33 AM. Reason: As all the posts combined together answers the question

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
About us
Applying for a job can be a stressful and frustrating experience, especially for someone who has never done it before. Considering that you are competing for the position with a at least a dozen other applicants, it is imperative that you thoroughly prepare for the job interview, in order to stand a good chance of getting hired. That's where GeekInterview can help.