E n t w i c k l u n g e i n e s s i c h e r e n V i d e o ü b e r t r a g u n g s s y s t e m s. T e s t d o k u m e n t a t i o n

Ähnliche Dokumente
Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Benutzerhandbuch. Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer.

Die Dateiablage Der Weg zur Dateiablage

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

KURZANLEITUNG CLOUD OBJECT STORAGE

Kleines Handbuch zur Fotogalerie der Pixel AG

Drägerware.ZMS/FLORIX Hessen

Installation des Zertifikats. Installationsanleitung für Zertifikate zur Nutzung des ISBJ Trägerportals

Datenaustausch mit dem BVK Data Room

Bedienungsanleitung für den SecureCourier

Arbeiten mit dem Outlook Add-In

Adminer: Installationsanleitung

Übersicht... 2 Dateiupload... 3 Administratorfunktionen... 4

Anwendungsbeispiele Buchhaltung

Leitfaden zur Nutzung von binder CryptShare

Datenaustausch mit dem BVK Data Room

Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der IBOConsole

Live Update (Auto Update)

Der große VideoClip- Wettbewerb von Media Markt.

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000

Wie das genau funktioniert wird Euch in diesem Dokument Schritt für Schritt erklärt. Bitte lest Euch alles genau durch und geht entsprechend vor!

Anleitung. Update/Aktualisierung EBV Einzelplatz. und Mängelkatalog

Streamserver24.com. Anleitung Auto-DJ

FastViewer Remote Edition 2.X

Sicherer Datenaustausch zwischen der MPC-Group und anderen Firmen. Möglichkeiten zum Datenaustausch... 2

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Das Starten von Adami Vista CRM

Internet online Update (Internet Explorer)

Anleitung zur Installation von Thunderbird

BSV Software Support Mobile Portal (SMP) Stand

Erstellen einer PostScript-Datei unter Windows XP

Lizenzen auschecken. Was ist zu tun?

Herzlich willkommen bei der Installation des IPfonie -Softclients!

Daten Sichern mit dem QNAP NetBak Replicator 4.0

Software-Schutz Client Aktivierung

TeamSpeak3 Einrichten

DELFI. Benutzeranleitung Dateiversand für unsere Kunden. Grontmij GmbH. Postfach Bremen. Friedrich-Mißler-Straße Bremen

Newsletter. 1 Erzbistum Köln Newsletter

FTP-Leitfaden RZ. Benutzerleitfaden

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein

Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung

Folgeanleitung für Fachlehrer

Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.

Tevalo Handbuch v 1.1 vom

Einkaufslisten verwalten. Tipps & Tricks

Anleitung Datenfernsicherung SecureSafe

Anlegen eines DLRG Accounts

Kurzeinführung Excel2App. Version 1.0.0

Anleitung. Update EBV 5.0 EBV Mehrplatz nach Andockprozess

Installation SAP-GUI-PATCH unter Windows Vista

Kostenstellen verwalten. Tipps & Tricks

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Folgeanleitung für Klassenlehrer

26. November EFS Übung. Ziele. Zwei Administrator Benutzer erstellen (adm_bill, adm_peter) 2. Mit adm_bill eine Text Datei verschlüsseln

Alle alltäglichen Aufgaben können auch über das Frontend durchgeführt werden, das in den anderen Anleitungen erläutert wird.

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Information zum SQL Server: Installieren und deinstallieren. (Stand: September 2012)

Backup der Progress Datenbank

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

Registrierung am Elterninformationssysytem: ClaXss Infoline

TEAMWORK-Uploader. Dokumentenaustausch mit dem PC

Einrichten eines IMAP Kontos unter Outlook Express

CALCOO Lite. Inhalt. 1. Projekt anlegen / öffnen. 2. Projekt von CALCOO App importieren

Durchführung der Datenübernahme nach Reisekosten 2011

ARAkoll 2013 Dokumentation. Datum:

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

How to install freesshd

Anleitung zur Mailumstellung Entourage

Überprüfung der digital signierten E-Rechnung

Lieber SPAMRobin -Kunde!

WLAN THG Installationsanleitung WLAN-Zugang THG

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

Anleitung zur Installation von SFirm 3.1 inklusive Datenübernahme

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Netzwerk einrichten unter Windows

Sie können diesen Service verwenden, um fast beliebig große Dateien auch über 2 GB zu versenden.

ESB - Elektronischer Service Bericht

Dokumentenkontrolle Matthias Wohlgemuth Telefon Erstellt am

Leitfaden zur Nutzung des Systems CryptShare /Sicheres Postfach

AnNoText. AnNoText Online-Update. Copyright Wolters Kluwer Deutschland GmbH

Anleitung Lernobjekt-Depot (LOD)

Anleitungen zum KMG- -Konto

Installationsanleitung

Anleitung über den Umgang mit Schildern

Dieses Dokument soll dem Administrator helfen, die ENiQ-Software als Client auf dem Zielrechner zu installieren und zu konfigurieren.

I. Travel Master CRM Installieren

YouTube: Video-Untertitel übersetzen

OutlookExAttachments AddIn

TrekStor - ebook-reader TrekStor (TS) Edition - Firmware-Update

Kurzanleitung GigaMove

Kommunikations-Management

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar ZID Dezentrale Systeme

Einen Wiederherstellungspunktes erstellen & Rechner mit Hilfe eines Wiederherstellungspunktes zu einem früheren Zeitpunkt wieder herstellen

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Internationales Altkatholisches Laienforum

Transkript:

E n t w i c k l u n g e i n e s s i c h e r e n V i d e o ü b e r t r a g u n g s s y s t e m s Softwareentwicklungspraktikum Sommersemester 2009 The Security Gurus [Gruppe 1] Phasenverantwortlicher Sebastian Nieke T e s t d o k u m e n t a t i o n Auftraggeber Technische Universität Braunschweig Institut für Betriebssysteme und Rechnerverbund Prof. Dr.-Ing. Lars Wolf Mühlenpfordtstraße 23, 1. OG 38106 Braunschweig Betreuer: Kai Homeier, Jens Brandt, Timo Veit Name Johannes Bürdek Daniel Fischer Justus Hummelsheim Sebastian Nieke Jan-Marc Reinhardt Mengzhi Zhang Auftragnehmer: E - Mail johannes.buerdek@gmx.net d.fischer@tu-bs.de netzjoe@arcor.de waronfate@googlemail.com j-m.reinhardt@tu-bs.de Ias147@hotmail.com Braunschweig, 26.06.2009 1

Versionsübersicht Version Datum Autor Status Kommentar 1.0 26.06.2009 Gruppe 1 Erstfassung 2

I n h a l t s v e r z e i c h n i s 1 EINLEITUNG... 6 2 TESTPLAN... 7 2.1 ZU TESTENDE KOMPONENTEN... 7 2.2 ZU TESTENDE FUNKTIONEN... 7 2.3 NICHT ZU TESTENDE FUNKTIONEN... 8 2.4 VORGEHEN... 8 2.5 TESTUMGEBUNG... 9 3 TESTDURCHFÜHRUNG...10 3.1 /T110/ BENUTZERAUTHENTIFIZIERUNG AM SERVER...10 3.1.1 ZU TESTENDE OBJEKTE UND METHODEN...10 3.1.2 KRITERIEN FÜR ERFOLGREICHE BZW. FEHLGESCHLAGENE TESTFÄLLE...11 3.1.3 EINZELSCHRITTE...11 3.1.4 BEOBACHTUNGEN / LOG...12 3.1.5 ABHÄNGIGKEITEN...12 3.1.6 TESTLAUF 1...12 3.1.7 TESTLAUF 2...12 3.1.8 TESTLAUF 3...13 3.2 /T120/ EMPFANGEN DER VIDEOLISTE...14 3.2.1 ZU TESTENDE OBJEKTE UND METHODEN...14 3.2.2 KRITERIEN FÜR ERFOLGREICHE BZW. FEHLGESCHLAGENE TESTFÄLLE...15 3.2.3 EINZELSCHRITTE...15 3.2.4 BEOBACHTUNGEN / LOG...15 3.2.5 TESTLAUF 1...15 3.3 /T200/ DER PLAYER SPEICHERT VIDEOS UND DER SERVER STREAMT VIDEOS (/F110/) 17 3.3.1 ZU TESTENDE OBJEKTE UND METHODEN...17 3.3.2 KRITERIEN FÜR ERFOLGREICHE BZW. FEHLGESCHLAGENE TESTFÄLLE...18 3.3.3 EINZELSCHRITTE...19 3.3.4 BEOBACHTUNGEN / LOG...19 3.3.5 BESONDERHEITEN...19 3.3.6 ABHÄNGIGKEITEN...19 3.3.7 TESTLAUF 1...20 3.4 /T210/ DER PLAYER KANN SPULEN...22 3

