2009-04-14 4 views
3

Wie aus dem Titel der Frage hervorgeht, was ist der beste Weg, Unit-Tests für eine Anwendung vorzumachen, die sich je nach dem aktuell angemeldeten Benutzer unterschiedlich verhält?Was ist der beste Weg, Komponententests für Software durchzuführen, die sich für unterschiedliche Benutzer unterschiedlich verhält?

Auch für Anwendungen, die Informationen über den internen Status verwalten, was ist der beste Weg, um die Tests durchzuführen und alle Tests zu verwalten?

Antwort

2

Wenn Benutzer meinen Sie Systembenutzer z. Windows-Login - dann würde es für Unit-Tests am besten sein, den Code von dieser Abhängigkeit zu entkoppeln.

Damit meine ich, lassen Sie Ihren Code ein internes Benutzerkonzept haben, das einfach in Komponententests eingestellt werden kann. Dann würde der Großteil Ihres Codes nur über dieses interne Konzept wissen und getestet werden können, ohne sich um das echte Login kümmern zu müssen.

Dann wird die zu testende härtere Schicht (die Schicht, die den Systembenutzer abbildet und alle Dinge, die Sie davon ableiten, z. B. Ordnerstandorte, Berechtigungen usw.) auf Ihre interne Anmeldung minimiert. Eine bestimmte Art von Abnahmetests, die mit hohen Logins umgehen kann, kann dann zum Testen dieser Schicht verwendet werden.

+0

Die Anwendung, an der ich gerade arbeite, ist eine ASP.NET-Webanwendung, also basieren die Benutzer auf den anwendungsspezifischen Berechtigungen, aber dies ist definitiv ein Ratschlag für einige der anderen Projekte, an denen ich in der Vergangenheit gearbeitet habe. – rjzii

1

Erstellen Sie separate Tests für die verschiedenen Benutzertypen und simulieren Sie die Protokollierung (oder Protokollierung). Auf diese Weise können Sie für jeden Benutzertyp testen, wie das Verhalten sein soll, z. B. basierend auf der Benutzerberechtigung.

Wenn auch der interne Status der App eine Rolle spielt, müssen Sie Tests für jedes (vernünftige) Szenario erstellen.

+0

Für meine Anwendung basiert das, was Sie sehen und zugreifen können, teilweise auf Ihren Benutzerberechtigungen. Ich bin müde, um die Frage selbst ziemlich generisch zu halten. – rjzii

0

Wenn das Verhalten definiert ist, ist nur der angemeldete Benutzertyp, dann ist es einfach, schreiben Sie einen Test für jeden Benutzertyp [Sie enden mit n Tests; n ist die Anzahl der Benutzertypen].

Wenn es eine Kombination zwischen einem internen Systemzustand und dem Benutzertyp ist, schreiben Sie einen Test für jeden Zustand für jeden Benutzertyp [Sie enden mit n * m test; n ist die Anzahl der Benutzertypen, m ist die Anzahl der internen Systemzustände].

1

Ich nehme an, dass es einen Anbieter gibt, der sagt "dieser Benutzer kann diese Aktion ausführen" oder "für diesen Benutzer führen Sie diese Aktion aus".

Wenn dies der Fall ist, erstellen Sie einfach einen Stub für diesen Anbieter und lassen Sie verschiedene Dinge für die Situationen zurück, die Sie testen möchten.

Wenn es nicht der Fall ist, würde ich einen solchen Anbieter erstellen.

Das gleiche gilt für den Status: Speichern Sie den Status in einer State-Keeping-Klasse und fragen Sie ihn, in welchem ​​Status Sie sich befinden. Erstellen Sie in einer Testumgebung einen Stub dafür.

Natürlich können Sie dann auch Unit die State-Keeping-Klasse testen.

Verwandte Themen