Collectively, problems related to resource sharing in multi-threaded, multi-processor, and distributed systems are termed "concurrency problems." Concurrency problems are further divided into several major subcategories such as deadlock, livelock, priority inversion, starvation, and race conditions. This article will focus on race conditions.
You've probably heard the question about noise in the forest: Does a tree falling in the forest make any noise if no one is there to hear it? Noel Nyman examines the question, "Is a bug a bug if no user can ever make it happen?"
We all miss some bugs, but the bug you're most likely to miss is one that gives wrong results that might look right. Let's look at a famous and costly example, then we'll see what we can do during testing to avoid a similar disaster.
PREfix provides a source code simulation tool that is able to perform automatic review for a wide range of programming defects that lead to program crashes. Defects reported by PREfix include de-referencing NULL pointers, using uninitialized memory, leaking memory or resources, or using illegal values. Here is an analysis of the product.
Brian Marick argues for using testers at the requirements analysis stage of a project. He says, "While QA is primarily about process, testing—my specialty—is about product. Whatever else a tester might do, she certainly eventually exercises the product with the aim of discovering problems a user might encounter. This essay is about that 'whatever else' the tester does."
The Internet provides a wealth of information on software quality and testing. However, finding that information can be a challenge. In this first edition of Web Watch, Brian Marick tells you how to start your search.
QACenter provides an integrated solution that will help you test GUI applications and track the bugs you find. As with most tool suites, you get the best results if you use all the features. If you don't need some parts of QACenter, the integration is less important to you. Then the strengths and weaknesses of the individual tools, like QARun, are more significant.
The next time someone says to you something like, "You can't test quality into a software project," you might reply, "Well, you can't manage it in either." There may be a pregnant pause, but perhaps it will lead to thoughtful discussions about testing and quality. At the very least, it'll make those twin subjects a whole lot less (shh!) Dullsville and boring!