We've seen lots of brain power expended over the past several decades on the subject of software testing. Static, dynamic, white box, black box, gray box, API, code coverage, fault injection, mutation (yeah, really...you can't make this stuff up!), equivalence partitioning, value analysis, fuzz testing (my personal favorite, as I keep hoping that working with fuzz will resurrect my hairline), use case, unit, integration, system, acceptance. Not nearly an all-inclusive list, but you get the point.
As for me, my approach to testing is really, really simple: does product and/or service work the way we expect it to work?
Despite my simplistic approach, I'm also a big believer in testing. You absolutely, positively have to do it and do it well. Make sure, beyond any shadow of a doubt, that software works as expected before sharing it with your users. May I offer a somewhat related experience here? Granted, my experience consists of first-world problems. But if you can look past that, you'll see why this relates.
Last week, while I was out of town, the dishwasher began to act up. At the same, we were having some problems with a back flow regulator for the sprinkling system in our front yard. My wife called in a plumber for the dishwasher, who assured her he could handle the back flow regulator too. Killing two birds with one stone seemed pretty efficient, so she went with that. Said plumber was wrapping off just as I returned home from the trip.
A few hours after the plumber's departure, I fired up the dishwasher. Didn't work. Some relatively embarrassing language flew out of my mouth. And I hunkered down with the assistance of talented son Brian to fix the dishwasher. Long story made short, Mr. Plumber failed to turn on the water feed to the dishwasher after completing his work. In addition, Mr. Plumber failed to reset the electronic controls for the dishwasher after interrupting electrical power to the dishwasher (SIDE NOTE: each and every dishwasher in the US has the service manual in a plastic bag just behind the interior faceplate on the front door...including all the reset codes, of which there are usually three). The bottom line is that Mr. Plumber did not check his work or conduct any testing after completing his work.
Given the dishwasher fiasco, I immediately became curious about the back flow regulator. So I walked outside to turn on the watering system. Sure enough, water shooting straight up into the air. Mr. Plumber failed to open one of the plug valves in the regulator after completing his work. Painfully obvious he did not check his work.
After a rather vigorous three-party discussion between my credit card company, Mr. Plumber and me, you can rest assured that Mr. Plumber has not been paid, has lost a customer, and has really bad reviews on social media (including the Better Business Bureau) intended to save others from this experience and chip away at Mr. Plumber's business reputation.
Mr. Plumber expended time and materials, but did not get paid. In addition, Mr. Plumber lost a customer. Even worse, Mr. Plumber's reputation has taken serious damage. Why? Because Mr. Plumber failed to test. Don't be like Mr. Plumber. Make sure your product and/or service (enterprise software) works the way you expect it to work. Test - make sure it's right.