1. Warum sind Softwaretests notwendig? Flashcards
Ursachen von Softwarefehlern
-
Menschliche Fehlhandlungen
- Zeitdruck
- komplexer Code
- Komplexität der Infrastruktur
- sich ändernde Technologien und/oder
- viele Systemwechselbeziehungen
-
Umgebungsbedingungen
- Fehlerzustände in der Firmware (z.B.: durch Strahlung, Schmutz, elektromagnetische Felder)
- Änderungen von Hardwarezuständen
Die Rolle des Testens bei
Entwicklung, Wartung und Betrieb von Software
- Reduktion des Risikos, dass Probleme im operativen Betrieb auftreten
- Erhöhung der Qualität des Softwaresystems:
Fehlerzustände werden vor der betrieblichen Freigabe gefunden und behoben. - Erfüllung von vertraglichen oder gesetzlichen Vorgaben oder speziellen Industrienormen
Testen und Qualität
Testen ermöglicht es, die Qualität (Anzahl der gefundenen Fehlerzustände) von Software zu messen.
Wenn wenige oder keine Fehlerzustände gefunden werden, kann Testen Vertrauen in dei Qualität eines Systems schaffen (–> Reduzierung des allgemeinen Risikioniveaus).
Behobene Fehler steigern die Qualität des Softwaresystems.
Wenn man die Fehlerursachen verstanden hat, die beim Testen in anderen Projeken gefunden wurden, kamm man den Entwicklungsprozess zielgerecht verbessern.
–> Testen sollte als eine Qualitätssicherungmaßnahme in den Entwicklungsprozess integriert sein.
Wie viel Testaufwand ist notwendig?
Hängt vom Risikoniveau ab:
- technische
- Betriebssicherheits-
- und wirtschaftliche Risiken
- sowie Projektrandbedingungen (Zeit und Budget)
Testen sollte genügenden Information liefern, um fundierte Entschiedungen über die Freigabe der getesteten Software oder des Systems treffen zu können.
Freigabe:
- Übergabe des Systems an den nächsten Entwicklungsschritt
- Übergabe des Systems an die Kunden
Testaktivitäten
- Planung und Steuerung der Tests
- Auswahl der Testbedingungen
- Testfallspezifikation
- Ausführung der Testfälle
- Überprüfung der Ergebnisse
- Auswertung der Enekritierien
- Berichte über den Testprozess und das zu testende System
- Abschlussarbeiten nach Abschluss einer Testphase
- Prüfen von Dokumenten (auch Quellcode)
- statische Analysen
Testziele
- Aufdecken von Fehlerzuständen
- Erzeugen von Vertrauen bezüglich des Qualitätsniveaus des Systems
- Liefern von Informationen zu Entscheidungsfindung
- Vorbeugen von Fehlerzuständen
Debugging
Debugging ist eine Entwicklungsaktivität, die die Ursache einer Fehlerwirkung identifiziert, analysiert und entfernt.
Anschließende Fehlernachtests durch einen Tester stellen sicher, dass die Lösung wirklich die Fehlerwikrung behoben hat.
Tester - testen
Entickler - Debugging
Die sieben Grundsätze
des
Softwaretestens
- Testen zeigt die Anwesenheit von Fehlerzuständen
- Vollständiges Testen ist nicht möglich
- Mit dem Testen frühzeitig beginnen
- Häufung von Fehlern
- Widerholungen haben keine Wirksamkeit
- Testen ist abhängig vom Umfeld
- Trugschluss: “Kein Fehler” bedeutet brauchbares System
Grundsatz 1:
Testen zeigt die Anwesenheit von Fehlerzuständen
- Mit Testen wird das Vorhandensein von Fehlerzuständen nachgewiesen.
- Mit Testen lässt sich nicht beweisen, dass keine Fehlerzustände im Testobjekt vorhanden sind,
Grundsatz 2:
Vollständiges Testen ist nicht möglich
- Ein vollständiger Test, bei dem all möglichen Eingabewerte und deren Kombinationen unter Berücksichtung aller unterschiedlichen Vorbedingungen ausgeführt werden, ist nicht durchführbar, mit Ausnahme von sehr trivialen Testobjekten.
- Tests sind immer nur Stichproben, und der Testaufwand ist entsprechend Risiko und Priorität festzulegen.
Grundsatz 3:
Mit dem Testen frühzeitig beginnen
Um Fehlerzustände frühzeitig zu finden, sollen Testaktivitäten im System- oder Softwarelebenszyklus so früh wie möglich beginnen und definierte Ziele verfolgen.
Grundsatz 4:
Häufung von Fehlern
Ein kleiner Teil der Module enthält gewöhnlich die meisten Fehlerzustände, die während der Testphase entdeckt werden oder ist für die meisten Fehlerwirkungen im Betrieb verantwortlich.
Grundsatz 5:
Widerholungen haben keine Wirksamkeit
Wiederholungen der immer gleichen Testfälle führen nicht zu neuen Erkenntnissen.
–> neue Testfälle oder alte modifizieren.
–> nicht geprüfte Teile der Software und neue Konstellationen bei der Eingabe abdecken
Grundsatz 6:
Testen ist abhängig vom Umfeld
Je nach Einsatzgebiet und Umfeld des zu prüfenden Systems ist das Testen anzupassen.
Sicherheitskritische Systeme vs. E-Commerce-Systeme
Grundsatz 7:
Trugschluss: “Kein Fehler” bedeutet ein brauchbares System
Fehlerzustände zu finden und zu beseitigen, hilft nicht, wenn das gebaute System nicht nutzbar ist und nicht den Vorstellungen und Erwartungen der Nutzer entspricht.
Fundamentaler Testprozess
Hauptaktivitäten:
- Testplanung und Steuerung
- Testanalyse und Testentwurf
- Testrealisierung und Testdurchführung
- Bewertung von Endekriterien und Bericht
- Abschluss der Testaktivitäten
Die Reihenfolge wird meist dem Projekt angepasst und all diese Testprozessaktivitäten können in der Praxis zeitlich überlappen oder parallel stattfinden.
Testplanung und Steuerung
Zur Tesplanung gehören folgende Aktivitäten: die Definition der Testziele und die Festlegung der Testaktivitäten, die notwending sind, um Aufgabenumfang und Testziele erreichen zu können.
Teststeuerung ist die fortlaufende Aktivität, den aktuellen Testfortschritt mit dem Plan zu vergleichen und den Status, einschließlich eventueller Abweichungen, zu berichten und eventuell notwendige Anpassungen vorzunehmen.
Testanalyse und Testentwurf
Testanalyse und -entwurf ist die Aktivität, in der die allgemeinen Testziele zu konkreten Testbedingungen und Testfällen verfeinert werden.
Hauptaufgaben:
- Review der Testbasis (z.B. Anforderungen, Software Integrity Level1 (Risikoausmaß), Risikoanalysebericht, Architektur, Design, Schnittstellenspezifikation)
- Bewertung der Testbarkeit von Testbasis und Testobjekten
- Identifizierung und Priorisierung der Testbedingungen auf Grundlage der Testobjektanalyse, der Spezifikation, des Verhaltens und der Struktur der Software
- Entwurf (Design) und Priorisierung von abstrakten Testfällen
- Identifizierung benötigter Testdaten, um Definition von Testbedingungen und Testfällen zu unterstützen
- Entwurf des Testumgebungsaufbaus und Identifikation der benötigten Infrastruktur und Werkzeuge
- Erzeugen (bzw. Sicherstellung) der Rückverfolgbarkeit zwischen Testbasis und Testfällen in beiden Richtungen
Testrealisierung und Testdurchführung
Testrealisierung und -durchführung ist die Aktivität, bei der unter Berücksichtigung aller anderen Informationen, die zur Testdurchführung nötig sind, Testabläufe und Testskripte spezifiziert werden, indem Testfälle in einer besonderen Reihenfolge kombiniert werden. Des Weiteren wird die Testumgebung in dieser Phase entsprechend konfiguriert und genutzt.
Testrealisierung und Testdurchführung
Hauptaufgaben
- Endgültige Festlegung, Realisierung und Priorisierung von Testfällen (einschließlich Festlegung der Testdaten)
- Erstellung und Priorisierung des Testablaufs, Erstellung der Testdaten, der Testszenarien und optional Vorbereitung der Testrahmen und Entwicklung von Skripten zur Testautomatisierung
- Erstellung von Testsuiten basierend auf dem Testablauf
- Kontrolle, ob die Testumgebung korrekt aufgesetzt wurde.
- Überprüfung und Aktualisierung der Rückverfolgbarkeit zwischen Testbasis und Testfällen in beide Richtungen
- Ausführung von Testabläufen (manuell oder automatisiert) unter Einhaltung des Testplans (Reihenfolge, Testsuiten etc.)
- Protokollierung der Testergebnisse und Dokumentation
- Vergleich der Ist-Ergebnisse mit den vorausgesagten Ergebnissen gefundene Fehlerwirkungen oder Abweichungen festhalten und analysieren, um den Grund eines Problems festzustellen
- Alle Testfälle, die eine Fehlerwirkung aufgedeckt haben, müssen nach der Behebung der jeweiligen Ursachen nochmals getestet werden (Fehlernachtest).
Bewertung von Endekriterien und Bericht
Mit der Bewertung der Endekriterien/Testauswertung werden die Testaktivitäten auf ihre Ziele hin untersucht. Diese Phase sollte in jeder Teststufe abgehandelt werden.
Bewertung von Endekriterien und Bericht
Hauptaufgaben
- Auswertung der Testprotokolle in Hinblick auf die im Testkonzept festgelegten Endekriterien
- Entscheidung, ob mehr Tests durchgeführt oder die festgelegten Endekriterien angepasst werden müssen
- Erstellung des Testabschlussberichts für die Stakeholder
Abschluss der Testaktivitäten
Hauptaufgaben
Finden zu einem Projektmeilenstein statt:
- Kontrolle, welche der geplanten Arbeitsergebnisse geliefert wurden,
- Schließung der Fehler-/Abweichungsberichte oder Erstellung von Änderungsanforderungen für weiter bestehende Fehler/Abweichungen
- Dokumentation der Abnahme des Systems
- Dokumentation und Archivierung der Testmittel, Testumgebung und der Infrastruktur für spätere Wiederverwendung
- Übergabe der Testmittel an die Wartungsorganisation
- Analyse und Dokumentation von „lessons learned“
- Nutzung der gesammelten Informationen, um die Testreife zu verbessern
Stufen der Unabhängigkeit
- Der Test wird vom Entwickler für den eigenen Code durchgeführt (keine Unabhängigkeit).
- Der Test wird von einem anderen Entwickler durchgeführt (z.B. innerhalb des Entwicklungsteams).
- Der Test wird von ein oder mehreren Personen aus einer anderen organisatorischen Einheit (z.B. unabhängiges Testteam) oder einem Testspezialisten (z.B. Spezialist für Benutzungsfreundlichkeit oder Performance) durchgeführt.
- Der Test wird von ein oder mehreren Personen außerhalb der (entwickelnden) Organisation durchgeführt.
Kommunitkationsgrundlagen
- Beginnen Sie mit der Zusammenarbeit anstatt zu streiten – erinnern Sie jeden an das zentrale Ziel: eine bessere Qualität der Software!
- Kommunizieren Sie gefundene Fehler eines Produkts neutral, sachbezogen und vermeiden Sie Kritik an der verantwortlichen Person.
- Versuchen Sie, das Verhalten und die Gefühle der anderen Person zu verstehen.
- Stellen Sie sicher, dass Sie die andere Person richtig verstanden haben und umgekehrt.
Ethische Leitlinie
ÖFFENTLICHKEIT
Das Verhalten zertifizierter Softwaretester soll nicht im Widerspruch zum öffentlichen Interesse stehen.
Ethische Leitlinie
KUNDE UND ARBEITGEBER
Das Verhalten zertifizierter Softwaretester soll den Interessen ihrer Kunden und Arbeitgeber entsprechen und dabei nicht im Widerspruch zum öffentlichen Interesse stehen.
Ethische Leitlinie
PRODUKT
Zertifizierte Softwaretester sollen sicherstellen, dass die Arbeitsergebnisse, die sie liefern (für die von ihnen getesteten Produkte und Systeme), höchste fachliche Anforderungen erfüllen.
Ethische Leitlinie
URTEILSVERMÖGEN
Zertifizierte Softwaretester sollen bei ihrer professionellen Beurteilung aufrichtig und unabhängig sein.
Ethische Leitlinie
MANAGEMENT
Zertifizierte Softwaretestmanager und -testleiter sollen eine ethische Haltung beim Management des Softwaretestens haben und fördern.
Ethische Leitlinie
BERUFSBILD
Zertifizierte Softwaretester sollen Integrität und Ansehen ihres Berufs fördern und dabei nicht im Widerspruch zum öffentlichen Interesse stehen.
Ethische Leitlinie
KOLLEGEN
Zertifizierte Softwaretester sollen sich ihren Kolleginnen und Kollegen gegenüber fair und hilfsbereit verhalten und die Kooperation mit Softwareentwicklern fördern.
Ethische Leitlinie
PERSÖNLICH
Zertifizierte Softwaretester sollen sich in ihrem Beruf lebenslang fort- und weiterbilden und eine ethische Haltung in ihrer Berufsausübung vertreten.