Lesedauer 4 Minuten

Die Entwicklung von Software ist eine hochkomplexe Aufgabe. Es gilt, die Anforderungen des Kunden mit dem Machbaren zu vereinen und am Ende ein Produkt zu entwickeln, dass vom Nutzer leicht bedient werden kann. Darüber hinaus muss die Software sicher sein, zuverlässig und fehlerfrei funktionieren. Qualitätssicherung (engl. Quality Assurance, QA) ist ein fester Bestandteil der Softwareentwicklung und findet idealerweise nicht erst am Ende sondern kontinuierlich während des Entwicklungsprozesses statt.

Wer gute Software entwickeln möchte, sollte auch Softwaretests von Anfang an in den Entwicklungsprozess mit einbeziehen. Die Qualitätssicherung in der Softwareentwicklung verursacht zwar zusätzliche Kosten, ist aber in jedem Fall günstiger, als wenn darauf gänzlich verzichtet wird. Warum ist das so? Ganz einfach: Bei der Entwicklung von Software entstehen Fehler. Immer. Nur wer diese frühzeitig entdeckt und beseitigt, kann ein gutes Produkt abliefern.

Vorteile der Qualitätssicherung in der Softwareentwicklung

  1. Qualitätssicherung spart Zeit und Geld
    Wer die Qualitätssicherung von Anfang an als festen Bestandteil der Softwareentwicklung begreift, spart Zeit und Geld. Softwarefehler können in Spezifikationen, im Code oder im Design verursacht werden. Und sie kommen immer vor! Werden Fehler frühzeitig identifiziert, können sie um ein vielfaches günstiger und einfacher beseitigt werden. Je später Fehler entdeckt werden, desto länger die Entwicklungszeit und teurer die Folgen. Es ist ein bisschen wie beim Bauen mit Lego: Wer einen anfänglichen Konstruktionsfehler erst am Ende entdeckt, muss im Ernstfall wieder ganz von vorne anfangen.
  2. Qualitätssicherung sorgt für mehr Sicherheit
    Sicherheit ist das A und O der Softwareentwicklung. Was heute noch kein Sicherheitsproblem darstellt, kann schon morgen eines sein. Daher sorgt eine kontinuierliche Qualitätssicherung schon während des Entwicklungsprozesses dafür, dass Sicherheitslücken frühzeitig erkannt und beseitigt werden können.
  3. Qualitätssicherung sorgt für eine hochwertige Nutzererfahrung
    Qualitätsprobleme mit der Software wirken sich auf die Funktionalität und damit auf die Nutzererfahrung aus. Bei der Entwicklung einer guten Software gehört der Nutzer an die erste Stelle. Nur das garantiert ein hochwertiges Produkt. So ist die Gestaltung des User Interfaces sowohl für die Nutzererfahrung als auch für die Qualitätssicherung wichtig. Übersichtlichkeit, Bedienbarkeit, Geschwindigkeit, all das sind Faktoren die ein gutes Produkt ausmachen.

Softwaretests: Die vier Testkategorien der Qualitätssicherung

Bei der Qualitätssicherung in der Softwareentwicklung kann man Softwaretests in vier Testkategorien unterscheiden: Den Unit-Test (auch Komponententest genannt), den Integrationstest, der Systemtest und der Abnahmetest.

  1. Der Unit-Test
    Beim Unit-Test oder Komponententest werden die einzelnen Bestandteile des Quellcodes einer Software getestet. Dabei kann es sich auch um einzelne Softwaremodule handeln. Diese Testmethode ermöglicht das detaillierte Testen einzelner Komponenten und damit die schnelle Fehlersuche bei Weiterentwicklungen oder Änderungen im Quellcode. Auch lässt sich so der Quellcode gut vom Test-Code trennen.
  2. Der Integrationstest
    Beim Integrationstest werden die Abhängigkeiten einzelner Softwarekomponenten oder -module untereinander getestet. Hier wird die Zusammenarbeit geprüft. Ein Schwerpunkt liegt dabei auch auf den Schnittstellen. Werden einzelne Werte korrekt übergeben? Gibt es womöglich Denkfehler beim Programmablauf? Beim Integrationstest fallen solche Fehler auf.
  3. Der Systemtest
    Der Systemtest prüft die Software auf alle Anforderungen aus dem Pflichtenheft. Kurz gesagt: Macht die Software das, was sie soll? In dieser Testumgebung wird die Software auf alle funktionalen und nicht-funktionalen Anforderungen überprüft. Die funktionalen Aufgaben einer Software betreffen alle Aufgaben, die eine Software erfüllen können soll. Die nicht-funktionalen Aufgaben einer Software sind die Bedienbarkeit, Zuverlässigkeit oder Wartbarkeit. Nicht-funktionale Aufgaben sind schwerer zu testen als funktionale Aufgaben, einfach auch, weil sie sich schlechter automatisieren lassen und meist manuell durchgeführt werden müssen.
  4. Der Abnahmetest
    Als letzter Test kommt der Abnahmetest ins Spiel. Hier hat man als Softwareentwickler nur noch wenig Einfluss, da jetzt der Kunde am Zug ist, die Software zu testen. Das macht dieser in der Regel ganz intuitiv mit echten eigenen Daten. In diesem Test zeigt sich, ob die vorigen Testreihen erfolgreich waren. Denn dann sollten beim Abnahmetest nur noch Kleinigkeiten auffallen und größere Bugs ausbleiben.

Continuous Integration: Weiterentwicklung von Software

Ist eine Software einmal fertiggestellt, ist das Ende der Fahnenstange damit meist nicht erreicht. Ob neue Kundenanforderungen neue Features verlangen oder sicherheitsspezifische Änderungen notwendig werden: Eine Software ist einem steten Wandel unterzogen und wird meist kontinuierlich weiterentwickelt. Auch hier muss die Qualitätssicherung dafür sorgen, dass die Software bei Anpassungen fehlerfrei funktioniert.

