Dieses Seminar behandelt Aufbau einer Teststrategie mit Unit- und Integrationstests, Geräteaufzeichnungen, Emulation, Hardwarematrix, Fuzzing, Sanitizern und Continuous Integration. Die fachlichen Grundlagen werden mit nachvollziehbaren Arbeitsabläufen, Demonstrationen und praktischen Übungen verbunden.
Inhaltsübersicht
- Zielgruppe und Voraussetzungen
- Lernziele
- Didaktische Einordnung
- Seminarinhalte mit schrittweisen Arbeitsabläufen
- Praxisarbeiten
- Arbeitsumgebung
Zielgruppe und Voraussetzungen
Zielgruppe: Linux- und Embedded-Entwicklung, Firmwareentwicklung, Geräteintegration, technische Architektur und Maintainer von Hardwareunterstützung.
Voraussetzungen: Gute Linux- und C-Kenntnisse, sichere Arbeit mit Buildsystem, Git und Debugger; Grundkenntnisse von Gerätebussen und Firmwareformaten.
Lernziele
- Entwicklungs- und Buildumgebung fachlich einordnen und in einen reproduzierbaren Arbeitsablauf überführen.
- Geräteemulation und reproduzierbare Updateaufzeichnungen fachlich einordnen und in einen reproduzierbaren Arbeitsablauf überführen.
- Unit-, Integrations- und Hardwaretests fachlich einordnen und in einen reproduzierbaren Arbeitsablauf überführen.
- Protokollierung und reproduzierbare Diagnose fachlich einordnen und in einen reproduzierbaren Arbeitsablauf überführen.
- Recovery, Rollback und sichere Wiederholung fachlich einordnen und in einen reproduzierbaren Arbeitsablauf überführen.
- Upstreambeitrag, Review und Wartung fachlich einordnen und in einen reproduzierbaren Arbeitsablauf überführen.
Didaktische Einordnung
Drei Tage sind erforderlich, weil Testdesign, Emulationsaufzeichnung und CI-Umsetzung jeweils praktische Ergebnisse liefern und abschließend zu einer gemeinsamen Freigabepipeline verbunden werden. Pro Seminartag sind ungefähr sechs Unterrichtsstunden mit zusätzlichen Pausen vorgesehen. Die Dauer entspricht dem ausgewählten TYPO3-Seminartemplate.
Seminarinhalte
1. Entwicklungs- und Buildumgebung
Eine reproduzierbare Entwicklungsumgebung bildet Abhängigkeiten, Buildoptionen, Tests und Debugkonfiguration nachvollziehbar ab.
- Quellstand, Compiler, Buildsystem und erforderliche Bibliotheken versioniert festlegen.
- Buildoptionen auf die benötigten Plugins und Testfunktionen begrenzen.
- Separates Build- und Installationspräfix für Entwicklung und Systemversion verwenden.
- Debugsymbole, ausführliche Protokollierung und Testdaten aktivieren.
- Build, Basistests und Start des Daemons als reproduzierbaren Prüfablauf dokumentieren.
2. Geräteemulation und reproduzierbare Updateaufzeichnungen
Emulation ersetzt nicht die Hardwareprüfung, ermöglicht aber reproduzierbare Regressionstests und Fehleranalysen.
- Emulationsfunktion in einer isolierten Testkonfiguration aktivieren.
- Zielgerät eindeutig markieren und einen vollständigen Updateablauf aufzeichnen.
- Aufzeichnung mit Geräteereignissen, Antworten und Zustandswechseln speichern.
- Emuliertes Gerät ohne physische Hardware laden und erwartete Abläufe wiederholen.
- Aufzeichnung versionieren und als Regressionstest in den Entwicklungsprozess aufnehmen.
3. Unit-, Integrations- und Hardwaretests
Teststufen werden getrennt aufgebaut, damit Parserfehler, Zustandsfehler und Hardwareprobleme gezielt erkannt werden.
- Parser- und Hilfsfunktionen mit kleinen Unit-Tests und klaren Grenzfällen prüfen.
- Pluginzustände mit Emulation oder Mock-Geräten als Integrationstest ausführen.
- Upgrade, Downgrade, Reinstall, Unterbrechung und Recovery auf Referenzhardware testen.
- Ausgaben, Historie, Geräteflags und Firmwarestand nach jedem Testfall verifizieren.
- Testmatrix nach Modell, Revision, Firmwareausgangsstand und Betriebssystem pflegen.
4. Continuous Integration, Fuzzing und statische Analyse
Automatisierte Qualitätsprüfungen verhindern, dass Parser- oder Zustandsfehler erst auf Endgeräten sichtbar werden.
- Builds für relevante Compiler, Optionen und Architekturen automatisieren.
- Unit- und Emulationstests mit deterministischen Testdaten in jeder Änderung ausführen.
- Firmwareparser mit Fuzzing und einem Korpus gültiger sowie fehlerhafter Dateien prüfen.
- Statische Analyse, Sanitizer und Abhängigkeitsprüfungen in getrennten Jobs betreiben.
- Fehlschläge als freigabeblockierend behandeln und reproduzierbare Artefakte sichern.
5. Firmwareformate, Parser und Prüfsummen
Firmwareparser behandeln Eingabedaten als nicht vertrauenswürdig und validieren Struktur, Grenzen, Versionen sowie Prüfsummen.
- Container-, Header-, Payload- und Signaturbereiche des Firmwareformats beschreiben.
- Längen, Offsets, Ganzzahlbereiche und Verschachtelungen vor jedem Zugriff validieren.
- Version, Gerätekennung und Kompatibilitätsmerkmale in ein Firmwareobjekt überführen.
- Prüfsummen und kryptografische Signaturen an der richtigen Verarbeitungsebene prüfen.
- Fehlerhafte, abgeschnittene und manipulierte Beispieldateien in negative Tests aufnehmen.
6. Protokollierung und reproduzierbare Diagnose
Fehler werden anhand eines festen Diagnoseablaufs untersucht, damit Geräte-, Plugin-, Metadaten- und Systemprobleme getrennt werden können.
- Zeitpunkt, Gerät, Zielversion, ausgeführten Befehl und beobachtetes Verhalten präzise festhalten.
- Daemonstatus, Journal, fwupd-Ausgabe und relevante Kernelmeldungen im gleichen Zeitfenster sichern.
- Gerätebaum, Pluginzuordnung, Flags, Probleme, GUIDs und Remotes erneut erfassen.
- Fehler mit minimalen Änderungen auf Referenzhardware oder in einer Emulationsumgebung reproduzieren.
- Befund, wahrscheinliche Ursache, Gegenprobe und verbleibende Unsicherheit getrennt dokumentieren.
7. Recovery, Rollback und sichere Wiederholung
Wiederherstellung wird vor dem Update geplant und berücksichtigt, dass nicht jedes Gerät ein Firmware-Rollback unterstützt.
- Recovery-Fähigkeiten, Mindestversion, erlaubte Downgrades und herstellerspezifische Notfallwege vorab prüfen.
- Stromversorgung, alternative Eingabegeräte, Wiederherstellungsmedium und Zugriff auf Schlüssel sicherstellen.
- Nach einem Fehlschlag zunächst Gerätezustand und Historie sichern, bevor weitere Schreibversuche erfolgen.
- Nur dokumentierte Wiederholungs-, Aktivierungs- oder Recovery-Schritte in festgelegter Reihenfolge anwenden.
- Nach erfolgreicher Wiederherstellung Firmwarestand, Funktion, Sicherheitsattribute und erneute Freigabe kontrollieren.
8. Upstreambeitrag, Review und Wartung
Ein wartbares Plugin benötigt neben funktionierendem Code auch Tests, Dokumentation, Metadaten und einen langfristigen Pflegeprozess.
- Änderungen in kleine, nachvollziehbare Commits mit klarer Problemstellung zerlegen.
- Coding-Konventionen, Lizenzvorgaben und bestehende Abstraktionen des Projekts einhalten.
- Tests, Quirks, Gerätebeispiele und technische Dokumentation gemeinsam mit dem Code liefern.
- Reviewhinweise reproduzierbar bearbeiten und Hardwareergebnisse nachvollziehbar belegen.
- Verantwortung für Regressionen, neue Gerätevarianten und Sicherheitsmeldungen organisatorisch festlegen.
Praxisarbeiten
- Praxisfall „Entwicklungs- und Buildumgebung“ bearbeiten und als Ergebnis build, Basistests und Start des Daemons als reproduzierbaren Prüfablauf dokumentieren.
- Praxisfall „Geräteemulation und reproduzierbare Updateaufzeichnungen“ bearbeiten und als Ergebnis aufzeichnung versionieren und als Regressionstest in den Entwicklungsprozess aufnehmen.
- Praxisfall „Continuous Integration, Fuzzing und statische Analyse“ bearbeiten und als Ergebnis fehlschläge als freigabeblockierend behandeln und reproduzierbare Artefakte sichern.
- Praxisfall „Firmwareformate, Parser und Prüfsummen“ bearbeiten und als Ergebnis fehlerhafte, abgeschnittene und manipulierte Beispieldateien in negative Tests aufnehmen.
- Praxisfall „Recovery, Rollback und sichere Wiederholung“ bearbeiten und als Ergebnis nach erfolgreicher Wiederherstellung Firmwarestand, Funktion, Sicherheitsattribute und erneute Freigabe kontrollieren.
- Praxisfall „Upstreambeitrag, Review und Wartung“ bearbeiten und als Ergebnis verantwortung für Regressionen, neue Gerätevarianten und Sicherheitsmeldungen organisatorisch festlegen.
Arbeitsumgebung
Entwicklungsrechner mit isoliertem fwupd-Build, Testdaten und nach Möglichkeit geeigneter Referenzhardware. Alle Übungen werden mit dokumentiertem Ausgangszustand, eindeutigen Prüfkriterien und einer abschließenden technischen Kontrolle durchgeführt.
Fachbereichsleitung und Trainerteam
-

