#### 7.4 Adequacy Criteria Based on Data Flow

To be able to construct test adequacy criteria based on sets **dpu **and **dcu, **we first define some notions related to coverage. In the definitions below we assume that the data flow graph of *P *contains *k *nodes where nodes *n*_{1} and *n*_{k} represent the start and end nodes, respectively. Some node *s *in the data flow graph of program *P *is considered covered by test case *t *when the following complete path is traversed upon the execution of *P *against *t*,

(*n*_{i}_{1} ,* n*_{i}_{2 },* . . . , n*_{im−}_{1}* , n*_{im})

and *s = n*_{ij} for some 1 ≤ *j *≤ *m *and *m *≤* k*, i.e. node *s *lies on the path traversed. Similarly, an edge (*r*, *s*) in the data flow graph of *P *is considered covered by *t *upon the execution of *P *against *t*, when the path listed above is traversed ...