Skip to content

Latest commit

 

History

History
43 lines (29 loc) · 1.82 KB

README.md

File metadata and controls

43 lines (29 loc) · 1.82 KB

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