Unit-Tests – ELISMA Datenzugriffsschicht

28 Sep

Die Implementierung der Datenstruktur in Python ist verhältnismäßig weit fortgeschritten. Zeit für Tests, um bei Anpassungen der Implementierung schnell die korrekte Funktionsweise überprüfen zu können. ELISMA speichert die Daten in einer Baum-Datenstruktur. Zum Testen habe ich drei Bäume zusammengestellt, die es ermöglichen, die Operationen auf der Datenstruktur auf Korrektheit zu überprüfen. Die drei Bäume werden bei Ausführung der Tests gemäß der Grafik erstellt.

Daten für die Unit-Tests

Daten für die Unit-Tests

Drei Nutzer, zwei Gruppen und drei kleine Bäume sollen reichen, um alle Funtionen zu testen. Falls mir weitere Konstellationen einfallen oder weitere Methoden hinzukommen, werde ich das Test-Szenario erweitern.

In einer ersten Implementierung bestehen die Berechtigungen lediglich aus dem Lesezugriff. Später werde ich die Tests mindestens um Schreib- und Einfügeberechtigungen erweitern, um diese auf Korrektheit überprüfen zu können.

Zunächst die Funktionen, die ich hiermit testen werde. Statt der Methodennamen gebe ich hier nur an, was diese zurückliefern. Methoden die einen Wahrheitswert zurückliefern sind mit einem Fragezeichen versehen.

  • Aufruf auf einzelnen Knoten
    • Kindknoten
    • Anzahl der Kindknoten
    • Anzahl der Nachfahren
    • Vorfahren
    • Wurzelknoten
    • Knoten ist Blattknoten?
    • Knoten ist Kind von Knoten X?
    • Knoten ist Geschwisterknoten von X?
    • Knoten ist Nachfahre von X?
  • Klassenmethoden
    • Ganzer Baum
    • Wurzelknoten

Die Überprüfung der Methoden stellt sicher, dass die Struktur und die Berechtigungen korrekt erzeugt wurden und die Ergebnisse der Methoden entsprechend der Berechtigungen erzeugt werden. Die Ergebnisse variieren, je nachdem, welcher Nutzer die Methode aufruft.

Da Berechtigungen eine wichtige Rolle spielen, sind Knoten verschiedene Nutzer und Gruppen zur Berechtigung zugeordnet. Beispielsweise der Aufruf zur Anzahl der Kindknoten im Wurzelknoten im mittleren Baum sollte für Nutzer C die Anzahl 1, für Nutzer A 2 und Nutzer B 3 zurückliefern. Nutzer C hat nur auf einem Kindknoten eine Berechtigung, Nutzer A hat duch seine Gruppenzugehörigkeit die Berechtigung auf zwei Kindknoten und Nutzer B die Berechtigung auf allen Kindknoten.

Um die Bäume zu generieren habe ich eine Klassenmethode erstellt, die eine Python Liste der folgenden Struktur erwartet:

[
	{
	'data':
		{
		'name':'1',
		'authorname':'A',
		'users_allowed':['B'],
		'groups_allowed':['GA','GB']
		},
	'children':
		[
			{
			'data':
				{
				'name':'11',
				'authorname':'A',
				'users_allowed':[],
				'groups_allowed':['GB']
				}
			}
		]
	}
]

Diese Struktur ermöglicht eine leichte Erweiterung des Testaufbaus. Die Struktur der Abbildung ist bereits auf diese Weise implementiert und wird scheinbar erfolgreich geladen. Was derzeit noch fehlt, sind die weiter oben beschriebenen Testmethoden. Der Aufbau dieser Methoden sieht folgendermaßen aus: Da ich die erwarteten Ergebnisse kenne, wird das erhaltene mit dem erwarteten Ergebnis verglichen. Stimmt beides überein, ist der Test bestanden. Stimmt es nicht überein, liegt eine Fehlfunktion vor.

Sind alle Tests implementiert, kann ich alle Methoden am Stück testen lassen und sehe anschließend, welche Methode einen Fehler aufweist.

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: