I’m currently working on a product with a customer that is more than just software. The product has a significant hardware aspect to the delivery in addition to the software component. The product in question is a self service kiosk which run as a .Net application, linked to a Java framework which drives a number of hardware peripherals (printers, card dispensers, touch screens, etc). Whilst I’ve been responsible for overseeing the software quality for this product I learnt a valuable lesson in ‘holistic’ testing. Well to say I learnt a lesson is probably an understatement. Rather I was completely humiliated whilst attending the commissioning of this product in front of our customer.
To put this in context we’ve spent 6 months working on the software component of this product and I have to say I’m pleased with the quality of the completed software. We’ve completed system testing, integration testing and user acceptance testing. We’ve run in to the usual issues associated with completing such a process and managed issue lists in conjunction with the customer to good effect. Yes we have a number of minor issues outstanding following the completion of our software testing. These issues have been prioritised and a plan put together to resolve them. So from the software perspective we feel like we are in control and have a stable product that meets the requirements set out by the customers.
So why was the commissioning such a humiliating experience. Well with the client standing over my shoulder as we commissioned these kiosks, I found myself coming up with excuse after excuses for deficiencies in the hardware aspects of the product. Embarrassing issues like the power supply tripping out and paper receipts not dispensing correctly. Really fundamental hardware flaws that should have been picked up well before the units left the factory floor.
It did not matter one bit how well the software worked. The whole products quality came into question because of a few stupid hardware design flaws that should have been resolved in the factory. It didn’t matter that we’d got a great development/test team, followed well defined software testing processes and managed the software issues effectively. The fact was that the customer was only interested in the quality of the overall product. Rightly so!
So if I learnt one lesson in this it was that even if my remit only encompassed the software aspects there is a responsibility on everyone in the whole team to work towards improving the quality of the whole product. There is a responsibility on the whole team to ensure the quality assurance process for the whole product delivers the quality the customer demands for the whole product.
How are we going to improve this in for future releases? Well we’ll apply the same rigorous process and resources to the hardware factory acceptance test process that we apply to the software testing. The goal being to catch hardware issues as well as software issues before the product even leaves the factory floor. A worthy goal but still a significant amount of effort to implement before we start to avoid other humiliating experiences during the commissioning processes.
