Überlegungen UI-Tests
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Wenn Sie automatisierte Tests in der CI/CD-Pipeline ausführen, benötigen Sie möglicherweise eine spezielle Konfiguration, um Benutzeroberflächentests wie Selenium-, Appium- oder Coded UI-Tests auszuführen. In diesem Artikel werden die typischen Überlegungen zum Ausführen von Benutzeroberflächentests beschrieben.
Voraussetzungen
Machen Sie sich mit Agents vertraut und stellen Sie einen Agent unter Windows bereit.
Kopfloser Modus oder sichtbarer UI-Modus?
Beim Ausführen von Selenium-Tests für eine Web-App können Sie den Browser auf zwei Arten starten:
Headless-Kopfmodus. In diesem Modus wird der Browser wie gewohnt ausgeführt, aber ohne dass Ui-Komponenten sichtbar sind. Obwohl dieser Modus offensichtlich nicht für das Surfen im Web nützlich ist, ist er für die unbeaufsichtigte Ausführung automatisierter Tests in einer CI/CD-Pipeline nützlich. Chrome - und Firefox-Browser können im headless-Modus ausgeführt werden.
Dieser Modus verbraucht im Allgemeinen weniger Ressourcen auf dem Computer, da die Benutzeroberfläche nicht gerendert wird und Tests schneller ausgeführt werden. Daher können potenziell mehr Tests parallel auf demselben Computer ausgeführt werden, um die Gesamtdauer der Testausführung zu reduzieren.
Screenshots können in diesem Modus erfasst und zur Problembehandlung von Fehlern verwendet werden.
Hinweis
Der Microsoft Edge-Browser kann derzeit nicht im headless-Modus ausgeführt werden.
Sichtbarer UI-Modus. In diesem Modus wird der Browser normal ausgeführt, und die Ui-Komponenten sind sichtbar. Beim Ausführen von Tests in diesem Modus unter Windows ist eine spezielle Konfiguration der Agents erforderlich.
Wenn Sie UI-Tests für eine Desktopanwendung ausführen, z. B. Appium-Tests mit WinAppDriver oder Tests der programmierten UI, ist eine spezielle Konfiguration der Agents erforderlich.
Tipp
End-to-End-UI-Tests sind in der Regel sehr lang. Wenn Sie den sichtbaren UI-Modus verwenden, können Sie je nach Testframework möglicherweise keine Tests parallel auf demselben Computer ausführen, da die App im Fokus stehen muss, um Tastatur- und Mausereignisse zu empfangen. In diesem Szenario können Sie Testzyklen beschleunigen, indem Sie Tests parallel auf verschiedenen Computern ausführen. Weitere Informationen finden Sie unter Paralleles Ausführen von Tests für jeden Testrunner und paralleles Ausführen von Tests mithilfe des Visual Studio-Testtasks.
Ui-Tests im sichtbaren UI-Modus
Für Agents ist eine spezielle Konfiguration erforderlich, um UI-Tests im sichtbaren UI-Modus auszuführen.
Sichtbare Benutzeroberflächentests mit von Microsoft gehosteten Agents
Sichtbare Ui-Tests werden in von Microsoft gehosteten Agents nicht unterstützt. Der Test schlägt mit der Fehlermeldung "Element nicht interagierbar" fehl. Von Microsoft gehostete Agents unterstützen headless Browsertests.
Benutzeroberflächentests im Headless Mode mit von Microsoft gehosteten Agents
Von Microsoft gehostete Agents sind vorkonfiguriert für Benutzeroberflächentests und UI-Tests für Web-Apps. Von Microsoft gehostete Agents sind auch mit gängigen Browsern und entsprechenden Webtreiberversionen vorkonfiguriert, die zum Ausführen von Selenium-Tests verwendet werden können. Die Browser und die entsprechenden Webtreiber werden regelmäßig aktualisiert. Weitere Informationen zum Ausführen von Selenium-Tests finden Sie unter UI-Test mit Selenium.
Tests der sichtbaren Benutzeroberfläche mit selbstgehosteten Windows-Agents
Agents, die für die Ausführung als Dienst konfiguriert sind, können Selenium-Tests nur mit headless-Browsern ausführen. Wenn Sie keinen headless-Browser verwenden oder Benutzeroberflächentests für Desktop-Apps ausführen, müssen Windows-Agents für die Ausführung als interaktiver Prozess mit aktivierter automatischer Anmeldung konfiguriert werden.
Wenn Sie Agents konfigurieren, wählen Sie "Nein" aus, wenn Sie aufgefordert werden, als Dienst auszuführen. Anschließend können Sie den Agent mit der automatischen Anmeldung konfigurieren. Wenn Ihre Benutzeroberflächentests ausgeführt werden, werden Anwendungen und Browser im Kontext des Benutzers gestartet, der in den Einstellungen für die automatische Anmeldung angegeben ist.
Wenn Sie Remotedesktop verwenden, um auf den Computer zuzugreifen, auf dem ein Agent mit automatischer Anmeldung ausgeführt wird, führt das einfache Trennen der Remotedesktop-Verbindung dazu, dass der Computer gesperrt wird und alle UI-Tests, die auf diesem Agenten laufen, fehlschlagen könnten. Um einen Fehler zu vermeiden, verwenden Sie auf dem Remotecomputer den Befehl tscon, um die Verbindung mit dem Remotedesktop zu trennen. Zum Beispiel:
%windir%\System32\tscon.exe 1 /dest:console
In diesem Beispiel ist die Zahl „1“ die ID der Remotedesktopsitzung. Diese Anzahl könnte sich zwischen Remotesitzungen ändern, kann aber im Task-Manager angezeigt werden. Um die Suche nach der aktuellen Sitzungs-ID zu automatisieren, erstellen Sie alternativ eine Batchdatei mit dem folgenden Code:
for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (
%windir%\System32\tscon.exe %%s /dest:console
)
Speichern Sie die Batchdatei, und erstellen Sie eine Desktopverknüpfung dazu, und ändern Sie dann die Verknüpfungseigenschaften in "Als Administrator ausführen". Wenn Sie die Batchdatei über diese Verknüpfung ausführen, wird die Verbindung mit dem Remotedesktop getrennt, die Benutzeroberflächensitzung wird jedoch beibehalten und die Ausführung von UI-Tests ermöglicht.
Bereitstellen von Agents auf azure-VMs für Benutzeroberflächentests
Wenn Sie virtuelle Computer (VMs) in Azure bereitstellen, ist die Agentkonfiguration für UI-Tests über das Agentartefakt für DevTest Labs verfügbar.
Festlegen der Bildschirmauflösung
Vor dem Ausführen von UI-Tests müssen Sie möglicherweise die Bildschirmauflösung anpassen, damit Apps ordnungsgemäß gerendert werden. Hierfür ist ein Hilfsprogramm für die Bildschirmauflösung im Marketplace verfügbar. Verwenden Sie diese Aufgabe in Ihrer Pipeline, um die Bildschirmauflösung auf einen Wert festzulegen, der vom Agentcomputer unterstützt wird. Standardmäßig legt dieses Hilfsprogramm die Auflösung auf den optimalen Wert fest, der vom Agentcomputer unterstützt wird.
Wenn die Aufgabe zur Bildschirmauflösung fehlschlägt, vergewissern Sie sich, dass der Agent so konfiguriert ist, dass die automatische Anmeldung aktiviert ist und dass alle Remotedesktop-Sitzungen wie oben beschrieben mit dem Befehl tscon sicher getrennt wurden.
Hinweis
Der Hilfsprogrammtask zur Bildschirmauflösung wird auf dem einheitlichen Build-/Release-/Test-Agent ausgeführt und kann nicht mit dem veralteten Task Funktionstests ausführen verwendet werden. Der Hilfsprogrammtask funktioniert auch nicht für virtuelle Azure-Computer.
Behandeln von Fehlern in UI-Tests
Wenn Sie Benutzeroberflächentests unbeaufsichtigt ausführen, ist das Erfassen von Diagnosedaten wie Screenshots oder Videos nützlich, um den Status der Anwendung zu ermitteln, als der Fehler aufgetreten ist.
Screenshots erstellen
Die meisten Frameworks für Benutzeroberflächentests bieten die Möglichkeit, Screenshots zu erfassen. Die gesammelten Screenshots sind als Anlage zu den Testergebnissen verfügbar, wenn diese Ergebnisse auf dem Server veröffentlicht werden.
Wenn Sie die Visual Studio-Testaufgabe zum Ausführen von Tests verwenden, müssen erfasste Screenshots als Ergebnisdatei hinzugefügt werden, damit sie im Testbericht verfügbar sind. Verwenden Sie dazu den folgenden Code:
Stellen Sie zunächst sicher, dass TestContext in Ihrer Testklasse definiert ist. Beispiel: public TestContext TestContext { get; set; }
Fügen Sie die Screenshotdatei mithilfe von hinzu. TestContext.AddResultFile(fileName); //Where fileName is the name of the file.
Wenn Sie die Aufgabe Testergebnisse veröffentlichen zum Veröffentlichen von Ergebnissen verwenden, können Testergebnisanlagen nur veröffentlicht werden, wenn Sie das Ergebnisformat VSTest (TRX) oder das NUnit 3.0-Ergebnis-Format verwenden.
Ergebnisanlagen können nicht veröffentlicht werden, wenn Sie JUnit- oder xUnit-Testergebnisse verwenden. Dies liegt daran, dass diese Testergebnisformate keine formale Definition für Anlagen im Ergebnisschema haben. Sie können stattdessen einen der folgenden Ansätze verwenden, um Testanlagen zu veröffentlichen.
Wenn Sie Tests in der Buildpipeline (CI) ausführen, können Sie die Aufgabe Kopieren und Veröffentlichen von Buildartefakten verwenden, um alle zusätzlichen Dateien zu veröffentlichen, die in Ihren Tests erstellt wurden. Diese werden auf der Seite Artefakte in Ihrer Buildzusammenfassung angezeigt.
Verwenden Sie die REST-APIs, um die erforderlichen Anlagen zu veröffentlichen. Codebeispiele finden Sie in diesem GitHub-Repository.
Video aufnehmen
Wenn Sie den Visual Studio-Testtask zum Ausführen von Tests verwenden, kann das Video des Tests erfasst werden und steht automatisch als Anlage zum Testergebnis zur Verfügung. Hierzu müssen Sie den Videodatensammler in einer RUNSETTINGS-Datei konfigurieren, und diese Datei muss in den Aufgabeneinstellungen angegeben werden.
Hilfe und Support
- Siehe unsere Seite zur Problembehandlung
- Informieren Sie sich auf Stack Overflow und in der Entwicklercommunity.