Qualitätssicherung durch „Kontinuierliche Integration“

Qualitätssicherung durch „Kontinuierliche Integration“

Software Development. Foto: Olivier Le Moal, Fotolia.de

Wie die meisten Unternehmen in der professionellen Softwareentwicklung, arbeiten wir bei Lemonbeat nach dem Prinzip der „Kontinuierlichen Integration“. Auf diese Weise können wir sicherstellen, dass unsere Kunden stets eine sorgfältig getestete Software erhalten. Aber was bedeutet der Begriff „Kontinuierliche Integration“ eigentlich?

Die Kontinuierliche Integration der Softwareentwicklung ist ein Ansatz, der verschiedene Qualitätsmaßnahmen kombiniert. Ziel ist es, die Weiterentwicklung der Software sicherzustellen, alle geplanten Änderungen sowie neuen Features korrekt zu implementieren und alle unerwünschten Effekte innerhalb bereits existierender Module aufzulösen. Dieser Qualitätssicherungsansatz unterstützt den Entwicklungsprozess kontinuierlich und impliziert, dass unsere Entwickler zum Zeitpunkt der Lieferung nachts schlafen können.

Eine gute Analogie dazu wäre die einer Großküche: Verschiedene Köche arbeiten an einem Menü, können jedoch nicht einzeln prüfen, ob die Zusammensetzung der einzelnen Gerichte perfekt ist. Diese Rolle obliegt dem „Chef de Cuisine“, die „Kontinuierliche Integration“ der Küche.

Bei der Lemonbeat-Technologie ist das Gericht sozusagen der komplette IP-Stack, der für die Kommunikation zwischen Geräten im Internet der Dinge (IoT) konzipiert ist. Diese Geräte tauschen Informationen direkt mit Hilfe der Lemonbeat smart Device Language (LsDL) aus. Unsere Software nutzt etablierte IP-Standards, bietet volle IPv6-Integration, 128-Bit AES-Verschlüsselung, verschiedene praktische Dienste wie Timer- und Kalenderfunktionen und nicht zuletzt, die patentierte und energieeffiziente Lemonbeat-686 MHZ Funktechnologie an.

Hinsichtlich der Entwicklung all unserer Softwarelösungen, halten wir uns an Kodierungskonventionen. Dabei handelt es sich um definierte Programmierregeln im Quellcode. Sie helfen dabei die Einheitlichkeit aufrechtzuhalten, sodass es anderen Programmieren ermöglicht wird zu verstehen was implementiert wurde.

Da der Quellcode infolgedessen leichter zu lesen ist, fällt es anderen Programmierern leichter, einen Beitrag zu leisten und aktiv an der Weiterentwicklung der Software mitzuwirken. Darüber hinaus kann diese Praxis auch dazu beitragen eine bessere Qualität und Servicefreundlichkeit zu erreichen.

Beispielsweise legen Kodierungskonventionen fest, wie Dinge wie Funktionen und Datentypen beschriftet werden. Sie helfen bei der Dokumentation von Implementierungen und können bei der Aufrechterhaltung einer aufgeräumten Struktur innerhalb der Software helfen.

Verschiedene Köche arbeiten an einem Menü, können jedoch nicht einzeln prüfen, ob die Zusammensetzung der einzelnen Gerichte perfekt ist. Diese Rolle obliegt dem „Chef de Cuisine“, die „Kontinuierliche Integration“ der Küche.

Beim Testen unserer Software verwenden wir unsere Entwicklerboards. Es handelt sich hierbei um Hardwarekomponenten, die alle Lemonbeat-Funktionen auf einer Platine zusammenführen. Auf diese Weise können unsere Mitarbeiter die gesamte Firmware ausführen und überprüfen, ob alle Funktionen in Kombination mit Hardware erfolgreich getestet wurden.

Über eine solche Testumgebung verfügen wir in unserem Tech-Labor. Hier wird die aktuelle Firmware aus der Entwicklung automatisch getestet. Dies geschieht kontinuierlich und stellt sicher, dass Änderungen an der Software zeitnah getestet werden. Diese Softwareentwicklung wird als „Nightly Build“ bezeichnet.

Die neueste Version von Lemonbeats SIP Development Board. Foto: Dennis Knake / Lemonbeat

Die neueste Version von Lemonbeats SIP Development Board. Foto: Dennis Knake / Lemonbeat

Während der Tests werden die Kommunikationsfunktionen direkt auf den Boards ausgeführt und validiert. Der Computer ruft automatisch jede Funktion nacheinander hervor und prüft, ob das Ergebnis der einzelnen Tests korrekt ist. Auf diese Weise kann sichergestellt werden, dass bereits implementierte Funktionen nach einem Software-Update noch zuverlässig funktionieren.

Obwohl einzelne Funktionen von den Entwicklern manuell getestet werden, ist der automatisierte Prozess auch deshalb erforderlich, weil die zunehmend komplexe Software irgendwann kaum noch manuell zu prüfen ist. Mit anderen Worten, es ist ein wichtiges Instrument zur Unterstützung der Qualitätssicherung.

Für den Fall, dass alle automatischen sowie manuellen Tests bestanden werden, haben wir eine so genanntes „Stable Release“, also eine stabile Version der aktuellen Software. Diese Version kann dann an Kunden herausgegeben werden.

Ein weiterer Vorteil der Kontinuierlichen Integration ist die Möglichkeit, jederzeit auf die Entwicklungshistorie der Software zugreifen zu können. Jede Änderung wird erfasst und jede Vorgängerversion kann zur Überprüfung und Qualitätssicherung abgerufen werden. Dadurch können wir auch Fehler beheben, falls ein Fehler in früheren Versionen der bereits an Kunden ausgegebenen Software auftritt.

Dennoch werden „Stable Releases“ nicht automatisch an Kunden ausgegeben. Die Verteilung der Releases folgt unserem Projektplan der unsere Release-Zyklen definiert. Die Flexibilität unserer Workflows erlaubt es jedoch, gelegentlich unseren Plan zu umgehen und schnelle Ad-hoc-Korrekturen (Hotfixes) zu liefern.