Hello, and welcome to DDJ.com
CMP Media Launches New Dr. Dobb's Journal

SD West 2006 announces this year's list of Jolt Product Excellence Award winners and Productivity Award winners.

LOG INRegisterForgot password?
What are the green links?
All Access members only
RSS Feed
DDJ > Dr. Dobb's Departments > Testing & Debugging

Testing & Debugging

Editor's Note | News | Features |

Tools and techniques for testing, profiling, performance optimization, debugging and quality assurance.


Dr. Dobb's Journal May 2006
Jonathan Erickson
Testing & Debugging (11.6 MB)

Debugging and Full System Simulation
Jonathan Erickson
Peter Magnusson explains how multiprocessing is driving the need for simulation in systems-level debugging. (MP3, 4:37 mins.)

Debugging & Embedded Linux Runtime Environments
Rajesh Mishra
Debugging in embedded Linux runtime environments requires an assortment of tools.

Interface: License Overload
Warren Keuffel
As open source becomes entwined with the profit sector, the ancient GNU Public License is showing its age. Will the new version help developers avoid the legal thicket of alternate licenses?

Software Build Tips & Tricks: Build Your Own Makefile Debugger

A Software Development Vendor Perspectives NetSeminar

Wouldn't it be nice to be able to set a breakpoint in a Makefile? Learn practical, applicable tips for troubleshooting software builds. Among other tips, you will learn how to turn GNU Make into an interactive Makefile debugger with the ability to set a breakpoint in a rule and then interactively discover macro values, definitions, why the current rule is being executed and more. If you’re spending valuable time uncovering the causes of broken builds, this is a presentation you won’t want to miss.

The Software Quality Lifecycle
Yochi Slonim
The current approach to resolving application problems--and ensuring software quality throughout the entire useful life span of the application--is not getting the job done.

Pragmatic Exceptions
Benjamin Booth
February 2006 Pragmatic Exceptions.

Viewing & Organizing Log Files
Phil Grenetz
LogChipper, the tool Phil presents here, lets you view and organize the contents of log files.

Dynamic Bytecode Instrumentation
Ian Formanek, Gregg Sporar
Dynamic bytecode instrumentation is an innovative technique that makes profiling fast and easy.

Pragmatic Exceptions
Benjamin Booth
January 2006 Pragmatic Exceptions.

Programming for Reliability
Andy Chou
Lessons learned from static analysis of millions of lines of code

Detecting Potential Deadlocks
Tomer Abramson
To avoid deadlocks, Tomer explains how to use tools that detect potential deadlocks each time code is executed.

Recursive Descent, Tail Recursion, & the Dreaded Double Divide
Truck Smith
What can you do when the wrong answer turns out to be right?

Achieve More Comprehensive Verification With Less Work
Michael J. Hunter
Test cases exist to verify that operations do in fact have the results they are expected to have. "Monkey at the keyboard" work---where what should happen is unknown or what happens is ignored--may be doing something but it certainly is not testing.

The Craftsman: Team Player
Robert C. Martin
Returning to Jerry, Alphonse gets a reprieve from Jasper's jollity and learns more about acceptance tests—alternate and otherwise—and the collaborative value of his own work.

Compile-Time Assertions & Debugging
Klaus Wittlich
It's common practice to use assertions to check invariants at runtime, but assertions can be equally useful at compile time for doing things like checking arrays for proper size and order.

Unit Testing & CxxTest
Eric Gufford
Unit testing can save you time and catch bugs early in the development cycle, but it can be tedious to set up. CxxTest is a framework that uses Perl to automate the creation of test classes for your application.

Efficient Testing of .NET Applications
Steve Mostello
The .NET software infrastructure brings both benefits and challenges to the application and test and QA engineers.

Assessing the VB6 Assessment Tool
Mark Baker
What is the best way to determine the effort needed to migrate a legacy Visual Basic 6 application to VB.NET?

Pragmatic Exceptions
Benjamin Booth
December 2005 Pragmatic Exceptions
Tip #4: Make Only the Actionable Obvious

Setting Up an Enterprise-Wide Testing Practice for Software Quality Optimization
Alexandra Weber Morales
This session will take attendees through the business planning and strategy basics for setting up an enterprise-wide testing practice for software quality optimization. The session will incorporate best practices culled from real-world experiences within several large corporations.

