Softwaretesting HF
Softwaretesting ZbW
Softwaretesting ZbW
-
- 1 / 95
-
Lernkarten
Nenne 3 Methoden für übersichtiliche Tests
- Given-When-Then(GWT)
gut für Behavior Driven Development
- Setup-Exercise-Verify-Teardown
gut für UT und IT
- AAA-Pattern
gut für UT
Nenne und beschreibe die einzelnen Schritte des Setup-Exercise-Verify-Teardown Tests
- Setup
benötigtes bereitstellen inkl. dem SUT
- Exercise
aktion ausführen und Resultat in eine Variable speichern
- Verify
Überprüfen, ob das Ergebnis korrekt ist
- Teardown
Ressourcen des Tests abbauen
Nenne und beschreibe die einzelnen Schritte des AAA-Pattern
- Arrange(anordnen)
alles nötige Bereitstellen inkl. dem SUT
- Act(Tat)
aktion ausführen und das Resultat in eine Variable speichern
- Assert(behaupte)
das müsste passieren
Welche zwei Arten von Assertions(Behauptungen) kennen wir?
- Classic Model(oben)
- Constraing Model(unten)
Was ist ein Komponententest?
- prüft, ob jeder einzelne Softwarebaustein für sich die Vorgaben seiner Spezifikation erfüllt
Was ist ein Integrationtest?
- prüft, ob Gruppen von Komponenten, wie im technischen Systementwurf vorgesehen, zusammenspielen
Was ist ein Systemtest?
- prüft, ob das System als Ganzes die spezifizierten Anforderungen erfüllt
Was ist ein Abnahmetest?
- prüft, ob das System aus Kundensicht die vertraglich vereinbarten Leistungsmerkmale aufweist
Was versteht man unter einem Review?
- Review ist ein Mittel zur Qualitätssicherung von Dokumenten
- ist ein Oberbegriff für statische Prüfverfahren, die von Personen durchgeführt werden
Was sind die Vorteile eines Reviews?
- Kostengünstige Fehlerbeseitigung
- Entwicklungszeiträume werden verkürzt
- Kostenreduzierung, da Fehler früh erkannt werden
- Wissensaustausch unter den Personen
- Gesamtes Team fühlt sich verantwortlich
Wie sieht das Vorgehen aus in einem Review?
- Planung
- Einführung
- Vorbereitung
- Reviewsitzung
- Überarbeitung
- Nachbearbeitung
Welche Arten von Review gibt es?
- Ad-Hoc-Review
spontante Peer Code Review (Zeitpunkt ist geplant)
- Code Review in Meetings
geplantes Peer Code Review (Umfang, Zeitpunkt, Testobjekt ist definiert)
Nenne den Ablauf sowie die Eigenschaften eines Peer Code Reviews
- Wöchentlich z.B. 30Minuten
- Maximal 1-2 Reviewer
- Checkliste zu Beginn erstellen, welche Teile der Software reviewt werden sollen
- gemeinsame Lösungen besprechen, sofern Probleme während des Reviews identifiziert werden (Umsetzung kann im nächsten Review bewertet werden)
Wie sollte die Kommunikation in einem Review sein?
- Freundlich, zugewandt und unterstützend
- Probleme deutlich kommunizieren und sich durchsetzen
Welche Test Attribute kennen wir in Bezug auf den Aufbau und Abbau?
- [OneTimeSetUp]
Methode wird einmal vor dem Testen der Klasse ausgeführt
- [OneTimeTearDown]
Methode wird einmal nach dem Testen der Klasse ausgeführt
- [SetUp]
Methode wird vor jedem Test ausgeführt
- [TearDown]
Methode wird nach jedem Test ausgeführt
Was sollte in einem Unit Test nicht überprüft werden?
Logik von externen Abhängigkeiten
Wie können Klassen mit externen Abhängigkeiten überprüft werden?
Mit Integrationtests
Was ist eine externe Abhängigkeite?
- Objekt im System, mit dem der zu testende Code interagiert und über das wir keine Kontrolle haben
- z.B. Dateisystem, Threads, Hauptspeicher, Zeit, usw.
Wie lassen sich Abhängigkeiten auflösen?
Durch das hinzufügen einer Indirektionssschicht
Mit welchem Pattern löst man Abhängigkeiten auf?
Dependency Injection
Was ist ein Fake?
- Überbegriff, um ein Stob oder Mock Objekt zu bezeichnen
- ob Mock oder Stub hängt davon ab, wie der Fake im aktuellen test verwendet wird
Was kann alles gefakted werden?
- Interfaces
- Klassen, welche:
nicht sealed sind
nicht statisch sind
keinen privaten Konstruktor aufweisen
- Delegate
Welche Methoden können bei einem Stub überschrieben werden?
- Virtual
- Abstract
- Interface Methode
Wie verhält sich ein Fake?
- überschreibbare Methoden werden so überschrieben, dass sie einen leeren Methodenrumpf aufweisen
- Methoden, welche etwas zurückgeben müssen, geben den Wert von default(T) zurück, sofern nichts anderes definiert wurde
- Strict Fakes werden auch unterstützt
Was ist ein Stub?
- kontrollierbarer Ersatz für eine vorhandene Abhängigkeit im System
- Code kann getestet werden, ohne die Abhängigkeit direkt handhaben zu müssen
Was ist ein Mock?
- nachgeahmtes Objekt im System, das entscheidet, ob ein Unit Test funktioniert hat oder nicht
- verifiziert, ob das zu testende Objekt das Fake-Objekt wie erwartet aufgerufen hat
- Gewöhnlich gibt es nicht mehr als einen Mock pro Test
Was sollte in einem Unit Test überprüft werden?
Business Logik
Ws ist ein Seam?
- Stelle im Code, in die man eine andere Funktionalität einfügen kann
- z.B. Stub Klasse, Konstruktor Parameter, Methode mit öffentlichem set, Delegate
Was gibt es für Möglichkeiten, um Abhängigkeiten aufzulösen beim Einbau?
- Injektion eines Fakes auf Konstruktor Ebene
- Injektion eines Fakes per Getter/Setter
- Injektion eines Fakes unmittelbar vor einem Methodenaufruf
Welche Probleme treten bei handgeschriebenen Mocks und Stubs auf?
- Benötigen Zeit um diese zu schreiben
- für Interfaces schwierig, stubs und mocks zu schreiben, da diese viele Methoden haben
- viel Standardcode innerhalb der manuellen Fakes, um den Zustand für mehrfache Aufrufe einer Mock-Methode zu speichern
- zahlreiche Asserts werden benötigt, um zu verifizieren, dass alle Parameter vom Aufrufer korrekt an eine Methode übergeben werden
- schwierig den Code von Mocks und Stubs für andere Tests wiederzuverwenden
- schwierigkeit mit Interface bei 2+ Funktionen
Was darf ein Testorakel niemals sein?
Der Code Selber
Welche Testarten gibt es?
- Funktionaler Test
- Nicht Funktionaler Test
- Strukturbezogener Test
- Änderungsbezogener Test
Was ist ein Statischer Test?
- Prüfmethode, bei der das Testobjekt nicht mit Testdaten versehen oder ausgeführt wird
Was ist ein dynamischer Test?
- Testobjekt wird mit EIngabedaten versehen und ausgeführt
Was ist das Black-Box-Testing?
- Es werden Tests Anhand der Spezifikation/Anforderung entwickelt
- die Tests werden ohne Kenntnisse über die innere Funktionsweise/Implementierung des zu testenden Systems entwickelt
- Es fliesst nur nach aussen sichtbares Verhalten in den Test ein
Was ist das White-Box Testing?
- Tests werden mit Kenntnissen über die innere Funktionsweise des zu testenden Systems entwickelt
- der Test wird am Code geprüft, da der Einblick auf den Quellcode gestattet ist
- Quellcodeteile mindestens einmal zur Ausführung bringen
Was ist eine Äquivalenzklasse?
- Methode zur systematischen Bestimmung von testfällen
- Identifizierung von Ein- und Ausgabebedingungen
Wie geht man bei der Identifizierung von Äquivalenzklassen vor?
- Ein und Ausgabebedinungen definieren
- Äquivalenzklassen bilden
- Testfälle für gültige Klassen bilden
- Testfälle für ungültige Klassen bilden
Was ist eine Grenzwertanalyse?
- systematische Bestimmung von Testfällen -> verfeinerung der Äquivalenzklassenbildung
Was sollte bei einem Anweisungstest getestet werden?
- alle Anweisungen/Knoten