Um die Qualität Ihres Softwareprodukts zu gewährleisten, haben wir uns hohen Standards verpflichtet, die uns im täglichen Entwicklungsprozess begleiten. Die Maßnahmen zur Sicherung der Software Qualität bestehen im wesentlichen aus den folgenden Punkten, wobei die Durchführung dieser Punkte regelmäßig schriftlich dokumentiert wird.

Coderichtlinien

Im Planungsprozess werden Coderichtlinien festgehalten, deren Einhaltung im Rahmen der Code Reviews kontrolliert wird. Diese beziehen sich beispielsweise auf:

  • Formatierung (Einrückungen, Verwendung von Leerzeichen bzw. Tabulatoren, Leerzeilen usw.)
  • Metriken (Länge von Klassen, Methoden/ Funktionen und Zeilen, Schachtelungstiefe, zyklomatische Komplexität, Anzahl atomarer Bedingungen, Anzahl Übergabeparameter usw.) 
  • Dokumentation (Inline, Funktionen/ Methoden, Klassen) 
  • Namenskonventionen (Groß- und Kleinschreibung, sprechende Namen)
  • Internationalisierung

Code Reviews

Die Einhaltung der vorab vereinbarten Coderichtlinien, wird im Code Review sichergestellt. Ein Code Review ist die systematische Untersuchung des Quellcodes mit dem Ziel, Fehler und Mängel im Code zu finden und die Codequalität und damit die Software zu verbessern. Es wird teamintern von den Entwicklern durchgeführt, sodass jede einzelne Codezeile (inklusive Tests) dem vier Augen Prinzip folgt. Alle Code Reviews werden dokumentiert und eine Bestätigung hiervon wird geliefert. Ein Einblick in die Code Reviews wird auf Rückfrage gewährt. Im Planungsprozess wird in Abstimmung mit dem AG festgehalten, auf welche Kriterien beim Code Review geachtet werden muss. Diese Kriterien beziehen sich auf folgende Themen:

  1. UI Design
  2. Technische Architektur / Design
  3. Komplexität
  4. Konsistenz zum restlichen Code
  5. Naming
  6. Coderichtlinien
  7. Kommentare (Korrektheit, Verständlichkeit, TODOs)
  8. Funktionalität – für Nutzer und Entwickler
  9. Abdeckung von Edge Cases
  10. Tests (Abdeckung und Qualität)

Testing

Es werden Unit Tests, Modultests, Integrationstests und End-to-End Tests (bzw. Software-Systemtests) durchgeführt, sodass die technische Funktionalität sichergestellt wird. Die Testabdeckung wird nachvollziehbar dargestellt geliefert, wobei eine Zielabdeckung von mindestens 70% angestrebt wird. Zum Beispiel bei Javascript Code:

Abbildung 1: Beispielhafte Darstellung der Testabdeckung


Unit Tests
testen die innersten, detailliertesten technischen Komponenten der Software (z.B. auf Klassen-/ Dateiebene), jedoch ohne Interaktion mit anderen Komponenten. Deshalb werden andere beziehungsweise externe Komponenten, wie etwa eine Datenbank, Dateien, Backend Systeme oder Unterprogramme durch Hilfsobjekte simuliert. Kritische und Basis Units werden Unit getestet.

Modultests prüfen diese Software Module, indem diese wie beim Unit Test isoliert betrachtet werden und andere Module und externe Komponenten simuliert werden.

Im Rahmen der Integrationstests werden die einzelnen Module zusammengefügt und geprüft, ob diese wie spezifiziert miteinander funktionieren.

Bereits in der Software-Architektur wird die Integrationsstrategie bestimmt, die festlegt wie die Software-Module geschnitten und in welcher Reihenfolge diese integriert werden sollen.

Ein Software-Systemtest ist eine Prüfung des gesamten Systems darauf, ob die daran gestellten Software-Anforderungen erfüllt sind. Diese Prüfung findet nach dem Blackbox Prinzip über die Benutzer-System-Schnittstellen statt, indem UIs manuell durchgetestet werden. Test Cases werden formuliert und an Testgeräten von Hand verifiziert. Die Ergebnisse dieser manuellen Tests werden in tabellarischer Form festgehalten. Protokolliert wird hierbei die Testgruppe, der Zweck, notwendige Vorbedingungen, die Testsequenz, das erwartete Ergebnis und Testergebnisse mit Angabe des Geräts und Betriebssystems.

 

Abbildung 2: Beispielhafte Testing-Tabelle


Regressionstests
werden auf allen genannten Ebenen durchgeführt. Falls an der Software Änderungen gemacht wurden, werden die Tests in angemessener Weise wiederholt. Wenn es beispielsweise in einer Testgruppe eine Änderung gab, werden alle Software-Systemtests dieser Gruppe erneut durchgeführt.

Problemlösungsprozess: Schlägt ein Test fehl wird im Rahmen von Scrum ein Bug Ticket erstellt. In diesem Prozess wird das Problem analysiert und über eine Herangehensweise entschieden. Außerdem greift die gewohnte Qualitätsprüfung.

Penetration-Tests werden zum Projektende von uns in Auftrag gegeben, um mit gängigen Werkzeugen Schwachstellen aufdecken zu können. Diese unterstützen mithilfe des Mehraugenprinzips die allgemeinen Fehlersuche.

Sie benötigen eine App?

Dann setzen Sie sich jetzt mit uns in Verbindung!
Sie sind auf der Suche nach einer individuellen Lösung?
Wir freuen uns auf neue Herausforderungen!

Jetzt kontaktieren!