Skip to content

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:

  1. Stellen Sie sicher, dass alle Abhängigkeiten installiert sind, indem Sie npm install ausführen
  2. Führen Sie npm test aus, um den Testrunner im Watch-Modus zu starten
  3. 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.js oder .spec.js
  • Verwenden Sie describe, um zusammengehörige Tests zu gruppieren
  • Verwenden Sie it oder test, um einzelne Testfälle zu definieren
  • Verwenden Sie expect fü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.