Decision-to-decision path

A decision-to-decision path, or DD-path, is a path of execution (usually through a flow graph representing a program, such as a flow chart) between two decisions. More recent versions of the concept also include the decisions themselves in their own DD-paths.

Definition
In Huang's 1975 paper, a decision-to-decision path is defined as path in a program's flowchart such that all the following hold (quoting from the paper):
 * its first constituent edge emanates either from an entry node or a decision box;
 * its last constituent edge terminates either at a decision box or at an exit node; and
 * there are no decision boxes on the path except those at both ends

Jorgensen's more recent textbooks restate it in terms of a program's flow graph (called a "program graph" in that textbook). First define some preliminary notions: chain and a maximal chain. A chain is defined as a path in which: A maximal chain is a chain that is not part of a bigger chain.
 * initial and terminal nodes are distinct, and
 * all interior nodes have in-degree = 1 and out-degree = 1.

A DD-path is a set of nodes in a program graph such that one of the following holds (quoting and keeping Jorgensen's numbering, with comments added in parentheses):
 * 1) It consists of a single node with in-degree = 0 (initial node)
 * 2) It consists of a single node with out-degree = 0 (terminal node)
 * 3) It consists of a single node with in-degree ≥ 2 or out-degree ≥ 2 (decision/merge points)
 * 4) It consists of a single node with in-degree = 1 and out-degree = 1
 * 5) It is a maximal chain of length ≥ 1.

According to Jorgensen (2013), in Great Britain and ISTQB literature, the same notion is called linear code sequence and jump (LCSAJ).

Properties
From the latter definition (of Jorgensen) we can conclude the following:
 * Every node on a flow graph of a program belongs to one DD-path.
 * If the first node on a DD-path is traversed, then all other nodes on that path will also be traversed.
 * The DD path graph is used to find independent path for testing.
 * Every statement in the program has been executed at least once.

DD-path testing
According to Jorgensen's 2013 textbook, DD-path testing is the best known code-based testing method, incorporated in numerous commercial tools.

DD-path testing is also called C2 testing or branch coverage.