Eine gute Qualitätssicherung testet kontinuierlich während der Softwareentwicklung. Diese Methode nennt man auch „Continuous Integration“.  Die kontinuierliche Integration in der Softwareentwicklung ist ein Ansatz, der verschiedene Qualitätssicherungsmaßnahmen kombiniert. Ziel ist es, bei der Weiterentwicklung von Software sicherzustellen, dass alle geplanten Änderungen sowie neue Features korrekt funktionieren und keine unerwünschten Effekte innerhalb bereits bestehender Module auslösen. Dieser qualitätssichernde Ansatz unterstützt den Entwicklungsprozess kontinuierlich und sorgt dafür, dass Entwickler zum Zeitpunkt der Auslieferung ruhig schlafen können.

Eine gute Analogie für den Prozess wäre die einer Großküche: Verschiedene Köche arbeiten an einem Menü, können aber nicht einzeln überprüfen, ob die Zusammensetzung der einzelnen Gerichte perfekt ist. Diese Rolle fällt dem „Chef de Cuisine“ zu, der die kontinuierliche Integration der Küche überwacht.

Bei der kontinuierlichen Integration werden regelmäßig automatische und manuelle Tests durchgeführt. Werden diese bestanden, kann ein Update, also ein „stable Release“ an den 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 aufgezeichnet, und jede frühere Version kann zur Überprüfung und Qualitätssicherung abgerufen werden. So lassen sich auch einfacher frühere Fehler  beseitigen, falls diese einmal an den Kunden weitergegeben wurden.

Coding Conventions sorgen für Zuverlässigkeit

Die „Coding Conventions“ sind kein fester Bestandteil der Qualitätssicherung, sorgen aber dafür, dass eine Software von verschiedenen Entwicklern gleich gut bearbeitet werden kann. Hierbei handelt es sich um definierte Programmierregeln innerhalb des Quellcodes. Diese tragen dazu bei, eine gewisse Einheitlichkeit und Übersichtlichkeit zu wahren. Das ermöglicht es anderen Programmierern, den Quellcode schnell zu verstehen und weiterzuentwickeln. Die größte Gefahr in einem Unternehmen ist ein Softwareentwickler, der einen Quellcode verfasst hat, den andere gar nicht oder nur schwer nachvollziehen können. Fällt dieser Entwickler aus, wird es schwer, die Software anschließend fortzuführen. Kodierungskonventionen legen zum Beispiel fest, wie Funktionen und Datentypen gekennzeichnet werden. Sie helfen bei der Dokumentation von Implementierungen und können dabei helfen, eine ordentliche Struktur innerhalb der Software aufrechtzuerhalten.

Softwaretests: Die 10 Top Test-Tools

Appium
Testautomatisierung
Appium ist ein Open-Source-Tool zur Automatisierung von nativer, mobiler Web- und hybrider Anwendungen auf iOS- und Android-Plattformen.
http://appium.io/

Fiddler
Fehlersuche
Fiddler ist eine HTTP-Debugging-Proxy-Server Anwendung. Sie erfasst den HTTP- und HTTPS-Verkehr und protokolliert ihn (zur Überprüfung durch den Benutzer).
http://www.telerik.com/fiddler

SoapUI
Last- und Funktionstests
SoapUI ist eine Anwendung zum Testen von Webdiensten für serviceorientierte Architekturen (SOA) und repräsentative Zustandsübertragungen.
http://www.soapui.org

Selenium
Test-Automatisierung
Selenium ist ein portables Software-Testing Framework für Webanwendungen.
http://docs.seleniumhq.org

Sauce-Labs
Testen in der Cloud
Sauce Labs ist eine in der Cloud gehostete, automatisierte Plattform für automatisierte Anwendungstests.
https://saucelabs.com

Gatling
Last und Leistung
Ein Lasttest-Tool für die Analyse und Messung der Leistung einer Vielzahl von Dienste, mit Schwerpunkt auf Webanwendungen.
http://gatling.io

Confluence
Test-Verwaltung
Eine Software für die Zusammenarbeit im Team. In Java geschrieben und wird hauptsächlich in Unternehmensumgebungen eingesetzt.
https://confluence.atlassian.com

jenkins
Kontinuierliche Integration
Eine plattformübergreifende, kontinuierliche Integrations- und Continuous-Delivery-Anwendung, die die Produktivität erhöht.
https://wiki.jenkins-ci.org

Spock
Unit-Tests
Ein Java-Test-Framework, für den gesamten den gesamten Lebenszyklus einer Software-Anwendung.
https://code.google.com/p/spock/

Crucible
Code-Analyse
Tool zum Überprüfen von Code, Diskutieren von Änderungen, Teilen Wissen auszutauschen und Fehler mit einem flexiblen Überprüfungs-Workflow.
https://de.atlassian.com/software/crucible/

easyname ist ein österreichischer Webhosting und Domain-Anbieter mit Sitz in Wien. Das Unternehmen ist seit 2006 in Österreich erfolgreich und inzwischen auch in vielen anderen Ländern weltweit tätig.

Wir verfügen über zwei Hochleistungsrechenzentren in Wien, sowie über weitere Serverstandorte in Deutschland und der Schweiz. Weil uns die Datensicherheit ein besonderes Anliegen ist, stellen wir zu jedem Hostingpaket auch kostenlose SSL Zertifkate zur Verfügung. Mit unseren intuitiven Tools zur Erstellung von Websites und Webshops und mit Easy Install Apps wie WordPress, Joomla oder PrestaShop können alle schnell in die Online-Welt einsteigen.