Do you smoke test?
samsaffron.com
samsaffron.com
Don't release to the world. Release to 1%, then 5% then 20%... and so on. And if the load time starts going up, or the # errors start going up, or numerous other things - last release gets rolled back and alarms ring.
That way I don't break the world - I break a much smaller N% of the world that demonstrates the problem - which then promptly gets rolled back by the friendly neighbourhood release bots.
I write sucky code - so I write tests to help drive my design and catch errors.
But tests are code too - and I write sucky code - so I write release processes[1] they help save me when I write sucky test code.
If you do continual delivery you need that second layer of metric-driven tracking of release quality or writing sucky test code will catch you out at some point ;-)
[1] and yes - the release ramp up / roll back code is potentially sucky code also - but it's just one bit that does one thing so gets tested a lot more than all the new sucky code I write ;-)
Until it is, of course. Growing up is hard.
Fix that. If you can't test your config and your authoring by crawling server-rendered documents, others can't crawl them either, and they aren't really part of the World-Wide Web.
The point of a smoke test is that for all your care in testing and deployment, you still might have missed something. Stuff goes wrong, and not always in an immediately machine testable way. You don't need a full QA department, you just need to open up the bits you've changed after a deploy and have a play to make sure nothing's obviously out of place. It's a small step to make a non-optional part of your process and it has a potentially huge payoff.
Adding the automated integration test is a great thing to do, but complementing it with a human is even better.
> Often when we hit these kind of issues, as developers, we love assigning blame. Blame points my way … don’t do it again … move along nothing more to see.
I have never found this to be a constructive 'culture'. Instead of placing blame on others or feeling guilt myself, I try to see if there's a way of improving the process itself instead of relying on people not fucking up. Because that's going to happen to everyone. Bugs are still going to happen, but if the process (be it deployment, testing/QA, dev, w/e) eliminates potential points of failure, they will be less frequent and hopefully less severe.
That is testing 101...
Having a smoke test is still usefull because often you dont want to wait for those automated test to complete.