SlideShare a Scribd company logo
1 of 64
Download to read offline
Seeding Bugs to Find Bugs
                Andreas Zeller
              Saarland University




    with David Schuler and Valentin Dallmeier
Saarbrücken
Saarbrücken
Saarbrücken
We built it!
Testing
Test Quality


• You want your program to be well tested
• How do we measure “well tested”?
0,*!#@0A.(#-.(4#$%&!'(,#-.(.L!#$%&!'.(#-.(.7

                                                                                                            “test”
                       !quot; #$%&!'()*&!+!(,#-.(./                                 A
                                                                                ✔
                                                                                !
                          #$%&!'.)*&!+!.(#-.(./
                          0,*!-1!+!2/



                                           9$0:(!4'()*&7!quot;        B
                                                                  ✔
                                                                  #

                            >%:?(                       ;&<(
                                                        #$%&!#/             C
                                                                            ✔
                                                                            quot;
                                                        #!+!'()*&/
                                                        03!4#!++!5657!quot;!!
                                                    >%:?(                              ;&<(
                                                            $                                                     %
                                 !(:?(03!4#!++!5K57!quot;       D
                                                            ✔                                 8!
                                                                                                   '.)*&!+!5!5/
                                                                                                                  E
                                 >%:?(                     ;&<(
                (:?(
                '.)*&!+!'()*&/   F
                                 &
                                 ✔            0,*!.0@0*A$0@$!+!B(CAD%:<(?E'466()*&7F/
                                              0,*!.0@0*A:-9!+!B(CAD%:<(?E'466()*&7F/
                                                                                              G
                                                                                              '

                8                             03!4.0@0*A$0@$!++!GH!II!.0@0*A:-9!++!GH7!quot;

                                                            >%:?(               ;&<(

                             (:?(!quot;                               (   H     -1!+!H/                 I
                                                                                                    )
                             '.)*&!+!HJ!'!.0@0*A$0@$!6!.0@0*A:-9/           8
                             8




                                               66.)*&/
                                               66()*&/
                                                                            L
                                                                            ✔
                                                                            *
'.)*&!+!5=25/
&(*<&,!-1/          M
                    ✔ +
                                               8
8
0,*!#@0A.(#-.(4#$%&!'(,#-.(.L!#$%&!'.(#-.(.7

                                                                                                            “test”
                       !quot; #$%&!'()*&!+!(,#-.(./                                 A
                                                                                ✔
                                                                                !
                                                                                                              “a+b”
                          #$%&!'.)*&!+!.(#-.(./
                          0,*!-1!+!2/



                                           9$0:(!4'()*&7!quot;        B
                                                                  ✔
                                                                  #

                            >%:?(                       ;&<(
                                                        #$%&!#/             C
                                                                            ✔
                                                                            quot;
                                                        #!+!'()*&/
                                                        03!4#!++!5657!quot;!!
                                                    >%:?(                              ;&<(
                                                            $                                                     %
                                 !(:?(03!4#!++!5K57!quot;       D
                                                            ✔                                 8!
                                                                                                   '.)*&!+!5!5/
                                                                                                                  E
                                                                                                                  ✔
                                 >%:?(                     ;&<(
                (:?(
                '.)*&!+!'()*&/   F
                                 &
                                 ✔            0,*!.0@0*A$0@$!+!B(CAD%:<(?E'466()*&7F/
                                              0,*!.0@0*A:-9!+!B(CAD%:<(?E'466()*&7F/
                                                                                              G
                                                                                              '

                8                             03!4.0@0*A$0@$!++!GH!II!.0@0*A:-9!++!GH7!quot;

                                                            >%:?(               ;&<(

                             (:?(!quot;                               (   H     -1!+!H/                 I
                                                                                                    )
                             '.)*&!+!HJ!'!.0@0*A$0@$!6!.0@0*A:-9/           8
                             8




                                               66.)*&/
                                               66()*&/
                                                                            L
                                                                            ✔
                                                                            *
'.)*&!+!5=25/
&(*<&,!-1/          M
                    ✔ +
                                               8
8
0,*!#@0A.(#-.(4#$%&!'(,#-.(.L!#$%&!'.(#-.(.7

                                                                                                            “test”
                       !quot; #$%&!'()*&!+!(,#-.(./                                 A
                                                                                ✔
                                                                                !
                                                                                                              “a+b”
                                                                                                                “%3d”
                          #$%&!'.)*&!+!.(#-.(./
                          0,*!-1!+!2/



                                           9$0:(!4'()*&7!quot;        B
                                                                  ✔
                                                                  #

                            >%:?(                       ;&<(
                                                        #$%&!#/             C
                                                                            ✔
                                                                            quot;
                                                        #!+!'()*&/
                                                        03!4#!++!5657!quot;!!
                                                    >%:?(                              ;&<(
                                                            $                                                     %
                                 !(:?(03!4#!++!5K57!quot;       D
                                                            ✔                                 8!
                                                                                                   '.)*&!+!5!5/
                                                                                                                  E
                                                                                                                  ✔
                                 >%:?(                     ;&<(
                (:?(
                '.)*&!+!'()*&/   F
                                 &
                                 ✔            0,*!.0@0*A$0@$!+!B(CAD%:<(?E'466()*&7F/
                                              0,*!.0@0*A:-9!+!B(CAD%:<(?E'466()*&7F/
                                                                                              G
                                                                                              '
                                                                                              ✔
                8                             03!4.0@0*A$0@$!++!GH!II!.0@0*A:-9!++!GH7!quot;

                                                            >%:?(               ;&<(

                             (:?(!quot;                               (   H
                                                                      ✔     -1!+!H/                 I
                                                                                                    )
                             '.)*&!+!HJ!'!.0@0*A$0@$!6!.0@0*A:-9/           8
                             8




                                               66.)*&/
                                               66()*&/
                                                                            L
                                                                            ✔
                                                                            *
'.)*&!+!5=25/
&(*<&,!-1/          M
                    ✔ +
                                               8
8
0,*!#@0A.(#-.(4#$%&!'(,#-.(.L!#$%&!'.(#-.(.7

                                                                                                            “test”
                       !quot; #$%&!'()*&!+!(,#-.(./                                 A
                                                                                ✔
                                                                                !
                                                                                                              “a+b”
                                                                                                                “%3d”
                          #$%&!'.)*&!+!.(#-.(./
                          0,*!-1!+!2/

                                                                                                                   “%g”
                                           9$0:(!4'()*&7!quot;        B
                                                                  ✔
                                                                  #

                            >%:?(                       ;&<(
                                                        #$%&!#/             C
                                                                            ✔
                                                                            quot;
                                                        #!+!'()*&/
                                                        03!4#!++!5657!quot;!!
                                                    >%:?(                              ;&<(
                                                            $                                                     %
                                 !(:?(03!4#!++!5K57!quot;       D
                                                            ✔                                 8!
                                                                                                   '.)*&!+!5!5/
                                                                                                                  E
                                                                                                                  ✔
                                 >%:?(                     ;&<(
                (:?(
                '.)*&!+!'()*&/   F
                                 &
                                 ✔            0,*!.0@0*A$0@$!+!B(CAD%:<(?E'466()*&7F/
                                              0,*!.0@0*A:-9!+!B(CAD%:<(?E'466()*&7F/
                                                                                              G
                                                                                              '
                                                                                              ✔
                8                             03!4.0@0*A$0@$!++!GH!II!.0@0*A:-9!++!GH7!quot;

                                                            >%:?(               ;&<(

                             (:?(!quot;                               (   H
                                                                      ✔     -1!+!H/                I
                                                                                                   ✔
                                                                                                   )
                             '.)*&!+!HJ!'!.0@0*A$0@$!6!.0@0*A:-9/           8
                             8




                                               66.)*&/
                                               66()*&/
                                                                            L
                                                                            ✔
                                                                            *
'.)*&!+!5=25/
&(*<&,!-1/          M
                    ✔ +
                                               8
8
subsumes




                                                        Theoretical Criteria
Coverage          Path testing


Criteria            Boundary
                 interior testing
                                      Compound
                                    condition testing



                                    MC/DC testing


                                      Branch and
                 LCSAJ testing




                                                        Practical Criteria
                                    condition testing


                 Branch testing


Loop boundary                            Basic
                Statement testing
   testing                          condition testing
Weyuker’s Hypothesis


 The adequacy of a coverage criterion
    can only be intuitively defined.
Mutation Testing
  DeMillo, Lipton, Sayward 1978




           Program
A Mutation
class Checker {
    public int compareTo(Object other)
    {
        return 0;
                1;
    }
}




not found by AspectJ test suite
Mutation Operators
 id    operator                                   description                                                 constraint

 Operand Modifications
 crp constant for constant replacement            replace constant C1 with constant C2                        C1 = C2
 scr  scalar for constant replacement             replace constant C with scalar variable X                   C=X
 acr array for constant replacement               replace constant C with array reference A[I]                C = A[I]
 scr  struct for constant replacement             replace constant C with struct field S                       C=S
 svr scalar variable replacement                  replace scalar variable X with a scalar variable Y          X =Y
 csr  constant for scalar variable replacement    replace scalar variable X with a constant C                 X =C
 asr  array for scalar variable replacement       replace scalar variable X with an array reference A[I]      X = A[I]
 ssr  struct for scalar replacement               replace scalar variable X with struct field S                X =S
 vie scalar variable initialization elimination   remove initialization of a scalar variable
 car constant for array replacement               replace array reference A[I] with constant C                A[I] = C
 sar  scalar for array replacement                replace array reference A[I] with scalar variable X         A[I] = X
 cnr comparable array replacement                 replace array reference with a comparable array reference
 sar  struct for array reference replacement      replace array reference A[I] with a struct field S           A[I] = S

 Expression Modifications
 abs absolute value insertion                     replace e by abs(e)                                         e<0
 aor arithmetic operator replacement              replace arithmetic operator ψ with arithmetic operator φ    e1 ψe2 = e1 φ e2
 lcr   logical connector replacement              replace logical connector ψ with logical connector φ        e1 ψe2 = e1 φ e2
 ror   relational operator replacement            replace relational operator ψ with relational operator φ    e1 ψe2 = e1 φ e2
 uoi unary operator insertion                     insert unary operator
 cpr constant for predicate replacement           replace predicate with a constant value

 Statement Modifications
 sdl statement deletion                           delete a statement
 sca switch case replacement                      replace the label of one case with another
 ses end block shift                              move } one statement earlier and later

Figure 16.2: A sample set of mutation operators for the C language, with associated constraints to select test cases that distinguish
generated mutants from the original program.          Pezzé and Young, Software Testing and Analysis
Does it work?
• Generated mutants are similar to real faults
  Andrews, Briand, Labiche, ICSE 2005

• Mutation testing is more powerful than
  statement or branch coverage
  Walsh, PhD thesis, State University of NY at Binghampton, 1985

• Mutation testing is superior to data flow
  coverage criteria
  Frankl, Weiss, Hu, Journal of Systems and Software, 1997
Bugs in AspectJ
Issues
Efficiency   Inspection
Efficiency

    • Test suite must be
      re-run for every
      single mutation
    • Expensive
Efficiency


      How do we make
      mutation testing
         efficient?
Efficiency
• Manipulate byte code directly
  rather than recompiling every single mutant

• Focus on few mutationC operators
  • replace numerical constant by C±1, or 0
   • negate branch condition
   • replace arithmetic operator (+ by –, * by /, etc.)

• Use mutant schemata by run-time conditions
  individual mutants are guarded

• Userun those tests that actually execute mutated code
  only
       coverage data
A Mutation
class Checker {
    public int compareTo(Object other)
    {
        return 0;
                1;
    }
}




not found by AspectJ test suite
    because it is not executed
Efficiency   Inspection
Inspection

• A mutation may leave
  program semantics
  unchanged
• These equivalent
  mutants must be
  determined manually
• This task is tedious.
An Equivalent Mutant
public int compareTo(Object other) {
  if (!(other instanceof BcelAdvice))
    return 0;
  BcelAdvice o = (BcelAdvice)other;
	 	
  if (kind.getPrecedence() != o.kind.getPrecedence()) {
    if (kind.getPrecedence() > o.kind.getPrecedence())
      return +1;
              +2;
    else
      return -1;
  }
  // More comparisons...
}

              no impact on AspectJ
Frankl’s Observation

        We also observed that […]
        mutation testing was costly.
   Even for these small subject programs,
 the human effort needed to check a large
    number of mutants for equivalence
           was almost prohibitive.

                                    P. G. Frankl, S. N. Weiss, and C. Hu.
                                       All-uses versus mutation testing:
                        An experimental comparison of effectiveness.
                    Journal of Systems and Software, 38:235–253, 1997.
Inspection


How do we determine
 equivalent mutants?
Aiming for Impact
Measuring Impact

• How do we characterize “impact” on
  program execution?
• Idea: Look for changes in
  pre- and postconditions
• Use dynamic invariants to learn these
Dynamic Invariants
          pioneered by Mike Ernst’s Daikon



Run
  Run
    Run
      Run
        Run                                  Run
                ✔                                  ✘


  Invariant                            Property

At f(), x is odd                      At f(), x = 2
Example
public int ex1511(int[] b, int n)
{
                                    Precondition
                                    n   ==   size(b[])
    int s = 0;                      b   !=   null
    int i = 0;                      n   <=   13
    while (i != n) {                n   >=   7

        s = s + b[i];
        i = i + 1;                  Postcondition
                                    b[] = orig(b[])
    }                               return == sum(b)
    return s;
}
   • Run with 100 randomly generated arrays
      of length 7–13
Obtaining Invariants
Run                         get trace
  Run                                       Trace
    Run
      Run
        Run
                   ✔          filter invariants

Postcondition          report results   Invariant
b[] = orig(b[])                           Invariant
return == sum(b)                            Invariant
                                              Invariant
Impact on Invariants
public ResultHolder signatureToStringInternal(String signature) {
  switch(signature.charAt(0)) {
  ...
  case 'L': { // Full class name
    // Look for closing `;'
    int index = signature.indexOf(';');
    // Jump to the correct ';'
    if (index != -1 && signature.length() > index + 1 &&
                  0
         signature.charAt(index + 1) == '>')
        index = index + 2;
    ...
    return new ResultHolder (signature.substring(1, index));
  }
}
Impact on Invariants
signatureToStringInternal()
mutated method
               UnitDeclaration.resolve()
               post: target field is now zero

                        DelegatingOutputStream.write()
                        pre: upper bound of argument changes

                               WeaverAdapter.addingTypeMunger()
                               pre: target field is now non-zero
      ReferenceContext.resolve()
      post: target field is now non-zero
Impact on Invariants
public ResultHolder signatureToStringInternal(String signature) {
  switch(signature.charAt(0)) {
  ...
  case 'L': { // Full class name
    // Look for closing `;'
    int index = signature.indexOf(';');
    // Jump to the correct ';'
    if (index != -1 && signature.length() > index + 1 &&
                  0
         signature.charAt(index + 1) == '>')
        index = index + 2;
    ...
    return new ResultHolder (signature.substring(1, index));
  }
}
                   impacts 40 invariants
            but undetected by AspectJ unit tests
Javalanche
• Mutation Testing Framework for Java
  12 man-months of implementation effort

• Efficient Mutationdirectly • Focus on few mutation
  Manipulate byte code
                       Testing
   operators • Use mutant schemata • Use coverage data

• Ranks impact on dynamicImpact • Uses efficient
  Checks
         Mutations by
                          invariants
   invariant learner and checker
Mutation Testing
   with Javalanche




      Program
Mutation Testing
                with Javalanche
1. Learn invariants from test suite
2. Insert invariant checkers into
   code
3. Detect impact of mutations
4. Select mutations with the most
   invariants violated
   (= the highest impact)
                      Program
But does it work?
Evaluation
1. Are mutations that violate
   invariants useful?

      2. Are mutations with the
         highest impact most useful?

              3. Are mutants that violate invariants
                 less likely to be equivalent?
Evaluation Subjects
Name                       Lines of Code   #Tests
AspectJ Core                      94,902     321
AOP extension to Java

Barbecue                           4,837     137
Bar Code Reader

Commons                           18,782    1,590
Helper Utilities

Jaxen                             12,449     680
XPath Engine

Joda-Time                         25,861    3,447
Date and Time Library

JTopas                             2,031     128
Parser tools

XStream                           14,480     838
XML Object Serialization
Mutations
Name           #Mutations   %detected
AspectJ Core       47,146         53
Barbecue           17,178         67
Commons            15,125         83
Jaxen               6,712         61
Joda-Time          13,859         79
JTopas              1,533         72
XStream             5,186         92
Performance

• Learning invariants – one-timeexpensive
  22 CPU hours for AspectJ
                           is very
                                   effort

• Creating checkers is somewhat expensive
  10 CPU hours for AspectJ – one-time effort

• Mutation testing is feasible in for XStream
  14 CPU hours for AspectJ, 6 CPU hours
                                        practice
Results
Evaluation
1. Are mutations that violate
   invariants useful?

      2. Are mutations with the
         highest impact most useful?
            What is a “useful” mutation?

              3. Are mutants that violate invariants
                 less likely to be equivalent?
Useful Mutations

A technique for generating mutants is useful if
most of the generated mutants are detected:
• less likely to bemutants = non-equivalent mutants
  because detectable
                     equivalent

• close to real suite is designed to catch real defects
  because the test
                   defects
Mutations we look for
                 not violating    violating
                  invariants     invariants

 not detected
 by test suite       –              –
  detected
 by test suite       ?              !
Are mutations that violate
          invariants useful?
         Non-violating mutants detected             Violating mutants detected

100


 75         Mutations that violate invariants are
            more likely to be detected by actual
 50
            tests – and thus likely to be useful.
 25


  0
      AspectJ   Barbecue Commons      Jaxen       Joda-Time        JTopas        XStream
                                    All differences are statistically significant according to χ2 test
Are mutations with the
      highest impact most useful?
      Non-violating mutants detected             Top 5% violating mutants detected

100


 75      Mutations that violate several invariants
         are most likely to be detected by actual
 50
            tests – and thus the most useful.
 25


  0
      AspectJ   Barbecue Commons         Jaxen       Joda-Time        JTopas        XStream
                                       All differences are statistically significant according to χ2 test
Detection Rates




                                                                                                                                                                                                                      100
                                                                                                                                100




                                                                                                                                                                                                                      80
                                                                                                                                80




                                                                                                                                                                                       Percentage of mutants killed
100%




                                                                                                 Percentage of mutants killed
                                         100




                                                                                                                                                                                                                      60
                                                                                                                                60




                                                                                                                                                                                                                      40
                                                                                                                                40
                                                                                                                                      Barbecue                                                                              Commons




                                                                                                                                                                                                                      20
                                                                                                                                20




                                                                                                                                                                                                                      0
                                                                                                                                0
                                         80




                                                                                                                                      20         40          60             80   100                                        20         40          60             80   100
                                                                                                                                           Percentage of mutants included                                                        Percentage of mutants included
Detection rate
          Percentage of mutants killed
                                         60




                                                                                                                                100




                                                                                                                                                                                                                      100
                                                                                                                                80




                                                                                                                                                                                                                      80
                                                                                                 Percentage of mutants killed




                                                                                                                                                                                       Percentage of mutants killed
                                                                                                                                60




                                                                                                                                                                                                                      60
                                                                                                                                40




                                                                                                                                                                                                                      40
                                         40




                                                                                                                                            Jaxen                                                                           Joda-Time




                                                                                                                                20




                                                                                                                                                                                                                      20
                                                                                                                                0




                                                                                                                                                                                                                      0
                                                                                                                                      20         40          60             80   100                                        20         40          60             80   100
                                                                                                                                           Percentage of mutants included                                                        Percentage of mutants included
                                         20




                                                     AspectJ
                                                                                                                                100




                                                                                                                                                                                                                      100
     0%
                                         0




                                                                                                                                80




                                                                                                                                                                                                                      80
                                                                                                 Percentage of mutants killed




                                                                                                                                                                                       Percentage of mutants killed
       0%                                                                                 100%                                  60




                                                                                                                                                                                                                      60
                                               20         40          60             80   100

                                               Top n% mutants                                                                   40




                                                                                                                                                                                                                      40
                                                    Percentage of mutants included
                                                                                                                                           JTopas                                                                           XStream
                                                                                                                                20




                                                                                                                                                                                                                      20
                                                                                                                                0




                                                                                                                                                                                                                      0
                                                                                                                                      20         40          60             80   100                                        20         40          60             80   100
                                                                                                                                           Percentage of mutants included                                                        Percentage of mutants included
Are mutants that violate invariants
   less likely to be equivalent?

  • Randomly selected non-detected Jaxen
    mutants – 12 violating, 12 non-violating
  • Manual inspection: Are mutations equivalent?
  • Mutation was proven non-equivalent
    iff we could create a detecting test case
  • Assessment took 30 minutes per mutation
Are mutants that violate invariants
   less likely to be equivalent?
                       Non-Equivalent
                       Equivalent

      Equivalent
          2
                                                          Non-Equivalent
                                                               4
       In our sample, mutants that violated
     several invariants were significantly less
                                     Equivalent
                                         8
           Non-Equivalent to be equivalent.
               likely
                10




   Violating mutants            Non-violating mutants
                          Difference is statistically significant according to Fisher test
                          Mutations and tests made public to counter researcher bias
Evaluation
1. Are mutations that violate
   invariants useful?            ✔
      2. Are mutations with the
         highest impact most useful?   ✔
              3. Are mutants that violate invariants
                 less likely to be equivalent?   ✔
Efficiency   Inspection
Mid   AspectJ
16 LOC    ~94,000 LOC
Future Work
• How effectivecompared to traditional coverage
  on a large scale –
                     is mutation testing?

• Predicting defectsimpact product quality?
  How does test quality

• Alternative impact measures sequences
  Coverage • Program spectra • Method

• Adaptive mutation testing survive
  Evolve mutations to have the fittest
Conclusion
http://www.st.cs.uni-sb.de/mutation/

More Related Content

What's hot

PR Campaign Proposal
PR Campaign ProposalPR Campaign Proposal
PR Campaign Proposalkre01
 
The Security Risks of Web 2.0 - DEF CON 17
The Security Risks of Web 2.0 - DEF CON 17The Security Risks of Web 2.0 - DEF CON 17
The Security Risks of Web 2.0 - DEF CON 17Security Ninja
 
LAMP_TRAINING_SESSION_6
LAMP_TRAINING_SESSION_6LAMP_TRAINING_SESSION_6
LAMP_TRAINING_SESSION_6umapst
 
Impacts of collaborative consumption on traditional industries: scenarios for...
Impacts of collaborative consumption on traditional industries: scenarios for...Impacts of collaborative consumption on traditional industries: scenarios for...
Impacts of collaborative consumption on traditional industries: scenarios for...David Chapuis
 
مذكرات حرب أكتوبر للفريق سعد الدين الشاذلي
مذكرات حرب أكتوبر للفريق سعد الدين الشاذليمذكرات حرب أكتوبر للفريق سعد الدين الشاذلي
مذكرات حرب أكتوبر للفريق سعد الدين الشاذليbasheer777
 
Apuntes lpic1-by-monino
Apuntes lpic1-by-moninoApuntes lpic1-by-monino
Apuntes lpic1-by-moninofjbarbaca
 
Spring 2010 closed memo assignment jellyvision v. aflac complaint pdf
Spring 2010 closed memo assignment jellyvision v. aflac complaint pdfSpring 2010 closed memo assignment jellyvision v. aflac complaint pdf
Spring 2010 closed memo assignment jellyvision v. aflac complaint pdfLyn Goering
 
Resultados sobre Policultivo de Tilápias e Camarões de Água Doce
Resultados sobre Policultivo de Tilápias e Camarões de Água Doce Resultados sobre Policultivo de Tilápias e Camarões de Água Doce
Resultados sobre Policultivo de Tilápias e Camarões de Água Doce Agricultura Sao Paulo
 
Ad Strategy - the YMCA
Ad Strategy - the YMCAAd Strategy - the YMCA
Ad Strategy - the YMCAAnna Sandgren
 
Audiovisual Alacrity: Managing Timely Acces to AV Collections
Audiovisual Alacrity: Managing Timely Acces to AV CollectionsAudiovisual Alacrity: Managing Timely Acces to AV Collections
Audiovisual Alacrity: Managing Timely Acces to AV CollectionsSiobhan C. Hagan
 
Science World Board Presentation
Science World Board PresentationScience World Board Presentation
Science World Board PresentationDanny Robinson
 
Articulo 416 LeCrim. La dispensa de la Obligación de Declarar.
Articulo 416 LeCrim. La dispensa de la Obligación de Declarar.Articulo 416 LeCrim. La dispensa de la Obligación de Declarar.
Articulo 416 LeCrim. La dispensa de la Obligación de Declarar.owaj
 
Vulnerability Management as a Service
Vulnerability Management as a ServiceVulnerability Management as a Service
Vulnerability Management as a ServiceChunJia Sio
 
Al Fazl International - 26th February 2016 Weekly UK
Al Fazl International - 26th  February  2016 Weekly UKAl Fazl International - 26th  February  2016 Weekly UK
Al Fazl International - 26th February 2016 Weekly UKmuzaffertahir9
 

What's hot (18)

PR Campaign Proposal
PR Campaign ProposalPR Campaign Proposal
PR Campaign Proposal
 
The Security Risks of Web 2.0 - DEF CON 17
The Security Risks of Web 2.0 - DEF CON 17The Security Risks of Web 2.0 - DEF CON 17
The Security Risks of Web 2.0 - DEF CON 17
 
LAMP_TRAINING_SESSION_6
LAMP_TRAINING_SESSION_6LAMP_TRAINING_SESSION_6
LAMP_TRAINING_SESSION_6
 
Motherloss
MotherlossMotherloss
Motherloss
 
Impacts of collaborative consumption on traditional industries: scenarios for...
Impacts of collaborative consumption on traditional industries: scenarios for...Impacts of collaborative consumption on traditional industries: scenarios for...
Impacts of collaborative consumption on traditional industries: scenarios for...
 
مذكرات حرب أكتوبر للفريق سعد الدين الشاذلي
مذكرات حرب أكتوبر للفريق سعد الدين الشاذليمذكرات حرب أكتوبر للفريق سعد الدين الشاذلي
مذكرات حرب أكتوبر للفريق سعد الدين الشاذلي
 
Apuntes lpic1-by-monino
Apuntes lpic1-by-moninoApuntes lpic1-by-monino
Apuntes lpic1-by-monino
 
Spring 2010 closed memo assignment jellyvision v. aflac complaint pdf
Spring 2010 closed memo assignment jellyvision v. aflac complaint pdfSpring 2010 closed memo assignment jellyvision v. aflac complaint pdf
Spring 2010 closed memo assignment jellyvision v. aflac complaint pdf
 
BCIC Town hall may5th
BCIC Town hall may5thBCIC Town hall may5th
BCIC Town hall may5th
 
Resultados sobre Policultivo de Tilápias e Camarões de Água Doce
Resultados sobre Policultivo de Tilápias e Camarões de Água Doce Resultados sobre Policultivo de Tilápias e Camarões de Água Doce
Resultados sobre Policultivo de Tilápias e Camarões de Água Doce
 
Ad Strategy - the YMCA
Ad Strategy - the YMCAAd Strategy - the YMCA
Ad Strategy - the YMCA
 
Audiovisual Alacrity: Managing Timely Acces to AV Collections
Audiovisual Alacrity: Managing Timely Acces to AV CollectionsAudiovisual Alacrity: Managing Timely Acces to AV Collections
Audiovisual Alacrity: Managing Timely Acces to AV Collections
 
Science World Board Presentation
Science World Board PresentationScience World Board Presentation
Science World Board Presentation
 
Contracts: Tips, Trends & Tactics
Contracts: Tips, Trends & TacticsContracts: Tips, Trends & Tactics
Contracts: Tips, Trends & Tactics
 
Articulo 416 LeCrim. La dispensa de la Obligación de Declarar.
Articulo 416 LeCrim. La dispensa de la Obligación de Declarar.Articulo 416 LeCrim. La dispensa de la Obligación de Declarar.
Articulo 416 LeCrim. La dispensa de la Obligación de Declarar.
 
Vulnerability Management as a Service
Vulnerability Management as a ServiceVulnerability Management as a Service
Vulnerability Management as a Service
 
Ppt fiep x_iglesias_2012
Ppt fiep x_iglesias_2012Ppt fiep x_iglesias_2012
Ppt fiep x_iglesias_2012
 
Al Fazl International - 26th February 2016 Weekly UK
Al Fazl International - 26th  February  2016 Weekly UKAl Fazl International - 26th  February  2016 Weekly UK
Al Fazl International - 26th February 2016 Weekly UK
 

Similar to Seeding Bugs To Find Bugs

The Nielsen Company Mo Mo Intro June8th Buenos Aires
The Nielsen Company Mo Mo Intro   June8th Buenos AiresThe Nielsen Company Mo Mo Intro   June8th Buenos Aires
The Nielsen Company Mo Mo Intro June8th Buenos AiresMOMO BUENOSAIRES
 
LAMP_TRAINING_SESSION_7
LAMP_TRAINING_SESSION_7LAMP_TRAINING_SESSION_7
LAMP_TRAINING_SESSION_7umapst
 
Managing SQL Performance
Managing SQL PerformanceManaging SQL Performance
Managing SQL PerformanceKaren Morton
 
A Trajetória até o Novo Mercado da Bovespa
A Trajetória até o Novo Mercado da BovespaA Trajetória até o Novo Mercado da Bovespa
A Trajetória até o Novo Mercado da BovespaEDP - Energias do Brasil
 
What Is Social Media
What Is Social MediaWhat Is Social Media
What Is Social MediaHAL
 
Historia E Popullit Shqiptar
Historia E Popullit ShqiptarHistoria E Popullit Shqiptar
Historia E Popullit Shqiptarfakete duraku
 
sprint nextel Quarterly Presentations 2005 3rd
sprint nextel Quarterly Presentations 2005 3rdsprint nextel Quarterly Presentations 2005 3rd
sprint nextel Quarterly Presentations 2005 3rdfinance6
 
ประกาศและใบสมัครลูกจ้างชั่วคราว เจ้าพนักงานบัญชี สสอ.แม่จัน
ประกาศและใบสมัครลูกจ้างชั่วคราว เจ้าพนักงานบัญชี  สสอ.แม่จันประกาศและใบสมัครลูกจ้างชั่วคราว เจ้าพนักงานบัญชี  สสอ.แม่จัน
ประกาศและใบสมัครลูกจ้างชั่วคราว เจ้าพนักงานบัญชี สสอ.แม่จันSarawut Chummongkhol
 
How THE One Creates A Better World Through Its Organizational Culture
How THE One Creates A Better World Through Its Organizational CultureHow THE One Creates A Better World Through Its Organizational Culture
How THE One Creates A Better World Through Its Organizational CultureScholar Consultants
 
ประกาศและใบสมัครลูกจ้างชั่วคราว เจ้าพนักงานบัญชี สสอ.แม่จัน
ประกาศและใบสมัครลูกจ้างชั่วคราว เจ้าพนักงานบัญชี  สสอ.แม่จันประกาศและใบสมัครลูกจ้างชั่วคราว เจ้าพนักงานบัญชี  สสอ.แม่จัน
ประกาศและใบสมัครลูกจ้างชั่วคราว เจ้าพนักงานบัญชี สสอ.แม่จันSarawut Chummongkhol
 
ruta_polar_islandia_09
ruta_polar_islandia_09ruta_polar_islandia_09
ruta_polar_islandia_09RutaPolarUCM
 
Dramatically increase revenue on verio template
Dramatically increase revenue on verio templateDramatically increase revenue on verio template
Dramatically increase revenue on verio templateJanine Soika
 
Dramatically increase revenue on verio template
Dramatically increase revenue on verio templateDramatically increase revenue on verio template
Dramatically increase revenue on verio templateJanine Soika
 

Similar to Seeding Bugs To Find Bugs (20)

Hamdeli 2
Hamdeli 2Hamdeli 2
Hamdeli 2
 
The Nielsen Company Mo Mo Intro June8th Buenos Aires
The Nielsen Company Mo Mo Intro   June8th Buenos AiresThe Nielsen Company Mo Mo Intro   June8th Buenos Aires
The Nielsen Company Mo Mo Intro June8th Buenos Aires
 
LAMP_TRAINING_SESSION_7
LAMP_TRAINING_SESSION_7LAMP_TRAINING_SESSION_7
LAMP_TRAINING_SESSION_7
 
Managing SQL Performance
Managing SQL PerformanceManaging SQL Performance
Managing SQL Performance
 
Nota 041109
Nota 041109Nota 041109
Nota 041109
 
A Trajetória até o Novo Mercado da Bovespa
A Trajetória até o Novo Mercado da BovespaA Trajetória até o Novo Mercado da Bovespa
A Trajetória até o Novo Mercado da Bovespa
 
What Is Social Media
What Is Social MediaWhat Is Social Media
What Is Social Media
 
Historia E Popullit Shqiptar
Historia E Popullit ShqiptarHistoria E Popullit Shqiptar
Historia E Popullit Shqiptar
 
sprint nextel Quarterly Presentations 2005 3rd
sprint nextel Quarterly Presentations 2005 3rdsprint nextel Quarterly Presentations 2005 3rd
sprint nextel Quarterly Presentations 2005 3rd
 
Envases para competir
Envases para competirEnvases para competir
Envases para competir
 
Javaee glassfish jcertif2010
Javaee glassfish jcertif2010Javaee glassfish jcertif2010
Javaee glassfish jcertif2010
 
ประกาศและใบสมัครลูกจ้างชั่วคราว เจ้าพนักงานบัญชี สสอ.แม่จัน
ประกาศและใบสมัครลูกจ้างชั่วคราว เจ้าพนักงานบัญชี  สสอ.แม่จันประกาศและใบสมัครลูกจ้างชั่วคราว เจ้าพนักงานบัญชี  สสอ.แม่จัน
ประกาศและใบสมัครลูกจ้างชั่วคราว เจ้าพนักงานบัญชี สสอ.แม่จัน
 
How THE One Creates A Better World Through Its Organizational Culture
How THE One Creates A Better World Through Its Organizational CultureHow THE One Creates A Better World Through Its Organizational Culture
How THE One Creates A Better World Through Its Organizational Culture
 
ประกาศและใบสมัครลูกจ้างชั่วคราว เจ้าพนักงานบัญชี สสอ.แม่จัน
ประกาศและใบสมัครลูกจ้างชั่วคราว เจ้าพนักงานบัญชี  สสอ.แม่จันประกาศและใบสมัครลูกจ้างชั่วคราว เจ้าพนักงานบัญชี  สสอ.แม่จัน
ประกาศและใบสมัครลูกจ้างชั่วคราว เจ้าพนักงานบัญชี สสอ.แม่จัน
 
Vanilla creme brulee
Vanilla creme bruleeVanilla creme brulee
Vanilla creme brulee
 
ruta_polar_islandia_09
ruta_polar_islandia_09ruta_polar_islandia_09
ruta_polar_islandia_09
 
Catch this pitch!
Catch this pitch!Catch this pitch!
Catch this pitch!
 
Catch this pitch!
Catch this pitch!Catch this pitch!
Catch this pitch!
 
Dramatically increase revenue on verio template
Dramatically increase revenue on verio templateDramatically increase revenue on verio template
Dramatically increase revenue on verio template
 
Dramatically increase revenue on verio template
Dramatically increase revenue on verio templateDramatically increase revenue on verio template
Dramatically increase revenue on verio template
 

More from CISPA Helmholtz Center for Information Security

More from CISPA Helmholtz Center for Information Security (19)

Language-Based Testing and Debugging.pdf
Language-Based Testing and Debugging.pdfLanguage-Based Testing and Debugging.pdf
Language-Based Testing and Debugging.pdf
 
Digital Networking and Community
Digital Networking and CommunityDigital Networking and Community
Digital Networking and Community
 
Fuzzing - A Tale of Two Cultures
Fuzzing - A Tale of Two CulturesFuzzing - A Tale of Two Cultures
Fuzzing - A Tale of Two Cultures
 
Illustrated Code (ASE 2021)
Illustrated Code (ASE 2021)Illustrated Code (ASE 2021)
Illustrated Code (ASE 2021)
 
On Impact in Software Engineering Research (HU Berlin 2021)
On Impact in Software Engineering Research (HU Berlin 2021)On Impact in Software Engineering Research (HU Berlin 2021)
On Impact in Software Engineering Research (HU Berlin 2021)
 
On Impact in Software Engineering Research (Dagstuhl 2020)
On Impact in Software Engineering Research (Dagstuhl 2020)On Impact in Software Engineering Research (Dagstuhl 2020)
On Impact in Software Engineering Research (Dagstuhl 2020)
 
Fast and Effective Fuzz Testing (Facebook TAV 2019)
Fast and Effective Fuzz Testing (Facebook TAV 2019)Fast and Effective Fuzz Testing (Facebook TAV 2019)
Fast and Effective Fuzz Testing (Facebook TAV 2019)
 
Software-Tests automatisch erzeugen: Frische Ansätze für Forschung, Praxis un...
Software-Tests automatisch erzeugen: Frische Ansätze für Forschung, Praxis un...Software-Tests automatisch erzeugen: Frische Ansätze für Forschung, Praxis un...
Software-Tests automatisch erzeugen: Frische Ansätze für Forschung, Praxis un...
 
On impact in Software Engineering Research (ICSE 2018 New Faculty Symposium)
On impact in Software Engineering Research (ICSE 2018 New Faculty Symposium)On impact in Software Engineering Research (ICSE 2018 New Faculty Symposium)
On impact in Software Engineering Research (ICSE 2018 New Faculty Symposium)
 
On Impact in Software Engineering Research
On Impact in Software Engineering ResearchOn Impact in Software Engineering Research
On Impact in Software Engineering Research
 
Twelve tips on how to prepare an ERC grant proposal
Twelve tips on how to prepare an ERC grant proposalTwelve tips on how to prepare an ERC grant proposal
Twelve tips on how to prepare an ERC grant proposal
 
Getting your work funded
Getting your work fundedGetting your work funded
Getting your work funded
 
Learning from 6,000 projects mining specifications in the large
Learning from 6,000 projects   mining specifications in the largeLearning from 6,000 projects   mining specifications in the large
Learning from 6,000 projects mining specifications in the large
 
Debugging Debugging
Debugging DebuggingDebugging Debugging
Debugging Debugging
 
Mining Processes
Mining ProcessesMining Processes
Mining Processes
 
Mining Programs
Mining ProgramsMining Programs
Mining Programs
 
Getting your paper accepted (at ISSTA 2008)
Getting your paper accepted (at ISSTA 2008)Getting your paper accepted (at ISSTA 2008)
Getting your paper accepted (at ISSTA 2008)
 
Woher kommen Software-Fehler?
Woher kommen Software-Fehler?Woher kommen Software-Fehler?
Woher kommen Software-Fehler?
 
Do Bugs Reside in Complex Code?
Do Bugs Reside in Complex Code?Do Bugs Reside in Complex Code?
Do Bugs Reside in Complex Code?
 

Recently uploaded

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 

Recently uploaded (20)

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 

Seeding Bugs To Find Bugs

  • 1. Seeding Bugs to Find Bugs Andreas Zeller Saarland University with David Schuler and Valentin Dallmeier
  • 2.
  • 6.
  • 7.
  • 8.
  • 11. Test Quality • You want your program to be well tested • How do we measure “well tested”?
  • 12. 0,*!#@0A.(#-.(4#$%&!'(,#-.(.L!#$%&!'.(#-.(.7 “test” !quot; #$%&!'()*&!+!(,#-.(./ A ✔ ! #$%&!'.)*&!+!.(#-.(./ 0,*!-1!+!2/ 9$0:(!4'()*&7!quot; B ✔ # >%:?( ;&<( #$%&!#/ C ✔ quot; #!+!'()*&/ 03!4#!++!5657!quot;!! >%:?( ;&<( $ % !(:?(03!4#!++!5K57!quot; D ✔ 8! '.)*&!+!5!5/ E >%:?( ;&<( (:?( '.)*&!+!'()*&/ F & ✔ 0,*!.0@0*A$0@$!+!B(CAD%:<(?E'466()*&7F/ 0,*!.0@0*A:-9!+!B(CAD%:<(?E'466()*&7F/ G ' 8 03!4.0@0*A$0@$!++!GH!II!.0@0*A:-9!++!GH7!quot; >%:?( ;&<( (:?(!quot; ( H -1!+!H/ I ) '.)*&!+!HJ!'!.0@0*A$0@$!6!.0@0*A:-9/ 8 8 66.)*&/ 66()*&/ L ✔ * '.)*&!+!5=25/ &(*<&,!-1/ M ✔ + 8 8
  • 13. 0,*!#@0A.(#-.(4#$%&!'(,#-.(.L!#$%&!'.(#-.(.7 “test” !quot; #$%&!'()*&!+!(,#-.(./ A ✔ ! “a+b” #$%&!'.)*&!+!.(#-.(./ 0,*!-1!+!2/ 9$0:(!4'()*&7!quot; B ✔ # >%:?( ;&<( #$%&!#/ C ✔ quot; #!+!'()*&/ 03!4#!++!5657!quot;!! >%:?( ;&<( $ % !(:?(03!4#!++!5K57!quot; D ✔ 8! '.)*&!+!5!5/ E ✔ >%:?( ;&<( (:?( '.)*&!+!'()*&/ F & ✔ 0,*!.0@0*A$0@$!+!B(CAD%:<(?E'466()*&7F/ 0,*!.0@0*A:-9!+!B(CAD%:<(?E'466()*&7F/ G ' 8 03!4.0@0*A$0@$!++!GH!II!.0@0*A:-9!++!GH7!quot; >%:?( ;&<( (:?(!quot; ( H -1!+!H/ I ) '.)*&!+!HJ!'!.0@0*A$0@$!6!.0@0*A:-9/ 8 8 66.)*&/ 66()*&/ L ✔ * '.)*&!+!5=25/ &(*<&,!-1/ M ✔ + 8 8
  • 14. 0,*!#@0A.(#-.(4#$%&!'(,#-.(.L!#$%&!'.(#-.(.7 “test” !quot; #$%&!'()*&!+!(,#-.(./ A ✔ ! “a+b” “%3d” #$%&!'.)*&!+!.(#-.(./ 0,*!-1!+!2/ 9$0:(!4'()*&7!quot; B ✔ # >%:?( ;&<( #$%&!#/ C ✔ quot; #!+!'()*&/ 03!4#!++!5657!quot;!! >%:?( ;&<( $ % !(:?(03!4#!++!5K57!quot; D ✔ 8! '.)*&!+!5!5/ E ✔ >%:?( ;&<( (:?( '.)*&!+!'()*&/ F & ✔ 0,*!.0@0*A$0@$!+!B(CAD%:<(?E'466()*&7F/ 0,*!.0@0*A:-9!+!B(CAD%:<(?E'466()*&7F/ G ' ✔ 8 03!4.0@0*A$0@$!++!GH!II!.0@0*A:-9!++!GH7!quot; >%:?( ;&<( (:?(!quot; ( H ✔ -1!+!H/ I ) '.)*&!+!HJ!'!.0@0*A$0@$!6!.0@0*A:-9/ 8 8 66.)*&/ 66()*&/ L ✔ * '.)*&!+!5=25/ &(*<&,!-1/ M ✔ + 8 8
  • 15. 0,*!#@0A.(#-.(4#$%&!'(,#-.(.L!#$%&!'.(#-.(.7 “test” !quot; #$%&!'()*&!+!(,#-.(./ A ✔ ! “a+b” “%3d” #$%&!'.)*&!+!.(#-.(./ 0,*!-1!+!2/ “%g” 9$0:(!4'()*&7!quot; B ✔ # >%:?( ;&<( #$%&!#/ C ✔ quot; #!+!'()*&/ 03!4#!++!5657!quot;!! >%:?( ;&<( $ % !(:?(03!4#!++!5K57!quot; D ✔ 8! '.)*&!+!5!5/ E ✔ >%:?( ;&<( (:?( '.)*&!+!'()*&/ F & ✔ 0,*!.0@0*A$0@$!+!B(CAD%:<(?E'466()*&7F/ 0,*!.0@0*A:-9!+!B(CAD%:<(?E'466()*&7F/ G ' ✔ 8 03!4.0@0*A$0@$!++!GH!II!.0@0*A:-9!++!GH7!quot; >%:?( ;&<( (:?(!quot; ( H ✔ -1!+!H/ I ✔ ) '.)*&!+!HJ!'!.0@0*A$0@$!6!.0@0*A:-9/ 8 8 66.)*&/ 66()*&/ L ✔ * '.)*&!+!5=25/ &(*<&,!-1/ M ✔ + 8 8
  • 16. subsumes Theoretical Criteria Coverage Path testing Criteria Boundary interior testing Compound condition testing MC/DC testing Branch and LCSAJ testing Practical Criteria condition testing Branch testing Loop boundary Basic Statement testing testing condition testing
  • 17. Weyuker’s Hypothesis The adequacy of a coverage criterion can only be intuitively defined.
  • 18. Mutation Testing DeMillo, Lipton, Sayward 1978 Program
  • 19. A Mutation class Checker { public int compareTo(Object other) { return 0; 1; } } not found by AspectJ test suite
  • 20. Mutation Operators id operator description constraint Operand Modifications crp constant for constant replacement replace constant C1 with constant C2 C1 = C2 scr scalar for constant replacement replace constant C with scalar variable X C=X acr array for constant replacement replace constant C with array reference A[I] C = A[I] scr struct for constant replacement replace constant C with struct field S C=S svr scalar variable replacement replace scalar variable X with a scalar variable Y X =Y csr constant for scalar variable replacement replace scalar variable X with a constant C X =C asr array for scalar variable replacement replace scalar variable X with an array reference A[I] X = A[I] ssr struct for scalar replacement replace scalar variable X with struct field S X =S vie scalar variable initialization elimination remove initialization of a scalar variable car constant for array replacement replace array reference A[I] with constant C A[I] = C sar scalar for array replacement replace array reference A[I] with scalar variable X A[I] = X cnr comparable array replacement replace array reference with a comparable array reference sar struct for array reference replacement replace array reference A[I] with a struct field S A[I] = S Expression Modifications abs absolute value insertion replace e by abs(e) e<0 aor arithmetic operator replacement replace arithmetic operator ψ with arithmetic operator φ e1 ψe2 = e1 φ e2 lcr logical connector replacement replace logical connector ψ with logical connector φ e1 ψe2 = e1 φ e2 ror relational operator replacement replace relational operator ψ with relational operator φ e1 ψe2 = e1 φ e2 uoi unary operator insertion insert unary operator cpr constant for predicate replacement replace predicate with a constant value Statement Modifications sdl statement deletion delete a statement sca switch case replacement replace the label of one case with another ses end block shift move } one statement earlier and later Figure 16.2: A sample set of mutation operators for the C language, with associated constraints to select test cases that distinguish generated mutants from the original program. Pezzé and Young, Software Testing and Analysis
  • 21. Does it work? • Generated mutants are similar to real faults Andrews, Briand, Labiche, ICSE 2005 • Mutation testing is more powerful than statement or branch coverage Walsh, PhD thesis, State University of NY at Binghampton, 1985 • Mutation testing is superior to data flow coverage criteria Frankl, Weiss, Hu, Journal of Systems and Software, 1997
  • 24. Efficiency Inspection
  • 25. Efficiency • Test suite must be re-run for every single mutation • Expensive
  • 26. Efficiency How do we make mutation testing efficient?
  • 27. Efficiency • Manipulate byte code directly rather than recompiling every single mutant • Focus on few mutationC operators • replace numerical constant by C±1, or 0 • negate branch condition • replace arithmetic operator (+ by –, * by /, etc.) • Use mutant schemata by run-time conditions individual mutants are guarded • Userun those tests that actually execute mutated code only coverage data
  • 28. A Mutation class Checker { public int compareTo(Object other) { return 0; 1; } } not found by AspectJ test suite because it is not executed
  • 29. Efficiency Inspection
  • 30. Inspection • A mutation may leave program semantics unchanged • These equivalent mutants must be determined manually • This task is tedious.
  • 31. An Equivalent Mutant public int compareTo(Object other) { if (!(other instanceof BcelAdvice)) return 0; BcelAdvice o = (BcelAdvice)other; if (kind.getPrecedence() != o.kind.getPrecedence()) { if (kind.getPrecedence() > o.kind.getPrecedence()) return +1; +2; else return -1; } // More comparisons... } no impact on AspectJ
  • 32. Frankl’s Observation We also observed that […] mutation testing was costly. Even for these small subject programs, the human effort needed to check a large number of mutants for equivalence was almost prohibitive. P. G. Frankl, S. N. Weiss, and C. Hu. All-uses versus mutation testing: An experimental comparison of effectiveness. Journal of Systems and Software, 38:235–253, 1997.
  • 33. Inspection How do we determine equivalent mutants?
  • 35. Measuring Impact • How do we characterize “impact” on program execution? • Idea: Look for changes in pre- and postconditions • Use dynamic invariants to learn these
  • 36. Dynamic Invariants pioneered by Mike Ernst’s Daikon Run Run Run Run Run Run ✔ ✘ Invariant Property At f(), x is odd At f(), x = 2
  • 37. Example public int ex1511(int[] b, int n) { Precondition n == size(b[]) int s = 0; b != null int i = 0; n <= 13 while (i != n) { n >= 7 s = s + b[i]; i = i + 1; Postcondition b[] = orig(b[]) } return == sum(b) return s; } • Run with 100 randomly generated arrays of length 7–13
  • 38. Obtaining Invariants Run get trace Run Trace Run Run Run ✔ filter invariants Postcondition report results Invariant b[] = orig(b[]) Invariant return == sum(b) Invariant Invariant
  • 39. Impact on Invariants public ResultHolder signatureToStringInternal(String signature) { switch(signature.charAt(0)) { ... case 'L': { // Full class name // Look for closing `;' int index = signature.indexOf(';'); // Jump to the correct ';' if (index != -1 && signature.length() > index + 1 && 0 signature.charAt(index + 1) == '>') index = index + 2; ... return new ResultHolder (signature.substring(1, index)); } }
  • 40. Impact on Invariants signatureToStringInternal() mutated method UnitDeclaration.resolve() post: target field is now zero DelegatingOutputStream.write() pre: upper bound of argument changes WeaverAdapter.addingTypeMunger() pre: target field is now non-zero ReferenceContext.resolve() post: target field is now non-zero
  • 41. Impact on Invariants public ResultHolder signatureToStringInternal(String signature) { switch(signature.charAt(0)) { ... case 'L': { // Full class name // Look for closing `;' int index = signature.indexOf(';'); // Jump to the correct ';' if (index != -1 && signature.length() > index + 1 && 0 signature.charAt(index + 1) == '>') index = index + 2; ... return new ResultHolder (signature.substring(1, index)); } } impacts 40 invariants but undetected by AspectJ unit tests
  • 42. Javalanche • Mutation Testing Framework for Java 12 man-months of implementation effort • Efficient Mutationdirectly • Focus on few mutation Manipulate byte code Testing operators • Use mutant schemata • Use coverage data • Ranks impact on dynamicImpact • Uses efficient Checks Mutations by invariants invariant learner and checker
  • 43. Mutation Testing with Javalanche Program
  • 44. Mutation Testing with Javalanche 1. Learn invariants from test suite 2. Insert invariant checkers into code 3. Detect impact of mutations 4. Select mutations with the most invariants violated (= the highest impact) Program
  • 45. But does it work?
  • 46. Evaluation 1. Are mutations that violate invariants useful? 2. Are mutations with the highest impact most useful? 3. Are mutants that violate invariants less likely to be equivalent?
  • 47. Evaluation Subjects Name Lines of Code #Tests AspectJ Core 94,902 321 AOP extension to Java Barbecue 4,837 137 Bar Code Reader Commons 18,782 1,590 Helper Utilities Jaxen 12,449 680 XPath Engine Joda-Time 25,861 3,447 Date and Time Library JTopas 2,031 128 Parser tools XStream 14,480 838 XML Object Serialization
  • 48. Mutations Name #Mutations %detected AspectJ Core 47,146 53 Barbecue 17,178 67 Commons 15,125 83 Jaxen 6,712 61 Joda-Time 13,859 79 JTopas 1,533 72 XStream 5,186 92
  • 49. Performance • Learning invariants – one-timeexpensive 22 CPU hours for AspectJ is very effort • Creating checkers is somewhat expensive 10 CPU hours for AspectJ – one-time effort • Mutation testing is feasible in for XStream 14 CPU hours for AspectJ, 6 CPU hours practice
  • 51. Evaluation 1. Are mutations that violate invariants useful? 2. Are mutations with the highest impact most useful? What is a “useful” mutation? 3. Are mutants that violate invariants less likely to be equivalent?
  • 52. Useful Mutations A technique for generating mutants is useful if most of the generated mutants are detected: • less likely to bemutants = non-equivalent mutants because detectable equivalent • close to real suite is designed to catch real defects because the test defects
  • 53. Mutations we look for not violating violating invariants invariants not detected by test suite – – detected by test suite ? !
  • 54. Are mutations that violate invariants useful? Non-violating mutants detected Violating mutants detected 100 75 Mutations that violate invariants are more likely to be detected by actual 50 tests – and thus likely to be useful. 25 0 AspectJ Barbecue Commons Jaxen Joda-Time JTopas XStream All differences are statistically significant according to χ2 test
  • 55. Are mutations with the highest impact most useful? Non-violating mutants detected Top 5% violating mutants detected 100 75 Mutations that violate several invariants are most likely to be detected by actual 50 tests – and thus the most useful. 25 0 AspectJ Barbecue Commons Jaxen Joda-Time JTopas XStream All differences are statistically significant according to χ2 test
  • 56. Detection Rates 100 100 80 80 Percentage of mutants killed 100% Percentage of mutants killed 100 60 60 40 40 Barbecue Commons 20 20 0 0 80 20 40 60 80 100 20 40 60 80 100 Percentage of mutants included Percentage of mutants included Detection rate Percentage of mutants killed 60 100 100 80 80 Percentage of mutants killed Percentage of mutants killed 60 60 40 40 40 Jaxen Joda-Time 20 20 0 0 20 40 60 80 100 20 40 60 80 100 Percentage of mutants included Percentage of mutants included 20 AspectJ 100 100 0% 0 80 80 Percentage of mutants killed Percentage of mutants killed 0% 100% 60 60 20 40 60 80 100 Top n% mutants 40 40 Percentage of mutants included JTopas XStream 20 20 0 0 20 40 60 80 100 20 40 60 80 100 Percentage of mutants included Percentage of mutants included
  • 57. Are mutants that violate invariants less likely to be equivalent? • Randomly selected non-detected Jaxen mutants – 12 violating, 12 non-violating • Manual inspection: Are mutations equivalent? • Mutation was proven non-equivalent iff we could create a detecting test case • Assessment took 30 minutes per mutation
  • 58. Are mutants that violate invariants less likely to be equivalent? Non-Equivalent Equivalent Equivalent 2 Non-Equivalent 4 In our sample, mutants that violated several invariants were significantly less Equivalent 8 Non-Equivalent to be equivalent. likely 10 Violating mutants Non-violating mutants Difference is statistically significant according to Fisher test Mutations and tests made public to counter researcher bias
  • 59. Evaluation 1. Are mutations that violate invariants useful? ✔ 2. Are mutations with the highest impact most useful? ✔ 3. Are mutants that violate invariants less likely to be equivalent? ✔
  • 60. Efficiency Inspection
  • 61. Mid AspectJ 16 LOC ~94,000 LOC
  • 62. Future Work • How effectivecompared to traditional coverage on a large scale – is mutation testing? • Predicting defectsimpact product quality? How does test quality • Alternative impact measures sequences Coverage • Program spectra • Method • Adaptive mutation testing survive Evolve mutations to have the fittest