St. Onge Company Links Supply Chain Blog
Strengthening your supply chain one link at a time.
 

System Testing Methods

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:

  • Testing based on Requirements: Using all functional specifications as the foundation for tests to be conducted.
  • Testing based on Business Scenarios: Centering your testing efforts based on a business process perspective.

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.

Test Scripts

A test script is developed for each scenario. The skeleton of a test script has four principal components:

  • Summary of the scenario to be tested.
  • Prerequisites necessary to support the scenario.
  • Each step involved in the test case.
  • The expected results.

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.

  • Unit testing: Unit testing is usually performed by a developer, calling the different methods within each unit and validating when the required parameters are passed, the expected values are returned.
  • Smoke testing: Also called build verification testing, smoke testing is performed after each build is released to ensure stability.
  • Sanity testing: This testing ensures all major functionality works correctly. Sanity testing is is typically done after a smoke test.
  • Regression testing: When code is changed, enhanced or fixed, regression testing ensures the new code does not break existing functionality, still works as expected and does not cause any instability.
  • Beta / Usability testing: Beta testing (also called usability testing) is typically the first phase of testing where actual users are exposed to the system. Beta testing is often preceded by Alpha testing. The aim of Alpha testing is to identify as many issues as possible before releasing to the users for Beta testing.
  • User Acceptance Testing (UAT): This is the last phase of user testing, verifying the system meets the business requirements. UAT is complete once all features and functionality work as expected.
  • Integration tests: When a solution relies on multiple individual systems, validation of these components working together is called integration testing.
  • End-to-End testing: This testing includes both the functional and non-functional requirements. End-to-End testing is performed on a complete system.

FUNCTIONAL

Testing Types

NON-FUNCTIONAL

Testing Types

Unit Performance
Smoke Load
Sanity Stress
Regression Volume
Interface Security
Integration Compatibility
System Install
Alpha Recovery
Beta Reliability
Usability Usability
User Acceptance Compliance
End-to-End Localization

 
Non-Functional Testing

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
 
 

Enter your email to subscribe to "Links":
Loading