Mastertestplan
TextureSync
Version
Datum	08.04.19
Autor	Hendrik Schuter
Projektmitglieder	Hendrik Schutter, Lukas Fürderer, Robin Willmann, Jannik Seiler

Einleitung

Ziel des Mastertestplans
Das Ziel des Mastertestplans ist es die einzelnen Test-Phasen zu definieren und zu kontrollieren.
In den Tests des Mastertestplans werden die Voraussetzungen und die Durchführung der Test beschrieben.
Die einzelnen Testpläne (Modultest, Integrationstest, Systemtest und Akzeptanztest) werden aus dem Mastertestplan abgeleitet. In den einzelnen Testplänen werden auch die Ergebnisse festgehalten. Im Mastertestplan nur die erwarteten Ergebnisse.

Durchführung der Test-Phasen
Die Test-Phasen werden nacheinander durchgeführt. Bei einem fehlgeschlagenen Test und der Änderung im Code werden die zuvor durchgeführten Phasen bei relevanten Tests wiederholt. Bei kritischen Änderungen werden alle Test wiederholt.
Die Reihenfolge der Tests ist im V-Modell beschrieben.
Bei erfolgreichem Abschluss aller Tests einer Test-Phase wird diese als komplett angesehen und die nächste Phase beginnt.

Modultests

Testumgebung
Teile der Server bzw. Client Software werden nach dem Entwickeln einzeln getestet. Als Testwerkzeuge dienen eigens geschriebene Test-Anwendungen welche die Module ansprechen und deren Ergebnisse darstellen. Da die Tests direkt am Source-Code in der IDE vorgenommen werden wird mittels White-Box Verfahren getestet.

Test Definitionen
Nummer	Titel	Erklärung
MT#1	Client: Textur auswählen	Eine Textur wird ausgewählt (Klick auf 2D-Preview) und es wird eine 3D-Preview mit den Metadaten am rechten Rand der UI angezeigt.
MT#2	Client: Steuerelemente der Suche	Die Mindestauflösung, Einstelldatum und mehrere Tags lassen sich einstellen. Die Reihenfolge ist nicht relevant.
MT#3	Client: Validierung Name	Der Name der Textur wird nur akzeptiert wenn er den Regeln aus der UI-Feindesign entspricht.
MT#4	Client: Textur importieren	Es kann über ein File-Chooser eine Datei auf dem Dateisystem ausgewählt werden.
MT#5	Client: Textur exportieren	Eine Datei kann lokal auf dem Client-Rechner abgespeichert werden
MT#6	Client: Einfügedatum	Der Client erfasst das korrekte Datum an dem die neue Textur eingefügt wird
MT#7	Server: Metadaten abspeichern	Neue oder veränderte Metadaten werden persistent als Datei abgespeichert.
MT#8	Server: Metadaten lesen	Zuvor gespeicherte Metadaten können korrekt eingelesen werden.
MT#9	Server: Suchanfrage bearbeiten	Die Suche wird wie im Such-Feindesign beschrieben korrekt bearbeitet.
MT#10	Server: Textur lokal abspeichern	Der Server speichert eine Textur lokal ab.
MT#1	Server: Metadaten automatisch erkennen	Der Client ermittelt automatisch die Auflösung einer Textur.

Integrationstests

Testumgebung
Mehrere komplette Arbeitsaufträge für die komplette Software werden getestet. Aus einem bestimmten Ausgangspunkt muss mit den gleichen Interaktionen das gleiche Ergebnis entstehen.
Als Ausgangspunkt werden speziell präparierte Situationen gewählt welche wiederholt werden können.
Die fehlerfreie Kommunikation innerhalb der Client und der Serversoftware wie auch die Kommunikation des Servers und des Clients werden dadurch verifiziert.

Test Definitionen
Nummer	Titel	Erklärung
IT#1	Verbindung aufbauen	Ein neu installierter Server und Client müssen eine Verbindung herstellen können.
IT#2	Alle Texturen anzeigen	Der Client muss bei einer Suche ohne angetriebenen Suchkriterien alle Texturen anzeigen.
IT#3	Einstelldatum	Eine Textur wird eingefügt. Danach wird manuell das Datum in die Zukunft gesetzt und wieder eine Textur eingefügt. Bei einer Suche mit dem Kriterium des anfänglichen Datums wird nur die erste Textur angezeigt.
IT#4	Textur hinzufügen	Es wird eine neue Textur ins System eingefügt. Diese muss von der Server-Software gespeichert und indexiert werden. Bei der nächsten Suchanfrage mit passenden Kriterien wird diese angezeigt.
IT#5	Textur löschen	Ein Client löscht eine Textur, diese wird auch auf dem Server gelöscht und kommt bei keinem Suchergebnis mehr vor.
IT#6	Metadaten aktualisieren	Ein Client ändert einen Tag ab und ein weiterer macht danach eine Suchanfrage mit diesem neuen Tag. Die dazugehörige Textur wird angezeigt.
IT#7	Verbindung schließen	Ein verbundener Client schließt die Verbindung und kann diese danach wieder aufbauen.

