Imagine you’d design your network by documenting the desired traffic flow across the network under all failure conditions, and only then do a low-level design, create configurations, and deploy the network… while being able to use the desired traffic flows as a testing tool to verify that the network still behaves as expected, both in a test lab as well as in the live network.
Later on, as you make changes to the network, the unit tests you wrote (yeah, that’s how software developers call this stuff) allow you to verify the change you made didn’t break the network connectivity.
Finally, imagine having to work on an unknown network with thousands of accumulated quirks. Starting with unit tests (expected traffic flows) will help you understand the network, and give you a verification tool at the same time.
Michael Kashin built an Ansible-based tool that allows you to do all of that and is using it to work on the networks of his clients. He explained how it works in Episode 44 of Software Gone Wild. For more details, visit his blog, in particular these blog posts: