Software-Testing

Qualitätskontrolle in Software-Entwicklungsprojekten

Für uns als IT-Dienstleister mit einem hohen Anteil an Software-Entwicklungsprojekten spielt das Software-Testing eine entscheidende Rolle. Dabei zielen wir nicht nur darauf ab, unsere Entwicklungen auf Vollständigkeit und Funktionsfähigkeit zu prüfen, vielmehr geht es darum, die Anforderungen unserer Kunden punktgenau zu erfassen, die Bedürfnisse unserer Kunden zu erfüllen und damit die maximale Kundenzufriedenheit zu erreichen.

In unserem heutigen Blog beschäftigen wir uns also mit dem Software-Testing und speziell mit den Fragen, was Software-Testing ist, warum wir Softwaretests durchführen sollten und wie wir unsere Softwaretests hinsichtlich unserer Entwicklungen im Open Source ERP-System Odoo durchführen können.

Das Software-Testing stellt die Qualität von Softwareentwicklungen sicher
Das Software-Testing stellt die Qualität von Softwareentwicklungen sicher.

Was ist Testing?

Ein Softwaretest wird sehr unterschiedlich definiert. Eine Definition liefert Ernst Denert, wonach der "Test […] der überprüfbare und jederzeit wiederholbare Nachweis der Korrektheit eines Softwarebausteines relativ zu vorher festgelegten Anforderungen" ist. Eine weitere, umfangreichere Definition liefern Martin Pol, Tim Koomen, Andreas Spillner: "Unter Testen versteht man den Prozess des Planens, der Vorbereitung und der Messung, mit dem Ziel, die Eigenschaften eines IT-Systems festzustellen und den Unterschied zwischen dem tatsächlichen und dem erforderlichen Zustand aufzuzeigen."

Die Kategorisierung von Softwaretests
Die Kategorisierung von Softwaretests.

Softwaretests lassen sich dabei in vier mögliche Kategorien unterscheiden, Unit Tests, Integrationstests, Systemtests und Abnahmetests. Innerhalb der vier Kategorien testen wir auf unterschiedlichen Ebenen.

Der Unit Test beinhaltet das Testing einzelner Komponenten, also Units, in einem separaten Sourcecode. Damit können wir Fehler bereits während der Weiterentwicklung beziehungsweise bei Änderungen identifizieren und beheben. Auf der nächsten Stufe führen wir den Integrationstest durch. Dabei werden nicht mehr nur einzelne Komponenten, sondern die Abhängigkeit zwischen verschiedenen Komponenten getestet. Somit können wir bereits einzelne Prozessschritte durchlaufen, das Miteinander der einzelnen Komponenten testen und Fehlerquellen eliminieren.

Während des Systemtests prüfen wir alle Anforderungen in einer definierten Testumgebung, also einem Testsystem. Im Idealfall ist das Testsystem dem Produktivsystem nachempfunden. Dabei testen wir funktionale Anforderungen, also die definierten Funktionen, und nicht-funktionale Anforderungen, also zum Beispiel die Usability. Damit stellt der Systemtest die unmittelbare Vorbereitung auf den Abnahmetest dar. Der Abnahmetest wird in der Regel direkt vom Kunden durchgeführt. Dabei prüft der Kunde, ob die Entwicklung der vorher definierten Anforderung entspricht. Anschließend können wir die Softwareentwicklung an den Kunden übergeben.

Warum sollten wir testen?

Es empfiehlt sich, in den oben genannten oder ähnlichen Kategorien zu testen, denn wir können sagen, dass je später ein Fehler innerhalb einer Entwicklung entdeckt wird, desto größer ist der Aufwand, diesen Fehler zu beheben.

In der Theorie gibt es dafür eine Art Faktor-Regel. Entdeckt der Entwickler einen Fehler selbst, zum Beispiel im Rahmen eines Unit Tests oder eines Integrationstests, kann er den Fehler direkt beheben. Der Faktor hierfür liegt bei 1.

Wird ein Fehler durch eine Testperson entdeckt, liegt der Faktor bereits bei 10. Die Testperson muss den Fehler dokumentieren, an den Entwickler kommunizieren und übergeben. Der Entwickler muss die Entwicklung überarbeiten und das Testsystem aktualisieren, bevor die Testperson erneut testen kann.

Für die Aufdeckung eines Fehlers im Produktivsystem liegt der Faktor bereits bei 100. Zusätzlich zum eben genannten Szenario muss der Entwickler die Entwicklung auch im Produktivsystem korrigieren und dieses aktualisieren. Ein sehr hoher Kommunikationsaufwand sowie die zunehmende Unzufriedenheit des Kunden können daraus folgen.

