vault backup: 2025-02-21 16:16:30

This commit is contained in:
2025-02-21 16:16:30 +01:00
parent 046c96d814
commit 39e5a669db
5 changed files with 323 additions and 12 deletions

View File

@@ -6017,6 +6017,12 @@ Prüfungen
Paketierung Paketierung
Praktiken Praktiken
Problemmeldungen Problemmeldungen
Pfade
Prozentsatz
Projektfortschritts
Programmierkenntnisse
Pfadüberdeckung
Path
obj obj
oV oV
oYj oYj
@@ -17661,6 +17667,9 @@ Letzter
Life Life
Lockerung Lockerung
Laufzeitumgebung Laufzeitumgebung
Lines
Logik
Logikfehler
Filter Filter
FlateDecode FlateDecode
Ff Ff
@@ -23681,6 +23690,12 @@ Freigabe
Fachlogik Fachlogik
FATAL FATAL
Frameworks Frameworks
Funktionseinheit
Failure
Fehlerdichte
Funktionstests
Fehlerfindung
Flow
stream stream
se se
sH sH
@@ -30028,6 +30043,11 @@ systematisch
sichtbarer sichtbarer
statischen statischen
strenger strenger
spiegeln
sobald
spezifizierten
selten
sicherstellen
ZKs ZKs
ZN ZN
Zf Zf
@@ -36139,6 +36159,11 @@ Zweigüberdeckung
Zweig Zweig
Zyklomatische Zyklomatische
Zweige Zweige
Zusammenhalts
Zählen
Zustandsübergangstests
Zustandsautomat
Zufallstests
Who Who
We We
WE WE
@@ -42502,6 +42527,8 @@ Wahrheitswerten
Weighted Weighted
Werkzeugen Werkzeugen
WARN WARN
Widerstand
Wählen
KI KI
Kt Kt
KF KF
@@ -48906,6 +48933,10 @@ Konstanten
Korrektive Korrektive
Kontrollausgaben Kontrollausgaben
Kontrollflussgraphen Kontrollflussgraphen
Kommunizieren
Kommunikationsmittel
Kategorien
Konsistenz
bq bq
bQ bQ
bG bG
@@ -54967,6 +54998,11 @@ beseitigen
begünstigt begünstigt
begrenzte begrenzte
berechnende berechnende
bewerten
besser
basierend
besten
bleiben
iZ iZ
ig ig
iA iA
@@ -61250,6 +61286,10 @@ iGXL
ieCBi ieCBi
integrierten integrierten
implementiert implementiert
interpretiert
identifizieren
interne
ineffizienten
GJe GJe
GAG GAG
GJ GJ
@@ -67256,6 +67296,7 @@ Grundeinstellungen
Grammatikprüfung Grammatikprüfung
Gesamtzahl Gesamtzahl
Gemeinsame Gemeinsame
Graph
AO AO
Aw Aw
Az Az
@@ -73753,6 +73794,14 @@ Aktive
Arbeit Arbeit
Ausgangszustands Ausgangszustands
Aufwands Aufwands
Ausgabeoperanden
Ausfällen
Anwendungsbereiche
Anforderungsanalyse
Akzeptanz
Automatisieren
Analysieren
Abdeckung
QV QV
Qom Qom
QJ QJ
@@ -86114,6 +86163,7 @@ namen
natürlichsprachliche natürlichsprachliche
normaler normaler
neuer neuer
niedrige
YJ YJ
Yb Yb
YwM YwM
@@ -98960,6 +99010,8 @@ Uses
Unterklassen Unterklassen
Unterklasse Unterklasse
Unterteilung Unterteilung
Umfang
Unabhängigkeit
TZ TZ
TF TF
TP TP
@@ -105243,6 +105295,11 @@ Teilbedingung
Testzugang Testzugang
Testware Testware
Teils Teils
Testabdeckung
Trends
Teilen
Tester
Testfallerstellung
gO gO
gHoVo gHoVo
gD gD
@@ -111263,6 +111320,9 @@ groupId
getestet getestet
generische generische
geplant geplant
garantiert
gewünschtes
genutzten
DMg DMg
Dv Dv
DLg DLg
@@ -117243,6 +117303,12 @@ Depth
Descandants Descandants
Datenflussanomalieanalyse Datenflussanomalieanalyse
DEBUG DEBUG
Detaillierte
Defect
Durchschnittliche
Datenflussfehler
Datenflussanalyse
Datenflusses
xU xU
xM xM
xK xK
@@ -128731,6 +128797,11 @@ Hierarchisierung
Hiding Hiding
Hauptfehler Hauptfehler
Häufige Häufige
Höhere
Höheres
Höherer
Herausforderungen
Hoher
zo zo
zL zL
zE zE
@@ -134836,6 +134907,11 @@ zutreffend
zusätzlicher zusätzlicher
zustandsverändernder zustandsverändernder
zusammengesetzt zusammengesetzt
zusammenhängender
zukünftige
zyklomatische
zufälligen
zeitaufwendig
hr hr
hAa hAa
hH hH
@@ -140727,6 +140803,8 @@ hiDO
hUOD hUOD
hinzugenommen hinzugenommen
hoffe hoffe
helfen
hindeuten
pt pt
ps ps
pao pao
@@ -146668,6 +146746,9 @@ predicate
prädikativen prädikativen
parametrisierte parametrisierte
privater privater
prozessen
projekte
passen
Ic Ic
IT IT
Ir Ir
@@ -152764,6 +152845,8 @@ Interfaces
Inheritance Inheritance
Integrationsprozesses Integrationsprozesses
INFO INFO
Interpretieren
Implementierung
ap ap
aE aE
at at
@@ -158728,6 +158811,11 @@ atomaren
abstrakte abstrakte
abstrakter abstrakter
atomare atomare
abgedeckt
ausschließlich
abdecken
angenommen
auflisten
fb fb
fVVvD fVVvD
fh fh
@@ -164791,6 +164879,7 @@ finale
früh früh
formale formale
fehlerträchtigen fehlerträchtigen
frühen
Bs Bs
ByJ ByJ
BF BF
@@ -170485,6 +170574,11 @@ Berichten
Builds Builds
Berichtswesen Berichtswesen
Berichte Berichte
Betrachtung
Bewerten
Best
Benutzerperspektive
Branch
ek ek
eP eP
eVPm eVPm
@@ -176961,6 +177055,11 @@ entdecken
engineering engineering
erneutes erneutes
else else
ermöglichen
erzielen
empfinden
erreicht
entdeckte
tj tj
tg tg
tt tt
@@ -183239,6 +183338,8 @@ thwMz
tnPR tnPR
tOKfa tOKfa
testenden testenden
treffen
tiefes
JFRO JFRO
JG JG
JL JL
@@ -195528,6 +195629,10 @@ konstruktiven
konsistent konsistent
komplett komplett
kompletten kompletten
komplexität
komplexeren
komplexere
kostspielig
EU EU
Evq Evq
Er Er
@@ -201883,6 +201988,19 @@ Einfacher
Entnahme Entnahme
Erleichterung Erleichterung
ERROR ERROR
Einblicke
Entwicklungen
Entscheidungen
Endbenutzers
Eingabekombinationen
Erfordert
Eingabewerte
Entscheidungstabellentests
Eingabebedingungen
Eingabewerten
Einblick
Effiziente
Entwicklerperspektive
lX lX
ll ll
lC lC
@@ -208085,6 +208203,7 @@ ljsp
laZZ laZZ
lokale lokale
logischen logischen
liefern
wG wG
wd wd
ws ws
@@ -214522,6 +214641,9 @@ woXz
wZeUHd wZeUHd
wwwwwwwww wwwwwwwww
wDph wDph
warten
weiterhin
wider
RmZh RmZh
Rp Rp
RJ RJ
@@ -220668,6 +220790,8 @@ Reflection
Rechtschreib Rechtschreib
Redefined Redefined
Relationssymbole Relationssymbole
Ressourcennutzung
Redundanz
vJ vJ
vS vS
vKDF vKDF
@@ -226905,6 +227029,11 @@ verschleißt
vieler vieler
vertauschten vertauschten
vollautomatischen vollautomatischen
versionen
vorherzusagen
voreingenommen
verhalten
vollen
XE XE
Xd Xd
XRb XRb
@@ -251566,6 +251695,13 @@ Mehrfach
Minimale Minimale
Metrik Metrik
Mehr Mehr
Minimalvokabulars
Messungen
Managern
Messung
Modules
MTTF
Muster
qO qO
qj qj
qG qG
@@ -257651,6 +257787,7 @@ qRix
qtnyh qtnyh
qevy qevy
qnDo qnDo
quantifizieren
yB yB
yyNs yyNs
yQU yQU
@@ -269952,6 +270089,10 @@ uBc
ukuZ ukuZ
upZFL upZFL
unstimmige unstimmige
untere
unabhängiger
unmöglich
unentdeckt
ma ma
ml ml
mB mB
@@ -282688,6 +282829,8 @@ definitionsfreien
definitionsfrei definitionsfrei
definitionsfreier definitionsfreier
dynamischen dynamischen
deutet
deuten
VV VV
VA VA
Vsm Vsm
@@ -288984,6 +289127,13 @@ Vorbereitende
Versions Versions
Viel Viel
Verknüpfung Verknüpfung
Verstehen
Vorhersagen
Vollständigkeit
Verfolgung
Verwenden
Verständnis
Vollständige
SGN SGN
Sg Sg
SrEHO SrEHO
@@ -295357,6 +295507,16 @@ Schlüsselwörter
Softwaresystems Softwaresystems
Systematisches Systematisches
Sequenz Sequenz
Schranke
Softwareprodukten
Softwareprodukte
Steuern
Softwareentwicklungsprozessen
Softwaresystem
Softwaredesigns
Schwierige
Strukturtests
Statement
rn rn
rE rE
rD rD
@@ -301711,6 +301871,9 @@ rTwL
repräsentativ repräsentativ
redundanzarm redundanzarm
repräsentiert repräsentiert
ressourcen
relevante
redundante
Cu Cu
CL CL
Ch Ch
@@ -307303,6 +307466,16 @@ Codierungsrichtlinien
Checkstyle Checkstyle
CodePro CodePro
Codebasis Codebasis
Codezeilen
Classes
Coupling
Cohesion
Codezeile
Coverage
Codierung
Codequalität
Cases
Codeoptimierung
OM OM
OWR OWR
Os Os
@@ -313408,6 +313581,7 @@ Oberklasse
Operatoren Operatoren
Operanden Operanden
Objektorientierte Objektorientierte
Objektivität
cgl cgl
cj cj
content content
@@ -320042,6 +320216,7 @@ computational
Äquivalenzklassen Äquivalenzklassen
Änderungs Änderungs
Änderungsanträgen Änderungsanträgen
Änderungsfreundlichkeit
äz äz
äh äh
äe äe
@@ -320270,6 +320445,7 @@ computational
üSa üSa
üYB üYB
überprüfbar überprüfbar
überschneiden
ßc ßc
ßI ßI
ßVq ßVq

