Was ist expecco?

Aus expecco Wiki (Version 2.x)
Zur Navigation springen Zur Suche springen

Übersicht[Bearbeiten]

expecco + expecco ALM = AIDYMO[Bearbeiten]

expecco ist die Komponente innerhalb der AIDYMO Werkzeugkette, welche der Entwicklung und Ausführung von Automatisierungen (und damit auch Tests) dient. expecco ist eine "Native Client"-Anwendung, welche entweder auf dem Rechner des Testentwicklers oder Testers läuft, oder als "Test-Ausführungs-Knecht" in einer (möglicherweise virtualisierten) Serverfarm oder einem Docker Container installiert wurde. Mit expecco werden Testpläne in einer Testsuite definiert und ausgeführt.

expecco ALM ist eine Serveranwendung mit Webbrowseroberfläche, welche für die Verteilung und ordentliche Ausführung der Automatisierungsaufgaben und Tests innerhalb der Serverfarm sorgt, Testressourcen verwaltet und Nutzungskonflikte vermeidet, Testsuiten und Resultate archiviert und versioniert, den Projektfortschritt beobachtet und berichtet, Benachrichtigungen verschickt etc. Mit "expecco ALM" werden Testläufe automatisch auf "Ausführungs-Knechte" im lokalen Netz oder in einer Cloudumgebung zur Ausführung gebracht und die Resultate abgeholt und archiviert.

Sowohl expecco als auch expecco ALM sind eigenständige Produkte, welche gesondert bestellt, installiert und eingesetzt werden können, doch im Zusammenspiel realisieren sie eine vollautomatisierte Ausführung und Qualitätskontrolle. Beide zusammen werden unter dem Namen AIDYMO vertrieben.

expecco Basissystem (Plattform)[Bearbeiten]

expecco ist ein modulares System, welches aus einer Basisplattform sowie Erweiterungen ("Plugins") besteht. Plugins realisieren domänenspezifische Funktionen und Anbindungen (z.B. Anbindungen an spezielle Hardware, Protokolle oder UI-Technologien).

Das Basissystem umfasst:

  • Laden und Speichern von Projekten (aka. Testsuiten oder Automatisierungen)
  • Anlegen, Bearbeiten und Pflege von Projekten
  • Ausführung
  • Entwicklung mit Singlestep, Breakpoints, Ausführung von Teilsequenzen
  • Inspektoren / Betrachter für verschiedene Datenformate
  • Entwicklung mit "Live changes while the system runs" (i.e. Hotswap von Code, kurze Turnaround Zeiten)
  • Debugging auf hoher (Diagramm-) als auch auf niedriger (Script/Code) Ebene
  • Nahtlose Integration verschiedener Programmiersprachen wie Java, Node.JS, Python, C/C++ u.a.m.
  • Beobachtung der Ausführung, Sammeln von Trace-, Zeit- und Logdaten
  • Sammeln aller Datenflüsse, Nachrichtenpakete und Zwischenergebnisse zur späteren Inspektion
  • Reportgenerierung als Mensch- und Maschinenlesbare Dokumente in verschiedenen Formaten
  • expecco ALM Schnittstelle zu unserem eigenen QM Produkt (up/down load von Projekten, Logdateien, Resultaten und Reports)

Die Ausführung kann sowohl unter Aufsicht und Kontrolle eines Bedieners, als auch komplett unbeobachtet erfolgen. Ersteres wird typischerweise bei der Testentwicklung, letzteres in der Produktionsumgebung der Fall sein, wenn die Tests automatisiert zum Ablauf kommen.

Die automatisierte Ausführung kann durch die Kommandozeile oder durch entfernte Rechner via SOAP, REST oder von einem Mobilgerät bzw. einer Weboberfläche initiiert und kontrolliert werden. Somit kann die Ausführung auch per cron-Job (Unix), scheduled tasks (Windows), Jenkins oder beliebigen anderen Programmen angestossen werden.

