DDJ, March 2000 -- Testing and Debugging


FEATURES

WHITE-BOX TESTING

by Oliver Cole

Traditionally, there are two main approaches to testing software: "black-box" (or functional) testing, and "white-box" (or structural) testing. White-box testing strategies include designing tests such that every source line of code is executed at least once, or requiring every function to be individually tested.

DEBUGGING MULTITHREADED APPLICATIONS

by Peter Horwood, Shlomo Wygodny, and Martin Zardecki

It is often significantly harder to locate and test for bugs in multithreaded and multiprocess applications than for nonthreaded, single process situations. Our authors describe some of the problems with multithreaded applications and discuss common debugging techniques.

TESTING UNIX DAEMONS

by Len DiMaggio

UNIX daemons are programs that run in the background, letting you do other work in the foreground. Len presents a "recipe" for testing them.

BUILDING A TESTPOINT FRAMEWORK

by Noam Cohen

Noam presents a framework for creating and using testpoints. He originally designed and implemented this framework while developing VideoClick, a video distribution and management system.

CONSIDERING RECURSION

by Arch D. Robison

Granted, recursion means different things to different people. But for Arch, recursion means trouble because recursive code entangles control flow, which hurts readability, reuse, and optimization.

INSIDE BLUETOOTH: PART I

by James Y. Wilson and Jason A. Krontz

Bluetooth technology is an open specification for wireless communication and networking. In the first of a two-part series, Jim and Jason lay out the basics.

EMBEDDED SYSTEMS

INSIDE REAL-TIME LINUX

by Jerry Epplin

Real-Time Linux is based on the same model as the NT-based systems, but, since it is freely available, doesn't have the associated cost overhead. To illustrate how you can use RTLinux, Jerry presents a data-acquisition application.

INTERNET PROGRAMMING

MEASURING NETWORK SOFTWARE PERFORMANCE

by James K. Yun

The network performance measurement techniques James discusses here are especially useful in projects where the network interface is encapsulated in a class library or network middleware.

PROGRAMMER'S TOOLCHEST

SOURCEMONITOR: EXPOSING YOUR CODE

by James F. Wanner

SourceMonitor is a programmer's metrics tool that Jim wrote to expose the size and quality of his source code. To parse source code, Jim used Sandstone's Visual Parse++; to create reports, he turned to Stingray's Objective Chart.

COLUMNS

PROGRAMMING PARADIGMS

by Michael Swaine

When we look back at it, 1999 might have been a breakthrough year for nanotechnology, as big advances were made in tiny computers.

C PROGRAMMING

by Al Stevens

Smart iterators might not be such a dumb idea, but, as Al points out, there are costs associated with them.

JAVA Q&A

by Mike Jennings

A service in Windows NT (or "daemon" in UNIX parlance) is a program that runs in the background to do a specific task. Can you write NT services in Java? Sure, and Mike shows you how.

ALGORITHM ALLEY

by Mingfu Gong

Group sorting algorithms are well suited for applications where recursion is either not allowed or inefficient. In this month's column, Mingfu presents an N*logN adaptive group sort algorithm.

DR. ECCO'S OMNIHEURIST CORNER

by Dennis E. Shasha

Benjamin Baskerhound has turned over a new leaf, this time coming to Ecco and Liane for help, rather than mischief.

PROGRAMMER'S BOOKSHELF

by Gregory V. Wilson

This month, Greg examines Extreme Programming Explained, by Kent Beck, and the recently released The Pragmatic Programmer: From Journeyman to Master, by Andrew Hunt and David Thomas.

FORUM

EDITORIAL

by Jonathan Erickson

LETTERS

by you

NEWS & VIEWS

edited by Nicholas Baran

OF INTEREST

by Nicholas Baran and Amy Lincicum

SWAINE'S FLAMES

by Michael Swaine