Skip to content

first-try-software/the_secret_ingredient

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The Secret Ingredient

How To Understand and Resolve Just About Any Flaky Test

Flaky tests are an inscrutable bane. Hard to understand. Annoying. And, so frustrating! My personal nemesis is Daylight Saving Time. I can’t tell you how many times I’ve tripped over it. Let’s just say I was well into the “shame on me” part of that relationship, until I discovered the secret ingredient that nearly all flaky tests have in common. Turns out they only seem inscrutable. It really is possible to understand and resolve just about any flaky test.


Hey you! Thanks for stopping by!

This repository contains the source code for the RubyConf 2023 talk on flaky tests entitled The Secret Ingredient.

Here the deck: The Secret Ingredient Slides

Please share your feedback! You can reach me here:

I'll post a link to the video when it is made availble.

~ Alan


The talk covers where flakiness comes from, how to recognize it, and how to resolve it, including the following topics:

  • Non-Determinism
  • Order Dependence
  • Race Conditions

This repository is organized as a series of commits to a class called RubyConf and its associated specs. You can follow along one commit at a time, or via the following tags:

  • step-01 / flaky-system-clock
  • step-02 / resolved-system-clock
  • step-03 / working-random-number
  • step-04 / flaky-random-number
  • step-05 / resolved-random-number
  • step-06 / flaky-network-connection
  • step-07 / resolved-network-connection
  • step-08 / flaky-shared-state
  • step-09 / resolved-shared-state
  • step-10 / flaky-async-io
  • step-11 / resolved-async-io