SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Automatic Identification
  of Bug-Introducing




                             presented by
                    Nicolas Bettenburg
                                        1
•Control development
                         •Multi-User Access
Source Control System    •Change History
    (e.g., Subversion)




                         •Capture Problems
                         •Multi-User Access
Error Reporting System
      (e.g., BugZilla)   •Error History

                                                2
Source Control System



  Link Errors to Fixes




Error Reporting System
                         3
...   0.11   #5612   0.12   0.13     ...




                                   time




                                           4
...   0.11       #5612      0.12        0.13     ...




                                               time




  •Bug Report #5612 reports and error




                                                       4
...   0.11       #5612      0.12        0.13     ...




                                               time




  •Bug Report #5612 reports and error
  •Error fixed in version 0.13



                                                       4
...   0.11      #5612      0.12          0.13     ...




                                                time




  •Bug Report #5612 reports and error
  •Error fixed in version 0.13
  •Commit Message in 0.13 : “Fixed Bug    #5612”




                                                        4
...   0.11       #5612       0.12        0.13     ...




                                                time




  •Bug Report #5612 reports and error
  •Error fixed in version 0.13
  •Commit Message in 0.13 : “Fixed Bug #5612”
  •Changed Code in 0.13 refers to Location of Bug

                                                        4
...    0.11    #5612   0.12   0.13     ...




                                     time




      When was the bug introduced?
         Who was responsible?


                                             5
Why do we want
this information?




                    6
Measure developer
                   performance
Developer A

              Bug Introducing
              Bug Fixing




              Bug Introducing
              Bug Fixing

Developer B

                                  7
Measure the residency time
     of bugs in the system




                             8
Find Bug-Prone
Change Patterns




                  9
How do we get
this information?




                    10
The SZZ Algorithm
                       quot;Fixed Bug #5612quot;



0.11           #5612          0.12         0.13




                                                  time



       First find the bug fixing changes


                                                         11
The SZZ Algorithm
                       quot;Fixed Bug #5612quot;



0.11           #5612          0.12
                                           Diff   0.13




                                                         time



       Run diff to find out what changed


                                                                12
The SZZ Algorithm

1: public void bar() {     1: public void foo() {   1: public void foo() {
2: // print report         2: // print report       2: // print out report
3: if (report == null) {   3: if (report == null)   3: if (report != null)
4:    println(report);     4: {                     4: {
5:    }                    5:    println(report);   5:    println(report);
6:}                        6:    }                  6: }
7:                         7:}                      7:}

          0.11                       0.12                       0.13




                                                    2:   // print out report

                                                    3:   if (report != null)

                                                    6:   }




                                                                               13
The SZZ Algorithm
                              Bug Introduction


0.11       #5612       0.12                      0.13




                                                        time

Wrong!
1. Bug can only appear before report
2. Not all changes are fixes
3. Annotate information is insufficient
                                                               14
Improving the Algorithm



           • use annotation graphs
           • ignore comments
           • ignore blank lines
           • ignore formating changes
           • ignore outliers
           • manual inspection

                                        15
1: public void bar() {     1: public void foo() {   1: public void foo() {
2: // print report         2: // print report       2: // print out report
3: if (report == null) {   3: if (report == null)   3: if (report != null)
4:    println(report);     4: {                     4: {
5:    }                    5:    println(report);   5:    println(report);
6:}                        6:    }                  6: }
7:                         7:}                      7:}

          0.11                       0.12                      0.13



                 1                          1              1

                 3
                 4                          4              4
                                            5              5
                 6
                                            7              7

                                                                             16
1: public void bar() {     1: public void foo() {   1: public void foo() {
2: // print report         2: // print report       2: // print out report
3: if (report == null) {   3: if (report == null)   3: if (report != null)
4:    println(report);     4: {                     4: {
5:    }                    5:    println(report);   5:    println(report);
6:}                        6:    }                  6: }
7:                         7:}                      7:}

          0.11                       0.12                      0.13



                 1                          1              1

                 3
                 4                          4              4
                                            5              5
                 6
                                            7              7

                                                                             17
1: public void bar() {     1: public void foo() {   1: public void foo() {
2: // print report         2: // print report       2: // print out report
3: if (report == null) {   3: if (report == null)   3: if (report != null)
4:    println(report);     4: {                     4: {
5:    }                    5:    println(report);   5:    println(report);
6:}                        6:    }                  6: }
7:                         7:}                      7:}

          0.11                       0.12                      0.13



                 1                          1              1

                 3
                 4                          4              4
                                            5              5
                 6
                                            7              7

                                                                             18
