Testing
SARA (Datenerfassung)
PlatformIO wird für das Dependancy Mangement, Libraries, Flashing und Compilation der Anwendung verwendet.
Dies ist eine Python-Anwendung, die über pip installiert werden kann.
pip install platformio
Dabei übernimmt die Anwendung alle Aufgaben, lädt die bnötigten Libraries herunter und kompiliert den Code.
Unittests
Hierbei wird Unity als Testframework verwendet. Die Tests können mit folgendem Befehl ausgeführt werden:
pio test -e native_selected_unittests
Hierbei wird der Code auf dem Host-System kompiliert und ausgeführt.
Linting und Security
Für das Linting und die Security wird clang-tidy und cppcheck verwendet. Diese können mit folgendem Befehl ausgeführt werden:
pio check -e native_selected_linting
Backend-Service & Monitoring-Service
Vorbereiteung
Im Verzeichnis /server/deployment/tests führen Sie folgenden Befehl aus:
pip install -r requirements.txt
Tests ausführen
Im Verzeichnis /server/deployment/tests führen Sie folgenden Befehl aus:
pytest API-Tests.py -v --junitxml=report.xml <optionale Parameter>
oder
pytest Microservice-Tests.py -v --junitxml=report.xml
-v steht für verbose um mehr Informationen anzeigen zu lassen
--junitxml=report.xml erstellt einen Test-Report
Zu den Optionalen Parametern gehören:
-
--noPing | Tests werden ohne die Ping-Logik ausgeführt
-
--noTemp | Tests werden ohne die Temperatur-Route ausgeführt
-
--noHumid | Tests werden ohne die Luftfeuchtigkeit-Route ausgeführt
-
--noWindDir | Tests werden ohne die Windrichtungs-Route ausgeführt
-
--noWindSpeed | Tests werden ohne die Windgeschwindigkeits-Route ausgeführt
-
--noRain | Tests werden ohne die Niederschlag-Route ausgeführt
-
--noBatteryC | Tests werden ohne die Batterieladung-Route ausgeführt
- --noBatteryV | Tests werden ohne die Batteriespannung-Route ausgeführt
Bei der Test Ausführung können entweder die Production Routen, oder die lokalen Developer Routen getestet werden.
Um lokal zu testen müssen Sie Docker installieren und in einer .env-Datei folgende Umgebungsvariable setzen:
API_USE_DEV_CONTAINER = true
Tests schreiben
Um Tests zu schreiben kann die API-Tests.py erweitert werden. Funktionen die im Test-Prozess beachtet werden sollen müssen mit test_ beginnen.
Valentin Dashboard
Dieses Projekt wurde mit Create React App erstellt. \ Im Projektverzeichnis können Sie folgende Befehle ausführen:
npm test
Tests ausführen
Dieses Projekt verwendet Jest für Tests. So führen Sie die Tests aus:
- Stellen Sie sicher, dass alle Abhängigkeiten installiert sind, indem Sie
npm installausführen - Führen Sie
npm testaus, um den Testrunner im Watch-Modus zu starten - Drücken Sie
a, um alle Tests auszuführen
Tests schreiben
- Tests befinden sich im
__tests__-Verzeichnis oder neben den Komponenten mit der Erweiterung.test.jsoder.spec.js - Verwenden Sie
describe, um zusammengehörige Tests zu gruppieren - Verwenden Sie
itodertest, um einzelne Testfälle zu definieren - Verwenden Sie
expectfür Behauptungen
Beispiel:
import { render, screen } from '@testing-library/react';
import App from './App';
test('rendert den "Learn React" Link', () => {
render(<App />);
const linkElement = screen.getByText(/learn react/i);
expect(linkElement).toBeInTheDocument();
});
Mehr erfahren
Sie können mehr in der Create React App Dokumentation erfahren.
Um React zu lernen, schauen Sie sich die React-Dokumentation an.
ADA (Datenvermittlung)
Programm im Dev-Modus ausführen
Sollte die Wetterstation nicht angebunden sein, kann man generierte Mock-Sensordaten verwenden, um unabhängig von der Wetterstation ADA auszuführen. Der Code wird dabei mit folgender Konfiguration gestartet:
cargo run --features "mock"
Dabei werden Mock-Daten verwendet und diese an die API gesendet.
Unittests in Rust
Die Unittests testen die Logik von ADA, die die eingehenden Sensordaten verarbeitet. Unittests befinden sich in dem Modul blickbox/ada/src/tests. Um alle Tests auszuführen, führt man folgenden Befehl aus dem ada-Ordner aus:
cargo test
Beim Testen werden die dev-dependencies aus der Cargo.toml genutzt. Da nur in den Tests das Crate mockito genutzt wird, wird es nur in Tests kompiliert.