DDJ February 1997 - Software Debugging and Testing


FEATURES

UNIT AND REGRESSION TESTING

by Adrian McCarthy

Testing a function, module, or object in isolation from the rest of the program -- referred to as "unit testing" -- coupled with rerunning tests to detect unexpected changes in behavior ("regression testing") can dramatically reduce your bug counts. Adrian describes how to build effective units tests and automate regression testing.

A DEBUG/TRACE TOOL

by Rainer Storn

The debug/trace tool Rainer presents here is useful when you don't have a powerful debugger at hand, and also when you need to build trace functionality into your code for error-spotting support at the client's site.

JAVA GUI TESTING

by Alan Walworth

As Java development takes off, so does the need to test GUI applications written in Java. Alan examines Java GUI testing issues and presents a test harness written in and for Java.

A DISASSEMBLER WRITTEN IN PERL

by Tony Zhang

Tony presents the core subroutines of a disassembler written in Perl. Although designed for Intel's x86 instruction set, you can easily modify or customize the disassembler for your own applications.

EXAMINING THE WINDOWS NT FILESYSTEM

by Mark Russinovich and Bryce Cogswell

Mark and Bryce open up the inner workings of the NT filesystem by describing how a filesystem request originates in a user's program and ends up as a disk access. They also present an application called Filemon that monitors and displays all filesystem activity.


EMBEDDED SYSTEMS

ROBOTS AND FINITE-STATE MACHINES

by Everett F. Carter, Jr.

Designing and building autonomous robots presents a host of technical challenges. Our author focuses on one of these challenges, describing the high-level processing he implemented in designing a robot-control system.


NETWORKED SYSTEMS

UNIX FILESYSTEMS WITHOUT I-NODES

by Volker Lendecke

The Linux kernel nfs, smbfs, and ncpfs filesystems make it possible to link Linux machines to file servers across a LAN -- even though Microsoft's SMB protocol is not designed to handle UNIX clients like Linux. Volker presents a workaround for this limitation.


PROGRAMMER'S TOOLCHEST

EXAMINING C++ PROGRAM ANALYZERS

by Scott Meyers and Martin Klaus

Our authors examine a bevy of off-the-shelf tools that parse and analyze C++ source code, enabling you to detect troublesome C++ code via static analysis.

TESTING TESTERS

by Ron van der Wal

In an ideal world, development progresses smoothly from requirements to completion. In the real world, errors creep in. Ron examines a collection of commercially available automated testing tools that aid in ferreting out those errors.


COLUMNS

PROGRAMMING PARADIGMS

by Michael Swaine

Apple, Java, and the BeBox are on Michael's mind this month.

C PROGRAMMING

by Al Stevens

Al presents MIDI Xchg, a program that tests the MIDI data stream by sending event messages from one device to another as fast as possible.

JAVA Q&A

by Cliff Berg

This month, Cliff shows how you can use Java's distributed programming model and access a SQL database from a Java applet.

ALGORITHM ALLEY

by Oleg Kiselyov

Hoping to find the most efficient line between two points, Oleg examines scheduling algorithms and NP-complete problems.

UNDOCUMENTED CORNER

by George Shepherd and Scot Wingo

George and Scot continue their examination of the CSplitterWnd class, this month showing how you can apply knowledge of the CSplitterWnd internals to solve common MFC programming problems.

PROGRAMMER'S BOOKSHELF

by Phil Mitchell

Phil goes back to the future in his look at Thomas Landauer's The Trouble With Computers and The Future of Software, edited by Derek Leebaert.


FORUM

EDITORIAL

by Jonathan Erickson

LETTERS

by you

NEWS & VIEWS

by the DDJ staff

OF INTEREST

by Eugene Eric Kim

SWAINE'S FLAMES

by Michael Swaine


Copyright © 1997, Dr. Dobb's Journal