Mein Ansatz für GUI-Tests entwickelt sich weiter, ebenso wie der Branchenkonsens. Aber ich denke, einige Schlüsseltechniken tauchen auf.
Ich verwende je nach Situation eine oder mehrere dieser Techniken (z. B. welche Art von GUI es ist, wie schnell sie erstellt werden muss, wer der Endbenutzer sein wird usw.).
Manuelle Prüfung. Während der Arbeit am Code wird immer die GUI ausgeführt, und Sie müssen sicherstellen, dass sie mit dem Code synchronisiert ist. Sie testen den Teil, an dem Sie arbeiten, manuell und erneut, während Sie daran arbeiten, und wechseln zwischen dem Code und der laufenden Anwendung. Jedes Mal, wenn Sie eine wichtige Arbeit erledigen, geben Sie dem gesamten Bildschirm oder Bereich der Anwendung einen Gesamttest, um sicherzustellen, dass keine Regressionen vorliegen.
Unit Testing. Sie schreiben Tests für Funktionen oder kleine Einheiten des GUI-Verhaltens. Beispielsweise müssen Ihre Diagramme möglicherweise verschiedene Farbtöne basierend auf einer Grundfarbe berechnen. Sie können diese Berechnung in eine Funktion extrahieren und einen Komponententest dafür schreiben. Sie können in der GUI nach einer solchen Logik suchen (insbesondere nach wiederverwendbarer Logik) und diese in diskrete Funktionen extrahieren, die einfacher in Einheiten getestet werden können. Selbst komplexes Verhalten kann auf diese Weise extrahiert und getestet werden. Beispielsweise kann eine Folge von Schritten in einem Assistenten in eine Funktion extrahiert werden, und ein Komponententest kann überprüfen, ob bei einer Eingabe der richtige Schritt zurückgegeben wird.
Komponenten-Explorer. Sie erstellen einen "Explorer" -Bildschirm, dessen einzige Aufgabe darin besteht, alle wiederverwendbaren Komponenten Ihrer GUI anzuzeigen. Auf diesem Bildschirm können Sie schnell und einfach visuell überprüfen, ob jede Komponente das richtige Erscheinungsbild aufweist. Der Komponenten-Explorer ist effizienter als das manuelle Durchlaufen Ihrer gesamten Anwendung, da A) Sie jede Komponente nur einmal überprüfen müssen und B) Sie nicht tief in die Anwendung navigieren müssen, um die Komponente zu sehen, sondern nur anzeigen und Überprüfen Sie es sofort.
Automatisierungstests. Sie schreiben einen Test, der mit dem Bildschirm oder der Komponente interagiert, Mausklicks, Dateneingabe usw. simuliert und bestätigt, dass die Anwendung bei diesen Manipulationen ordnungsgemäß funktioniert. Dies kann als zusätzlicher Sicherungstest nützlich sein, um potenzielle Fehler zu erfassen, die bei Ihren anderen Tests möglicherweise übersehen werden. Ich neige dazu, Automatisierungstests für die Teile der GUI zu reservieren, die am anfälligsten für Brüche sind und / oder äußerst kritisch sind. Teile, bei denen ich so früh wie möglich wissen möchte, ob etwas kaputt ist. Dies kann hochkomplexe interaktive Komponenten umfassen, die anfällig für Unterbrechungen oder wichtige Hauptbildschirme sind.
Diff / Snapshot-Test. Sie schreiben einen Test, der die Ausgabe einfach als Screenshot oder als HTML-Code erfasst und mit der vorherigen Ausgabe vergleicht. Auf diese Weise werden Sie benachrichtigt, wenn sich die Ausgabe ändert. Diff-Tests können hilfreich sein, wenn der visuelle Aspekt Ihrer GUI komplex ist und / oder Änderungen unterworfen ist. In diesem Fall möchten Sie schnelles und visuelles Feedback darüber, welche Auswirkungen eine bestimmte Änderung auf die GUI insgesamt hat.
Anstatt jede mögliche Art von Test hartnäckig anzuwenden, ziehe ich es vor, die Testtechnik basierend auf der Art der Dinge, an denen ich arbeite, auszuwählen. In einem Fall extrahiere ich eine einfache Funktion und teste sie in einer Einheit. In einem anderen Fall füge ich dem Komponenten-Explorer usw. eine Komponente hinzu. Dies hängt von der jeweiligen Situation ab.
Ich habe nicht festgestellt, dass die Codeabdeckung eine sehr nützliche Metrik ist, aber andere haben möglicherweise eine Verwendung dafür gefunden.
Ich denke, die erste Maßnahme ist die Anzahl und Schwere der Fehler. Ihre erste Priorität ist wahrscheinlich eine Anwendung, die ordnungsgemäß funktioniert. Wenn die Anwendung ordnungsgemäß funktioniert, sollten nur wenige oder keine Fehler auftreten. Wenn es viele oder schwerwiegende Fehler gibt, testen Sie vermutlich entweder nicht oder Ihre Tests sind nicht effektiv.
Neben der Reduzierung von Fehlern gibt es noch andere Maßnahmen wie Leistung, Benutzerfreundlichkeit, Zugänglichkeit, Wartbarkeit, Erweiterbarkeit usw. Diese unterscheiden sich je nach Art der von Ihnen erstellten Anwendung, dem Unternehmen, dem Endbenutzer usw.
Dies alles basiert auf meinen persönlichen Erfahrungen und Recherchen sowie auf einem großartigen Bericht über UI-Tests von Ham Vocke .