Quality in Use
System/Software Product Quality
Unterschied Validierung und Verifikation
Unterschied Qualitätsmanagmenent und Qualitätssicherung
Unterschied Analytische Qualitätssicherung und Konstruktive Qualitätssicherung (Einteilung Software Qualitätssicherung)
Ursachenkette für Fehler
Was ist eine Anforderung?
Funktionale und Nicht-Funktionale Anforderungen
Anforderungskategorisierung nach Kano und Kano Modell
Basisfaktoren (unterbewusstes Wissen) sind die selbstverständlich vorausgesetzten Systemmerkmale. (Muss-Merkmale)
Leistungsfaktoren (bewusstes Wissen) sind die explizit geforderten Systemmerkmale. (Soll-Merkmale)
Begeisterungsfaktoren (unbewusstes Wissen) sind Systemmerkmale, die der Stakeholder nicht kennt und erst während der Benutzung als angenehme und nützliche Überraschung entdeckt. (Kann-Merkmale)
Unerhebliche Faktoren sind Systemmerkmale, welche beim Stakeholder weder beim Vorhandensein noch bei Abwesenheit einen Unterschied in der Zufriedenheit verursacht.
Rückweisungsfaktoren sind Systemmerkmale, welche beim Stakeholder Unzufriedenheit verursacht.
Use-Case-Diagramme
• Ein Use Case beschreibt die Interaktion mit dem System bzw. das Verhalten des Systems aus Benutzersicht.
• Das Use-Case-Diagramm ist eine einfache grafische Notation zur Darstellung mehrerer Use Cases im Systemkontext
• In der Use-Case-Beschreibung bzw. Spezifikation wird das Verhalten des Systems in einem Use Case festgelegt
“Fundamentaler” Testprzess nach ISTQB
Grundbegriffe Software Testen
Klassifikation von Testverfahren
V-Modell
Vergleich der Teststufen
W-Modell
Testklassifikation: Unterschied Black-Box und White-Box
Mehrstufiger Testprozess nach ISO 29119
Nenne mehrere (4) Methoden um Testfälle zu erstellen.
Dynamischer Testprozess nach ISO 29119
Was ist ein Kontrollflussgraph? Und wie kann mit diesem getestet werden?
Was ist die Bedingungsüberdeckung?
Was sind Regressionstest?
Was ist Profiling und welche Arten gibt es?
Beispiel: Roofline Modell
Wann sollte welche Datenstruktur verwendet werden?
Was ist Performanceoptimierung?
Exakte Definition variiert mit dem Kontext der Optimierung
Im Compilerkontext:
“Transformation eines Programms A in ein Programm B, welches ein identes Eingabe Ausgabeverhalten aufweist aber nicht funktionale Aspekte verbessert.”
Diese Definition ist sehr sicher , schränkt aber den Raum für Optimierungen ein
Alternative Definition:
“Beliebige Änderungen in einem Programm , die nicht funktionale Aspekte verbessern und alle anderen Anforderungen weiterhin erfüllen.”
Welche Optimierungskategorien gibt?
Mit welchen Hilfmitteln kann diese Optimierung erfolgen?
Wie sind die Optimierungen anwendbar?
Bei der Anforderungsanpassung geht es um die Verbesserung der Performance oder Reduktion des Ressourcenverbrauchs durch Anpassung der Anforderungen. Sollte stets im Austaus mit Kunden/Benutzern erfolgen und erst angewendet werden, wenn andere Optimierungsmöglichkeiten erschöpft sind.
Algorithmische Optimierung ist die wichtigste Kategorie an Optimierungen. Es enthält alle Optimierungen , die das selbe Ergebnis auf grundsätzlich andere Weise erzielen.
Bei der Prozeduralen Optimierung geht es um Anpassungen in der Umsetzung eines existierenden Algorithmus, um die Ausführung effizienter zu gestalten. Der Unterscheidung zwischen Prozeduraler Optimierung und Algorithmischer Optimierung ist nicht immer 100% klar/binär.
Bei der Hardwarenahen Optimierung gibt es zwei Kategorien: 1) Ändern des Programmablaufs und/ oder der Datenstrukturen um besser auf gewisser Hardware zu arbeiten, 2) Ausnutzen spezieller Hardwareeinheiten oder Features. Letztere schränkt die Portabilität des Programms ein.
.
Ablauf von Performanceorientierter Entwickung
Was ist ein Maß?
Welche Skalentpen gibt es und was sind erlaubte Operationen und Eigenschaften von ihnen?
Was sind Eigenschaften die Maße haben sollten?
Typen von Metriken nach Messobjekt
Zyklomatishe Zahl
Was sind die Metriken für objektorientierte Softwaresysteme?
LOC… Lines of Code
Wie können Metriken eingesetzt werden um Code Smells zu verhindern?
Was sind Ansätze für die Definiton von Maßen?
Was ist der Goal-Question-Metric (GQM) Ansatz?
Was ist die Testgeriebene Entwicklung und wie sieht ein typischer Zyklus dieser Entwicklungsmethode aus?
Was sind die FIRST Prinzipien?
Welche Test-Double Typen gibt es?
Was ist Behavior Driven Development (BDD)?
Was ist Domain Driven Development und was ist der Unterschied zu Domain Driven Design?
Was ist Konstruktive Qulitätssicherung?
Nenne Notationsstile für Bezeichner und bekannte Notationskonventionen
Was ist der Java Coding Style?
Was ist Dokumentation in einem Softwareprojekt?
Was sind die SOLID Prinzipien?
Welche Arten von Fehlerwirkungen kennst du?
Welche Prolemlösungsmethoden kennst du?
Ws ist Continuous Integration?
Build
• Ist mehr als die Kompilierung des Quellcodes
• Ein Build ist der Prozess Quellcode zu kompilieren und sicherzustellen, dass er als Ganzes funktioniert
• Besteht unter anderem aus Kompilat, Test, Inspektion und Auslieferung der Software
Vorteile von Continuous Integration
• Reduziert Risiken durch Feedback
• Übernimmt wiederkehrende Aufgaben
• Erstellt laufend auslieferbare Software
• Verbessert die Sichtbarkeit im Projekt
• Stärkt das Vertrauen des Entwicklerteams in die Software
Reduziert Risiken
• Fehler werden früh erkannt und können dadurch früh behoben werden
• Zustand der Software ist messbar
• Annahmen werden reduziert
• Modularität
Was ist der Unterschied von Continuous Delivery und Continuous Deployment?
Was ist Docker?
Was ist eine Dockerfile?
Was ist ein Image?
Was ist ein Container?
Was ist DevOps?
Eine sinnvolle Kombination aus Werkzeugen , Ablaufstrukturen und Anreizen um die Zusammenarbeit zwischen Entwicklung und Betrieb zu verbessern.
Was sind Fallstricke der Automatisierung?
Was ist Branch by Abstraction?
Branch by Abstraction
Erstellen einer Abstraktion über den Teil des Systems, der geändert wird
Refactoring des Systems, um die Abstraktionsschicht zu verwenden
Programmierung des Features; die Abstraktionsschicht delegiert je nach Bedarf an den alten oder neuen Code
Entfernen der alten Implementierung
Iterieren über Schritte 3 und 4. Das System wird in der Zwischenzeit ausgeliefert
Sobald die alte Implementierung vollständig ersetzt wurde, wird die Abstraktionsschicht entfernt
Was ist Feature Toggles?
Feature Toggles
• Kompletter Code wird ausgeliefert
• Mit Hilfe von datengesteuerten Schaltern wird entschieden, welches Merkmal zur Laufzeit zur Verfügung gestellt wird
• Um datengesteuerte Schalter zu aktivieren, werden häufig Konfigurationsdateien verwendet
• Mit den Funktionsschaltern kann das Team auf dem gleichen Entwicklungs Branch entwickeln und den kompletten Code an die Produktion ausliefern
• Nachteil : Der Produktionscode enthält Teile, die für dieses spezifische Release nicht relevant sind. Dieser nicht relevante Code kann andere Codeteile beeinflussen und sogar zu Fehlern führen
Was ist Dark Launching?
Dark Launching
• Dark Launch ist die Strategie, erste Versionen der Funktionalität in der Produktion einzusetzen, bevor die Funktionalität an alle Benutzer freigegeben wird
• Erlaubt es, kontinuierlich neue Versionen der Software bereitzustellen, unabhängig davon, welche Funktionen für welche Benutzer verfügbar sind
• Da die ersten Versionen in der Produktion nur für eine Teilmenge von Endbenutzern verfügbar sind, können Fehler leichter gefunden werden, bevor Sie das Release allen Benutzern zur Verfügung stellen
• Risikoarme Behebung von Problemen: wenn Probleme mit einer frühen Version eines Features auftreten, können nur wenige Benutzer das Problem haben
Was ist Blue-Green Deployment?
Blue-Green Deployment
• Neue Versionen der Anwendung werden Seite an Seite mit der alten Version eingesetzt
• Um auf die neue Version umzusteigen oder auf die alte Version zurückzusetzen, muss nur eine Lastausgleichs oder Router Einstellung geändert werden
-> Zwei Produktionsumgebungen, die sich so ähnlich wie möglich gestalten
• Zu einem bestimmten Zeitpunkt ist eine von ihnen (z.B. die grüne Umgebung) „live” -> Letzte Schritte des Testens für ein neues release in der blauen Umgebung
• Sobald die Software wie erwartet in der blauen Umgebung arbeitet, werden eingehenden Anfragen in die blaue Umgebung umgeleitet
• Danach ist die grüne Umgebung aus der Produktion und kann zur Vorbereitung des nächsten Releases verwendet werden
Was ist Canary Release?
Canary Release
• Variation des blue green deployments, die beim Betrieb eines Clusters von Servern angewendet werden kann
• Anstatt einen ganzen Cluster auf einmal auf die neueste Version zu aktualisieren, wird hier schrittweise bereitgestellt
• Das neue Release geht zunächst an eine Teilmenge von Produktionssystemen, an die nur bestimmte Benutzer oder eine geschlossene Benutzergruppe (z.B. Mitarbeiter) weitergeleitet werden
• Wenn diese Bereitstellung erfolgreich ist, kann die Freigabe auf mehrere Benutzer oder schließlich auf alle verfügbaren Benutzer verteilt werden
Was sind Quality Gates?
Was ist ein Vorgehensmodell?
Wasserfallmodell
Spiralmodell
Rational Unified Process
Was ist das Agile Manifest?
Agiles Manifest – 4 Werte
• Individuen und Interaktionen mehr als Prozesse und Werkzeuge
• Funktionierende Software mehr als umfassende Dokumentation
• Zusammenarbeit mit dem Kunden mehr als Vertragsverhandlung
• Reagieren auf Veränderung mehr als das Befolgen eines Plans
12 Prinzipien hinter dem Agilen Manifest
• Liefere funktionierendes Produkt mit jedem Sprint
• Änderungen Willkommen heißen
• Früh und häufig liefern
• Tägliche Zusammenarbeit von Experten und Entwicklern
• Motivation, Unterstützung, Vertrauen
• Face-to-face Kommunikation
• Fortschritt = funktionierendes Produkt
• Fördere nachhaltige Entwicklung
• Technische Exzellenz anstreben
• Maximiere die nicht getane Arbeit (Einfachheit)
• Selbstorganisierte Teams
• Kontinuierliche Verbesserung
Was ist Scrum und was sind die Akteure?
Was ist die MoSCoW Priorisierung?
Zuletzt geändertvor einem Jahr