In the previous post, we explained the context where software fault, error, and failure are helpful. In this post, we introduce the RIP (Reachability, Infection, Propagation) Model that we use for mapping failure to a fault. We will introduce you to software testing based on the remarkable book, Introduction To Software Testing by Paul Ammann and Jeff Offutt.
RIP model is useful for stakeholders that understand product source code.
What Is Debugging
To distinguish debugging from testing, we will first give a definition of testing and test failure that is aligned with the Introduction To Software Testing Book.
Testing is evaluating software by observing its execution.
Testing failure is the execution that results in failure.
Debugging is a process of finding a fault given a failure.
Software tester by testing activity could find a failure. Then creates a bug report according to RIMGEA. A software developer reads a well-written bug report that could help in mapping failure to a fault. Debugging is one of the techniques that could be useful. Other are:
- code review
- pair programming
RIP Model is a fault/failure mapping model. Not all failures are observable. This model sets three conditions that need to be fulfilled, so failure could be detectable:
The location or locations in the program that contains fault must be reached using test data.
After reaching the program location with fault, the program must enter an error state.
Error state must propagate, so program output is incorrect.
RIP Model is useful even when we have a case of missing code. In that case, program still reaches error state, because program counter that is part of program state, has invalid value.
When you test and find a bug, this is an easy part. Much more challenging is to relate that failure to software fault.