3.4.1 ZU TESTENDE OBJEKTE UND METHODEN...22 3.4.2 KRITERIEN FÜR ERFOLGREICHE BZW. FEHLGESCHLAGENE TESTFÄLLE...22 3.4.3 EINZELSCHRITTE...23 3.4.4 BEOBACHTUNGEN / LOG...23 3.4.5 BESONDERHEITEN...23 3.4.6 ABHÄNGIGKEITEN...23 3.4.7 TESTLAUF 1...23 3.5 /T310/: VERSCHLÜSSELTE VIDEOS EMPFANGEN UND SPEICHERN SOWIE VIDEOS HOCH LADEN (/F120/ & /F400/)...25 3.5.1 ZU TESTENDE OBJEKTE UND METHODEN...25 3.5.2 KRITERIEN FÜR ERFOLGREICHE BZW. FEHLGESCHLAGENE TESTFÄLLE...27 3.5.3 EINZELSCHRITTE...28 3.5.4 BEOBACHTUNGEN / LOG...28 3.5.5 BESONDERHEITEN...28 3.5.6 ABHÄNGIGKEITEN...28 3.5.7 TESTLAUF 1...29 3.6 /T320/ LÖSCHEN VON VIDEOS AUF DEM SERVER (/F140/)...31 3.6.1 ZU TESTENDE OBJEKTE UND METHODEN...31 3.6.2 KRITERIEN FÜR ERFOLGREICHE BZW. FEHLGESCHLAGENE TESTFÄLLE...31 3.6.3 EINZELSCHRITTE...32 3.6.4 BEOBACHTUNGEN / LOG...32 3.6.5 BESONDERHEITEN...32 3.6.6 ABHÄNGIGKEITEN...32 3.6.7 TESTLAUF 1...32 3.6.8 TESTLAUF 2...33 3.7 /T330/ BENUTZER ANLEGEN (/F200/)...34 3.7.1 ZU TESTENDE OBJEKTE UND METHODEN...34 3.7.2 KRITERIEN FÜR ERFOLGREICHE BZW. FEHLGESCHLAGENE TESTFÄLLE...35 3.7.3 EINZELSCHRITTE...35 3.7.4 BEOBACHTUNGEN / LOG...35 3.7.5 BESONDERHEITEN...35 3.7.6 TESTLAUF 1...36 3.7.7 TESTLAUF 2...36 3.8 /T340/ BENUTZER LÖSCHEN (/F210/)...38 3.8.1 ZU TESTENDE OBJEKTE UND METHODEN...38 3.8.2 KRITERIEN FÜR ERFOLGREICHE BZW. FEHLGESCHLAGENE TESTFÄLLE...39 3.8.3 EINZELSCHRITTE...39 3.8.4 BEOBACHTUNGEN / LOG...39 4

3.8.5 BESONDERHEITEN...39 3.8.6 TESTLAUF 1...40 3.9 /T380/ VIDEOS ABSPIELEN (/F300/)...40 3.9.1 ZU TESTENDE OBJEKTE UND METHODEN...40 3.9.2 KRITERIEN FÜR ERFOLGREICHE BZW. FEHLGESCHLAGENE TESTFÄLLE...41 3.9.3 EINZELSCHRITTE...41 3.9.4 BEOBACHTUNGEN / LOG...41 3.9.5 BESONDERHEITEN...41 3.9.6 ABHÄNGIGKEITEN...42 3.9.7 TESTLAUF 1...42 3.10 /T390/ LÖSCHEN VON VIDEOS AUF DEM SERVER DURCH DEN CLIENT (/F410/)...43 3.10.1 ZU TESTENDE OBJEKTE UND METHODEN...43 3.10.2 KRITERIEN FÜR ERFOLGREICHE BZW. FEHLGESCHLAGENE TESTFÄLLE...44 3.10.3 EINZELSCHRITTE...45 3.10.4 BEOBACHTUNGEN / LOG...45 3.10.5 BESONDERHEITEN...45 3.10.6 ABHÄNGIGKEITEN...45 3.10.7 TESTLAUF 1...45 4 ZUSAMMENFASSUNG...47 5

1 Einleitung Dieses Dokument stellt die Testdokumentation zu dem Projekt Entwicklung eines sicheren Videoübertragungssystems dar. Im zweiten Teil werden Grundlegende Informationen über die Tests und diese Dokumentation zur Verfügung gestellt. So zum Beispiel welche Komponenten und Funktionen getestet werden, wie dabei vorgegangen wird und welche Testumgebung genutzt wird. Im dritten Teil, dem Hauptteil, wird die komplette Testdurchführung dokumentiert. Der vierte und letzte Teil enthält eine abschließende Zusammenfassung über die Tests und eine Bewertung der Qualität der Software. 6

2 Testplan In dieser Testdokumentation werden wir hauptsächlich auf die im Pflichtenheft aufgeführten Muss- und Wunschkriterien und die im Grobentwurf beschriebenen Produktfunktionen /F100/ bis /F410/ eingehen. 2.1 Zu testende Komponenten Die Tests folgender Komponenten werden in diesem Testdokument festgehalten: Player Uploader ServerReceiver StreamServer GUI Datenbank Sämtliche hier genannten Komponenten liegen als Java-Quelltext der Version 6.0 vor. Die gewünschte Funktionalität dieser Komponenten können im Grob/- und Feinentwurf nachgelesen werden. Sämtliche Klassen und Methoden sind in einer Dokumentation in Form einer Javadoc-Ausgabe aufgeführt und beschrieben. 2.2 Zu testende Funktionen Folgende hier aufgeführte Funktionen sind im Grobentwurf festgelegt wurden und werden in diesem Testdokument behandelt: Musskriterien Wunschkriterien /F100/: Benutzer verwalten /F110/: Videos streamen /F120/: Verschlüsselte Videos empfangen und speichern /F130/: Unverschlüsselte Videos empfangen und speichern /F140/: Videos löschen /F200/: Benutzer anlegen 7

/F210/: Benutzer löschen /F220/: Benutzer bearbeiten /F230/: Rechte verwalten /F250/: Passwort ändern /F260/: Passwort zurücksetzen /F300/: Videos abspielen /F400/: Videos hoch laden /F410/: Videos löschen 2.3 Nicht zu testende Funktionen Einige Funktionen können nicht vollständig getestet werden, da die Testfälle ein Ausmaß haben, welches jahrelange Tests erfordern würde. Da uns für diese Arbeit nur ein sehr eng begrenzter Zeitraum zur Verfügung steht ist dies jedoch nicht möglich. Ein Beispiel hierfür ist das Benutzerinterface. Die möglichen Eingaben sind extrem zahlreich, die Berücksichtigung von Eingabekombinationen würde die Anzahl der Testfälle auf ungeahnte Weise explodieren lassen, so dass ein vollständiger Test hier ausgeschlossen ist. 2.4 Vorgehen a) Klassen- und Komponententest Als erstes werden sämtliche Klassen von ihren Autoren auf ihre korrekte Funktionalität getestet und ihr korrektes Zusammenspiel innerhalb der einzelnen Komponenten sichergestellt. Hierzu werden funktionale Testklassen geschrieben und dort wo es angebracht erscheint JUnit-Tests durchgeführt. Diese wurden teilweise bereits vor der Implementierung erstellt und an ihnen die Funktionalität verifiziert. b) Integrationstest Sind sämtliche Komponente getestet und erscheinen korrekt, wird mit dem Integrationstest begonnen. Aufgrund der komplexen Struktur des Projekts müssen sofort sämtliche Komponenten zusammengeschaltet werden, eine Integration Stufe für Stufe ist leider nicht möglich. 8

Grobe Schnittstellenprobleme würden an dieser Stelle sofort auffallen. Ein schneller Testdurchlauf von verschiedenen Funktionen, welche alle Komponenten ansprechen offenbart ob diese überhaupt korrekt miteinander Kommunizieren. c) Funktionstest Nach dem Integrationstest folgt ein ausgiebiges Testen sämtlicher Funktionen. Diese werden anhand der Kriterien aus dem Pflichtenheft und Grobentwurf getestet. Hierbei sollte jeder angedachte Anwendungsfall auf jeden Fall korrekt durchlaufen werden können. 2.5 Testumgebung Sun Java 6 Update 14 Java Media Framework 2.1.1e SQLite 3.6.14.2 Verschiedene Betriebssysteme o o o Windows Vista SP1 Windows Vista SP2 Windows XP SP3 JUnit 4.6 Selbst geschriebene Testklassen Manuelle Tests (Prädefinierte Daten, Trial and Error) 9

