Softwarequalität

Softwarequalität & Testautomatisierung Gute Software noch besser machen


Was unterscheidet eigentlich eine gute von einer mittelmäßigen oder schlechten Anwendung? Aus Nutzersicht sind es sicherlich die Effizienz der Abläufe, die Benutzerführung innerhalb der Anwendung, eine intuitive Bedienbarkeit und natürlich allgemein die Gestaltung und Performance.

Für Entwickler und auch den Entscheider bzw. Projektleiter gibt es eine weitere wichtige Maßeinheit, um die Qualität einer Software zu bewerten, nämlich die allgemeine Codequalität. Wurden Codingstandards eingehalten und auch die eher trivial wirkenden Fallszenarien vollständig abgedeckt? Um den Qualitätsstandard so hoch wie möglich zu halten und den Quellcode stetig zu verbessern, gehört es im Software-Entwicklungsprozess dazu alle Bereiche der Software auf ihre einwandfreie Funktionalität und natürlich auch auf ihre Sicherheit hin zu testen.


Mit Testautomatisierung die Qualität ihrer Projekte steigern

Um nicht bei jeder Änderung am Quellcode sehr zeitaufwendig alle Bereiche manuell testen zu müssen, gehört es dabei zum guten Standard jeden Bereich der Software mit sogenannten Unit-Tests automatisiert auf etwaige Schwachstellen und Fehler zu testen und diese im Entwicklungsprozess kontinuierlich auszubessern.

In meinen Projekten nutze ich daher gerne das PHP-Testingframework PHPUnit, PHPStan, Codeception und zur Automatisierung von Frontend-Tests das Selenium-Framework.

Benötigen Sie Unterstützung bei ihrem nächsten Webprojekt?

Niels Langlotz
Web-Entwickler

Tel: +49 176 45 606 488
E-Mail: info(at)typoniels.de

Meine Erfahrung als Entwickler setze ich für Sie gerne bei ihrem nächsten Projekt mit ein, sprechen Sie mich einfach an.

Häufige Fragen & Antworten

Die Antwort auf folgende Fragen könnte Sie auch interessieren

Um die Software-Qualität über den gesamten Entwicklungszyklus hinweg auf einem möglichst hohen Niveau zu halten, gehört es in der professionellen Entwicklung dazu, alle wesentlichen Bestandteile dieses Prozesses mit Qualitätsanalysen zu begleiten.

So werden in der Praxis, wenn nicht sogar direkt nach dem TDD-Verfahren (Testgetriebene Entwicklung) entwickelt wird, die Anwendung mit Unit-, Funktions-, Integrations- und in größeren Projekten auch gerne mit Akzeptanz und Abnahmetests ausgestattet.

Bei Entwicklungsprojekten von TYPONiels kommen aktuell, je nach Anforderungen und Umfang des Projektes, diese Formen von Tests zum Einsatz: 

Unit-Tests
Unit-Test, auch Modultest oder Komponententest, ist ein Testprozess, bei dem die kleinsten prüfbaren Teile oder Einheiten einer Anwendung, die sogenannten Units, einzeln und unabhängig voneinander auf ihren ordnungsgemäßen Betrieb hin untersucht werden. Unit-Tests werden normalerweise von den Softwareentwicklern selbst durchgeführt und in der Regel bei jeder Code-Änderung nochmals automatisiert in der CI-Pipeline ausgeführt. Bei Fehlschlägen ist in der Regel das Einspielen von Änderungen in den Hauptzweig der Anwendung blockiert (Merge Blocking).

Sanity-Tests
Als Sanity Tests bezeichnet man eine Plausibilitätsprüfung. Diese umfassen beispielsweise Plausibilitätsprüfung von Werten, einfache modellbasierte Prüfungen, aber auch Konsistenzprüfungen von Anforderungen. Die Validierung eines umfangreichen Software-Systems beginnt häufig mit der Erstellung von Sanity Tests.

Funktionale-Tests
Funktionstests überprüfen eine Software (bzw. ein System) in Bezug auf funktionale Anforderungsmerkmale, also ob das Verhalten der Software bzw. des Systems den Anforderungen (Requirements) im Pflichtenheft entspricht. Funktionale Tests werden für Systemtests und Akzeptanztests (auch, Abnahmetests, Verfahrenstests oder User Acceptance Tests genannt) eingesetzt. Bei diesen Testarten handelt es sich um Blackbox Tests, da "lediglich" das externe Verhalten ohne Beachtung der internen Struktur bzw. des Codes überprüft wird. Testfälle werden auf Basis von externen Beschreibungen der Software wie Spezifikationen und Requirements erstellt.

