Generative Testing Part 2 – Properties and Oracles 2018-09-11
From the plain English root verbs of "generative testing", we can surmise there are at least two actions to explore: 'generate' and 'test'. In a nutshell, the actions are
Generative Testing Part 1 – Introduction 2018-09-03
It is rare that a topic is smack dab in the middle of the Venn diagram of so many of my favorite topics: software quality, functional programming, and extensibility. The topic of generative testing hits all three! I am excited to bring this to your attention and shed light on it from my point of view.
Domain Identifiers instead of 'Primitive Obsession' 2017-08-08
Summary: In strongly-typed programming paradigms, consider introducing domain identifier types instead of using primitives like strings.
Liskov Substitution Principal and the Pit of Success 2016-10-23
When a data structure attempts to implement two different, incompatible usage patterns, it can lead to some nasty surprises. In part 2 we explore how to avoid unexpected integration bugs by following the Liskov Substitution Principal.
ConcurrentDictionary and the Pit of Success 2016-10-21
When it comes to managing state in .NET, ConcurrentDictionary is not a silver bullet. When a data structure attempts to implement two different, incompatible usage patterns, it can lead to some nasty surprises. This post explores how a "small" violation of the Liskov Substitution Principal can lead to unexpected bugs. ConcurrentDictionary can be accidentally used incorrectly because of a subtle Liskov Substitution Principal violation.