/
Grundlagen des Softwaretestens

Grundlagen des Softwaretestens

Inhalt dieser Lerneinheit

Im Rahmen dieser Lerneinheit werden sie mit den folgenden Themen vertraut gemacht:

  • Notwendigkeit des Testens

    • Ursachen für Softwarefehler

    • Rolle des Testens

    • Testen, Qualität und Qualitätssicherung

    • Testaufwand

  • Begriffsdefinitionen

  • Softwaretesten

  • Grundsätze des Softwaretestens

  • Fundamentaler-Testprozess

  • Psychologie des Testens

  • Ethische Richtlinien

Notwendigkeit des Testens

Welchen Bedrohungen setzen wir uns aus, wenn wir Software-Systeme nicht oder nicht richtig testen?

Software-Systeme haben in unserer Gesellschaft zweifelsfrei eine zunehmende Bedeutung und wir machen uns und unser Leben oder Überleben davon abhängig. Der Schaden welcher durch mangelhafte Software entsteht ist mannigfaltig und kann von Geld-, Zeit-, oder Imageverlust bis hin zur Gefährdung von Menschenleben führen.

Das Testen von Software-Systemen kann helfen, das Risiko durch schadhafte oder mangelhafte Software zu reduzieren und leistet somit einen wesentlichen Beitrag am Unternehmenserfolg.

Ursachen für Softwarefehler

Einleitend folgender Leitgedanke aus dem Requirements Engineering:

"Wer nicht weiss was er will, bekommt das was er verdient!"

Dieser so saloppe Spruch stellt den Bezug zum Requirements Engineering her. Denn wenn wir nicht wissen was wir wollen und wie wir es wollen ist die Herstellung von Qualität äusserst schwierig.

Das Requirements Engineering bildet insofern die Basis für das Softwaretesten und somit für die Qualitätssicherung.

Begründung:

Qualität wird laut der Norm DIN EN ISO 9000:2015-11 (der gültigen Norm zum Qualit) als „Grad, in dem ein Satz inh Merkmale eines Objekts Anforderungen erfüllt“ definiert. Die Qualität gibt damit an, in welchem Maße ein Produkt (Ware oder Dienstleistung) den bestehenden Anforderungen entspricht.

Also, ohne Anforderungen keine Qualitätssicherung.

Ursachen für Softwarefehler

Ursachen für Fehler begründen sich durch Fehlhandlungen von Menschen oder durch umgebungsbedingte Einwirkungen.

Mensch:

  • Arbeiten unter Zeitdruck

  • mangelhafte Ausbildung

  • zu grosse Komplexität

  • zu viele Schnittstellen

  • mangelhafte Kommunikation

Umgebung:

  • Strahlung

  • Schmutz

  • Defekte Hardware

Rolle des Testens

Intensives Testen von Systemen und Dokumentation kann helfen, das Risiko, dass Probleme im operativen Betrieb auftreten, zu reduzieren. Es kann dazu beitragen, die Qualität des Softwaresystems zu erhöhen, indem Fehler vor der Freigabe in der operativen Verwendung gefunden und behoben werden. Softwaretesten kann auch notwendig sein, um vertragliche oder gesetzliche Vorgaben oder spezielle Industrienormen zu erfüllen.

  • Testen verfolgt die nachfolgenden Ziele:

  • Fehlerwirkungen nachweisen.

  • Qualität bestimmen.

  • Vertrauen in das Programm erhöhen.

  • Fehlerwirkungen vorbeugen.

Testen, Qualität und Qualitätssicherung

Definition von Qualität

Qualität Gesamtheit der Merkmale und Merkmalswerte eines Produkts oder einer Dienstleistung, die sich auf deren Eignung beziehen, festgelegte oder vorausgesetzte Erfordernisse zu erfüllen. (Spillner & Linz, 2005)

Software Qualität

Software-Qualität Gesamtheit der Merkmale und Merkmalswerte eines Softwaresystem-Produkts, die sich auf dessen Eignung beziehen, festgelegte oder vorausgesetzte Erfordernisse zu erfüllen.