Lucas Beich
Telefon: + 49 (221) 74740055
E-Mail: lucas.beich@seminar-experts.de -

Paul Goldschmidt
Telefon: + 49 (221) 74740055
E-Mail: paul.goldschmidt@seminar-experts.de
Seminardetails
| Dauer: | 3 Tage ca. 6 h/Tag, Beginn 1. Tag: 10:00 Uhr, weitere Tage 09:00 Uhr |
| Preis: |
Öffentlich oder Live Stream: € 1.797 zzgl. MwSt. Inhaus: € 5.100 zzgl. MwSt. |
| Teilnehmeranzahl: | min. 2 - max. 8 |
| Teilnehmer: | Linux- und Embedded-Entwicklung, Firmwareentwicklung, Geräteintegration, technische Architektur und Maintainer von Hardwareunterstützung. |
| Voraussetzungen: | Gute Linux- und C-Kenntnisse, sichere Arbeit mit Buildsystem, Git und Debugger; Grundkenntnisse von Gerätebussen und Firmwareformaten. |
| Standorte: | Stream Live, Inhaus/Firmenseminar, Berlin, Bremen, Darmstadt, Dresden, Erfurt, Essen, Flensburg, Frankfurt, Freiburg, Friedrichshafen, Hamburg, Hamm, Hannover, Jena, Kassel, Köln, Konstanz, Leipzig, Luxemburg, Magdeburg, Mainz, München, Münster, Nürnberg, Paderborn, Potsdam, Regensburg, Rostock, Stuttgart, Trier, Ulm, Wuppertal, Würzburg |
| Methoden: | Vortrag, Demonstrationen, praktische Übungen am System, strukturierte Schritt-für-Schritt-Arbeitsaufträge |
| Seminararten: | Öffentlich, Webinar, Inhaus, Workshop - Alle Seminare mit Trainer vor Ort, Webinar nur wenn ausdrücklich gewünscht |
| Durchführungsgarantie: | ja, ab 2 Teilnehmern |
| Sprache: | Deutsch - bei Firmenseminaren ist auch Englisch möglich |
| Seminarunterlage: | Dokumentation auf Datenträger oder als Download |
| Teilnahmezertifikat: | ja, selbstverständlich |
| Verpflegung: | Kalt- / Warmgetränke, Mittagessen (wahlweise vegetarisch) |
| Support: | 3 Anrufe im Seminarpreis enthalten |
| Barrierefreier Zugang: | an den meisten Standorten verfügbar |
| Weitere Informationen unter + 49 (221) 74740055 |
Seminartermine
Die Ergebnissliste kann durch Anklicken der Überschrift neu sortiert werden.