Systemtests

Testumgebung
Die Musskriterien wie auch die implementierten Wunschkriterien aus dem Pflichtenheft werden einzeln getestet. Dabei werden auf Randbedingungen wie auch auf Fehlerfälle besonders geachtet. Mittels Black-Box Tests wird dabei der Output der kompletten Software verifiziert.

Test Definitionen
Nummer	Titel	Erklärung
ST#1	Anzahl	Es sind schon 999 Texturen ins System eingefügt. Die 1000. Textur wird hinzugefügt. Bei der nächsten Suchanfrage mit passenden Kriterien wird diese angezeigt.
ST#2	Bildformat	Texturen mit den Bildformaten JPEG und PNG können ins System eingefügt werden. Bei der nächsten Suchanfrage mit passenden Kriterien werden diese in der 2D- und 3D-Preview korrekt angezeigt.
ST#3	Metadaten	Eine Textur blue_water.png (512px x 1024px) wird hinzugefügt. Das System erfasst automatisch die Metadaten über Name, Einstelldatum und Auflösung. Tages des Nutzers werden mit diesen Metadaten und dem Bild vom Server gespeichert.
ST#4	Tags	Beim hinzufügen einer Textur wird ein 32 Zeichen langer Name als Tag angegeben. Dieser wird akzeptiert und korrekt verwaltet.
ST#5	Tags	Beim hinzufügen einer Textur wird einen 1 Zeichen langer Name als Tag angegeben. Dieser wird akzeptiert und korrekt verwaltet.
ST#6	Tags	Beim hinzufügen einer Textur wird versucht einen 0 Zeichen langer Name als Tag anzugeben. Dieser wird nicht akzeptiert.
ST#7	Filter	Bei einer Suchanfrage mit dem Kriterium eines Tags werden alle Texturen welchen diesen Tag haben angezeigt.
ST#8	Filter	Bei einer Suchanfrage mit dem Kriterium eines negierten Tags werden alle Texturen welchen diesen Tag nicht haben angezeigt.
ST#9	Filter	Bei einer Suchanfrage mit dem Kriterium einer Mindestauflösung werden alle Texturen welche diese Mindestauflösung haben angezeigt.
ST#10	Filter	Bei einer Suchanfrage mit dem Kriterium einer Maximalauflösung werden alle Texturen welche diese Maximalauflösung haben angezeigt.
ST#11	Filter	Bei einer Suchanfrage mit dem Kriterium eines Namen werden alle Texturen welchen diesen Namen enthalten angezeigt.
ST#12	Synchronisation	Es wird eine Textur hinzufügt. Alle Nutzer können bei der nächsten Suchanfrage diese angezeigt bekommen.
ST#13	Synchronisation	Es wird eine Textur entfernt. Alle Nutzer können bei der nächsten Suchanfrage diese nicht mehr angezeigt bekommen.
ST#14	Synchronisation	Es wird bei einer Textur ein Tag hinzugefügt. Alle Nutzer können bei der nächsten Suchanfrage dieses angezeigt bekommen.
ST#15	Synchronisation	Es wird bei einer Textur ein Tag entfernt. Alle Nutzer können bei der nächsten Suchanfrage diese Textur nicht mehr mit diesem Tag angezeigt bekommen.
ST#16	Export	Es kann eine Textur auf dem lokalen Dateisystem abgespeichert werden.
ST#17	Atomarer Upload	Während eine neue Textur hochgeladen wird, kommt es zu einem Netzwerkausfall des Clients. Die „halbe“ Textur wird vom Server verworfen.
ST#18	3D-Ansicht	Bei der Auswahl einer Textur wird eine 3D-Preview angezeigt.
ST#19	Installation	Der Server kann über ein Shell-Skript installiert und in Betrieb genommen werden.
ST#20	Installation	Der Client kann über ein Shell-Skript installiert werden.
ST#21	Update durch Paketverwaltung	Die Software kann über eine Paketverwaltung (apt) installiert und aktualisiert werden.
ST#22	Backup	Das Daten-Verzeichnis des Servers kann durch Kopieren gesichert werden.
ST#23	Backup	Der Server ist gestoppt. Das Daten-Verzeichnis des Servers kann mit einer Sicherung ersetzt werden. Danach kann der Server wieder gestartet werden.
ST#24	Automatische Konfiguration	Server und Client waren noch nie verbunden. Der Client findet automatisch innerhalb von 30 Sekunden den Server.

Akzeptanztests

Testumgebung
Als Testumgebung gilt hier kontre wie im Lastenheft angegeben Ubuntu 18.04 (x64) für die Server wie auch für die Client Software. Die funktionalen wie auch nicht-funktionalen Anforderungen werde getrennt von einander getestet. Die User-Stories werden von Endbenutzern durchgeführt.

Test Definitionen
Nummer	Titel	Erklärung
AT#1	Texturen hinzufügen	Jeder Nutzer ist in der Lage, neue Texturen in die Sammlung aufzunehmen und auf den Server zu laden. Bei doppelten Namen schlägt das Hinzufügen fehl und informiert den Nutzer. Zum Hinzufügen wählt der Nutzer eine Texturdatei aus, die auf dem Computer des Nutzers abgespeichert ist.
AT#2	Tags verwalten	Jeder Nutzer kann Tags zu beliebigen Texturen der Sammlung hinzufügen oder löschen.
AT#3	Metadaten speichern	Jede Textur in der Sammlung hat einen eindeutigen Namen, ein Einpflegedatum, eine Auflösung und kein, ein oder mehrere Tags.
AT#4	Filter	Die Sammlung aller Texturen lässt sich zur besseren Übersicht nach Metadaten filtern. Mögliche Filterkriterien sind: Das Vorhandensein von Tags Das Nichtvorhandensein von Tags Mindestauflösung Maximalauflösung Filtern nach Einstelldatum Namen
AT#5	Synchronisation	Alle in die Sammlung aufgenommenen Texturen sowie deren Metadaten sind für alle anderen Nutzer sichtbar.
AT#6	Texturen extrahieren	Jeder Nutzer kann beliebige Texturen aus der Sammlung extrahieren und in seinem lokalen Dateisystem abspeichern.
AT#7	Detailansicht	Jeder Nutzer kann von beliebigen Texturen eine 3D-Vorschau anzeigen lassen und die gesetzten Metadaten einsehen.
AT#8	Darstellung	Bei der Nutzung des Filters werden alle passenden Texturen mit einer Vorschau angezeigt.
AT#9	Anzahl von Clients	Es können mindestens 10 Clients gleichzeitig aktiv sein.
AT#10	Anzeigen von Änderungen	Neue Texturen oder geänderte Tags werden nach dem Hochladen bei einer neuen Suchanfrage anzeigt.
AT#11	Defekte Daten	Wenn es beim Übertragen von Texturen auf den Server zu einem Fehler kommt wird die Textur nicht in das System übernommen, und der Benutzer wird gewarnt.
AT#12	Konfiguration, Server	Die Server-Software kann auf einem Ubuntu 18.04 (x64) ausführbar gemacht werden.
AT13	Konfiguration, Client	Die Client-Software kann auf einem Ubuntu 18.04 (x64) ausführbar gemacht werden.
AT#14	Sicherung von Daten	Alle Daten im System können gesichert werden durch das Kopieren eines einzelnen Ordners im Dateisystem des Servers. So gesicherte Daten können wiederhergestellt werden, indem sie zurückkopiert werden und danach die Server-Software neu gestartet wird. Hierbei wird vorausgesetzt, dass die Struktur beibehalten wird.
AT#15	User-Story	Als Anwender möchte ich eine Holz-Textur finden. Ich gebe den Tag „Holz“ ein und es werden mir sofort entsprechende Texturen angezeigt.
AT#16	User-Story	Ich will einfach neue Texturen von einem Rechner in das System einfügen. Ich kennzeichne diese mit Tags, um sie für meine Kollegen auffindbar zu machen.
AT#17	User-Story	Wenn ich eine passende Textur gefunden habe will ich diese auf meinem Rechner im Projekt abspeichern.
AT#18	User-Story	Ich will beim Hinzufügen neuer Texturen nicht viele Eigenschaften, wie z.B. Auflösung, von Hand eintippen, das soll das System zum größten Teil tun.
AT#19	User-Story	Ich möchte nur Texturen mit einer Mindestauflösung von 1024 x 1024 Pixel angezeigt bekommen.

Changelog
Version	Änderung
1.0.0	-
1.0.1	vervollständigt
1.0.2	Beschreibung der Durchführung der Phasen hinzufügt
1.0.3	Weitere Testfälle hinzufügt
1.0.4	Tippfehler und Inhalt korrigiert
TextureSync Mastertestplan ⸬ Version Seite 0/11