Oops, My Tests Broke the Build: An Explorative Analysis of Travis CI with GitHub

Moritz Beller
Moritz BellerDelft University of Technology
Oops, My Tests Broke the Build:
An Explorative Analysis of Travis CI
with GitHub
Oops, My Tests Broke the Build:
An Explorative Analysis of Travis CI
with GitHub
Moritz Beller
@Inventitech
Oops, My Tests Broke the Build:
An Explorative Analysis of Travis CI
with GitHub
Moritz Beller
@Inventitech
Georgios Gousios
Oops, My Tests Broke the Build:
An Explorative Analysis of Travis CI
with GitHub
Moritz Beller
@Inventitech
Georgios Gousios
Andy Zaidman
How This Paper Came To Be
How This Paper Came To Be
How This Paper Came To Be
Travis What?
Travis What?
Travis What?
P1. Using CI is a widespread best practice
P1. Using CI is a widespread best practice
CI has become an integral quality
assurance practice.
P. M. Duvall, S. Matyas, and A. Glover, “Continuous
integration: improving software quality and
reducing risk”
P1. Using CI is a widespread best practice
CI has become an integral quality
assurance practice.
P1. Using CI is a widespread best practice
P1. Using CI is a widespread best practice
P1. Using CI is a widespread best practice
P1. Using CI is a widespread best practice
P1. Using CI is a widespread best practice
P1. Using CI is a widespread best practice
Around 30% of GITHUB
projects that could
potentially use the free
Travis CI, also make use it.
P1. Using CI is a widespread best practice
Around 30% of GITHUB
projects that could
potentially use the free
Travis CI, also make use it.
Caveat: In 2016!
P1. Using CI is a widespread best practice
TODO: Add background with
Sun
P1. Using CI is a widespread best practice
TODO: Add background with
Sun
P1. Using CI is a widespread best practice
Filter Criteria
TODO: Add background with
Sun
P1. Using CI is a widespread best practice
Filter Criteria
●
Non-toy, non-fork projects
(we want the original!)
TODO: Add background with
Sun
P1. Using CI is a widespread best practice
Filter Criteria
●
Non-toy, non-fork projects
(we want the original!)
●
> 50 stars
TODO: Add background with
Sun
P1. Using CI is a widespread best practice
Filter Criteria
●
Non-toy, non-fork projects
(we want the original!)
●
> 50 stars
●
A longer (> 50) Travis build
history
TODO: Add background with
Sun
P1. Using CI is a widespread best practice
Filter Criteria
●
Non-toy, non-fork projects
(we want the original!)
●
> 50 stars
●
A longer (> 50) Travis build
history
E. Kalliamvakou et al.:
“An in-depth study of the
promises and perils of mining
GitHub”
TODO: Add background with
Sun
P1. Using CI is a widespread best practice
Filter Criteria
●
Non-toy, non-fork projects
(we want the original!)
●
> 50 stars
●
A longer (> 50) Travis build
history
E. Kalliamvakou et al.:
“An in-depth study of the
promises and perils of mining
GitHub”
TODO: Add background with
Sun
P1. Using CI is a widespread best practice
Filter Criteria
●
Non-toy, non-fork projects
(we want the original!)
●
> 50 stars
●
A longer (> 50) Travis build
history
E. Kalliamvakou et al.:
“An in-depth study of the
promises and perils of mining
GitHub”
TODO: Add background with
Sun
P1. Using CI is a widespread best practice
Filter Criteria
●
Non-toy, non-fork projects
(we want the original!)
●
> 50 stars
●
A longer (> 50) Travis build
history
E. Kalliamvakou et al.:
“An in-depth study of the
promises and perils of mining
GitHub”
Java
●
423 projects
TODO: Add background with
Sun
P1. Using CI is a widespread best practice
Filter Criteria
●
Non-toy, non-fork projects
(we want the original!)
●
> 50 stars
●
A longer (> 50) Travis build
history
E. Kalliamvakou et al.:
“An in-depth study of the
promises and perils of mining
GitHub”
Ruby
●
936 projects
Java
●
423 projects
P1. Using CI is a widespread best practice
~
TODO: Add background with
Sun
P2. Testing is central to CI
TODO: Add background with
Sun
P2. Testing is central to CI
CI is the best practice in which
developers not only integrate their
work into a shared mainline
frequently, but also verify the quality
continuously through testing.
TODO: Add background with
Sun
P2. Testing is central to CI
CI is the best practice in which
developers not only integrate their
work into a shared mainline
frequently, but also verify the quality
continuously through testing.
It is known.
Oops, My Tests Broke the Build: An Explorative Analysis of Travis CI with GitHub
<TL;DR>...</TL;DR>
<TL;DR>...</TL;DR>
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running nl.tudelft.watchdog.ClientVersionCheckerTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time
elapsed: 0.04 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
<TL;DR>...</TL;DR>
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running nl.tudelft.watchdog.ClientVersionCheckerTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time
elapsed: 0.04 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
<TL;DR>...</TL;DR>
<TL;DR>...</TL;DR>
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running nl.tudelft.watchdog.ClientVersionCheckerTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time
elapsed: 0.04 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
<TL;DR>...</TL;DR>
<TL;DR>...</TL;DR>
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running nl.tudelft.watchdog.ClientVersionCheckerTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time
elapsed: 0.04 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
<TL;DR>...</TL;DR>
<TL;DR>...</TL;DR>
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running nl.tudelft.watchdog.ClientVersionCheckerTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time
elapsed: 0.04 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
<TL;DR>...</TL;DR>
<TL;DR>...</TL;DR>
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running nl.tudelft.watchdog.ClientVersionCheckerTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time
elapsed: 0.04 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
<TL;DR>...</TL;DR>
●
Parsing Log files for Java: Maven, Gradle, Ant
<TL;DR>...</TL;DR>
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running nl.tudelft.watchdog.ClientVersionCheckerTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time
elapsed: 0.04 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
<TL;DR>...</TL;DR>
●
Parsing Log files for Java: Maven, Gradle, Ant
<TL;DR>...</TL;DR>
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running nl.tudelft.watchdog.ClientVersionCheckerTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time
elapsed: 0.04 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
<TL;DR>...</TL;DR>
●
Parsing Log files for Java: Maven, Gradle, Ant
<TL;DR>...</TL;DR>
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running nl.tudelft.watchdog.ClientVersionCheckerTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time
elapsed: 0.04 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
<TL;DR>...</TL;DR>
●
Parsing Log files for Java: Maven, Gradle, Ant
●
Parsing Log files for Ruby: bundler and rake
<TL;DR>...</TL;DR>
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running nl.tudelft.watchdog.ClientVersionCheckerTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time
elapsed: 0.04 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
<TL;DR>...</TL;DR>
●
Parsing Log files for Java: Maven, Gradle, Ant
●
Parsing Log files for Ruby: bundler and rake
P2. Testing is central to CI
●
69% of Java and 87.5% of the Ruby projects:
test runs
P2. Testing is central to CI
●
69% of Java and 87.5% of the Ruby projects:
test runs
1:0 for Ruby!
P2. Testing is central to CI
●
69% of Java and 87.5% of the Ruby projects:
test runs
1:0 for Ruby!
P2. Testing is central to CI
●
Overall, 81% of the projects:
test runs
●
69% of Java and 87.5% of the Ruby projects:
test runs
1:0 for Ruby!
P2. Testing is central to CI
●
Overall, 81% of the projects:
test runs
●
96% of builds:
test runs
P2. Testing is central to CI
P2. Testing is central to CI
P2. Testing is central to CI
Testing is the single most important
reason for broken builds, more
prevalent than compile errors, missing
dependencies, build cancellations and
provisioning problems together.
P2. Testing is central to CI
Testing is the single most important
reason for broken builds, more
prevalent than compile errors, missing
dependencies, build cancellations and
provisioning problems together.
P2. Testing is central to CI
TODO: Add background with
Sun
P3. Testing is language(-type) dependent
Does a dynamically typed language
(like Ruby) need as much testing as a
statically typed language (like Java)?
TODO: Add background with
Sun
P3. Testing is language(-type) dependent
Does a dynamically typed language
(like Ruby) need as much testing as a
statically typed language (like Java)?
S. Kleinschmager, S. Hanenberg, R. Robbes, E.
Tanter, A. Stefik: Do static type systems improve the
maintainability of software systems? An empirical
study.
P3. Testing is language(-type) dependent
P3. Testing is language(-type) dependent
P3. Testing is language(-type) dependent
P3. Testing is language(-type) dependent
Tests Build Result→
P3. Testing is language(-type) dependent
Tests Build Result→
P3. Testing is language(-type) dependent
Tests Build Result→
P3. Testing is language(-type) dependent
Tests Build Result→
Ruby projects have 10x more tests
than Java projects, yet execute faster.
Ruby builds are 4x more likely to fail
than Java projects.
P3. Testing is language(-type) dependent
Ruby projects have 10x more tests
than Java projects, yet execute faster.
Ruby builds are 4x more likely to fail
than Java projects.
P3. Testing is language(-type) dependent
Building and testing in different
environments delivers additional
value.
P4. Are more build environments helpful?
Building and testing in different
environments delivers additional
value.
We don’t know.
P4. Are more build environments helpful?
P4. Are more build environments helpful?
P4. Are more build environments helpful?
P4. Are more build environments helpful?
Yes, but 8x more so in Ruby than in
Java.
P4. Are more build environments helpful?
Yes, but 8x more so in Ruby than in
Java.
P4. Are more build environments helpful?
Moritz Beller @Inventitech
Oops, My Tests Broke the Build:
An Explorative Analysis of Travis CI with GitHub
Moritz Beller @Inventitech
Oops, My Tests Broke the Build:
An Explorative Analysis of Travis CI with GitHub
Moritz Beller @Inventitech
Oops, My Tests Broke the Build:
An Explorative Analysis of Travis CI with GitHub
Moritz Beller @Inventitech
Oops, My Tests Broke the Build:
An Explorative Analysis of Travis CI with GitHub
Moritz Beller @Inventitech
Oops, My Tests Broke the Build:
An Explorative Analysis of Travis CI with GitHub
1 of 80

