Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
2019-chicago-jug-mutation-testing.pdf
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Jeanne Boyarsky
November 03, 2019
Programming
73
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2019-chicago-jug-mutation-testing.pdf
Jeanne Boyarsky
November 03, 2019
More Decks by Jeanne Boyarsky
See All by Jeanne Boyarsky
JavaOne Java 25
boyarsky
0
94
JUnit 6 + exploring the testing ecosystem
boyarsky
0
97
Timeline of a (NYC) FRC Session/Regional
boyarsky
0
73
2025 Toastmasters Path Reference
boyarsky
0
220
2025 Toastmasters Path Changes Update Overview and Reference
boyarsky
0
110
Mentor_Conference_Presentation.pdf
boyarsky
0
60
2025-java-does-what-now.pdf
boyarsky
0
130
Beyond JUnit 5
boyarsky
0
96
Java 21 Certification (or learning new features)
boyarsky
0
170
Other Decks in Programming
See All in Programming
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
4
1.3k
What's New in Android 2026
veronikapj
0
250
FDEが実現するAI駆動経営の現在地
gonta
2
260
Claude Team Plan導入・ガイド
tk3fftk
0
250
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
350
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
3.9k
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
3.5k
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
220
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
170
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
200
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
460
yield再入門 #phpcon
o0h
PRO
0
940
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Done Done
chrislema
186
16k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
240
Context Engineering - Making Every Token Count
addyosmani
9
1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
270
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
890
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
450
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
400
Transcript
@jeanneboyarsky 1 Intro to Mutation Testing Jeanne Boyarsky Monday, November
4, 2019 Chicago Java User Group speakerdeck.com/boyarsky
@jeanneboyarsky Shout out to the selection process! 2
@jeanneboyarsky Pause for a Commercial 3
@jeanneboyarsky Why write tests? 4 It used to work!
@jeanneboyarsky How know if tests are good? 5
@jeanneboyarsky If test coverage low 6 Write more tests! Not
ready for mutation testing of class
@jeanneboyarsky If test coverage high 7 All done! Perfect code!
@jeanneboyarsky Or is it? 8 Why is it saying nobody
is registered?
@jeanneboyarsky Code Review! 9
@jeanneboyarsky That’s a mutant! 10
@jeanneboyarsky Too many mutants! 11 They’re everywhere!
@jeanneboyarsky PIT to the rescue! 12
@jeanneboyarsky What is PIT? • Originally Parallel Isolated Test •
Now just PIT 13
@jeanneboyarsky Easy to run 14
@jeanneboyarsky Easy to run 15
@jeanneboyarsky The console flies by 16
@jeanneboyarsky We caught 5 mutants 17
@jeanneboyarsky More detail 18
@jeanneboyarsky The mutants live…. 19
@jeanneboyarsky Level up 20
@jeanneboyarsky Now 32 survived 21
@jeanneboyarsky PIT 22 Mutant Generation Bytecode (ASM) Test Selection Coverage
Mutant Insertion Instrumentation Mutant Detection Early Exit (fine)
@jeanneboyarsky Mutant Generation Options 1. Bytecode • Faster • May
not map to line of code • Java 8 stream support was immediate 2. Source Code • Slower • Clearer 23 Thank you to pitest.org for this material
@jeanneboyarsky Test Selection Options 1. Coverage • Fast - picks
right test 2. Naive • Slow - brute force 3. Convention • Medium - uses naming conventions 24 Thank you to pitest.org for this material
@jeanneboyarsky Mutant Insertion Options 1. Instrumentation • Fast - picks
right test 2. Classloader • Uses a lot of memory 3. Debugger Hotswap • Can be slower because debugger on 25 Thank you to pitest.org for this material
@jeanneboyarsky Mutant Detection Options 1. Early Exit (fine) • Stops
when test finds a mutant 2. Early Exit (coarse) • Stops when class finds a mutant 3. Naive • Slow - brute force 26 Thank you to pitest.org for this material
@jeanneboyarsky JUnit 5 Support • PitClipse assigned to next version
on Oct 5 27
@jeanneboyarsky JUnit 5 Support • No date for IntelliJ 28
@jeanneboyarsky JUnit 5 Support • Supported by • Maven •
Gradle • However…. I find IDE integration to be critical 29
@jeanneboyarsky Tips • JUnit tests must pass • Watch console
to see if still running • Reports on whole project • Fixing one may take care of more 30
@jeanneboyarsky For More • Code Kata: https://github.com/vmzakharov/mutate- test-kata 31
@jeanneboyarsky Demo 32