Softwaretesting HF

Softwaretesting ZbW

Softwaretesting ZbW


S. B.
Diese Karteikarten bieten einen umfassenden Überblick über Softwaretesting, einschließlich Methoden, Prozessen und Techniken. Sie decken Themen wie Unit-Tests, Testfälle, Abhängigkeitsmanagement und verschiedene Teststrategien ab. Ideal für Entwickler und Tester, die ihre Fähigkeiten im Softwaretesting verbessern und effizientere Testprozesse implementieren möchten.
Cartes-fiches
95
Utilisateurs
9
Langue
Allemand
Catégorie
Informatique
Niveau
Autres
Créé / Mis à jour
17.09.2018 / 26.12.2023

Cartes-fiches

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

Étudier