Das Basissystem enthält:

  • expecco IDE
  • Bibliotheken - (Standard, ODBC, XML, uam.)
  • Webtest - Browserautomatisierung (Selenium, Webdriver, HTML5, Smart GWT, etc.) für Firefox, IE, Safari, Opera und Chrome Browser
  • Manuelle Tests - (Benutzergeführter Testablauf)
  • Ports - seriell/USB/parallel
  • Anbindungen - (DLL, CSV, etc.)
  • Webservices - (REST, SOAP, RPC)
  • JavaBridge - (Java Code ausführen sowie Code Injection in Java Programme)
  • .NETBridge - (DotNET Code ausführen)
  • NodeJS Bridge ab v19.1 (Node/Javascript Code ausführen)
  • Python Bridge ab v19.2 (Python und Jython Code ausführen)
  • C Bridge ab v22.1 (C und C++ Code ausführen)
  • Automatischer Report
  • Remote Control ab v23.1 (Kontrolle via Browser, Android oder IOS)

expecco ist modular aufgebaut – das Basissystem kann jederzeit durch Plugins erweitert und an Ihren individuellen Bedarf oder an den Projektfortschritt angepasst werden.

Plugins[Bearbeiten]

Erweiterungen ("Plugins") realisieren die Schnittstellen zu verschiedenen UI-Technologien, zu Hard- und Software Schnittstellen, Protokollen sowie Dokumentformaten. Diese Plugins sind z.T. im Basissystem enthalten oder können nach Bedarf bestellt werden. Es ist auch möglich, eigene Plugins zu erstellen.

Zum Beispiel:

  • "Mobile Testing Plugin" für Apps unter iOS und Android
  • GUI Testing für Java-Swing, SWT und andere Java UI-Frameworks
  • GUI Testing für Windows Anwendungen (Windows Automation / UI-Automation)
  • GUI Testing für Qt und andere C/C++ basierte UI-Frameworks
  • GUI Test von VisualWorks Anwendungen
  • GUI Test via VNC
  • Schnittstellen zu CAN-Bus Systemen wie CANoe (Automotive)
  • Schnittstellen zu SomeIP Brokern / Klienten (Automotive)
  • Schnittstellen zu EDIFACT und SWIFT Systemen (B2B, Finance)
  • Schnittstellen zu MQTT und OPC Systemen (Manufacturing, Internet of Things, Automotive)
  • Integration und Ausführung von Functional Mockup Units (FMU)
  • Import von Testspezifikationen (z.B. aus Excel- oder Word-Dokumenten)
  • Schnittstellen zu spezifischen Laborgeräten (Telekom/Automotive)

Typischerweise bestehen Plugins aus zusätzlichen dll- und Blockbibliotheken, welche domänenspezifische Funktionen als "ready-to-use" Bausteine beinhalten. Diese werden dann mit drag & drop in die Testsequenzen eingefügt. Die GUI Plugins beinhalten zusätzliche Recorderfuntionen so dass Benutzerinterationen (z.B. mit einem Mobilgerät) als ablauffähiges Aktionsdiagram aufgezeichnet werden können.

Andere Plugins dienen der Integration in eine existierende QM Infrastruktur:

  • Polarion Plugin, um Tests im Polarion ALM System zusammenzustellen und mit expecco zu automatisieren
  • Quality Center Plugin als Schnittstelle zu HP-QC
  • Jira Plugin, um nach Testläufen Jira-Issues automatisch anzulegen bzw. zu aktualisieren

Verfügbarkeit[Bearbeiten]

expecco und expecco ALM sind verfügbar für Windows und Linux Systeme, sowohl als 32bit als auch als 64bit Version. Eine Version für macOS (64bit) ist in der Beta Testphase und auf Anfrage verfügbar. Versionen für Solaris und andere Unix Systeme können ebenfalls auf Anfrage bereit gestellt werden.

Lizenzierung[Bearbeiten]

Lizenzen für expecco sind verfügbar als Einzelplatz (Nodelock oder Dongle), Floating (mit Hilfe eines Lizenzmanagers/Lizenzservers) oder als Firmenlizenz. expecco kann (mittels Einzelplatz- oder vom Lizenzserver ausgelöster Lizenz) in isolierten Umgebungen, ohne Zugang zum Firmennetz oder Internet eingesetzt werden.

Zu Preisen, Rabattstaffeln und Konditionen kontaktieren Sie bitte eXept.

Architektur[Bearbeiten]

Im Prinzip ist expecco ein "Black Box" Testsystem, welches keine Instrumentierung des getesteten Systems (SUT = "System Under Test") erwartet oder benötigt (d.h. es ist nicht notwendig, das SUT mit speziellem Code zu erweitern oder spezielle Bibliotheken dazu zubinden). Es ermöglicht aber "code injection" bei Java-, .NET- und PythonAnwendungen, wodurch "Grey Box" und "White Box" Tests ebenfalls unterstützt werden.

Testszenarien können in expecco sowohl auf einer hohen Abstraktionsebene als (Aktivitäts-) Diagramme, als "Keyword-Driven" Testsequenzen oder als textuelle Skripte in verschiedenen Programmiersprachen formuliert werden. Skripte können sowohl in expecco selbst, als auch im SUT oder anderen Maschinen ausgeführt werden (z.B. um das SUT zu stimulieren, oder um Last zu generieren).


Folgendes grobes Architekturbild gibt dazu eine Übersicht (nicht alle verfügbaren Plugins sind darin enthalten):

expecco Architektur (nicht alle Plugins dargestellt)

(oder als PDF: Datei:ExpeccoArchitecture1.pdf)

Konzept[Bearbeiten]

Die Grundphilosophie von Expecco ist, daß Testabläufe sowohl von Entwicklern und Programmierern, als auch von Domänenexperten und Analysten erstellt, gewartet und ausgeführt werden können, ohne daß dazu spezielle Programmierkenntnisse notwendig wären. Dabei darf es aber keine Einschränkungen geben, und ein erfahrener Nutzer hat alle Mittel zur Verfügung, um eigenen Code, Scripte und erweiterte Funktionen zu erstellen.

Um beiden Anforderungen gerecht zu werden, können Abläufe in Expecco sowohl als Aktivitätsdiagramm ("Kästchen und Pfeile") als auch als Scriptcode in verschiedenen Programmiersprachen definiert werden. Die ermöglicht einen "Best of both Worlds" Ansatz: einerseits können Nichtprogrammierer auf einer hohen Abstraktionsebene bestehende Aktionsbausteine mittels "Drag & Drop" oder Recording von GUI Aktionen zu komplexen Szenarien verbinden, andererseits ist es möglich, fehlende Funktionsbausteine als Scriptcode zu erstellen, und als Aktionsbaustein für andere Aktionen bereit zu stellen. Wobei "Scriptcode" hier für JavaScript, Python, Java, Shell/Batch bis hin zu C/C++ steht.

"Hardcore" Entwickler können selbstverständlich auch den gesamten Testablauf als Script/Programmcode definieren - allerdings geht dadurch u.U. die Verständlichkeit und modulare Nutzbarkeit für Nichtprogrammierer mehr oder weniger verloren. Wir raten daher im Allgemeinen dazu, Programmcode nur zu verwenden, um Anbindungen an bestehende Frameworks zu kapseln, und den eigentlichen Ablauf als Aktivitätsdiagramm zu formulieren.

In der Praxis wird es zu einer Aufgabenteilung kommen: für die Anbindung an das getestete System (SUT - System under Test) werden oft spezielle Aktionsbausteine benötigt, die ein Programmierer entwickeln wird (z.B. Anbindungen an Protokolle, Hardware oder Dokumentformate). Der Ablauf der Testszenarien wird dann gemeinsam von Entwicklern, Testern und Analysten durch Diagramme auf einer höheren Abstaktionsebene definiert, wobei hierzu kein Programmierknowhow benötigt wird.

Erweiterbar[Bearbeiten]

Eigene Aktionsbausteine können eine große Menge an frei verfügbarem und bereits existierenden Code nutzen. Somit können Anbindungen an Protokolle, Hardware oder Dokumentformate schnell und preisgünstig realisiert werden. Sie können interaktiv Codefragmente in ihre Szenarien einbinden, welche in JavaScript (Node.js/npm), Python, Java (jar-Dateien), DotNET (Assemblies), R (statistische Auswertungen), Gnuplot (Grafiken erstellen) u.a.m. erstellt wurden. Für diese Programmiersprachen gibt es eine große Menge an frei verfügbaren oder auch lizensierbaren Programmpaketen, z.B. in github oder als npm (Node.js) bzw. pip (Python) Pakete.



Copyright © 2014-2024 eXept Software AG