Luckily there's a completely separate test team that does QA and UAT. I'm a very strict perfectionist by nature, so I do a first round of code-reviews and "QA" with my team. The test team has a set of test cases they need to work through, but I always make sure to build fault tolerant systems that can deviate from the process or attempt to clean dirty inputs. I also try to implement timed retries for integration (via message queues) to make sure there is guaranteed delivery (because network connectivity can sometimes be down between disparate servers). If business rules were violated or data could not be cleaned, we have custom dashboards for the operational team to monitor and attend to.
