-
  home |  testing services |  automation |  development |  training |  downloads |  clients |  about us |  contact us 
#
LogiGear Download FREE articles, presentations, white papers and more!

home >> resources >> Common Software Errors

>>
>> Home
>> Resource Center
>>
Latest articles
Classic articles
Articles by others
Resource directory
>> White papers
>> Newsletter archives
>> RSS feed
>> Books
>> Contact us

Ask us now on live chat...


For more information:
Contact Us

Printer friendly:
PDF version

LogiGear Resource Center

AddThis Social Bookmark Button

Testing Computer Software Second Edition

Common Software Errors


This is the appendix from the best-selling book
Testing Computer Software, 2nd ed.

Copyright © 1988 by Cem Kaner
Copyright © 1993 by Cem Kaner, Jack Falk, Hung Quoc Nguyen

This is part 1 of 13.

[ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ]
[ 10 ] [ 11 ] [ 12 ] [ 13 ]

This Appendix describes over 400 bugs. The descriptions are short, including only what we considered the most interesting information. It's worthwhile reading this list, even though you may find it boring. On first reading it provides a frame of reference, details, and background about problems you should look for while testing. Its greater value is as an organized list of program problems for future reference. A good list, built up with time and experience, can be a powerful tool.


A set of test materials is nothing more than a list of possible problems in a program and a set of procedures for determining whether the problems are actually there or not.


Generating reference lists of bugs on the fly is risky and inefficient. It takes too long to dredge up old insights, and you're too likely to get stuck on one or a few themes. We prefer to check a comprehensive "standard" list to get further ideas for testing a program. This Appendix is an example of a standard list.

Whenever you test a new program, you'll think of new entries for this list. Add them to it. We recommend that you enter this list onto your computer and manage it with an outline processor.

Here are examples of ways you should use this list:

  1. Evaluate test materials developed for you by someone else.

    When you contract out the development of test materials you're likely to get back many thick binders of test cases. They look impressive, but they're incomplete. The author has blind spots, which you have to find. For example, in stacks of test materials that we've seen developed by contract testing agencies, we've yet to see an explicit race condition test. Unfortunately, it's easier to see what an author had in mind than to step back and see what's missing.

    We recommend evaluating the coverage of test materials against a checklist. Include a few examples of each class of error that you can imagine existing in the program. It doesn't matter whether the program has these problems - it only matters that they could be there. Once the list is complete, check the test materials to see which problems they would expose. If these tests wouldn't expose some errors in your list, look for tests for similar problems. This can quickly expose large classes of missing tests.

    It's easy to make a checklist from a large error list like the one in this Appendix. Just look for classes of errors that are relevant to your testing project and find a few good examples of each. Add any other problems that you think of that seem important for the program under test.

  2. Developing your own tests.

    Write your own list of errors that you think the program could have. Then look here for more ideas. Consider each problem in this Appendix: if you're sure it's irrelevant to the program, forget it. Otherwise write a test case (or a few) to see if the program has the problem. When in doubt, ask the programmer whether a given type of error is possible in the program and how to test for it.

    We also recommend this list for testing "on the fly." If you don't have time to plan and document a set of tests for a program, test from a list of candidate problems.

  3. Irreproducible bugs.

    A bug is hard to replicate because you don't know what triggered the failure, what the program did or displayed, or what could cause such a problem. You give up because you run out of hypotheses.

    Use this Appendix before giving up.


    Try to match reported symptoms with problems listed in this Appendix. Be creative: the matches won't be perfect because the reports are incomplete and incorrect. (If they weren't, you could reproduce the bug.) Even so, the list can help you break out of your current line of thinking. If you didn't need to refocus on other possibilities, you wouldn't be so close to giving up.

  4. Unexpected Bugs.

    When you discover a bug accidentally, or when one surfaces in a shipping product, look for others like it. You probably missed running a group of tests to detect the lot. This section can help you generate a list of possible related problems and tests.

OUTLINE OF COMMON SOFTWARE ERRORS

Other Articles by Cem Kaner

Other Articles by Hung Nguyen


-
newsletter | RSS | site map |

1 (800) 322-0333   © 2009 LogiGear Corporation. All rights reserved.   Legal Notice.   Privacy Policy.