introducing changes.
           each bug-fix revision for our two projects, as shown in
           Figure 12. Most bug-fix revisions contain changes to just
           one or two files. All 50% of file change numbers per

                           Outliers
           revision (between 25% and 75% quartiles) are about 1-3.
           A typical approach for removing outliers from data is if a
           data item is 1.5 times greater than the 50% quartile, it is
           assumed to be an outlier. In our experiment, we adopt a
           very conservative approach, and use as our definition of
Idea: not all file changes in the version that fixes a
           outlier file change counts that are greater than 5 times the
                                           Figure 14. Bug-introducin
           50% quartile. This ensures that any changes we note as
                                           ignoring outlier revisions.
bug are bug-fixing changes. Ignore these revisions! Hunk V
           outliers truly have a large number of file changes.
           Changes identified as outliers for our two projects are
                                           4.5. Manual Fix
           shown as ‘+’ in Figure 12.                                         We identify bug-fix rev
                                                                          and bug-fix revision dat
                                                                          introducing changes. If a ch
                                                                          is a bug-fix, we assume th
                                                                          hunks in the revision are b
                                                                          them are true bug-fixes? It
                                                                          change log and understandi
                                                                          One developer may think
                                                                          others think it is only a s
                                                                          feature addition. To check
                                                                          true bug-fixes, we manually
                                                                          marked them as bug-fix
                                                                          judges, graduate students w
                                                                          development experience,
                                                                          verification. A judge mark
                                                                          projects (see Table 1) an
                                                                          marks. Judges use a GUI-b
                                                                          tool. The tool shows ind
           Figure 12. Box plots for the number of file changes per        revision. Judges read the
                                                                          carefully and decide if the
                                                                                                   19
Experimental Setup




Identify all bug-introducing changes
   on method level granularity.

      Compare performance
  of SZZ against new algorithm.

                                       20
False Positive
Algorithm finds a bug introducing change,
but in reality the change is not the introducing change.




False Negative
Algorithm cannot find a bug introducing change,
that in reality is a bug introducing change.


                                                           21
Experimental Results
 Performance
               False Positives    False
   Increase
                                 Negatives
Annotation
                     2%            1-4%
 Graphs
Formatting        32-45%          13-14%

 Outliers          7-16%
  Manual
                    4-5%
Inspection


                                             22
Performance Increase:
            remove      .
            36-51% of FP
               14% of FN




                            23
Still not perfect, but
better than anything
  existiting so far!


                         24
Good about this Paper

                       Good Evaluation
                    Clear Methodology
                  Performance Increase
        Extension of existing algorithm
     Identification of Threats to Validity




                                            25
Not so Good
Most issues only named but not addressed
           Applications section very short
              Changes after Bug Reports?
                     Errors in Illustrations
                        Manual Inspection
                              Fuzzy terms




                                               26

Weitere ähnliche Inhalte

Ähnlich wie Automatic Identification of Bug Introducing Changes

Automatic Identification of bug inducing changes
Automatic Identification of  bug inducing changesAutomatic Identification of  bug inducing changes
Automatic Identification of bug inducing changesarnamoy10
 
Devopsdays Ignite: BGP for all your ha needs
Devopsdays Ignite: BGP for all your ha needsDevopsdays Ignite: BGP for all your ha needs
Devopsdays Ignite: BGP for all your ha needsFrank Louwers
 
How to find 56 potential vulnerabilities in FreeBSD code in one evening
How to find 56 potential vulnerabilities in FreeBSD code in one eveningHow to find 56 potential vulnerabilities in FreeBSD code in one evening
How to find 56 potential vulnerabilities in FreeBSD code in one eveningPVS-Studio
 
DevOpsDays Gent 2014 - Ignite about BGP
DevOpsDays Gent 2014 - Ignite about BGPDevOpsDays Gent 2014 - Ignite about BGP
DevOpsDays Gent 2014 - Ignite about BGPFrank Louwers
 
55 new things in Java 7 - Devoxx France
55 new things in Java 7 - Devoxx France55 new things in Java 7 - Devoxx France
55 new things in Java 7 - Devoxx FranceDavid Delabassee
 
