###### tags: `Praktikum`
# 3. Äquivalenzklassen und Grenzwerte
## Aufgabe 1.1
Betrachten Sie die Methode Color G (int x, int y) mit den Vorbedingungen.
Dabei ist Color = {RED, YELLOW, GREEN}
Für x und y gelten folgende Vorbedingungen:
- V1: -20 <= x < 117
- V2: -1 <= y <= 100
Die funktionale Spezifikation für G besagt, dass die Methode
- den Wert RED liefern soll, wenn x < 0 und y < 0 ist,
- den Wert GREEN falls x >= 100 und y > 10 ist
- und in allen anderen Fällen YELLOW.
a) Bestimmen Sie die Äquivalenzklassen dieser Methode als abstrakte Testfälle in folgender Tabelle und unterscheiden Sie zwischen gültigen und ungültigen Äquivalenzklassen

| Äquivalenzklasse ID | Def x ÄQ | Def y ÄQ |
| ------------------- | -------------- | ------------- |
| Äq 1 | -20 <= x < 0 | y = -1 |
| Äq 2 | 0 <= x < 100 | y = -1 |
| Äq 3 | 100 <= x < 117 | y = -1 |
| Äq 4 | -20 <= x < 0 | 0 <= y <= 10 |
| Äq 5 | 0 <= x < 100 | 0 <= y <= 10 |
| Äq 6 | 100 <= x < 117 | 0 <= y <= 10 |
| Äq 7 | -20 <= x < 0 | 10 < y <= 100 |
| Äq 8 | 0 <= x < 100 | 10 < y <= 100 |
| Äq 9 | 100 <= x < 117 | 10 < y <= 100 |
| UÄq1 | x < -20 | y < -1 |
| UÄq2 | -20 <= x < 0 | y < -1 |
| UÄq3 | 0 <= x < 100 | y < -1 |
| UÄq4 | 100 <= x < 117 | y < -1 |
| UÄq5 | x >=117 | y < -1 |
| UÄq6 | x < -20 | y = -1 |
| UÄq7 | x >= 117 | y = -1 |
| UÄq8 | x < -20 | 0 <= y <= 10 |
| UÄq9 | x >= 117 | 0 <= y <= 10 |
| UÄq10 | x < -20 | 10 < y <= 100 |
| UÄq11 | x >= 117 | 10 < y <= 100 |
| UÄq12 | x < -20 | y > 100 |
| UÄq13 | -20 <= x < 0 | y > 100 |
| UÄq14 | 0 <= x < 100 | y > 100 |
| UÄq15 | 100 <= x < 117 | y > 100 |
| UÄq16 | x >= 117 | y > 100 |
b) Geben Sie für jede gültige Äquivalenzklasse einen Repräsentanten als konkreten Testfall an sowie den erwarteten Sollwert
| Äq ID | Äq1 | Äq2 | Äq3 | Äq4 | Äq5 | Äq6 | Äq7 | Äq8 | Äq9 |
| -------- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Rep x | -10 | 50 | 110 | -10 | 50 | 110 | -10 | 50 | 110 |
| Rep y | -1 | -1 | -1 | 5 | 5 | 5 | 50 | 50 | 50 |
| Sollwert | R | Y | Y | Y | Y | Y | Y | Y | G |
c) Prüfen Sie Ihre Vorschläge unter b) durch entsprechende Tests in der Testumgebung; halten Sie die Coverage fest. Falls notwendig ergänzen Sie Ihre Tests durch weitere Testfäll – u.U. auch für ungültige Äquivalenzklassen - und stellen Sie die Ergebnisse mit 100%igen Überdeckung der Äquivalenzklassen vor.
## Aufgabe 1.2
Betrachten Sie die Methode Color F (int x, int y, boolean b)
Dabei ist Color = {RED, YELLOW, GREEN)
Für x und y gelten folgende Vorbedingungen
- V1: x soll echt zwischen 1 und 17 liegen
- V2: y soll zwischen -2 und 2 liegen
Die funktionale Spezifikation für F besagt, dass die Methode
- den Wert RED liefern soll, wenn x < 10, y > 0 und b== true ist,
- den Wert GREEN falls x >= 10 und b == false ist
- und in allen anderen Fällen YELLOW.
a) Entwickeln Sie Äquivalenzklassentests für die Eingabeschnittstelle von Funktion F.
Zahlenstrang
x: [intMin ... **1][...][10 ... ][17**...int_max]
y: [intMin ...]**[-2...0][ ... 2]**[...int_max]
b: [true][false]
| Äquivalenzklasse ID | Def x ÄQ | Def y ÄQ | Def b Äq |
| ------------------- | ------------ | ------------ | -------- |
| Äq 1 | 1 < x < 10 | -2 <= y <= 0 | true |
| Äq 2 | 1 < x < 10 | -2 <= y <= 0 | false |
| Äq 3 | 1 < x < 10 | 0 < y <=2 | true |
| Äq 4 | 1 < x < 10 | 0 < y <=2 | false |
| Äq 5 | 10 <= x < 17 | -2 <= y <= 0 | true |
| Äq 6 | 10 <= x < 17 | -2 <= y <= 0 | false |
| Äq 7 | 10 <= x < 17 | 0 < y <=2 | true |
| Äq 8 | 10 <= x < 17 | 0 < y <=2 | false |
| ------------------- | ------------ | ------------ | -------- |
| uÄq 1 | x <= 1 | y < -2 | true |
| uÄq 2 | x <= 1 | y < -2 | false |
| uÄq 3 | x <= 1 | -2 <= y <= 0 | true |
| uÄq 4 | x <= 1 | -2 <= y <= 0 | false |
| uÄq 5 | x <= 1 | 0 < y <=2 | true |
| uÄq 6 | x <= 1 | 0 < y <=2 | false |
| uÄq 7 | x <= 1 | y > 2 | true |
| uÄq 8 | x <= 1 | y > 2 | false |
| ------------------- | ------------ | ------------ | -------- |
| uÄq 9 | 1 < x < 10 | y < -2 | true |
| uÄq 10 | 1 < x < 10 | y < -2 | false |
| uÄq 11 | 10 <= x < 17 | y < -2 | true |
| uÄq 12 | 10 <= x < 17 | y < -2 | false |
| uÄq 13 | 1 < x < 10 | y > 2 | true |
| uÄq 14 | 1 < x < 10 | y > 2 | false |
| uÄq 15 | 10 <= x < 17 | y > 2 | true |
| uÄq 16 | 10 <= x < 17 | y > 2 | false |
| ------------------- | ------------ | ------------ | -------- |
| uÄq 17 | x < 17 | y < -2 | true |
| uÄq 18 | x < 17 | y < -2 | false |
| uÄq 19 | x < 17 | -2 <= y <= 0 | true |
| uÄq 20 | x < 17 | -2 <= y <= 0 | false |
| uÄq 21 | x < 17 | 0 < y <=2 | true |
| uÄq 22 | x < 17 | 0 < y <=2 | false |
| uÄq 23 | x < 17 | y > 2 | true |
| uÄq 24 | x < 17 | y > 2 | false |
#### Es gibt insgesammt 32 ÄQ (ungültige + gültige)
Formel x -> 4 Moglichkeiten (2 ungültige und 2 gültige Bereiche)
Formel y -> 4 Moglichkeiten (2 ungültige und 2 gültige Bereiche)
b = 2 gültige Möglichkeiten (true und false)
#### Summe aller Möglichkeiten = x * y * b = 4 * 4 * 2 -> 32
#### Zur Erstellung ->
1. Äquivalenzklassen (Äq)
Gültige Bereiche via kartesisches Produkt abbilden
2. ungültige Äquivalenzklassen (uÄq)
1. alle beiden ungültigen Bereiche via kartesisches Produkt abbilden.
2. alle ungültigen mit gültigen Bereichen via kartesisches Produkt abbilden
b) Prüfen Sie Ihre Vorschläge unter a) durch entsprechende Tests in der Testumgebung; halten Sie die Coverage fest. Falls notwendig ergänzen Sie Ihre Tests durch weitere Testfälle – u.U. auch für ungültige Äquivalenzklassen - und stellen Sie die Ergebnisse mit 100%igen Überdeckung der Äquivalenzklassen vor.