Die beste Vorgehensweise für UI-Automatisierungstests besteht darin, so wenig wie möglich zu tun. Benutzeroberflächen ändern sich häufig, was bedeutet, dass Sie Ihre Automatisierung ständig aktualisieren müssen. Im Allgemeinen ist es vorzuziehen, den Produktcode so zu strukturieren, dass automatisierte Tests ohne UI-Automatisierung möglich sind.
Das heißt, Sie können UI Automation nicht immer loswerden. Sie erwähnen Office, also gehe ich davon aus, dass Sie für Windows codieren und .Net verwenden. Ich mache ziemlich viel in meinem aktuellen Job. Hier sind einige der Dinge, die ich gelernt habe.
1) Sehen Sie sich die UIAutomation-Bibliotheken an, die in .Net 3.0 eingeführt wurden. Sie bieten eine umfangreiche und recht einfach zu verwendende Bibliothek für die Automatisierung. (http://msdn.microsoft.com/en-us/library/ms753107.aspx)
2) Laden Sie UISpy herunter (http://msdn.microsoft.com/en-us/library/ms727247.aspx)
3) Machen Sie die Benutzeroberflächen Ihres Produkts automatisierbar.
3a) Wenn es WPF ist, setzen Sie AutomationIDs auf alles.
3b) Versuchen Sie, eindeutige Steuerungs- und Fensterklassennamen zu erstellen (UI-Klassennamen, nicht Quellcode-Klassenname). Wenn Sie nicht wissen, was ich meine, laden Sie UI Spy und sehen Sie sich Windows an. Beachten Sie, wie viele Fenster in verschiedenen Apps den Klassennamen # 32770 haben. Dies ist der Klassenname für ein Windows-Dialogfeld. Jedes Fenster, das den Dialog erweitert und keinen eigenen Namen festlegt, ist standardmäßig so eingestellt. Dies verursacht vom Standpunkt der UI-Automatisierung aus allerlei Kummer.
4) Vermeiden Sie Thread.Sleep () -Anweisungen. Versuchen Sie stattdessen, Kellner zu verwenden (siehe UIAutomation-Dokumente).
5) Mischen Sie NIEMALS den Testcode mit dem UI-Automatisierungscode. Erstellen Sie separate Bibliotheken, um die UI-Automatisierung durchzuführen. Rufen Sie diese Bibliotheken aus Ihren Tests auf. Wenn sich die Benutzeroberfläche ändert, wird das Aktualisieren der Automatisierung erheblich vereinfacht.
6) Registrieren Sie immer einen Listener für ein UI-Ereignis, bevor Sie die Aktion ausführen, die das Ereignis auslösen würde. In der Praxis bedeutet dies, dass Sie mit Threads arbeiten.
6a) Beispiel: Warten Sie nicht auf ein Ereignis "Fenster geöffnet", nachdem Sie auf eine Schaltfläche geklickt haben, um das Fenster zu öffnen. Das Fenster kann sich öffnen, bevor der Kellner registriert ist und die Veranstaltung nie erhält.
7) Nehmen Sie niemals an, dass das gerade geöffnete Fenster das gewünschte ist. In Windows werden möglicherweise alle Arten von Fenstern unerwartet geöffnet.
Ich könnte noch weiter machen, aber das wird ein bisschen lang.