Integration-Tests
Unter Integration-Tests bezeichnet man in der Softwareentwicklung eine aufeinander abgestimmte Reihe von Einzeltests, die dazu dienen, verschiedene voneinander abhängige Komponenten einer komplexen Anwendung-Struktur im Zusammenspiel miteinander zu testen. Integration-Tests dienen in der Regel dazu, schnell Fehler zu finden, die eine Änderung in System A im Betrieb dann in System B auslösen könnten.

Abnahme-Tests
Abnahmetests werden in der Regel durch eine natürliche Person aus dem Projektmanagement mithilfe eines Test-Systems durchgeführt und beinhaltetem die Sichtung der Änderung aus der Perspektive eines echten Benutzers. Erfüllen die Änderungen am System die Anforderungen des Tickets / der User-Story, erfolgt die Abnahme und die neuen Funktionen / Änderungen können ins Live-System übernommen werden.

Benutzer-Aktzeptanz-Tests
Benutzer-Akzeptanz-Tests sind in der Softwaretechnik eine Methode zur Überprüfung, ob eine Software aus Sicht des Benutzers wie beabsichtigt funktioniert und dieser die Software akzeptieren. Software-Anbieter testen dies oft mit Beta-Tests, bei denen eine bestimmte Gruppe von Benutzern das neue Feature freigeschaltet bekommen und Feedback eingeholt oder eine Analyse des Nutzungsverhalten durchgeführt wird.

Eine Möglichkeit, die Qualität von Software zu überprüfen, ist das Durchführen von Tests. Es gibt verschiedene Arten von Tests, die verwendet werden können, um die Qualität von Software zu überprüfen, einschließlich:

  1. Unit-Tests: Diese Tests überprüfen, ob einzelne Teile der Software (sogenannte "Units") wie erwartet funktionieren.

  2. Integrationstests: Diese Tests überprüfen, ob verschiedene Teile der Software ordnungsgemäß zusammenarbeiten.

  3. Systemtests: Diese Tests überprüfen, ob die gesamte Software wie erwartet funktioniert.

  4. Akzeptanztests: Diese Tests überprüfen, ob die Software den Anforderungen des Kunden entspricht.

Bei TYPONiels werden automatisierte Tests eingesetzt, um die Qualität der Software zu gewährleisten. Zusätzlich werden die Tools Gitlab CI und SonarQube verwendet, um die Codequalität zu überwachen, sicherzustellen und zu optimieren.

Eine weitere Möglichkeit, die Qualität von Software zu überprüfen, ist das Durchführen von Code-Reviews. Dabei wird der Code von anderen Entwicklern überprüft und Verbesserungsvorschläge gemacht. Code-Reviews haben den Vorteil, dass sie die Qualität und den Standard des Codes verbessern und gleichzeitig die Teamarbeit fördern. Sie können auch dazu beitragen, dass Fehler frühzeitig erkannt und behoben werden, bevor sie zu größeren Problemen werden.

Bei Legacy Projekten ist es sinnvoll, sich die Codebasis einmal ganz genau anzuschauen und diese einer qualitativen Bewertung zu unterziehen.

Auf Basis dieser Bewertung lässt sich in der Regel schon eine erste Einschätzung abgeben, ob es hier sinnvoll ist, das System von Grund neu zu entwickeln oder ob die Codebasis schon in einem guten Zustand ist und man diese als Grundlage verwenden kann, insbesondere da in Legacy Projekte in der Regel bereits viel Entwicklungszeit, Geld und Erfahrung geflossen ist.

Gerne begleite ich das Refactoring Ihrer Legacy Projekte. Sprechen Sie mich an.

Das automatisierte Testen gehört für mich zu einem professionellen und vor allem zeitgemäßen Software-Entwicklung-Workflow dazu und so ist die Implementierung von einfachen Funktionstests, welche bei jedem Rollout als Quality Gate fungieren, bereits im Projektpreis inkludiert.

Die Abdeckung von speziellen Edge Cases wird mit Ihnen im Projektverlauf gesondert besprochen, regelmäßig validiert und nach tatsächlichem Aufwand abgerechnet.