Analyzing FreeCAD's Source Code and Its "Sick" Dependencies
Analyzing FreeCAD's Source Code and Its "Sick" DependenciesAnalyzing FreeCAD's Source Code and Its "Sick" Dependencies
Analyzing FreeCAD's Source Code and Its "Sick" DependenciesPVS-Studio
 
Debugging with NetBeans IDE
Debugging with NetBeans IDEDebugging with NetBeans IDE
Debugging with NetBeans IDEAndreas Ruppen
 
JavaProgrammingForBeginners-Presentation.pdf
JavaProgrammingForBeginners-Presentation.pdfJavaProgrammingForBeginners-Presentation.pdf
JavaProgrammingForBeginners-Presentation.pdfSathwika7
 
Lessons Learned from Migrating Legacy Enterprise Applications to Microservices
Lessons Learned from Migrating Legacy Enterprise Applications to MicroservicesLessons Learned from Migrating Legacy Enterprise Applications to Microservices
Lessons Learned from Migrating Legacy Enterprise Applications to MicroservicesVMware Tanzu
 
ThoughtWorks Tech Talks NYC: DevOops, 10 Ops Things You Might Have Forgotten ...
ThoughtWorks Tech Talks NYC: DevOops, 10 Ops Things You Might Have Forgotten ...ThoughtWorks Tech Talks NYC: DevOops, 10 Ops Things You Might Have Forgotten ...
ThoughtWorks Tech Talks NYC: DevOops, 10 Ops Things You Might Have Forgotten ...Rosemary Wang
 
Py wps301whatsnewwhatsnext
Py wps301whatsnewwhatsnextPy wps301whatsnewwhatsnext
Py wps301whatsnewwhatsnextJachym Cepicky
 
Fluentd meetup logging infrastructure in paa s
Fluentd meetup   logging infrastructure in paa sFluentd meetup   logging infrastructure in paa s
Fluentd meetup logging infrastructure in paa sRakuten Group, Inc.
 
Micro c lab2(led patterns)
Micro c lab2(led patterns)Micro c lab2(led patterns)
Micro c lab2(led patterns)Mashood
 
Profiling blueprints
Profiling blueprintsProfiling blueprints
Profiling blueprintsbergel
 
Risking Everything with Akka Streams
Risking Everything with Akka StreamsRisking Everything with Akka Streams
Risking Everything with Akka Streamsjohofer
 
LISA Qooxdoo Tutorial Handouts
LISA Qooxdoo Tutorial HandoutsLISA Qooxdoo Tutorial Handouts
LISA Qooxdoo Tutorial HandoutsTobias Oetiker
 

Ähnlich wie Automatic Identification of Bug Introducing Changes (20)

Automatic Identification of bug inducing changes
Automatic Identification of  bug inducing changesAutomatic Identification of  bug inducing changes
Automatic Identification of bug inducing changes
 
Le langage rust
Le langage rustLe langage rust
Le langage rust
 
Ipc feb4
Ipc feb4Ipc feb4
Ipc feb4
 
Devopsdays Ignite: BGP for all your ha needs
Devopsdays Ignite: BGP for all your ha needsDevopsdays Ignite: BGP for all your ha needs
Devopsdays Ignite: BGP for all your ha needs
 
How to find 56 potential vulnerabilities in FreeBSD code in one evening
How to find 56 potential vulnerabilities in FreeBSD code in one eveningHow to find 56 potential vulnerabilities in FreeBSD code in one evening
How to find 56 potential vulnerabilities in FreeBSD code in one evening
 
DevOpsDays Gent 2014 - Ignite about BGP
DevOpsDays Gent 2014 - Ignite about BGPDevOpsDays Gent 2014 - Ignite about BGP
DevOpsDays Gent 2014 - Ignite about BGP
 
55 new things in Java 7 - Devoxx France
55 new things in Java 7 - Devoxx France55 new things in Java 7 - Devoxx France
55 new things in Java 7 - Devoxx France
 
Analyzing FreeCAD's Source Code and Its "Sick" Dependencies
Analyzing FreeCAD's Source Code and Its "Sick" DependenciesAnalyzing FreeCAD's Source Code and Its "Sick" Dependencies
Analyzing FreeCAD's Source Code and Its "Sick" Dependencies
 
Debugging with NetBeans IDE
Debugging with NetBeans IDEDebugging with NetBeans IDE
Debugging with NetBeans IDE
 