Recommended

On the Dichotomy of Debugging Behavior Among Programmers by
On the Dichotomy of Debugging Behavior Among ProgrammersOn the Dichotomy of Debugging Behavior Among Programmers
On the Dichotomy of Debugging Behavior Among ProgrammersMoritz Beller
405 views20 slides
Modern Code Reviews in Open-Source Projects: Which Problems Do They Fix? by
Modern Code Reviews in Open-Source Projects: Which Problems Do They Fix?Modern Code Reviews in Open-Source Projects: Which Problems Do They Fix?
Modern Code Reviews in Open-Source Projects: Which Problems Do They Fix?Moritz Beller
451 views130 slides
Analyzing the State of Static Analysis: A Large-Scale Evaluation in Open Sour... by
Analyzing the State of Static Analysis: A Large-Scale Evaluation in Open Sour...Analyzing the State of Static Analysis: A Large-Scale Evaluation in Open Sour...
Analyzing the State of Static Analysis: A Large-Scale Evaluation in Open Sour...Moritz Beller
1.6K views91 slides
The Last Line Effect by
The Last Line EffectThe Last Line Effect
The Last Line EffectMoritz Beller
1.2K views55 slides
How (Much) Do Developers Test? by
How (Much) Do Developers Test?How (Much) Do Developers Test?
How (Much) Do Developers Test?Moritz Beller
1.5K views39 slides
How (Much) Do Developers Test? by
How (Much) Do Developers Test?How (Much) Do Developers Test?
How (Much) Do Developers Test?Moritz Beller
1K views59 slides