Important Factors For Test Automation Success
Alexandra Weber Morales
This web cast will focus on two important such factors: developing applications for testability and setting test automation standards that promote productivity. Attendees will learn how organizations can develop applications that facilitate test automation and, thus, optimize the overall quality process.

Test Automation: An Architected Approach
Alexandra Weber Morales
The particular architecture championed in this session is based on the idea of automation code as an application in its own right. Code reuse, encapsulation, recursion, object-oriented concepts, testing maturity and usability concepts will be covered.

Best Practices for Creating a Performance Testing Center of Excellence
Alexandra Weber Morales
This web cast provides you with a comprehensive outline for creating a testing center within your organization. The session details critical processes required for lab setup and preparation, efficient planning, script development, scalability testing and results analysis.

Lessons Learned Along the Performance Testing Road
Alexandra Weber Morales
In order to optimize performance, one must have an understanding of application behavior under real-world usage conditions. This web cast will be a guided tour through real-world experiences, exploring a selection of projects on which it was necessary to determine how each system performed under load - or even IF each system could perform under load.

Why Did My Build Break? Learn Effective Techniques to Debug Troublesome Makefiles
Alexandra Weber Morales
Join Usman Muzaffar in a fun and engaging discussion on how to effectively debug those troublesome Makefiles that keep you awake at night. If errors in command scripts or syntax errors have haunted you in the past, this is a discussion you won’t want to miss.

The Craftsman: The Trouble with Constants
Robert C. Martin
As Jasper tries to tone down and acceptance tests continue to fail, Alphonse learns something about message IDs—and perspective.

IBM/Rational Software Testing Tools
Mike Riley
Brian Bryson of IBM/Rational discusses its software testing tools. Brian also explains IBM's plans for the self-healing autonomic systems of the future and how this vision will alter the software testing process. (MP3 audio, 9:54 mins.)

.NET Winforms Testing Tools
Mike Riley
Andrew Flick of Infragistics talks about Test Advantage 2005 components that allow regression testing on Windows forms in the .NET Framework. (MP3 audio, 9:43 mins.)

Linux Kernel Debugging
Dean A. Gereaux
Dean explains how to debug drivers with Linux Kernel Debugger, add hooks into KDB from your drivers, and create KDB modules.

Debugging Heterogeneous Distributed Applications
Stephen B. Jenkins
Debugging complex, asynchronous, heterogeneous, distributed applications is hard. The techniques Stephen presents here makes the process easier.

Static Analysis, Security Holes, & Networking Code
Andy Chou
Static analysis, which examines source code at compile time, is an effective tool for spotting security flaws. However, scaling it to large codebases is a challenge.

Are Standards Enough for Web Services Security?
Jeremy Epstein
The set of Web services standards seems to grow by the day. But if a Web services implementation supports all of these standards, is it necessarily secure?

Getting Runtime Info from the CLR
Mark Baker
Using the System.Diagnostics namespace, you can update the Trace class to dump out some useful diagnostics about where the Trace object is being used

Using Hardware Trace for Performance Analysis
Michael Lindahl
Michael examines embedded-systems performance-analysis techniques, and discusses some of their inherent limitations.

The Eclipse Test and Performance Tools Platform
Andy Kaylor
The Eclipse Test and Performance Tools Platform provides open Standards for interoperability.

What's in a Name?
Robert C. Martin
When Alphonse gets carried away with refactoring, Jasper reins in his excess enthusiasm with a timely reminder about the necessity of testing. Ouch!

The Proof Is Out There
Mike Riley
Smart developers know testing is one of the most important phases in the development lifecycle. Yet, testing software is like playing Go—easy to learn, but difficult to master. These testing tools can offer you an edge.

Reverse Engineering
Jonathan Erickson
John Blattner discusses reverse engineering in general, and the unique demands of reverse engineering real-time embedded systems in particular. (MP3 audio, 4:19 mins)

Lightweight Tracing in C#
Mark Baker
What is a good way to implement tracing in my application?

Programmer's Progress
Robert C. Martin
As Jasper struggles to quell his condescension, Alphonse explores the intricacies of eradicating error messages one by one—and both recognize that they're really learning something.