3 Testdurchführung 3.1 /T110/ Benutzerauthentifizierung am Server 3.1.1 Zu testende Objekte und Methoden Zu testende Objekte: de.gurus.config.configfilehandler de.gurus.control.control de.gurus.db.databaseconnection de.gurus.gui.mainwin de.gurus.ssl.sslclient.sslclient de.gurus.ssl.sslclient.sslclientinputparser de.gurus.ssl.sslserver.sslconnection de.gurus.ssl.sslserver.sslserverinputparser Zu testende Methoden: de.gurus.ssl.sslclient.sslclient.send() de.gurus.config.configfilehandler.writevalue() de.gurus.config.configfilehandler.getvalues() de.gurus.player.control.control.getvideolistfromserver() de.gurus.player.control.control.connect() de.gurus.control.control.update(commandevent) de.gurus.db.databaseconnection.checkpassword() de.gurus.gui.mainwin.setvideolist() de.gurus.ssl.sslclient.sslclient.run() de.gurus.ssl.sslclient.sslclient.send() de.gurus.ssl.sslclient.sslclientinputparser.parsemsg() de.gurus.ssl.sslclient.sslclientinputparser.parsevideo() 10

de.gurus.ssl.sslserver.sslconnection.run() de.gurus.ssl.sslserver.sslconnection.send() de.gurus.ssl.sslserver.sslserverinputparser.parsemsg() de.gurus.ssl.sslserver.sslserverinputparser.parsevideo() Da die Benutzerauthentifizierung nur bei Aktionen die ausgeführt werden aktiv wird und nicht explizit aufgerufen werden kann, wird sie hier in Kombination mit dem Herunterladen der Liste der Videos die ein Benutzer gucken darf getestet. Da die Authentifizierung bei allen Aktionen gleich abläuft ist der Test auf sämtliche andere Aktionen übertragbar. In der Benutzeroberfläche (MainWin) wird auf einen Button zum aktualisieren der Liste geklickt. Nun wird die Funktion getvideolistfromserver() (Control) aufgerufen, welche über die SSL-Verbindung eine Nachricht an den Server schickt. Dieser authentifiziert den Benutzer und schickt eine Nachricht mit den Videos, die der Benutzer sehen darf, zurück. Die Liste mit den Videos aus dieser Nachricht wird nun in der Benutzeroberfläche angezeigt. 3.1.2 Kriterien für erfolgreiche bzw. fehlgeschlagene Testfälle Der Testfall gilt als erfolgreich, wenn die Videoliste erfolgreich angezeigt wird, wobei hier davon ausgegangen wird, dass das anzeigen der Videoliste funktioniert, da nur die Benutzerauthentifizierung getestet werden soll. Erfolg: Videoliste wird angezeigt Fehlgeschlagen ist der Test, wenn eine Meldung kommt, dass der Zugriff verweigert wurde. Fehlschlag: Benutzer konnte nicht authentifiziert werden Meldung, dass der Benutzer nicht authentifiziert werden konnte 3.1.3 Einzelschritte Es muss sichergestellt sein, dass der Benutzer in der Datenbank steht. Sollte dies der Fall sein, kann durch klicken auf einen bestimmten Button die Liste der Videos aktualisiert werden. 11

3.1.4 Beobachtungen / Log Ob der Benutzer in der Datenbank steht, kann durch SQLite direkt überprüft werden, indem die Datensätze der entsprechenden Datenbank ausgegeben werden. Um zu überprüfen, ob die Anmeldung erfolgreich war reicht es zu schauen, ob die Videoliste angezeigt wird, bzw. ob eine Fehlermeldung ausgegeben wird. 3.1.5 Abhängigkeiten Der Test ist von /T120/ abhängig, da hier sichergestellt wird, dass die Videoliste korrekt empfangen wird. 3.1.6 Testlauf 1 3.1.6.1 Eingaben Es werden die Daten eines existierenden Benutzers eingegeben. 3.1.6.2 Soll - Reaktion Der Benutzer soll vom Server authentifiziert werden und es soll die Videoliste mit den Videos, die er sehen darf, ausgegeben werden. 3.1.6.3 Ist Reaktion Der Benutzer wird erfolgreich authentifiziert und die Videoliste wird mit den Videos angezeigt die der Benutzer sehen darf. 3.1.6.4 Ergebnis Der Test wurde erfolgreich durchgeführt. 3.1.6.5 Unvorhergesehene Ereignisse während des Testlaufs Es sind keine unvorhergesehenen Ereignisse während des Testlaufs aufgetreten. 3.1.6.6 Nacharbeiten Nacharbeiten waren nicht nötig, da der Testlauf erfolgreich beendet wurde. 3.1.7 Testlauf 2 3.1.7.1 Eingaben Es wird ein gültiger Benutzername mit einem ungültigen Passwort eingegeben. 12

3.1.7.2 Soll - Reaktion Der Benutzer soll nicht vom Server authentifiziert werden und es soll eine Fehlermeldung ausgegeben werden. 3.1.7.3 Ist Reaktion Der Benutzer wurde nicht vom Server authentifiziert und es wurde eine Fehlermeldung ausgegeben. Die Videoliste wurde nicht aktualisiert. 3.1.7.4 Ergebnis Der Test wurde erfolgreich durchgeführt. 3.1.7.5 Unvorhergesehene Ereignisse während des Testlaufs Es sind keine unvorhergesehenen Ereignisse während des Testlaufs aufgetreten. 3.1.7.6 Nacharbeiten Nacharbeiten waren nicht nötig, da der Testlauf erfolgreich beendet wurde. 3.1.8 Testlauf 3 3.1.8.1 Eingaben Es werden die Daten eines nicht existierenden Benutzers eingegeben. 3.1.8.2 Soll - Reaktion Der Benutzer soll nicht vom Server authentifiziert werden und es soll eine Fehlermeldung ausgegeben werden. 3.1.8.3 Ist Reaktion Der Benutzer wurde nicht vom Server authentifiziert und es wurde eine Fehlermeldung ausgegeben. Die Videoliste wurde nicht aktualisiert. 3.1.8.4 Ergebnis Der Test wurde erfolgreich durchgeführt. 3.1.8.5 Unvorhergesehene Ereignisse während des Testlaufs Es sind keine unvorhergesehenen Ereignisse während des Testlaufs aufgetreten. 3.1.8.6 Nacharbeiten Nacharbeiten waren nicht nötig, da der Testlauf erfolgreich beendet wurde. 13

3.2 /T120/ Empfangen der Videoliste 3.2.1 Zu testende Objekte und Methoden Zu testende Objekte: de.gurus.config.configfilehandler de.gurus.control.control de.gurus.db.databaseconnection de.gurus.gui.mainwin de.gurus.ssl.sslclient.sslclient de.gurus.ssl.sslclient.sslclientinputparser de.gurus.ssl.sslserver.sslconnection de.gurus.ssl.sslserver.sslserverinputparser Zu testende Methoden: de.gurus.ssl.sslclient.sslclient.send() de.gurus.config.configfilehandler.writevalue() de.gurus.config.configfilehandler.getvalues() de.gurus.player.control.control.getvideolistfromserver() de.gurus.player.control.control.connect() de.gurus.control.control.update(commandevent) de.gurus.db.databaseconnection.checkpassword() de.gurus.gui.mainwin.setvideolist() de.gurus.ssl.sslclient.sslclient.run() de.gurus.ssl.sslclient.sslclient.send() de.gurus.ssl.sslclient.sslclientinputparser.parsemsg() de.gurus.ssl.sslclient.sslclientinputparser.parsevideo() de.gurus.ssl.sslserver.sslconnection.run() de.gurus.ssl.sslserver.sslconnection.send() 14