Idee der Qualitätssicherung

  • Aus Fehlern lernen

  • Testen zur Qualitätssicherung

Qualitätssicherung (QS) (englisch Quality Assurance (QA)) oder Qualitätskontrolle (englisch Quality Control (QC)) ist ein Sammelbegriff für unterschiedliche Ansätze und Maßnahmen zur Sicherstellung festgelegter Qualitätsanforderungen

Qualitätsmerkmale von Software

„Unter Softwarequalität versteht man die Gesamtheit der Merkmale und Merkmalswerte eines Softwareprodukts, die sich auf dessen Eignung beziehen, festgelegte oder vorausgesetzte Erfordernisse zu erfüllen“ (Ist/Soll).[1]

Qualitätsmodelle existieren zum Beispiel in der Form des ISO-Standards ISO/IEC 9126. Diese Norm definiert die in der nebenstehenden Grafik dargestellten Qualitätskriterien für Software in zweistufiger Struktur. Danach wird deutlich, dass unter Softwarequalität mehr als nur Fehlerfreiheit (die im Wesentlichen dem Kriterium Funktionalität zuordenbar ist) verstanden wird.

Die Qualitätsmerkmale benennen unterschiedliche Eigenschaften, die die Software aufweisen soll. Dies sind auf oberster Ebene:[3]

funktionale Eigenschaften, „die grundlegenden Eigenschaften zu den Funktionen der Software“ (was sie funktional leisten soll und wie),

nicht-funktionale Eigenschaften, die „das Betriebsverhalten des Softwareprodukts im täglichen Einsatz kennzeichnen.“

Während bei den nicht-funktionalen Eigenschaften zur Zuverlässigkeit, Benutzbarkeit (Usability) und Effizienz die Anforderungen einzuordnen sind, die das Softwareprodukt bei seinem Betrieb erfüllen soll, sind die Qualitätskriterien zu Änderbarkeit (Wartbarkeit) und Übertragbarkeit auf die interne Beschaffenheit der Software (i. W. des Quelltextes) ausgerichtet, die ggf. erforderliche Anpassungsmaßnahmen ermöglichen/vereinfachen soll.

Diese Kriterien stellen einen Rahmen dar, der für einzelne Softwareprodukte in individuellen Spezifikationen konkretisiert werden kann, um in der Softwareentwicklung berücksichtigt zu werden.

Bereiche der Qualitätssicherung (Massnahmenkategorien)

  • Organisatorische Massnahmen

  • Konstruktive Massnahmen

  • Analytische Massnahmen

Testen und Kosten

Je später ein Fehler entdeckt wird, desto teurer ist die Behebung. Werden frühe Testaktivitäten wie Reviews der Anforderungsdokumente und erstellen der Testspezifikation realisiert, verhindern diese Aktivitäten Folgefehler und tragen damit bereits zur Qualitätssteigerung bei. Die Fehlerkosten entsprechen dem Risiko-Potenzial.

Der Testaufwand (in Softwareprojekten) liegt je nach Autor zwischen 20 % und 70 % der Gesamtkosten. Pol, Koomen und Spillner beziffern sie in[1] mit 30 % bis 40 % des Gesamtbudgets. Die Streubreite wird von projektspezifischen Gegebenheiten bestimmt.

Wenn der Testaufwand für einzelne Phasen des Testprozesses betrachtet wird, ist er unterschiedlich verteilt: Mit je circa 40 % sind häufig die Test-Spezifikation und die Test-Durchführung beteiligt. Der Rest wäre für die Planung, Auswertung und den Testabschluss zu veranschlagen.

 

 

Die Testintensität sollte sich an der Höhe der Fehlerfolgekosten orientieren

Nach den "Prinzipien des Softwaretestens" (ISTQB), Grundsatz 2, ist vollständiges Testen nicht möglich (*); denn Testen kann zwar die Anwesenheit von Fehlern zeigen, nicht aber deren Abwesenheit (Grundsatz 1) - (*) weil alle Einflussgrößen, in allen möglichen Kombinationen, praktisch nicht prüfbar sind (außer bei trivialen Funktionen).

Deshalb müssen die Testaktivitäten strategisch geplant werden, um die Testintensität, somit auch den Testaufwand, "angemessen" zu wählen. Nach Juran, referenziert in[1], soll der Testaufwand so hoch sein, dass die Gesamtkosten (Testaufwand plus potenzielle Fehlerfolgekosten) auf einem möglichst niedrigen Niveau liegen. Wie die Grafik schematisch zeigt, entstehen bei zu geringer Testintensität überproportional hohe Fehlerfolgekosten, bei zu hoher Testintensität (deren Kosten linear verlaufen) sind die Testkosten im Verhältnis zur erwartbaren Reduzierung von Fehlerfolgekosten (aus noch vorhandenen Fehlern) zu hoch.

Nach ISTQB[2] soll die Höhe des Testaufwands so bemessen sein, dass die Tests genug Informationen liefern, um über die Freigabe (der Software) entscheiden zu können.

Begriffsdefinitionen

Ein Fehler kann somit als die Nichterfüllung einer festgelegten Anforderung, eine Abweichung zwischen dem Ist-Verhalten (während der Ausführung der Tests oder des Betriebs) und dem Soll-Verhalten (in der Spezifikation oder den Anforderungen) bezeichnet werden.

Eine Fehlerhandlung (Error) ist eine menschliche Handlung (etwa ein Programmierfehler eines Entwicklers), die zu einem Fehlerzustand in der Software führt.

Ein Fehlerzustand (fault) – auch Defekt oder innerer Fehler – ist ein inkorrektes Teilprogramm, eine inkorrekte Anweisung oder eine inkorrekte Datendefinition und damit die Ursache für das Auftreten einer Fehlerwirkung.

Eine Fehlerwirkung (failure) – oder äusserer Fehler – ist die Wirkung eines Fehlerzustandes, die bei der Ausführung des Testobjekts nach «aussen» in Erscheinung tritt. In der Literatur werden auch Bezeichnungen wie Fehlfunktion oder Ausfall verwendet.

Ein Mangel liegt vor, wenn eine gestellte Anforderung oder eine berechtigte Erwartung nicht angemessen erfüllt wird.

Softwaretesten

Was gehört zum Testen?

Definition zum Begriff Testen:

  • Testen bezeichnet den gesamten Prozess, ein Programm auf systematische Weise auszuführen, um die korrekte Umsetzung der Anforderungen nachzuweisen und um Fehlerwirkungen aufzudecken.

  • Testen bezeichnet jede einzelne (im Allgemeinen stichprobenartige) Ausführung des Testobjektes unter spezifizierten Bedingungen zum Zwecke des Überprüfens der (beobachteten) Ergebnisse im Hinblick auf gewisse gewünschte Eigenschaften.

  • Testen ist der Oberbegriff für alle Tätigkeiten und Stufen im Testprozess.

Zum Testen gehört mehr als nur das Ausführen von Tests:

  • Testkonzept erstellen

  • Planung und Steuerung der Tests

  • Auswahl der Testbedingungen

  • Testfallspezifikation

  • Testdurchführung

  • Überprüfen der Resultate

  • Auswertung der Ausgangskriterien

  • Berichte über den Testprozess und das zu testende System

  • Test-Abschlussarbeiten (z.B. nachdem eine Testphase abgeschlossen ist)

Ziele des Testens

Das Softwaretesten verfolg die folgenden Zielsetzungen:

  • Aufdecken von Fehlern

  • Schaffen von Vertrauen

  • Bestimmung der Softwarequalität

  • Fehlerentwicklung vorbeugen

Weitere Zielsetzungen sind:

  • Beim Herstellen von Tests kann ein Hauptziel sein, so viele Fehlerwirkungen wie möglich zu verursachen.

  • Beim Abnahmetest kann das Hauptziel darin bestehen, zu bestätigen, dass das System wie vorausgesagt funktioniert. Über die vom System erfüllten Anforderungen wird eine Vertrauensbasis geschaffen.

  • In manchen Fällen zielt das Testen hauptsächlich darauf ab, die Softwarequalität zu bewerten (ohne der Absicht Mängel zu beheben), um die Beteiligten über das Risiko einer Systemfreigabe zu einem bestimmten Zeitpunkt zu informieren.

  • Wartungstests beinhalten oft Tests, die sicherstellen sollen, dass durch die Änderung der Software keine neuen Fehler eingebaut wurden (Regressionstests).

  • Beim betrieblichen Abnahmetest kommt es vor allem darauf an, ein System hinsichtlich Ausprägungen wie Zuverlässigkeit, Wiederherstellbarkeit oder Verfügbarkeit zu bewerten.

  • Testabdeckung gegenüber den Testbedingungen (Testbedingungen sind Merkmale eines-Testobjektes, die durch Testfälle geprüft werden können).

Grundsätze des Softwaretesten

Allgemeine Grundsätze des Softwaretestens Grundsätze für das Softwaretesten Die nachfolgenden Grundsätze in Bezug auf das Testen haben sich als generelle Leitlinien etabliert. Die folgenden Texte sind aus dem ISTQB-Syllabus übernommen.

  • Testen zeigt die Anwesenheit von Fehlern. Mit Testen wird das Vorhandensein von Fehlerzuständen nachgewiesen. Ausreichendes Testen verringert die Wahrscheinlichkeit, dass noch unentdeckte Fehlerzustände im Testobjekt vorhanden sind. Mit Testen lässt sich jedoch keine Fehlerfreiheit beweisen. Selbst wenn im Test keine Fehlerwirkung aufgezeigt wird, ist dies kein Nachweis für Fehlerfreiheit.

  • Erschöpfendes (vollständiges) Testen ist nicht möglich Ein erschöpfender Test, bei dem alle möglichen Eingabewerte und deren Kombinationen unter Berücksichtigung aller unterschiedlichen Vorbedingungen ausgeführt werden, ist mit Ausnahme sehr trivialer Testobjekte nicht durchführbar. Tests können immer nur Stichproben sein. Der Testaufwand richtet sich deshalb nach Risiko und Prioritäten.

  • Mit dem Testen frühzeitig beginnen Testaktivitäten sollen im System- oder Softwarelebenszyklus so früh wie möglich beginnen und definierte Ziele verfolgen. Durch frühzeitiges Prüfen werden Fehler frühzeitig erkannt und Folgefehler können verhindert werden.

  • Häufung von Fehlern: Oft finden sich in nur wenigen Teilen eines Testobjekts die meisten Fehlerursachen. Eine Gleichverteilung der Fehlerzustände im Testobjekt ist nicht gegeben. Dort wo Fehlerwirkungen nachgewiesen wurden, finden sich meist noch weitere. Beim Testen muss flexibel auf diesen Umstand reagiert werden.

  • Zunehmende Testresistenz (Pesticide paradox) So wie Schädlinge gegen Pflanzenschutzmittel resistent werden, lassen Tests in ihrer Wirksamkeit nach. Werden Tests nur wiederholt, decken sie keine neuen Fehlerwirkungen mehr auf. Verbliebene oder neu eingebaute Fehlerzustände sind in den Programmteilen enthalten, die von den Tests nicht ausgeführt werden. Damit die Effektivität der Tests nicht sinkt, sind die vorhandenen Testfälle regelmässig zu prüfen und durch neue oder modifizierte Testfälle zu ergänzen. Bisher nicht geprüfte Teile der Software oder unberücksichtigte Konstellationen bei der Eingabe werden ausgeführt und somit mögliche weitere Fehlerwirkungen nachgewiesen.

  • Testen ist abhängig vom Umfeld Je nach Einsatzgebiet und Umfeld des zu prüfenden Systems gilt es, das Testen anzupassen. Kein System kann auf die exakt gleiche Art und Weise getestet werden. Die Intensität des Testens, die Definition der Testausgangskriterien usw. sollten bei jedem System seinem Einsatzumfeld entsprechend festgelegt werden. Sicherheitskritische Systeme verlangen andere Prüfungen als beispielsweise E-Commerce-Systeme. COTS (Commercial Off The Shelf Software) Systeme (Standardsoftware: bspw. Microsoft, SAP, Office…) wiederum stellen aufgrund der Verbreitung dieser Systeme einen anderen Anspruch an das Testvorgehen und Umgebungssetup.

  • Trugschluss: Keine Fehler = brauchbares System Fehlerwirkungen zu finden und Fehlerzustände zu beseitigen, garantiert noch lange nicht, dass das System auch den Vorstellungen und Erwartungen der Nutzer entspricht. Frühzeitiger Einbezug der späteren Nutzer in den Entwicklungsprozess und die Nutzung von «Prototyping» sind vorbeugende Massnahmen zur Vermeidung des Problems. Ende des Zitats aus dem Syllabus.

