Chapter 7 (Modellbasierte Testansätze für Produktlinien) Flashcards
(15 cards)
Welche Arten von Anforderungen müssen beim Testen unterschieden werden?
Funktionale Anforderungen: Bei Eintreffen eines Ereignisses soll das System korrekt reagieren
Funktionale Lebendigkeitsanforderungen: Für den Benutzer sehbare aktionen funktionieren korrekt.
Nichfunktionale Anforderungen: Es soll etwas in bestimmter Zeit passieren.
Wann wird Validiert, Verifiziert und getestet?
In der Problemdomäne werden die Anforderungen validiert
Das daraus resultierende Modell wird verifiziert und getestet wird die Implementierung in der Lösungsdomäne.
Was ist der Unterschied zwischen modellbasierter Verifikation bzw Testen?
Modellbasierte Verifikation:
- Formaler Beweis von Korrektheitseigenschaften
- Mathematische Manipulation eines Systemmodells
(Abstraktion des Systems)
Qualität der Verifikationsergebnisse ist abhängig von der Validität des Systemmodells.
Modellbasierter test:
- Stichprobenartiges Suchen nach Fehlern
- Experimentelle Manipulation einer konkreten Systemimplementierung
(konkrete Implementierung des Systems)
Durch Testen kann nur das Vorhandensein von Fehlern gezeigt werden, nicht deren Abwesenheit.
Was ist der Dynamische Softwaretest?
- gezieltes Stimulieren und Beobachten des Verhaltens einer Software- Implementierung durch testfälle
- ExperimentelleAusführung des Systems durch Kontrolle der Umgebung
- Testfallerstellung auf Grundlage einer Systemspezifikation
- > Manueller Test
- > Scripted Test
- > High-level scripted testing
- > Model-based testing (mit modellbasierter testgenerierung)
Wie funktioniert der modellbasierte Test?
- Backboxannahme für SUT
- Testfallerzeugung, testfallselektion, testauswertung, Abdeckungsmessung etc auf Grundlage des testmodells
-Testfall: Sequenz von kontrollierbaren Eingaben und beobachten Ausgaben des IUT
Beispiel: Modellbasierter Komponententest -> Manipulierbare Eingangssignale, beobachtbare Ausgangssignale, interner Zustand nicht sichtbar, Spezifikation des erwarteten Verhaltens der Komponentenschnittstelle
Was versteht man unter einem Testfall?
- Ein testfall entspricht einer endlichen Sequenz von Transitionen des Testmodells
- Ein valider testfall entspricht einem validen Transitionspfad im Testmodell
- Ein Testschritt entspricht einer Transition im Transitionspfad
Was sind die Ziele eiens Test Suite Designs?
- Soundness: Die Test Suite enthält nur valide testfälle
- Completeness: Die Test Suite enthält für jedes Testziel mindestens einen Testfall
- Efficiency: Die Test Suite ist möglichst minimal (Optimierung ist NP-Vollständig)
- Effectiveness: Die Test Suite deckt möglichst viele Fehler ab
==> Effectiveness und Efficiency sind gegenläufige Optimierungsziele
Was versteht man unter einer SPL Analyse?
- Kernanforderungen: Anforderungen, die durch alle Produktvarianten der Produktlinie erfüllt werden müssen.
- Feature-Spezifische Anforderungen: Anforderungen, die durch Produktvarianten erfüllt werden müssen, in denen ein bestimmtes Feature implementiert ist.
- Gewollte Feature-Interaktionen: Anforderungen, die durch Produktvarianten erfüllt werden müssen, in denen eine bestimmte Feature-Kombination enthalten ist.
-Positive Feature Orientierte SPL - Analyse: Prüfen, dass Konfigurations-spezifische Anforderungen in Produktvarianten korrekt implementiert sind. - Negative feature Orientierte SPL-Analyse: Prüfen, dass Produktvarianten keine Anforderungen implementieren, die nicht den Konfigurations-spezifischen Anforderungen entsprechen.
Annahme: Einzelne Features testen und nach Komposition funktioniert immer noch alles, ABER in Praxis nicht möglich(crosscutting-concerns)
Was versteht man unter Product by Product Analysis/Testing?
Testmodellvarianten werden aus variablen SPLTestmodell abgeleitet für jede Produktvariante.
+ Einfache und garantiert vollständige Testabdeckung alle Produktvarianten
+ Vorhandene Werkzeuge zur Testfallgenerierung können wiederverwendet werden
- Hoher Aufwand bei Produktlinien mit hoher Anzahl Produktkonfigurationen => Smapling
- I.d.R. viele Redundante Generierungsschritte durch mehrfache Generierung gleicher testfälle für verschiedene Varianten => Family-based/Incremental SPL Testing
Was versteht man unter Product Sampling?
Und wie funktioniert Sample-based testing?
Reduction der zu testenden Produktkonfigurationen.
Funktionsweise:
- Selektion einer repräsentativen Teilmenge (Sample) von Products-under-Test(PUT) aus validen Konfigurationsraum
- Product-by-Product Testing der Teilmenge
- Definition geeigneter Selektionskriterien?
Was ist Pairwise Combinatorial Feature Coverage?
Testen von jeweils 2 Features in kombination
+ ermöglicht starke Reduktion großer validen Konfigurationsräume.
- Selektion valider paare erfordert SAT-Solving(NP-complete)
- Selektion eines minimalen Samples ist NP-Hard
Wie funktioniert Family-based SPL Testing?
Wiederverwendung von testfällen
Was ist whitebox testing?
- Testfälle sind initiale Programmeingaben (Variablenbelegungen)
- Testfälle leiten sich aus der Struktur des Programmes ab
Wie funktioniert Testfallgenerierung mit symbolischem Model Checking?
- Das Testziel fi wird als Korrektheitseigenschaft codiert und negiert
- Testziele sind meistens Programmlabel oder Prädikate über variablen
- Es wird geprüft, ob die Eigenschaft !fi immer gilt
- > gilt fi ist das testziel erreicht und Korrektheitseigenschaft verletzt
- > Der model checker gibt ein gegenbeispiel aus
- > das gegenbeispiel wird als testfall interpretiert
Wie funktioniert Incremental SPL Testing?
SPL Test Suiten werden incrementell verfeinert.
- durch DELTAS Testmodellvariante erzeugen
- Testsuite evoluieren(obsolete rauswerfen und wiederverwendbare tcs und neue bilden die neue Test Suite)
- Reggressionstesting