de.gurus.ssl.sslserver.sslserverinputparser.parsemsg() de.gurus.ssl.sslserver.sslserverinputparser.parsevideo() In der Benutzeroberfläche (MainWin) wird auf einen Button zum aktualisieren der Liste geklickt. Nun wird die Funktion getvideolistfromserver() (Control) aufgerufen, welche über die SSL-Verbindung eine Nachricht an den Server schickt. Dieser authentifiziert den Benutzer und schickt eine Nachricht mit den Videos, die der Benutzer sehen darf, zurück. Die Liste mit den Videos aus dieser Nachricht wird nun in der Benutzeroberfläche angezeigt. 3.2.2 Kriterien für erfolgreiche bzw. fehlgeschlagene Testfälle Der Testfall gilt als erfolgreich, wenn die Videoliste erfolgreich angezeigt wird. Erfolg: Videoliste wird angezeigt Fehlgeschlagen ist der Test, wenn keine Videoliste angezeigt wird, obwohl der authentifizierte Benutzer Videos sehen darf. Fehlschlag: Videolist wird nicht angezeigt 3.2.3 Einzelschritte Es muss sichergestellt sein, dass der Benutzer in der Datenbank steht. Sollte dies der Fall sein, kann durch klicken auf einen bestimmten Button die Liste der Videos aktualisiert werden. Diese Liste sollte dann in der Benutzeroberfläche angezeigt werden. 3.2.4 Beobachtungen / Log Das Überprüfen, ob der Test erfolgreich war erfolgt durch nachgucken, ob die Videoliste korrekt angezeigt wird. 3.2.5 Testlauf 1 3.2.5.1 Eingaben Es werden die Daten eines existierenden Benutzers eingegeben und dann auf den Button zum startet der Aktion gedrückt. 15

3.2.5.2 Soll - Reaktion Die Videoliste soll korrekt angezeigt werden. 3.2.5.3 Ist Reaktion Es wurden nur die Videos angezeigt, die der Benutzer auch sehen darf. 3.2.5.4 Ergebnis Der Test wurde erfolgreich durchgeführt. 3.2.5.5 Unvorhergesehene Ereignisse während des Testlaufs Die Videos wurden nicht unbedingt immer sofort in der Liste angezeigt, manchmal musste die Liste ein zweites Mal aktualisiert werden. Dies geschah anscheinend zufällig, die Daten waren in jedem Fall vorhanden und die Liste hat immer reagiert. So hat sie z.b. immer Scrollbalken angezeigt wenn Videonamen zu lang waren, die Videonamen selbst aber in den Ausfallsituationen nicht angezeigt. Dass die Liste immer reagiert hat und der Scrollbalken eingeblendet wurde zeigt, dass die Daten immer vorlagen und die Liste auch aktualisiert wurde. Der Fehler kann hier nicht bei uns liegen, mehrere Versuche zur Umgehung des Problems haben sich als nicht erfolgreich erwiesen. 3.2.5.6 Nacharbeiten Nacharbeiten waren nicht nötig, da der Testlauf erfolgreich beendet wurde. 16

3.3 /T200/ Der Player speichert Videos und der Server streamt Videos (/F110/) 3.3.1 Zu testende Objekte und Methoden Zu testende Objekte: de.gurus.config.configfilehandler de.gurus.control.control de.gurus.db.databaseconnection de.gurus.download.downloadclient de.gurus.gui.mainwin de.gurus.ssl.sslclient.sslclient de.gurus.ssl.sslclient.sslclientinputparser de.gurus.ssl.sslserver.sslconnection de.gurus.ssl.sslserver.sslserverinputparser Zu testende Methoden: de.gurus.config.configfilehandler.writevalue() de.gurus.config.configfilehandler.getvalues() de.gurus.control.control.downloadvideo() de.gurus.control.control.message() de.gurus.control.control.update(commandevent) de.gurus.db.databaseconnection.checkpassword() de.gurus.db.databaseconnection.getvideodata() de.gurus.db.databaseconnection.maywatchvideo() de.gurus.gui.mainwin.setpopuptext() de.gurus.gui.mainwin.updatelocalvideolist() de.gurus.ssl.sslclient.sslclient.send() de.gurus.ssl.sslclient.sslclientinputparser.parsemsg() 17

de.gurus.ssl.sslclient.sslclientinputparser.parsevideo() de.gurus.ssl.sslserver.sslconnection.run() de.gurus.ssl.sslserver.sslconnection.send() de.gurus.ssl.sslserver.sslserverinputparser.parsemsg() de.gurus.ssl.sslserver.sslserverinputparser.parsevideo() In einem Objekt der Klasse Control wird von dem Hauptfenster (MainWin) die Funktion downloadvideo() aufgerufen. Dort wird über einen SSLClient an den Server der Wunsch zum Herunterladen des Videos gesendet. Auf der Serverseite wird diese Nachricht von einer SSLConnection empfangen und von einem SSLServerInputParser ausgewertet. Dieser ü- berprüft mit der Datenbank (DatabaseConnection) ob der Benutzer das Video herunterladen darf und schickt ihm über die SSLConnection entweder die Bestätigung oder den Fehler. Der Client empfängt diese Nachrichten mit dem SSLClient und verarbeitet sie mit dem SSLCLientInputParser, welcher in Control eine Methode startet, die den Empfang des Videos über einen DownloadClient startet, wenn eine Bestätigung vorliegt und trägt das Video mit dem ConfigValueHandler in die lokale Videoliste ein. Als letztes wird die Anzeige der lokalen Videoliste aktualisiert und der Benutzer über ein Popup informiert dass der Download erfolgreich war (oder fehlgeschlagen ist). 3.3.2 Kriterien für erfolgreiche bzw. fehlgeschlagene Testfälle Der Testfall gilt als erfolgreich, wenn ein Video, welches auf dem Server liegt und für dass der Benutzer die nötigen Rechte hat, vom Server herunter geladen wird, lokal gespeichert wird und in die Liste der lokal gespeicherten Videos eingetragen wird. Erfolg: Video wird berechtigterweise herunter geladen und lokal gespeichert Herunter geladenes Video wird in die Liste eingetragen Als fehlgeschlagen gilt der Test, wenn ein Video, das auf dem Server liegt und für das die nötigen Rechte gegeben sind nicht vom Server geladen werden kann, nicht gespeichert wird oder nicht in die Liste eingetragen wird. Zusätzlich ist der Testfall fehlgeschlagen, wenn ein Video herunter geladen werden kann, für dass der Benutzer nicht die nötigen Rechte hat. Fehlschlag: 18

Video kann nicht herunter geladen werden, obwohl man berechtigt ist Video wird nicht gespeichert Video wird nicht in die Liste eingetragen Video kann herunter geladen werden, obwohl man nicht berechtigt ist 3.3.3 Einzelschritte Es muss sichergestellt werden, dass ein Video auf dem Server liegt. Ein Benutzer muss existieren, der die nötigen Rechte haben um das Video herunter zu laden. Außerdem muss eine funktionierende Netzwerkverbindung zwischen Client und Server bestehen und der Benutzer muss auf dem lokalen Rechner die Rechte haben, auf die Festplatte zu schreiben um das Video zu speichern. Sind diese Vorbedingungen gegeben, muss der Benutzer sich am Server anmelden, indem er seine gültigen Anmeldedaten und die Adresse des Servers einträgt und auf den Button zum aktualisieren der Videoliste des Servers klickt. Dann muss er das beschriebene Video in der Liste auswählen und entweder auf den Button zum speichern klicken oder aus dem Menü File -> Save as auswählen. In dem nun geöffneten Dateiauswahldialog muss er nur noch den Speicherort und den Namen des Videos auswählen und bestätigen. Danach muss nur noch auf die Beendigung des Downloads gewartet werden. Anschließend kann das Ergebnis entweder mit dem Produkt oder einem alternativen Videoplayer überprüft werden. 3.3.4 Beobachtungen / Log Der einfachste Weg ist es, manuell zu überprüfen ob das Video korrekt auf dem lokalen Rechner gespeichert wurde. Hierzu kann auch ein beliebiger Videoplayer genutzt werden. Sollte kein Erfolg feststellbar sein, kann man den Datenaustausch über das Netzwerk mit geeigneten Tools (z.b. Wireshark) beobachten. Dies war jedoch in unserem Fall nicht nötig, da ein Erfolg sofort offensichtlich war. 3.3.5 Besonderheiten Zusätzlich zu dem oben beschriebenen Testablauf wird auch geprüft ob ein Video ohne die entsprechende Berechtigung herunter geladen werden kann. Der Testablauf hierfür ist bis auf eine Ausnahme exakt der gleiche wie der schon beschriebene. Der einzige Unterschied ist, dass versucht wird, ein Video herunter zu laden für das man keine Berechtigung hat. 3.3.6 Abhängigkeiten Der Testfall ist von den Testfällen /T100/, /T110/, /T120/ und /T310/ abhängig. 19