Fundamentaler Testprozess

Dieser fundamentale Testprozess besteht aus folgenden Hauptaktivitäten:

  • Testplanung und Teststeuerung.

  • Testanalyse und Testentwurf.

  • Testrealisierung und Testdurchführung.

  • Testauswertung und Testabschlussbericht.

  • Testabschluss.

Diese Aktivitäten werden auf allen Teststufen wiederholt.

Inhalte der Testplanung

Festlegen der Teststrategie

„Abstrakte Beschreibung der vorgesehenen Teststufen und der Art und Weise, wie innerhalb dieser Teststufen vorzugehen ist, für eine Organisation oder ein Programm - gültig für ein oder mehrere Projekte.“ [GTB-GLOSS]

Festlegen der Testvorgehensweise „Die Implementierung einer Teststrategie in einem spezifischen Projekt….“�

[GTB-GLOSS]

Erstellen des Testkonzepts „Ein Dokument, das u.a. den Gültigkeitsbereich, die Vorgehensweise, die Ressourcen und die Zeitplanung der beabsichtigten Tests mit allen Aktivitäten beschreibt.“ [GTB-GLOSS]

Innerhalb der Testplanung werden je Teststufe

  • der Testumfang bestimmt,

  • die Risiken des Testens ermittelt,

  • die Testziele bestimmt,

  • die Testaktivitäten mit zugeordneten Rollen und

  • die Testverfahren / Testmethoden festgelegt,

  • die Testendekriterien und

  • die geforderte Testabdeckung / -überdeckung definiert,

  • die Testmittel ausgesucht,

  • die Ressourcen und Termine (Meilensteine) für alle Testaufgaben und

  • der Detaillierungsgrad für die Testszenarien �festgelegt.

  • Integration und Abstimmung der Testaktivitäten in den �Software-Lebenszyklus

  • Festlegen von Inhalt und Form der Testdokumentation (Umfang, Detaillierungsgrad, Struktur, Templates)

  • Auswahl von geeigneten Metriken zur Überwachung und Steuerung (von Testvorbereitung, -durchführung, Fehlerbehebung, Risiken)

  • Erstellung von Vorgaben für die Testvorbereitung und -durchführung von Testszenarien, im Hinblick auf Nachvollziehbarkeit und Wiederholbarkeit

Inhalte der Teststeuerung

  • Messen und Analysieren der Resultate

  • Überwachung und Dokumentation von

  • Testfortschritt,

  • erreichter Testabdeckung und

  • Testendekriterien.

  • Korrekturmaßnahmen initiieren

  • Entscheidungen fällen

  • Weitergabe der Teststeuerungsresultate �an die Testplanung � Einarbeitung in die Testpläne

Inhalte der Testanalyse

  • Review der Testbasis (z.B. Anforderungen, Architektur, Design, Schnittstellen)

  • Identifizierung der Testobjekte/ Testbedingungen / Testkriterien

  • Übersetzung der allgemeinen Testziele in konkrete Testbedingungen / Testfälle

  • Testentwurf / Testentwurfsspezifikation

  • Bewertung der Testbarkeit von Anforderungen und System

  • Entwurf der Testumgebungsorganisation

  • Identifikation der benötigten Infrastruktur und Werkzeuge

Inhalte Testrealisierung und Testdurchführung

Bei der Testrealisierung und -durchführung werden aus�den Testbedingungen und logischen Testfällen konkrete Testfälle entworfen und ausgeführt.

