Paralysis by Analysis
The role of testing as an essential prerequisite to a successful system implementation is well known. Project teams often become paralyzed because of the many types of system testing methods and varied terminology for these testing techniques. Hopefully the thoughts below will help your team move forward by defining high-level software testing categories and detailing some common software testing types.
There are two popular methods of testing system functionality:
While either approach is valid, I recommend a business scenario approach as this is typically more relatable to operators who will ultimately participate in system testing and training.
A test script is developed for each scenario. The skeleton of a test script has four principal components:
Obviously, it would be very time-consuming, and therefore expensive – if not impossible, to document every possible combination and permutation as a test script. Rather, we need to strategize our approach to developing test scripts such that we are likely to uncover a maximum number of “bugs” within a reasonable amount of time and effort.
The expected results within a test script can be classified into two broad categories: Positive testing and Negative testing. Positive tests are happy-path scenarios to ensure the system meets the functional requirement. Negative tests ensure the application behaves properly, even when it is subject to unexpected data.
Functional Testing Types
There are many types of functional testing methods. Based on the project phase and specific scenario, multiple testing types will be deployed within a single system implementation. The listing below is a brief description of the most common testing types. Others will almost certainly use different definitions or processes, but I feel these basic concepts are more universal.
Typically, a client’s interest in testing naturally begins with functional testing – ensuring the system supports the documented requirements. However, once a system is put into actual use, there are chances for the solution to encounter issues related to performance. Although these issues are not related to the functionality of the system, the negative effect on users can be substantial.
Therefore, non-functional testing is conducted to verify non-functional aspects of the system – like application performance, response-time and security issues. Non-functional testing ensures the system is stable, secure, can handle high-volume usage conditions, and can recover from disaster scenarios.
So much of a successful system implementation depends upon complete and thorough testing. Hopefully this brief discussion has helped simplify what can sometimes be a complex and difficult landscape.
—Kail Plankey, St. Onge Company