Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Making your tests fail - Introduction to Mutation Testing

Making your tests fail - Introduction to Mutation Testing

Unit Tests measure the quality and effectiveness of your production code. But ever wondered how effective and relevant your tests are? Meet Mutation Testing: Bugs, so-called Mutants, wrong return values, for example, are automatically inserted into your code to test whether your tests fail - if they do, the mutant dies, if they pass, the mutant survives. The higher the percentage of mutants killed, the more effective your tests are. In this talk, I will introduce the attendees to this relatively simple, but ingenious way of checking that your tests will spot malfunctioning code, and also show some live mutation testing.

Felix Wu

June 06, 2019
Tweet

More Decks by Felix Wu

Other Decks in Programming

Transcript

  1. @felix_codes WHY TESTS? “Quality is never an accident; it is

    always the result of intelligent effort.” John Ruskin
  2. @felix_codes WHAT IS MUTATION TESTING We can assess the quality

    of the test cases which should be robust enough to fail mutant code.
  3. @felix_codes QVCMJDCPPMFBODBO7JFX%PDVNFOU 6TFSVTFS \ SFUVSOVTFSQFSNJTTJPO)JFSBSDIZ ^ 2 3 1 4

    SFUVSOUSVF SFUVSOGBMTF SFUVSOVTFSQFSNJTTJPO)JFSBSDIZ SFUVSOVTFSQFSNJTTJPO)JFSBSDIZ MUTATION TESTING EXAMPLE
  4. @felix_codes QVCMJDCPPMFBODBO7JFX%PDVNFOU 6TFSVTFS \ ^ 1 SFUVSOUSVF !5FTU QVCMJDWPJEUFTU7JFX%PDVNFOU \

    BTTFSU&RVBMT GBMTF DBO7JFX%PDVNFOU OFX6TFS   ^ MUTATION TESTING EXAMPLE
  5. @felix_codes QVCMJDCPPMFBODBO7JFX%PDVNFOU 6TFSVTFS \ ^ 1 SFUVSOUSVF !5FTU QVCMJDWPJEUFTU7JFX%PDVNFOU \

    BTTFSU&RVBMT GBMTF DBO7JFX%PDVNFOU OFX6TFS   ^ MUTATION TESTING EXAMPLE
  6. @felix_codes QVCMJDCPPMFBODBO7JFX%PDVNFOU 6TFSVTFS \ ^ 1 SFUVSOUSVF !5FTU QVCMJDWPJEUFTU7JFX%PDVNFOU \

    BTTFSU&RVBMT GBMTF DBO7JFX%PDVNFOU OFX6TFS   ^ MUTATION TESTING EXAMPLE
  7. @felix_codes QVCMJDCPPMFBODBO7JFX%PDVNFOU 6TFSVTFS \ ^ 2 SFUVSOGBMTF !5FTU QVCMJDWPJEUFTU7JFX%PDVNFOU \

    BTTFSU&RVBMT GBMTF DBO7JFX%PDVNFOU OFX6TFS   ^ MUTATION TESTING EXAMPLE
  8. @felix_codes QVCMJDCPPMFBODBO7JFX%PDVNFOU 6TFSVTFS \ ^ 2 SFUVSOGBMTF !5FTU QVCMJDWPJEUFTU7JFX%PDVNFOU \

    BTTFSU&RVBMT GBMTF DBO7JFX%PDVNFOU OFX6TFS   ^ MUTATION TESTING EXAMPLE
  9. @felix_codes QVCMJDCPPMFBODBO7JFX%PDVNFOU 6TFSVTFS \ ^ 2 SFUVSOGBMTF !5FTU QVCMJDWPJEUFTU7JFX%PDVNFOU \

    BTTFSU&RVBMT GBMTF DBO7JFX%PDVNFOU OFX6TFS   ^ MUTATION TESTING EXAMPLE
  10. @felix_codes 2 3 SFUVSOGBMTF SFUVSO VTFSQFSNJTTJPO)JFSBSDIZ !5FTU QVCMJDWPJEUFTU7JFX%PDVNFOU \ BTTFSU&RVBMT

    GBMTF DBO7JFX%PDVNFOU OFX6TFS    ^ QVCMJDCPPMFBODBO7JFX%PDVNFOU 6TFSVTFS \ SFUVSOVTFSQFSNJTTJPO)JFSBSDIZ ^ MUTATION TESTING EXAMPLE
  11. @felix_codes 2 3 SFUVSOGBMTF SFUVSO VTFSQFSNJTTJPO)JFSBSDIZ !5FTU QVCMJDWPJEUFTU7JFX%PDVNFOU \ BTTFSU&RVBMT

    GBMTF DBO7JFX%PDVNFOU OFX6TFS    ^ QVCMJDCPPMFBODBO7JFX%PDVNFOU 6TFSVTFS \ SFUVSOVTFSQFSNJTTJPO)JFSBSDIZ ^ BTTFSU&RVBMT USVF DBO7JFX%PDVNFOU OFX6TFS   MUTATION TESTING EXAMPLE
  12. @felix_codes 2 3 SFUVSOGBMTF SFUVSO VTFSQFSNJTTJPO)JFSBSDIZ !5FTU QVCMJDWPJEUFTU7JFX%PDVNFOU \ BTTFSU&RVBMT

    GBMTF DBO7JFX%PDVNFOU OFX6TFS    ^ QVCMJDCPPMFBODBO7JFX%PDVNFOU 6TFSVTFS \ SFUVSOVTFSQFSNJTTJPO)JFSBSDIZ ^ BTTFSU&RVBMT USVF DBO7JFX%PDVNFOU OFX6TFS   MUTATION TESTING EXAMPLE
  13. @felix_codes 2 3 SFUVSOGBMTF SFUVSO VTFSQFSNJTTJPO)JFSBSDIZ !5FTU QVCMJDWPJEUFTU7JFX%PDVNFOU \ BTTFSU&RVBMT

    GBMTF DBO7JFX%PDVNFOU OFX6TFS    ^ QVCMJDCPPMFBODBO7JFX%PDVNFOU 6TFSVTFS \ SFUVSOVTFSQFSNJTTJPO)JFSBSDIZ ^ BTTFSU&RVBMT USVF DBO7JFX%PDVNFOU OFX6TFS   BTTFSU&RVBMT USVF DBO7JFX%PDVNFOU OFX6TFS   MUTATION TESTING EXAMPLE
  14. @felix_codes 2 3 SFUVSOGBMTF SFUVSO VTFSQFSNJTTJPO)JFSBSDIZ QVCMJDCPPMFBODBO7JFX%PDVNFOU 6TFSVTFS \ SFUVSOVTFSQFSNJTTJPO)JFSBSDIZ

    ^ !5FTU QVCMJDWPJEUFTU7JFX%PDVNFOU \ BTTFSU&RVBMT GBMTF DBO7JFX%PDVNFOU OFX6TFS    ^ BTTFSU&RVBMT USVF DBO7JFX%PDVNFOU OFX6TFS   BTTFSU&RVBMT USVF DBO7JFX%PDVNFOU OFX6TFS   MUTATION TESTING EXAMPLE
  15. @felix_codes !5FTU QVCMJDWPJEUFTU7JFX%PDVNFOU \ BTTFSU&RVBMT GBMTF DBO7JFX%PDVNFOU OFX6TFS  

     ^ BTTFSU&RVBMT USVF DBO7JFX%PDVNFOU OFX6TFS   BTTFSU&RVBMT USVF DBO7JFX%PDVNFOU OFX6TFS   MUTATION TESTING EXAMPLE
  16. @felix_codes MUTANTS TYPES OF MUTANTS Arithmetic Relational Conditional a +

    b a - b while(a < b) while(true) if(a || b) if (a && b) Operator mutation
  17. @felix_codes Mutants simulate minor errors of competent programmers. Major flaws

    always arise from minor errors because of the coupling effect. “ ” MUTANTS
  18. @felix_codes WHY MUTATION TESTING? PITFALLS JOUNBY JOU<>WBMVFT \ JOUS J

    S GPS JJWBMVFTMFOHUIJ \ JG WBMVFT<J>WBMVFT<S>  SJ ^ SFUVSOWBMVFT<S> ^
  19. @felix_codes WHY MUTATION TESTING? PITFALLS JOUNBY JOU<>WBMVFT \ JOUS J

    S GPS JJWBMVFTMFOHUIJ \ JG WBMVFT<J>WBMVFT<S>  SJ ^ SFUVSOWBMVFT<S> ^ JOUNBY JOU<>WBMVFT \ JOUS J S GPS JJWBMVFTMFOHUIJ \ JG WBMVFT<J>WBMVFT<S>  SJ ^ SFUVSOWBMVFT<S> ^
  20. @felix_codes WHY MUTATION TESTING? PITFALLS JOUNBY JOU<>WBMVFT \ JOUS J

    S GPS JJWBMVFTMFOHUIJ \ JG WBMVFT<J>WBMVFT<S>  SJ ^ SFUVSOWBMVFT<S> ^ JOUNBY JOU<>WBMVFT \ JOUS J S GPS JJWBMVFTMFOHUIJ \ JG WBMVFT<J>WBMVFT<S>  SJ ^ SFUVSOWBMVFT<S> ^
  21. @felix_codes WHAT IS MUTATION TESTING Aaltonen, Kalle & Ihantola, Petri

    & Seppälä, Otto. (2015); Mutation Testing vs. Code Coverage in automated assessment
  22. @felix_codes WHAT IS MUTATION TESTING Aaltonen, Kalle & Ihantola, Petri

    & Seppälä, Otto. (2015); Mutation Testing vs. Code Coverage in automated assessment
  23. @felix_codes WHAT IS MUTATION TESTING Aaltonen, Kalle & Ihantola, Petri

    & Seppälä, Otto. (2015); Mutation Testing vs. Code Coverage in automated assessment