Published Sep 3, 2019

Episode 101: Andreas Zeller on Debugging

In Episode 101, Andreas Zeller demystifies the art of debugging by exploring the principles of Delta Debugging, the importance of a scientific mindset, and the evolution from traditional to automated techniques, providing invaluable insights into efficient error identification and problem-solving in software development.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Delta Principles

    Delta Debugging is a systematic approach to identifying errors by reducing input incrementally. explains how this method emerged from the challenges faced by the Mozilla team in 2001, who struggled with extensive bug reports. By simplifying inputs and automating tests, Delta Debugging narrows down the cause of failures efficiently 1.

    The idea is that as soon as you have an automated test that checks whether a specific failure is still there or not, all you need in this case is a strategy that does this minimization for you.

    ---

    The process involves a binary search-like algorithm, which divides the input into smaller parts to isolate the error, making it a powerful tool for debugging 2.

       

    Applications

    Delta Debugging finds practical application in automating failure isolation and enhancing test-driven development. highlights its integration with JUnit tests, where a plugin can automatically identify failure-inducing changes 3. This method aligns with the scientific approach to debugging, where hypotheses are tested systematically to pinpoint errors.

    As soon as a junit test would fail in the background, our plugin would automatically set itself into motion and isolate the failure inducing change.

    ---

    By combining Delta Debugging with automated test generation, developers can streamline the debugging process, making it an essential part of modern software development 4 5.

Related Episodes