Home > Ask the Software Quality Experts > Software Testing and Quality Assurance Questions & Answers > How to determine test coverage
Ask The Software Quality Expert: Questions & Answers
EMAIL THIS

How to determine test coverage

Mike Kelly EXPERT RESPONSE FROM: Mike Kelly

Pose a Question
Other Software Quality Categories
Meet all Software Quality Experts
Become an Expert for this site


Software quality news and advice
Digg This!    StumbleUpon Toolbar StumbleUpon    Bookmark with Delicious Del.icio.us    Add to Google


>
QUESTION POSED ON: 04 August 2008
The project that I'm working on is to create regression test scripts for applications which are migrating from another location. This test team has mainly functional (system test) scripts and there are many applications that we are taking over. How would you approach the regression scripting considering we have many applications and limited resources?

>

I follow the same basic steps when I think about regression testing as I do for any other type of testing. I try to force myself to think about coverage, risk and cost. I'm always looking to evaluate what tests can best address my most important risks with the most coverage given the time, tools and resources I have.

Understanding what you have to cover
I would encourage you to start off by making an outline of all the things you could potentially cover in your regression testing. Start with large areas of coverage (in your case those may be specific applications) and then drill down into more focused areas within each of those (for example: core functionality, performance and compatibility, among others), followed by subsequent levels of detail until you get down to specific testable units.

Understanding your risks
After you have a list of what you might want to cover in your regression testing, start thinking about the specific risks that you're concerned about. Surprisingly, I find that the FIBLOTS mnemonic that Scott Barber developed for modeling system usage for performance testing works wonderfully for evaluating regression testing risk:

  • Frequent: What risks are associated with the most used features?
  • Intensive: For the intensive features in the application, what specific constraints are concerning, how has the supporting platform or code base changed over time, or how has the use changed?
  • Business-critical: Which features are most critical to the business or the purpose of the application?
  • Legal: What has to be tested because of legal requirements or SLAs?
  • Obvious: What will get you bad press if it doesn't work?
  • Technically risky: Where's the technical risk and how has it changed over time?
  • Stakeholder-mandated: What have you been told to test?

I would encourage you to again make a list of the different risks. In your specific case, perhaps a list again by application, but it's also possible you may have a "general" list that goes across applications.

Putting your risks and coverage together (chartering your work)
Once you know what you want to test (coverage) and why you want to test it (risk) you're ready to charter your work. Chartering is the activity where you put it all together in meaningful terms. Think in terms of little testing missions that take on the general form of, "I want to test these areas for this problem." As you charter your work, think both about how you would actually do that testing, and how long it might take you to do it. Shoot for 45- to 60-minute testing missions.

For example, "I'd like to test creating, updating, and deleting appointments from different time zones from the desktop, Web, and mobile interfaces to our calendar program." There are two type of coverage specified: interface (desktop, Web, and mobile) and function (create, update, and delete). The risk is that time zone conversion may not function correctly. The time it takes to do that testing might take 45 minutes depending on the number of time zones tested.

Prioritize the work and figure out what you can do
Once you've chartered your work, you should have some idea of how much work might be in front of you if you wanted to test it all (or everything you could think of at least). Given that you can't test everything because you don't have unlimited time or resources, you can forget about that! Now you have to prioritize the work. I like to prioritize as a team exercise, since it gets good discussion going, but sometimes that's not possible. If you can't do it as a team, at least get people to peer review the prioritized lists.

Once you have the work prioritized, evaluate what you can realistically cover given the time, tools and resources you have. Some of the testing you might be able to automate. More than likely, most of it will be manual. Some of the high-priority tests you may not be able to do because of a need for specialized tools, environments or data. If you don't have the resources, note it and move on. At some point you'll want to review what you are and are not testing with your boss. You'll also want to have a list of reasons why you aren't testing something available. If it's important to your boss that you test it, you'll want to be able to articulate what you'll need to move forward -- people, time or tools are the most common reasons I have.

Software testing resources:
Prioritizing software testing on little time

Regression testing is more than retesting

Regression testing: How to select test cases

At the end of all this, you'll have a list of charters for each application that you should be able to execute given the resources you have. Following some sort of schedule that makes sense for your team, get in the habit of incrementally reviewing the coverage, risk, charters and priority you have for each application. You'll find that what you want to test and why you want to test it will change over time.


Digg This!    StumbleUpon Toolbar StumbleUpon    Bookmark with Delicious Del.icio.us    Add to Google



RELATED CONTENT
Software Testing and Quality Assurance
Why do performance testers write new scripts so often?
How to create performance testing workload models
Fixing Web application performance troubleshooting problems
Expert advises on implementation of Selenium IDE for effective software testing
When should regression testing occur in an automated test plan?
Achieving peak performance in integration testing
Getting answers about OpenSTA script problems
Defining core software regression tests
Breaking in functionality on UI application pages
Where to find good methodology guides for software testing

Advice from Mike Kelly
Integration testing: Is it black box or white box testing?
Test strategy document vs. an acceptance test plan
The future of software testing
An approach to integration testing
Choosing code coverage tools
Performance testing and experimental design
How to test software with dynamic requirements
Test metrics and use case coverage during testing
How to learn white box testing
How testers can practice bug advocacy with developers

Software test design
How to create performance testing workload models
CA's APM solution helps JN Data address performance issues
Parasoft Concerto targets policy-driven development
Why automated software testing fails and pitfalls to avoid
Essentials of static source code analysis for Web applications
Leaner test cases speed test planning, design
Streamlining test planning and design
Conformiq taps multi-core power for automated test case design
How test managers can shine in agile development: Tutorial, part two
Testing mobile Web applications for usability and context

RELATED GLOSSARY TERMS
Terms from Whatis.com − the technology online dictionary
gray box  (SearchSoftwareQuality.com)

RELATED RESOURCES
2020software.com, trial software downloads for accounting software, ERP software, CRM software and business software systems
Search Bitpipe.com for the latest white papers and business webcasts
Whatis.com, the online computer dictionary



Search and Browse the Expert Answer Center
Search and browse more than 25,000 question and answer pairs from more than 250 TechTarget industry experts.
Browse our Expert Advice



Software Quality - Software Maintenance, Software Requirements, Software Standards
About Us  |  Contact Us  |  For Advertisers  |  For Business Partners  |  Site Index  |  RSS
SEARCH 
TechTarget provides technology professionals with the information they need to perform their jobs - from developing strategy, to making cost-effective purchase decisions and managing their organizations' technology projects - with its network of technology-specific websites, events and online magazines.

TechTarget Corporate Web Site  |  Media Kits  |  Site Map




All Rights Reserved, Copyright 2006 - 2009, TechTarget | Read our Privacy Policy
  TechTarget - The IT Media ROI Experts