JavaProgrammingForBeginners-Presentation.pdf
JavaProgrammingForBeginners-Presentation.pdfJavaProgrammingForBeginners-Presentation.pdf
JavaProgrammingForBeginners-Presentation.pdf
 
Lessons Learned from Migrating Legacy Enterprise Applications to Microservices
Lessons Learned from Migrating Legacy Enterprise Applications to MicroservicesLessons Learned from Migrating Legacy Enterprise Applications to Microservices
Lessons Learned from Migrating Legacy Enterprise Applications to Microservices
 
Fuzzing - Part 2
Fuzzing - Part 2Fuzzing - Part 2
Fuzzing - Part 2
 
ThoughtWorks Tech Talks NYC: DevOops, 10 Ops Things You Might Have Forgotten ...
ThoughtWorks Tech Talks NYC: DevOops, 10 Ops Things You Might Have Forgotten ...ThoughtWorks Tech Talks NYC: DevOops, 10 Ops Things You Might Have Forgotten ...
ThoughtWorks Tech Talks NYC: DevOops, 10 Ops Things You Might Have Forgotten ...
 
Surge2012
Surge2012Surge2012
Surge2012
 
Py wps301whatsnewwhatsnext
Py wps301whatsnewwhatsnextPy wps301whatsnewwhatsnext
Py wps301whatsnewwhatsnext
 
Fluentd meetup logging infrastructure in paa s
Fluentd meetup   logging infrastructure in paa sFluentd meetup   logging infrastructure in paa s
Fluentd meetup logging infrastructure in paa s
 
Micro c lab2(led patterns)
Micro c lab2(led patterns)Micro c lab2(led patterns)
Micro c lab2(led patterns)
 
Profiling blueprints
Profiling blueprintsProfiling blueprints
Profiling blueprints
 
Risking Everything with Akka Streams
Risking Everything with Akka StreamsRisking Everything with Akka Streams
Risking Everything with Akka Streams
 
LISA Qooxdoo Tutorial Handouts
LISA Qooxdoo Tutorial HandoutsLISA Qooxdoo Tutorial Handouts
LISA Qooxdoo Tutorial Handouts
 

Mehr von Nicolas Bettenburg

10 Year Impact Award Presentation - Duplicate Bug Reports Considered Harmful ...
10 Year Impact Award Presentation - Duplicate Bug Reports Considered Harmful ...10 Year Impact Award Presentation - Duplicate Bug Reports Considered Harmful ...
10 Year Impact Award Presentation - Duplicate Bug Reports Considered Harmful ...Nicolas Bettenburg
 
Ph.D. Dissertation - Studying the Impact of Developer Communication on the Qu...
Ph.D. Dissertation - Studying the Impact of Developer Communication on the Qu...Ph.D. Dissertation - Studying the Impact of Developer Communication on the Qu...
Ph.D. Dissertation - Studying the Impact of Developer Communication on the Qu...Nicolas Bettenburg
 
Think Locally, Act Gobally - Improving Defect and Effort Prediction Models
Think Locally, Act Gobally - Improving Defect and Effort Prediction ModelsThink Locally, Act Gobally - Improving Defect and Effort Prediction Models
Think Locally, Act Gobally - Improving Defect and Effort Prediction ModelsNicolas Bettenburg
 
Mining Development Repositories to Study the Impact of Collaboration on Softw...
Mining Development Repositories to Study the Impact of Collaboration on Softw...Mining Development Repositories to Study the Impact of Collaboration on Softw...
Mining Development Repositories to Study the Impact of Collaboration on Softw...Nicolas Bettenburg
 
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source Code
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source CodeUsing Fuzzy Code Search to Link Code Fragments in Discussions to Source Code
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source CodeNicolas Bettenburg
 
A Lightweight Approach to Uncover Technical Information in Unstructured Data
A Lightweight Approach to Uncover Technical Information in Unstructured DataA Lightweight Approach to Uncover Technical Information in Unstructured Data
A Lightweight Approach to Uncover Technical Information in Unstructured DataNicolas Bettenburg
 
Managing Community Contributions: Lessons Learned from a Case Study on Andro...
Managing Community Contributions:  Lessons Learned from a Case Study on Andro...Managing Community Contributions:  Lessons Learned from a Case Study on Andro...
Managing Community Contributions: Lessons Learned from a Case Study on Andro...Nicolas Bettenburg
 
