Testkonzept erstellen - Verständnisschwierigkeiten

Zrebna

Bekanntes Mitglied
Hi!

Im Rahmen meiner BA-Abschlussarbeit soll ich für ein Unternehmen, bei dem ich die externe BA schreibe, ein Testkonzept aufstellen. Das Unternehmen hat bis dato noch relativ wenig in dieser Richtung (also Software-Testing) und will diesen Bereich nun aufbauen/ausbauen. Ich stehe dazu mit regem Austausch mit meinem betreuenden Professor, möchte aber bzgl. paar Unklarheiten auch vor dem nächsten Treffen mit meinem Professor, hier Fragen stellen – einfach, weil ich hier von einigen Forumsmitgliedern den Input sehr schätze und eine andere Perspektive oft einfach auch nochmal extra hilfreich ist.

Es geht also darum, ein Testkonzept zu erstellen.
Vorab sollen aber Anforderungen an das Testkonzept gestellt werden. So wie ich es verstehe sollen die Anforderungen an mein Testkonzept sollen festlegen was mein Testkonzept ermöglichen/leisten/können soll.

Anforderungen könnten hierbei sowas sein, wie:
  • Umfassende Unit Testabdeckung
  • Frühzeitige Fehlererkennung, -vermeidung und -vorbeugung
  • Automatisierte Tests für jeden Bugfix

Aber auch sowas wie:
  • Effizienzorientiertes Prinzip bei Testverfahren
  • Integration von Testprozessen in den Entwicklungszyklus

Danach sollen die Bestandteile des Testkonzepts festgelegt werden. Dabei verstehe ich es folgendermaßen:
Die Bestandteile meines Testkonzepts definieren, wie mein Testkonzept die Anforderungen verwirklicht, d.h. die einzelnen Bestandteile meines Testkonzepts stellen demnach Lösungsmöglichkeiten für meine Anforderungen dar, wobei ein Bestandteil eine Lösungsmöglichkeit für eine oder mehrere Anforderungen sein kann.

Bestandteile des Testkonzepts (also Lösungsmöglichkeiten für die Anforderungen) könnten nun sein:
  • Statische Codeanalyse (bisher nicht genutzt)
  • Vorgaben für Testabdeckung auf Modulebene und Umsetzung von JUnit-Tests
  • Automatisierte Testintegration in CI-Prozesse
  • Priorisierung von Testfällen
  • Wahl von effizienten Testverfahren

Aber möglicherweise auch Aspekte, wie:
  • Testplan und Dokumentationsmanagement
  • Standardisierung
  • Strukturierte Organisation innerhalb des Test-Projektes (dort liegen ein paar wenige Integrationstests)

An dieser Stelle folgender Input von meinem Professor im Rahmen unserer Treffen:
  • Das Konzept ist ein theoretisches Konstrukt.
  • Ein Prototyp kann unterschiedliche Aspekte adressieren:
-> Er demonstriert gewisse Aspekte des Konzepts praktisch. (Demonstrations-Prototyp)
-> Er evaluiert bestimmte Aspekte. Das ist dann ein Proof of Concept.

Ich kann beide Aspekte eines Prototyps in meiner Arbeit verwenden, sollte das aber trennen.
Letztlich soll mein Testkonzept mithilfe des Prototyps demonstriert oder evaluiert.

Und gerade bei dieser Semantik, was ein Prototyp im Kontext meiner Arbeit sein soll, tue ich mich schwer.
Die Trennung des „Demonstrations-Prototypen“ und des „konzeptuellen Prototypen“ würde ich auf Kapitelebene machen.

Bzgl. dem "Demonstrations-Prototypen", habe ich quasi etwas programmiert sowie zeige auch was mit SonarQube, sodass ich letztlich bestimmte Teile meines Testkonzepts zeigen kann.