Wir halten damit fest, dass die verschiedenen Testszenarien wichtig sind, um das Zusammenspiel zwischen Anforderungen, Qualität, Schnelligkeit und Preis der Umsetzung sowie der Zufriedenheit des Kunden ausgewogen zu gestalten. Mit dem Software-Testing gewährleisten wir also die Auslieferung eines Produktes, welches nicht nur die funktionalen und qualitativen Ansprüche an uns selbst, sondern damit auch die Bedürfnisse unserer Kunden erfüllt.

Wie können wir unsere Softwareentwicklungen im Open Source ERP-System Odoo durchführen?

Grundsätzlich sollte das Thema Testing direkt bei der Idee für eine Anpassung an Odoo eine Rolle spielen. Mit der Idee kommen die Anforderungen und Wünsche und damit auch die Erkenntnisse darüber, was gültige und erwartbare, aber auch was ungültige Ergebnisse sind. Diese gültigen und ungültigen Ergebnisse sollten für jede Anforderung mit festgehalten werden, denn daraus lassen sich die späteren Testfälle ableiten.

Sind die Anforderungen spezifiziert, kann pro Anforderung die Art der Softwaretests festgelegt werden. Für jede Anforderung werden dann pro Art die Testfälle spezifiziert. Standardmäßig führen wir in jedem unserer Projekte System- und Akzeptanztests durch, während der Einsatz von Unit- und Integrationstests je nach Anforderung, Kundenwunsch und Komplexität variiert. So sind diese beispielsweise für Anforderungen, die mittels hauseigener Methoden von Odoo erfüllt werden, nicht notwendig.

Auch für unsere Entwicklungen in Odoo führen wir umfangreiche Softwaretests durch
Auch für unsere Entwicklungen in Odoo führen wir umfangreiche Softwaretests durch.

Ist für eine Anforderung eine Entwicklung notwendig und wurden dafür Unit-Tests und/oder Integrationstests spezifiziert, werden diese parallel zur Umsetzung der Anforderung mit entwickelt. Odoo setzt hier auf etablierte Frameworks und erfindet das Rad nicht neu. Im Bereich Python setzt Odoo daher auf unittest und im Bereich JavaScript auf QUnit. So werden die Tests während der Entwicklung regelmäßig mit ausgeführt, um Fehler in der Entwicklung oder bei der Anpassung zu ermitteln.

Ist die Entwicklung samt Tests abgeschlossen und sind aus Entwicklersicht keine Fehler mehr offen, erfolgt der Übergang zu den Systemtests. Sind auch diese erfolgreich, erfolgen die Akzeptanztests und damit die Übergabe der Entwicklung an den Kunden.

Ähnlich wie bei den Tests in der Entwicklung (automatisierte Tests) können auch die System- und Akzeptanztests (manuelle Tests) mehrfach durchgeführt werden. Abhängig ist das beispielsweise vom Ergebnis oder ob sich die Anforderungen im Prozess ändern. Wichtigster Punkt in der Testdurchführung ist dabei der Abgleich des Soll-Zustands mit dem aktuellen Ist-Zustand. Anschließend werden die Ergebnisse dokumentiert und et­wa­ige Fehler an die Entwickler kommuniziert. Gibt es keine Fehler mehr, kann im Prozess fortgefahren werden. Andernfalls ist eine Schleife notwendig.

Unser Fazit

Die Softwaretests stellen in jedem Fall ein wichtiges Instrument der Qualitätskontrolle und -sicherung unserer Entwicklungen dar und helfen uns, die Anforderungen unserer Kunden punktgenau und bestmöglich umzusetzen. Mithilfe der Tests vermeiden wir Fehler in der Entwicklung beziehungsweise Weiterentwicklung neuer Funktionen. Gleichwohl stellen die Softwaretests einen Mehraufwand im Entwicklungsprozess dar, der sich negativ auf die Kosteneffizient der Entwicklungsprojekte auswirkt.

Nichtsdestotrotz sollten sich sowohl Aufraggeber als auch Auftragnehmer der Vorteile von Softwaretests bewusst sein und sich dieser bedienen. Der entstehende Mehraufwand dürfte deutlich geringer ausfallen als die Nacharbeit, die durch mögliche Entwicklungsfehler oder bis dahin unvorhersehbare Umstände entsteht und hinsichtlich eines erfolgreichen Projektabschlusses letztendlich trotzdem umgesetzt werden muss.

Sie wollen mehr zum Thema Software-Testing erfahren oder interessieren sich für die Einführung oder Weiterentwicklung von Odoo in Ihrem Unternehmen? Kontaktieren Sie uns jetzt und wir stehen Ihnen als zuverlässiger IT-Dienstleister und Odoo-Partner zur Seite!

______________________________________________________________________________________________

Quellen: www.wikipedia.org, www.t3n.de, SpringerLink - Testmanagement und Softwaretest, www.odoo.com