Analytische Qualitätssicherung Flashcards

(83 cards)

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
Pfad
Weg durch den Kontrollflussgraphen über durch Kanten verbundene Knoten, beginnend bei n(start), endend bei n(final)
26
Teilpfad
Pfad, der nicht bei n(start) anfängt und/oder nicht bei n(final) endet, also nicht den gesamten Prüfling durchläuft
27
assoziierter Testfall
Testfall, der sich aus einem bestimmten Pfad ergibt
28
Klassen von White-Box-Testverfahren
- kontrollflussorientierte | - datenflussorientierte
29
Überdeckungskriterien
- Anweisungsüberdeckung - Zweigüberdeckung - Pfadüberdeckung - Boundary-interior-Pfadtest - Bedingungsüberdeckung - einfach, minimal mehrfach, mehrfach
30
Klassen von Black-Box-Verfahren
- funktionsorientiert - fehlerorientiert - Zufallstests
31
Anderer Name für White-Box-Testverfahren
strukturorientiert
32
statische Testverfahren
- Review | - statische Programm-Analysatoren
33
Nach welchen Kriterien lassen sich Tests klassifizieren?
- Prüftechnik | - Stufe der Softwareentwicklung
34
Wie werden Tests nach der Stufe der Softwareentwicklung unterteilt?
- Modultest (Programmschnipsel) - Integrationstest (Zusammenführen von Programmschnipseln) - Systemtest (Komplette Anwendung in Versuchsumgebung) - Abnahmetest (Komplette Anwendung in Zielumgebung)
35
Wie werden Verfahren der analytischen Qualitätssicherung nach Prüftechnik unterteilt?
- verifizierende Verfahren - analysierende Verfahren - statische Verfahren - dynamische Verfahren
36
analysierende Verfahren (Beispiele)
- zyklomatische Zahl | - Halstead-Metriken
37
Was machen analytische Verfahren?
- Quantifizierung von Dokumenten (strukturelle Komplexität, Programmlänge, Kommentierungsgrad,etc.); - bilden Grundlage für Fehlervorhersage aufgrund von vergleichender Bewertung (Erfahrungswerte) von Dokumenten.
38
Welcher Anteil an Fehlern wird in etwa durch C0- bzw. C1-Tests gefunden?
Nur 20% bzw. 25%.
39
C0-Test
Anweisungsüberdeckungstest | C(Anweisung) = (Anzahl der Besuchten Knoten) / (Anzahl aller Knoten)
40
C1-Test
Zweigüberdeckungstest | C(Zweig) = (Anzahl der Besuchten Zweige/Kanten) / (Gesamtanzahl der Zweige/Kanten)
41
Wie ist das Verhältnis von der Anzahl der Testfälle zum Anweisungs-/Zweigüberdeckungsgrad?
abnehmender Grenznutzen: | Mit jedem neuen Pfad sinkt der Anteil an neu besuchten Knoten/Kanten MASSIV.
42
Unterschiede zwischen statischen und dynamischen Verfahren?
``` dynamischen Verfahren - Programm wird mit konkreten Testdaten ausgeführt - finden Fehlersymptome statische Verfahren - analysieren Programm ohne Ausführung - decken die Fehlerursache mit auf ```
43
Kontrollfluss
- Abfolge der einzelnen Befehle | - gesteuert durch Anweisungsfolgen, Selektion und Iteration
44
Kontrollflussgraph
- 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
C2-Test
einfacher Bedingungsüberdeckungstest
46
Probleme beim einfachen Bedingungsüberdeckungstest?
umfasst nicht zwangsläufig die Zweigüberdeckung | -> sollte daher nicht alleine benutzt werden
47
Bedingungs-/Entscheidungsüberdeckungstest
Kombination aus einfachem Bedingungsüberdeckungstest (C2) und Zweigüberdeckungstest (C1)
48
atomares Prädikat
kleinster auswertbarer Teil einer zusammengesetzten Entscheidungsanweisung
49
C3-Test
Mehrfach-Bedingungsüberdeckungstest
50
Probleme beim Mehrfach-Bedingungsüberdeckungstest?
Für komplexe Entscheidungen nicht mehr praktikabel auswertbar.
51
einfache Bedingungsüberdeckung
- 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
Mehrfach-Bedingungsüberdeckung
- 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
Kompromiss zwischen einfacher und Mehrfach-Bedingungsüberdeckung
- 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
C4-Test
Pfadüberdeckungstest
55
Probleme beim Pfadüberdeckungstest?
Viel zu komplex, kann für die meisten Programme nicht ansatzweise erreicht werden.
56
Boundary-interior-Pfadtest
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
Wie wird beim Boundary-interior-Pfadtest mit geschachtelten Schleifen verfahren?
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
Auf welcher Grundlage werden die Testfälle bei White-Box-Testverfahren gebildet?
satischer Kontrollfluss des Prüflings
59
Auf welcher Grundlage werden die Testfälle nei Black-Box-Testverfahren gebildet?
Problemspezifikation
60
funktionsorientierte Testverfahren
überprüfen Funktionatität gemäß der Problemspezifikation
61
funktionale Äquivalenzklassenbildung
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
fehlerorientierter Test
Auswahl von Testdaten aufgrund von (durch Erfahrung gewonnene) Erwartung eines Fehlers für bestimmte Werte
63
fehlerorientierter Test (Beispiele)
- zero values-Kriterium - nil-Zeiger - Grenzwertanalyse
64
zero values-Kriterium
jede arithmetisch verwendete Variable 1mal mit 0 besetzen, um Laufzeitfehler bei Division durch 0 auszutesten
65
Grenzwertanalyse
Grenzwerte der Testfälle sowie benachbarte Werte austesten (um z.B. Fehler in Auswahl von Schleifengrenzen etc. auszuschließen)
66
Zufallstest
- 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
Regressionstest
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
Welches sind die zwei bekanntesten Arten von Reviews?
- Inspektion | - (strukturierter) Walk-Through
69
Moderator einer Inspektionssitzung
- erfahrener Softwareentwickler - nicht Programmautor Aufgaben: - besorgt und verteilt Unterlagen - Zeitplanung & Leitung der Sitzung - Protokollierung der gefundenen Fehler - Kontrolle der Fehlerbehebung.
70
Wieviele und welche Personen umfasst ein Inspektionsteam üblicherweise?
4 - 8 - Moderator - Autor - Programmdesigner (bei Codedokument) - Testspezialist - Auftraggeber oder kompetenter Anwender (bei Test der Produktspezifikation)
71
Wie wird eine Inspektionssitzung vorbereitet?
- Moderator besorgt und verteilt vorher wichtige Unterlagen (zu prüfendes Dokument, Spezifikation, etc.); - Teilnehmer setzen sich vorher damit auseinander.
72
Wie verläuft eine Inspektionssitzung?
- 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
Worin unterscheidet sich der strukturierte Walk-Through von der Inspektionssitzung?
- weniger Systematisch | - es werden Testfälle vorbereitet, analog durchgespielt und der Autor zu Entscheidungen der Programmlogik befragt
74
statische Analysatoren
- automatische Werkzeuge zur rechnergestützten Analyse von schematisch aufgebauten Dokumenten - ergänzen Arbeit des Compilers (v.a. bei schwach getypten Programmiersprachen)
75
Welche Arten von Informationen können statische Programmanalysatoren erzeugen?
- lexikalische (Programmlänge, verwendete Programmkonstrukte) - syntaktische (Kontrollfluss-, Aufruf-, Importgraphiken) - semantische (Kontrollfluss-, Datenflussanalyse; Lebendigkeitsanalyse)
76
Vorteile von kontrollflussorientierten Testverfahren
- 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
Wie hoch ist die Fehlererkennungsrate bei kontrollflussorientierten Tests?
Selbst bei hoher Überdeckungsrate wird selten eine Fehlererkennung von weit über 50% erreicht.
78
Welche Fehlertypen werden in erster Linie durch kontrollflussorientierte Verfahren gefunden?
- grobe Abbruchfehler - unerreichbare Zweige - Irrpfade - endlose Schleifen - unvollständige / inkonsistente Bedingungen
79
Welche Fehler werden durch kontrollflussorientierte Tests nicht zuverlässig aufgedeckt?
- 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
Vorteile von Black-Box-Testverfahren im Bezug auf die Tesfallkonstruktion
- 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
Vorteile von Black-Box-Testverfahren im Bezug auf die Fehleraufdeckung
- 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
Nachteile von Black-Box-Testverfahren
- fehlende Überdeckungsmaße: theoretisch können Codeteile ungeprüft bleiben - Testfallkonstruktion wenig schematisch: u.U. willkürliche Resultate - keine Testendekriterien
83
Welche Reihenfolge ist bei der Anwendung mehrerer Testverfahren sinnvoll?
Black-Box (funktionsorientiert) -> strukturorientiert