- /T100/ damit der Server auf eine Datenbank mit Benutzer- und Videoinformationen zugreifen kann - /T110/ und /T120/ damit der Player sich mit dem Server verbinden und dort authentisieren kann - /T310/ damit der Server Videos streamen kann 3.3.7 Testlauf 1 3.3.7.1 Eingaben Die Benutzerdaten eines vorhandenen Accounts (Name: test, Passwort: 12345678 ) werden eingegeben, genau so die Adresse des Servers (134.169.250.15). Danach wird auf den Button refresh welcher zur Videoliste des Servers gehört geklickt. Die Liste wird aktualisiert und ein Video wird ausgewählt welches man herunter laden darf ( 01.mpg ). Nun wird auf den Button zum Speichern geklickt, in dem öffnenden Dialog der Pfad und Dateiname ausgewählt ( d:\downloaded.mpg ) und dann auf den Button Speichern geklickt. Ist dieser Versuch beendet wird er noch einmal durchgeführt, nun aber mit einem anderen Video, für das man keine Berechtigung hat ( 02.mpg ). 3.3.7.2 Soll - Reaktion Im ersten Versuch soll am unteren Fensterrand soll eine Prozentanzeige hoch laufen, die den Fortschritt des Downloads dokumentiert. Sobald es fertig ist soll eine Erfolgsmeldung in einem Meldungsdialog erscheinen ( SUCCESS: Download of d:\downloaded.mpg completed! 1636352 Byte uploaded! ) und das Video in der Liste auftauchen. Außerdem soll es an dem angegebenen Ort auch unter dem angegebenen Namen im Dateisystem auffindbar sein, vollständig und unbeschädigt und sein. Im zweiten Versuch soll nach dem klicken des Buttons Speichern nur eine Fehlermeldung in einem Meldungsdialog erscheinen ( Error: Permission denied ). 3.3.7.3 Ist Reaktion Die Ausgaben der Versuche waren genau die Erwarteten. Das herunter geladene Video war im ersten Versuch vollständig und fehlerfrei. Im zweiten Versuch wurde nur eine Fehlermeldung angezeigt, dass man nicht berechtigt ist, das Video herunter zu laden. 3.3.7.4 Ergebnis Der Test wurde erfolgreich durchgeführt, das gewünschte Ergebnis ist eingetreten. 20

3.3.7.5 Unvorhergesehene Ereignisse während des Testlaufs Es sind keine unvorhergesehenen Ereignisse während des Testlaufs aufgetreten. 3.3.7.6 Nacharbeiten Nacharbeiten waren nicht nötig, da der Testlauf erfolgreich beendet wurde. 21

3.4 /T210/ Der Player kann spulen 3.4.1 Zu testende Objekte und Methoden Zu testende Objekte: de.gurus.gui.mainwin de.gurus.player.videoplayer Zu testende Methoden: de.gurus.player.videoplayer.setvalue() de.gurus.player.videoplayer.getduration() In der Benutzeroberfläche (MainWin) wird auf eine JProgressBar geklickt, welche den Wert der JProgressBar auf die angeklickte Position setzt und die Funktion VideoPlayer.setValue() aufruft und ihr als Argument die gewünschte Zeitliche Position des Videos übergibt. Diese wird aus dem Verhältnis der geklickten Position zum maximalen Wert der JProgressBar und der Länge des Videos berechnet. 3.4.2 Kriterien für erfolgreiche bzw. fehlgeschlagene Testfälle Der Testfall gilt als erfolgreich, wenn das Video ohne Fehler an die gewünschte Stelle gespult wird und die JProgressBar richtig eingestellt wird. Erfolg: Video wird an die gewünschte Stelle gespult JProgressBar wird richtig eingestellt Als fehlgeschlagen gilt der Test, das Video nicht an die richtige Stelle gespult wird, die JProgressBar falsch eingestellt wird oder ein anderer Fehler auftritt. Fehlschlag: Video kann wird nicht an die richtige Stelle gespult JProgressBar wird nicht richtig eingestellt Ein Fehler tritt auf (z.b. spulen über die Filmgrenze hinaus) 22

3.4.3 Einzelschritte Ein funktionierendes Video muss schon lokal gespeichert und in der Liste vorhanden sein. Dieses muss geladen werden und dann die Spulen-Funktionalität überprüft werden, indem bei laufendem Video und bei Pause auf beliebige Positionen, einschließlich beider Enden, der JProgressBar geklickt wird. 3.4.4 Beobachtungen / Log Das Ergebnis wird nicht gespeichert, sondern ist sofort und ausschließlich an dem Videoablauf zu sehen. 3.4.5 Besonderheiten Zusätzlich zu dem hier beschriebenen Test wurde eine Testklasse geschrieben, welche versuchte die Position des Videos auf einen Wert außerhalb seiner Laufzeit zu setzen. 3.4.6 Abhängigkeiten Der Testfall ist nur von dem Testfall /T390/ abhängig, welcher sicherstellt, dass der Player Videos abspielen kann. 3.4.7 Testlauf 1 3.4.7.1 Eingaben Nachdem ein existierendes Video ( 01.mpg ) geladen wurde, wird erst einmal im Pause- Modus getestet ob man das Video fehlerfrei zu verschiedenen Positionen im Video spulen kann. Hierbei werden auch nicht die Enden der JProgressBar außer Acht gelassen. Anschließend wird das gleiche mit einem laufenden Video getestet. Ein zusätzliches Testprogramm wurde programmiert, welches versuchte das Video auf Werte außerhalb seiner Laufzeit zu setzen (-9223372036854775808, 9223372036854775807). 3.4.7.2 Soll - Reaktion Es sollte keinen Fehler geben. Das Video sollte immer an die angeklickte Position springen und der Wert der JProgressBar richtig eingestellt werden. Wenn versucht wird das Video auf einen negativen Wert zu setzen, soll es auf 0 springen. Wenn versucht wird das Video auf einen Wert zu setzen, der über seine Laufzeit hinausgeht, soll es direkt an das Ende des Videos springen. 23

3.4.7.3 Ist Reaktion Die Reaktionen auf den Testfall sind genau so ausgefallen wie erwartet. Das Video springt immer an die angegebene Position und die JProgressBar wird immer richtig eingestellt. Wenn das Video auf einen Wert außerhalb der Laufzeit gesetzt werden soll, springt es zum jeweils nächsten Punkt des Videos (Anfang/Ende). 3.4.7.4 Ergebnis Der Test wurde erfolgreich durchgeführt, alles funktionierte so wie es sollte. 3.4.7.5 Unvorhergesehene Ereignisse während des Testlaufs Es sind keine unvorhergesehenen Ereignisse während des Testlaufs aufgetreten. 3.4.7.6 Nacharbeiten Nacharbeiten waren nicht nötig, da der Testlauf erfolgreich beendet wurde. 24

3.5 /T310/: Verschlüsselte Videos empfangen und speichern sowie Videos hoch laden (/F120/ & /F400/) 3.5.1 Zu testende Objekte und Methoden de.gurus.control.control de.gurus.db.databaseconnection de.gurus.gui.mainwin de.gurus.ssl.sslclient.sslclient de.gurus.ssl.sslclient.sslclientinputparser de.gurus.ssl.sslserver.sslconnection de.gurus.ssl.sslserver.sslserver de.gurus.ssl.sslserver.sslserverinputparser de.gurus.upload.uploadclient de.gurus.upload.uploadserver de.gurus.upload.uploadserverthread de.gurus.upload.transactionidwatcherul Zu testende Methoden: de.gurus.control.control.uploadvideo() de.gurus.control.control.createevent(); de.gurus.control.control.notifyobservers() de.gurus.control.control.update() de.gurus.control.control.message() de.gurus.db.databaseconnection.checkpassword() de.gurus.db.databaseconnection.addvideo() de.gurus.gui.mainwin.setpopuptext() de.gurus.ssl.sslclient.sslclient.send() de.gurus.ssl.sslclient.sslclientinputparser.parsemsg() 25