Wie geht man aber bzgl. dem „konzeptuellem“ Prototypen vor. Ich kann versuchen, den Nutzen bestimmter Teile meines Testkonzepts durch Fallbeispiele in der Literatur und generell durch „Belege“ in der Literatur zeigen? Wie kann ich Teile meines Testkonzepts evaluieren, oder dafür etwas zu implementieren?

Ansonsten macht mir dieser Satz noch Probleme:
„Letztlich soll mein Testkonzept mithilfe des Prototyps demonstriert oder evaluiert.“

Welcher Prototyp? Ich habe bisher Prototyp immer so verstanden, dass man für ein Endprodukt eine vorläufige Versuchsversion hat – irgendwie was physisches – kann nicht so recht in Worte fassen, wie ich das meine. Aber die Definition eines Prototyps in dieser Arbeit bereitet mir Schwierigkeiten und ich weiß einfach nicht, wie ein Prototyp (demonstrativ und nicht-demonstrativ, also evaluierend) bei meinem Testkonzept bzw. seinen Bestandteilen aussehen soll bzw. was da ein Prototyp sein soll, sein könnte.

Irgendwie kapiere ich das nicht sehr gut und hoffe hier auf Unterstützung und Hilfe, sodass ich in das nächste Treffen mit meinem Professor mit mehr Verständnis "reingehen" kann.


Lg
Zrebna
 

Robertop

Bekanntes Mitglied
Wie geht man aber bzgl. dem „konzeptuellem“ Prototypen vor. Ich kann versuchen, den Nutzen bestimmter Teile meines Testkonzepts durch Fallbeispiele in der Literatur und generell durch „Belege“ in der Literatur zeigen? Wie kann ich Teile meines Testkonzepts evaluieren, oder dafür etwas zu implementieren?
Meinst du hier: "..., ohne was zu implementieren"?

Ganz ohne selbstgemachte Codebeispiele bleibt ja eigentlich nur das Suchen in der Literatur. Da würde ich mir dann vielleicht aber Beispiele von Fällen suchen, wo durch kleine Programmierfehler große Schwierigkeiten aufgetreten sind und dann verdeutlichen, wie ein bestimmter automatischer Test diesen Fehler vor der Auslieferung schon gefunden hätte, oder so. Da könnte man dann vielleicht auch die Unterschiede herausarbeiten zwischen den Szenarien, wenn die Stelle vorher schon mit Tests abgedeckt war, wie der Entwickler durch das Testschreiben den Fehler selber gefunden hätte, oder was passiert wäre, wenn die Stelle zwar keine Tests hatte, aber beim Commit dann aufgefallen wäre, dass die Testabdeckung runter gegangen ist. Dann noch eine Gegenüberstellung der Kosten, die das Korrigieren des Fehlers im Produktionsbetrieb verursacht hat, im Vergleich zu den Kosten, die das Schreiben eines automatisierten Tests verursacht hätte.

Wie genau so ein Prototyp zur Evaluierung aussehen soll, kann ich mir da leider auch schwer vorstellen. Vielleicht eine kleine App mit einem schnell aufgesetzten CI/CD, mit dem man den üblichen Ablauf durchspielen kann?

Was mir aber ehrlich gesagt als aller erstes an deinem Projekt aufgefallen ist, sind die Anforderungen:
Anforderungen könnten hierbei sowas sein, wie:
  • Umfassende Unit Testabdeckung
  • Frühzeitige Fehlererkennung, -vermeidung und -vorbeugung
  • Automatisierte Tests für jeden Bugfix

Aber auch sowas wie:
  • Effizienzorientiertes Prinzip bei Testverfahren
  • Integration von Testprozessen in den Entwicklungszyklus
Also wenn das für den Professor so in Ordnung ist von der Formulierung, dann kann man das natürlich so lassen und den Spielraum zu seinem Vorteil nutzen, aber ich finde, die sind zu ungenau. Zum Beispiel:

Was heißt zum Beispiel "Umfassende Unit Testabdeckung"? Bedeutet das, dass mindestens 90% Codecoverage erreicht wird, oder dass jede Klasse einen eigene Unittestklasse braucht? Würde eine einzelne Testmethode, die100% Coverage erreicht, die Anforderung erfüllen?