View File

@@ -29,14 +29,12 @@
"id": "dc1bf961d97f0cb4", "id": "dc1bf961d97f0cb4",
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "markdown", "type": "pdf",
"state": { "state": {
"file": "WS2425/SWT D/Notes.md", "file": "WS2425/SWT D/Praktikum/swtd-p-03.pdf"
"mode": "source",
"source": false
}, },
"icon": "lucide-file", "icon": "lucide-file-text",
"title": "Notes" "title": "swtd-p-03"
} }
} }
] ]
@@ -252,18 +250,18 @@
"obsidian-livesync:Show log": false "obsidian-livesync:Show log": false
} }
}, },
"active": "dc1bf961d97f0cb4", "active": "b8336cb3c3d06be9",
"lastOpenFiles": [ "lastOpenFiles": [
"Pasted image 20250221131512.png",
"WS2425/SWT D/Vorlesung/swtd_merged.pdf",
"Persistierung.ts.md",
"WS2425/SWT D/Notes.md", "WS2425/SWT D/Notes.md",
"WS2425/SWT D/Praktikum/swtd-p-03.pdf",
"WS2425/SWT D/Vorlesung/swtd_merged.pdf",
"Pasted image 20250221131512.png",
"Persistierung.ts.md",
"WS2425/SWT D/Praktikum/swtd-p-08.pdf", "WS2425/SWT D/Praktikum/swtd-p-08.pdf",
"WS2425/SWT D/Praktikum/swtd-p-07.pdf", "WS2425/SWT D/Praktikum/swtd-p-07.pdf",
"WS2425/SWT D/Praktikum/swtd-p-06.pdf", "WS2425/SWT D/Praktikum/swtd-p-06.pdf",
"WS2425/SWT D/Praktikum/swtd-p-05.pdf", "WS2425/SWT D/Praktikum/swtd-p-05.pdf",
"WS2425/SWT D/Praktikum/swtd-p-04.pdf", "WS2425/SWT D/Praktikum/swtd-p-04.pdf",
"WS2425/SWT D/Praktikum/swtd-p-3.pdf",
"WS2425/SWT D/Praktikum/swtd-p-02.pdf", "WS2425/SWT D/Praktikum/swtd-p-02.pdf",
"WS2425/SWT D/Praktikum/swtd-p-01.pdf", "WS2425/SWT D/Praktikum/swtd-p-01.pdf",
"WS2425/SWT D/Uebung/swtd-ue-01.pdf", "WS2425/SWT D/Uebung/swtd-ue-01.pdf",
@@ -283,7 +281,6 @@
"img/Pasted image 20241206141721.png", "img/Pasted image 20241206141721.png",
"img/Pasted image 20241206141709.png", "img/Pasted image 20241206141709.png",
"img/Pasted image 20241206141658.png", "img/Pasted image 20241206141658.png",
"img/Pasted image 20241206141645.png",
"WS2425/Web Tech/Übung/Notes.md", "WS2425/Web Tech/Übung/Notes.md",
"WS2425/Data Science/VL/lecture_08_notes.md", "WS2425/Data Science/VL/lecture_08_notes.md",
"WS2425/Data Science/VL/lecture_07_notes.md", "WS2425/Data Science/VL/lecture_07_notes.md",

View File

@@ -265,6 +265,144 @@
**Softwaremetriken: Detaillierte Betrachtung**
**1. Was sind Softwaremetriken?**
* **Definition:** Softwaremetriken sind quantitative Messungen, die verwendet werden, um verschiedene Aspekte von Softwareprodukten, -prozessen und -ressourcen zu bewerten und zu verfolgen. Sie liefern Einblicke in die Qualität, Komplexität, Größe, Effizienz und andere wichtige Eigenschaften von Software.
* **Zweck:**
* **Verstehen:** Metriken helfen, die Eigenschaften von Software besser zu verstehen und zu quantifizieren.
* **Vergleichen:** Sie ermöglichen den Vergleich verschiedener Softwareprodukte, -versionen oder -projekte.
* **Vorhersagen:** Metriken können verwendet werden, um zukünftige Entwicklungen, Kosten oder Risiken vorherzusagen.
* **Steuern:** Sie unterstützen die Steuerung von Softwareentwicklungsprozessen und die Optimierung von Ressourcen.
* **Kommunizieren:** Metriken dienen als Kommunikationsmittel zwischen Entwicklern, Managern und anderen Stakeholdern.
**2. Kategorien von Softwaremetriken**
* **Quantitätsmetriken:** Messen die Größe und den Umfang von Software.
* **Beispiele:**
* *Lines of Code (LOC):* Anzahl der Codezeilen in einem Programm.
* *Function Points (FP):* Messung der Funktionalität, die ein Softwaresystem bietet.
* *Number of Classes/Modules:* Anzahl der Klassen oder Module in einem System.
* **Komplexitätsmetriken:** Bewerten die Komplexität von Software.
* **Beispiele:**
* *Cyclomatic Complexity (McCabe):* Messung der Anzahl unabhängiger Pfade durch ein Programm.
* *Halstead Metrics:* Messung der Komplexität basierend auf der Anzahl der Operatoren und Operanden.
* *Coupling and Cohesion:* Messung der Abhängigkeiten zwischen Modulen und des Zusammenhalts innerhalb von Modulen.
* **Qualitätsmetriken:** Bewerten die Qualität von Software.
* **Beispiele:**
* *Defect Density:* Anzahl der Fehler pro Codezeile oder Funktionseinheit.
* *Mean Time To Failure (MTTF):* Durchschnittliche Zeit zwischen Ausfällen eines Systems.
* *Maintainability Index:* Messung der Wartbarkeit von Software.
* *Code Coverage:* Prozentsatz des Codes, der durch Tests abgedeckt wird.
**3. Anwendungsbereiche von Softwaremetriken**
* **Anforderungsanalyse:** Messung der Vollständigkeit und Konsistenz von Anforderungen.
* **Entwurf:** Bewertung der Qualität des Softwaredesigns.
* **Codierung:** Überwachung der Codequalität und -komplexität.
* **Testen:** Messung der Testabdeckung und Fehlerdichte.
* **Wartung:** Bewertung der Wartbarkeit und Änderungsfreundlichkeit von Software.
* **Projektmanagement:** Verfolgung des Projektfortschritts und der Ressourcennutzung.
**4. Beispiele für Softwaremetriken und ihre Berechnung**
* **Lines of Code (LOC):**
* *Berechnung:* Zählen der Anzahl der Codezeilen in einem Programm.
* *Interpretation:* Höhere LOC kann auf größere Komplexität hindeuten, aber auch auf Redundanz.
* **Cyclomatic Complexity (McCabe):**
* *Berechnung:* $V(G) = E - N + 2$, wobei E die Anzahl der Kanten und N die Anzahl der Knoten im Kontrollflussgraphen ist.
* *Interpretation:* Höhere zyklomatische Komplexität deutet auf komplexeren Code hin, der schwieriger zu testen und zu warten ist.
* **Halstead Metrics:**
* *Basisparameter:*
* $t$: Anzahl der unterschiedlichen Operatoren
* $d$: Anzahl der unterschiedlichen Operanden
* $n_t$: Gesamtzahl aller Operatoren im Programm
* $n_d$: Gesamtzahl aller Operanden im Programm
* *Berechnungen:*
* Größe des Vokabulars: $G = t + d$
* Länge des Programms: $N = n_t + n_d$
* Volumen des Programms: $V = N \times log_2 G$
* Level: $L = V^* / V$
* Schwierigkeit: $D = 1 / L$
* Aufwand: $E = V \times D$
* *Interpretation:* Höheres Volumen und höherer Aufwand deuten auf komplexeren Code hin.
* **Weighted Method per Class (WMC):**
* *Berechnung:* $WMC = \sum_{i=1}^{M} v(m_i)$, wobei $v(m_i)$ die Komplexität der Methode $m_i$ ist (z.B. zyklomatische Komplexität).
* *Interpretation:* Höherer WMC deutet auf eine komplexere Klasse hin, die schwieriger zu verstehen und zu testen ist.
**5. Herausforderungen bei der Verwendung von Softwaremetriken**
* **Interpretation:** Metriken müssen im Kontext interpretiert werden. Eine hohe LOC ist nicht immer schlecht, und eine niedrige zyklomatische Komplexität garantiert keine hohe Qualität.
* **Manipulation:** Metriken können manipuliert werden, um ein gewünschtes Ergebnis zu erzielen.
* **Kosten:** Die Erfassung und Analyse von Metriken kann kostspielig sein.
* **Akzeptanz:** Entwickler können Metriken als Bedrohung empfinden, was zu Widerstand führen kann.
**6. Best Practices für die Verwendung von Softwaremetriken**
* **Definieren Sie klare Ziele:** Was soll mit den Metriken erreicht werden?
* **Wählen Sie relevante Metriken:** Welche Metriken sind für die spezifischen Ziele am besten geeignet?
* **Automatisieren Sie die Erfassung:** Verwenden Sie Werkzeuge, um Metriken automatisch zu erfassen.
* **Analysieren Sie die Daten:** Interpretieren Sie die Metriken im Kontext und identifizieren Sie Trends und Muster.
* **Kommunizieren Sie die Ergebnisse:** Teilen Sie die Ergebnisse mit den Stakeholdern und verwenden Sie sie, um Entscheidungen zu treffen.
* **Überprüfen und passen Sie die Metriken an:** Stellen Sie sicher, dass die Metriken weiterhin relevant und nützlich sind.
**Black-Box-Testing (Funktionstests)**
* **Konzept:**
* Der Tester betrachtet das System als "Black Box", d.h. er hat keine Kenntnisse über die interne Struktur, den Code oder die Implementierung des Systems.
* Die Testfälle werden ausschließlich auf Basis der Spezifikation, der Anforderungen oder der Dokumentation des Systems entwickelt.
* Das Ziel ist es, die Funktionalität des Systems aus der Sicht des Endbenutzers zu überprüfen.
* **Vorteile:**
* **Unabhängigkeit:** Tester benötigt keine Programmierkenntnisse.
* **Benutzerperspektive:** Testfälle spiegeln die tatsächliche Nutzung des Systems wider.
* **Frühe Testphase:** Kann bereits in frühen Phasen des Entwicklungsprozesses durchgeführt werden, sobald die Spezifikationen vorliegen.
* **Objektivität:** Tester ist nicht durch die Implementierung voreingenommen.
* **Nachteile:**
* **Begrenzte Abdeckung:** Es ist unmöglich, alle möglichen Eingabekombinationen und Pfade zu testen.
* **Redundanz:** Testfälle können sich überschneiden oder redundante Funktionalität abdecken.
* **Nicht entdeckte Fehler:** Fehler in nicht spezifizierten oder selten genutzten Bereichen können unentdeckt bleiben.
* **Schwierige Testfallerstellung:** Erfordert ein tiefes Verständnis der Spezifikationen und Anforderungen.
* **Gängige Techniken:**
* **Äquivalenzklassenbildung:** Aufteilung der Eingabewerte in Äquivalenzklassen, von denen angenommen wird, dass sie sich gleich verhalten.
* **Grenzwertanalyse:** Testen von Werten an den Grenzen der Äquivalenzklassen.
* **Entscheidungstabellentests:** Erstellung von Tabellen, die alle möglichen Kombinationen von Eingabebedingungen und den entsprechenden Ausgaben auflisten.
* **Zustandsübergangstests:** Modellierung des Systems als Zustandsautomat und Testen aller Zustandsübergänge.
* **Use-Case-Tests:** Entwicklung von Testfällen basierend auf den Use Cases des Systems.
* **Zufallstests:** Generierung von zufälligen Eingabewerten und Überprüfung der Ausgaben.
* **Property-based Testing:** Prüfung, ob ein Prädikat erfüllt ist: $\forall x.P(x, f_{SUT}(x))$.
**Glass-Box-Testing (White-Box-Testing, Strukturtests)**
* **Konzept:**
* Der Tester hat vollen Einblick in die interne Struktur, den Code und die Implementierung des Systems.
* Die Testfälle werden auf Basis des Codes entwickelt, um sicherzustellen, dass alle Teile des Codes ausgeführt werden.
* Das Ziel ist es, die interne Logik des Systems zu überprüfen und Fehler in der Implementierung zu finden.
* **Vorteile:**
* **Vollständige Abdeckung:** Kann sicherstellen, dass alle Teile des Codes getestet werden.
* **Effiziente Fehlerfindung:** Kann Fehler in der Implementierung, wie z.B. Logikfehler oder Datenflussfehler, aufdecken.
* **Codeoptimierung:** Kann helfen, ineffizienten oder unnötigen Code zu identifizieren.
* **Nachteile:**
* **Hoher Aufwand:** Erfordert detaillierte Kenntnisse des Codes und der Implementierung.
* **Komplexität:** Kann sehr komplex und zeitaufwendig sein, insbesondere bei großen Systemen.
* **Entwicklerperspektive:** Testfälle spiegeln möglicherweise nicht die tatsächliche Nutzung des Systems wider.
* **Nicht entdeckte Spezifikationsfehler:** Kann keine Fehler in den Spezifikationen oder Anforderungen aufdecken.
* **Gängige Techniken:**
* **Anweisungsüberdeckung (Statement Coverage):** Sicherstellen, dass jede Anweisung im Code mindestens einmal ausgeführt wird.
* **Zweigüberdeckung (Branch Coverage):** Sicherstellen, dass jeder Zweig (z.B. if-else) im Code mindestens einmal ausgeführt wird.
* **Bedingungsüberdeckung (Condition Coverage):** Sicherstellen, dass jede Bedingung in einem Zweig mindestens einmal true und einmal false ist.
* **Pfadüberdeckung (Path Coverage):** Sicherstellen, dass jeder mögliche Pfad durch den Code mindestens einmal ausgeführt wird.
* **Datenflussanalyse (Data Flow Analysis):** Analyse des Datenflusses durch den Code, um sicherzustellen, dass Variablen korrekt definiert, verwendet und gelöscht werden.
# Note Notes # Note Notes
**Glass-Box-Test (White-Box-Test) / Strukturtest:** **Glass-Box-Test (White-Box-Test) / Strukturtest:**