Analytische Qualitätssicherung Flashcards

1
Q

Testen

A

jede Handlung mit dem Ziel, Fehler im Programm aufzufinden

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

Debuggen

A

Untersuchung des Programmcodes nach der Fehlerursache für ein beim Testen aufgetretenes Fehlersymptom mit anschließender Beseitigung der Fehlerursache

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

Konstruktive Qualitätssicherung (Erklärung)

A

Maßnahmen zur Fehlervermeidung

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

Konstruktive Qualitätssicherung (Beispiele)

A
  • Programmierstil-Richtlinien
  • unterstützender Funktionen in Entwicklungsumgebung (Auto-Formatierung etc.)
  • bewährte Entwicklungsmethodik
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Fehler

A

Überbegriff für Fehlerursache und Fehlersymptom

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

Fehlersymptom

A

Fehlverhalten des ausgeführten Programms

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

Fehlerursache

A

Fehlersymptom auslösender (weil falscher) Teil im Programmcode

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

Prüfling

A

zu testender Programmteil (Funktion, Prozedur) bzw. zu testendes Programm

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

Testtreiber

A

Ausschließlich zum Test von Programmteilen geschriebenes Programm, in das der Prüfling eingebettet ist / wird

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

Korrektheit

A

Wird durch den Beweis der absoluten Abwesenheit von Fehlern nachgewiesen

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

Fehlerfreiheit

A

Wird durch Beseitigung aller auftretenden Fehler erreicht

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

Verifikation

A

Verfahren, um Korrektheit sicherzustellen

sehr aufwendig und damit nur bei sicherheitskritischen Anwendungen üblich

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

Falsifikation

A

Verfahren, um Fehlerfreiheit zu erreichen

I.d.R. Testverfahren

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

zulässige Eingabe

A

Laut Problemspezifikation zulässige Eingabewerte

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

Testdatum

A

Tupel aus zulässiger Eingabe und dazu erwarteten Ausgabewerten

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

Testfall

A

Menge von Testdaten, für die ein gleiches Verhalten des Prüflings erwartet wird

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

Testlauf

A

Ausführung des Prüflings mit zulässiger Eingabe mit dem Ziel des Testens

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

Anderes Wort für “Prädikat”?

A

Bedingung

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

G = (N, E)
G=? N=? E=?
Was bedeutet die Formel übersetzt?

A

G = gerichteter Graph
N = Nodes = Knoten
E = Edges = Kanten
Ein gerichteter Graph ist ein Paar aus einer Menge von Knoten und einer Menge von Kanten.

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

Kante (n1, n2)

n1=? n2=?

A

n1=Vorgänger von n2

n2=Nachfolger von n1

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

Wann ist ein Graph zusammenhängend?

A

Wenn alle Knoten irgendwie miteinander verbunden sind bzw. wenn kein Knoten unverbunden ist.

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

Was ist ein Zyklus?

A

Ein Pfad zurück auf einen vorher schoneinmal besuchten Knoten (mit oder ohne Zwischenstationen). => Schleifen

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

Kompakter Kontrollflussgraph

A

Kontrollflussgraph, bei dem leere Anweisungen, begin, end, etc. einem angrenzenden Knoten zugeordnet und Blöcke zu einem Knoten zusammengefasst wurden

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

Block

A

Aufeinanderfolgende Programmzeilen / Anweisungen, die nur zusammenhängend in der entsprechenden Reihenfolge durchlaufen werden können

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

Pfad

A

Weg durch den Kontrollflussgraphen über durch Kanten verbundene Knoten, beginnend bei n(start), endend bei n(final)

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

Teilpfad

A

Pfad, der nicht bei n(start) anfängt und/oder nicht bei n(final) endet, also nicht den gesamten Prüfling durchläuft

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

assoziierter Testfall

A

Testfall, der sich aus einem bestimmten Pfad ergibt

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

Klassen von White-Box-Testverfahren

A
  • kontrollflussorientierte

- datenflussorientierte

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

Überdeckungskriterien

A
  • Anweisungsüberdeckung
  • Zweigüberdeckung
  • Pfadüberdeckung
    • Boundary-interior-Pfadtest
  • Bedingungsüberdeckung
    • einfach, minimal mehrfach, mehrfach
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Klassen von Black-Box-Verfahren

A
  • funktionsorientiert
  • fehlerorientiert
  • Zufallstests
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

Anderer Name für White-Box-Testverfahren