Testing Web Applications
Sean Dawson, Kristin Kerr
Sean and Kristin automate web application testing by integrating JWebUnit into Hippo's existing test framework.

Code Coverage for C Unit Tests
Ryan Bloom
Gcov is a test coverage program that's part of the GCC suite of tools.

When Enough's Enough
Robert C. Martin
After Alphonse suggests running tests in sequence, Jasper’s patronizing refusal rings reluctantly true—and causes an unprecedented explosion

Deja Parallel All Over Again
Gregory V. Wilson
Do multicore processors, multithreaded programming, and replay debuggers have what it takes to do parallel computing right this time around?

One More Time
Robert C. Martin
Camaraderie hits rock bottom when Alphonse is assigned to another journeyman. But behind Jasper's gleaming grin and effusive exterior, he's got a point—much to our apprentice's increasing annoyance.

Are We There Yet?
Karl Wiegers
While pressured schedules are nothing new, in the long run, quality counts. But how do you know when you're done? Take these tips to create software that meets your stakeholders' needs—on time. By Karl Wiegers

Dr. Dobb's Journal June 2005
Jonathan Erickson
Testing & Debugging
As software systems become more complex, testing and debugging become more important. In June, we examine techniques such as omniscient debugging and hardware-assisted breakpoints, and look at testing tools for Java and C#. We also take a look at TR1, the Technical Report on C++ Library Extensions, and the Linux 2.6 kernel. Then there's coverage of error messages, software reuse, performance monitoring, and more. (10.6 MB)

Hardware-Assisted Breakpoints
Dmitri Leman
Dmitri explains how to access debug registers on XScale-based CPUs from C/C++ applications.

Performance Monitoring with PAPI
Philip Mucci, Nils Smeds, Per Ekman
The Performance Application Programming Interface is a portable library of performance tools and instrumentation with wrappers for C, C++, Fortran, Java, and Matlab.

System Verification with SCV
George F. Frazier
The SystemC Verification Library speeds up verification of electronic designs.

Debugging Production Software
John Dibling
The Production Software Debug library includes utilities designed to identify and diagnose bugs in production software.

Dissecting Error Messages
Alek Davis
Error messages are the most important information users get when encountering application failures.

Examining Software Testing Tools
David C. Crowther, Peter J. Clarke
Our authors examine class-based unit testing tools for Java and C#.

Omniscient Debugging
Bil Lewis
With omniscient debugging, you know everything about the run of a program--from state changes to the value of variables at any point in time.

Managing COM Errors with Macros
Mark Baker
Macros can be used to handle rich error information from a COM object, and a well-designed one won't add bulk to the compiled code.

Rich Error Information
John Calcote
The RichError class provides a mechanism to instrument existing code bases for rich diagnostic composite error information, with minimal engineering overhead.

Analyzing Real-Time Systems with Hardware Trace
Michael Lindahl
Hardware trace is a debugging technology that captures a history of the instructions that a microprocessor executes.

Digital Bob Cratchit
Rick Wayne
Sift and clean your Java code with Agitar’s Agitator 2.0, and stay inside the lines with ILOG’s Rules for .NET. Also, jProductivity’s Protection! Pro repels freeloaders from your Java code, and two new tomes talk privacy and security.

Managing That Millstone
Michael Feathers
Legacy code is often used as slang for murky, difficult-to-change code. But to me, legacy code is simply code without tests. Whether you want faster performance, more features or manageability, the key is simple: instantaneous feedback via tests.

Using Trace to Debug Real-Time Systems
Michael Lindahl
Hardware trace data gives you full printf() debugging in a completely nonintrusive fashion.

Perl, VMWare, & Virtual Solutions
Sam Tregar
The Krang Farm is an automated build and test system created using VMWare and Perl.

Induce Us Not
Warren Keuffel
Proposed federal legislation threatens to clamp down on fair use of copyrighted material, turning developers' workaday explorations into felonies. What's going on here?

Scripts as Modules
brian d foy
brian shows how to have a script masquerade as a module. This makes automated testing far easier.

Eclipse Validators
Lawrence Mandel
Lawrence presents a validator plug-in that uses Eclipse markers and dialog boxes to display problems.

