Frage

Unser Unternehmen schreibt derzeit ein GUI-Automatisierungstesttool für kompakte Framework-Anwendungen.Wir haben zunächst nach vielen Tools gesucht, aber keines davon war das Richtige für uns.

Mit dem Tool können Sie Testfälle aufzeichnen und zu Testsuiten zusammenfassen.Für jede Testsuite wird eine Anwendung generiert, die die zu testende Anwendung startet und Benutzereingaben simuliert.

Im Allgemeinen funktioniert das Tool gut, aber so wie wir es verwenden Fenstergriffe Für Simulationsbenutzereingaben können Sie nicht sehr viele Dinge tun.Beispielsweise ist es für uns unmöglich, den Namen eines Steuerelements zu ermitteln (wir erhalten lediglich die Beschriftung).

Ein weiteres Problem bei der Verwendung von Fensterhandles besteht darin, nach einer Änderung zu suchen.Im Moment simulieren wir einen Klick auf ein Steuerelement und wissen anhand des Ergebnisses, ob die Anwendung zum nächsten Schritt übergegangen ist.

Gibt es eine andere (einfachere) Möglichkeit, solche Dinge zu tun (zum Beispiel die Nachrichtenwarteschlange oder etwas anderes)?

War es hilfreich?

Lösung

Wenn das automatisierte GUI-Testtool Kenntnisse über das Framework hat, in dem die Anwendung geschrieben ist, könnte es diese Informationen nutzen, um bessere oder erweiterte Skripte zu erstellen. TestComplete kennt sich zum Beispiel mit Borlands VCL und WinForms aus.Wenn Sie Anwendungen testen, die mit Windows Presentation Foundation erstellt wurden, bietet dies erweiterte Unterstützung einbauen.

Andere Tipps

Interessantes Problem!Ich habe seit einiger Zeit keine Low-Level-Windows-Programmierung (denken Sie an Win32) mehr durchgeführt, aber hier ist, was ich tun würde.

Verwenden Sie eine Named Pipe und lassen Sie Ihre Anwendung diese abhören.Implementieren Sie mithilfe dieser Named Pipe als Kommunikationsmedium ein wirklich einfaches Protokoll, mit dem Sie die Anwendung nach dem Namen eines Steuerelements anhand seines HWND oder nach anderen nützlichen Dingen abfragen können.Stellen Sie sicher, dass das Protokoll umfangreich genug ist, damit ausreichend Informationen zwischen Ihrer Anwendung und dem Test-Framework ausgetauscht werden.Stellen Sie sicher, dass das Test-Framework nicht zu viel „Sonderverhalten“ der App hervorruft, denn dann würden Sie nicht wirklich die Funktionen testen, sondern Ihr Test-Framework.

Es gibt wahrscheinlich viel elegantere und coolere Möglichkeiten, dies zu implementieren, aber das ist es, woran ich mich aus dem Kopf erinnere, als ich nur einfache Win32-API-Aufrufe verwendete.

Ein weiterer Ansatz, den wir für unser Produkt bei der Arbeit umgesetzt haben, besteht darin, Benutzerereignisse, wie Mausklicks und Tastenereignisse, in einem Ereignisskript aufzuzeichnen.Dies sollte so umfangreich sein, dass Sie es von der Anwendung abspielen lassen können, indem Sie diese Ereignisse künstlich in die Nachrichtenwarteschlange einfügen und dafür sorgen, dass es sich genauso verhält wie bei der ersten Aufzeichnung des Skripts.Sie simulieren grundsätzlich den Benutzer, wenn Sie das Skript abspielen.

Darüber hinaus können Sie jeden wichtigen Status (Benutzerdokument, Einstellungen, Hierarchie der GUI-Steuerelemente usw.) aufzeichnen, einmal beim Aufzeichnen des Skripts und einmal beim Abspielen.Dadurch erhalten Sie zwei Datensätze, die Sie vergleichen können, um beispielsweise sicherzustellen, dass alles beim Alten bleibt.Mit dieser Lösung erhalten Sie Tests, die nicht einfach zu ändern sind (Sie müssen sie neu aufzeichnen, wenn sich Ihre GUI ändert), die aber hervorragende Regressionstests bieten.

(BEARBEITEN:Dies ist auch ein hervorragendes QA-Tool während des Betatests, zum Beispiel:Lassen Sie Ihre Benutzer einfach ihre Aktionen aufzeichnen, und wenn es zu einem Absturz kommt, haben Sie eine gute Chance, das Problem einfach zu reproduzieren, indem Sie einfach das Skript abspielen.)

Viel Glück!

Carl

verwenden NUnitForms.Ich habe sie mit großem Erfolg für Single- und Multi-Threading-Apps verwendet und Sie müssen sich keine Gedanken über Handles und ähnliches machen

Hier sind einige Beiträge über NUnitForms, die es wert sind, gelesen zu werden

NUnitForms und fehlgeschlagene DragDrop-Registrierung – Problem von MTA vs. STA

Kompilierte Anwendungs-Exe-GUI-Tests mit NUnitForms

Endlich habe ich eine Lösung für die Kommunikation zwischen der Testanwendung und der zu testenden Anwendung gefunden: Verwalteter Spion.Es handelt sich im Grunde um eine .NET-Anwendung, die auf ManagedSpyLib aufbaut.

ManagedSpyLib ermöglicht den programmgesteuerten Zugriff auf die Windows Forms-Steuerelemente eines anderen Prozesses.Hierzu werden Window Hooks und Speicherzuordnungsdateien verwendet.

Vielen Dank an alle, die mir geholfen haben, zu dieser Lösung zu gelangen!

Managed Spy bietet keine Lösung für kompakte Framework-Anwendungen.

Das Unternehmen Jamo Solutions (www.jamosolutions.com) erfüllt die Anforderungen für Automatisierungstests auf mobilen Geräten, einschließlich .net Compact Framework-Anwendungen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top