A

strukturorientiert

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

statische Testverfahren

A
  • Review

- statische Programm-Analysatoren

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

Nach welchen Kriterien lassen sich Tests klassifizieren?

A
  • Prüftechnik

- Stufe der Softwareentwicklung

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

Wie werden Tests nach der Stufe der Softwareentwicklung unterteilt?

A
  • Modultest (Programmschnipsel)
  • Integrationstest (Zusammenführen von Programmschnipseln)
  • Systemtest (Komplette Anwendung in Versuchsumgebung)
  • Abnahmetest (Komplette Anwendung in Zielumgebung)
35
Q

Wie werden Verfahren der analytischen Qualitätssicherung nach Prüftechnik unterteilt?

A
  • verifizierende Verfahren
  • analysierende Verfahren
  • statische Verfahren
  • dynamische Verfahren
36
Q

analysierende Verfahren (Beispiele)

A
  • zyklomatische Zahl

- Halstead-Metriken

37
Q

Was machen analytische Verfahren?

A
  • Quantifizierung von Dokumenten (strukturelle Komplexität, Programmlänge, Kommentierungsgrad,etc.);
  • bilden Grundlage für Fehlervorhersage aufgrund von vergleichender Bewertung (Erfahrungswerte) von Dokumenten.
38
Q

Welcher Anteil an Fehlern wird in etwa durch C0- bzw. C1-Tests gefunden?

A

Nur 20% bzw. 25%.

39
Q

C0-Test

A

Anweisungsüberdeckungstest

C(Anweisung) = (Anzahl der Besuchten Knoten) / (Anzahl aller Knoten)

40
Q

C1-Test

A

Zweigüberdeckungstest

C(Zweig) = (Anzahl der Besuchten Zweige/Kanten) / (Gesamtanzahl der Zweige/Kanten)

41
Q

Wie ist das Verhältnis von der Anzahl der Testfälle zum Anweisungs-/Zweigüberdeckungsgrad?

A

abnehmender Grenznutzen:

Mit jedem neuen Pfad sinkt der Anteil an neu besuchten Knoten/Kanten MASSIV.

42
Q

Unterschiede zwischen statischen und dynamischen Verfahren?

A
dynamischen Verfahren
- Programm wird mit konkreten Testdaten ausgeführt
- finden Fehlersymptome
statische Verfahren
- analysieren Programm ohne Ausführung
- decken die Fehlerursache mit auf
43
Q

Kontrollfluss

A
  • Abfolge der einzelnen Befehle

- gesteuert durch Anweisungsfolgen, Selektion und Iteration

44
Q

Kontrollflussgraph

A
  • graphische Aufbereitung des Programmtextes
  • zusammenhängender gerichteter Graph
  • Startknoten n(start) stellt Programmeintritt (Beginn des Anweisungsteils) dar
  • der Endknoten n(final) stellt Programmaustritt dar
  • alle weiteren Knoten stellen Programmzeilen dar
  • Kanten zeigen statischen Kontrollfluss an
45
Q

C2-Test

A

einfacher Bedingungsüberdeckungstest

46
Q

Probleme beim einfachen Bedingungsüberdeckungstest?

A

umfasst nicht zwangsläufig die Zweigüberdeckung

-> sollte daher nicht alleine benutzt werden

47
Q

Bedingungs-/Entscheidungsüberdeckungstest

A

Kombination aus einfachem Bedingungsüberdeckungstest (C2) und Zweigüberdeckungstest (C1)

48
Q

atomares Prädikat

A

kleinster auswertbarer Teil einer zusammengesetzten Entscheidungsanweisung

49
Q

C3-Test

A

Mehrfach-Bedingungsüberdeckungstest

50
Q

Probleme beim Mehrfach-Bedingungsüberdeckungstest?

A

Für komplexe Entscheidungen nicht mehr praktikabel auswertbar.

51
Q

einfache Bedingungsüberdeckung

A
  • Jedes atomare Prädikat muss jeweils 1mal zu true und false ausgewertet werden.
  • (für vollständige Überdeckung zu testen: (Anzahl der Atome) * 2)
  • C2-Test
52
Q

Mehrfach-Bedingungsüberdeckung

A
  • Jede mögliche Kombination von Wahrheitswerten für atomare Prädikate muss ausgewertet werden.
  • (für vollständige Überdeckung zu testen: 2^(Anzahl der Atome))