Me and My Shadow
Rick Wayne
Keep your server copy piping hot with XLink's ClusterReplica, morph .NET into Java with Stryon’s iNET, and get a simpler bug tracker: Excel’s QuickBugs. Also, don't miss these four tomes from Kerievsky, Sobell, Bejtlich and a Russian troika.

In the War Zone
Robert C. Martin
Is all this testing nonsense just make-work for morons? After toiling on the suit registration requirement for nearly four hours, the only production code the team's got to show for it is...

Virtual Platform Testing
Mark Baker
What is the best way to test an application on multiple versions of Microsoft Windows when hardware resources are scarce?

Creating Trace Listeners in .NET
Michael Taylor
The .NET Framework comes with powerful, extensible classes for debugging and tracing applications

Swiss Wisdom
Robert C. Martin
Avery's resistance to acceptance tests creates a stumbling block for the DTracker team, as our intrepid Alphonse remains neutral.

Automated Testing with the Perl Test:: Modules
Andy Lester
Andy uses Test::Harness and Test::Simple do do automated testing - a major tenet of Extreme Programming.

Prevention's the Cure
Adam Kolawa
Wouldn't it be nice to have a guru tell you which classic coding mistakes to avoid? Pattern-matching static analysis tools help you shift focus from finding bugs to coding cleanly.

Red Light, Green Light
Robert C. Martin
Taking the plunge into a safety-critical project, Alphonse and the team wrangle out an acceptance test—but competitive currents threaten to sink their progress.

RunTime Monitoring & Software Verification
Doron Drusinsky
Doron examines runtime monitoring, focusing on its application to robust system verification.

The Subversion Version-Control Program
Jeff Machols
The Subversion version-control program provides all the benefits of CVS—along with many improvements.

C++ and the Perils of Double-Checked Locking: Part II
Scott Meyers, Andrei Alexandrescu
In this installment, Scott and Andrei examine the relationship between thread safety and the volatile keyword.

Building Callout Controls
Thiadmer Riemersma
Thiadmer's balloon-style Windows control is configurable for many purposes.

Performance & System Testing
Thomas H. Bodenheimer
When collecting performance data from dozens—if not hundreds—of computers, automation is a necessity.

Pseudorandom Testing
Guy W. Lecky-Thompson
Guy examines how you can test objects by creating specific test harnesses with verifiable datasets.

Testing Java Servlets
Len DiMaggio
Java servlets differ from other types of programs, thereby affecting your testing strategies.

The Testing Toolbox
Frank Cohen
With these 10 tools, Java scalability, performance and functionality are no longer elusive. Chockful of techniques, they enable software developers, QA technicians and IT managers to effectively proof programs.

Tech Tips
George Frasier
Enumerating registry subkeys in D, debug formats in GCC, and null iterator types for STL.

C++ and The Perils of Double-Checked Locking: Part I
Scott Meyers, Andrei Alexandrescu
In this two-part article, Scott and Andrei examine Double-Checked Locking.

A Heisenberg Compensator for Measuring Software Performance
Gary Carleton, Charles Spirakis
Measuring software performance without affecting the performance of the system being measured.

Perl Benchmarking
Glenn Wood
Perl is compiled each time it is run, and classes and methods can be redefined after they have been initially defined, at runtime. This feature can be used to implement a powerful, easily used, generalized benchmark harness.

Debugging Standard Containers with GDB
Herman Pijl
Herman uses Standard containers as a tool when debugging with GDB, the GNU debugger.

Tracing Application Execution
Tomer Abramson
The most common and effective way to debug and get information about applications is to use some form of tracing. Tomer's technique transforms tracing from a "heavy" to "light" operation.

Debugging Real-Time Production Software
Bill Pyritz
Debugging real-time software is hard. Bill presents techniques that make the job easier, more efficient, and more reliable.

Ease of Use Equals Use
Aaron Marcus
What's user-centered UI development—and why does it matter? Developers tend to focus on functionality, forgetting that powerful tools become popular only if they're easy to use. Here's how to interview users, create personas and build applications that will resonate with your customers.

Software--The Root of the Problem
Rosalyn Lum, Rick Wayne
Step up on security with two new tomes, hop on the platform bandwagon with SlickEdit Studio and grab a discount on Motion Computing’s Tablet PC bundle. Also, Eclipse gets a new WYSIWYG GUI builder, and Mr. T. goes way, way wireless.