de.gurus.ssl.sslclient.sslclientinputparser.parsevideo() de.gurus.ssl.sslserver.sslconnection.send() de.gurus.ssl.sslserver.sslserverinputparser.parsemsg() de.gurus.ssl.sslserver.sslserverinputparser.parsevideo() de.gurus.upload.uploadserver.run() de.gurus.upload.uploadserver.changetransactionmap() de.gurus.upload.uploadserverthread.run() de.gurus.upload.transactionidwatcherul.run() In einem Objekt der Klasse Control wird von dem Hauptfenster (MainWin) ein Video ausgewählt und der Upload-Button aufgerufen. Dort wird über einen SSLClient an den Server der Wunsch zum Upload des Videos gesendet. Auf der Serverseite wird diese Nachricht von einer SSLConnection empfangen und von einem SSLServerInputParser ausgewertet. Dieser überprüft mit der Datenbank (DatabaseConnection) ob der Benutzer ein Video hoch laden darf. Ist das der Fall erstellt er eine neue TransActionID und teilt sie dem UploadServer mit. Dann weist er die Datenbank an (DatabaseConnection) einen neuen Eintrag in der Datenbank anzulegen und sendet schließlich dem SSLClient über die SSLConnection eine Bestätigungsnachricht zurück, welche die TransActionID für den Upload enthält. Im Fehlerfall sendet der SSLServerInputParser eine Fehlermeldung zurück an den SSLClient. Der SSLClient empfängt diese Nachrichte und verarbeitet sie mit dem SSLClientInputParser, welcher bei einer positiven Bestätigungsnachricht einen neuen Thread für den UploadClient öffnet, damit dieser das Video nun parallel zum restlichen Programmlauf hoch laden kann. Dem Upload- Client wird u.a. die übermittelte TransActionID übergeben. Der UploadClient versucht nun sich zum UploadServer zu verbinden. Bei einem erfolgreichen Verbindungsaufbau startet der UploadServer einen neuen UploadServerThread, der die Datei empfängt. Zunächst übermittelt der UploadClient jedoch die TransActionID, welche der UploadServerThread überprüft. Konnte die TransActionID nicht gefunden werden, wird ein Fehler zurück geschickt und der UploadServerThread wird beendet. Bei erfolgreicher Überprüfung sendet er dem Upload- Client eine Bestätigungsmeldung woraufhin dieser dann mit dem Senden der Datei beginnt. Der UploadServerThread löscht nun sofort die TransActionID, damit diese nicht noch einmal verwendet werden kann. Sowohl im Erfolgs- wie auch im Erfolgsfall ruft der UploadClient eine Methode in Control auf, die den Benutzer über die Statusleiste darüber informiert, ob das Hochladen des Videos erfolgen kann oder nicht. Kann das Hochladen erfolgen informiert der UploadClient über diese Methode den Benutzer auch über den Fortschritt des Uploads. 26

Die Datei wird "on-the-fly beim Hochladen verschlüsselt. Konnte das Video nicht vollständig übertragen werden, ruft der UploadServerThread eine Methode der SSLConnection auf, welche das Video von der Festplatte löscht und dann die Datenbank anweist, dass Video wieder aus der Datenbank zu löschen. Der UploadClient informiert den Benutzer über die bereits erwähnte Methode in Control darüber, ob die Datei erfolgreich hochgeladen werden konnte. 3.5.2 Kriterien für erfolgreiche bzw. fehlgeschlagene Testfälle Der Testfall gilt als erfolgreich, wenn ein Video erfolgreich hochgeladen werden konnte und auch ein entsprechender Eintrag in der Datenbank erstellt wurde. Erfolg: Video wird auf den Server geladen und es wird ein neuer Eintrag in der Datenbank erstellt Die TransActionID wird vom Server gelöscht Der Benutzer wird über den Erfolg des Uploads informiert Ist das Video bereits auf dem Server vorhanden wird der Benutzer darüber informiert und der Upload abgebrochen. Als fehlgeschlagen gilt der Test, wenn ein Video nicht erfolgreich hochgeladen wurde und/oder kein entsprechender Eintrag in der Datenbank erstellt wurde, obwohl der vorgesehene Ablauf eingehalten wurde. Des Weiteren gilt der Test als Fehlgeschlagen, wenn das Video nicht erfolgreich hochgeladen werden konnte (z.b. durch Verbindungsabbruch) und die unvollständige Datei nicht von der Festplatte des Servers und aus der Datenbank entfernt wurde. Außerdem gilt der Test als fehlgeschlagen, wenn der Server die TransActionID nicht löscht und diese somit wieder verwendet werden kann. Fehlschlag: Video kann nicht zum Server hochgeladen werden, obwohl man berechtigt ist Video kann nicht in die Datenbank eingetragen werden Benutzer wird nicht informiert 27

Das Video kann nicht vollständig hochgeladen werden und das angefangene Video bleibt auf dem Server Das Video kann nicht vollständig hochgeladen werden und der Datenbankeintrag bleibt bestehen Der Upload wurde begonnen aber die TransActionID wurde nicht vom Server gelöscht, so dass sie weiter verwendet werden kann Es findet ein Upload einen bereits vorhandenen Videos statt, der ein anderen Video auf der Festplatte des Servers überschreibt 3.5.3 Einzelschritte Es muss ein Benutzer existieren, der ein Video hoch laden kann. Des Weiteren darf das Video noch nicht auf dem Server vorhanden sein. Außerdem muss eine funktionierende Netzwerkverbindung zwischen Client und Server aufgebaut sein. Sind diese Vorbedingungen gegeben, muss der Benutzer sich am Server anmelden, indem er seine gültigen Anmeldedaten und die Adresse des Servers einträgt, ein Video auswählt und auf den Button zum Upload des Videos klickt. Zu Testzwecken wird die Klasse Control so modifiziert, dass sie unmittelbar nach Beginn eines Uploads einen zweiten Versuch eines Uploads mit der gleichen TransActionID unternimmt. 3.5.4 Beobachtungen / Log Es sind keine besonderen Methoden vorhanden die die Ergebnisse der Testläufe dokumentieren. Viel mehr sind es die Ergebnisse des Vorgangs, die direkt beobachtet werden können. So können zum einen die Rückmeldungen an den Benutzer betrachtet werden und zum anderen kann die Existenz des hochgeladenen Videos auf dem Server und in der Datenbank direkt überprüft werden. 3.5.5 Besonderheiten Zusätzlich zu dem oben beschriebenen Testablauf wird auch geprüft ob ein Video hochgeladen werden kann, dass schon auf dem Server existiert. Der Testablauf hierfür ist bis auf eine Ausnahme exakt der gleiche wie der schon beschriebene. Der einzige Unterschied ist, dass versucht wird, ein Video hoch zu laden, welches schon auf dem Server existiert. Außerdem wird es noch einen dritten Testlauf geben, der ebenso funktioniert wie der erste mit der Ausnahme, dass der Client während des Uploads geschlossen wird. 3.5.6 Abhängigkeiten Der Testfall ist von den Testfällen /T100/, /T110/, /T130/ und /T330/ abhängig. 28

- /T100/ damit der Server auf eine Datenbank mit Benutzer- und Videoinformationen zugreifen kann - /T110/ und /T130/ damit der Uploader sich mit dem Server verbinden und dort authentisieren kann - /T330/ damit der Server Videos löschen kann 3.5.7 Testlauf 1 3.5.7.1 Eingaben Die Benutzerdaten eines vorhandenen Accounts (Name: test, Passwort: 12345678 ) werden eingegeben, genau so die Adresse des Servers (134.169.250.15). Danach wird ein Video ( 01.mpg ) ausgewählt und anschließend der Button zum Upload des Videos gedrückt. Ist dieser Versuch beendet wird er noch einmal mit demselben Video durchgeführt. 3.5.7.2 Soll - Reaktion Im ersten Versuch soll nach dem Klicken auf den Upload-Button zunächst eine Meldung erscheinen, dass die TransActionID gefunden wurde und der Upload gestartet wurde. Gleich darauf soll eine Fehlermeldung erscheinen, die dem Benutzer mitteilt, dass die TransActionID nicht gefunden wurde. Während des Uploads soll der Benutzer über den Fortschritt des Uploads informiert werden und auch über den Erfolg oder Fehlschlag des Uploads. Im zweiten Versuch soll nach dem Klicken auf den Upload-Button eine Fehlermeldung erscheinen, die dem Benutzer mitteilt, dass das Video bereits vorhanden ist. Im Dritten Versuch soll nach dem Klicken auf den Upload-Button und anschließendem Beenden des Clients der Server den Fehler erkennen und das angefangene Video wieder aus der Datenbank und von der Festplatte löschen. 3.5.7.3 Ist Reaktion Die Ausgaben der Versuche waren genau die Erwarteten. Das Video wurde im ersten Versuch hochgeladen und stand auch in der Datenbank. Der Versuch dieselbe TransactionID erneut zu verwenden schlug fehl. Damit gilt auch dieser Test als erfolgreich. Der zweite Versuch hingegen produzierte nur eine Meldung dass das Video bereits vorhanden ist. Beim dritten Versuch hat der Server den Verbindungsabbruch erkannt und das angefangene Video sowohl von der Festplatte als auch von der Datenbank gelöscht. 3.5.7.4 Ergebnis Der Test wurde erfolgreich durchgeführt, das gewünschte Ergebnis ist eingetreten. 29

