Skripte DHBW

Vorlesungsskripte aus dem DHBW-Studium

Zusammenfassung Software Engineering II

geschrieben am 18.12.2018 von Morten Terhart


Inhaltsverzeichnis

2 Qualitätssicherung

2.1 Warum testen wir?

Ziele des Testens

Hinweis

Testen erhöht nicht die Qualität der Software, sondern kann die Qualität nur messen. Die Qualität kann nur durch die Beseitigung von Fehlern erhöht werden.

2.2 Auswirkung

Fehlerhafte Software kann zu Schäden wie Geld-, Zeit- oder Imageverlust und Personenschäden wie Verletzung oder Tod führen.

2.4 Arten der Qualitätssicherung

Qualitätssicherung: jede geplante und systematische Maßnahme zur Erfüllung der Qualitätsanforderungen

QualitätssicherungsartenAbbildung 1: Arten der Qualitätssicherung

konstruktive Qualitätssicherung:

analytische Qualitätssicherung:

2.5 Early Error Detection

Ziel: Fehler in frühen Entwicklungsstufen finden

3 Requirements Engineering

3.1 Warum erstellen wir Anforderungen?

Anforderungen an das System müssen bekannt und gut dokumentiert sein.

Definition der Anforderung

  1. Bedingung oder Fähigkeit, die von einem Benutzer zur Lösung eines Problems oder zur Erreichung eines Ziels benötigt wird.
  2. Bedingung oder Fähigkeit, die das System erfüllen muss, um vorgegebene Spezifikationen (Vertrag, Norm, Dokumente) zu erfüllen
  3. dokumentierte Repräsentation einer Bedingung oder Fähigkeit nach 1. und 2.

Quellen für Anforderungen

Requirements Engineering

Definition:

  1. systematischer und disziplinierter Ansatz zur Spezifikation und zum Management von Anforderungen. Folgende Ziele:
  2. relevante Anforderungen kennen, Konsens unter den Stakeholdern über die Anforderungen herstellen, Anforderungen konform zu Standards dokumentieren und zu managen
  3. Wünsche und Bedürfnisse von Stakeholdern verstehen und dokumentieren, Anforderungen spezifizieren und verwalten
    • Ziel: Risiko minimieren, dass das System nicht den Wünschen und Bedürfnissen der Stakeholder entspricht

Aufgaben:

3.2 Arten von Anforderungen

Funktionale Anforderungen

Qualitätsanforderungen / Nicht-funktionale Anforderungen

Rand- / Rahmenbedingungen

3.3 System und Systemkontext abgrenzen

Systemkontext: der Teil der Systemumgebung, der für die Definition und das Verständnis des Systems relevant sind

Zwei Abgrenzungsprozesse zur Abgrenzung des Systemkontextes:

  1. Systemabgrenzung: Bestimmung der Systemgrenze zur Abdeckung der Teile und Aspekte des geplanten Systems
  2. Kontextabgrenzung: Grenze des Systemkontextes zur irrelevanten Umgebung

3.4 Anforderungen ermitteln

3.4.1 Anforderungsquellen

  1. Stakeholder
    • eine Person oder Organisation, die direkt oder indirekt Einfluss auf das Projekt und die Anforderungen hat
    • Identifizierung relevanter Stakeholder ist zentrale Aufgabe des Requirements Engineering
    • Ausgangsbasis hierzu sind meist Vorschläge vom Management oder von Fachexperten
    • Risiken bei unvollständiger Liste an Stakeholdern
      • bestimmte Aspekte des Systems bleiben unbeachtet
      • das Projektziel wird verfehlt
      • spätere Anpassungen verursachen Mehrkosten
  2. Dokumente
    • Informationen aus bestehenden Dokumenten für Anforderungen
    • Beispiele:
      • Normen/Standards
      • Gesetzestexte
      • branchenspezifische Dokumente
      • Fehlerberichte des Altsystems
  3. Systeme in Betrieb
    • Alt- und Vorgängersysteme, aber auch Konkurrenzsysteme
    • Stakeholder können Altsystem ausprobieren und Erweiterungen des neuen Systems vorschlagen

3.4.2 Anforderungskategorisierung nach dem Kano-Modell

Kano-Modell unterteilt Zufriedenheit der Stakeholder bezüglich der Anforderungen in drei Kategorien:

  1. Basisfaktoren: selbstverständlich vorausgesetzte Systemmerkmale
  2. Leistungsfaktoren: explizit geforderte Systemmerkmale
  3. Begeisterungsfaktoren: Systemmerkmale, welche die Stakeholder nicht kennen und positiv überraschen (als nützlich erachten)
