Gib 9 typische Testziele an
Evaluieren von Arbeitsergeabnissen wie Anforderungen, User Storys, Entwürfe und Code
Auslösen von Fehlerwirkungen und Finden von Fehlerzuständen
Sicherstellen der erforderlichen Überdeckung eines Testobjekts
Verringern des Risikos einer unzureichenden Softwarequalität
Verifizieren, ob spezifizierte Anforderungen erfüllt wurden
Verifizieren, ob ein Testobjekt den vertraglichen, rechtlichen und regulatorischen Anforderungen entspricht
Bereitstellen von Informationen für die Stakeholder, damit diese fundierte Entscheidungen treffen können
Aufbauen von Vertrauen in die Qualität des Testobjekts
Validieren, ob das Testobjekt vollständig ist und aus Sicht der Stakeholder wie erwartet funktioniert.
Gib 5 Dinge an, die zum Kontext gehören und Einfluss auf die Testziele haben können
Das zu testende Arbeitsergebnis
Die Teststufe
Risiken
Der Softwareentwicklungslebenszyklus
Faktoren im Zusammenhang mit dem geschäftlichen Kontext, z.B.
die Unternehmensstruktur
Wettbewerbserwägungen
die Zeit bis zur Markteinführung.
Was identifiziert dynamischer vs. statischer Test?
Dynamisch:
Fehlerwirkungen, die durch Fehlerzustände in der Software verursacht werden
Statisch
Direkt Fehlerzustände im Testobjekt finden
Angenommen du findest im dynamischen Test eine Fehlerwirkung. Was ist das Ziel von Debugging? Aus welchen 3 Schritten besteht der Debugging-Prozess? Was folgt darauf?
Ziel: Die Ursachen für die Fehlerwirkung (die Fehlerzustände) zu finden, diese zu analysieren und zu beseitigen. Schritte_
Reproduzieren einer Fehlerwirkung
Diagnose (Finden der Grundursache)
Behebung der Ursache
Fehlernachtests, Regressionstests
Angenommen du findest beim statischen Test einen Fehlerzustand. Was ist das Ziel vom Debugging? Welchen Einfluss hat der statische Befund auf den Debugging-Prozess?
Ziel: Beseitigen des Fehlerzustands.Beim Debugging-Prozess fallen die Reproduktion und Diagnose heraus. Folglich reduziert sich der Prozess auf:
Behebung
Gib 6 Beispiele für den Beitrag vom Testen zum Projekterfolg
Kosteneffizientes Mittel zur Erkennung von Fehlerzuständen
Höhere Qualität der Testobjekte (wenn Fehlerzustände behoben werden)
Direkte Bewertung der Qualität des Testobjekts
Beitrag zu Entscheidungen
Indirekte Repräsentation von Benutzern im Projekt
Kann erforderlich sein (vertraglich, gesetzlich, regulatorisch)
Gib 5 Auswirkungen des SDLC auf das Testen an
Umfang und Zeitpunkt der Testaktivitäten (z. B. Teststufen und Testarten)
Detaillierungsgrad der Testdokumentation
Wahl der Testverfahren und des Testansatzes
Umfang der Testautomatisierung
Rolle und Aufgaben eines Testers
Gib 4 gute Praktiken für das Testen an, die für alle SDLC gelten
Für jede Softwareentwicklungsaktivität gibt es eine entsprechende Testaktivität
Somit unterliegen alle Entwicklungsaktivitäten der Qualitätssteuerung
Unterschiedliche Teststufen haben spezifische und unterschiedliche Testziele
So wird sichergestellt dass der jeweilige Test angemessen und entsprechend umfassend ist und Redundanzen vermieden werden.
Die Testanalyse und der Testentwurf für eine bestimmte Teststufe beginnen bereits in der entsprechenden Entwicklungsphase des SDLC
So wird der Grundsatz des frühen Testens eingehalten
Tester werden in das Review von Arbeitsergebnissen einbezogen, sobald Entwürfe dieser Dokumentation verfügbar sind
So kann frühes Testen und frühe Fehlerentdeckung den Shift-Left-Ansatz unterstützen
Nenne 3 Test-First Ansätze.
Welchen besonderen Zweck erfüllt Testen hier?
Welches Prizinzip wird umgesetzt?
Welchem Ansatz wird gefolgt und wieso?
Welches Entwicklungsmodell wird unterstützt?
1. Test-First Ansätze:
Test-Driven-Development (TDD)
Abnahmetestgetriebene Entwicklung (ATDD)
Verhaltensgetriebene Entwicklung (Behavior-Driven Development, BDD)
2. Besonderer Zweck des Testens: Tests werden vor dem Code geschrieben und dienen so als Mittel zur Lenkung der Entwicklung3. Jeder dieser Ansätze setzt das Prinzip des frühen Testens um4. Es wird dabei dem Shift-Left-Ansatz gefolgt da die Tests definiert werden, bevor der Code geschrieben wird.5. Sie unterstützen ein iteratives Entwicklungsmodell
Was ist das Kernprinzip von TDD? Erkläre die 3 Iterationsschritte und deren Dauer.
TDD = Test-Driven Development
Codierung wird durch Tests gelenkt, da Testfälle zuerst geschrieben werden
Einzelne Iterationen von wenigen Minuten (Red, Green, Refactor)
Komponententest schreiben, der fehlschlägt (Red)
Code anpassen, dass der Test durchgeht (Green)
Code aufpolieren (Refactor)
Erkläre ATDD
ATDD = Abnahmetestgetriebene Entwicklung
Tests werden aus Abnahmekriterien als Teil des Systementwurfs entwickelt
Abnahemtests werden geschrieben, ehe der Teil der Anwendung entwickelt wird, der die Tests erfüllen soll
Erkläre BDD (3 Punkte)
Verhaltensgetriebene Entwicklung (Behavior-Driven Development, BDD):
Drückt das gewünschte Verhalten einer Anwendung mit Testfällen aus, die in einer einfachen, natürlichsprachlichen Form geschrieben und die von Stakeholdern leicht zu verstehen sind
Üblicherweise unter Verwendung des Gegeben/Wenn/Dann- (Given/When/Then-) Formats
Die Testfälle werden dann automatisch in ausführbare Tests übersetzt
Erkläre Dev und Ops
Dev = Development. Entwicklung der Software.
Ops = Operations. Prozesse für Betrieb der ausgelieferten Software.
Erkläre CI, CD und CI/CD
CI = Continuous Integration. Codeänderungen werden häufig (mind. täglich) in zentrales Repository gepushed in mit eine bereits integrierten Versionsstand hinzugefügt. Das produziert einen neuen Build. Es werden also nicht wahllos unintegrierte Teile zusammen in einen neuen Build zusammengeworfen, sondern es wird stückweise vorgegangen.
CD = Continuous Delivery. Techniken, Prozesse und Werkzeuge um CI automatisiert auszuführen.
CI/CD = Der kombinierte Prozess aus CI und CD.
Warum unterstützt CI/CD frühes Testen?
Weil sofort nach dem Einchecken des Codes alle im CI/CD-Prozess konfigurierten Tests automatisiert ausgeführt werden.
Welche 4 Informationen liefert Ops an Dev?
Zuverlässigkeit der Anwendung
Auslastung
Performance
Nutzung bereitgestellter Funktionen
Erkläre DevOps. Was ist das Ziel?
DevOps ist ein organisatorischer Ansatz, der darauf abzielt, Synergien zu schaffen, indem Entwicklung (Dev) (einschließlich Testen) und Betrieb (Ops) zusammenarbeiten
Warum erfordert DevOps einen Kulturwandel im Unternehmen?
Um die Kluft zwischen Entwicklung (einschließlich Testen) und Betrieb zu überbrücken
Welche 4 Dinge födert DevOps? Welche 3 Dinge ermöglicht es?
DevOps fördert
Teamautonomie
schnelle Rückmeldungen
integrierte Werkzeugketten
technische Praktiken wie CI/CD
Dies ermöglicht es den Teamsqualitativ hochwertigen Code über eine DevOps-Auslieferungskette (Delivery Pipeline) schneller zu erstellen, zu testen und freizugeben (Kim 2016).
Nenne 6 Vorteile von DevOps für das Testen
Schnelle Rückmeldung über die Codequalität und ob sich Änderungen nachteilig auf den bestehenden Code auswirken.
CI fördert einen Shift-Left-Ansatz beim Testen, indem Entwickler dazu angehalten werden, qualitativ hochwertigen Code zusammen mit Komponententests und statischer Analyse bereitzustellen.
Förderung von automatisierten Prozessen wie CI/CD, die den Aufbau stabiler Testumgebungen erleichtern.
Steigert den Blick auf nicht-funktionale Qualitätsmerkmale (z. B. Performanz, Zuverlässigkeit).
Automatisierung durch eine Auslieferungskette reduziert den Bedarf an sich wiederholenden manuellen Tests.
Das Risiko einer zu aufwendigen Regression wird durch den Umfang und die Bandbreite der automatisierten Regressionstests minimiert
Nenne 3 Risiken und Herausforderungen von DevOps
Die DevOps-Auslieferungskette muss definiert und etabliert werden.
CI/CD-Werkzeuge müssen eingeführt und gewartet werden.
Die Testautomatisierung erfordert zusätzliche Ressourcen und kann schwierig einzurichten und zu warten sein.
Erkläre Shift-Left. Was bedeutet es? Worauf soll man achten?
Shift-Left = Prinzip frühen Testens
Bedeutet idR dass das Testen frühestmöglich beginnen sollte z. B. nicht erst, wenn der Code implementiert oder die Komponenten integriert sind
Allerdings soll das Testen auch später im SDLC nicht vernachlässigt werden
Nenne bewährte Verfahren, die veranschaulichen, wie ein "Shift-Left" beim Testen erreicht werden kann
Review der Spezifikation aus der Sicht des Testens -> Finden oft potenzielle Fehlerzustände, wie Mehrdeutigkeiten, Unvollständigkeit und Inkonsistenzen.
Schreiben von Testfällen, bevor der Code geschrieben wird
Ausführen des Codes in einem Testrahmen während der Coderealisierung.
Statische Analyse des Quellcodes vor dem dynamischen Testen oder als Teil eines automatisierten Prozesses.
Durchführung von nicht-funktionalen Tests frühzeitig (wenn möglich beginnend auf der Ebene der Komponententests).
Verwendung von CI/CD, da dadurch schnelle Rückmeldung
Automatisierte Komponententests, die Teil des normalen Repositories sind
Was sind Retrospektiven?
Wenn werden sie abgehalten (4)?
Wovon hängt der Zeitpunkt und die Organisation der Retrospektive ab?
Wer nimmt Teil?
1. Retrospektiven sind Sitzungen bei denen gemeinschaftlich Rückschau über einen vergangenen Projektabschnitt gehalten wird.
2. Sie finden bspw. statt bei
Ende eines Projekts
Ende einer Iteration
Erreichen von Releasemeilenstein
Bei Bedarf
3. Der Zeitpunkt und die Organisation hängt vom SDLC ab
4. Alle Projektbeteilitgten nehmen Teil (also nicht nur Tester, sondern z. B. auch Entwickler, Architekten, Product Owner, Businessanalysten):
Nenne 3 Dinge, die bei Retrospektiven besprochen werden können.
Was war erfolgreich und sollte beibehalten werden?
Was war nicht erfolgreich und könnte verbessert werden?
Wie können die Verbesserungen eingearbeitet und die Erfolge in Zukunft beibehalten werden?
Wo sollten Ergebnisse von Retrospektiven festgehalten werden?
Sie sind normalerweise Teil des Testabschlussberichts
Wofür sind Retrospektiven entscheidend? Was ist dafür wichtig?
Retrospektiven sind entscheidend für die erfolgreiche Umsetzung der kontinuierlichen Verbesserung, und es ist wichtig, dass die empfohlenen Verbesserungen weiterverfolgt werden.
Nenne 5 Vorteile von Retrospektiven für das Testen:
Erhöhte Effektivität/Effizienz des Testens
z. B. durch die Umsetzung von Vorschlägen zur Prozessverbesserung
Höhere Qualität der Testmittel
z. B. durch gemeinsames Review der Testprozesse
Teamzusammenhalt und Lernen
z. B. durch die Möglichkeit, Probleme anzusprechen und Verbesserungspunkte vorzuschlagen
Verbesserte Qualität der Testbasis
z. B. weil Mängel im Umfang und in der Qualität der Anforderungen angesprochen und behoben werden konnten
Bessere Zusammenarbeit zwischen Entwicklung und Test
z. B. weil die Zusammenarbeit regelmäßig überprüft und optimiert wird
Was sind Teststufen? Welche 5 gibt es?
Teststufen beschreiben Abschnitte des Testprozesses, bei denen Software in einem bestimmten Entwicklungs-/Integrations- oder Abstraktionsstadium getestet wird.
Folgende 5 Stufen gibt es (Abstraktion / Integration zunehmend):
Komponententest
Komponentenintegrationstest
Systemtest
Systemintegrationstest
Abnahmetest
Worauf konzentriert sich der Komponententest? Welche Unterstützung wird benötigt? Wer und wo werden Tests ausgeführt?
Der Komponententest (auch Unittest genannt) konzentriert sich auf das Testen von isolierten Komponenten.
Dies erfordert oft spezifische Unterstützung, wie Testrahmen oder Unittest-Frameworks.
Komponententests werden normalerweise von Entwicklern in ihrer Entwicklungsumgebung durchgeführt.
Auf welche 2 Dinge konzentriert sich der Komponentenintegrationstest?
Der Komponentenintegrationstest konzentriert sich auf das Testen der Schnittstellen und Interaktionen zwischen Komponenten.
Worauf konzentriert sich der Systemtest?
Welche 2 Tests umfasst es?
Was gilt bezüglich Simulation?
Wer kann die Tests ausführen und worauf bezieht sich der Test?
1. Der Systemtest konzentriert sich auf das Gesamtverhalten und die Leistungsfähigkeiten eines gesamten Systems oder Produkts.
2. Sie umfassen häufig funktionale Tests von End-To-End-Aufgaben und nicht-funktionale Tests von Qualitätsmerkmalen.
3. Die Verwendung von Simulationen von Teilsystemen ist ebenfalls möglich.
4. Der Systemtest kann von einem unabhängigen Testteam durchgeführt werden und bezieht sich auf Anforderungsspezifikationen für das System.
Worauf konzentriert sich der Systemintegrationstest ? Was gilt in Bezug auf die Testumgebung?
Der Systemintegrationstest konzentriert sich auf das Testen der Schnittstellen zwischen dem System unter Test und anderen Systemen und externen Diensten. Für Systemintegrationstests sind geeignete Testumgebungen erforderlich, die vorzugsweise der Betriebsumgebung entsprechen.
Worauf konzentriert sich der Abnahmetest?
Wer sollte den Test idealerweise ausführen?
Welche 4 Formen gibt es?
1. Der Abnahmetest konzentriert sich auf die Validierung und den Nachweis der Einsatzfähigkeit, d. h., dass das System die Geschäftsanforderungen des Benutzers erfüllt.
2. Idealerweise sollten Abnahmetests von den vorgesehenen Benutzern durchgeführt werden.
3. Die wichtigsten Formen des Abnahmetests sind:
der Benutzerabnahmetest (user acceptance testing, UAT),
der betriebliche Abnahmetest,
der vertragliche und regulatorische Abnahmetest,
der Alpha-Test und der Beta-Test.
Erkläre den betrieblichen Abnahmetest
Ein Abnahmetest, bei dem die Installation und Konfiguration des Sytems geprüft wird.
Was ist ein Feldtest? Wann ist er empfehlenswert?
Ein Feldtest ist ein Abnahmetest, bei dem das Produkt stichprobenartig in einer realistischen Umgebung verwendet wird.Das ist v.A. empfehlenswert, wenn man es später mit vielen, unvorhersehbaren Einsatzumgebungen zu tun haben wird (bspw. ein Home-Router).
Erkläre den Benutzerabnahmetest. Wann ist er besonders wichtig?
Hier wird das System von den Benutzern selbst validiert.Das ist besonders wichtig, wenn Auftraggeber und Benutzer später verschiedene Gruppen sind (bspw. wenn ein Onlineportal für Bürger entwickelt wird, was eine Behörde beauftragt hat).
Erkläre Alpha- vs. Beta-Tests
Beides sind eine Art von Abnahmetest, bei denen Vorabversionen durch repräsentative Kunden getestet werden (ähnlich zum Feldtest).Alpha = Wird beim Entwickler ausgeführtBeta = Wird beim Kunden ausgeführt
Welche 4 Testarten unterscheiden wir?
Funktionaler Test
Nicht-funktionaler Test
Black-Box-Test
White-Box-Test
Was macht der funktionale Test? Was sind die 3 Hauptziele?
Beim funktionalen Test werden die Funktionen bewertet, die eine Komponente oder ein System erfüllen soll.
Die Funktionen sind, „was" das Testobjekt tun soll.
Das Hauptziel der funktionalen Tests ist die Überprüfung
der funktionalen Vollständigkeit
der funktionalen Korrektheit
der funktionalen Angemessenheit
Was ist das Hauptziel vom Nicht-Funktionalen Test?
Beim nicht-funktionalen Test werden andere als die funktionalen Eigenschaften einer Komponente oder eines Systems bewertet. Beim nicht-funktionalen Test wird geprüft, "wie gut sich das System verhält". Das Hauptziel des nicht-funktionalen Tests ist die Überprüfung der nicht-funktionalen Qualitätsmerkmale der Software.
Welche 7 nicht-funktionalen Qualitätsmerkmale unterscheidet man?
Performanz
Kompatibilität
Gebrauchstauglichkeit
Zuverlässigkeit
IT-Sicherheit
Wartbarkeit
Übertragbarkeit
Wie können nicht-funktionale Tests schon früh im SDLC umgesetzt werden?
Im Rahmen von Reviews, Komponententest oder Systemtest
Warum kann man oft funktionale für nicht-funktionale Tests verwenden?
Weil sie einen Testrahmen bieten aber speziell prüfen, ob eine nicht-funktionale Bedingung erfüllt ist (z. B. die Prüfung, ob eine Funktion innerhalb einer bestimmten Zeit ausgeführt wird oder ob eine Funktion auf eine neue Plattform portiert werden kann).
Erkläre den Black-Box-Test. Woher leitet er seine Testfälle ab? Was ist das Hauptziel?
Der Black-Box-Test basiert auf Spezifikationen und leitet die Tests aus der Dokumentation außerhalb des Testobjekts ab.
Das Hauptziel des Black-Box-Tests besteht darin, das Verhalten des Systems gegen seine Spezifikationen zu überprüfen.
Erkläre den White-Box-Test. Woher leitet seine Testfälle ab (4 Dinge)? Was ist das Hauptziel?
Der White-Box-Test ist strukturbasiert und leitet Tests aus der Implementierung oder der internen Struktur des Systems ab (z. B. Code, Architektur, Arbeitsabläufe und Datenflüsse).
Das Hauptziel des White-Box-Tests besteht darin, die zugrunde liegende Struktur durch die Tests bis zu einer akzeptablen Stufe zu überdecken.
Auf welchen Teststufen können welche Testartenv erwendet werden? Was gilt bzgl. den Testverfahren?
Alle vier genannten Testarten können auf allen Teststufen angewandt werden, auch wenn der Schwerpunkt auf jeder Stufe anders ist.
Für alle genannten Testarten können unterschiedliche Testverfahren zur Ableitung von Testbedingungen und Testfällen verwendet werden.
Erkläre den Fehlernachtest. Nenne zwei Arten, wie man ihn Ausführen kann. Wovon hängt die Art ab?
Der Fehlernachtest bestätigt, dass ein ursprünglicher Fehlerzustand erfolgreich behoben wurde.
Je nach Risiko kann man die behobene Version der Software auf verschiedene Arten testen, z. B:
Ausführen aller Testfälle, die zuvor aufgrund des Fehlerzustands fehlgeschlagen sind, oder auch durch
Hinzufügen neuer Testfälle, um alle Änderungen zu überdecken, die zur Behebung des Fehlerzustands erforderlich waren.
Was kann man bei Fehlernachtests machen, wenn Zeit oder Geld knapp ist?
In dem Fall können sich Fehlernachtests darauf beschränken, lediglich die Testschritte auszuführen, die die durch den Fehlerzustand verursachte Fehlerwirkung produziert haben, und zu prüfen, ob die Fehlerwirkung nicht mehr auftritt.
Was ist der Regressionstest? Was ist sein Ziel?
Als Regressionstest bezeichnet man die wiederholte Ausführung bestehender Testfälle.
Sein Ziel ist zu zeigen dass eine Änderung (die ggf. bereits per Fehlernachtest geprüft wurde) keine nachteiligen Folgen hat.
Auf welche 3 Systeme kann sich ein Auslassen von Regressionstests negativ auswirken?
Die nachteiligen Folgen könnten
die Komponente betreffen, an der die Änderung vorgenommen wurde
andere Komponenten desselben Systems
andere verbundene Systeme
betreffen.
Muss sich ein Regressionstest ausschließlich auf das Testobjekt beschränken?
Nein, er kann sich auch auf die Umgebung beziehen.
Welche Analyse ist vor Regressionstests ratsam? Was zeigt sie auf?
Es ist ratsam, zunächst eine Auswirkungsanalyse durchzuführen, um den Umfang der Regressionstests zu optimieren.
Die Auswirkungsanalyse zeigt, welche Teile der Software betroffen sein könnten.
Wird ein Regressionstest nur ein mal ausgeführt? Was gilt bezüglich der Anzahl an Tests und bzgl. Automatisierung?
Regressionstestsuiten werden viele Male durchlaufen,
Im Allgemeinen nimmt die Anzahl der Testfälle mit jeder Iteration oder jedem Release zu
Daher eignen sich Regressionstests sehr gut für eine Automatisierung eignen (bspw. über CI/CD)
Was ist der Wartungstest? Womit sollte er nicht verwechselt werden?
Der Wartungstest beschreibt Tests, welche nach der Auslieferung und Inbetriebnahme der Software ausgeführt werden.
Der Test sollte nicht mit dem Wartbarkeitstest verwechselt werden.
Welche 4 Wartungskategorien gibt es?
Korrigierend (Bugfix)
Anpassung an neue Umgebung (bspw. neue OS-Version)
Neue oder verbesserte Features
Verbesserung der Wartbarkeit
Betrifft Wartung nur geplante Releases / Bereitstellungen?
Nein, es kann auch ungeplante umfassen (Hotfixes)
Welche Analyse kann vor einer Änderung während der Wartung hilfreich sein, wieso?
Eine Auswirkungsanalyse (d.h., welche System-/Code-Teile sind davon betroffen). Diese kann helfen Risiken vs. Vorteile besser abzuwügen.
Von welchen 3 Dingen hängt der Umfang des Wartungstests in der Regel ab?
dem Grad des Risikos der Änderung
der Größe des bestehenden Systems
dem Umfang der Änderung
In welche 3 Klassen können Auslöser für Wartung und Wartungstest klassifiziert werden?
Änderungen, wie z. B. geplante Erweiterungen (d. h. release-basiert), korrigierende Änderungen oder Hotfixes.
Upgrades oder Migrationen der Betriebsumgebung, z. B.
bei Wechsel von einer Plattform auf eine andere, was Tests der neuen Umgebung erfordern kann
Tests der Datenkonvertierung, wenn Daten aus einer anderen Anwendung in das zu wartende System migriert werden
Außerbetriebnahme, z. B. wenn eine Anwendung das Ende ihres Lebens erreicht.
Tests der Datenarchivierung erfordern
Testen von Wiederherstellungsverfahren
Last changed4 months ago