3.5.7.5 Unvorhergesehene Ereignisse während des Testlaufs Es sind keine unvorhergesehenen Ereignisse während des Testlaufs aufgetreten. 3.5.7.6 Nacharbeiten Die zu Testzwecken eingefügte Funktion, die unmittelbar nach einem ersten Upload-Vorgang einen zweiten startet (2.Versuch) wurde wieder aus dem Code entfernt. 30

3.6 /T320/ Löschen von Videos auf dem Server (/F140/) 3.6.1 Zu testende Objekte und Methoden Zu testende Objekte: de.gurus.db.databaseconnection de.gurus.db.databaseremovetest Zu testende Methoden: de.gurus.db.databaseconnection.removevideo(string) Im Projektverzeichnis wird zu Testzwecken eine Datei erstellt. Anschließend wird ein Objekt der Klasse DatabaseRemoveTest erzeugt, welchem der Dateiname der zuvor erzeugten Datei übergeben wird. Die Klasse enthält einen Main Methode welche nun versucht die genannte Datei zu löschen. Wurde die Datei manuell eingefügt so existiert kein Datenbank Eintrag und eine entsprechende Meldung wird über die Konsole ausgegeben. Die Methode versucht jedoch in jedem Fall den Löschvorgang auszuführen und benachrichtigt den Benutzer über den erfolgreichen oder fehlgeschlagenen Löschvorgang ( file has been removed from harddisk, bzw. file has not been removed from harddisk ). Wurde die Datei von einem registrierten Benutzer hinzugefügt so wird nach erfolgtem Löschvorgang überprüft ob die Datei noch in der Datenbank vorhanden ist und eine entsprechende Meldung ausgegeben ( video has been removed from database, bzw. video has not been removed from database ). Im Anschluss kann der Vorgang manuell überprüft werden in dem man das entsprechende Verzeichnis untersucht. 3.6.2 Kriterien für erfolgreiche bzw. fehlgeschlagene Testfälle Der Testfall gilt als erfolgreich, wenn ein Video erfolgreich gelöscht wurde. Erfolg: Das Video wird erfolgreich von der Festplatte gelöscht. Das Video wird, falls durch Benutzer hinzugefügt, erfolgreich aus der Datenbank gelöscht. 31

Der Test ist fehlgeschlagen wenn das Video nach erteiltem Löschauftrag noch vorhanden ist. Fehlschlag: Video kann nicht von Festplatte gelöscht werden. Video kann, obwohl dort vorhanden, nicht aus der Datenbank gelöscht werden. 3.6.3 Einzelschritte Es wird sichergestellt dass ein Video manuell und eines über einen Benutzer gespeichert wird. Anschließend wird die Main Methode der Klasse DatabaseRemoveTest() ausgeführt. 3.6.4 Beobachtungen / Log Die Status des Vorgangs werden über die Konsolenausgaben der verwendeten Testklasse (DatabaseRemoveTest()) dokumentiert. Der Erfolg des Löschvorgangs kann zusätzlich manuell erfolgen, in dem das entsprechende Verzeichnis durchsucht wird. 3.6.5 Besonderheiten Der zu testende Löschvorgang unterteilt sich in zwei Aufgaben. Zum einen das Löschen der Datei von der Festplatte, zum anderen das Entfernen des entsprechenden Eintrags aus der Datenbank. Generell soll es möglich sein auch Dateien zu löschen, welche nicht von registrierten Benutzern hinzugefügt worden sind und für die deshalb auch kein Datenbank Eintrag existiert. 3.6.6 Abhängigkeiten Der Testfall ist von Testfällen /T100/ und /T300/ abhängig. - /T100/ damit der Server auf eine Datenbank mit Benutzer- und Videoinformationen zugreifen kann - /T300/ damit ein Video einem Benutzer zugeordnet werden kann. 3.6.7 Testlauf 1 3.6.7.1 Eingaben Als Kommandozeilen Parameter wird der Video Dateiname angegeben ( 03.avi ). 3.6.7.2 Soll Reaktion Die Konsole sollte nun in gleicher Reihenfolge, folgende Ausdrücke ausgegeben: trying to remove: 03.avi 32

database does not contain such a file file has been removed from harddisk Außerdem sollte das Dateiverzeichnis die Datei nicht auflisten. 3.6.7.3 Ergebnis Die Ereignisse entsprachen der Erwartung. 3.6.7.4 Unvorhergesehene Ereignisse während des Testlaufs Es sind keine unvorhergesehenen Ereignisse während des Testlaufs aufgetreten. 3.6.7.5 Nacharbeiten Nacharbeiten waren nicht nötig, da der Testlauf erfolgreich beendet wurde. 3.6.8 Testlauf 2 3.6.8.1 Eingaben Als Kommandozeilen Parameter wird der Video Dateiname angegeben ( 04.avi ). 3.6.8.2 Soll Reaktion Die Konsole sollte nun in gleicher Reihenfolge, folgende Ausdrücke ausgegeben: trying to remove: 04.avi Video does exist in Database video has been removed from database file has been removed from harddisk Außerdem sollte das Dateiverzeichnis die Datei nicht auflisten. 3.6.8.3 Ergebnis Die Ereignisse entsprachen der Erwartung. 3.6.8.4 Unvorhergesehene Ereignisse während des Testlaufs Es sind keine unvorhergesehenen Ereignisse während des Testlaufs aufgetreten. 3.6.8.5 Nacharbeiten Nacharbeiten waren nicht nötig, da der Testlauf erfolgreich beendet wurde. 33

3.7 /T330/ Benutzer anlegen (/F200/) 3.7.1 Zu testende Objekte und Methoden Zu testende Objekte: de.gurus.control.control de.gurus.db.databaseconnection de.gurus.gui.mainwin de.gurus.gui.usermanagementwin de.gurus.ssl.sslclient.sslclient de.gurus.ssl.sslclient.sslclientinputparser de.gurus.ssl.sslserver.sslconnection de.gurus.ssl.sslserver.sslserverinputparser Zu testende Methoden: de.gurus.ssl.sslclient.sslclient.send() de.gurus.player.control.control.connect() de.gurus.player.control.control.adduser() de.gurus.player.control.control.getuserlist() de.gurus.db.databaseconnection.checkpassword() de.gurus.db.databaseconnection.adduser() de.gurus.gui.usermanagementwin.actionperformed() de.gurus.ssl.sslclient.sslclient.run() de.gurus.ssl.sslclient.sslclient.send() de.gurus.ssl.sslclient.sslclientinputparser.parsemsg() de.gurus.ssl.sslclient.sslclientinputparser.parsevideo() de.gurus.ssl.sslserver.sslconnection.run() de.gurus.ssl.sslserver.sslconnection.send() de.gurus.ssl.sslserver.sslserverinputparser.parsemsg() 34

de.gurus.ssl.sslserver.sslserverinputparser.parsevideo() In der Benutzeroberfläche (MainWin) wird ein Fenster zum Bearbeiten der Benutzer aufgerufen (UserManagementWin). Hier werden die Daten für den neuen Benutzer eingegeben und es wird der Befehle zum Benutzer hinzufügen ausgeführt. Die Daten werden über die SSL- Verbindung zum Server geschickt. Hier wird geprüft, ob die Daten gültig sind. Wenn die Daten gültig sind wird der Benutzer in die Datenbank eingetragen und es wird eine Erfolgsmeldung zum Client geschickt. 3.7.2 Kriterien für erfolgreiche bzw. fehlgeschlagene Testfälle Der Testfall gilt als erfolgreich, wenn der Benutzer in die Datenbank eingetragen wurde und der Client darüber informiert wurde. Erfolg: Benutzer wurde erfolgreich in die Datenbank eingetragen Client erhält Erfolgsmeldung Als fehlgeschlagen gilt der Test, wenn der Benutzer nicht in die Datenbank eingetragen werden konnte und es eine Fehlermeldung gab. Fehlschlag: Benutzer konnte nicht erfolgreich in die Datenbank eingetragen werden Fehlermeldung wird ausgegeben 3.7.3 Einzelschritte Die Daten des Benutzers werden zum Server geschickt, auf dem eine Datenbank bereitgestellt werden muss. Sind die Daten gültig werden sie in die Datenbank eingetragen. 3.7.4 Beobachtungen / Log Um das Ergebnis zu überprüfen wird zum einen die Antwort des Servers ausgewertet und zum anderen wird mit Hilfe von SQLite nachgeschaut, ob der Datensatz des Benutzers in die Datenbank eingetragen wurde. 3.7.5 Besonderheiten Die Funktionen zum Zugriff auf die Datenbank und das hineinschreiben des Benutzers wurden mittels JUnit-Tests erfolgreich überprüft. 35

3.7.6 Testlauf 1 3.7.6.1 Eingaben Es werden gültige Testdaten für einen Benutzer eingegeben. 3.7.6.2 Soll - Reaktion Der Benutzer soll in die Datenbank eingetragen werden und es soll eine Erfolgsmeldung ausgegeben werden. 3.7.6.3 Ist Reaktion Der Benutzer wird erfolgreich in die Datenbank eingetragen. Dies wird mit einer Erfolgsmeldung wie erwartet kenntlich gemacht. 3.7.6.4 Ergebnis Der Test wurde erfolgreich durchgeführt, alles funktionierte so wie es sollte. 3.7.6.5 Unvorhergesehene Ereignisse während des Testlaufs Es sind keine unvorhergesehenen Ereignisse während des Testlaufs aufgetreten. 3.7.6.6 Nacharbeiten Nacharbeiten waren nicht nötig, da der Testlauf erfolgreich beendet wurde. 3.7.7 Testlauf 2 3.7.7.1 Eingaben Es werden unterschiedliche ungültige Testdaten für einen Benutzer eingegeben. 3.7.7.2 Soll - Reaktion Der Benutzer soll nicht in die Datenbank eingetragen werden und es soll eine Meldung ausgegeben werden. 3.7.7.3 Ist Reaktion Der Benutzer wird nicht in die Datenbank eingetragen. Dies wird mit einer Meldung wie erwartet kenntlich gemacht. 3.7.7.4 Ergebnis Der Test wurde erfolgreich durchgeführt, alles funktionierte so wie es sollte. 3.7.7.5 Unvorhergesehene Ereignisse während des Testlaufs Es sind keine unvorhergesehenen Ereignisse während des Testlaufs aufgetreten. 36

3.7.7.6 Nacharbeiten Nacharbeiten waren nicht nötig, da der Testlauf erfolgreich beendet wurde. 37

3.8 /T340/ Benutzer löschen (/F210/) 3.8.1 Zu testende Objekte und Methoden Zu testende Objekte: de.gurus.control.control de.gurus.db.databaseconnection de.gurus.gui.mainwin de.gurus.gui.usermanagementwin de.gurus.ssl.sslclient.sslclient de.gurus.ssl.sslclient.sslclientinputparser de.gurus.ssl.sslserver.sslconnection de.gurus.ssl.sslserver.sslserverinputparser Zu testende Methoden: de.gurus.ssl.sslclient.sslclient.send() de.gurus.player.control.control.connect() de.gurus.player.control.control.deleteuser() de.gurus.player.control.control.getuserlist() de.gurus.db.databaseconnection.checkpassword() de.gurus.db.databaseconnection.removeuser() de.gurus.gui.usermanagementwin.actionperformed() de.gurus.ssl.sslclient.sslclient.run() de.gurus.ssl.sslclient.sslclient.send() de.gurus.ssl.sslclient.sslclientinputparser.parsemsg() de.gurus.ssl.sslclient.sslclientinputparser.parsevideo() de.gurus.ssl.sslserver.sslconnection.run() de.gurus.ssl.sslserver.sslconnection.send() de.gurus.ssl.sslserver.sslserverinputparser.parsemsg() 38

de.gurus.ssl.sslserver.sslserverinputparser.parsevideo() In der Benutzeroberfläche (MainWin) wird ein Fenster zum Bearbeiten der Benutzer aufgerufen (UserManagementWin). Hier wird der Benutzer ausgewählt der gelöscht werden soll und es wird der Befehle zum Löschen des Benutzers ausgeführt. Die Befehlt wird samt Namen des Benutzers über die SSL-Verbindung zum Server geschickt. Hier wird der Benutzer aus der Datenbank gelöscht und es wird eine Erfolgsmeldung zum Client geschickt. 3.8.2 Kriterien für erfolgreiche bzw. fehlgeschlagene Testfälle Der Testfall gilt als erfolgreich, wenn der Benutzer aus der Datenbank gelöscht wurde und der Client darüber informiert wurde. Erfolg: Benutzer wurde erfolgreich aus Datenbank gelöscht Client erhält Erfolgsmeldung Als fehlgeschlagen gilt der Test, wenn der Benutzer nicht aus der Datenbank gelöscht werden konnte und es eine Fehlermeldung gab. Fehlschlag: Benutzer konnte nicht erfolgreich aus der Datenbank gelöscht werden Fehlermeldung wird ausgegeben 3.8.3 Einzelschritte Die Daten des ausgewählten Benutzers werden zum Server geschickt. Der Benutzer muss in der Datenbank eingetragen sein. Ist dies der Fall wird er aus der Datenbank gelöscht. 3.8.4 Beobachtungen / Log Um das Ergebnis zu überprüfen wird zum einen die Antwort des Servers ausgewertet und zum anderen wird mit Hilfe von SQLite nachgeschaut, ob der Datensatz des Benutzers aus der Datenbank entfernt wurde. 3.8.5 Besonderheiten Die Funktionen zum Zugriff auf die Datenbank und das löschen eines Benutzers wurden mittels JUnit-Tests erfolgreich überprüft. 39

3.8.6 Testlauf 1 3.8.6.1 Eingaben Es wird ein Benutzer aus der Liste der Benutzer ausgewählt. 3.8.6.2 Soll - Reaktion Der Benutzer soll aus der Datenbank gelöscht werden und es soll eine Erfolgsmeldung ausgegeben werden. 3.8.6.3 Ist Reaktion Der Benutzer wird wie erwartet aus der Datenbank gelöscht. Dies wird mit einer Erfolgsmeldung bestätigt. 3.8.6.4 Ergebnis Der Test wurde erfolgreich durchgeführt, alles funktionierte so wie es sollte. 3.8.6.5 Unvorhergesehene Ereignisse während des Testlaufs Es sind keine unvorhergesehenen Ereignisse während des Testlaufs aufgetreten. 3.8.6.6 Nacharbeiten Nacharbeiten waren nicht nötig, da der Testlauf erfolgreich beendet wurde. 3.9 /T380/ Videos abspielen (/F300/) 3.9.1 Zu testende Objekte und Methoden Zu testende Objekte: de.gurus.gui.mainwin de.gurus.player.videoplayer Zu testende Methoden: de.gurus.player.videoplayer.play() de.gurus.player.videoplayer.pause() de.gurus.player.videoplayer.close() de.gurus.player.videoplayer.mute() 40

de.gurus.player.videoplayer.setvolume() In der Benutzeroberfläche (MainWin) wird ein herunter geladenes Video ausgewählt, danach klickt man den Button load, um das Video im Hauptfenster zu laden. Wenn man noch den Button play klickt, wird das Video abgespielt. 3.9.2 Kriterien für erfolgreiche bzw. fehlgeschlagene Testfälle Der Testfall gilt als erfolgreich, wenn das Video ohne Fehler geladen und abgespielt werden kann und die Steuer-Buttons (play, pause, stop, mute, lautstärke-slider) funktionieren. Erfolg: Video wird an die gewünschte Position geladen. Video wird abgespielt. Videofunktionen Play, Pause und Stop werden richtig ausgeführt. Video kann auf lautlos und wieder laut gestellt werden. Lautstärke des Videos kann mit dem Slider eingestellt werden. Als fehlgeschlagen gilt der Test, das Video nicht an die richtige Position geladen wird, das Video nicht abgespielt wird, oder ein anderer Fehler auftritt. Fehlschlag: Video wird nicht an die richtige Position geladen. Video kann nicht abgespielt werden. Die Steuer-Buttons funktionieren nicht. Ein Fehler tritt auf. 3.9.3 Einzelschritte Ein Video muss erfolgreich schon vom Server herunter geladen werden, und in der lokalen Liste sein 3.9.4 Beobachtungen / Log Das Ergebnis wird nicht gespeichert, sondern ist sofort und ausschließlich an dem Videoablauf zu sehen. 3.9.5 Besonderheiten Es gibt keine Besonderheiten. 41