Kategorien Wissensart Ermittlungstechniken
Basisfaktoren Unterbewusste Anforderung Beobachtungstechniken, dokumentenzentrierte Techniken
Leistungsfaktoren Bewusste Anforderung Befragungstechniken
Begeisterungsfaktoren Unbewusste Anforderung Kreativitätstechniken

3.4.3 Ermittlungstechniken

Ziel: Unterstützung bei der Ermittlung von Wissen und Anforderungen der Stakeholder

  1. Beobachtungstechniken:
    • Beobachtung der Stakeholder bei der Arbeit
    • Dokumentierung der Arbeitsschritte
    • Ermittlung potentieller Fehler, Risiken und Fragen
    • Ermittlungstechniken:
      • Feldbeobachtung: der Beobachter ist vor Ort bei den Anwendern des Systems und dokumentiert die unmittelbaren Arbeitsabläufe
      • Apprenticing: der Beobachter erlernt die Tätigkeit des Stakeholders/des Anwenders selbst
  2. Dokumentenzentrierte Techniken:
    • verwenden Lösungen und Erfahrungen bestehender Systeme
    • bei Ablösung eines Altsystems kann gesamte Funktionalität des Altsystems identifiziert werden
    • Unterteilung in
      • Systemarchäologie: Informationen aus Dokumentation und Implementierung eines Altsystems ziehen
      • Perspektivenbasiertes Lesen: ein Dokument aus einer vorbestimmten Perspektive lesen (z.B. aus der des Testers oder Realisierers)
      • Wiederverwendung: einmal erarbeitete qualitative Anforderungen werden für das neue System übernommen
  3. Befragungstechniken:
    • Informationen und Aussagen über die Anforderungen direkt von den Stakeholdern erhalten
    • entweder in Form von Interviews oder Fragebögen möglich
      • Interview: Stellen und Protokollieren von vorgegebenen Fragen in einem Gespräch, zusätzlich unbewusste Anforderungen durch geschicktes Hinterfragen aufdecken
      • Fragebogen: Aushändigung von offenen oder geschlossenen Fragen, die bis zu einem bestimmten Zeitpunkt zu beantworten sind
  4. Kreativitätstechniken:
    • innovative Anforderungen entwickeln
    • erste Vision des neuen Systems festlegen
    • Begeisterungsfaktoren ermitteln
    • Unterteilung in
      • Brainstorming: Sammeln von Ideen in einer Gruppe und Protokollierung der Ideen ohne Kommentierung
      • Brainstorming paradox: Erweiterung des Brainstorming: Sammeln von Ergebnissen, die nicht erreicht werden sollen
      • Perspektivenwechsel: jeder Teilnehmer nimmt eine andere Perspektive ein (Sechs-Hut-Methode)
      • Analogietechnik: ähnliche Problemstellungen und Lösungen werden anhand analoger Strukturen gesucht

3.5 Anforderungen dokumentieren

3.5.1 Arten der Dokumentation

Die Anforderungen an ein System können in drei unterschiedlichen Perspektiven dokumentiert werden:

  1. Strukturperspektive: die statische Perspektive auf die Anforderungen an das System wird eingenommen
  2. Funktionsperspektive: Dokumentierung der Funktionen, die Daten aus dem Systemkontext manipulieren
  3. Verhaltensperspektive: Dokumentierung des Systems und dessen Einbettung in den Systemkontext

Anforderungen in natürlicher Sprache:

Anforderungen durch konzeptuelle Modelle:

3.5.2 Inhalte von Anforderungsdokumenten

3.6 Anforderungen verwalten

4 Grundlagen des Softwaretestens

4.1 Fehlerbegriff

Fehler:

Mangel:

Der Fehler zieht eine Abhängigkeitskette von Fehlhandlung, Fehlerzustand und Fehlerwirkung hinter sich her:

  1. Fehlhandlung: der Zeitpunkt, zu welchem der Fehler entsteht (meistens während der Entwicklung des Quelltextes)
  2. Fehlerzustand: Nach Abschluss des Quelltextes wird die Fehlhandlung zu einem Fehlerzustand (z.B. falsch programmierte oder vergessene Anweisung im Programm); wird auch als Defekt oder innerer Fehler bezeichnet
  3. Fehlerwirkung: Wirkung der Fehlerzustände zeigt sich bei der Ausführung des Programmes in der Fehlerwirkung. Der Fehler wird im Betrieb für den Tester/Anwender sichtbar; wird auch als Defekt, äußerer Fehler oder Ausfall bezeichnet

