Course Title: Software Test Estimating
Course#: STR12
Duration: 2 or 3 days, depending on the topic coverage and the number of exercises.
Overview:
This workshop is for you -- if you are interested in estimating the testing efforts earlier in projects, despite limited information of unknown quality, and in delivering more accurate and more credible estimates with less anxiety and heartburn.
Testing is a major part of almost all software projects – it often consumes 25% to 40% of the software development and maintenance budgets, but only catches about 80% to 90% of the bugs. In other words, most testing is far from perfect.
We could argue that effective testing is vital to organizations, and developing effective estimates is an essential survival skill for testing & QA professionals and their managers. Nevertheless, most authoritative surveys of testing practices find that test estimation is poor.
Poor estimates can lead to last-minute “work crunches” of testing, debugging, defect fixing, and re-testing. These crunches encourage skimpy test coverage, sloppy testing by exhausted testers, compromised quality checkpoints, increased tensions, and poor communications between testers and others. The true cost of poor estimates is surprisingly high.
The test and quality compromises needed to meet a tight deadline, as decreed by unrealistic estimating, can introduce hidden new risks. Though intangible, these risks are still real. Since intangibles by definition are difficult to quantify, the risks and costs of poor testing tend to be denied or under-estimated. Characteristics like morale, enthusiasm and working conditions affect productivity and thus estimates, but are impractical to quantify and measure. These intangibles certainly add to the uncertainties, and may contribute to a “can’t win” atmosphere.
In this seminar, we will examine examples of what is wrong with most test estimating today. (There’s plenty.) We will also review success stories of good estimating in some depth, absorb the lessons learned and discuss how we can apply them in our own work.
Learning Objectives:
We expect the workshop to significantly sharpen your estimates, deepen your understanding of testing and provide useful insights about testers. You will recognize behaviors that tend to lead to poor estimates, and know how to control them. Through extensive exercises and peer critiques in class, you will master practical estimating techniques, applying them in a variety of context.
Specifically, you will:
- Learn how to develop realistic, justifiable estimates for software testing projects.
- Review methods and rules of thumb for estimating the time, resources and budgets needed for testing projects.
- Adapt methods and rules of thumb to fit your own context.
- Explore how to develop new rules of thumb for your own testing projects.
- In exercises, work through practical examples of how to develop test project estimates, and critique and validate your own results.
- In small teams, compare and critique others’ estimating approaches and results.
- After the class, transfer and use this knowledge productively back on the job.
Because of time limitations, the workshop normally focuses on feature testing in software applications. The workshop does address specialized types of software testing such as load testing, nor hardware, network, database testing. Testing both new software and modifications to software are discussed, both manual and automated testing, and both traditional and iterative RAD development methodologies.
No one particular application domain (e.g., developing bus routes and schedules), test environment (e.g., Unix), tool set (e.g., WinRunner), or technical background (e.g., database administrator or network engineer), is assumed.
Testing occurs in many contexts, and the estimates are highly context-dependant. We encourage the participants to bring their relevant artifacts (i.e., list of current estimating needs, methods and styles, estimate calculations and work papers) to class.
Audience:
Project leaders, system test leads & quality assurance professionals, and users who are involved in managing systems testing projects.
Participants include non-technical professionals in fields like health care, telecom, banking, government and retailing, to name a few, who are system users involved in testing systems, and marketing people in the vendors of software and software dependent products. (A little knowledge may be dangerous, of course. If a person never has been involved in a test project, the rules of thumb in this book are better than nothing. We encourage that person to attend class and also seek the counsel of experienced testers.
Books and Software Tools that Accompany this Workshop:
Participants receive software tools, and two books in printed form or on a CD:
- “Reliably Estimating Software Testing”, by Ross Collard, published 2007 (approximately 400 pages).
- “Software Testing & QA: Glossary of Terms and Concepts” by Ross Collard (approx. 75 pages).
Combined Test Planning and Estimating Class:
Many participants in the estimating seminars opt to attend our test planning class also, usually before they attend the estimating class. Depending on the version, the test planning class runs from 2 to 4 days. Some prefer to attend the two classes back to back in the same week. Others prefer to spread them over a period of a few weeks or a few months.
Prerequisites:
This workshop does not assume any specific technical background, such as knowledge of Unix or TCP/IP. It does assume some familiarity with information systems generally, such as a basic idea of what a system, system development project, network and database are, and a basic understanding of software feature testing.
Topics:
This workshop provides a practical, hands-on approach to improve your estimating and negotiating skills. Testing both new software and modifications to software will be discussed, both manual and automated testing, and both traditional and iterative RAD development methodologies.
This dialog concerns a time-honored estimation technique (adding a huge factor of safety to a dubious estimate):
- Question: When will the system testing be completed???
(Note #1: At the time the question is asked, you do not know (a) the final scope of the functionality, (b) when the developers will be done, and (c) what test resources you will have available.)
(Note #2: The boss wants a definitive answer within two minutes anyway.)
- Answer: Take a wild guess and multiply by two.
- Question: What do you do when the boss cuts your agreed-on test duration by 85%??
- Answer: Whine pathetically that you thought he or she really understood that “quality is important”.
Let’s face it: developing realistic and credible estimates is a critical survival skill for test professionals and managers.
This workshop provides a practical, hands-on approach to improve your estimating and negotiating skills.
Because of time limitations, not all these topics listed below may be addressed in a particular class or, if addressed, they may not all be examined in depth.
- Introduction
Welcoming Comments and Introductions
Seminar Objectives and Style
Brief Overview of Topics
Class Logistics and Schedule
Self-Assessment Quiz
- The Nature of Test Estimation
The Nature of Testing
The Nature of Estimation
Combining Testing and Estimation
- Estimating the Test Effort
Overview of Estimating Techniques
Estimating -- Art or Science?
Which Estimating Technique is Best for Me?
Attainable Levels of Accuracy
The Importance of the First Estimate
Agile or Rapid Application Development (RAD) and Test Estimation
- What you Need to Know to Estimate
Data Sources
Data Validation
Evolving Data
Guideline for the Estimating Process
Components of a Complete Estimate
- Assumptions and Biases
Recognizing Assumptions
Recognizing Biases
- Making and Checking Assumptions
Communicating Assumptions & Uncertainties
Time Needed for Developing Estimates
Getting Better Data Earlier
- Twenty-Plus Estimating Techniques
Bottom-Up or Micro-Estimating
Top-Down or Decomposition Estimating
Ratios
Largest Components First
Adjustment Factors
Simulation Models
Comparisons to History
Formulae
- Application
- Calibration
- Validation
SWAGs
Etc.
Comparison of Techniques
Applying Techniques
-
- Estimating Heuristics
Rules of Thumb
Adapting the Rules of Thumb
Estimating Myths and Voodoo Science
- The Relationship of Estimating and Project Work Planning
Project Checklists and Estimating Worksheets
Allowing for Test Overheads
The Mythical Person-Month
Relative Productivity of Professionals
Adjusting for the Learning Curve
- The Basics of a Test Estimating Formula
Estimating Adjustment Factors
Setting the Factors of Safety
Common Reasons for Test Slippage
Exercise: Developing the Ball Park Estimate
- Estimating Formulae
Estimating the Number of Test Cycles
Estimating the Number of Test Cases
- Estimating the Number of Problems
Estimating Rules for –
- Software Development
- Software Maintenance
- Software Package Installation
- Software Package Upgrade
- Hardware / Software Co-Development
- Etc.
- Estimating by Project Phase and Activity
Test Planning
Test Case and Test Data Development
Test Automation
Test Prep. and Set-Up
Test Execution
Test Results Evaluation and Problem Reporting
Debugging & Fixing
Re-Testing after Fixes
Test Project Management
The Ratio Approach
Software Packages
Resource Allocation
Specialized Types of Testing
- Test Project Staffing
Estimating the Headcounts
Estimating Peaks and Flow of Demand
Varying Rates of Productivity
Test Cases Developed and Run
Problems Reported
- Estimating the Test Automation Effort
Test Automation Frameworks
Tool Taxonomy
Quick Review of the Main Types of Tools
Tool Selection and Acquisition
Tool Installation and Training
Tool Upgrades
Tool Adaptation or Building
Test Case Automation
Maintenance of Automated Tests
Test Case Re-Use
- Managing the Estimating Process
How the Estimating Software Tools Work
Using Early Feedback to Adjust Estimates
Building Your Own History Database
The Dangers of Anecdotal Memory
Checking the Reasonableness of Assumptions
Deciding when to Re-Estimate
The Basic Problems with Forecasting
- Regression Testing
Estimating the Modification & Regression Test Effort
Cost/Benefit Analysis for Regression Testing
- Checking Estimates
How Human Behavior affects Estimates
Behaviors that Lead to Poor Estimates
The Introduction of Biases
Democratization of Estimates
Estimating and Competitive Bidding
Test Estimate Review Checklist
- Quality Metrics
The Goal of Metrics
Hard Data Vs. Educated Guesses
Payoffs from Metrics
Prescriptive Vs. Descriptive Metrics
Predictive Metrics
Determining What to Measure
- Software Sizing
The Nature of Sizing
- Why Sizing is Difficult and Imperfect
- Why it is Still Important to Try
KLOCs (Line of Code Counts)
The Function Point Technique
Adjustments for Complexity
Complexity Measures
Other Sizing Methods and Measures
- Types of Quality Metrics
Test Process Metrics
Product Quality Metrics
Customer Service Metrics
Operational Metrics
Goal-Oriented Metrics
- Data Gathering Considerations
Precision Needed in Metrics
Statistical Methods
Sample Sizes and Sampling Methods
Apples and Oranges
Data Cleansing
Curve Fitting
Why Six Sigma does Not Work for Software
- Metrics Starter Kit
Metrics Examples
Cost of Quality (CoQ)
Quality Norms & Statistics
Customer Service Norms
Ranking & Use of Quality Metrics
Limitations of Metrics
Practices Needed for Effective Measurements
The Quality Payback Report
An Example: Assessing the Effectiveness of Test Techniques
Appendix: Case Studies and Exercises
Books and Tools that Accompany this Workshop:
Participants receive software tools, and two or more books in printed form or on a CD:
- “Software Test Planning” by Ross Collard, published 2007, approximately 300 pages.
- “Software Test Estimating” by Ross Collard, published 2007, approximately 300 pages.
- “Software Testing & Quality Assurance Fundamentals” by Ross Collard, published 2007, approximately 400 pages.
- “Software Testing & QA: Glossary of Terms and Concepts” by Ross Collard, published 2007, approximately 200 pages.