TU Wien:Software-Qualitätssicherung VU (Biffl)/Fragenkatalog SQ
Nennen Sie die Phasen des SPI-Zyklus nach Deming!
Software-Process-Improvement mit PDCA-Zyklus
- Plan: Planen der nächsten Iteration des Zyklus
- Do: Durchführen
- Check: Ergebnisse überprüfen
- Act: Analyse der Ergebnisse, Feedback für nächsten Zyklus
Welche vier Zielsetzungen, die sich gegenseitig beeinflussen, werden bei Softwareentwicklung sichtbar?
- Teufelsquadrat nach Sneed: Qualität, Quantität, Entwicklungsdauer/Aufwand, Kosten
- Die Fläche die zur Verfügung steht bleibt gleich, wenn eine Zielsetzung sich ändert, werden die anderen davon beeinflusst
Nennen Sie die Phasen im Test-driven Development!
- Think - was muss implementiert und getestet werden
- Red - Erstellung aller Test → müssen alle fehlschlagen
- Green - Implementierung der Funktion/Komponente, wenn die Tests funktionieren, ist die Implementierung fertig
- Refactor - Überarbeitung/Optimierung der Implementierung, Tests nochmal ausführen, wenn alles passt die nächste Anforderung
Nennen Sie die Elemente einer User Story Card!
- Card: Das physische Medium. Hier werden die Anforderung, ihre Dringlichkeit, die erwartete Dauer für Entwicklung und Test sowie die Abnahmekriterien für diese Story identifiziert. Die Beschreibung muss genau sein, da sie im Product Backlog verwendet wird.
- Conversation: Die Diskussion (Conversation) erklärt, wie die Software genutzt werden wird.
- Confirmation: Die Abnahmekriterien, die in der Diskussion festgelegt werden, werden verwendet, um den Abschluss einer User-Story bestätigen (confirm) zu können.
User Story Konstrukt
- As a [user role], I want to [goal], so that I can [reason].
- Wer, was, warum?
Elemente aus der Übung:
- Rollen
- Vorbedingung & Nachbedingung
- Beschreibung des Anwendungsfalls mit Begründung warum der User etwas machen will
Teststufen den Beschreibungen zuordnen (Komponententest, Integrationstest, Systemtest, Akzeptanztest, Lasttest, Regressionstest)
- Komponententest - Testen einzelner Komponenten/Funktionalitäten
- Integrationstest - Testen von Schnittstellen und Zusammenspiel einzelner Komponenten
- Systemtest - Testen eines integrierten Systems, ob Anforderungen erfüllt wurden
- Akzeptanztests - Testen ob System für den Einsatzbereit ist und den Kriterien des Kunden entspricht
- Lasttest - Testen wie sich ein System unter größerer Belastung verhält, Performance Test
- Regressionstest - Testen ob sich keine Bugs bei Veränderungen von Code eingeschlichen haben, alte Tests werden auf neuen Code ausgeführt
Refactoring: Was ist das, welche Schritte macht man?
Steigerung der Code-Qualität in Bezug auf Lesbarkeit, Verständlichkeit, Komplexität, Architektur/Design
- Identifikation - Stelle finden die verbessert werden kann
- Testabdeckung - sicherstellen, dass die Stelle durch ausreichend Tests abgedeckt ist
- Durchführung des Refactoring + regelmäßiges durchführen der Tests zur Überprüfung, dass das Verhalten nicht verändert wird
Erklären und skizzieren Sie den Ablauf eines Reviews von Anforderungen!
- Review, ob Anforderungen mit dem Projektvorschlag übereinstimmen (keine Widersprüche)
- Überprüfen ob die Anforderungen rückverfolgbar sind (werden Anforderungen überhaupt im Vorschlag genannt)
- Anforderungen nach Kriterien einteilen (funktional - nicht funktional, testbar)
- Aufzeichnen, wenn bei Anforderungen etwas fehlt → bsp. nicht genau genug um testen zu können - Stichwort “gute Usability”
Erklären Sie das Teufelsquadrat nach Sneed!
- Vier Ecken: Qualität, Quantität, Entwicklungsdauer/Aufwand, Kosten
- Die Fläche die zur Verfügung steht bleibt gleich, wenn eine Zielsetzung sich ändert, werden die anderen davon beeinflusst
- bsp. durch höhere Ansprüche an die Qualität steigen auch die Kosten und der Aufwand
Nennen und beschreiben Sie 4 ISTQB Testprinzipien!
- Testen zeigt Fehler auf, nicht dass es keine gibt
- vollständiges Testen ist nicht möglich
- Frühes Testen ist besser → Fehler billiger zu lösen
- Fehlerhäufungen beachten → Fehler sind nicht normal verteilt, in einer Stelle mit vielen Fehlern sind wahrscheinlich noch mehr
- Veränderung statt Wiederholung → Tests mehrmals ausführen bringt keine neuen Fehler
- Fehler ist kontextabhängig
- Trugschluss. Fehlerlose Systeme sind brauchbar → nur weil es fehlerlos (fehlerarm) ist, heißt das nicht, dass es den Bedürfnissen des Kunden entspricht
Stellen Sie BlackBox- und WhiteBox-Testing anhand von 4 Merkmalen/Unterschieden gegenüber!
BlackBox
- basiert auf Spezifikationen
- kein Wissen über innere Struktur
- Daten-getrieben
- Anforderungsüberdeckung
WhiteBox
- basiert auf Struktur von Code
- Wissen über innere Struktur erforderlich
- Logik-getrieben
- Überdeckung von Kanten, Knoten, Pfaden
Erklären Sie den Unterschied zwischen Verifikation und Validierung.
- Verifikation: habe ich das, was ich produziert habe richtig produziert
- "Bauen wir das Produkt richtig?"
- Test gegen die Spezifikation
- Validierung: habe ich das richtige produziert
- "Bauen wir das richtige Produkt?"
- Test der Umsetzung gegen die Nutzeranforderungen
Zählen Sie 6 Leistungen der QS-Stelle auf!
- Qualitätsplanung
- Herstellen lokaler Standards
- Review zentraler Projektdokumente
- Organisieren von Reviews
- Unterstützung bei Personalauswahl, Software-Zukauf
- Vorbereitung und Auswertung von Produkttests
Nennen und beschreiben Sie 4 Arten von Messungen!
- direkt - Wertermittlung direkt beim zu untersuchenden Objekt (z.B. Dauer, Aufwand einer Aufgabe)
- indirekt - Ermittlung von Messwerten aus direkten Messungen (z.B. Effizienz einer Fehlererkennungsmethode = Anzahl der gefundenen Fehler pro Zeiteinheit)
- objektiv - LoC, Auslieferungsdatum, Aufwand usw.
- subjektiv - Messergebnisse basierend auf der individuellen Sichtweise des Betrachters, z.B. Fragebögen zur Erfassung der Kundenzufriedenheit.
- quantitativ - Daten als konkrete Zahlenwerte (z.B. für statistische Auswertungen)
- qualitativ - Visualisierte Informationen (Text, Bilder), z.B. durch Interviews, Interpretationen.
Was ist eine Inspektion?
- spezielle Form eines (formalen) Reviews, schon in frühen Phasen
- Ziel: schwere Defekte im Prüfobjekt finden
- Lesetechniken → Prüfobjekt Absatz für Absatz durchgehen
- Fehler finden in Anforderung/Design-Dokumenten
- hohe Kosten durch Personalstunden
- Nutzen:
- frühes Finden von Fehlern → billig
- gemeinsame Sicht auf Projekt → alles genau durchsprechen mindert Missverständnisse
- genaues Durchgehen steigert Verständnis über das geforderte Produkt
Was ist Testautomatisierung? Welche Ziele hat sie? In welchen Teststufen kann sie angewendet werden?
- automatisches Ausführen von Tests → mit Hilfe von Frameworks wie UNIT (JUnit)
- ermöglicht leichtes wiederholendes Ausführen von Tests nach jeder Änderung
- schnelles Erkennen von Fehlern, verhindern von Folgefehlern
- in Komponententests, Integrationstests, Lasttests, Regressionstests
Beschreiben Sie Testen in SCRUM sowie 5 Aufgaben von Tester_innen.
- SCRUM: Testen ist teil der Entwicklung (von Product-Owner / Kunden gemacht)
- Aufgaben von Tester_innen
- Statische Tests der Anforderungen / Dokumentation
- Dynamisches Testen (Ausführung von Akzeptanztests)
- Erstellung von Akzeptanztests
- Sicherstellung der Verwaltung von Testfällen im SCM
- Unterstützung bei Unit Tests
- Unterstützung bei test-getriebenem Design
- Test Ansatz
- Test Planung
- Regressionstests (manuell & automatisiert)
- Input während des Meetings (Planung, Sprint Review, etc.)
- Risikoanalyse und –abschätzung
- Schätzung der User Stories
- Demonstration und Unterstützung während des Sprint Reviews
- Tracability von Tests zu User Stories
- Erstellung und Wartung von automatisierten Tests
- Unterstützung bei Akzeptanztests
Was ist der Unterschied zwischen Anweisungsüberdeckung und Zweigüberdeckung? Geben Sie je ein Beispiel (z.B. durch einen Kontrollflussgraphen)
Anweisungsüberdeckung
- Statement Coverage
- jede Anweisung mindestens einmal durchlaufen
- zeigt ob toter Code existiert (Code der nie aufgerufen wird)
Zweigüberdeckung
- Branch Coverage
- vollständige Anweisungsüberdeckung
- jede Kante mindestens einmal durchlaufen
- zeigt nicht ausführbare Programm-Zweige auf
- hilft oft durchlaufene Teile zu finden → Optimierung
- unzureichender Test von Schleifen
- Komplexe Logik wird nicht berücksichtigt
Charakterisieren Sie den Unterschied zwischen Äquivalenzklassenzerlegung und Grenzwertanalyse und beschreiben Sie, wieso diese notwendig ist. Illustrieren Sie das an einem Beispiel.
Äquivalenzklassenzerlegung:
- Zerlegung einer Menge von Daten (Input oder Output) in Untermengen (Klassen), die äquivalente Ergebnisse oder Auswirkungen produzieren.
- Jede Klasse/Klassenkobination sollte mindestens einmal getestet werden. → Dadurch sinkt die Anzahl der Testfälle und somit der Testaufwand
Grenzwertanalyse:
- An den Rändern der Äquivalenzklassen treten besonders häufig Fehler auf, deswegen sollten sie immer getestet werden. Man testet in der Regel direkt mit dem Grenzwert, knapp darüber und knapp darunter.
Welchen Kontext bei Qualitätsmetriken kennen Sie? Nennen Sie mindestens drei.
- Innere SW Qualität
- Äußere SW Qualität
- Fortschrittskontrolle
- Risiken
- Trends
Welche 4 Arten gibt es andere Komponenten in einem Komponententest zu simulieren? Nennen und beschreiben Sie diese. (sinngemäß)
- Dummy
- Platzhalter ohne Funktionalität
- Stub
- Ausführbare Implementierung
- Liefert vordefinierte Werte
- Mock
- Wie Stub nur werden die Parameter die an ein Mock übergeben werden überprüft bzw. erkennt wenn unerwartete Werte eingehen
- "Stubs don't fail your tests, mocks can"
- Fake
- Ausführbare Implementierung, jedoch mit ShortCuts
- z.B. In Memory DB