Vanessa-Automation - ein Tool zum Testen von Anwendungslösungen auf der 1C: Enterprise-Plattform

Nicht von Anfang an


Sie kennen viele Testwerkzeuge, die:


  • Erhalten Sie Schritte in der Gurkensprache direkt nach den Anweisungen des Benutzers?
  • Möchten Sie automatisch Videoanweisungen mit Untertiteln, Black Jack und Elena erstellen?)
  • Erstellen Sie eine * .feature-Datei in Englisch in der rumänischen Benutzeroberfläche für einen Benutzer, der Italienisch spricht?

Dies ist verfügbar und klar (mit Bildern) in diesem Artikel, nicht wechseln ...


Eintrag


Dieser Artikel gibt einen Überblick über das 1C-Anwendungstest-Tool, das im Darm von OpenSource mit dem Namen Vanessa-Automation erstellt wurde . Dieses Projekt ist eine direkte Fortsetzung des Vanessa-Verhaltensprojekts, das in engen Kreisen weithin bekannt ist (die Gabel wurde in Version 1.1.131 erstellt). Übrigens gibt es noch andere Gabeln .


Kontext


Es wäre nicht schön zu glauben, dass jeder Leser dieses Artikels über habr 1C kennt, trotzdem ist Betrug keine Option. Daher werde ich es nicht wagen, fortzufahren, ohne das Verständnis des Lesers für die 1C-Plattform und ihre in der Vanessa-Automatisierung verwendeten Funktionen (im Folgenden va oder Vanessa ) zu verbessern.


Nach der Installation der 1C-Plattform müssen Sie sie im Enterprise- Modus oder im Konfigurator- Modus ausführen.


Abb01


Im Konfigurator werden Konfigurationen entwickelt, und Benutzer im Unternehmen arbeiten mit diesen Konfigurationen: Sie erstellen, bearbeiten und speichern alle Arten solcher Verzeichnisse und Dokumente, füllen die Datenbank und generieren dann Berichte und erneut: Erstellen, Bearbeiten und Speichern ... und so weiter in einer Schleife. Das übliche Szenario für den Entwickler, die Plattform extern zu verwenden, unterscheidet sich jedoch nicht wesentlich vom Benutzer:
Sie starten die erforderliche Konfiguration im Konfiguratormodus und starten dann im Zyklus → etwas entwickeln oder ändern → (1) vom 1C-Konfigurator im Unternehmensmodus (neu) und überprüfen mit ihren eigenen Händen, ob sie entwickelt oder abgeschlossen wurden.


Die Situation wird durch die Funktionalität einer Plattform namens Automated Testing gespeichert, die es ermöglicht, Benutzeraktionen aufzuzeichnen, zu reproduzieren und zu überprüfen. Wie diese Funktionalität das Nutzungsszenario des Entwicklers der Plattform verändert, wird ein Beispiel betrachtet, ABER zunächst die externe Verarbeitung .


Angewandte Konfigurationsobjekte (auch bekannt als Metadaten , auch bekannt als „Konfigurationsobjekte“) , Sie ist Ella Katznelbogen, sie ist Valentina Paniyad )
Beschreiben Sie den Themenbereich und die Namen dieser Objekte sprechen für sich.


Abb02


"Dokumente" spiegeln Geschäftsvorfälle wider, beispielsweise den Wareneingang. "Verzeichnisse" werden benötigt, um beispielsweise den Namen der Gegenpartei 1 Mal einzugeben und dann auszuwählen und nicht jedes Mal erneut einzugeben. Daten werden in den "Registern" gespeichert und virtuelle Tabellen werden darauf aufgebaut, um komplexe Berechnungen durchzuführen und "Berichte" zu generieren. Wir sind also zur Verarbeitung gekommen , mit deren Hilfe die Datenbankinformationen verarbeitet werden (zum Beispiel ist ein Monat für die Buchhaltung oder den verschiedenen Austausch zwischen den Informationsdatenbanken geschlossen), aber wir sind an der Möglichkeit interessiert, sie in eine externe Verarbeitung hochzuladen.


Abb03


Die von 1C bereitgestellten Konfigurationen werden unterstützt (Sie können sie nicht ändern, um das automatische Update nicht zu verlieren), und die externe Verarbeitung ermöglicht es, verschiedene Datenmanipulationen durchzuführen, ohne die Unterstützung zu entfernen, und sie natürlich zu testen!


Erweiterungen

Nach der Veröffentlichung der Plattformversion 8.3.10 wurde es zu Testzwecken möglich, neben der externen Verarbeitung auch Erweiterungen (es handelt sich um Patches) zu verwenden.


