update
This commit is contained in:
parent
ebda081a27
commit
4b3fdb97a3
BIN
Writerside/images/image_609.png
Normal file
BIN
Writerside/images/image_609.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
BIN
Writerside/images/image_610.png
Normal file
BIN
Writerside/images/image_610.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 61 KiB |
@ -235,7 +235,8 @@
|
|||||||
## Klassifikation von Netzwerken
|
## Klassifikation von Netzwerken
|
||||||
### Nach Entfernung / Distanz
|
### Nach Entfernung / Distanz
|
||||||

|

|
||||||

|
> Schadet nicht je ein Beispiel zu kennen, evtl. Klausur
|
||||||
|
> 
|
||||||
|
|
||||||
### Leitungs- / Paketvermittelt
|
### Leitungs- / Paketvermittelt
|
||||||
- Leitungsvermittelt
|
- Leitungsvermittelt
|
||||||
|
@ -282,7 +282,7 @@
|
|||||||
- Gleiche Tests, aber Store wird mit test-doubles ersetzt
|
- Gleiche Tests, aber Store wird mit test-doubles ersetzt
|
||||||
- "fake dependency" = "Mock"
|
- "fake dependency" = "Mock"
|
||||||
|
|
||||||
- AAA Sequenz
|
- AAA Sequenz {id="aaa-sequenz"}
|
||||||
- Arrange:
|
- Arrange:
|
||||||
- Store nicht modifizieren, stattdessen festlegen, wie er auf `hasEnoughInventory()` reagieren soll
|
- Store nicht modifizieren, stattdessen festlegen, wie er auf `hasEnoughInventory()` reagieren soll
|
||||||
- Act
|
- Act
|
||||||
@ -306,5 +306,71 @@
|
|||||||
- Alternative: Give-When-Then Pattern
|
- Alternative: Give-When-Then Pattern
|
||||||
- Einziger Unterschied: besser lesbar für nicht-Programmierer
|
- Einziger Unterschied: besser lesbar für nicht-Programmierer
|
||||||
|
|
||||||
- **Zu vermeidende Dinge:**
|
##### Zu vermeidende Dinge
|
||||||
-
|
- Manchmal benutzt ein Test **mehrere AAA Steps**
|
||||||
|
- bspw: 
|
||||||
|
- ist kein Unit-Test mehr, sondern ein [Integration-Test](#unit-testing-vs-integration-testing)
|
||||||
|
- **if-statements**
|
||||||
|
- wird schwerer lesbar
|
||||||
|
- sollte eine simple Sequenz ohne branches sein
|
||||||
|
|
||||||
|
##### Größe der [AAA](#aaa-sequenz) Sections
|
||||||
|
- **arrange**
|
||||||
|
- meistens am größten
|
||||||
|
- falls deutlich größer als act und assert zusammen
|
||||||
|
- extrahieren in neue Methode oder separate [Factory-Klasse](DesignPatterns.md#factory-method-virtual-constructor)
|
||||||
|
- **act**
|
||||||
|
- sollte nicht mehr als eine Zeile sein
|
||||||
|
- **assert**
|
||||||
|
- kann mehrere Asserts beinhalten
|
||||||
|
- eine unit kann ja auch mehrere Dinge verändern, die überprüft werden müssen
|
||||||
|
- zu viele asserts implizieren schlechten Production-Code
|
||||||
|
- _fehlende Abstraktion bspw._
|
||||||
|
- **teardown-Phase** (_alles wieder auf den alten Stand bringen_)
|
||||||
|
- die meisten unit-Tests brauchen keine
|
||||||
|
- ist meistens durch ein anderes Modell gelöst
|
||||||
|
- bspw. Mocks oder so
|
||||||
|
|
||||||
|
#### Good Practices - Naming Tests
|
||||||
|
- aussagekräftige Namen
|
||||||
|
- häufig aber schlecht:
|
||||||
|
- [MethodeDieGetestetWird]_[Szenario]_[ErwartetesErgebnis]
|
||||||
|
- Name in plain Englisch besser lesbar
|
||||||
|
- Beispiel
|
||||||
|
- _Sum_TwoNumbers_ReturnsSum()_ :(
|
||||||
|
- _Sum_of_two_numbers()_ :)
|
||||||
|
|
||||||
|
**Guideline**
|
||||||
|
- Keiner starken Benennungspolicy folgen
|
||||||
|
- Benenne die Tests als würdest du es einem nicht-Programmierer-Deppen erklären, der aber die Anwendung kennt
|
||||||
|
- Separiere Wörter, sodass sie lesbar sind
|
||||||
|
- bspw. durch `-`, `_`, `testTest`
|
||||||
|
|
||||||
|
#### Good Practices - Parameterized Tests
|
||||||
|
**Motivation:**
|
||||||
|
- Ein Test ist meistens nicht genug um eine Verhaltens-Unit zu beschreiben
|
||||||
|
- hat div. Komponenten
|
||||||
|
- Beispiel:
|
||||||
|
- Online-Store mit Lieferfunktion
|
||||||
|
- constraint: frühstes Lieferdatum ist übermorgen
|
||||||
|
- ```
|
||||||
|
public void Delivery_with_a_past_date_is_invalid()
|
||||||
|
public void Delivery_for_today_is_invalid()
|
||||||
|
public void Delivery_for_tomorrow_is_invalid()
|
||||||
|
public void The_soonest_delivery_date_is_two_days_from_now()
|
||||||
|
```
|
||||||
|
- das viel zu viel
|
||||||
|
- wenn man das mal auf größere Probleme anwendet wirds nicht besser
|
||||||
|
|
||||||
|
**Parametrisierte Tests:** {id="parametrized-tests"}
|
||||||
|
- gruppieren Tests
|
||||||
|
- meiste xUnit Frameworks haben Funktion dafür
|
||||||
|
- Beispiel in .NET:
|
||||||
|
- 
|
||||||
|
- Also:
|
||||||
|
- weniger Test-Code
|
||||||
|
- Aber:
|
||||||
|
- schwerer herauszufinden, welche Fakten die Methode repräsentiert
|
||||||
|
- je mehr Parameter, desto schwieriger
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user