Wie werden Testfälle aus einem Ursache-Wirkungs-Graphen abgeleitet?
Durch Überführung des Graphen in eine Entscheidungstabelle und Konvertierung der Spalten in Testfälle
Was ist ein Beispiel für eine Ursache-Wirkungs-Analyse?
Ein Graph, der logische Beziehungen zwischen Eingangsbedingungen (Ursachen) und Ausgangsbedingungen (Wirkungen) darstellt
Was sind die Vorteile der Ursache-Wirkungs-Analyse?
Sie ermöglicht eine systematische und formale Beschreibung der Beziehungen zwischen Eingaben und Ausgaben, was zu präziseren Testfällen führt
Wie definiert man die Eingabebereiche für die Testfälle?
Durch Identifizierung der Definitionsbereiche der Eingaben in der Spezifikation, z.B. Zugehörigkeit und Gehaltsgruppe
Wie werden Äquivalenzklassen für geordnete Wertebereiche gebildet?
Durch Erstellen einer gültigen Klasse und zwei ungültigen Klassen, z.B. Wertebereich: 1 <= Wert <= 42
Wie testet man Aufzählungswerte?
Wenn alle Elemente gleich behandelt werden, gibt es eine gültige und eine ungültige Klasse; wenn
nicht, gibt es pro Wert eine gültige Klasse
Was ist das Ziel des spezifikationsbasierten Testens?
Sicherstellen, dass das System die spezifizierten Anforderungen erfüllt, indem die Spezifikation als
Referenz für die Testfälle dient
Wie beeinflusst die Qualität der Spezifikation die Testfälle?
Eine präzise und vollständige Spezifikation führt zu effektiveren und aussagekräftigeren Testfällen, während eine ungenaue Spezifikation zu weniger zuverlässigen Tests führt
Was ist die Testreferenz beim modellbasierten Testen?
Die Testreferenz ist ein explizit erstelltes Modell des Prüfobjekts
Worauf konzentriert sich das Modell beim modellbasierten Testen meist?
Das Modell konzentriert sich meist auf das Verhalten der zu testenden Software
Welche Techniken werden beim modellbasierten Testen verwendet?
Ursache-Wirkungs-Analyse, zustandsbasierter Test und anforderungsbasierter Test
Was sind die Vorteile des modellbasierten Testens?
Systematische Testfallableitung, sinnvolle Messung der Testabdeckung und Beitrag zum besseren Verständnis der Spezifikation
Was sind die Nachteile des modellbasierten Testens?
Zusatzaufwand für die Erstellung des Testmodells, Risiko von Fehlern bei der Erstellung des Modells und der Formalismus kann das Verständnis erschweren
Was ist ein zustandsbasierter Test?
Ein Test, bei dem das Systemverhalten mittels Zustandsautomaten spezifiziert wird
Was ist das Überdeckungskriterium beim zustandsbasierten Test?
Vollständige Abdeckung der Elemente des Zustandsautomaten
Wie können Zustandsautomaten für objektorientierte Klassentests verwendet werden?
Objekte haben Zustände, Zustandsübergänge sind durch Ereignisse bedingt und Automaten
können aus der Klassenspezifikation abgeleitet werden
Welche drei Arten von Überdeckungen gibt es beim zustandsbasierten Testen?
Zustandsüberdeckung, Übergangsüberdeckung und Ereignisüberdeckung
Was bedeutet Zustandsüberdeckung?
Jeder Zustand muss mindestens einmal erreicht werden
Was bedeutet Übergangsüberdeckung?
Jeder Zustandsübergang muss mindestens einmal durchlaufen werden
Was bedeutet Ereignisüberdeckung?
Jedes Ereignis muss mindestens einmal ausgelöst werden
Was muss bei der Semantik von Zustandsautomaten klar definiert werden?
Welche Auswirkungen ein Ereignis hat, wenn es in einem bestimmten Zustand auftritt, und wie Testfälle abzuleiten sind
Wie werden Testfälle beim zustandsbasierten Test abgeleitet?
Testfälle gehen vom Startzustand aus und enden, wenn ein Endzustand erreicht ist
Was ist eine Zustandsübergangstabelle?
Eine Tabelle, die Zustände und Ereignisse darstellt und angibt, welcher Zustand bei einem Ereignis erreicht wird
Was sind Fehlersituationen beim zustandsbasierten Testen?
(A) Spezifikation korrekt: Test, ob Transition tatsächlich nicht möglich ist oder keinen Effekt hat, und
(B) Defekt in der Spezifikation: fehlende Transition erkannt bei der Testfallableitung
Warum ist das modellbasierte Testen für Modultests gut geeignet?
Weil es eine präzise (formale) Syntax und Semantik hat und Werkzeugunterstützung zur Testfallableitung möglich ist
Was ist das Problem der Skalierbarkeit beim modellbasierten Testen?
Explosion von Zuständen und Transitionen bei großen Systemen
Was ist eigenschaftsbasiertes Testen (Property-Based Testing)?
Ein Test, bei dem mathematische Eigenschaften des Systemverhaltens für zufällig generierte Eingabewerte überprüft werden
Wie werden Eingabewerte beim eigenschaftsbasierten Testen generiert?
Generatoren erzeugen zufällige Eingabewerte eines bestimmten Typs
Was passiert, wenn ein Test beim eigenschaftsbasierten Testen fehlschlägt?
Die Eingabe wird geschrumpft, um ein minimales Gegenbeispiel zu erzeugen, und die Eingabe und der Seed des Zufallsgenerators werden zurückgegeben
Was sind häufig getestete Eigenschaften bei unären Funktionen?
Totalität, Injektivität, Surjektivität und Idempotenz
Was sind häufig getestete Eigenschaften bei inversen Funktionen?
Isomorphismen wie deserialize(serialize(x)) == x und serialize(deserialize(y)) == y
Was sind häufig getestete Eigenschaften bei binären Funktionen?
Reflexivität, Symmetrie und Transitivität
Was sind bedingte Eigenschaften beim eigenschaftsbasierten Testen?
Eigenschaften, die nur für bestimmte Eingabewerte gelten, z.B. whenever(m >= 2 * n)
Was ist das Problem bei zufällig erzeugten Eingaben für bedingte Eigenschaften?
Zufällig erzeugte Eingaben erfüllen evtl. nur sehr unwahrscheinlich die Bedingung
Wie kann das Problem der zufälligen Eingaben für bedingte Eigenschaften gelöst werden?
Durch Implementierung eigener Generatoren für passende Eingaben
Was sind die Vorteile des eigenschaftsbasierten Testens?
Gründlicher als Testen mit handgewählten Werten, gezielte Erzeugung zufälliger Werte für Randfälle und Finden kleiner Eingaben, die die erwartete Eigenschaft verletzen
Was sind die Herausforderungen des eigenschaftsbasierten Testens?
Eigenschaft muss programmatisch überprüft werden und die Implementierung eigener Generatoren kann schwierig sein
Welche Herausforderungen stellt das objektorientierte Testen dar?
Vererbung, Polymorphie, Kopplung, Zustand und Datenkapselung
Warum sind traditionelle Testverfahren für objektorientierte Programme nur teilweise geeignet?
Weil sie die speziellen Eigenschaften objektorientierter Programmierung wie Vererbung und Polymorphie nicht vollständig abdecken
Was passiert bei der Vererbung von Attributen und Methoden?
Attribute und Methoden der Oberklasse werden auf die Unterklassen vererbt, einschließlich vorhandener Fehler
Was ist Polymorphie in objektorientierten Programmen?
Geerbte Methoden können überschrieben werden, wobei gleiche Methodennamen
unterschiedliche Implementierungen haben
Wie beeinflusst Kopplung das Testen von Klassen?
Klassen sind oft stärker gekoppelt, was bedeutet, dass Methoden einer Klasse auf Methoden anderer Klassen angewiesen sind
Warum ist der Zustand von Objekten beim Testen wichtig?
Das Verhalten eines Objekts hängt von seinem Zustand ab, und fehlerhafte Zustände können zu weiteren Fehlern führen
Was ist Datenkapselung in objektorientierten Klassen?
Das Verbergen von Implementierungsdetails, die für den Nutzer unwichtig sind, um eine klare Trennung zwischen Interface und Implementierung zu gewährleisten
Was sind die Herausforderungen der Vererbung im Testen?
Geerbte Defekte und der Kontexteinfluss auf Methodenaufrufe
Wie geht man mit polymorphen Methodenaufrufen im Testen um?
Indem man alle möglichen Implementierungen der polymorphen Methode testet, um die
kombinatorische Explosion von Testfällen zu bewältigen
Was passiert bei der Vererbung von Attributen und Methoden?
Attribute und Methoden der Oberklasse werden auf die Unterklassen vererbt, einschließlich vorhandener Fehler
Warum ist die Abgrenzung von Modul- und Integrationstest bei objektorientierten Programmen schwierig?
Weil Systemfunktionen durch die Kollaboration von Objekten realisiert werden und die Abhängigkeiten zwischen vielen Klassen berücksichtigt werden müssen
Wie kann man interne Details für die Testabdeckung berücksichtigen?
Durch spezielle Techniken, die es ermöglichen, den internen Zustand zu setzen und auszulesen, um
eine vollständige Testabdeckung zu erreichen
Was ist der Klassentest?
Der Test einer einzelnen Klasse, einschließlich der Prüfung des Zusammenwirkens ihrer Methoden
und der Verwendung geerbter Methoden
Wie unterscheidet sich der Klassentest vom Modultest?
Klassentest bezieht sich auf objektorientierte Klassen, während Modultest sich auf prozedurale
Module bezieht
Was ist die Mindestanforderung an einen Klassentest?
Der Aufruf jeder Methode der Klasse mindestens einma
Was sind die Schritte des Category-Partition Tests?
Identifikation von Aufgaben der Methode, Identifikation von Ein- und Ausgaben jeder Aufgabe, Identifikation von Kategorien für jeden Eingabewert, Auswahl von Repräsentanten, Bestimmung von Einschränkungen, Erzeugen von Testfällen und Bestimmung des Soll-Ergebnisses
Was ist der Unterschied zwischen nicht-modalen und modalen Klassen?
Nicht-modale Klassen haben keine Einschränkungen bei Methodenaufrufen, während modale Klassen Zustandsabhängigkeiten haben, die berücksichtigt werden müssen
Was ist ein Flattened Class Scope Test?
Ein Test, der sich auf Klassen in einer Vererbungshierarchie konzentriert und Oberklassen top-down testet