IT -Teststrategien, -umsetzung, -technologien

IT -Teststrategien, -umsetzung, -technologien

Posts 1-6 of 6
  • Martin Böhm
    Martin Böhm
    The company name is only visible to registered members.
    Tests mit unterschiedlichen Rollen und Berechtigungen
    Hallo,

    die häufigste Anforderung an eine Anwendung ist heutzutage wohl, dass sie einerseits mehrbenutzerfähig ist und andererseits mit unterschiedlichen Berechtigungen umgehen kann, um damit den Benutzern unterschiedliche Funktionen zugänglich zu machen oder den Zugang zu sperren.

    Was mich interessieren würde, wie geht man bei der Erstellung von Testfällen und der Durchführung von Tests dabei idealerweise vor?

    Mein bisheriger Ansatz war:
    1. User mit unterschiedlichen Rollen definieren.
    2. Testfälle entwickeln, die für jeden User grundsätzlich prüfen ob er bestimmte Prozesse in der Anwendung anstoßen kann. (entspricht quasi einem UseCase "Anmeldung und Authentifizierung")
    3. Für jeden Prozess/Funktion jeweils Testfälle entwickeln, und zwar unter Verwendung eines Users, der dafür berechtigt ist. (entspricht quasi den eigentlichen UCs, und zwar mit der Testvoraussetzung, dass ein dafür berechtigter User verwendet wird)
    4. Für jeden Prozess, der entsprechend des angemeldeten Users konfiguriert wird, werden Testfälle entwickelt, die nur den speziellen Prozess unter Verwendung der speziellen Rolle prüfen. (Prüfung der Funktion, wenn diese sich abhängig von der Berechtigung verhält)

    Das würde ja prinzipiell der Verflechtung von Querschnittsfunktionen in den eigentlichen UseCases entsprechen.

    In der gleichen Reihenfolge wird der Test dann durchgeführt. Denn geht bereits bei den grundsätzlichen Berechtigungen etwas schief, können alle vom Authentifizierungs-UC abhängigen Tests frühzeitig abgebrochen werden.

    Gibt es weitere Möglichkeiten den Testumfang gering zu halten und die Testreihen effizienter durchzuführen?

    Welche best practices gibt es in Zusammenhang mit dem Test von Funktionen unter Berücksichtigung von Berechtigungen und Rollen?

    Viele Dank und Grüße
    Martin Böhm
  • Holger Tietze
    Holger Tietze    Premium Member
    The company name is only visible to registered members.
    Re: Tests mit unterschiedlichen Rollen und Berechtigungen
    Hallo Herr Böhm,

    beim Testen einer Anwendung trennen wir zwischen den funktionalen Tests und den Berechtigungstests. Bei den funktionalen Tests erhalten alle Tester die maximalen Berechtigungen, um hier keine Störeffekte zu produzieren, die ein Testabbruch bedeuten könnten. Das Testendekriterium ist hier dann die Ausführung aller definierten Testfälle.

    Die Berechtigungen werden dann in einem zweiten Testzyklus angegangen. Hier werden den Usern unterschiedliche Rollen gegeben und die Testfälle auf diese Rollen abgestimmt. Hierbei versuchen wir eine erträgliche, handhabbare Menge an Testfälle zu generieren. Als Anhaltspunkt nehmen wir uns die kleinste Einheit aus den Definitionen der Rollen und erstellen dafür sowohl Positivtests als auch Negativtests, d.h. die Rolle 1 beinhaltet die Funktionen A, B und C. Für diese Funktionen erstellen wir Testfälle. Die Rolle 2 hat die Ausprägungen A, C und D. Hierfür werden nur noch für D Testfälle erstellt. Beim Testen werden nun je Rolle alle Testfälle durchgeführt, d.h. A - D. Wenn nun eine Rolle 3 mit B - D besteht, dann wird diese nicht mehr getestet, da durch die vorigen Tests bereits alle Funktionen sowohl durch Positiv- als auch Negativtests getestet wurden.

    Sollten sie eine Anwendung haben, die keine ausreichende Dokumentation des Berechtigungskonzepts und der darin enthaltenen Teilfunktionen hat, dann müssen sie leider den Weg gehen alles zu testen.

    Mit freundlichem Gruß
    Holger Tietze
  • Post visible to registered members
  • Mike Lange
    Mike Lange    Premium Member
    The company name is only visible to registered members.
    Re^2: Tests mit unterschiedlichen Rollen und Berechtigungen
    Hallo,

    der effizienteste Weg mit dieser Situation umzugehen ist die Testautomation.

    Das Testen von Benutzerrechten schließt sich idealerweise an das Funktionale Testen an. Im Funktionalen Test werden bereits alle relevanten Testfälle entwickelt und verskriptet, da zunächst die funktionale Korrektheit sichergestellt werden muss. Voraussetzung für den Berechtigungstest ist, dass alle Testfälle den Status "pass" liefern, Testfälle die den Status "fail" erreichen sind für den Berechtigungstest nicht zu verwenden. Soll nun eine Prüfung auf Berechtigungen erfolgen, müssen die Testskripte aus dem Funktionalen Test ggf. noch um die Benutzerauthentifizierung parametrisiert werden (was in der Regel kein großer Aufwand ist, da für die Funktionalen Tests meist schon mit einer Dummy-Admin-Rolle getestet wird!) Im Anschluss daran wird für jede Rolle ein Nutzer als Testdatum angelegt. Nun kann der Test dahin gehend konfiguriert werden, dass alle funktionalen Testfälle jeweils mit jedem Testnutzer jeder Rolle durchgeführt werden.

    Das Ergebnis dieses Testlaufes (pass/fail) kann 1:1 gegen die Rollen-Rechte-Matrix (permit/prohibit) abgeglichen werden. Jede Kombination mit "pass-permit" und "fail-prohibit" entspricht dabei einer korrekten Implementierung, alle anderen Kombinationen sind als Fehler zu bewerten.

    Viele Grüße,
    Mike Lange
  • Post visible to registered members
  • Martin Böhm
    Martin Böhm
    The company name is only visible to registered members.
    Re^2: Tests mit unterschiedlichen Rollen und Berechtigungen
    Hallo zusammen!

    vielen Dank für die sehr aufschlussreichen Antworten.

    Die Ausführungen von Herrn Tietze finde ich ebenso sehr schlüssig, vorallem wenn man das allgegenwärtige Zeitproblem beim manuellen Testen berücksichtigt. Sicherlich sind auch Testautomatisierungsansätze in diesem Zusammenhang sehr hilfreich; allerdings denke ich, dass damit das Grundproblem beim Testen der Querschnittsfunktionen "Berechtigung und Authorisierung" nicht direkt gelöst wird.

    Vondaher werde ich in Zukunft eine klarere Trennung von Authorisierungstests und Funktionstests über mehrere Teststufen forcieren, sowohl bei manuellen als auch automatisierten Tests.

    Mit freundlichen Grüßen
    Martin Böhm