How Antithesis Works
Antithesis is an autonomous testing platform that finds the bugs in your software, with perfect reproducibility to help you fix them.
Finding bugs
Autonomous testing means Antithesis generates test cases so you don’t need to write them.
This is key, because it’s humanly impossible to write enough test cases to find every bug in your software before your users do.
And because Antithesis is generating tests for you, you can test better simply by running Antithesis for longer, without the need for more developer time.
Test properties
To generate test cases, Antithesis relies on test properties you define.
Instead of writing a vast test harness, you simply assert that your system should have certain properties, and Antithesis runs your system in multitude of situations to see if they’re ever violated.
For example: You could write a hundred tests that each mimic a different execution path and check whether your program ever crashes. But it’s both simpler and more powerful to write a single assertion stating that the program should never crash!
This approach both saves time and improves the strength of your testing, because it catches situations you didn’t think of. Antithesis lets you replace an elaborate test harness with hundreds of tests with a few dozen test properties.
And best of all, because test properties are long-lived, you never have to update your tests (unless you decide, for instance, that you do want race conditions to exist in your software).
Intelligent exploration
Once you’ve defined the properties your software should have, Antithesis generates a multiverse of states in your software’s execution history.
We run your software on dozens of parallel instances while feeding it random inputs (the way fuzzers do) and simulating external faults, like network outages (which is what happens in chaos engineering). This tests your software under conditions much more unpredictable, dynamic, and hostile than those it faces in production, and tests your code far off the happy-path.
But this approach won’t succeed just by brute force – the number of possible states is incomprehensibly large – so Antithesis intelligently explores the multiverse of possible system states, and homes in on novel and interesting execution paths.
Fixing bugs
Even after you’ve found your bugs, you can’t fix them unless you can reproduce them – and if you’re reading this, we’re guessing you’ve experienced this frustration first-hand.
Determinism
Antithesis simulates every aspect of your system, down to the hardware it runs on. This means your software runs in a fully deterministic environment, in which the same series of inputs always gives the same output. This makes every bug we find perfectly reproducible, so you’ll never waste time trying to reproduce a flaky bug again.
And best of all, you can begin try it for yourself, right now.