More Related Content

Recently uploaded

Ports-and-Adapters Architecture for Embedded HMI by
Ports-and-Adapters Architecture for Embedded HMIPorts-and-Adapters Architecture for Embedded HMI
Ports-and-Adapters Architecture for Embedded HMIBurkhard Stubert
21 views19 slides
Unleash The Monkeys by
Unleash The MonkeysUnleash The Monkeys
Unleash The MonkeysJacob Duijzer
8 views28 slides
Software evolution understanding: Automatic extraction of software identifier... by
Software evolution understanding: Automatic extraction of software identifier...Software evolution understanding: Automatic extraction of software identifier...
Software evolution understanding: Automatic extraction of software identifier...Ra'Fat Al-Msie'deen
10 views33 slides
Quality Engineer: A Day in the Life by
Quality Engineer: A Day in the LifeQuality Engineer: A Day in the Life
Quality Engineer: A Day in the LifeJohn Valentino
6 views18 slides
FOSSLight Community Day 2023-11-30 by
FOSSLight Community Day 2023-11-30FOSSLight Community Day 2023-11-30
FOSSLight Community Day 2023-11-30Shane Coughlan
5 views18 slides
HarshithAkkapelli_Presentation.pdf by
HarshithAkkapelli_Presentation.pdfHarshithAkkapelli_Presentation.pdf
HarshithAkkapelli_Presentation.pdfharshithakkapelli
12 views16 slides