Auch das mit der "frühzeitigen Erkennung"? Wenn er eine Sekunde nach dem Start des Produktivsystems auffällt, ist das nicht theoretisch irgendwie auch frühzeitig? Wäre beim Commit der Änderungen frühzeitig? Oder beim Deploy ins Testsystem?
 

Zrebna

Bekanntes Mitglied
Meinst du hier: "..., ohne was zu implementieren"?

Ja, meinte "ohne" - sry, verschrieben xD
Ganz ohne selbstgemachte Codebeispiele bleibt ja eigentlich nur das Suchen in der Literatur. Da würde ich mir dann vielleicht aber Beispiele von Fällen suchen, wo durch kleine Programmierfehler große Schwierigkeiten aufgetreten sind und dann verdeutlichen, wie ein bestimmter automatischer Test diesen Fehler vor der Auslieferung schon gefunden hätte, oder so. Da könnte man dann vielleicht auch die Unterschiede herausarbeiten zwischen den Szenarien, wenn die Stelle vorher schon mit Tests abgedeckt war, wie der Entwickler durch das Testschreiben den Fehler selber gefunden hätte, oder was passiert wäre, wenn die Stelle zwar keine Tests hatte, aber beim Commit dann aufgefallen wäre, dass die Testabdeckung runter gegangen ist. Dann noch eine Gegenüberstellung der Kosten, die das Korrigieren des Fehlers im Produktionsbetrieb verursacht hat, im Vergleich zu den Kosten, die das Schreiben eines automatisierten Tests verursacht hätte.

Wie genau so ein Prototyp zur Evaluierung aussehen soll, kann ich mir da leider auch schwer vorstellen. Vielleicht eine kleine App mit einem schnell aufgesetzten CI/CD, mit dem man den üblichen Ablauf durchspielen kann?

Was mir aber ehrlich gesagt als aller erstes an deinem Projekt aufgefallen ist, sind die Anforderungen:

Also wenn das für den Professor so in Ordnung ist von der Formulierung, dann kann man das natürlich so lassen und den Spielraum zu seinem Vorteil nutzen, aber ich finde, die sind zu ungenau. Zum Beispiel:

Was heißt zum Beispiel "Umfassende Unit Testabdeckung"? Bedeutet das, dass mindestens 90% Codecoverage erreicht wird, oder dass jede Klasse einen eigene Unittestklasse braucht? Würde eine einzelne Testmethode, die100% Coverage erreicht, die Anforderung erfüllen?

Im Fließtext ist es dann genau definiert:
1. Jede Klasse braucht einen Unit-Test.
-> Wie nennt man hier die Metrik - siehe diesen Thread von mir, weil ich da eh Schwierigkeiten habe zu verstehen, welche Metrik ich hier brauche:

2. Bzgl. Coverage-Metriken soll gelten:
80% Zweigabdeckung und 100% Anweisungsbadeckung.
Auch das mit der "frühzeitigen Erkennung"? Wenn er eine Sekunde nach dem Start des Produktivsystems auffällt, ist das nicht theoretisch irgendwie auch frühzeitig? Wäre beim Commit der Änderungen frühzeitig? Oder beim Deploy ins Testsystem?

Da gehts eher um Fehlervorbeugung-vermeidung und das zielt auf statische Codeanalyse ab.
Also konkret: "Frühzeitig" heißt hier, noch vor dem Kompilieren und Ausführen des Programms.
Steht dann auch im Fließtext.


Danke schon einmal für den Input.
 

KonradN

Super-Moderator
Mitarbeiter
1. Jede Klasse braucht einen Unit-Test.
Ich finde diese Formulierung schlecht. Was wird denn damit gemeint? Doch in erster Linie, dass das Interface nach außen getestet wurde. Und das würde dann am ehesten der Metrik "Methods" entsprechen. Da kannst Du erkennen, ob die Klasse wirklich Tests hat.

