With the ever increasing demands of the economy and to show a good return on investment, companies are continually looking for ways to cut back on spending. Unfortunately, one area that can easily end up being targeted for cost reduction is testing. Testing can come in all shapes and sizes and can occur at various stages of the development. For the purpose of this discussion I will attempt to limit the topic to testing of newly updated product software, including some basic testing concepts.
Since the appropriate amount of testing is often viewed as an expensive luxury rather than an integral requirement, it is all too often tacked on at the tail end of a project instead of incorporated into the initial design of the project. The integration of testing steps along the life cycle of a product development is really the best way to ensure a reliable product, one that is ready to meet the customer’s needs. If possible, having these tests set up in such a way they can be fully automated and be run and re-run on demand is the best way to test efficiently and effectively. Developing a product where regular testing is part of the design process can greatly improve the success of a project.
The basic forms of testing can be described as unit, system, and some sort of acceptance testing. Regardless of the testing method used, it is important to remember in this high tech world that each and every individual piece or component of a product must be operating at its fullest to ensure optimum system performance. This includes everything from the internal mechanical components to the software controlling the product. Everything must work as designed and specified by the customer to be a successful product.
Let’s get to the basics of testing. In a world where software is “running/controlling” mechanical components, the importance of software testing cannot be underestimated. Throughout my testing experience I have been taught some core concepts (or rules) when performing or incorporating tests. These concepts can act as objectives when approaching the topic of testing. First and foremost, testing is a way of executing some sort of a process with the aim and intent of finding errors. Yes, you read that right; a good testing process will find errors. Even the best of designs have a difficult time accounting for all of the variables that come into play after the entire product has been assembled. Variations in, not only the individual components, but the manufacturing process as well, can produce any number of undesirable and unwanted results. It is important to test and screen out all of the unwanted variability in a product.
A well thought out test process or test case(s) will have a good chance of finding an undiscovered error or some new error that a designer never thought could occur. Engineers and design teams typically try to “pre think” all the possible things that can go wrong with a new product. But, the reality of the situation is, they can’t always predict all of the possible errors or defects that can occur within a product. Numerous factors can come into play here. For example, there can be variations in very basic things that can cause great amounts of grief for those involved with the product. Simple changes in the environment, either during the manufacturing process or during testing itself can cause unforeseen events to occur. Even temperature or humidity changes can become huge factors. It is important to consider all the factors when designing tests, including all the tests requested by the customer and tests related to the environment and possible operating conditions.
Start testing as early as possible in the product development process. This early testing can be implemented not only during the design phase, for example unit testing; but it can also be implemented in the manufacturing process as well. The sooner a problem is detected the sooner it can be corrected. In the design phase of a product, if defects are detected early enough they could possibly be designed out of the product. Early detection in a manufacturing process is extremely critical. The further a product goes down an assembly line, the more costly the product becomes and the more difficult it becomes to correct the problem. Early detection can minimize the headaches for all those involved with a product.
It is very important, as testing phases are being designed into a product’s development, to allow for time after each testing phase to correct any defect(s) that may have been discovered. Testing and finding a defect that causes a missed deadline for a product release can be a disaster. The best way to avoid or minimize a situation like this is to preplan and include extra time in the product timeline for testing, correction of issues, and then another testing phase. It is not possible to always predict when an issue or defect will occur in a product, but having a cushion of time built into a process can be very beneficial if a problem occurs.
It can easily be argued that the most important thing a good testing process does is to find the issues and defects before the product reaches the end user. No customer wants to deal with a product that does not function as intended. Regardless if the defect is a little one that only causes a minor annoyance or a major one that causes some huge safety concern, once a product gets a bad name for itself it is difficult to recover. A worst case scenario that can occur to a faulty product is sales of that product can drop. Once something like that happens, it can have a negative impact on everyone involved.
The topic of testing is an extremely broad topic. A discussion of the testing topic can easily range anywhere from its basic testing philosophies all the way to its value and importance to a product. A couple key points to take away from this message is to not only understand the value of testing but the importance of how and when to perform the testing on the product. The products that are poised to be the most successful are ones where the designers fully understand and accept the importance of proper testing. They also integrate the right amount of testing into the product’s development from its original conception. As a parting thought, I would like to end with a phrase that I remembered from my production support days. It went something like this: “You can’t test quality into a product. You can however design a quality product and then screen out the bad product through proper testing.”