Exponential Testing
Dana Cline
See how one small lab, a manager and a mere handful of testers can go through hundreds of hardware and software configurations using modern virtualization software.

Making the Grade
Jeff Langr
Do parameterized types achieve Sun's goal to make Java code "clearer, safer, shorter and easier to develop?" Read on as we put J2SE 1.5 to the test. Part 2 of a series

Show Me the Structure
Gregor Kiczales
Aspect-oriented programming is all about crosscutting structure. Understand that, and it’s clear what direction AOP tools need to follow.

Genetic Algorithms & Real-World Applications
Philip Joslin
Genetic algorithms can play a key role in testing electronic testing tools.

C# & Electronic Test Instruments
Andy Purcell
With C# and I/O libraries compliant with the Virtual Instrument Software Architecture specification, you can create test and measurement applications—complete with GUIs.

Software Manufacturing
Fred Wild
Software manufacturing is the process of applying automated methods to produce software components.

Beats the Heck out of Grep
Rick Wayne
DtSerach 6.3 lets you offer near-instant searching of gigabyte-scale databases. Vordel's SOAPbox tests your app's compliance, InterSystems' Ensemble adapts divers artifacts to a consistent object model, and Panscopic's new Scope Server helps you build reports from XML documents on-the-fly.

The Business Case for Software Security
Herbert H. Thompson, James A. Whittaker
Is it possible to make a business case for software security?

Editor's Forum
P.J. Plauger
March 2004 Editor's Forum

We All Have Issues
Rick Wayne
Serena's TeamTrack keeps your projects on course; speed up CORBA with ORBexpress RT. Also, open your mind (and your app) with JewelBox Builder, and find foul-ups fast with Etnus's CodeRoad Bridge and TotalView.

On the Newsstand


Table of Contents
Order this issue now.
Subscribe to DDJ

Departments

64bit
AI
Architecture & Design
C++
Database
Eclipse & Open Source
Embedded Systems
Global Developer
Java
Lightweight Languages
Linux/UNIX
Mobility
Security
SOA, Web Services & XML
Testing & Debugging
Windows/.NET

CMP DevNet Spotlight

Ada and the Language Renaissance
A renaissance in computer language design has allowed "little" languages like Ruby and Lisp to accumulate large, active communities of developers that continue to discover new uses for these technologies. Ada is another language that has benefitted from grassroots-level development. The result: Ada 2005.

In the News

DDJ Newsletters

Programmer's Bookshelf Newsletter
edited by Deirdre Blake
A monthly newsletter that brings you reviews of the most important computer books, updates on recent releases, recommedations from our resident experts, and excerpts from new and important books that belong on every programmer's bookshelf.  --more--

DDJ Resources

Mobilized Software
Developer Events

DevNet Podcasts

Antarctica: Eclipse Comes In From the Cold
Josh Reed discusses the Antarctic Geologic Drilling Program, and the important role that open source tools played.

Software Glitch Implicated in Mars Global Surveyor Failure
NASA Watch reports that NASA's Mars Global Surveyor stopped responding to commands a few months ago due to improperly coded software.

Info-Link

DDJ Store


Dr. Dobb's Developer Library DVD: Release 2
The Dr. Dobb's Developer Library DVD is a new fully searchable DVD that includes 17 years of Dr. Dobb's Journal, 14 full years of C/C++ Users Journal, 3 years of The Perl Journal, nearly 4 years of Dr. Dobb's Sourcebook, and thousands and thousands of lines of source code—all on one DVD!

Click here for more information.

 




MarketPlace

Build IT Knowledge with Current & Trusted Content
Helps Employees Develop & Hone New Technical Programming Skills. Sign Up & Get Full Access.

Instant Answers to Your IT & Business Questions
Sign Up & Get Full Access To The Definitive Online Book Collection With SkillSoft's Books24x7�.

Discover WinDev 11 RAD
and develop 10 times faster ! ALM, IDE, .Net, PDF, 5GL, Database, 64-bit, etc. Free Express version

Check Out IT Certification Preparation Materials
Sign Up With SkillSoft & Get Access to Training Materials for Over 50 Professional Certifications.

Wanna see your ad here?