Archiv für den Monat: April 2016

Kontinuierliche Automatisierung

Automatisiertes Flashen

Gliederung

  1. Einleitung
  2. Manuelles Aufspielen
  3. Automatisierung der Flash-Software
  4. Automatisierung der Hardware-Schaltvorgänge
  5. Fazit

Einleitung

In dem Artikel Automatisiertes VoiceCallBackend habe ich beschrieben, wie wir Tests für den eCall automatisiert haben. In diesem Artikel beschreibe ich nun, wie wir das Aufspielen einer neuen Softwareversion auf das eCall-Steuergerät automatisiert haben.

Dazu werde ich zuerst den manuellen Prozess, wie die Software auf das Steuergerät aufgespielt wird, beschreiben. Dieser Vorgang wird auch programmieren oder flashen genannt. Anschließend erläutere ich, wie das eigentliche Aufspielen automatisiert wurde und zuletzt erkläre ich, wie wir die händischen Schaltvorgänge durch softwaregesteuerte ersetzt haben.

Manuelles Aufspielen

Bevor ich erkläre, wie die Software auf das Steuergerät aufgespielt wird, werde ich grob den Aufbau skizzieren, der dafür notwendig ist.

Das Steuergerät ist über ein sogenanntes Debug-Board mit einem PC verbunden. Dieses Debug-Board hat mehrere Schalter, über die das Steuergerät in bestimmte Modi versetzt werden kann, die zum Aufspielen der Software erforderlich sind.

Kontinuierliche Automatisierung_1

Das Steuergerät hat zwei Prozessoren, für welche die Software mit unterschiedlichen Programmen aufgespielt werden kann.
Der allgemeine Ablauf ist folgender:

  1. Starte Programm zum Flashen des entsprechenden Prozessors
  2. Lege den Schalter auf dem Debug-Board für den Prozessor um
  3. Starte das Steuergerät neu (Reset-Schalter auf Debug-Board oder Strom aus->an)
  4. Starte Flash-Vorgang im Programm
  5. Warte bis Flash-Vorgang abgeschlossen ist
  6. Stelle Schalter auf Debug-Board zurück in Ausgangsposition
  7. Starte das Steuergerät neu

Automatisierung der Flash-Software

Die Programme zum Flashen der Software erfüllen eine wichtige Voraussetzung für die Automatisierung: Sie lassen sich von einer Kommandozeile aus starten und führen dann automatisch den Flashvorgang aus. Auf diese Weise kann der Flashvorgang über Systemaufrufe in eine Testautomatisierungssoftware eingebunden werden. Dabei ist ebenfalls wichtig, dass die zu flashenden Binärdateien entweder über eine Konfigurationsdatei oder direkt als Parameter mit angegeben werden können, so dass dies leicht geändert werden kann, sollte sich an dem Flashvorgang etwas ändern oder es notwendig sein, dass mehrere Binärdateien nacheinander geflasht werden müssen.

Automatisierung der Hardware-Schaltvorgänge

Als nächstes gilt es, die manuellen Schaltvorgänge am Debug-Board zu automatisieren. Dazu wurden die Schalter durch eine vom PC steuerbare Relaiskarte ersetzt. Zusätzlich wurde die Stromversorgung mit der Relaiskarte verbunden, sodass auch das Ein- und Ausschalten des Steuergerätes durch Software automatisiert werden kann. Auf diese Weise können wir nun gezielt softwaregesteuert das Steuergerät ein- und ausschalten und mit der entsprechenden Softwareversion flashen.

Kontinuierliche Automatisierung_2

Zu guter Letzt haben wir ein Programm geschrieben, das diese Steuerung übernimmt und zusätzlich die neueste Version der Softwaretests aus dem Source-Code-Management-Tool auscheckt und kompiliert, sodass die Softwaretests automatisiert gestartet werden können. Ein in das Steuerprogramm integrierter Log-Nachrichten-Parser hat die einzelnen Testergebnisse aus dem Log-Nachrichten-Strom des Steuergerätes ausgelesen und automatisch einen Report in das verwendete Test-Management-Tool durchgeführt.

Fazit

Durch diese letzte Automatisierung konnten wir alle automatisierbaren Softwaretests auf einem extra PC laufen lassen, der von uns angestoßen, die Tests durchgeführt hat. Gegen Ende dauerte das Ausführen aller automatisierten Tests etwa zwei Tage, was durch das Hinzuziehen eines zweiten PCs wieder auf einen Tag reduziert werden konnte. Wenn diese Tests von einer einzelnen Person hätten durchgeführt werden müssen, wäre diese etwa 6 Arbeitstage nur mit der Ausführung beschäftigt gewesen, dabei sind noch nicht die zusätzlichen Zeiten für die manuellen Schritte berücksichtigt worden.