Testing concurrent code has always been a balance between tests being either hacky, flaky or slow. While the testing/synctest package made it possible for us to more effectively write idiomatic, easy-to-read tests for our concurrent programs that are both reliable and fast, it also came with a set of constraints.
In this talk, we’ll look at exactly what synctest can and cannot do, the underlying reasons behind its limitations, and how to avoid them. Finally, using a real-world example, we’ll see how proper use can push us towards robust system design we can feel confident about. In short, you’ll know precisely what to do to make the most of synctest, and why that will make your application code better.