Wir möchten automatisierte UI-Tests einrichten und fragen uns, was der beste Ansatz ist, was die potenziellen Fallstricke sind und wie teuer die Einrichtung ist?
Vielen Dank im Voraus.
B
Wir möchten automatisierte UI-Tests einrichten und fragen uns, was der beste Ansatz ist, was die potenziellen Fallstricke sind und wie teuer die Einrichtung ist?
Vielen Dank im Voraus.
B
Der größte Kostenfaktor bei automatisierten Tests ist wahrscheinlich die Zeit. Es gibt eine Reihe sehr teurer Tools, aber auch kostenlose Tools. Selbst die Kosten für ein teures Tool stehen wahrscheinlich in keinem Verhältnis zu den Kosten für die Zeit, die für die ordnungsgemäße Einrichtung automatisierter Tests erforderlich ist. Solange das Management versteht, dass erhebliche Vorlaufkosten erforderlich sind, und bereit ist, diese in Kauf zu nehmen, sollten Sie diese bei der tatsächlichen Automatisierung der Tests berücksichtigen:
Die Automatisierung verursacht langfristige Kosten in Form von Wartungskosten. Denken Sie daran, dass Automatisierte Tests sind Softwareentwicklung . Das bedeutet, dass Sie die gleichen potenziellen Probleme haben wie jede andere Software auch. Das bedeutet auch, dass die gleichen Methoden zur Verbesserung der Wartbarkeit von Software auch für automatisierte Tests gelten. (Aus diesem Grund halte ich all diese "professionellen" Tools, die vbscript anstelle einer richtigen OO-Sprache verwenden, für Müll.)
Automatisiertes Testen hat auch seine eigenen speziellen Probleme mit der Wartbarkeit. Das größte Problem ist, dass Sie eine Benutzeroberfläche statt einer API verwenden. Wenn Sie schon einmal eine instabile API verwenden mussten, können Sie vielleicht nachvollziehen, wie schmerzhaft es ist, ein Programm über eine sich ständig ändernde Benutzeroberfläche laufen zu lassen. Glücklicherweise ist die Lösung für dieses Problem bekannt, wenn auch nicht immer gut implementiert: Object Mapping. Dabei handelt es sich im Grunde um eine Schicht, die auf der einen Seite mit der Benutzeroberfläche und auf der anderen Seite mit dem Code verbunden ist. Die Codeseite bleibt so stabil wie möglich, während die Benutzeroberfläche sich so oft wie nötig ändern kann.
Ein Beispiel aus dem Rahmen, an dem ich arbeite:
public Image GoImage
{
get { return Browser.Image(Find.ById("BtnGo")); }
}
In diesem Beispiel wird WatiN verwendet. Damit schreibe ich Zeilen in Skripte wie GoImage.Click()
und wenn sich die ID des Bild-Tags ändert, ändere ich nicht alle meine Skripte, sondern nur die Zuordnung.
Nicht jeder Test sollte automatisiert werden. Manchmal dauert es länger, einen Test zu automatisieren, als ihn manuell auszuführen. Wenn es sich um einen Test handelt, der nur einmal oder nur wenige Male durchgeführt werden soll, ist es besser, ihn überhaupt nicht zu automatisieren. Sie können dies abmildern, indem Sie Möglichkeiten zur schnellen Erstellung automatisierter Tests schaffen. Gegebenenfalls ist die datengesteuerte Testautomatisierung eine gute Möglichkeit, dies zu tun. Mit unserem Testautomatisierungs-Framework können wir neue Tests erstellen, indem wir etwa ein Dutzend Zeilen in einer Excel-Tabelle ändern.
Sie sollten auch nicht zögern, Testskripte zu erstellen, die nur teilweise automatisiert sind. Dies ist häufig der Fall, wenn Sie die Testschritte automatisieren können, die Verifizierung aber manuell erfolgen muss. Theoretisch könnte man einen Geschwindigkeitsgewinn erzielen, indem man die Automatisierung durch die Benutzeroberfläche fliegen lässt und anhält, während der Benutzer seine Prüfungen durchführt, aber die Psychologie kommt einem dabei in die Quere. Die meisten Leute würden sich abschalten, während die Automatisierung läuft, und genauso viel Zeit benötigen, um herauszufinden, was sie überprüfen sollen, wie wenn sie den gesamten Test manuell durchführen würden.
Wie ich bereits sagte, ist automatisiertes Testen Software-Entwicklung, und so sollten Sie es auch angehen. Hier ist der grundlegendste Entwurf für die Testautomatisierung, den ich gefunden habe:
Sie brauchen etwas, mit dem Sie die Benutzeroberfläche programmatisch steuern können. Das ist der Teil, den kommerzielle Tools in der Regel gut beherrschen, aber in letzter Zeit sind auch Open-Source-Projekte aufgetaucht, die das ebenfalls gut können. Für Windows-Benutzeroberflächen gibt es weiß . Ich habe es nie benutzt, aber ich mag die API. Web-Automatisierung gehört wirklich zu den Open-Source-Tools wie watir y WatiN .
Framework ist ein allgemeiner Begriff für alles, was Sie selbst erstellen müssen. Objektzuordnung, Hilfsfunktionen, datengesteuerte Skriptausführungen. Kommerzielle Tools versuchen, diese Dinge für Sie bereitzustellen, aber ich habe noch nie ein Tool gefunden, das genau das tut, was ich brauche. Hier muss ich immer selbst Hand anlegen. Hier liegt der größte Teil der Wartungsarbeit, weshalb ich Tools, die schwache Sprachen wie vbscript verwenden, so ablehnend gegenüberstehe. Ich ziehe es vor, ein Framework mit .NET zu erstellen.
Sie brauchen etwas, um die Tests tatsächlich durchzuführen. Kommerzielle Tools bieten dies ebenfalls an, und hier sind sie auch gut genug. Aber sie sind wirklich nicht besser als ein Unit-Test-Programm. Ja, NUnit ist für automatisierte UI-Tests genauso nützlich wie für Unit-Tests. Sie können auch recht einfach einen eigenen Test-Runner schreiben.
Sie brauchen eine Möglichkeit, um zu wissen, ob der Test erfolgreich war oder nicht. Die meisten vorhandenen Protokollierungsbibliotheken wie log4n/log4j würden funktionieren. Bei Testläufern ist dies in der Regel ebenfalls integriert. Kommerzielle Tools liefern in der Regel auch gute Ergebnisse, solange Sie proprietäre Formate vermeiden.
Natürlich brauchen Sie die Tests selbst.
Und eine letzte Sache möchte ich noch sagen. Die Testautomatisierung kann die Zeit, die für dieselbe Menge an Tests benötigt wird, reduzieren, aber sie funktioniert besser, wenn Sie die Einstellung haben, mehr Tests in derselben Zeit durchzuführen.
Wir haben erfolgreich automatisierte UI-Tests mit unseren eigenen Tools und Bibliotheken durchgeführt, die auf dem Microsoft UI Automation Framework basieren. Es war eine steile Lernkurve, aber es hat sich gelohnt.
Ich empfehle, sich über die Michael's Automation Stack um zu erfahren, wie Sie Ihren Code strukturieren können. Vielleicht finden Sie auch meine Einführung in die UI-Automatisierung nützlich.
Die Lizenzgebühren für UI-Test-Tools können sein muy teuer. Beachten Sie, dass Visual Studio 2010 die Möglichkeit bietet, Folgendes zu tun UI-Tests was wahrscheinlich eine vergleichsweise günstige Option ist. Ich kann nicht sagen, wie gut sie ist oder nicht ist.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
1 Stimmen
Mögliche Duplikate: stackoverflow.com/questions/120359/ , stackoverflow.com/questions/215458/how-can-i-unit-test-a-gui