Mit einem gewissen Grad an Vereinfachung können wir sagen, dass die externe Verarbeitung 1C technisch gesehen eine Datei mit der Erweiterung epf ist, mit der Sie durch Öffnen im Konfigurator viele Formulare erstellen → Steuerelemente auf den Formularen platzieren und einige Funktionen in den Modulen dieser Formulare programmieren können. Die externe Verarbeitung hat auch ein "gemeinsames" Modul (auch bekannt als "Objektmodul" ) und Layouts, ABER dies ist eine ganz andere Geschichte, und wir kehren zum Testen zurück.


Um die Funktion für automatisiertes Testen zu verwenden, müssen Sie zwei Instanzen von 1C Enterprise ausführen, die erste mit dem Testmanagerschlüssel (/ TESTMANAGER) und die zweite mit dem Testclientschlüssel (/ TESTCLIENT) und eine Verbindung zwischen dem Testmanager und dem Client herstellen. Das Szenario der Verwendung durch den Plattformentwickler lautet also wie folgt:


Abb04


Starten Sie im Konfigurator 1C im Unternehmensmodus mit dem Schlüssel des Testmanagers → im Unternehmen, öffnen Sie va und starten Sie damit eine andere Instanz
1C im Unternehmensmodus mit einem Testclientschlüssel. Die va- Verbindung zwischen dem Manager und dem Testclient wird nach dem Start des Testclients automatisch hergestellt. Der Testclient kann entweder ein Thin Client oder ein Web Client sein.


Total: 1C hat sein Selenium geschrieben, das in die 1C: Enterprise-Plattform integriert ist. Und dieses Selen von 1C hat Vorteile. Beispielsweise hat jedes Steuerelement (auch als Steuerelement bezeichnet) in einem Formular immer einen eindeutigen Namen, der in 99,99% der Fälle im Voraus bekannt ist. Dementsprechend gibt es keine Probleme mit Locators. Um ein Steuerelement zu finden, schreiben Sie einfach:


 = .(,,); 

Befestigen Sie das Material anhand eines Beispiels


Es ist notwendig, eine Konfiguration zu entwickeln, um den Verkauf von Waren beim Drucken von Rechnungen zu berücksichtigen.



Der aufmerksame Betrachter konnte das Design bemerken


  <>  

und Sie haben sich nicht geirrt, ja - Vanessa verwendet ihren Gurkendialekt, der Bedingungen und Zyklen hat. Ich denke, die Idee, der Gurke Bedingungen und Zyklen hinzuzufügen, wurde ungefähr so ​​geboren:


Radiotag

01


02


03


04


05


06


07


08


09


10


11


12


13


14


15


Einige Mitglieder der OpenSource-Community kritisierten diese Entscheidung, aber wenn man Gitter glauben will, waren sie sich über Folgendes einig: Die „menschliche Lesbarkeit“ von Funktionen schadet dieser Funktionalität nicht, und jeder entscheidet, ob er sie verwendet oder nicht.
Über Turbo-Gurke ist ein separater Artikel geplant, bleiben Sie dran.


"BDD on 1C" und ein wenig Geschichte


va , wie wir es jetzt sehen, wurde von seinen Schöpfern anders gesehen. Die gleiche Gurke + Selen bei 1C zu machen, wurde erst entschieden, nachdem sie die offensichtlichsten und kostengünstigsten Optionen getestet hatten. Ab einem bestimmten Punkt wurde klar, dass bei Verwendung von Gurke und Selen diese Tools finalisiert werden müssen, um die erforderlichen Funktionen zum Testen von 1C Application Business-Lösungen zu erhalten. Diese Ausrichtung im Rahmen von OpenSource und den Realitäten der 1C-Welt erschwerte und erweiterte die zeitliche Entwicklung des Projekts. Aus diesem Grund wurde beschlossen, nur die 1C: Enterprise-Plattform zu verwenden.


Zum Beispiel haben wir beim Verkauf von Waren gesehen, wie va funktioniert. Nun wollen wir sehen, wie es implementiert wird.


Schrittprüfung


Das Video „Testen“ zeigt va , in das bereits eine Feature-Datei (im Folgenden als Feature bezeichnet ) geladen und ein Baum von Schritten gebildet wurde. Durch Klicken auf die Schaltfläche "Skripte ausführen" beginnt die Verarbeitung jedes Schritts, d. H. Rufen Sie die Schrittüberprüfungsprozedur auf. Wo sich dieses Verfahren befindet, werde ich anhand eines Beispiels erläutern.


