Portfolio Matthias Schott
← Zurück zur Projektübersicht

IHK-FACHARBEIT · PYTHON · GUI · TESTAUTOMATISIERUNG

Sensor-Testsystem

Entwicklung einer Python-Anwendung zur automatisierten Erkennung und Prüfung von Sensoren mit grafischer Benutzeroberfläche, Hardware-Kommunikation, automatisierten Tests und Testreports.

IHK-Abschlussnote: 2

Python PyQt5 Pytest Sensor API Serial Communication COM-Ports Testautomatisierung Subprocess GUI Development Hardwaresimulation

Projektbeschreibung

Im Rahmen meiner IHK-Facharbeit zum Fachinformatiker für Anwendungsentwicklung habe ich ein Python-basiertes Testsystem zur automatisierten Erkennung und Überprüfung von Sensoren entwickelt.

Ziel des Projekts war es, die bisher erforderlichen manuellen Prüfschritte durch eine strukturierte Softwarelösung zu unterstützen und wiederholbare Testabläufe zu ermöglichen.

Die Anwendung erkennt angeschlossene Sensoren, liest deren technische Metadaten aus und stellt diese innerhalb einer grafischen Benutzeroberfläche dar. Anschließend können definierte Prüfungen für einzelne Sensoren oder für mehrere Sensoren automatisiert durchgeführt werden.

Zu den implementierten Prüfungen gehören insbesondere Distanz- und Amplitudentests. Die Testergebnisse werden ausgewertet, als Testreports gespeichert und innerhalb der Anwendung als PASS- bzw. FAIL-Ergebnis dargestellt.

Für die Weiterentwicklung und Demonstration des Systems wurde zusätzlich eine Sensorsimulation integriert. Dadurch kann die Anwendung auch ohne die ursprünglich verwendete Sensorhardware ausgeführt und getestet werden.

Funktionen

Automatische Sensorerkennung

Die Anwendung ermittelt verfügbare Schnittstellen und überprüft diese auf angeschlossene Sensoren.

Sensormetadaten

Nach der Erkennung werden unter anderem Sensortyp, Seriennummer und verwendeter COM-Port ausgelesen und in der GUI dargestellt.

Live-Messwerte

Aktuelle Messwerte eines Sensors können direkt über die grafische Oberfläche abgefragt und dargestellt werden.

Distanztest

Die gemessenen Distanzwerte werden gegen definierte Grenzwerte geprüft und automatisch bewertet.

Amplitudentest

Zusätzlich kann die Signalstärke bzw. Amplitude eines Sensors automatisiert überprüft werden.

Gesamtprüfung

Über die Funktion „TEST ALL“ können die vorgesehenen Prüfungen nacheinander für alle erkannten Sensoren ausgeführt werden.

Testreports

Die automatisierten Tests werden mit Pytest ausgeführt. Die Ergebnisse werden als Reports gespeichert und anschließend innerhalb der Anwendung dargestellt.

PASS / FAIL Bewertung

Die Testergebnisse werden unmittelbar als PASS oder FAIL visualisiert und können anschließend anhand des Reports analysiert werden.

Sensorsimulation

Eine integrierte Simulation stellt Sensoren, Metadaten und Messwerte bereit, sodass die Anwendung auch ohne physische Hardware ausgeführt werden kann.

Technische Architektur

Benutzeroberfläche

Python · PyQt5

Sensorverwaltung

SensorRegistry · Sensor Helper

Sensor-Kommunikation

COM-Ports · Sensor API

Testautomatisierung

Pytest · Distanz · Amplitude

Testreports

Python · Subprocess · Report-Dateien

Die Anwendung ist in mehrere funktionale Bereiche aufgeteilt. Die PyQt5-Oberfläche übernimmt die Benutzerinteraktion und stellt erkannte Sensoren, Messwerte und Testergebnisse dar. Die Sensorverwaltung kapselt die Erkennung und Verwaltung der Sensorinstanzen. Über die Sensorschnittstelle werden Metadaten und Messwerte ausgelesen. Die eigentlichen Prüfungen werden automatisiert über Pytest ausgeführt. Die Testprozesse werden aus der Anwendung heraus gestartet und ihre Ergebnisse anschließend als Reports verarbeitet.

Sensorerkennung und Metadaten

Beim Start der Sensorerkennung werden die verfügbaren COM-Schnittstellen ermittelt und anschließend auf vorhandene Sensoren überprüft.

Erkannte Sensoren werden in einer zentralen SensorRegistry verwaltet. Dadurch können die Sensorinstanzen innerhalb der Anwendung gezielt angesprochen und für Messungen und Tests verwendet werden.

COM-Port Schnittstelle, über die der Sensor erkannt wurde
Sensor Type Ermittelter Sensortyp
Serial Number Eindeutige Seriennummer des Sensors
Distance Aktuell gemessener Distanzwert

