HOME

TheInfoList



OR:

Elementary comparison testing (ECT) is a white-box,
control-flow In computer science, control flow (or flow of control) is the order in which individual statements, instructions or function calls of an imperative program are executed or evaluated. The emphasis on explicit control flow distinguishes an ''imp ...
, test-design methodology used in
software development Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components. Software development invol ...
.Lee Copeland (2004). ''A Practitioners Guide to Software Test Design'', chapter 10. Artech House Publishers, Norwood. . The purpose of ECT is to enable detailed testing of complex software. Software code or
pseudocode In computer science, pseudocode is a plain language description of the steps in an algorithm or another system. Pseudocode often uses structural conventions of a normal programming language, but is intended for human reading rather than machine re ...
is tested to assess the proper handling of all decision outcomes. As with multiple-condition coverage and basis path testing, coverage of all independent and isolated conditions is accomplished through modified condition/decision coverage (MC/DC).Tim Kroom (2006). ''TMap Next, for result driven testing'', p. 668. UTN Publishers, Rotterdam. . Isolated conditions are aggregated into connected situations creating formal
test case In software engineering, a test case is a specification of the inputs, execution conditions, testing procedure, and expected results that define a single test to be executed to achieve a particular software testing objective, such as to exercise ...
s. The independence of a condition is shown by changing the condition value in isolation. Each relevant condition value is covered by
test case In software engineering, a test case is a specification of the inputs, execution conditions, testing procedure, and expected results that define a single test to be executed to achieve a particular software testing objective, such as to exercise ...
s.


Test case

A
test case In software engineering, a test case is a specification of the inputs, execution conditions, testing procedure, and expected results that define a single test to be executed to achieve a particular software testing objective, such as to exercise ...
consists of a logical path through one or many decisions from start to end of a process. Contradictory situations are deduced from the test case matrix and excluded. The MC/DC approach isolates every condition, neglecting all possible subpath combinations and path coverage. T=n+1 where * ''T'' is the number of test cases per decision and * ''n'' the number of conditions. The decision d_i consists of a combination of elementary conditions \begin \Sigma &= \\\ C&=\ \end \epsilon : C \to \Sigma \times C D \subseteq C^* \,;\; d_i \in D The transition function \alpha is defined as \alpha : D \times \Sigma^* \to \Sigma \times D Given the transition \vdash \vdash \subseteq (\Sigma \times D \times \Sigma^*) \times (\Sigma \times D \times \Sigma^*) S_j=(b_j, d_m, v_j) \vdash (b_, d_n, v_) E_j=(a_j, c_j) \vdash (a_, c_k) (b_, d_n) = \alpha(d_m, v_j); (b_, c_k) = \epsilon(c_j); a_j \in \Sigma, the isolated test path P_m consists of \begin P_m &= (b_0, d_0, v_0) \vdash ... \vdash (b_i, d_i, v_i) \vdash^*(b_n, d_n, v_n) \\ &= (b_0, c_0) \vdash ... \vdash (b_m, c_m) \vdash^* (b_n, c_n) \end b_i \in \Sigma; c_m \in d_i; v \in C^*; d_0=S; d_n=E.


Test case graph

A test case graph illustrates all the necessary independent paths (test cases) to cover all isolated conditions. Conditions are represented by nodes, and condition values (situations) by edges. An edge addresses all program situations. Each situation is connected to one preceding and successive condition. Test cases might overlap due to isolated conditions.


Inductive proof of a number of condition paths

The elementary comparison testing method can be used to determine the number of condition paths by inductive proof. There are r = 2^n possible condition value combinations \forall \in \,\ c_i\mapsto\. When each condition c_i is isolated, the number of required test cases T per decision is: T = \log_2(r)+1 = n + 1. \forall\in\ there are 0 edges from parent nodes c_i and s = 2 edges to child nodes from c_i. Each individual condition c_i connects to at least one path \forall\in\ , \ c_i\mapsto\ from the maximal possible n connecting to c_n isolating c_n. All predecessor conditions c_i;\ i and respective paths are isolated. Therefore, when one node (condition) is added, the total number of paths, and required test cases, from start to finish increases by: T = n-1+2 = n+1. Q.E.D.


Test-case design steps

# Identify decisions # Determine test situations per decision point ( Modified Condition / Decision Coverage) # Create logical test-case matrix # Create physical test-case matrix


Example

This example shows ETC applied to a holiday booking system. The discount system offers reduced-price vacations. The offered discounts are -20\% for members or for expensive vacations, -10\% for moderate vacations with workday departures, and 0\% otherwise. The example shows the creation of logical and physical test cases for all isolated conditions. Pseudocode if days > 15 or price > 1000 or member then return −0.2 else if (days > 8 and days ≤ 15 or price ≥ 500 and price ≤ 1000) and workday then return −0.1 else return 0.0 Factors * Number of days: <8;\ 8-15;\ >15 * Price (euros): <500;\ 500-1000;\ >1000 * Membership card: none; silver; gold; platinum * Departure date: workday; weekend; holiday T = 3 \times 3 \times 4 \times 3 = 108 possible combinations (test cases). Example in
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (pro ...
: if days > 15 or price > 1000 or member: return -0.2 elif (days > 8 and days <= 15 or price >= 500 and price <= 1000) and workday: return -0.1 else: return 0.0


Step 1: Decisions

\begin d_1 &= \text > 15\ \text\ \text > 1000\ \text\ \text\ \text \\ c_1 &= \text > 15 \\ c_2 &= \text > 1000 \\ c_3 &= \text \\ \end \begin d_2 &= (8 < \text < 15\ \text\ 500 < \text < 1000\ \text)\ \text\ \text \\ c_4 &= 8 < \text < 15 \\ c_5 &= 500 < \text < 1000\ \text\\ c_6 &= \text \\ \end


Step 2: MC/DC Matrix

The highlighted diagonals in the MC/DC Matrix are describing the isolated conditions: (c_i,c_i) \mapsto \ all duplicate situations are regarded as proven and removed.


Step 3: Logical test-Case matrix

Test cases are formed by tracing decision paths. For every decision d_i;\ 0 < i < n+1 a succeeding and preceding subpath is searched until every connected path has a start S and an end E: \begin T_1&=(d_1, 100) \vdash (1, E) \\ T_2&=(d_1, 000) \vdash (0, d_2, 100) \vdash (1, E) \\ T_3&=(d_1, 010) \vdash (1, E) \\ \vdots \\ T_ \end


Step 4: Physical test-case matrix

Physical test cases are created from logical test cases by filling in actual value representations and their respective results.


Test-case graph

In the example test case graph, all test cases and their isolated conditions are marked by colors, and the remaining paths are implicitly passed.


See also

* {{slink, Code coverage#Multiple condition coverage *
Control-flow graph In computer science, a control-flow graph (CFG) is a representation, using graph notation, of all paths that might be traversed through a program during its execution. The control-flow graph was discovered by Frances E. Allen, who noted that ...
*
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 ...


References

Articles with example pseudocode Software testing