Aber streng genommen ist es ja, dass es zu jeder Klasse einen Unit Test gibt. Das wäre also schon erfüllt, wenn es zu jeder Klasse einen Test gibt, der lediglich versucht die Klasse zu laden. Also dahinter verbirgt sich nicht einmal, dass es zur Klasse Abc noch eine AbcTests geben muss oder so.

Daher kann ich hier deine Probleme nachvollziehen. Unter dem Strich hilft Dir da nur, die Anforderungen zu hinterfragen. Wer hat die aufgestellt? Der soll es erläutern, was da im Detail gemeint ist.
 

Zrebna

Bekanntes Mitglied
Die Anforderungen habe ich schon selber erstellt und die sind einigermaßen ok für den Professor.

Bei dieser Anforderung ist halt dein Punkt einfach untergegangen oder implizit angenommen worden.

Wenn ich dich da richtig verstehe, dann wäre die Anforderung besser, wenn man schreiben würde:
"Zu jeder Methode ist eine Test-Methode erforderlich".
Oder ich schreibe im Fließtext ausdrücklich dazu, dass bei jeder Unit-Test-Klasse jede Methode der zu testenden Klasse zu testen ist.
 

KonradN

Super-Moderator
Mitarbeiter
Hast Du mal geschaut, was für eine Beschreibung der jeweiligen Metriken bei dem verwendeten Tool du findest? Wenn Du dich danach richtest, dann vermeidest Du Fehler. Wenn Du also eine eigene Beschreibung frei heraus erstellst und dann die "Methods" Metrik eines Tools verwendest, dann besteht die Möglichkeit, dass da jemand drauf schaut und dann weicht deine Beschreibung inhaltlich von der des Tools ab.

Natürlich nicht 1:1 verwenden aber halt den Inhalt anschauen um da sicher zu gehen, dass Du etwas passenden hast.

Aber es wäre dann eine Aussage ähnlich wie denen, die Du schon hattest meine ich. Du forderst dann halt eine Coverage von Methods von mindestens xx%. Das ist dann ggf. 100% oder Du definierst Ausnahmen wie z.B. Entities mit Gettern und Settern.

Evtl. einfach ein Beispiel:
Wenn du forderst, dass jede Methode einer Klasse eigenständig getestet sein muss (Also Abc.method erfordert AbcTests.testMethod), dann kann es sein, dass Methods 100% des Tools nicht ganz passend sind. Denn die Methode Abc.method wird vermutlich schon als getestet gelten, sobald sie im Rahmen irgend eines Tests aufgerufen wurde.