Studying the impact of Social Structures on Software Quality
Studying the impact of Social Structures on Software QualityStudying the impact of Social Structures on Software Quality
Studying the impact of Social Structures on Software QualityNicolas Bettenburg
 
An Empirical Study on Inconsistent Changes to Code Clones at Release Level
An Empirical Study on Inconsistent Changes to Code Clones at Release LevelAn Empirical Study on Inconsistent Changes to Code Clones at Release Level
An Empirical Study on Inconsistent Changes to Code Clones at Release LevelNicolas Bettenburg
 
An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...
An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...
An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...Nicolas Bettenburg
 
Finding Paths in Large Spaces - A* and Hierarchical A*
Finding Paths in Large Spaces - A* and Hierarchical A*Finding Paths in Large Spaces - A* and Hierarchical A*
Finding Paths in Large Spaces - A* and Hierarchical A*Nicolas Bettenburg
 
Cloning Considered Harmful Considered Harmful
Cloning Considered Harmful Considered HarmfulCloning Considered Harmful Considered Harmful
Cloning Considered Harmful Considered HarmfulNicolas Bettenburg
 
Predictors of Customer Perceived Quality
Predictors of Customer Perceived QualityPredictors of Customer Perceived Quality
Predictors of Customer Perceived QualityNicolas Bettenburg
 
Extracting Structural Information from Bug Reports.
Extracting Structural Information from Bug Reports.Extracting Structural Information from Bug Reports.
Extracting Structural Information from Bug Reports.Nicolas Bettenburg
 
Computing Accuracy Precision And Recall
Computing Accuracy Precision And RecallComputing Accuracy Precision And Recall
Computing Accuracy Precision And RecallNicolas Bettenburg
 
Duplicate Bug Reports Considered Harmful ... Really?
Duplicate Bug Reports Considered Harmful ... Really?Duplicate Bug Reports Considered Harmful ... Really?
Duplicate Bug Reports Considered Harmful ... Really?Nicolas Bettenburg
 
The Quality of Bug Reports in Eclipse ETX'07
The Quality of Bug Reports in Eclipse ETX'07The Quality of Bug Reports in Eclipse ETX'07
The Quality of Bug Reports in Eclipse ETX'07Nicolas Bettenburg
 

Mehr von Nicolas Bettenburg (20)

10 Year Impact Award Presentation - Duplicate Bug Reports Considered Harmful ...
10 Year Impact Award Presentation - Duplicate Bug Reports Considered Harmful ...10 Year Impact Award Presentation - Duplicate Bug Reports Considered Harmful ...
10 Year Impact Award Presentation - Duplicate Bug Reports Considered Harmful ...
 
Ph.D. Dissertation - Studying the Impact of Developer Communication on the Qu...
Ph.D. Dissertation - Studying the Impact of Developer Communication on the Qu...Ph.D. Dissertation - Studying the Impact of Developer Communication on the Qu...
Ph.D. Dissertation - Studying the Impact of Developer Communication on the Qu...
 
Think Locally, Act Gobally - Improving Defect and Effort Prediction Models
Think Locally, Act Gobally - Improving Defect and Effort Prediction ModelsThink Locally, Act Gobally - Improving Defect and Effort Prediction Models
Think Locally, Act Gobally - Improving Defect and Effort Prediction Models
 
Mining Development Repositories to Study the Impact of Collaboration on Softw...
Mining Development Repositories to Study the Impact of Collaboration on Softw...Mining Development Repositories to Study the Impact of Collaboration on Softw...
Mining Development Repositories to Study the Impact of Collaboration on Softw...
 
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source Code
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source CodeUsing Fuzzy Code Search to Link Code Fragments in Discussions to Source Code
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source Code
 
A Lightweight Approach to Uncover Technical Information in Unstructured Data
A Lightweight Approach to Uncover Technical Information in Unstructured DataA Lightweight Approach to Uncover Technical Information in Unstructured Data
A Lightweight Approach to Uncover Technical Information in Unstructured Data
 
Managing Community Contributions: Lessons Learned from a Case Study on Andro...
Managing Community Contributions:  Lessons Learned from a Case Study on Andro...Managing Community Contributions:  Lessons Learned from a Case Study on Andro...
Managing Community Contributions: Lessons Learned from a Case Study on Andro...
 
