Functional Testing for Industrial Control Systems
Functional testing is an essential part of the process of developing trust in safety-critical control systems. A typical life cycle for a control system begins with a functional specification, which defines the system functionality. An important step in the design-to-commissioning process is the on-line functional testing that typically precedes release for operation. The functional testing is usually the last step in verifying operation and validating the design of the control system with respect to the functional description. Functional testing can often be the last chance to catch costly mistakes that may result from a system performing in unexpected ways. Many aspects of functional testing need careful consideration, including identifying hazards that the system is to guard against, developing tests to validate the control system response to the potential hazards, and performing the functional tests. This paper includes several case studies that highlight incidents where the functional testing has caught flaws in the control system that could have lead to catastrophic failures. Additional case studies where functional tests were not completed and catastrophic failures did occur are discussed and the lack of functional testing in those cases is examined. A simple methodology for selecting control loops that may benefit from functional testing is presented and useful guidance documents are identified.