Every product has a unique risk profile that we need to measure and create a testing strategy that addresses those risks. Test coverage comes from a variety of methods, no purely automated approach is able to provide sufficient coverage by itself. Likewise no purely manual testing approach can appropriately validate a product, usually time and lack of human resources prevents exhaustive manual testing strategies from being effective.
A balanced approach is required that manages risk at each layer and provides crucial feedback to a team via Continuos Integration as well as by manual validation. Broadly speaking, our testing coverage comes by some combination of unit tests, acceptance tests, and exploratory testing.
Ideally, we're able to get the bulk of our feedback on the quality of the product via automated channels, like Continuous Integration. This allows for manual/exploratory testing efforts to be better spent on activities that can