Advancements in unit testing are made, better tools are created and development teams work proactively to scour their code. However, time pressures, poor planning and lack of knowledge take their toll on this type of testing.
This Learning Guide introduces developers to debugging and unit testing with a variety of articles, tutorials, tips and expert responses. If you have any resources that you would like to share, or have suggestions for a future Learning Guide topic, please email me.
TABLE OF CONTENTS|
Software debugging basics
Unit testing basics
Unit testing, Extreme Programming and TDD
Debugging for security
Other useful resources
|Software debugging basics|
- Article: Software debugging, testing and verification -- From "IBM Systems Journal," this is a general, accessible article, perfect for beginners. The authors explain the place of debugging in the software development lifecycle (SDLC) -- though some may disagree with their placement. The article is from 2001, but the problems the authors describe, constantly changing requirements, time crunch, wishful thinking about "fixing it later," are, sadly, still commonplace.
- Article: Debugging -- While not terribly sophisticated, this straightforward article clearly states the main phases in many debugging processes. Identify bug, replicate bug, understand bug and fix bug are pretty routine. However, the author also advocates learning from the bug, a crucial step that is often ignored.
- Article: Boost efficiency with a performance-tuned debugging strategy -- Using a case study, the author portrays a streamlined debugging process, including sample code along the way.
- Article: Introduction to power debugging -- Ever use your debugger and think, "Gee, this thing doesn't work very well!" Before you give up on the tool, read this informative article on how to use your debugger in innovative ways so you can get the most out of it.
- Article: Debugging: The software industry's dirty secret -- The author argues persuasively for increased attention for debugging. He describes two techniques, automatic bug detection and reversible debugging, as promising.
- Expert response: Software bugs, errors and defects: What's the difference? -- A lot of confusion surrounds this topic. Expert Mike Kelly provides an excellent response to a frequently asked question.
- Article: Multi-threaded debugging techniques -- Debugging a complicated multi-threaded application poses all sort of challenges. This article guides you through the process without skimping on the details.
- Book excerpt: Why Programs Fail: A Guide to Systematic Debugging -- Chapter 3, Making Programs Fail -- Testing is one of the most important factors in software debugging. "Making Programs Fail" covers testing techniques and procedures as they relate to debugging.
- Book excerpt: If I Only Changed the Software, Why is the Phone on Fire?: Embedded Debugging Methods Revealed -- Chapter 1, Debugging Other People's Code, Fast -- This elaborately titled book uses a fiction format to depict software debugging. Chapter 1 follows a team as they uncover a difficult bug and eventually figure out how to quash it. Code is provided, and the format is suited to beginners.
- WhatIs.com definition: shotgun debugging -- When people aren't sure which debugging approach, they may try several methods. The problem with shotgun debugging, however, is you can introduce new problems.
Move on to our next section: Unit testing basics.
This was first published in November 2007