Automatisierte Tests

Ein zentraler Bestandteil des Projekts ist die automatisierte Überprüfung der Sensoren. Die Tests werden mit Pytest umgesetzt und aus der grafischen Anwendung heraus gestartet.

Für den Distanztest wird der aktuelle Messwert eines Sensors ausgelesen und gegen einen definierten Wertebereich geprüft.

Zusätzlich wird die Amplitude des Sensors überprüft. Die Tests können entweder einzeln für einen Sensor oder für alle erkannten Sensoren ausgeführt werden.

Sensor Messwert Pytest PASS / FAIL Testreport

Testreports und Auswertung

Die Ergebnisse der automatisierten Prüfungen werden für die jeweiligen Tests gespeichert und können anschließend analysiert werden.

Die Anwendung startet die Pytest-Testfälle über einen separaten Prozess und verarbeitet anschließend deren Ergebnisse und Ausgaben.

Über die grafische Oberfläche können die erzeugten Reports angezeigt werden. Zusätzlich wird das Testergebnis direkt am jeweiligen Sensor als PASS oder FAIL visualisiert.

Erfolgreicher Test

  • Grenzwerte werden eingehalten
  • Teststatus: PASS
  • Ergebnis wird in der GUI angezeigt
  • Report bleibt zur Analyse erhalten

Fehlgeschlagener Test

  • Definierter Grenzwert wird nicht eingehalten
  • Teststatus: FAIL
  • Fehler wird im Report dokumentiert
  • Ergebnis kann anschließend analysiert werden

Sensorsimulation

Um das Projekt unabhängig von der ursprünglichen Sensorhardware ausführbar zu machen, wurde eine eigene Sensorsimulation integriert.

Die simulierten Sensoren stellen dieselben grundlegenden Schnittstellen bereit, die auch von der eigentlichen Anwendung verwendet werden. Dadurch können bestehende GUI- und Testlogik weiterverwendet werden.

Die Simulation erzeugt unterschiedliche Distanz- und Amplitudenmesswerte und stellt verschiedene Sensoren mit eigenen Seriennummern, Sensortypen und Messwerten bereit.

Ein Sensor ist bewusst so konfiguriert, dass er definierte Grenzwerte nicht erfüllt. Dadurch lässt sich auch das Verhalten eines fehlgeschlagenen Tests demonstrieren.

Simulierter Sensor SensorRegistry GUI Pytest

Grafische Benutzeroberfläche

Die Benutzeroberfläche wurde mit PyQt5 entwickelt und stellt die wichtigsten Funktionen des Testsystems zentral zur Verfügung.

Für bis zu sechs Sensoren werden jeweils Sensortyp, Seriennummer, COM-Port und aktueller Distanzwert angezeigt.

Über separate Schaltflächen können einzelne Sensoren getestet oder komplette Testläufe für alle erkannten Sensoren gestartet werden.

Ein integriertes Log- und Reportfenster ermöglicht zusätzlich die Anzeige detaillierter Testergebnisse.

IHK-Facharbeit

Das Projekt entstand im Rahmen meiner IHK-Facharbeit zum Fachinformatiker für Anwendungsentwicklung.

Dabei wurden zunächst die fachlichen und technischen Anforderungen analysiert. Auf dieser Grundlage wurde eine geeignete Softwarearchitektur entwickelt und anschließend schrittweise implementiert und getestet.

Neben der eigentlichen Programmierung waren auch Themen wie Softwarearchitektur, Schnittstellen, Hardware-Kommunikation, Testautomatisierung, Fehlerbehandlung und Dokumentation Bestandteil des Projekts.

Die Facharbeit wurde mit der Abschlussnote 2 bewertet.

Was ich dabei gelernt habe

  • Entwicklung grafischer Benutzeroberflächen mit Python und PyQt5
  • Strukturierung einer größeren Python-Anwendung in mehrere Module
  • Umgang mit Hardware-Schnittstellen und COM-Ports
  • Verarbeitung von Sensordaten und technischen Metadaten
  • Verwaltung von Sensorinstanzen über eine zentrale Registry
  • Entwicklung automatisierter Tests mit Pytest
  • Kommunikation zwischen GUI und separaten Testprozessen
  • Verarbeitung von Testresultaten und Erstellung von Reports
  • Entwicklung einer Hardwaresimulation zur unabhängigen Ausführung der Anwendung
  • Planung, Implementierung, Test und Dokumentation eines vollständigen IHK-Projekts

Quellcode

Der Quellcode des Projekts befindet sich auf GitHub. Die aktuelle Version enthält zusätzlich eine Sensorsimulation, sodass die Anwendung auch ohne angeschlossene Hardware ausgeführt werden kann.

← Zurück zur Projektübersicht