Software Testing for Validation and Verification
People sometimes use the words verification and validation interchangeably (and often abbreviate them to V&V). While both techniques can help you avoid Errors and Omissions lawsuits, there are key differences between them.
Here's a basic explanation:
- Validation is the process of making sure software satisfies a client's requirements. This can include testing for and reviewing the specifications in your contract. Validation makes sure you deliver the exact product your client
- Verification, on the other hand, is how you test that your program works well and doesn't have any major defects. Verification can include walkthroughs, quality control, and other usability testing.
Case in Point: HealthCare.gov's V&V Problems
The New York Times recently published a history of the troubled HealthCare.gov launch.
The article notes that the website's problems were primarily caused by two things: insufficient testing and coordination problems between contractors and vendors.
In part because of rushed deadlines and poor communication, IT contractors made validation errors and failed to deliver the product specified in their contract. For example, the website was supposed to be able to handle 50,000 users,
but crashed with as few as 500.
By failing to build a website that met the client specifications, the programmers failed to fulfill their validation requirements.
The rush to finish the website led to insufficient software testing, which meant there were also a number of usability and verification issues. For instance, sloppy code and other problems made the website much slower than it should have
been. During the initial rollout, some pages took more than eight seconds to load; now, after fixing the code, they take less than a second.
HealthCare.gov's problems illustrate how intricately validation and verification testing are connected. If software doesn't deliver a client's requirements (i.e., fails validation and doesn't function properly), you
can't perform sufficient verification tests to improve usability.
Rush Jobs: Dealing with Client Expectations
Most IT professionals face demands for speedy work at least once in their career. Your client wants the task completed within an unreasonable timeframe; if you agree to their deadline, you'll have to cut corners somewhere. You're in a difficult
situation: you don't want to tell your client you can't meet their demands (which looks bad for your business), but at the same time you can't risk delivering subpar work.
Remember that IT is a service industry in addition to being a technical one. You need to maintain strong client relationships, and the best way to do this is by being honest, managing expectations, and delivering a fully functioning product – not
one you'll have to debug later.
Next: Risk Management through Client Education