Angenommen, es gibt eine Funktion mit einem Skript:


 :        ""  10     ""  300   ""   3000 

Um die Überprüfung der Schritte dieses Szenarios zu implementieren, müssen Sie eine der Funktion entsprechende externe Verarbeitung erhalten. In va erfolgt dies automatisch über die entsprechende Schaltfläche.


Abb05


Infolgedessen wird das Verzeichnis step_definitions im selben Verzeichnis wie das Feature erstellt, und es wird eine externe Verarbeitung mit demselben Namen wie das Feature erstellt.


 ..\.feature ..\step_definitions\.epf 

Die Verfahren zur schrittweisen Überprüfung befinden sich im Modul für das Verarbeitungsformular.


Abb06


Außerdem lädt und serialisiert va beim Laden eines Features externe Prozesse, um herauszufinden, wie überprüft werden kann, welche Schritte in ihnen (externe Prozesse) implementiert sind. Das folgende Verfahren ist dafür verantwortlich:


Abb07


Die Suchsequenz zum Überprüfen der Schritte lautet wie folgt:


 1.   ,  feature 2.   ,    ,    3.   ,       

Abb08


Für den Fall, dass ein Skript hinzugefügt / gelöscht / geändert wird, kann die externe Verarbeitung der entsprechenden Funktion über dieselbe Schaltfläche "Verarbeitungsvorlagen erstellen und aktualisieren" wieder aufgefüllt werden.


Nachdem die Schrittprüfung einmal implementiert wurde, kann sie in anderen Funktionen verwendet werden ( Wiederverwendung von Schritten ). In diesem Modul des externen Verarbeitungsformulars werden zwei Skriptüberprüfungsverfahren in drei Schritten angezeigt.


Schritte aus der Luft und WYCIWYG


Ein wenig über Funktionalität Automatisiertes Testen der 1C-Plattform. Ich möchte Sie daran erinnern, dass Sie mit automatisierten Tests die reproduzierten Benutzeraktionen aufzeichnen, abspielen und überprüfen können. Tatsächlich handelt es sich um denselben Testclient und Testmanager , nur auf der Clientseite ist der Aktionsprotokolldatensatz des Benutzers aktiviert.


Abb09


Als Ergebnis haben wir eine XML-Datei mit einer Beschreibung der Benutzeraktionen:


 <?xml version="1.0" encoding="UTF-8"?> <uilog xmlns:d1p1="http://v8.1c.ru/8.3/uilog"> <ClientApplicationWindow isMain="true"> <CommandInterface> <CommandInterfaceGroup title="   "> <CommandInterfaceButton title=" "> <click/> </CommandInterfaceButton> </CommandInterfaceGroup> </CommandInterface> </ClientApplicationWindow> <ClientApplicationWindow caption=" "> <Form title=" "> <FormGroup name="" title=" "> <FormButton name="" title=""> <click/> </FormButton> </FormGroup> </Form> </ClientApplicationWindow> <ClientApplicationWindow caption="  ()"> <Form title="  ()"> <FormTable name="" title=""> <FormGroup name="" title=" "> <FormButton name="" title=""> <click/> </FormButton> </FormGroup> <FormField name="" title=""> <closeDropList/> <executeChoiceFromDropList presentation=""/> </FormField> </FormTable> </Form> </ClientApplicationWindow> <ClientApplicationWindow caption=""> <Form title=""> <FormTable name="" title=""> <gotoRow direction="down"> <Field title="" cellText="000000001"/> <Field title="" cellText=""/> </gotoRow> <choose/> </FormTable> </Form> </ClientApplicationWindow> <ClientApplicationWindow caption="  () *"> <Form title="  () *"> <FormTable name="" title=""> <endEditRow cancel="false"/> </FormTable> <FormGroup name="" title=" "> <FormButton name="" title="  "> <click/> </FormButton> </FormGroup> </Form> </ClientApplicationWindow> </uilog> 

Es ist schwer zu sagen, ob die Idee, die Funktionalität zum Konvertieren des Aktionsprotokolls des Benutzers in Skriptschritte zu erstellen, an der Oberfläche liegt, ABER der erste, der diese Idee errät und umsetzt, ist Leonid Pautov ( pr-mex ). Der Arbeitsaufwand kann anhand des Inhalts und der Größe der Bibliothek geschätzt werden, da neben der Übersetzung des Aktionsprotokolls des Benutzers in Gurke auch Ausführungsverfahren und Verfahren zur Überprüfung der Schritte implementiert werden mussten.


Um ein fertiges Skript "aus dem Nichts" zu erhalten, reicht es daher aus, die Benutzeraktionen im Testmanager aufzuzeichnen.


