The talk will discuss how property-based testing compares to traditional testing methods and demonstrate its principles on simple examples. We will see how does it fit into a TDD workflow. In order to bust the myth of inapplicability of property-based testing in a real-world setting we'll bring up some use cases from the industry. We'll move on from immutable, static properties to a more dynamic setting. We'll see how tools present in the Clojure ecosystem allow us to validate stateful computations. Finally, we'll wander into the world of concurrency and automation of race conditions detection.