Recently uploaded(20)

Ports-and-Adapters Architecture for Embedded HMI by Burkhard Stubert
Ports-and-Adapters Architecture for Embedded HMIPorts-and-Adapters Architecture for Embedded HMI
Ports-and-Adapters Architecture for Embedded HMI
Burkhard Stubert21 views
Software evolution understanding: Automatic extraction of software identifier... by Ra'Fat Al-Msie'deen
Software evolution understanding: Automatic extraction of software identifier...Software evolution understanding: Automatic extraction of software identifier...
Software evolution understanding: Automatic extraction of software identifier...
Quality Engineer: A Day in the Life by John Valentino
Quality Engineer: A Day in the LifeQuality Engineer: A Day in the Life
Quality Engineer: A Day in the Life
John Valentino6 views
FOSSLight Community Day 2023-11-30 by Shane Coughlan
FOSSLight Community Day 2023-11-30FOSSLight Community Day 2023-11-30
FOSSLight Community Day 2023-11-30
Shane Coughlan5 views
Copilot Prompting Toolkit_All Resources.pdf by Riccardo Zamana
Copilot Prompting Toolkit_All Resources.pdfCopilot Prompting Toolkit_All Resources.pdf
Copilot Prompting Toolkit_All Resources.pdf
Riccardo Zamana11 views
AI and Ml presentation .pptx by FayazAli87
AI and Ml presentation .pptxAI and Ml presentation .pptx
AI and Ml presentation .pptx
FayazAli8712 views
360 graden fabriek by info33492
360 graden fabriek360 graden fabriek
360 graden fabriek
info33492138 views
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx by animuscrm
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx
animuscrm15 views
Sprint 226 by ManageIQ
Sprint 226Sprint 226
Sprint 226
ManageIQ8 views
Unlocking the Power of AI in Product Management - A Comprehensive Guide for P... by NimaTorabi2
Unlocking the Power of AI in Product Management - A Comprehensive Guide for P...Unlocking the Power of AI in Product Management - A Comprehensive Guide for P...
Unlocking the Power of AI in Product Management - A Comprehensive Guide for P...
NimaTorabi215 views
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action by Márton Kodok
Gen Apps on Google Cloud PaLM2 and Codey APIs in ActionGen Apps on Google Cloud PaLM2 and Codey APIs in Action
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action
Márton Kodok11 views
JioEngage_Presentation.pptx by admin125455
JioEngage_Presentation.pptxJioEngage_Presentation.pptx
JioEngage_Presentation.pptx
admin1254556 views
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with... by sparkfabrik
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
sparkfabrik8 views

Featured

Getting into the tech field. what next by
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
6K views22 slides
Google's Just Not That Into You: Understanding Core Updates & Search Intent by
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
6.5K views99 slides
How to have difficult conversations by
How to have difficult conversations How to have difficult conversations
How to have difficult conversations Rajiv Jayarajah, MAppComm, ACC
5.2K views19 slides
Introduction to Data Science by
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data ScienceChristy Abraham Joy
82.4K views51 slides
Time Management & Productivity - Best Practices by
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
169.7K views42 slides
The six step guide to practical project management by
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
36.6K views27 slides

Featured(20)