Abb.  10


Reproduzieren Sie im Testclient Benutzeraktionen, z. B. Funktionen, die verbessert werden müssen, oder Fehler, die behoben werden müssen. Schließen Sie die Aufzeichnung der Benutzeraktionen ab. Dies implementiert den Testentwicklungsansatz "WYCIWYG" (Was Sie anklicken, erhalten Sie).


Abb.  11


Schritte wie das Überprüfen des Ergebnisses von Benutzeraktionen in einem Skript können aus der Bibliothek hinzugefügt werden.


Abb12


Detaillierte Schritte und Exportszenarien


Leider besteht das Skript in der Realität aus vielen Schritten, mehr als im folgenden Screenshot.


Abb13


Es gibt mindestens zwei Möglichkeiten, um die Wahrnehmung solcher Szenarien zu erleichtern.


Verschieben Sie zunächst mithilfe der Tabellierung die Schritte, die gruppiert werden müssen, und geben Sie ihnen einen mnemonischen Titel.


Abb14


Zweitens: Machen Sie das Skript präzise und vielseitig und exportieren Sie es. Ich glaube, ich kann diese Funktionalität im Video "Verwenden des Baum-Tags und Schritte aus der Luft" und "Übergeben von Parametern an das Skript" nicht besser beschreiben als Elena.


Videodaten ( 1 , 2 ) werden ebenfalls aus Skripten auf Gherkin erstellt und mithilfe der Engine "AutoVideoInstructions" mit einem Klick in das MP4-Format konvertiert.


Ja, Vanessa kann Videos darüber erstellen, wie Vanessa funktioniert.


AutoVideo


Automatische Videoanweisungen sind das Thema eines separaten Artikels ( hier ist es ), ich kann nur einen kleinen Hintergrund erzählen.


Der Moment der Vorbereitung der Informationsbasis, der Reproduktion von Benutzeraktionen und der Überprüfung dieser Aktionen, d.h. Skriptausführung
ziemlich klare Anweisungen, wenn Sie die Schritte verlangsamen.


Abb15


Das Speichern von Benutzern zum Ansehen der Skriptausführung (woher kommt dieser polizeiliche Humor?) Ist keine Option, aber der Autor hat nicht aufgehört, die Funktionalität zum Erstellen einer HTML-Datei mit Schritten und entsprechenden Screenshots zu implementieren. Er wurde nicht durch die Tatsache aufgehalten, dass bei der Wiedergabe von Benutzeraktionen der Mauszeiger nicht angezeigt wird und es keine Möglichkeit gibt, einen beliebigen Bereich im Formular auszuwählen. Deshalb schrieb er die entsprechenden Dienstprogramme . Auf Wunsch der Benutzer wurde außerdem eine Sprachausgabe hinzugefügt ( Elena ), die mit der Hauptarbeit zur Bildung des Videos mit Untertiteln und dem ursprünglichen musikalischen Hintergrund zu einem anständigen Arbeitsaufwand führte, aber die Anweisungen für das automatische Video waren vorhanden. Momentan werden Auto-Video-Anweisungen in Bezug auf die Synchronisation von Sprachausgabe und Aktionen auf dem Video erheblich optimiert.


Einige langweilige Statistiken


va unterstützt:


  • Versionen der 1C: Enterprise-Plattform ab 8.3.6 und höher (es wird empfohlen, die Plattform 8.3.10 und höher zu verwenden).
  • Verwaltet und als "normale" Formulare (die getestete Konfiguration befindet sich möglicherweise im Kompatibilitätsmodus 8.2 oder höher).
  • Asynchroner Anrufmodus.

Um in einem solchen "Zoo" richtig arbeiten zu können, musste va lernen, sich selbst zu testen. Der Selbsttestbericht sieht ungefähr so ​​aus:


Abb16


Abb17


Skripte für "Selbst" -Tests befinden sich im selben Repository .


Schrittbibliothek


Das va- Paket enthält die Gherkin-Bibliothek mit Standardschritten, mit der Sie alltägliche Aufgaben des automatischen Testens lösen können, z. B. Arbeiten mit der Anwendungsoberfläche (Schaltflächen, Felder, Tabellen usw.), Arbeiten mit Dateien, Betriebssystemen usw. Im Moment sind es mehr als 400 Schritte.


Lokalisierung


Die va- Schnittstelle ist in 20 Sprachen lokalisiert:


RU, am, az, bg, et, fr, ka, de, en, hu, it, lv, lt, mn, pl, ro, sl, es, sv, tr, vi.


