Verifikation und Integration Flashcards

1
Q

Validierung und Verifikation (V&V)

A

Unterscheidung nach Boehm (1979):
* Validierung: Erstellen wir das richtige Produkt?
(Erwartungen der Benutzer getroffen?)
* Verifikation: Erstellen wir das Produkt richtig?
(funktionale und nicht-funktionale Anforderungen erfüllt?)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Qualitätssicherung der Implementierung (Verifikation)

A

Überprüfung geforderter Eigenschaften
- Korrektheit
- Funktionale Anforderungen
- Qualitätsanforderungen

  • Überwiegend Maßnahmen der analytischen Qualitätssicherung
  • Typischerweise: Testen (statisch und dynamisch)
  • Dynamisches Testen erfordert ablauffähige System(teil)e, aka Testobjekt, System under Test (SuT)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Definition: Testfälle und Test

A

Testfall (engl. Test Case): Elementarer, funktionaler Softwaretest zur Überprüfung einer in einer Spezifikation zugesicherten Eigenschaft eines Testobjektes. Besteht aus einer Menge von Eingaben und der Festlegung der geforderten Ausgaben.

Test (auch Test suite): Menge von Testfällen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Art von Testfällen

A
  • Positiv-Testfälle (Validierungstests)
    Arbeiten mit gültigen Vorbedingungen und Eingaben
  • Negativ-Testfälle (Fehlertests, Robustheitstests)
    Arbeiten mit ungültigen Vorbedingungen und/oder Eingaben
  • Variation von Eingabewerten und Vorbedingungen erlaubt Überprüfung verschiedener Varianten eines Testfalls
    Inbesondere Grenzwerte von Interesse
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Definition: Anomalie (Testen)

A

Abweichung von Ausgaben oder Nachbedingungen während der
Testdurchführung von der Dokumentation oder dem erwarteten Betriebsverhalten.
Stellt einen zu behebenden Mangel oder Fehler in dem zu testenden System, dem Testfall oder der Testumgebung dar.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Einteilung Anomalie

A
  • Fehlerhandlung (Error, Mistake): ein Problem im
    Code aufgrund falscher Programmierung oder
    inkorrekter Anforderungen
  • Fehlerzustand (Fault, Bug, Defect):
    Systemverhalten nicht erwartungsgemäß
  • Fehlerwirkung (Failure): Ausfall eines Systems,
    System kann geforderte Funktion gemäß Spezifikation nicht mehr erbringen
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Testobjekte, Testtreiber und Dummies

A
  • Testumgebung für die Durchführung eines Tests
  • Versorgt Testobjekt mit allen erforderlichen Betriebsmitteln
  • Besteht aus Testobjekt, Testtreiber (Driver) und Dummies (Stubs, Mocks)

Testtreiber:
Ruft das Testobjekt auf, stellt Testdaten bereit, führt Testfall durch.

Testobjekt:
Relevante Systemeinheit für den Test (z.B. einzelnes Modul, Komponente,
vollständiges System)

Dummy:
Simuliert Systemverhalten für betrachtete Testfälle, enthält keine oder nur unvollständige ImplemenIerung.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Statische Testverfahren

A
  • Statische Testverfahren

Formal -> weniger Formal:
Inspektion -> Team Review -> Walkthrough -> Pair Programming -> Ad-hoc Review

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Statische Code-Analyse

A
  • Formale Prüfungen zur Compile-Zeit (vor dynamischen Tests)
  • Können besammte Fehlertypen idenafzieren, z.B.
  • Fehlende IniUalisierung von Variablen
  • Fehlende Rückgaben in allen Pfaden einer FunkUon
  • Nicht-erreichbarer Code
  • Fehlende oder falsche Typumwandlungen
  • Unsichere FunkUonssignaturen
  • Mangelnde Einhaltung von NamenskonvenUonen und von Codierungsrichtlinien

+++
* Teilweise von IDEs während der Programmierung durchgeführt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Funktionale Korrektheit

A

Systematisches Testen und Verifikation setzen immer einen Begriff
von funktionaler Korrektheit (entsprechende Spezifikation) voraus!
(Aus Anforderungsanalyse)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Verifikation durch Korrektheisbeweis und Model Checking