Getting into the tech field. what next by Tessa Mero
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
Tessa Mero6K views
Google's Just Not That Into You: Understanding Core Updates & Search Intent by Lily Ray
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray6.5K views
Time Management & Productivity - Best Practices by Vit Horky
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
Vit Horky169.7K views
The six step guide to practical project management by MindGenius
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
MindGenius36.6K views
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright... by RachelPearson36
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
RachelPearson3612.7K views
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present... by Applitools
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Applitools55.5K views
12 Ways to Increase Your Influence at Work by GetSmarter
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
GetSmarter401.7K views
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G... by DevGAMM Conference
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
DevGAMM Conference3.6K views
Barbie - Brand Strategy Presentation by Erica Santiago
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
Erica Santiago25.1K views
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well by Saba Software
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Saba Software25.2K views
Introduction to C Programming Language by Simplilearn
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming Language
Simplilearn8.4K views
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr... by Palo Alto Software
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...
Palo Alto Software88.4K views
9 Tips for a Work-free Vacation by Weekdone.com
9 Tips for a Work-free Vacation9 Tips for a Work-free Vacation
9 Tips for a Work-free Vacation
Weekdone.com7.2K views
How to Map Your Future by SlideShop.com
How to Map Your FutureHow to Map Your Future
How to Map Your Future
SlideShop.com275.1K views
Beyond Pride: Making Digital Marketing & SEO Authentically LGBTQ+ Inclusive -... by AccuraCast
Beyond Pride: Making Digital Marketing & SEO Authentically LGBTQ+ Inclusive -...Beyond Pride: Making Digital Marketing & SEO Authentically LGBTQ+ Inclusive -...
Beyond Pride: Making Digital Marketing & SEO Authentically LGBTQ+ Inclusive -...
AccuraCast3.4K views

