2009-01-27 7 views
6

Ich bin auf der Suche nach automatisierten Regressionstests auf einem ziemlich großen Excel-Add-In, das sich um eine GUI dreht, die aus einigen modalen UserForms mit Standardsteuerelementen besteht.Automatisches Testen von VBA UserForms- Tools und/oder Techniken?

Das Hauptproblem ist, dass die meisten der automatisierten Test-Tools Ich habe sah in (Rational Roboter, AutomatedQA Testcomplete, Network Automation Automate usw.) nicht in vollem Umfang die VBA unterstützen so steuert, dass am Ende ihre Tests auf Wiedergabe von Mausklicks und Tastendrücken sind also nicht wirklich wartbar. Idealerweise benötige ich ein Testwerkzeug, das die VBA-Formularsteuerelemente erkennt, also kann ich sagen "drücke diesen Knopf und warte, bis dieses Listenfeld geändert wird" statt "klicke bei (237, 58) und warte 500 Millisekunden".

Ich dachte auch daran, die Testautomatisierung in das Add-In als VBA zu bauen, aber die meiste Zeit des Benutzers wird mit einem modalen Dialog verbracht, der den VBA im Hintergrund stoppt, so dass das praktisch nicht in Frage kommt.

Mein Frage- hat jemand hier hat keine Erfahrung mit einem automatisierten Testwerkzeug, die

a) Kontrollen VBA Benutzerformular erkennt und mit ihnen interagieren kann zuverlässig

b) hat die Unterstützung für Test-Scripting mit bedingten Verzweigungen und Erfolg/Fehler protokollieren, anstatt nur aufzunehmen und abzuspielen?

Oder weiß jemand eine Art, wie ich das Problem von modalen Dialogen umgehen kann, die VBA-Ausführung unterbrechen, damit ich das Add-In von VBA aus steuern kann?

Ich habe eine Weile damit verbracht, mich in den QA-Foren umzusehen, habe aber dort nichts gefunden, daher wären jegliche Hilfe oder Hinweise wünschenswert.

Danke für Ihre Hilfe,

-Martin

Antwort

2

Ich weiß nicht, von einem Werkzeug, das tut, was Sie sagen, aber haben Sie darüber nachgedacht, aus einer anderen Richtung angreifen?

Ich spekuliere hier ein wenig darüber, wie viel von der Logik in der "normalen" VB/VBA-Klasse so heruntergedrückt werden könnte, dass einzelne Methoden Unit-getestet werden könnten. Vielleicht könnte eine solche Klasse sogar Ereignisse offenlegen, so dass Sie zum Testen das Formular durch eine Testumgebung ersetzen können, die die notwendigen Stimuli bereitstellt und die Antworten zur Überprüfung sammelt.

Es würde nicht die Verbindung des (jetzt sehr leichten) Formulars selbst zur zugrundeliegenden Klasse adressieren, aber es würde zumindest den ungetesteten Bereich minimieren.

Ich denke wirklich nur "laut", aber denkst du, dass das überhaupt funktionieren würde?

+0

Das ist keine schlechte Idee. Ich möchte Änderungen an der Architektur minimal halten, und es wäre eine Menge Programmierung, aber es beseitigt eine Menge des Aufwands, mit der GUI umzugehen. Wir erkunden alternative Wege, könnten aber auf diese Idee zurückkommen. – MLdeS