A
  • Auch möglich: Korrektheit einer Komponente durch mathematischen Beweis zeigen
  • Automatische theorembeweiser (theorem provers) können Korrekheitsbeweise führen/unterstützen
  • Modellprüfer (engl. Model Checker) können zustandsendliche Systeme auf Einhaltung gewisser Eigenschaften (z.B. Sicherheitseigenschaften) prüfen
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Allgemeiner Testprozess

A

Testplanung -> -design -> -spezifikation -> -durchführung -> -evaluation

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Grundsätzliche Testformen

A

Black-Box-Test
* Testfälle werden aus der Außensicht (Anforderungs- und Schnittstellen-spezifikation)
erstellt
* Zielt auf Abdeckung typischer Nutzungsfälle, Randfälle, typischer Kombinationen oder
Belastungstests
White-Box-Test (auch Glass-Box-Test)
* Testfälle werden aus der Innensicht (Implementierung und Struktur des
Programmcodes) heraus bestimmt
* Zielt auf Abdeckung von möglichst allen Anweisungen, Bedingungen und Pfaden

Gray-Box-Test
* Fokussiert auf Integration/Zusammenspiel von Modulen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Aquivalenzklassenmethode

A
  • Häufig eingesetzte Methode beim Black-Box-Testing
  • Mögliche Eingaben werden in Äquivalenzklassen eingeteilt, und man
    geht von der Vorstellung aus, dass sich ein Softwaresystem bei der
    Eingabe eines Vertreters einer Äquivalenzklasse genauso verhält, wie
    bei allen anderen Vertretern dieser Klasse.

Bei Funktionen mit mehreren Parametern (p1, p2, p3, …):
1. Für jeden Parameter pi Äquivalenzklassen wie zuvor beschrieben bilden
2. Für alle Parameter pi Kombinationen der Äquivalenzklassen bilden:
a) Einfache Kombination aller Äquivalenzklassen (sehr viele Testfälle)
b) Äquivalenzklassen erneut gruppieren in “erfolgreiche” und “fehlschlagende”
Kombinationen
c) Erfolgreiche Kombinationen können entsprechend reduziert werden

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Entwurfsregelfür Tests: F.I.R.S.T.

A

Entwurfsregel für Tests (aus dem Kontext des Clean-Code-Prinzips):
* Fast: Tests sollen schnell auszuführen sein
* Independent: Tests sollen unabhängig voneinander sein
* Repeatable: Tests sollen in jeder Umgebung wiederholbar sein
* Self-Validating: Tests sollen einen Booleschen Wert als Ergebnis zurückliefern (erfolgreich/fehlgeschlagen).
* Timely: Tests sollen zeitnah zu dem Programmcode erstellt werden, auf den sie sich beziehen, oder gar schon bei der Erstellung der Anforderung.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Unit Testing

A
  • Unit Tests sind automatisierte Tests einer kleinen Menge Quellcode
  • Werden so oft wie möglich ausgeführt, um Seiteneffekte der
    Entwicklungstätigkeiten frühzeitig erkennen und beheben zu können
  • Sollen möglichst effizient und effektiv sein
  • Werden idealerweise bereits während der Entwicklung entworfen
  • Entsprechen im Wesentlichen der Definition eines Testfalls (sollen in sich
    abgeschlossen sein, Vor- und Nachbedingungen definieren und eine
    spezifische Funktion abdecken).
17
Q

Integration in mehreren Stufen

A
  1. Prüfung der Einzelsysteme (Eingangsprüfung)
  2. Integration der Einzelsysteme
  3. Prüfung des integrierten Systems (Verifikation)
  4. Identifikation von Fehlern (Defekten)
  5. Diagnose und Korrektur von Fehlern
  6. Nachprüfung
18
Q

Modulintegration

A

Erste Aufgabe der Integration: Module zu Komponenten zusammenfassen
* Dreistufiges Vorgehen empfohlen:
1. Frühzeitig ausführbare Rahmen für die Integration schaffen, in die die
realisierten Module Schritt für Schritt eingehängt werden können
2. Jedes Modul wird von den zuständigen Entwicklern implementiert und
ausgetestet, bevor es an das Integrationsteam übergeben wird.
3. Ein Modul wird u.U. bei der Übergabe nochmals getestet (Eingangstest), dann in den Integrationsrahmen eingehängt und schließlich dort getestet.

19
Q

Modultest

A

Modultest: Überprüfung, ob Modul seiner Spezifikation entspricht
* Folgt im Wesentlichen dem allgemeinen Testprozess:
1. Testfallauswahl und –entwurf
2. Testvorbereitung (Testumgebung schaffen)
3. Testdurchführung
4. Testauswertung
* Black-Box- und White-Box-Tests