Maskierte Fehler:

4.4 Qualitätsmerkmale

Die Norm ISO/IEC 9126 ist ein Modell, um Softwarequalität sicherzustellen. Sie bezieht sich mit ihren Kriterien ausschließlich auf die Qualität der Software als Produkt und unterscheidet 6 Merkmale:
Qualitätsmerkmale nach ISO/IEC 9126Abbildung 2: Qualitätsmerkmale nach ISO/IEC 9126

Funktionalität: Vorhandensein von geforderten Funktionen mit festgelegten Eigenschaften

Zuverlässigkeit: Fähigkeit der Software, ihr Leistungsniveau unter festgelegten Bedingungen zu bewahren

Benutzbarkeit: Aufwand, der zur Benutzung erforderlich ist, und individuelle Beurteilung der Benutzung durch eine Benutzergruppe

Effizienz: Verhältnis zwischen dem Leistungsniveau der Software und dem Umfang der eingesetzten Betriebsmittel

Wartbarkeit: Aufwand zur Durchführung von Änderungen (Korrekturen, Verbesserungen, Anpassungen an Änderungen)

Übertragbarkeit: Eignung der Software zur Übertragung in eine andere Umgebung

4.5 Fundamentaler Testprozess

Der fundamentale Testprozess gliedert die Testaktivitäten in fünf Hauptaktivitäten:

Testplanung und Steuerung
Testanalyse und Testenwurf
Testrealisierung und Testdurchführung
Bewertung von Endekriterien und Bericht
Abschluss der Testaktivitäten

4.5.1 Testplanung und Steuerung

Zur Testplanung gehören folgende zwei Aktivitäten:

Begrifflichkeiten

4.5.2 Testanalyse und Testentwurf

Begrifflichkeiten

4.5.3 Testrealisierung und Testdurchführung

Begrifflichkeiten

4.5.4 Bewertung von Endekriterien und Bericht

4.5.5 Abschluss der Testaktivitäten

5 Testen im Softwarelebenszyklus

5.1 V-Modell

V-ModellAbbildung 3: Das V-Modell

Unterscheidung von Verifikation und Validierung

5.2 Scrum

ScrumAbbildung 4: Scrum

5.3 Testen innerhalb von Entwicklungszyklen

Jeder Entwicklungszyklus beinhaltet einige Charakteristika für gutes Testen:

5.4 Teststufen

5.4.1 Komponententests

5.4.2 Integrationstest


Top-Down-Strategie:

Bottom-Up-Strategie:


5.4.3 Systemtest

Begrifflichkeiten

5.4.4 Abnahmetest

Ausprägungen des Abnahmetests

5.5 Testarten

5.5.1 Funktionaler Test

5.5.2 Nicht-funktionaler Test

5.5.3 Strukturbasierter Test

5.5.4 Fehlernachtest und Regressionstest

6 Dynamischer Test

6.1 BlackBox- vs. WhiteBox-Testverfahren

BlackBox-Test

WhiteBox-Test

6.2 BlackBox-Verfahren

6.2.1 Äquivalenzklassenanalyse

Beispiel

Äquivalenzklasse Ausprägung Wirkung
Aktuelles Jahr - Geburtsjahr \geq 18 und Aktuelles Jahr - Geburtsjahr \leq 65 Gültige Klasse Konto wird eröffnet
Aktuelles Jahr - Geburtsjahr << 18 Ungültige Klasse Konto wird nicht eröffnet, zu jung
Aktuelles Jahr - Geburtsjahr >> 65 Ungültige Klasse Konto wird nicht eröffnet, zu alt
\neq vierstellige Zahl Ungültige Klasse falsche Eingabe

6.2.2 Grenzwertanalyse

Beispiel

Äquivalenzklasse Grenzwerte
Aktuelles Jahr - Geburtsjahr \geq 18 und Aktuelles Jahr - Geburtsjahr \leq 65 17, 18, 65, 66
Aktuelles Jahr - Geburtsjahr << 18 17, 18
Aktuelles Jahr - Geburtsjahr >> 65 65, 66
\neq vierstellige Zahl A, B, C, D, E, …, Z

Für unsere erste Äquivalenzklasse sind die Grenzwerte 17, 18, 65 und 66. Da alle Grenzwerte dort bereits Bestandteil anderer Klassen sind, können diese für die Klassen gestrichen werden.

