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
Re-thinking Regression Testing
Search
Mario Gonzalez Macedo
March 21, 2014
Research
1
130
Re-thinking Regression Testing
Talk I gave at Mountain West Ruby Conf 2014 about mutation testing
Mario Gonzalez Macedo
March 21, 2014
Tweet
Share
Other Decks in Research
See All in Research
集合間Bregmanダイバージェンスと置換不変NNによるその学習
wasyro
0
140
[CV勉強会@関東 CVPR2025] VLM自動運転model S4-Driver
shinkyoto
2
480
スキマバイトサービスにおける現場起点でのデザインアプローチ
yoshioshingyouji
0
220
EarthSynth: Generating Informative Earth Observation with Diffusion Models
satai
3
260
PhD Defense 2025: Visual Understanding of Human Hands in Interactions
tkhkaeio
1
190
日本語新聞記事を用いた大規模言語モデルの暗記定量化 / LLMC2025
upura
0
180
Adaptive Experimental Design for Efficient Average Treatment Effect Estimation and Treatment Choice
masakat0
0
110
機械学習と数理最適化の融合 (MOAI) による革新
mickey_kubo
1
320
【緊急警告】日本の未来設計図 ~沈没か、再生か。国民と断行するラストチャンス~
yuutakasan
0
150
時系列データに対する解釈可能な 決定木クラスタリング
mickey_kubo
2
940
引力・斥力を制御可能なランダム部分集合の確率分布
wasyro
0
240
最適決定木を用いた処方的価格最適化
mickey_kubo
4
1.9k
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.6k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
It's Worth the Effort
3n
187
28k
Navigating Team Friction
lara
189
15k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
The Language of Interfaces
destraynor
161
25k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
51
5.6k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
4 Signs Your Business is Dying
shpigford
184
22k
Transcript
Re-thinking regression testing Mario González Macedo @maramono ortask.com
http://www.softwaretestpro.com/Item/5020/Minor-Risk-Patches/Cartoon
regression code coverage test redundancy ortask.com
ortask.com
regression code coverage test redundancy ortask.com
mutation testing
…vs code coverage
ortask.com
ortask.com
ortask.com
ortask.com
http://www.softwaretestpro.com/Item/5020/Minor-Risk-Patches/Cartoon
ortask.com
ortask.com
mutation score
(0, 1) worst mutation-adequate
ok… but what?
a type of fault injection
no extra code
change the code
mutate existing source code changes to tests: none
None
None
score… how?
mutants total killed mutants score =
zombies total killed zombies score =
ninjas total killed ninjas score =
how many mutations?
one mutation?
two mutations?
100 mutations?
k = mutation qty
assumption
assumption (a valid hypothesis)
competent programmer hypothesis
competent programmer hypothesis Some software bugs are caused by syntactically
small errors
competent programmer hypothesis k = mutation qty
competent programmer hypothesis k = 1
k
if k == 1 then first-order
if k == 2 then second-order
k-order mutant k mutations
k-order for simplicity easy to communicate
if k == 1 then low-order or simply first-order
if k > 1 then high-order
high-order… but why?
competent programmer hypothesis
competent programmer hypothesis coupling effect
coupling effect Other software bugs are caused by interactions of
small errors
coupling effect 1 < k < 6
why it works
for regression analysis one developer on fixes and features competent
programmer hypothesis
for regression analysis many contributors on fixes and features competent
programmer hypothesis coupling effect
so… why better?
test redundancy mutation score correlation: code coverage & test redundancy
ortask.com
ortask.com
mutation score test redundancy mutation score correlation: code coverage &
ortask.com
code coverage correlation: likelihood of bugs & test redundancy ortask.com
http://www.sustainablebabysteps.com/inflating-tires.html
http://willyoubemyyokoono.blogspot.com/2012_09_01_archive.html
correlation: mutation score & test redundancy code coverage ortask.com
how to apply it in practice
heckle mutant muJava Jester NinjaTurtles
heckle: obsolete as of Ruby 1.9 mutant: did not use
(rc) muJava Jester NinjaTurtles
https://github.com/ortask/mutator research-strength fast cross-language
painless mutation analysis a few guidelines
guideline 1: passing tests http://vector-magz.com/logo/quality-control-logo-item-4/
guideline 2: mutants 50 low-order experiment with high-order
guideline 3: cycle mutate score improve test
guideline 4: coupling low coupling high coupling detection
Thank you! Mario González Macedo @maramono ortask.com
Other mutation testing sources http://slid.es/markusschirp/mutation-testing https://github.com/mbj/mutant/tree/master/l ib/mutant/mutator/node https://github.com/seattlerb/heckle http://vimeo.com/10863662
Other sources http://vimeo.com/1683910