20
Q

Integrationstest

A

Überprüfung des reibungslosen Zusammenspiels der (zuvor) erfolgreich getesteten Einheiten.

  • Integration und Integrationstest sollten schrittweise und einem frühzeitig festgeleten Integrationsplan folgend vorgenommen werden
  • Teilintegration möglich (ggf. Nutzung von Mock/Dummy-Modulen)
  • Integrationsprozess heute oft automatisiert
21
Q

Abnahmetest

A

Überprüfung eines Softwaresystems bei der Auslieferung bzw. Übergabe an den Auftraggeber und die Nutzer.

  • Überprüfung des integrierten Systems, um festzustellen, ob alle
    spezifierten Anforderungen erfüllt sind.
  • Betrachtung des Systems als Ganzes
    Nachweis der Korrektheit aus Benutzersicht
    Bestätigung des Erreichens des Entwicklungsziels durch den Auftraggeber
22
Q

Systemtests

A

Schwerpunkte des Systemtests:
- Test der Funktionen nach Anforderungen
- Test des Verhaltens unter Normalbenutzerbetrieb
- Test des Verhaltens in Ausnahmesituationen und im Dauerbetrieb
- Test der Leistungskenngrößen

+++
* Basis: Anforderungen aus dem Pflichtenheft
* Black-Box-Tests
* Testumgebung, die Produktiv-/Einsatzumgebung möglichst nahekommt
* Ggf. Simulation in Staging-Umgebung
* Systemtests für Produktanforderungen und Qualitätsanforderungen

23
Q

Top-Down (Integrationstrategie)

A

PRO:
* Es werden nur wenige Treiber benötigt, die
in vielen Fällen auch einfacher gestaltet sind
* Testfälle können anhand der funktionalen
Anforderungen erstellt werden
* Fehler sind einfach zuzuordnen
* Die Systeme können zur nächsten
Integration ausgetestet und verbessert
werden
* Komponenten können Schritt für Schritt
fertig gestellt werden

CON:
* Dummies sind erforderlich
* Einige Schnittstellen werden nicht einzeln
getestet

24
Q

Bottom-Up (integrationsstrategie)

A

PRO:
* Es werden keine Dummies
benötigt
* Testfälle können anhand der
funktionalen Anforderungen
erstellt werden
* Fehler sind einfach
zuzuordnen

CON:
* Für jedes Teilsystem werden Treiber benötigt, die fehlende Systemteile simulieren

25
Q

Big-Bang (Integrationsstrategie)

A

PRO:
* Es werden keine Dummies
benötigt
* Es werden keine Treiber
benötigt
* Es wird unmittelbar das
System getestet

CON:
* Hohe Anzahl von Fehlern auf einen Schlag
* Fehler nur schlecht zuzuordnen
* System oft nicht lauffähig
* Alle Komponenten müssen fertig gestellt sein

26
Q

Kontinuierliche Integration und Entwicklung (CI/CD)

A
  • Grundidee: verschränkte Durchführung von Codierung, Test und
    Integration, um kurze Entwicklungszyklen zu realisieren
  • Dazu ggf. Auslieferung (Delivery) und Verteilung (Deployment)
  • Zielt auf frühzeitiges Finden von Fehlern und schnelle Rückkopplung
    zwischen Entwicklern und Anwendern
  • Wichtig: Es dürfen nur erfolgreich getestete Systemteile integriert werden
27
Q

Vorgehen CI/CD

A
  1. Commit changes to “Version control server”
  2. Changes get send to CI Server
  3. Ci Server builds and integrates and tests
  4. Verteilen von neuer Version oder bei Fehler benachrichtigung von diesem
28
Q

Stufen der Kontinuierlichen Softwareentwicklung

A
  1. Commit changes
  2. Build
  3. Statische Analyse
  4. Pre-Development Testing
  5. Packaging
  6. Deployment für Akzeptanztest
  7. Akzeptanztest
  8. Deployment in die Produktion
  9. Post-Deployment Testing
29
Q

Die drei DevOps-Prinzipien

A
  1. Prinzip des Flusses Entwickler -> Admin
  2. Prinzip des Feedsbacks Admin -> Entwickler
  3. Prinzip des Lernens und Experimentierens Entwickler <-> Admin