# Diagnostic program

A diagnostic program (also known as a test mode) is an automatic computer program sequence that determines the operational status within the software, hardware, or any combination thereof in a component, a system, or a network of systems. Diagnostic programs ideally provide the user with guidance regarding any issues or problems found during its operation.
Diagnostics programs may be simple or complex, operating unknowingly within everyday devices or awaiting their invocation to make more complex performance assessments. Everyday examples are a microwave oven that displays code F6 to warn of a shorted temperature probe or a garage door opener that flashes its control board's LED four times warning of critically misaligned safety sensors and impending shutdown.
Diagnostic programs are also inserted into consumer electronic products and electronic games. Sometimes if the owner of an electronic device asks the manufacturer how to access the hidden diagnostic program, they may reply to the consumer saying that the information is considered to be "proprietary" and cannot be shared.

## History

Early diagnostics programs were procedural instructions performed by humans, not by computer programs. See Built-in test equipment that enabled system operators to perform testing and diagnostics.
As computers became smaller, more mobile, computer programs were used to perform diagnostics tasks. In the late 1960s, Volkswagen introduced the first on-board computer system with diagnostics provisions.

## Methods of operation

The diagnostics program for a device or system may be independently located or integrated within. These Methods of Operation are arranged, more-or-less, in order of increasing complexity and their increasing value of diagnostics information.
* Background monitoring of system indicators, for statistical analysis of trends, and for recording abnormal events.
* Solution-based diagnostics, that test for known failure modes by identifying if their known symptoms are detected.
* Black box, which is testing of a mechanism without knowing how it works, and merely focusing on the accuracy of output data based on a known input.
* White box, which uses knowledge of a mechanism's inner functions for direct testing.
* Operation-oriented, a combination of both black and white box, with one or more black-box operations interleaved with one or more white-box operations. This mode of testing is not preferred, however, some complex systems do not have the necessary interfaces to perform one or the other type independently.
* Integrated background diagnostics, that perform testing of system components during idle-time of a system.
* Operation-interleaved diagnostics, that incorporate diagnostics into the normal operation of a system component, thus any marginal operating mode is immediately diagnosed. Examples of hardware components with features that assist a diagnostic program are:
** Modern hard drives have Self-Monitoring, Analysis and Reporting Technology (SMART) commands that provide information about internal error conditions, e.g., spin retry counts, bad sector counts, etc.
** Some systems may use Error Correcting Code (ECC) memory that logs memory failure events that were automatically corrected.

## Architectures

* Single-purpose diagnostic, also referred to as "Defined-purpose" diagnostic, such as a program that validates the Windows DirectX configuration.
* Multi-purpose diagnostic, a monolithic program that performs multiple tasks that may or may not be suitable for all uses. This would be similar to a hammer that will perform well with nails, less so with screws, and poorly with nuts and bolts.
* Modular diagnostic, which combines sets of single-purpose diagnostics, Lego-like, into an environment easily tailored to particular industry requirements. Key to its design is its reusable hardware and software operating system that performs all of its diagnostics programs. Application examples are:
** manufacturing testing with an emphasis on checking assembly-related issues and optimizing for time
** end-user targeted diagnostics, with an easy to comprehend non-technical presentation, and an emphasis on solutions
** service/warranty testing, focusing on identifying a failed or marginal field-replaceable unit (FRU)
** refurbishing centric, which attempts to determine if a system can be resold or reused, with an emphasis on depth of testing, at a cost to time spent testing
* Knowledge-Driven diagnostic system (such as a technician or diagnostician) where the knowledge acquired over time is used as a "mental model" of the system's operation and informs the diagnostic system through logical reasoning to one or more possible or likely causes for a situation to exist.

## Example diagnostics program applications

* A BIOS embedded or UEFI embedded Power-on self-test (POST) program that performs a basic check of the system's hardware components before commencing normal operation
* A BIOS embedded or UEFI embedded hardware diagnostic program in OEM PCs
* Diagnostics that are run on-demand when a user needs assistance, typically within the primary operating system of the computer (e.g.Windows)
* "Off-line diagnostics" that are run outside the primary operating system, typically to reduce the masking influence of software on hardware issues
* Household refrigerators that display diagnostics of their internal temperature, ice machine functionality, etc.
* The 1996 Onboard Diagnostics II system (OBD II) that standardized the diagnostics port across all models of cars and light trucks allowing vehicle owners and repair technicians access to the vehicle's error code and emissions history.
* Personal computer users have diagnostics options from both software and hardware sources, e.g., Hewlett-Packard's (HP's) diagnostics guide for confirming hardware failures.
* Industrial production test equipment that diagnoses electronic devices or systems.
* When an electronic device such as a Bop It says its version number such as "one point three six" and starts playing through a set of sounds one after the other.