-
Notifications
You must be signed in to change notification settings - Fork 1
R Testing
Unit-Tests sind eine wesentliche Praxis in der Softwareentwicklung, einschließlich der Entwicklung von R-Paketen und Funktionen. Sie dienen dazu, sicherzustellen, dass die Funktionen wie erwartet funktionieren und korrekte Ergebnisse liefern. In R gibt es das Paket "testthat", das speziell zum Schreiben und Ausführen von Tests entwickelt wurde.
-
Installation des Pakets:
-
testthatkann überinstall.packages("testthat")installiert werden.
-
-
Struktur von Testdateien:
- Testdateien bestehen aus Testskripten, die verschiedene Aspekte einer Funktion oder eines Codes überprüfen.
-
Testfunktionen:
- Verwendung von
test_that()zum Definieren von Tests undexpect_*()-Funktionen zum Überprüfen von Bedingungen.
- Verwendung von
-
Ausführung von Tests:
- Verwendung von
test_dir()odertest_file()zum Ausführen von Tests in bestimmten Verzeichnissen oder Dateien.
- Verwendung von
# Test der Funktion add_numbers
'context("Testing add_numbers function")
test_that("Additionstest", {
result <- add_numbers(2, 3) # Annahme: Es gibt eine Funktion add_numbers(a, b)
expect_equal(result, 5) # Erwartetes Ergebnis: Das Ergebnis sollte 5 sein
})'
### Beispiel 2: Überprüfung von Ausnahmesituationen
```r
# Test auf Fehlerbehandlung
'context("Testing error handling")
test_that("Fehlerbehandlungstest", {
expect_error(some_function(NA), "Fehler: ungültiger Wert") # Erwartung: Funktion sollte Fehler bei NA-Wert auslösen
})'
### Beispiel 3: Überprüfung von Grenzfällen
```r
# Test für Grenzfälle
'context("Testing edge cases")
test_that("Grenzfall-Test", {
expect_true(is.na(some_function(0))) # Erwartung: Die Funktion sollte NA für Eingabe von 0 zurückgeben
})'
------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------
# Statistische Tests in R-Studio und R
## Unterschiedliche Testarten:
1. **Parametrische Tests:**
- Für normalverteilte Daten oder größere Stichproben.
- Beispiele: t-Test, ANOVA (Analysis of Variance), z-Test.
2. **Nichtparametrische Tests:**
- Für nicht normalverteilte Daten oder kleinere Stichproben.
- Beispiele: Wilcoxon-Test, Kruskal-Wallis-Test, Mann-Whitney-U-Test.
3. **Tests für Kategorische Daten:**
- Chi-Quadrat-Test: Prüfung der Unabhängigkeit von Variablen in Kreuztabellen.
## Ablauf der Tests:
1. **Formulierung von Hypothesen:**
- Nullhypothese (H0): Annahme, dass keine Unterschiede oder Beziehungen zwischen Variablen bestehen.
- Alternativhypothese (H1): Gegenteil der Nullhypothese.
2. **Datenvorbereitung:**
- Auswahl der Daten für den Test, Bereinigung von Ausreißern und fehlenden Werten.
3. **Testdurchführung:**
- Auswahl des geeigneten Tests basierend auf den Daten und der Fragestellung.
- Verwendung der entsprechenden R-Funktion für den gewählten Test.
4. **Interpretation der Ergebnisse:**
- Anhand des Testergebnisses wird die Nullhypothese angenommen oder abgelehnt.
- Berechnung von p-Werten und Konfidenzintervallen.
## Beispiele für übliche Tests in R:
1. **t-Test:**
- `t.test()` - Vergleicht die Mittelwerte von zwei Gruppen.
2. **ANOVA:**
- `aov()` - Vergleicht Mittelwerte von mehr als zwei Gruppen.
3. **Chi-Quadrat-Test:**
- `chisq.test()` - Testet die Unabhängigkeit von Variablen in Kreuztabellen.
4. **Wilcoxon-Test:**
- `wilcox.test()` - Vergleicht die Mittelwerte zweier Gruppen für nicht normalverteilte Daten.
5. **Kruskal-Wallis-Test:**
- `kruskal.test()` - Vergleicht die Mittelwerte von mehr als zwei Gruppen für nicht normalverteilte Daten.
Diese Tests ermöglichen es Datenanalysten und Wissenschaftlern, Hypothesen auf Basis ihrer Daten zu überprüfen und statistische Schlussfolgerungen zu ziehen. Die Auswahl des richtigen Tests hängt von der Art der Daten und der Forschungsfragestellung ab.-
würde man eigentlich mit R CMD check (oder devtools::check()) machen. Da der Code aber aufgrund von Brians Designentscheidungen einige Warnings wirft, crasht R CMD check.
-
Wir nutzen daher nur devtools::test() nachdem das Package "gebaut" wurde. Dies führt alle Unittest von
testthataus.. So können wir sicherstellen, dass vor Start des Servers alle Tests bestanden wurden (ansonsten lassen wir devtools::test() die aktuelle Session und damit den Server crashen). -
Link mit Erklärung: https://r-pkgs.org/testing-basics.html