“Now the headlights they was another sight
We had two on the left and one on the right
But when we pulled out the switch all three of ‘em come on.”
– Johnny Cash
“One Piece at a Time”
Many years ago, Johnny Cash sang a song called “One Piece at a Time”, in which he describes an automobile assembly plant worker stealing parts and pieces of various automobiles and assembling them into a very distinctive, one-of-a-kind car.
Given the nature of software, the essence of which is some form of code, building software is somewhat like putting that car together. Technology evolves over time, operating systems change, and new tools all contribute to the complex process of building an application. Code is pieced together in files and modules, and the output of the code in the form of log files and/or visual display on a monitor are the effects of the code. When building an engine, putting on the heads and bolting up the crankshaft before attaching the pistons and connecting rods isn’t recommended. Similarly, software designers aren’t always able to see all the parts until there is a basic framework constructed, and limitations of the system come to light. Re-designing components and restructuring development schedules are not uncommon.
So the designers and developers have their hands full fitting the code they build into an already crowded system, with varying degrees of information about the components of the system with which they’ll be interacting. This is a case where more eyes on the process can help with an end product that is both user-friendly and deployment-friendly. And this is where quality assurance (QA) and testing can help.
There are lots of theories on both QA and testing, including getting the right mixture of structured manual testing, ad hoc testing and automated testing. Almost all testing environments now use a mixture because no one strategy can promise 100% coverage. And, in fact, testing is as much a hoping and wishing art form as it is a science; the reason being that human beings – read that as ‘users’ – tend to do things that leave developers and QA people shaking their heads in wonderment.
That is the main reason we in QA really appreciate all the helpful testing and feedback the deployment teams and end users provide.
Quality Assurance Test Engineer