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.