In a previous post, I discuss how the chef-client execution should not be done on a schedule, and how it should be treated the same as releasing code.
At the time I wrote it, I did not know about serverspec - which is basically an acceptance test framework for your servers!
Now, as part of your continuous delivery value stream, you can run serverspec against your servers just after chef-client execution completes!
If you are running this against a Windows server, make sure you read and follow the Ruby WinRM lib documentation. The setup can be a pita.