Mud flash
Mud flashMud flash
Mud flash
 
Studying the impact of Social Structures on Software Quality
Studying the impact of Social Structures on Software QualityStudying the impact of Social Structures on Software Quality
Studying the impact of Social Structures on Software Quality
 
An Empirical Study on Inconsistent Changes to Code Clones at Release Level
An Empirical Study on Inconsistent Changes to Code Clones at Release LevelAn Empirical Study on Inconsistent Changes to Code Clones at Release Level
An Empirical Study on Inconsistent Changes to Code Clones at Release Level
 
An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...
An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...
An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...
 
Fuzzy Logic in Smart Homes
Fuzzy Logic in Smart HomesFuzzy Logic in Smart Homes
Fuzzy Logic in Smart Homes
 
Finding Paths in Large Spaces - A* and Hierarchical A*
Finding Paths in Large Spaces - A* and Hierarchical A*Finding Paths in Large Spaces - A* and Hierarchical A*
Finding Paths in Large Spaces - A* and Hierarchical A*
 
Cloning Considered Harmful Considered Harmful
Cloning Considered Harmful Considered HarmfulCloning Considered Harmful Considered Harmful
Cloning Considered Harmful Considered Harmful
 
Approximation Algorithms
Approximation AlgorithmsApproximation Algorithms
Approximation Algorithms
 
Predictors of Customer Perceived Quality
Predictors of Customer Perceived QualityPredictors of Customer Perceived Quality
Predictors of Customer Perceived Quality
 
Extracting Structural Information from Bug Reports.
Extracting Structural Information from Bug Reports.Extracting Structural Information from Bug Reports.
Extracting Structural Information from Bug Reports.
 
Computing Accuracy Precision And Recall
Computing Accuracy Precision And RecallComputing Accuracy Precision And Recall
Computing Accuracy Precision And Recall
 
Duplicate Bug Reports Considered Harmful ... Really?
Duplicate Bug Reports Considered Harmful ... Really?Duplicate Bug Reports Considered Harmful ... Really?
Duplicate Bug Reports Considered Harmful ... Really?
 
The Quality of Bug Reports in Eclipse ETX'07
The Quality of Bug Reports in Eclipse ETX'07The Quality of Bug Reports in Eclipse ETX'07
The Quality of Bug Reports in Eclipse ETX'07
 

Kürzlich hochgeladen

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 

Kürzlich hochgeladen (20)

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 