Die Lokalisierung va kann in 3 Komponenten unterteilt werden:


  • Schnittstelle (der Standardmechanismus für Synonyme der 1C: Enterprise-Plattform wird verwendet).
  • Nachrichten an den Benutzer (anstelle von Aufrufen von () -Layouts mit Nachrichtenübersetzungen werden verwendet).
  • Übersetzung von Gurkenschritten aus der va- Standardbibliothek. Das heißt, Anstatt den Schritt "Und ich klicke auf die Schaltfläche 'NameKnopki'" in jeder Sprache zu implementieren, wird "Mapping" im entsprechenden Schritt von Gherkin, der bereits auf Russisch implementiert ist, erneut verwendet.
    Auf Englisch wird dieser Schritt sein

 And I click 'ButtonName' button 

Daher können jetzt englischsprachige Benutzer Skripte auf va in Englisch schreiben. Alle Schritte aus der Standardbibliothek werden vom Menschen übersetzt. Das Ergebnis könnte ungefähr so ​​aussehen.


Es ist logisch, dass wir zur Unterstützung einer solchen Lokalisierung zusätzliche Tools für die Arbeit mit Layouts (ein Layout ist so etwas wie eine Excel-Tabelle) zum Einfügen / Löschen von Werten, Sortieren von Zeilen usw. implementieren mussten. direkt in der Quelle (XML-Dateien).


"TDD in 1C", Prüfung von Verfahren und Funktionen (Unit Tests)


Mit va können Sie das "Verhalten" von Prozeduren und Funktionen testen. Es reicht aus, ein ähnliches Skript zu schreiben:


Abb18


Wenn Leser Interesse haben, kann dieses Thema in zukünftigen Artikeln ausführlicher behandelt werden.


Lieferoptionen


Ursprünglich wurde das Projekt nur in Form einer Reihe von epf-Dateien geliefert, die aus der Quelle auf Github zusammengestellt oder als fertige Version heruntergeladen werden konnten. Ab Version 1.2.009 wird va auch als eine epf-Datei geliefert, die alle Bibliotheken, Plugins, Lokalisierungspakete, Video-Assembly-Module usw. enthält. Sozusagen alles in einem.


Diese Version des Frameworks heißt Vanessa-Automation-Single . Es ist gut geeignet für Benutzer, die va nicht ändern möchten , sondern nur verwenden. Diese Bereitstellungsoption eignet sich auch gut für die Aufnahme in andere Konfigurationen oder Erweiterungen (der Vorteil der FreeBSD-Projektlizenz ermöglicht dies).


Von oben nach unten und von unten nach oben


Trotz der Tatsache, dass das Tool ursprünglich für die Implementierung der BDD-Methodik konzipiert wurde (d. H. Wenn Skripte von oben nach unten geschrieben werden, d. H. Basierend auf den Anforderungen des Kunden auf oberster Ebene), hat die Praxis der Verwendung gezeigt, dass Skripte auch von unten nach oben geschrieben werden können. Ein typischer Fall ist, wenn bereits eine vorgefertigte Konfiguration vorhanden ist und Sie diese nur mit Tests abdecken müssen, ohne sich um Methoden kümmern zu müssen .


Moral


Ich hoffe, der Leser hat eine Idee von va als ernstes Testwerkzeug entwickelt (das Schlüsselwort "gebildet"). Wenn ich zu Beginn ausländische Analoga betrachte, übertrifft va sie meiner bescheidenen Meinung nach jetzt. Die Erweiterung der Funktionalität der Arbeit mit Gurken ermöglichte es (versprochen, aber nicht vor Turbo-Gurken implementiert), sowohl den Analysten als auch den Entwickler und Tester in den Entwicklungsprozess einzubeziehen. Ich werde erklären, dass der Analyst ein übergreifendes Skript der obersten Ebene schreibt → Der Entwickler beschreibt dieses Skript auch mithilfe von Exportskripten und er schreibt praktisch nichts außer dem Code (alle erforderlichen UI-Schritte befinden sich bereits in der Bibliothek) → Der Tester fügt Skripte hinzu, um sie aus einem „anderen Blickwinkel“ zu überprüfen. Funktionalität und all das - in einer Feature-Datei , Prost Kameraden!


Bild


PS


Lassen Sie mich diesen Übersichtsartikel abschließen.
Unterstützen Sie das Projekt mit einem freundlichen Wort / Gefällt mir / Kritik (der Projekt-Chat in Gitter ist hier ), die Autoren freuen sich immer.


Vielen Dank für Ihre Aufmerksamkeit!


Referenzen


Source: https://habr.com/ru/post/de418303/


All Articles