Testrealisierung u. Testdurchführung umfassen die folgenden Hauptaufgaben:

  • Erstellung und Priorisierung konkreter Testfälle

  • Erstellung der Testdaten

  • Zusammenstellen von Testsuiten (Chronologische Abfolge von Testfällen)

  • Entwerfen der Testskript / Testdrehbuch

  • Vorbereitung der Testrahmen und Entwicklung von Skripten zur Testautomatisierung

  • Kontrolle, ob das Testsystem korrekt �aufgesetzt wurde

  • Sicherstellung der richtigen Konfigurationen

  • Ausführung der Tests

  • Protokollierung der Testergebnissen

  • Vergleich Ist-Ergebnisse / Ist-Verhalten mit den erwarteten Soll-Ergebnissen /   Soll-Verhalten

  • Gefundene Fehlerwirkungen oder Abweichungen werden festgehalten und analysiert

  • Durchführung

    • Fehlernachtest

    • Regressionstest

Inhalte der Testauswertung

Testauswertung und Bericht umfassen die folgenden Hauptaufgaben:

  • Auswertung der Testprotokolle

  • Ist das Testende erreicht?

  • Testbericht erstellen

  • Testauswertung und Bericht sollen in jeder Teststufe stattfinden!

Inhalt Testabschluss

Der Abschluss der Testaktivitäten umfasst die folgenden Hauptaufgaben:

  • Kontrolle der Arbeitsergebnisse

  • Schließung der Fehlermeldungen

  • Abnahme des Systems dokumentieren

  • Dokumentation und Archivierung der Testmittel, Testumgebung und der Infrastruktur für spätere Wiederverwendung

  • Übergabe der Testmittel an die Wartungsorganisation

  • Analyse und Dokumentation von Verbesserungspotenzial (Testprozessverbesserung)

Übersicht der Projekt und Testdokumentation

Psychologie des Testens

Zu Beginn des Testprozesses sollten die Ziele und Risiken klar formuliert werden:

  • Durch klare Zielsetzungen für den Test kann die Effektivität der Tester verbessert werden.

  • Die Blindheit gegenüber eigenen Fehlern sollte beachtet werden.

  • Eine sachliche Kommunikation und Rückmeldung bezüglich Probleme sollte eingehalten werden.

Unabhängiges Testen und Eigenüberwachung sollten ausgewogen werden. Dabei ist sachliches kommunizieren sehr wichtig. Die Haltung bzw. Einstellung, die während der Testdurchführung und der Review-Phase benötigt wird, unterscheidet sich von der Analyse oder Entwicklung. Die richtige Einstellung befähigt die Entwickler, ihren eigenen Code zu testen.

Die Verteilung der Verantwortung auf Tester und Entwickler hat Vorteile: Man profitiert von einer unabhängigen Sichtweise geschulter und professioneller Testexperten. Deshalb ist unabhängiges Testen oft effizienter (Schutz vor Befangenheit) und kann in jeder Teststufe angewendet werden. Unabhängigkeit darf allerdings auf keinen Fall als einzige Lösung angesehen werden. Auch Entwickler können viele Fehler in ihrem eigenen Code finden.

Ethnische Richtilinien

Durch ihre Tätigkeit im Bereich Softwaretesten erhalten Personen oft Zugang zu vertraulichen und rechtlich privilegierten Informationen. Damit diese Informationen nicht missbräuchlich verwendet werden, sind ethische Leitlinien nötig. In Anlehnung an den Ethik-Kodex von ACM und IEEE stellt das ISTQB ® die folgenden ethischen Leitlinien auf.

Related content

Syllabus integrierte operative Informationssysteme ERP
Syllabus integrierte operative Informationssysteme ERP
Read with this
Testen im Softwarelebenszyklus - Vorgehensmodelle der Informatik
Testen im Softwarelebenszyklus - Vorgehensmodelle der Informatik
More like this
Testmanagement
Testmanagement
More like this
Grundlagen der Einführung von Software
Grundlagen der Einführung von Software
More like this
Lerneinheit: Softwarequalität
Lerneinheit: Softwarequalität
More like this
Lerneinheit: Anforderungsbasiertes Testen
Lerneinheit: Anforderungsbasiertes Testen
More like this