Automatic Identification of Bug Introducing Changes

  • 1. Automatic Identification of Bug-Introducing presented by Nicolas Bettenburg 1
  • 2. •Control development •Multi-User Access Source Control System •Change History (e.g., Subversion) •Capture Problems •Multi-User Access Error Reporting System (e.g., BugZilla) •Error History 2
  • 3. Source Control System Link Errors to Fixes Error Reporting System 3
  • 4. ... 0.11 #5612 0.12 0.13 ... time 4
  • 5. ... 0.11 #5612 0.12 0.13 ... time •Bug Report #5612 reports and error 4
  • 6. ... 0.11 #5612 0.12 0.13 ... time •Bug Report #5612 reports and error •Error fixed in version 0.13 4
  • 7. ... 0.11 #5612 0.12 0.13 ... time •Bug Report #5612 reports and error •Error fixed in version 0.13 •Commit Message in 0.13 : “Fixed Bug #5612” 4
  • 8. ... 0.11 #5612 0.12 0.13 ... time •Bug Report #5612 reports and error •Error fixed in version 0.13 •Commit Message in 0.13 : “Fixed Bug #5612” •Changed Code in 0.13 refers to Location of Bug 4
  • 9. ... 0.11 #5612 0.12 0.13 ... time When was the bug introduced? Who was responsible? 5
  • 10. Why do we want this information? 6
  • 11. Measure developer performance Developer A Bug Introducing Bug Fixing Bug Introducing Bug Fixing Developer B 7
  • 12. Measure the residency time of bugs in the system 8
  • 14. How do we get this information? 10
  • 15. The SZZ Algorithm quot;Fixed Bug #5612quot; 0.11 #5612 0.12 0.13 time First find the bug fixing changes 11
  • 16. The SZZ Algorithm quot;Fixed Bug #5612quot; 0.11 #5612 0.12 Diff 0.13 time Run diff to find out what changed 12
  • 17. The SZZ Algorithm 1: public void bar() { 1: public void foo() { 1: public void foo() { 2: // print report 2: // print report 2: // print out report 3: if (report == null) { 3: if (report == null) 3: if (report != null) 4: println(report); 4: { 4: { 5: } 5: println(report); 5: println(report); 6:} 6: } 6: } 7: 7:} 7:} 0.11 0.12 0.13 2: // print out report 3: if (report != null) 6: } 13
  • 18. The SZZ Algorithm Bug Introduction 0.11 #5612 0.12 0.13 time Wrong! 1. Bug can only appear before report 2. Not all changes are fixes 3. Annotate information is insufficient 14
  • 19. Improving the Algorithm • use annotation graphs • ignore comments • ignore blank lines • ignore formating changes • ignore outliers • manual inspection 15
  • 20. 1: public void bar() { 1: public void foo() { 1: public void foo() { 2: // print report 2: // print report 2: // print out report 3: if (report == null) { 3: if (report == null) 3: if (report != null) 4: println(report); 4: { 4: { 5: } 5: println(report); 5: println(report); 6:} 6: } 6: } 7: 7:} 7:} 0.11 0.12 0.13 1 1 1 3 4 4 4 5 5 6 7 7 16
  • 21. 1: public void bar() { 1: public void foo() { 1: public void foo() { 2: // print report 2: // print report 2: // print out report 3: if (report == null) { 3: if (report == null) 3: if (report != null) 4: println(report); 4: { 4: { 5: } 5: println(report); 5: println(report); 6:} 6: } 6: } 7: 7:} 7:} 0.11 0.12 0.13 1 1 1 3 4 4 4 5 5 6 7 7 17
  • 22. 1: public void bar() { 1: public void foo() { 1: public void foo() { 2: // print report 2: // print report 2: // print out report 3: if (report == null) { 3: if (report == null) 3: if (report != null) 4: println(report); 4: { 4: { 5: } 5: println(report); 5: println(report); 6:} 6: } 6: } 7: 7:} 7:} 0.11 0.12 0.13 1 1 1 3 4 4 4 5 5 6 7 7 18
  • 23. introducing changes. each bug-fix revision for our two projects, as shown in Figure 12. Most bug-fix revisions contain changes to just one or two files. All 50% of file change numbers per Outliers revision (between 25% and 75% quartiles) are about 1-3. A typical approach for removing outliers from data is if a data item is 1.5 times greater than the 50% quartile, it is assumed to be an outlier. In our experiment, we adopt a very conservative approach, and use as our definition of Idea: not all file changes in the version that fixes a outlier file change counts that are greater than 5 times the Figure 14. Bug-introducin 50% quartile. This ensures that any changes we note as ignoring outlier revisions. bug are bug-fixing changes. Ignore these revisions! Hunk V outliers truly have a large number of file changes. Changes identified as outliers for our two projects are 4.5. Manual Fix shown as ‘+’ in Figure 12. We identify bug-fix rev and bug-fix revision dat introducing changes. If a ch is a bug-fix, we assume th hunks in the revision are b them are true bug-fixes? It change log and understandi One developer may think others think it is only a s feature addition. To check true bug-fixes, we manually marked them as bug-fix judges, graduate students w development experience, verification. A judge mark projects (see Table 1) an marks. Judges use a GUI-b tool. The tool shows ind Figure 12. Box plots for the number of file changes per revision. Judges read the carefully and decide if the 19
  • 24. Experimental Setup Identify all bug-introducing changes on method level granularity. Compare performance of SZZ against new algorithm. 20
  • 25. False Positive Algorithm finds a bug introducing change, but in reality the change is not the introducing change. False Negative Algorithm cannot find a bug introducing change, that in reality is a bug introducing change. 21
  • 26. Experimental Results Performance False Positives False Increase Negatives Annotation 2% 1-4% Graphs Formatting 32-45% 13-14% Outliers 7-16% Manual 4-5% Inspection 22
  • 27. Performance Increase: remove . 36-51% of FP 14% of FN 23
  • 28. Still not perfect, but better than anything existiting so far! 24
  • 29. Good about this Paper Good Evaluation Clear Methodology Performance Increase Extension of existing algorithm Identification of Threats to Validity 25
  • 30. Not so Good Most issues only named but not addressed Applications section very short Changes after Bug Reports? Errors in Illustrations Manual Inspection Fuzzy terms 26