# Modified Condition Decision Coverage

Modified Condition / Decision Coverage (MCDC), is een softwaretesttechniek waarbij met relatief weinig moeite veel getest wordt.

## Definitie volgens TMap

Volgens TMap (Test Management Approach) garandeert MCDC dat elke mogelijke uitkomst van een CONDITIE minimaal één keer bepalend is geweest voor de uitkomst van de BESLISSING.
Belangrijk hierbij is het begrip bepalend. Als een beslissing bestaat uit de condities A, B en C, dan is volgens MCDC:
ten aanzien van conditie A
* Er is minstens één testsituatie waarbij de uitkomst van de beslissing WAAR is als conditie A WAAR is
* Er is minstens één testsituatie waarbij de uitkomst van de beslissing ONWAAR is als conditie A ONWAAR is
ten aanzien van conditie B
* Er is minstens één testsituatie waarbij de uitkomst van de beslissing WAAR is als conditie B WAAR is
* Er is minstens één testsituatie waarbij de uitkomst van de beslissing ONWAAR is als conditie B ONWAAR is
ten aanzien van conditie C:
* Er is minstens één testsituatie waarbij de uitkomst van de beslissing WAAR is als conditie C WAAR is
* Er is minstens één testsituatie waarbij de uitkomst van de beslissing ONWAAR is als conditie C ONWAAR is
Hieruit vloeit voort dat als een bepalende conditie wordt getest, de andere condities een waarde moeten hebben die geen invloed heeft op de uitkomst van de beslissing. Deze waarde noemen we de 'neutrale waarde'. Samengevat:
* Neutrale waarde bij EN-situatie = WAAR (1)
* Neutrale waarde bij OF-situatie = ONWAAR (0)
Deze dekkingsvorm is zeer efficiënt, omdat bij een beslissing dat uit N condities bestaat N+1 testsituaties nodig zijn.

## 6-Stappenplan

Er zijn verschillende manieren om de benodigde testsituaties af te leiden. Het 6-stappenplan is een vrij eenvoudige techniek omdat deze direct aansluit op de definitie van MCDC. Via onderstaand voorbeeld zal het 6-stappenplan worden toegelicht. Het product van een 6-stappenplan wordt een waarheidstabel genoemd.
Voorbeeld: Een medewerker kan worden aangenomen als deze of "de juiste opleiding heeft" of "sympathiek is". Daarnaast moet hij in beide gevallen "goede ervaring hebben". In formule wordt dat: R = (A OF B) EN C. 1 staat voor "aangenomen" 0 staat voor "afgewezen"
* Stap 1 Maak een tabel met drie kolommen
| (A OF B) en C | 1 | 0 |
* Stap 2 Voeg één rij toe voor iedere conditie in de beslissing.
* (A OF B) en C
* A: juiste opleiding
* B: sympathiek
* C: goede ervaring
* Stap 3 Vul de cellen in kolommen 1 en 0 met aantal puntjes gelijk aan aantal condities in beslissing.
| (A OF B) en C | 1 | 0 |
| A: juiste opleiding | (. .) . | (. .) . |
| B: sympathiek | (. .) . | (. .) . |
| C: goede ervaring | (. .) . | (. .) . |
* Stap 4 Vul de cellen in kolom 1 diagonaal in met 1 en de cellen in kolom 0 met 0 .
| (A OF B) en C | 1 | 0 |
| A: juiste opleiding | (1 .) . | (0 .) . |
| B: sympathiek | (. 1) . | (. 0) . |
| C: goede ervaring | (. .) 1 | (. .) 0 |
* Stap 5 Vul op de overgebleven puntjes in de cellen in kolommen 1 en 0 met een neutrale waarde in.
| (A OF B) en C | 1 | 0 |
| A: juiste opleiding | (1 0) 1 | (0 0) 1 |
| B: sympathiek | (0 1) 1 | (0 0) 1 |
| C: goede ervaring | (1 0) 1 | (1 0) 0 |
Opmerking: Bij de laatste rij (Conditie C) kan opgemerkt worden dat er ook gekozen had kunnen worden voor (0 1). Dit treedt altijd op als een deelbeslissing tussen haakjes voorkomt. Deze deelbeslissing moet tezamen de neutrale waarde van EN vormen.
* Stap 6 Streep dubbele voorkomens van testsituaties weg.
| (A OF B) en C | 1 | 0 |
| A: juiste opleiding | (1 0) 1 | (0 0) 1 |
| B: sympathiek | (0 1) 1 | (0 0) 1 |
| C: goede ervaring | (1 0) 1 | 1 0 0 |

## Fysieke uitwerking

Een waarheidstabel is niet echt leesbaar, daarom moet een vertaalslag worden gemaakt naar testsituaties.
| Testsituatie | 1 0 1 | 0 1 1 | 0 0 1 | 1 0 0 |
| juiste opleiding | ja | nee | nee | ja |
| sympathiek | nee | ja | nee | nee |
| goede ervaring | ja | ja | ja | nee |
| Resultaat | aangenomen | aangenomen | afgewezen | afgewezen |