Äquivalenzklasse Grenzwerte
Aktuelles Jahr - Geburtsjahr \geq 18 und Aktuelles Jahr - Geburtsjahr \leq 65 17, 18, 65, 66
Aktuelles Jahr - Geburtsjahr << 18 17, 18
Aktuelles Jahr - Geburtsjahr >> 65 65, 66
\neq vierstellige Zahl A, B, C, D, E, …, Z

6.2.3 Entscheidungstabellentest

Notation für Entscheidungstabellen:

Testfall 1 Testfall 2 Testfall 3
Bedingung 1
Bedingung 2
Bedingung 3
Wirkung 1
Wirkung 2

6.2.5 Anwendungsfallbasierter Test

6.3 WhiteBox-Verfahren

6.3.1 Anweisungstest und -überdeckung

AnweisungstestAbbildung 5: Anweisungstest

6.3.2 Entscheidungstest und überdeckung

EntscheidungstestAbbildung 6: Entscheidungstest

6.3.3 Bedingungstest und -überdeckung

Einfache Bedingungsüberdeckung
Mehrfachbedingungsüberdeckung
Minimale Mehrfachbedingungsüberdeckung

6.3.4 Pfadtest und -überdeckung

PfadtestAbbildung 7: Pfadtest

7 Statischer Test

7.1 Statische Prüftechniken

7.2 Reviewprozess

Vorteile von Reviews:

Arten von Reviews:

7.2.1 Aktivitäten eines formalen Reviews

Ein typisches formales Review besteht aus folgenden sechs Hauptaktivitäten:

Planen
Kick-Off
Individuelle Vorbereitung
Reviewsitzung
Überarbeiten
Nachbereiten
  1. Planen (beteiligt: Manager, Moderator)
    • Festlegen von Review-/Prüfkriterien
    • Auswahl der beteiligten Personen und Rollen
    • Festlegen der Eingangs- und Endekriterien
    • Auswahl der zu prüfenden Dokumententeile
  2. Kick-Off (beteiligt: alle Teilnehmer)
    • Verteilen der Dokumente
    • Erläutern der Ziele, des Prozesses und der Dokumente für die Teilnehmer
  3. Individuelle Vorbereitung (beteiligt: Moderator, Gutachter)
    • Vorbereiten der Reviewsitzung durch Prüfung der Dokumente
    • Notieren potenzieller Fehlerzustände, Fragen und Kommentare
  4. Reviewsitzung (beteiligt: Moderator, Autor, Gutachter, Protokollant)
    • Diskussion und Protokollierung
    • Festhalten von Fehlerzuständen, Empfehlungen zum Umgang mit diesen oder Entscheidungen über Fehlerzustände
    • Prüfen, Bewerten und Protokollieren von Problemen
  5. Überarbeiten (beteiligt: Autor)
    • Beheben der gefundenen Fehlerzustände durch den Autor
    • Protokollieren des aktualisierten Fehlerstatus
  6. Nachbereiten (beteiligt: Moderator, Gutachter)
    • Prüfen, ob Fehlerzustände zugewiesen wurden
    • Sammeln von Metriken
    • Prüfen von Endekriterien

7.2.2 Rollen und Verantwortlichkeiten

7.2.3 Reviewarten

Ein Softwareprodukt oder ein Arbeitsergebnis kann Gegenstand von mehreren Reviews sein:

Informelles Review:

Walkthrough:

Technisches Review:

8 Testmanagement

8.1 Testmanagement Prozessrahmen

Das Testmanagement umfasst folgende zwei Haupttätigkeiten:

  1. alle Aktivitäten der Planung, der Basis- und Detailkonzeption sowie der Steuerung eines Testprojektes
  2. die Aktivitäten der Steuerung und Organisation sowie Koordination des Testablaufs in den Umsetzungsphasen

Testmanagement ProzessrahmenAbbildung 8: Testmanagement Prozessrahmen

8.2 Testvorgehen konzipieren und planen

8.2.1 Zu testendes System definieren

8.2.2 Testziele und Testarten festlegen

8.2.3 Teststufen festlegen

Teststufen festlegenAbbildung 9: Teststufen festlegen

8.2.4 Testobjekte definieren

Testobjekte definierenAbbildung 10: Testobjekte definieren

8.2.5 Testmethodik festlegen

Testmethodik festlegenAbbildung 11: Testmethodik festlegen

8.2.6 Risikoanalyse durchführen

Risikoanalyse durchführenAbbildung 12: Risikoanalyse durchführen

8.2.7 Testplanung durchführen