Was ist der Unterschied zwischen Validation und Verifikation?
Validation: Überprüfung auf das vom Anwender gewünschte Verhalten (wurde das richtige System gebaut?). Verifikation: Werden die festgelegten Spezifikationen erfüllt (wurde das System richtig gebaut?).
Was sind zwei Ziele der N-Versionen-Programmierung?
1. Eine Version kann als Orakel für die Korrektheit der Ausgabe einer anderen dienen. 2. Erhöhung der Robustheit durch gleichzeitige Berechnung und Mehrheitsentscheidung (Voter).
Was ist ein Test-Orakel?
Ein Prädikat oder Mechanismus, der vergleicht, ob die durch einen Testfall berechneten Ergebnisse des Testobjekts den erwarteten Werten entsprechen.
In welche Phasen unterteilt sich der Testprozess (z.B. im V-Modell)?
Komponententest, Subsystemtest, Integrationstest, Systemtest, Akzeptanztest.
Was ist die Definition eines Fehlers (Fault) nach DIN 66271?
Ein Fehler/Mangel ist seit dem Zeitpunkt der Entwicklung in der Software vorhanden. Software nützt sich nicht ab.
Was ist eine "Inspektion" im Kontext von Reviews?
Ein stark formalisiertes Verfahren zur Durchsicht von Dokumenten durch ein Gutachterteam (inklusive Moderator), um Befunde zu identifizieren und Statistiken zur Prozessverbesserung zu erzeugen.
Was ist ein "Technisches Review"?
Eine weniger formale manuelle Prüfmethode als die Inspektion. Es gibt keinen formalen Inspektionsplan und Prozessverbesserung/Statistiken stehen nicht im Vordergrund.
Was ist ein "Walkthrough" (Informelles Review)?
Eine unstrukturierte Vorgehensweise, bei der der Autor des Dokuments vorliest und Gutachter ohne weitere Vorbereitung spontan Fragen stellen und Fehler suchen.
Wer darf bei einer Inspektion laut Regeln nicht teilnehmen?
Vorgesetzte des Autors bzw. Manager.
Was ist ausdrücklich NICHT das Ziel einer Inspektion?
Lösungen für entdeckte Fehler zu finden, die Fähigkeiten des Autors zu beurteilen oder ewig zu diskutieren, ob etwas ein Fehler ist.
Welche Rollen gibt es bei einer Inspektion?
Moderator, Autor (passiv), Gutachter(n), Protokollführer und ggf. Vorleser.
Was besagen empirische Werte zum Inspektionsaufwand?
Der Prüfaufwand liegt bei 15-20% des Erstellungsaufwands, findet 60-70% der Fehler und bringt ca. 20% Ersparnis bei der Entwicklung und 30% bei der Wartung.
Wie unterscheiden sich dynamische Testverfahren von statischer Analyse?
Beim dynamischen Testen wird das Testobjekt mit konkreten Eingabewerten ausgeführt. Statische Analysen untersuchen den Prüfling ohne ihn auszuführen.
Wie definiert man "Produktmetrik"?
Eine Metrik, die Eigenschaften der erzeugten Software misst, z.B. Qualität (Anzahl Fehler) oder Einhaltung von Standards.
Wie definiert man "Prozessmetrik"?
Eine Metrik, die Eigenschaften des Entwicklungsprozesses misst, z.B. Dauer, Kosten (Mitarbeitermonate) oder Kundenzufriedenheit.
Nenne 5 gewünschte Eigenschaften für eine gute Software-Metrik.
Einfachheit, Eignung (Validität), Stabilität, Rechtzeitigkeit und Reproduzierbarkeit.
Was beschreibt eine "Nominalskala" bei Metriken?
Eine frei gewählte Menge von Bezeichnungen, z.B. die eingesetzte Programmiersprache (C++, Java, Fortran).
Was ist "Afferent Coupling" (Ca/AC)?
Die Anzahl der Klassen außerhalb eines betrachteten Teilsystems, die von den Klassen innerhalb des Teilsystems abhängen.
Was ist "Efferent Coupling" (Ce/EC)?
Die Anzahl der Klassen innerhalb eines betrachteten Teilsystems, die von Klassen außerhalb des betrachteten Teilsystems abhängen.
Wie berechnet man die "Instabilität" (I) eines Teilsystems?
I = Ce / (Ce + Ca). Werte liegen zwischen 0 (maximal stabil) und 1 (maximal unstabil).
Was bedeutet eine Instabilität von I = 0?
Es gilt Ce = 0. Das System importiert nichts von außen (ist also maximal stabil gegenüber externen Änderungen).
Was misst die Metrik LOCOM1 (Low Cohesion Metric)?
Die Bindung der Methoden einer Klasse basierend auf gemeinsamen Attributzugriffen (P = Paare ohne gemeinsamen Zugriff, Q = Paare mit gemeinsamen Zugriff. LOCOM1 = P-Q, falls P>Q, sonst 0).
Was besagt die Regel von McCabe zur zyklomatischen Zahl (Komplexität)?
Die Komplexität eines abgeschlossenen Teilprogramms sollte nicht höher als 10 sein, da das Programm sonst zu komplex und zu schwer zu testen ist.
Wie lautet die Formel zur Berechnung der zyklomatischen Zahl (ZZ) nach McCabe?
ZZ = |E| - |N| + 2k (Kantenanzahl - Knotenzahl + 2 * Anzahl der Zusammenhangskomponenten).
Was ist eine "Live Variable" (Lebendige Variable)?
Eine Variable ist von ihrer ersten Definitionsstelle im Kontrollflussgraph bis zu ihrer letzten Definitions- oder Referenzierungsstelle (vor dem Endknoten) "lebendig".
Was berechnet die Metrik "Variablenspanne"?
Die durchschnittliche Anzahl Kanten im Kontrollflussgraph zwischen zwei direkt aufeinanderfolgenden definierenden oder referenzierenden Zugriffen auf dieselbe Variable.
Was ist der Unterschied zwischen Äquivalenzklassenverfahren und Grenzwertanalyse?
Bei der Äquivalenzklassenbildung wird ein beliebiger Wert aus der Klasse getestet. Die Grenzwertanalyse betrachtet zusätzlich explizit die Grenzen der Klasse (Ränder) als eigene Testfälle.
Wie vermeidet man "Fehlerverdeckung" bei Negativtests (Black-Box)?
In einem Testfall für einen Negativtest darf maximal eine Fehlerklasse (ungültiger Wert) gewählt werden. Alle anderen Parameter müssen positiv/gültig sein.
Was versteht man unter "Paarweisem Testen" (Pairwise Testing)?
Nicht jede mögliche Wertekombination wird getestet, sondern nur so viele Testfälle erzeugt, dass jedes mögliche Paar von Parameterwerten in mindestens einem Testfall vorkommt.
Warum nutzt man paarweises Testen anstelle von vollständigem kombinatorischen Testen?
Es verhindert die kombinatorische Explosion der Testfälle, bietet aber eine hohe Fehlererkennung, da ca. 80% aller Kombinationsfehler durch die Interaktion von maximal zwei Parametern verursacht werden.
Wie werden geschlossene Intervalle [uv .. ov] bei der Grenzwertanalyse in Unterklassen zerlegt?
In [uv] (unterer Grenzwert), ]uv .. ov[ (Mitte) und [ov] (oberer Grenzwert).
Was versteht man unter "Point of Control" (PoC) in einem Testrahmen?
Die Schnittstelle, über die das Testobjekt mit Testdaten versorgt wird.
Was versteht man unter "Point of Observation" (PoO) in einem Testrahmen?
Die Schnittstelle, über die Reaktionen und Ausgaben des Testobjekts beobachtet und ausgewertet werden.
Was ist ein "Test-Stub" (Teststummel)?
Eine Platzhalter-Komponente im Testrahmen, die das Verhalten von Unterkomponenten simuliert, welche das Testobjekt aufruft, um das Testobjekt isoliert testen zu können.
Was ist ein "Testtreiber"?
Ein Rahmenprogramm, das Testfälle in das Testobjekt einspeist (via PoC) und die Testausgaben einsammelt.
Wie stellt man "genau n ausgewählte Werte" (z. B. drei Holzarten) im Klassifikationsbaum dar?
Als disjunkte positive Ausprägungen (z.B. {"Eiche", "Buche", "Kiefer"} mit "+") und eine Fehlerklasse "sonstige" (mit "-").
Was sind die typischen 5 Ebenen des Klassifikationsbaums (TU Darmstadt)?
1. Parameter, 2. Wertebereiche/Typen, 3. Äquivalenzklassen (+/-), 4. Grenzwertanalyse-Zerlegung, 5. Konkrete Testwerte.
Was ist ein Kontrollflussgraph (KFG)?
Eine grafische Darstellung eines Programms, bei der Knoten Anweisungsblöcke sind und Kanten den möglichen Kontrollfluss (z.B. Verzweigungen) abbilden.
Was ist "Anweisungsüberdeckung" (Node Coverage / C0)?
Ein Testkriterium, bei dem eine Testmenge so gewählt wird, dass jeder Knoten (Anweisung) des Kontrollflussgraphen mindestens einmal ausgeführt wird.
Was ist "Zweigüberdeckung" (Edge Coverage / C1)?
Ein Testkriterium, bei dem eine Testmenge so gewählt wird, dass jede Kante (Zweig) des Kontrollflussgraphen mindestens einmal durchlaufen wird.
Was fordert die "Modifizierte Mehrfachbedingungsüberdeckung" (MCDC)?
Jede atomare Teilbedingung einer Gesamtaussage muss unabhängig von den anderen den Wahrheitswert der Gesamtaussage determinieren (einmal auf true, einmal auf false evaluiert werden).
Was bedeutet "Short-Circuit-Evaluation" beim MCDC-Test?
Teilbedingungen, die vom Compiler nicht mehr ausgewertet werden (da das Gesamtergebnis z.B. bei einem "true OR ..." schon feststeht), gelten als irrelevant und werden mit "-" markiert.
Wie ist das "Rückwärts-Slice" bezüglich einer Variablen v am Knoten n definiert?
Es enthält die Menge aller Knoten im Abhängigkeitsgraphen, die den Wert der Variablen v am Knoten n direkt oder indirekt (durch Kontroll- oder Datenfluss) beeinflussen.
Wie ist das "Vorwärts-Slice" bezüglich einer Variablen v am Knoten n definiert?
Es enthält die Menge aller Knoten, die von einer Änderung der Variablen v am Knoten n im weiteren Programmverlauf beeinflusst werden.
Was ist ein "Abhängigkeitsgraph"?
Ein Programm-Graph, der den Datenflussgraphen um Kontrollabhängigkeitskanten erweitert und Grundlage für die Berechnung von Programm-Slices ist.
Wofür verwendet man Programm-Slices in der Praxis?
Zur Fehlersuche (Isolierung relevanter Programmteile) und zur Änderungsfolgeschätzung (Vorwärts-Slice).
Wofür stehen die Datenflussattribute "d, c, p, u"?
d = definition (schreibend), c = computational reference (lesend in Berechnung), p = predicative reference (lesend in Bedingung), u = undefine.
Was ist eine "ur"-Datenflussanomalie?
Unbegründete Referenzierung: Eine Variable wird auf einem Pfad gelesen (r), obwohl sie vorher nicht definiert, sondern "undefiniert" (u) war.
Was ist eine "dd"-Datenflussanomalie?
Doppelte Definition: Eine Variable wird definiert (d) und auf dem nachfolgenden Pfad direkt wieder überschrieben (d), ohne zwischendurch gelesen zu werden.
Was ist eine "du"-Datenflussanomalie?
Definition gefolgt von Undefine: Eine Variable wird definiert (d) und verliert ihre Gültigkeit (u), ohne dass der Wert genutzt wurde.
Wann ist eine Datenflussanomalie "stark"?
Wenn der Pfad mit der Anomalie segmentfrei (keine Schleifen) ist und der Zustand nicht durch dazwischenliegende korrekte Zugriffe verdeckt wird.
Was stellen die Knoten und Kanten im Datenflussgraphen dar?
Knoten sind Anweisungen mit Variablenzugriffen (d, c, p, u). Kanten repräsentieren den reinen Datenfluss (die Zuweisung von Werten) einer Variable von Definition zu Nutzung.
Was bedeutet das Überdeckungskriterium "All-Defs"?
Für jede definierte Variable (d) muss mindestens ein Pfad zu irgendeinem lesenden Zugriff (c oder p) durch Testfälle abgedeckt werden.
Was bedeutet das Überdeckungskriterium "All-Uses"?
Für jede Definition (d) müssen alle möglichen Pfade zu ALLEN referenzierenden Zugriffen (c oder p) durch Testfälle abgedeckt werden.
Ist die Sequenz d(v) -> c(v) eine Anomalie?
Nein, das ist der gewünschte Normalfall: Eine Variable wird definiert und anschließend berechnend gelesen.
Welcher ist der erste Schritt beim zustandsbasierten Testen mit hierarchischen Statecharts?
Das Auflösen des Modells (z.B. parallele oder genestete Zustände) in einen vollumfänglichen "flachen Automaten".
Was passiert beim Flachen des Automaten mit Teilbedingungen (Guards) wie [A || B]?
Sie werden logisch aufgelöst, sodass explizite, getrennte Transitionen für die verschiedenen wahren Belegungen entstehen.
Was ist ein "Transitionsbaum"?
Ein Baum, der ausgehend vom Startzustand als Wurzel alle durch Transitionen erreichbaren Pfade des flachen Automaten darstellt.
Wann terminiert ein Ast im Transitionsbaum?
Wenn ein Zustand erreicht wird, der auf dem aktuellen Pfad von der Wurzel aus bereits zuvor besucht wurde, oder wenn ein Endzustand erreicht wird.
Wie leitet man Testsequenzen aus dem Transitionsbaum ab?
Indem man jeden möglichen Pfad von der Wurzel bis zu einem Blattknoten als eigenständige Testsequenz notiert (inkl. auslösender Ereignisse und Bedingungen).
Was versteht man unter "irrelevante/verbotene Transitionen"?
Ereignisse, die in einem bestimmten Zustand laut Spezifikation nicht auftreten dürfen oder ignoriert werden sollen. Sie müssen auf Robustheit (Negativtest) geprüft werden.
Welches Problem existiert bei reinem Black-Box Zustandstesten?
Das interne Zustandsmodell ist nicht einsehbar. Man beobachtet nur Ereignisse und Outputs und kann schwer beweisen, dass die Software intern im korrekten Zustand ist.
Was ist eine "Klasseninvariante" beim objektorientierten Testen?
Eine Bedingung (Pre-/Postcondition), die immer, also vor und nach Aufruf jeder Methode (außer im Konstruktor selbst) einer Klasse, wahr sein muss.
Ist es sinnvoll, Invarianten nach Aufruf eines Modifiers zu prüfen?
Ja, da ein Modifier den Objektzustand ändert, muss verifiziert werden, ob die Invariante nach der Änderung weiterhin erfüllt ist.
Was ist der Unterschied zwischen SCCS und RCS (Versionsverwaltung)?
SCCS nutzt pessimistische Sperren und Vorwärtsdeltas. RCS nutzt optionale Sperren und speichert die neueste Revision voll, ältere als schnelle Rückwärtsdeltas.
Was ist ein "optimistisches" Sperrkonzept?
Parallele Schreibzugriffe auf eine Datei sind zulässig. Konflikte werden durch Dreiwegeverschmelzung (Merge) und manuelle Konfliktbehebung gelöst (z.B. in Git, SVN).
Was ist ein "pessimistisches" Sperrkonzept?
Ein Entwickler erhält einen exklusiven Schreibzugriff (Lock/Single Write Access), während andere nur lesen dürfen. Es verhindert Konflikte, blockiert aber paralleles Arbeiten.
Was speichert das Werkzeug "diff"?
Unterschiede zwischen zwei Textdateien in Form von "Deltas". Diese bestehen aus "Hunks" (geänderte, hinzugefügte "+", gelöschte "-" Zeilen).
Was ist eine "Baseline" im Konfigurationsmanagement?
Eine Konfiguration, die zu einem Meilenstein (z.B. Phasenende) gehört und fest eingefroren sowie evaluiert/getestet wird.
Was ist ein "Release"?
Eine stabile Baseline, die ausgeliefert wird (intern an Entwickler oder extern an Kunden).
Was ist ein "Wartungszweig" (Branch)?
Eine Abspaltung vom Hauptzweig, in der Fehlerkorrekturen für ältere Releases entwickelt werden, parallel zur Weiterentwicklung auf dem Hauptzweig.
Was macht eine "Dreiwegeverschmelzung" (3-Way-Merge)?
Sie verschmilzt die Änderungen zweier parallel bearbeiteter Versionen, indem sie diese mit ihrem letzten gemeinsamen Vorgänger vergleicht.
Was ist der Vorteil des dezentralen Versionsmanagements (DVCS wie Git)?
Jeder Entwickler hat ein vollständiges lokales Repository (inkl. Historie), kann offline arbeiten und Commits ausführen. Synchronisation erfolgt via Push/Pull.
Was ist eine "Software-Produktlinie" (SPL)?
Eine Menge verwandter Softwaresysteme für eine spezifische Anwendungsdomäne, die auf Basis einer gemeinsamen Plattform (Rahmenwerk) entwickelt werden.
Was bedeutet "Domain Engineering" bei Produktlinien?
Entwicklung der gemeinsamen Plattform und Variabilitätsmodelle (Development for Reuse).
Was bedeutet "Application Engineering" bei Produktlinien?
Erstellung konkreter Software-Instanzen durch Auswahl von Features der Plattform (Development with Reuse).
Wie wird ein Feature-Modell in der Vorlesung typischerweise grafisch dargestellt?
Als Baum mit Mandatory (immer dabei), Optional, Or-Group (mindestens 1), Alternative (genau 1) und übergreifenden Constraints (Requires, Excludes).
Was ist ein Constraint "A Requires B" (A -> B)?
Wenn in einer Konfiguration das Feature A gewählt ist, muss zwingend auch das Feature B ausgewählt sein.
Was passiert mit der Anzahl zulässiger SPL-Konfigurationen, wenn ein neues optionales Feature an der Wurzel (Root) eingefügt wird?
Die Anzahl der zulässigen Konfigurationen verdoppelt sich, da das Feature in jeder bisherigen Konfiguration entweder an- oder abgewählt werden kann.
Wie berechnet man die Ausfallwahrscheinlichkeit A(n) für eine Reihenschaltung zweier unabhängiger Komponenten n1, n2?
A(n) = 1 - ((1 - A(n1)) * (1 - A(n2))). (Die Reihe fällt nur dann NICHT aus, wenn BEIDE nicht ausfallen).
Wie berechnet man die Ausfallwahrscheinlichkeit A(n) für eine Parallelschaltung zweier unabhängiger Komponenten n1, n2?
A(n) = A(n1) * A(n2). (Die Parallelschaltung fällt nur aus, wenn BEIDE ausfallen).
Was ist das Prinzip der rekursiven Rechenregel zur Ausfallwahrscheinlichkeit (bei komplexen Graphen)?
Man wählt einen Knoten n und berechnet: A(System) = A(n) * (Wahrscheinlichkeit, falls n ausfällt) + (1-A(n)) * (Wahrscheinlichkeit, falls n funktioniert).
Was ist ein "2-aus-3 Voter"?
Ein Mechanismus, der ein Ergebnis einer Berechnungseinheit nur dann akzeptiert und weiterreicht, wenn mindestens 2 von 3 parallel geschalteten, redundanten Komponenten das exakt gleiche Ergebnis liefern.
Was ist das Ziel des "Mutationstestens"?
Die Überprüfung der Qualität und Vollständigkeit einer Test-Suite (Testfälle), indem synthetische Fehler ("Mutanten") in das Programm eingefügt werden, die von den Tests aufgedeckt ("getötet") werden müssen.
Welche drei Bedingungen müssen beim Mutationstest für die Entdeckung eines Mutanten erfüllt sein (RIP-Modell)?
Reachability (Erreichbarkeit), Infection (Infektion/Zustandsänderung) und Propagation (Ausbreitung).
Was besagt die Infection Condition (Infektion) beim Mutationstest?
Der mutierte Code muss ausgeführt werden UND zu einem veränderten (fehlerhaften) internen Programmzustand (z.B. falschen Variablenwert) im Vergleich zum Originalprogramm führen.
Was besagt die Propagation Condition (Ausbreitung) beim Mutationstest?
Der veränderte (fehlerhafte) Programmzustand muss sich bis zu einer durch das Testorakel überprüften Ausgabe (Point of Observation) ausbreiten, um sichtbar zu werden.
Wie schätzt man die Restfehlermenge (RF) mit der Mutationstest-Formel ab?
RF = GF * (M / GM - 1). (GF = echte gefundene Fehler, M = absichtlich eingebaute Fehler, GM = gefundene Mutationen).
Was ist ein "äquivalenter Mutant"?
Ein Mutant, der zwar syntaktisch modifiziert wurde, semantisch jedoch exakt das gleiche Verhalten aufweist wie das Original. Er kann durch keinen Testfall getötet werden.
Welche Anomalie liegt vor bei einem Pfad, auf dem 'p(v)' folgt, wenn zuvor 'u(v)' notiert war?
Eine "ur"-Anomalie (unbegründete Referenzierung), da ein prädikativer lesender Zugriff auf eine Variable erfolgt, die undefiniert ist.
Was bedeutet das Black-Box-Test-Kriterium "Repräsentative Eingabewerte"?
Da man nicht alle denkbaren Kombinationen testen kann, wählt man aus jeder Äquivalenzklasse einen repräsentativen Wert, der für das Verhalten der ganzen Klasse steht.
Was bewirkt das Setzen des Attributes "short circuit evaluation" bei Kontrollflussbedingungen?
Teilbedingungen erhalten das Attribut '-' (irrelevant), da ihr Ergebnis (aufgrund der Programmiersprachenspezifik) die Gesamtbedingung nach Auswertung vorheriger Bedingungen nicht mehr ändern kann.
Was beschreibt das Vorwärts-Delta im Versionsmanagement?
Die aktuelle Version muss aus der ältesten Basis-Version (Startpunkt) und einer Kette von inkrementellen Änderungs-Patches (Deltas) errechnet werden (verwendet von SCCS).
Was beschreibt das Rückwärts-Delta im Versionsmanagement?
Die aktuellste Version liegt vollständig im Speicher vor, alle älteren Versionen werden durch Dekrement-Patches rückwärts aus der neuesten berechnet (verwendet von RCS, ermöglicht schnellen Zugriff auf aktuelle Stände).
Was ist das "FeatureIDE"?
Ein Werkzeug zum Variantenmanagement und zur Modellierung von Software-Produktlinien (Feature-Modellen) und deren Konfigurationen.
Was wird in einem Review als "Befund" bezeichnet?
Ein entdeckter potentieller Fehler oder eine Abweichung von Standards, der im Rahmen einer Inspektion dokumentiert und protokolliert wird.
Wofür steht die Abkürzung KFG?
Kontrollflussgraph, eine fundamentale Graphen-Repräsentation im White-Box-Testen.
Was ist der "Boundary-Interior-Test"?
Ein White-Box-Testverfahren zur Schleifenabdeckung, das erzwingt, dass Schleifen 0-mal (Boundary), 1-mal und mehrfach (Interior) durchlaufen werden.
Warum darf beim Pairwise Testing die Anzahl der Spalten geringer sein als mögliche Kombinationen?
Weil ein einziger Testfall (Zeile) simultan mehrere unterschiedliche Wertepaare abdecken kann (z.B. (A1, B1), (B1, C1), (A1, C1) in einem Test).
Was misst die "Halstead"-Metrik?
Klassische (wenngleich teilweise veraltete) Produktmetriken, die Komplexität basierend auf der Anzahl von verwendeten Operatoren und Operanden im Quelltext berechnen.
Last changedan hour ago