CS510 Software Engineering
Delta Debugging and Statistical Debugging
- Asst. Prof. Mathias Payer
Department of Computer Science Purdue University TA: Scott A. Carr Slides inspired by Xiangyu Zhang http://nebelwelt.net/teaching/15-CS510-SE
CS510 Software Engineering Delta Debugging and Statistical Debugging - - PowerPoint PPT Presentation
CS510 Software Engineering Delta Debugging and Statistical Debugging Asst. Prof. Mathias Payer Department of Computer Science Purdue University TA: Scott A. Carr Slides inspired by Xiangyu Zhang http://nebelwelt.net/teaching/15-CS510-SE
Department of Computer Science Purdue University TA: Scott A. Carr Slides inspired by Xiangyu Zhang http://nebelwelt.net/teaching/15-CS510-SE
Delta Debugging
1
2
Mathias Payer (Purdue University) CS510 Software Engineering 2015 2 / 24
Delta Debugging
Mathias Payer (Purdue University) CS510 Software Engineering 2015 3 / 24
Delta Debugging
<td align=left valign=top> <SELECT NAME="op sys" MULTIPLE SIZE=7> <OPTION VALUE="All">All<OPTION VALUE="Windows 3.1">Windows 3.1<OPTION VALUE="Windows 95">Windows 95<OPTION VALUE="Windows 98">Windows 98<OPTION VALUE="Windows ME">Windows ME<OPTION VALUE="Windows 2000">Windows 2000<OPTION VALUE="Windows NT">Windows NT<OPTION VALUE="Mac System 7">Mac System 7<OPTION VALUE="Mac System 7.5">Mac System 7.5<OPTION VALUE="Mac System 7.6.1">Mac System 7.6.1<OPTION VALUE="Mac System 8.0">Mac System 8.0<OPTION VALUE="Mac System 8.5">Mac System 8.5<OPTION VALUE="Mac System 8.6">Mac System 8.6<OPTION VALUE="Mac System 9.x">Mac System 9.x<OPTION VALUE="MacOS X">MacOS X<OPTION VALUE="Linux">Linux<OPTION VALUE="BSDI">BSDI<OPTION VALUE="FreeBSD">FreeBSD<OPTION VALUE="NetBSD">NetBSD<OPTION VALUE="OpenBSD">OpenBSD<OPTION VALUE="AIX">AIX<OPTION VALUE="BeOS">BeOS<OPTION VALUE="HP-UX">HP-UX<OPTION VALUE="IRIX">IRIX<OPTION VALUE="Neutrino">Neutrino<OPTION VALUE="OpenVMS">OpenVMS<OPTION VALUE="OS/2">OS/2<OPTION VALUE="OSF/1">OSF/1<OPTION VALUE="Solaris">Solaris<OPTION VALUE="SunOS">SunOS<OPTION VALUE="other">other</SELECT></td> <td align=left valign=top> <SELECT NAME="priority" MULTIPLE SIZE=7> <OPTION VALUE="--">--<OPTION VALUE="P1">P1<OPTION VALUE="P2">P2<OPTION VALUE="P3">P3<OPTION VALUE="P4">P4<OPTION VALUE="P5">P5</SELECT> </td> <td align=left valign=top> <SELECT NAME="bug severity" MULTIPLE SIZE=7> <OPTION VALUE="blocker">blocker<OPTION VALUE="critical">critical<OPTION VALUE="major">major<OPTION VALUE="normal">normal<OPTION VALUE="minor">minor<OPTION VALUE="trivial">trivial<OPTION VALUE="enhancement">enhancement</SELECT> </tr> </table> Mathias Payer (Purdue University) CS510 Software Engineering 2015 4 / 24
Delta Debugging
Mathias Payer (Purdue University) CS510 Software Engineering 2015 5 / 24
Delta Debugging
1Andreas Zeller and Ralf Hildebrandt, Simplifying and Isolating
Mathias Payer (Purdue University) CS510 Software Engineering 2015 6 / 24
Delta Debugging
Mathias Payer (Purdue University) CS510 Software Engineering 2015 7 / 24
Delta Debugging
Mathias Payer (Purdue University) CS510 Software Engineering 2015 8 / 24
Delta Debugging
′
x = ddmin(cx) such that c
′
x ⊆ cx, test(c
′
x) = F and c
′
x
′
x, n) =
′
x, min(|c
′
x|, 2n))
′
x|
′
x,
Mathias Payer (Purdue University) CS510 Software Engineering 2015 9 / 24
Delta Debugging
Mathias Payer (Purdue University) CS510 Software Engineering 2015 10 / 24
Delta Debugging
′ ⊆ cF, |c ′| < |c| → test(c ′) = F
′ ⊆ cF → test(c ′) = F
′ ⊆ cF, |c| − |c ′| ≤ n → test(c ′) = F
Mathias Payer (Purdue University) CS510 Software Engineering 2015 11 / 24
Delta Debugging
Mathias Payer (Purdue University) CS510 Software Engineering 2015 12 / 24
Delta Debugging
Mathias Payer (Purdue University) CS510 Software Engineering 2015 13 / 24
Statistical Debugging
1
2
Mathias Payer (Purdue University) CS510 Software Engineering 2015 14 / 24
Statistical Debugging
Mathias Payer (Purdue University) CS510 Software Engineering 2015 15 / 24
Statistical Debugging
F(s) |failing| F(s) |failing| + P(s) |passing| Mathias Payer (Purdue University) CS510 Software Engineering 2015 16 / 24
Statistical Debugging
Mathias Payer (Purdue University) CS510 Software Engineering 2015 17 / 24
Statistical Debugging
F(p) S(p) tells us the number of test cases in which the predicate p is
F(p) F(p)+S(p)
Mathias Payer (Purdue University) CS510 Software Engineering 2015 18 / 24
Statistical Debugging
1 x = 10; 2 f = . . . ; 3 i f
4
5 }
Mathias Payer (Purdue University) CS510 Software Engineering 2015 19 / 24
Statistical Debugging
F(pisobserved) S(pisobserved) how many cases in which p is executed and the
F(pisobserved) F(pisobserved)+S(pisobserved)
Mathias Payer (Purdue University) CS510 Software Engineering 2015 20 / 24
Statistical Debugging
1 x = 10; 2 f = . . . ; 3 i f
4
5
6
7 }
Mathias Payer (Purdue University) CS510 Software Engineering 2015 21 / 24
Statistical Debugging
Mathias Payer (Purdue University) CS510 Software Engineering 2015 22 / 24
Statistical Debugging
Mathias Payer (Purdue University) CS510 Software Engineering 2015 23 / 24
Statistical Debugging
Mathias Payer (Purdue University) CS510 Software Engineering 2015 24 / 24