Oops, My Tests Broke the Build: An Explorative Analysis of Travis CI with GitHub

  • 1. Oops, My Tests Broke the Build: An Explorative Analysis of Travis CI with GitHub
  • 2. Oops, My Tests Broke the Build: An Explorative Analysis of Travis CI with GitHub Moritz Beller @Inventitech
  • 3. Oops, My Tests Broke the Build: An Explorative Analysis of Travis CI with GitHub Moritz Beller @Inventitech Georgios Gousios
  • 4. Oops, My Tests Broke the Build: An Explorative Analysis of Travis CI with GitHub Moritz Beller @Inventitech Georgios Gousios Andy Zaidman
  • 5. How This Paper Came To Be
  • 6. How This Paper Came To Be
  • 7. How This Paper Came To Be
  • 11. P1. Using CI is a widespread best practice
  • 12. P1. Using CI is a widespread best practice CI has become an integral quality assurance practice.
  • 13. P. M. Duvall, S. Matyas, and A. Glover, “Continuous integration: improving software quality and reducing risk” P1. Using CI is a widespread best practice CI has become an integral quality assurance practice.
  • 14. P1. Using CI is a widespread best practice
  • 15. P1. Using CI is a widespread best practice
  • 16. P1. Using CI is a widespread best practice
  • 17. P1. Using CI is a widespread best practice
  • 18. P1. Using CI is a widespread best practice
  • 19. P1. Using CI is a widespread best practice
  • 20. Around 30% of GITHUB projects that could potentially use the free Travis CI, also make use it. P1. Using CI is a widespread best practice
  • 21. Around 30% of GITHUB projects that could potentially use the free Travis CI, also make use it. Caveat: In 2016! P1. Using CI is a widespread best practice
  • 22. TODO: Add background with Sun P1. Using CI is a widespread best practice
  • 23. TODO: Add background with Sun P1. Using CI is a widespread best practice Filter Criteria
  • 24. TODO: Add background with Sun P1. Using CI is a widespread best practice Filter Criteria ● Non-toy, non-fork projects (we want the original!)
  • 25. TODO: Add background with Sun P1. Using CI is a widespread best practice Filter Criteria ● Non-toy, non-fork projects (we want the original!) ● > 50 stars
  • 26. TODO: Add background with Sun P1. Using CI is a widespread best practice Filter Criteria ● Non-toy, non-fork projects (we want the original!) ● > 50 stars ● A longer (> 50) Travis build history
  • 27. TODO: Add background with Sun P1. Using CI is a widespread best practice Filter Criteria ● Non-toy, non-fork projects (we want the original!) ● > 50 stars ● A longer (> 50) Travis build history E. Kalliamvakou et al.: “An in-depth study of the promises and perils of mining GitHub”
  • 28. TODO: Add background with Sun P1. Using CI is a widespread best practice Filter Criteria ● Non-toy, non-fork projects (we want the original!) ● > 50 stars ● A longer (> 50) Travis build history E. Kalliamvakou et al.: “An in-depth study of the promises and perils of mining GitHub”
  • 29. TODO: Add background with Sun P1. Using CI is a widespread best practice Filter Criteria ● Non-toy, non-fork projects (we want the original!) ● > 50 stars ● A longer (> 50) Travis build history E. Kalliamvakou et al.: “An in-depth study of the promises and perils of mining GitHub”
  • 30. TODO: Add background with Sun P1. Using CI is a widespread best practice Filter Criteria ● Non-toy, non-fork projects (we want the original!) ● > 50 stars ● A longer (> 50) Travis build history E. Kalliamvakou et al.: “An in-depth study of the promises and perils of mining GitHub” Java ● 423 projects
  • 31. TODO: Add background with Sun P1. Using CI is a widespread best practice Filter Criteria ● Non-toy, non-fork projects (we want the original!) ● > 50 stars ● A longer (> 50) Travis build history E. Kalliamvakou et al.: “An in-depth study of the promises and perils of mining GitHub” Ruby ● 936 projects Java ● 423 projects
  • 32. P1. Using CI is a widespread best practice ~
  • 33. TODO: Add background with Sun P2. Testing is central to CI
  • 34. TODO: Add background with Sun P2. Testing is central to CI CI is the best practice in which developers not only integrate their work into a shared mainline frequently, but also verify the quality continuously through testing.
  • 35. TODO: Add background with Sun P2. Testing is central to CI CI is the best practice in which developers not only integrate their work into a shared mainline frequently, but also verify the quality continuously through testing. It is known.
  • 38. <TL;DR>...</TL;DR> ------------------------------------------------------- T E S T S ------------------------------------------------------- Running nl.tudelft.watchdog.ClientVersionCheckerTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.04 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
  • 39. <TL;DR>...</TL;DR> ------------------------------------------------------- T E S T S ------------------------------------------------------- Running nl.tudelft.watchdog.ClientVersionCheckerTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.04 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 <TL;DR>...</TL;DR>
  • 40. <TL;DR>...</TL;DR> ------------------------------------------------------- T E S T S ------------------------------------------------------- Running nl.tudelft.watchdog.ClientVersionCheckerTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.04 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 <TL;DR>...</TL;DR>
  • 41. <TL;DR>...</TL;DR> ------------------------------------------------------- T E S T S ------------------------------------------------------- Running nl.tudelft.watchdog.ClientVersionCheckerTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.04 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 <TL;DR>...</TL;DR>
  • 42. <TL;DR>...</TL;DR> ------------------------------------------------------- T E S T S ------------------------------------------------------- Running nl.tudelft.watchdog.ClientVersionCheckerTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.04 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 <TL;DR>...</TL;DR>
  • 43. <TL;DR>...</TL;DR> ------------------------------------------------------- T E S T S ------------------------------------------------------- Running nl.tudelft.watchdog.ClientVersionCheckerTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.04 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 <TL;DR>...</TL;DR> ● Parsing Log files for Java: Maven, Gradle, Ant
  • 44. <TL;DR>...</TL;DR> ------------------------------------------------------- T E S T S ------------------------------------------------------- Running nl.tudelft.watchdog.ClientVersionCheckerTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.04 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 <TL;DR>...</TL;DR> ● Parsing Log files for Java: Maven, Gradle, Ant
  • 45. <TL;DR>...</TL;DR> ------------------------------------------------------- T E S T S ------------------------------------------------------- Running nl.tudelft.watchdog.ClientVersionCheckerTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.04 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 <TL;DR>...</TL;DR> ● Parsing Log files for Java: Maven, Gradle, Ant
  • 46. <TL;DR>...</TL;DR> ------------------------------------------------------- T E S T S ------------------------------------------------------- Running nl.tudelft.watchdog.ClientVersionCheckerTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.04 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 <TL;DR>...</TL;DR> ● Parsing Log files for Java: Maven, Gradle, Ant ● Parsing Log files for Ruby: bundler and rake
  • 47. <TL;DR>...</TL;DR> ------------------------------------------------------- T E S T S ------------------------------------------------------- Running nl.tudelft.watchdog.ClientVersionCheckerTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.04 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 <TL;DR>...</TL;DR> ● Parsing Log files for Java: Maven, Gradle, Ant ● Parsing Log files for Ruby: bundler and rake
  • 48. P2. Testing is central to CI
  • 49. ● 69% of Java and 87.5% of the Ruby projects: test runs P2. Testing is central to CI
  • 50. ● 69% of Java and 87.5% of the Ruby projects: test runs 1:0 for Ruby! P2. Testing is central to CI
  • 51. ● 69% of Java and 87.5% of the Ruby projects: test runs 1:0 for Ruby! P2. Testing is central to CI ● Overall, 81% of the projects: test runs
  • 52. ● 69% of Java and 87.5% of the Ruby projects: test runs 1:0 for Ruby! P2. Testing is central to CI ● Overall, 81% of the projects: test runs ● 96% of builds: test runs
  • 53. P2. Testing is central to CI
  • 54. P2. Testing is central to CI
  • 55. P2. Testing is central to CI
  • 56. Testing is the single most important reason for broken builds, more prevalent than compile errors, missing dependencies, build cancellations and provisioning problems together. P2. Testing is central to CI
  • 57. Testing is the single most important reason for broken builds, more prevalent than compile errors, missing dependencies, build cancellations and provisioning problems together. P2. Testing is central to CI
  • 58. TODO: Add background with Sun P3. Testing is language(-type) dependent Does a dynamically typed language (like Ruby) need as much testing as a statically typed language (like Java)?
  • 59. TODO: Add background with Sun P3. Testing is language(-type) dependent Does a dynamically typed language (like Ruby) need as much testing as a statically typed language (like Java)? S. Kleinschmager, S. Hanenberg, R. Robbes, E. Tanter, A. Stefik: Do static type systems improve the maintainability of software systems? An empirical study.
  • 60. P3. Testing is language(-type) dependent
  • 61. P3. Testing is language(-type) dependent
  • 62. P3. Testing is language(-type) dependent
  • 63. P3. Testing is language(-type) dependent Tests Build Result→
  • 64. P3. Testing is language(-type) dependent Tests Build Result→
  • 65. P3. Testing is language(-type) dependent Tests Build Result→
  • 66. P3. Testing is language(-type) dependent Tests Build Result→
  • 67. Ruby projects have 10x more tests than Java projects, yet execute faster. Ruby builds are 4x more likely to fail than Java projects. P3. Testing is language(-type) dependent
  • 68. Ruby projects have 10x more tests than Java projects, yet execute faster. Ruby builds are 4x more likely to fail than Java projects. P3. Testing is language(-type) dependent
  • 69. Building and testing in different environments delivers additional value. P4. Are more build environments helpful?
  • 70. Building and testing in different environments delivers additional value. We don’t know. P4. Are more build environments helpful?
  • 71. P4. Are more build environments helpful?
  • 72. P4. Are more build environments helpful?
  • 73. P4. Are more build environments helpful?
  • 74. Yes, but 8x more so in Ruby than in Java. P4. Are more build environments helpful?
  • 75. Yes, but 8x more so in Ruby than in Java. P4. Are more build environments helpful?
  • 76. Moritz Beller @Inventitech Oops, My Tests Broke the Build: An Explorative Analysis of Travis CI with GitHub
  • 77. Moritz Beller @Inventitech Oops, My Tests Broke the Build: An Explorative Analysis of Travis CI with GitHub
  • 78. Moritz Beller @Inventitech Oops, My Tests Broke the Build: An Explorative Analysis of Travis CI with GitHub
  • 79. Moritz Beller @Inventitech Oops, My Tests Broke the Build: An Explorative Analysis of Travis CI with GitHub
  • 80. Moritz Beller @Inventitech Oops, My Tests Broke the Build: An Explorative Analysis of Travis CI with GitHub