53
Q

Kompromiss zwischen einfacher und Mehrfach-Bedingungsüberdeckung

A
  • minimale Mehrfach-Bedingungsüberdeckung
  • Jede Entscheidung ist insgesamt sowie für jede Teilbedingung (atomar sowie zusammengesetzt) min. 1mal true und einmal false auszuwerten.
  • (C(MinMehrfach)=((Anzahl(true)+Anzahl(false)) / 2*(Anzahl der Prädikate))
54
Q

C4-Test

A

Pfadüberdeckungstest

55
Q

Probleme beim Pfadüberdeckungstest?

A

Viel zu komplex, kann für die meisten Programme nicht ansatzweise erreicht werden.

56
Q

Boundary-interior-Pfadtest

A

Zur praktikablen Prüfung von Schleifen. Pro Schleifen werden folgende drei Testfälle berücksichtigt:

  1. Kein Schleifendurchlauf: Alle Pfade, die die Schleife nicht durchlaufen (bei repeat: immer leere Menge!)
  2. Boundary: Alle Pfade, bei der die Schleife genau 1mal durchlaufen wird
  3. Interior: Alle Pfade bei der die Schlefe mehrfach (eine bestimmte Anzahl, oft 2-3mal) durchlaufen wird.
57
Q

Wie wird beim Boundary-interior-Pfadtest mit geschachtelten Schleifen verfahren?

A

Zunächst wird die inner(st)e Schleife getestet, anschließend die umschließende, wobei die bereits getestete Schleife als Black-Box interpretiert wird, u.s.w.

58
Q

Auf welcher Grundlage werden die Testfälle bei White-Box-Testverfahren gebildet?

A

satischer Kontrollfluss des Prüflings

59
Q

Auf welcher Grundlage werden die Testfälle nei Black-Box-Testverfahren gebildet?

A

Problemspezifikation

60
Q

funktionsorientierte Testverfahren

A

überprüfen Funktionatität gemäß der Problemspezifikation

61
Q

funktionale Äquivalenzklassenbildung

A

Menge aller zulässigen Eingaben wird in

  • Eingabeäquivalenzklassen (gleiches erwartetes funktionales Verhalten) oder
  • Ausgabeäquvalenzklassen (gleichartige Resultate) zerlegt
  • erste Zerlegung wird i.d.R. weiter verfeinert
  • Testfälle werden durch bilden der fehlenden Eingaben/Ausgaben zu den gefundenen Äquivalenzklassen gebildet
62
Q

fehlerorientierter Test

A

Auswahl von Testdaten aufgrund von (durch Erfahrung gewonnene) Erwartung eines Fehlers für bestimmte Werte

63
Q

fehlerorientierter Test (Beispiele)

A
  • zero values-Kriterium
  • nil-Zeiger
  • Grenzwertanalyse
64
Q

zero values-Kriterium

A

jede arithmetisch verwendete Variable 1mal mit 0 besetzen, um Laufzeitfehler bei Division durch 0 auszutesten

65
Q

Grenzwertanalyse

A

Grenzwerte der Testfälle sowie benachbarte Werte austesten (um z.B. Fehler in Auswahl von Schleifengrenzen etc. auszuschließen)

66
Q

Zufallstest

A
  • zufällige Eingaben aus der Menge der erlaubten Eingaben werden ausgewertet
  • Nachteil: keine vollständigen Testfälle
  • Vorteil: leicht automatisierbar
  • Anwendungsbeispiel: Sortieralgorithmen, Algorithmen, wo die Entscheidung über die Richtigkeit eines Ergebnisses schnell(er als die Bildung eines kompletten Testfalls) möglich ist
67
Q

Regressionstest

A

Nach Änderung eines Programmteils muss nicht nur dieser, sondern auch alle von ihm betroffenen/auf ihn zugreifenden anderen Programmteile erneut getestet werden. Ergebnisse werden zusätzlich mit vorherigen Testläufen verglichen.

68
Q

Welches sind die zwei bekanntesten Arten von Reviews?

A
  • Inspektion

- (strukturierter) Walk-Through

69
Q

Moderator einer Inspektionssitzung

A
  • erfahrener Softwareentwickler
  • nicht Programmautor
    Aufgaben:
  • besorgt und verteilt Unterlagen
  • Zeitplanung & Leitung der Sitzung
  • Protokollierung der gefundenen Fehler
  • Kontrolle der Fehlerbehebung.
70
Q

Wieviele und welche Personen umfasst ein Inspektionsteam üblicherweise?

A

4 - 8

  • Moderator
  • Autor
  • Programmdesigner (bei Codedokument)
  • Testspezialist
  • Auftraggeber oder kompetenter Anwender (bei Test der Produktspezifikation)
71
Q

Wie wird eine Inspektionssitzung vorbereitet?

A
  • Moderator besorgt und verteilt vorher wichtige Unterlagen (zu prüfendes Dokument, Spezifikation, etc.); - Teilnehmer setzen sich vorher damit auseinander.
72
Q

Wie verläuft eine Inspektionssitzung?

A
  • Autor erläutert sein Dokument zeilenweise
  • Fehler werden aufgelistet (Hilfsmittel: Checkliste möglicher Fehler), erst im Anschluss korrigiert.
  • Dauer: nicht länger als 120 Minuten (ca. 300 Anweisungen Quelltext)
73
Q

Worin unterscheidet sich der strukturierte Walk-Through von der Inspektionssitzung?

A
  • weniger Systematisch

- es werden Testfälle vorbereitet, analog durchgespielt und der Autor zu Entscheidungen der Programmlogik befragt

74
Q

statische Analysatoren

A
  • automatische Werkzeuge zur rechnergestützten Analyse von schematisch aufgebauten Dokumenten
  • ergänzen Arbeit des Compilers (v.a. bei schwach getypten Programmiersprachen)
75
Q

Welche Arten von Informationen können statische Programmanalysatoren erzeugen?

A
  • lexikalische (Programmlänge, verwendete Programmkonstrukte)
  • syntaktische (Kontrollfluss-, Aufruf-, Importgraphiken)
  • semantische (Kontrollfluss-, Datenflussanalyse; Lebendigkeitsanalyse)
76
Q

Vorteile von kontrollflussorientierten Testverfahren

A
  • Schematische Konstruktion der Testfälle -> Testvorbereitung teilweise automatisierbar (Kontrollflussgraph, Pfadermittlung, etc.)
  • Klare Testendekriterien (Überdeckungsgrad)
  • Durch intensive Beschäftigung mit dem Prüfling zur Findung der Testfälle können schon vor dem eigentlichen Test Fehler gefunden werden
77
Q

Wie hoch ist die Fehlererkennungsrate bei kontrollflussorientierten Tests?

A

Selbst bei hoher Überdeckungsrate wird selten eine Fehlererkennung von weit über 50% erreicht.

78
Q

Welche Fehlertypen werden in erster Linie durch kontrollflussorientierte Verfahren gefunden?

A
  • grobe Abbruchfehler
  • unerreichbare Zweige
  • Irrpfade
  • endlose Schleifen
  • unvollständige / inkonsistente Bedingungen
79
Q

Welche Fehler werden durch kontrollflussorientierte Tests nicht zuverlässig aufgedeckt?

A
  • Tippfehler
  • Schnittstellenprobleme
  • logische Fehler
  • datenabhängige Fehler (z.B. Benutzung falscher / nicht definierter Variablen)
  • u.U. Nichtberücksichtigung von in der Spezifikation implizierten, im Programm aber nicht berücksichtigten Sonderfällen
80
Q

Vorteile von Black-Box-Testverfahren im Bezug auf die Tesfallkonstruktion

A
  • Testfallkonstruktion vor Fertigstellung des Prüflings möglich; Testfälle auf mehrere Prüflinge mit gleicher Spezifikation anwendbar
  • keine Überprüfung und Änderung der Testfälle für Regressionstests nötig
81
Q

Vorteile von Black-Box-Testverfahren im Bezug auf die Fehleraufdeckung

A
  • prüfen jeden von der Spezifikation vorgesehenen Fall ab, können daher auch Fehler durch fehlende Codeteile aufdecken
  • bekannte Fehlerquellen können durch fehlerorientierte Verfahren berücksichtigt werden
82
Q

Nachteile von Black-Box-Testverfahren

A
  • fehlende Überdeckungsmaße: theoretisch können Codeteile ungeprüft bleiben
  • Testfallkonstruktion wenig schematisch: u.U. willkürliche Resultate
  • keine Testendekriterien
83
Q

Welche Reihenfolge ist bei der Anwendung mehrerer Testverfahren sinnvoll?

A

Black-Box (funktionsorientiert) -> strukturorientiert