Hier führt also kein Weg drumherum: Du musst die Metriken, die Dein Tool erstellt, im Detail verstehen um dann passende Anforderungen zu formulieren. Und ich fürchte, dass ich da nicht tief genug drin stecke um da wirklich hilfreich zu sein.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
dokan wie kann ich eine funktionierende Suchleiste erstellen Allgemeine Java-Themen 1
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
berserkerdq2 SceneBuilder GUI erstellt, nun muss ich noch ein Polygon erstellen, ist die Connection möglich? Allgemeine Java-Themen 3
berserkerdq2 Was heißt es mit FXML Listener zu setzen ind Buttons zu erstellen? Allgemeine Java-Themen 6
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
D Open Source Library zum erstellen von PDFs Allgemeine Java-Themen 1
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
J Power Point erstellen inklusive Diagramm Allgemeine Java-Themen 12
F IDEA IntelliJ Java Songliste erstellen Allgemeine Java-Themen 6
N Tree erstellen Allgemeine Java-Themen 8
berserkerdq2 Threads, wie genau läuft das in Java ab? (Ich kann Threads erstellen und nutzen, nur das Verständnis) Allgemeine Java-Themen 6
berserkerdq2 Kann keine Labels erstellen, was ist hier syntaktisch falsch Allgemeine Java-Themen 5
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
A Trace-Tabelle erstellen Allgemeine Java-Themen 3
M Excel Datei Erstellen Allgemeine Java-Themen 2
OnDemand Erstellen von Quartz Jobs pro Aufgabe oder zusammenfassen Allgemeine Java-Themen 7
H Matrix ohne Array erstellen Allgemeine Java-Themen 9
R Geometry erstellen die abhängig von Variablen ist Allgemeine Java-Themen 6
Gaudimagspam Skip Liste erstellen in Java Allgemeine Java-Themen 3
Avalon DTO aus mehrere Entitäten erstellen Allgemeine Java-Themen 5
Kirby.exe Distanz Map für die Distanztransformation erstellen Allgemeine Java-Themen 1
Avalon Data Transfer Objekte aus Datenbank erstellen Allgemeine Java-Themen 8
M Registry Autostart Eintrag mit Java erstellen (über Windows cmd) Allgemeine Java-Themen 7
B .txt Datei erstellen und auslesen bzw. schreiben Allgemeine Java-Themen 6
M Java 2D Array für ein Grid erstellen ? Allgemeine Java-Themen 2
B Datei/Ordner auf Server zugreifen/erstellen Allgemeine Java-Themen 2
T Objekt mit String und Int aus TxT Datei erstellen Allgemeine Java-Themen 23
M Rectangle mit Java erstellen? Allgemeine Java-Themen 9
G Fläche erstellen mit Entfernungen Allgemeine Java-Themen 1
E Eigenen "Aufzählungstyp" erstellen - mit enum ? Allgemeine Java-Themen 18
T Multithreading: Wie viele Threads sollte ich erstellen? Allgemeine Java-Themen 12
B Rangliste erstellen Allgemeine Java-Themen 13
D 2,3-Baum rekursiv erstellen Allgemeine Java-Themen 20
D Datentypen 2-3 Baum erstellen mit geordnetem int-array Allgemeine Java-Themen 0
L SQL Datei in Eclipse erstellen Allgemeine Java-Themen 3
J Datenstruktur für eine Map erstellen Allgemeine Java-Themen 2
J File in Package erstellen & lesen mit Programmstart in externe Projekt Allgemeine Java-Themen 3
E Erstellen einer Liste mit einer maximalen Menge an Elementen Allgemeine Java-Themen 13
E Ts3API Subchannel erstellen und rein moven !! Allgemeine Java-Themen 0
J Eigene Api erstellen und dann auch verwenden - Ordnerstruktur Allgemeine Java-Themen 1
S GetMethode erstellen mit Hilfe von Parametern Allgemeine Java-Themen 9
T 2D-Grafik Chart als Image erstellen Allgemeine Java-Themen 3
I Fehler beim Ant-Package erstellen mit Java 9 Allgemeine Java-Themen 1
N Bei Mouse Events nicht mehrere Objekte erstellen Allgemeine Java-Themen 13
S Compiler-Fehler IntelliJ Projektdatei lässt sich nicht erstellen. Allgemeine Java-Themen 15
M 2D Array mit unterschiedlichen Längen erstellen und befüllen Allgemeine Java-Themen 11
E Swing Buttons auf knopfdruck(anderer Button) erstellen Allgemeine Java-Themen 6
S TestNG Eclipse: Reporting erstellen/ verändern Allgemeine Java-Themen 0
F .jar erstellen und starten Allgemeine Java-Themen 15
M Array aus Thread Objekten erstellen Allgemeine Java-Themen 2
N 1000 MQTT Messages die Sekunde - 1000 Threads erstellen ? Allgemeine Java-Themen 10
Tommy Nightmare Klassen Globale Klassen erstellen Allgemeine Java-Themen 7
K Datei (CSV-ähnlich) in Java einlesen & mit teil der Daten Graphen erstellen Allgemeine Java-Themen 9
S Maven Jars dynamisch laden / Plugin-Struktur erstellen Allgemeine Java-Themen 14
T 32-Bit Applikationen mit Eclipse erstellen Allgemeine Java-Themen 4
R Input/Output RTF erstellen? Allgemeine Java-Themen 2
G Liste zwischen zwei Kalenderdaten erstellen Allgemeine Java-Themen 3
S Klassen Klassen "virtuell" erstellen Allgemeine Java-Themen 5
P mehrer Verschiedene Objekte in einer Klasse erstellen. Allgemeine Java-Themen 4
M Dokument erstellen Allgemeine Java-Themen 0
S Java API für GitHub erstellen Allgemeine Java-Themen 14
T Ant Jar Datei per Ant in Eclipse erstellen Allgemeine Java-Themen 2
4a61766120617274697374 Hintergrundjobs(tasks) in Java erstellen Allgemeine Java-Themen 3
K Eigene API erstellen? Allgemeine Java-Themen 13
N Benutzeroberfläche erstellen Allgemeine Java-Themen 5
Thallius Eigenes Message Center erstellen Allgemeine Java-Themen 3
perlenfischer1984 Mehrere Komponenten erstellen Allgemeine Java-Themen 3
B jni - Headerdatei erstellen Allgemeine Java-Themen 3
Neumi5694 Operatoren regEx für das Erstellen eines Strings verwenden Allgemeine Java-Themen 3
I Methoden Schnelle Hilfe benötigt - Kleines Video/Slideshow aus mehreren Bildern erstellen Allgemeine Java-Themen 3
B automatisch benannte arrays erstellen Allgemeine Java-Themen 9
F URI-Scheme mit Java unter MacOS erstellen? Allgemeine Java-Themen 0
S Mit Generics Klasse erstellen die selbst T erweitert..? Allgemeine Java-Themen 4
J Java Software Compare Files und Neue File erstellen Allgemeine Java-Themen 0
M Textfile erstellen Allgemeine Java-Themen 11
L Wie kann ich einen Keystore aus existierenden Zertifikaten erstellen? Allgemeine Java-Themen 1
K Fehler beim erstellen von .jar Datei Allgemeine Java-Themen 3
D Ordner auf Desktop erstellen(Pc unabhängig) Allgemeine Java-Themen 5
T Dll erstellen und einbinden Allgemeine Java-Themen 1
M Exceltabelle in Java erstellen und Werte einlesen Allgemeine Java-Themen 32
P Eigenstehende *.exe Datei erstellen Allgemeine Java-Themen 15
R Test Umgebung für Datenbank erstellen, was braucht es? Allgemeine Java-Themen 14
B MySQL Eintrag erstellen Allgemeine Java-Themen 3
Thallius PDF von einem BufferedImage erstellen Allgemeine Java-Themen 1
M Zwei unterschiedliche JAR Dateien mit ANT erstellen Allgemeine Java-Themen 8
3 Backup von h2-Datenbank-Datei erstellen Allgemeine Java-Themen 6
S ImageMap erstellen Allgemeine Java-Themen 1
A Spielemap erstellen Allgemeine Java-Themen 2
F URI Schema in Linux erstellen? Allgemeine Java-Themen 3
P Matrix erstellen Allgemeine Java-Themen 1
C Ein Array mit der Größe von 1 KB erstellen Allgemeine Java-Themen 3
A Daten in Formularen/Vorlagen erstellen und ausdrucken Allgemeine Java-Themen 3
GianaSisters Apache POI - Hyperlink erstellen Allgemeine Java-Themen 0
Zettelkasten Vektor mit Koordinaten erstellen Allgemeine Java-Themen 2
D Grafisches Frontend zu einem Java Prozess erstellen Allgemeine Java-Themen 0
U Screenshot erstellen und speichern Allgemeine Java-Themen 6
S Zur Laufzeit Klasse mit einer anzahl von X Objekten erstellen Allgemeine Java-Themen 5
OnDemand Programminstallation erstellen Allgemeine Java-Themen 3
K RamDisk erstellen Allgemeine Java-Themen 13

Ähnliche Java Themen

Neue Themen


Oben