-
HINTERGRUND
-
Technisches Gebiet
-
Die vorliegende Offenbarung bezieht sich im Allgemeinen auf Verfahren zum Testen von Arbeitsabläufen (workflows) und insbesondere auf Verfahren zum automatischen Erstellen und Ausführen eines Testsystems (test harness) für Arbeitsabläufe.
-
Beschreibung der damit verbundenen Technik
-
Bei Arbeitsabläufen handelt es sich um potenziell komplexe Abfolgen von Komponenten (Knoten) zum Verarbeiten von Daten. Ein Arbeitsablauf ist in der Regel ein gerichteter, azyklischer Graph (directed acyclic graph, DAG), bei dem die Komponenten für gewöhnlich aus vorhandenen Ressourcen gebildet werden und nicht von Grund auf neu aufgebaut werden. Sie können viele Arbeitsablaufknoten umfassen, die jeweils von vielen verschiedenen Entwicklern und Wissenschaftlern implementiert wurden, die unterschiedlichen wissenschaftlichen Disziplinen angehören können.
-
Bei Arbeitsabläufen handelt es sich um Softwareprogramme, die durch Hinzufügen, Entfernen und Modifizieren von Komponenten und/oder durch Hinzufügen und Entfernen von Kanten (edges) zwischen den Komponenten weiterentwickelt werden. Von diesen verschiedenen Evolutionsprozessen führt das Modifizieren bestehender Komponenten nicht zu einer Veränderung des Arbeitsablaufgraphen. Fehler in den Modifikationen können jedoch das erwartete Verarbeitungsverhalten des Graphen stören, indem sie zum Beispiel dazu führen, dass die modifizierte Komponente oder nachgelagerte Datenverarbeitungsprozesse, die von der modifizierten Komponente erzeugt wurden, fehlerhaft sind. Da es sich bei Arbeitsabläufen um Zusammenstellungen bestehender Programme handelt, die mit bestimmten Optionen konfiguriert sind, kann ein relativ kleiner Satz von Programmen viele verschiedene Arbeitsabläufe erzeugen.
-
Der Prozess des Erstellens und Pflegens eines Testsystems für alle Komponenten eines Arbeitsablaufs kann sehr zeitaufwändig sein, und bestimmte Tests können möglicherweise aufgrund fehlender Datenverarbeitungsressourcen nicht erstellt oder ausgeführt werden. Dies wiederum kann dazu führen, dass Fehler auf Bereitstellungsumgebungen übertragen werden, was neben anderen unerwünschten Nebeneffekten zu Instabilität und Produktivitätsverlusten führen kann.
-
KURZDARSTELLUNG
-
Gemäß verschiedenen Ausführungsformen werden eine Datenverarbeitungseinheit, ein nichtflüchtiges, durch einen Computer lesbares Speichermedium und ein Verfahren für das automatische Erstellen und Ausführen eines Testsystems für Arbeitsabläufe bereitgestellt.
-
In einer Ausführungsform umfasst ein auf einem Computer implementiertes Verfahren zum automatischen Erstellen und Ausführen eines Testsystems für einen Arbeitsablauf ein Erstellen eines Arbeitsablaufpakets, das eine Versionskennung und eine Arbeitsablaufgraphen-Definition enthält, sowie ein Erstellen einer Arbeitsablaufinstanz auf der Grundlage von dem Arbeitsablaufpaket. Das Verfahren kann die Arbeitsablaufinstanz ausführen, um Ausgabedaten zu erzeugen. Die Arbeitsablaufinstanz wird mit den Ausgabedaten als Testarchiv gespeichert. Eine oder mehrere Komponenten eines aktualisierten Arbeitsablaufpakets werden mit dem Testarchiv getestet. Es wird eine Anzeige ausgegeben, ob das Testen des aktualisierten Arbeitsablaufpakets bestanden oder nicht bestanden wurde.
-
In einigen Ausführungsformen umfasst das Verfahren ferner ein Erstellen des Arbeitsablaufpakets mit Informationen über eine Transformationslogik für jeden Knoten.
-
In einigen Ausführungsformen umfasst die Anzeige Ergebnisse jedes Tests, der auf jeder der ein oder mehreren Komponenten durchgeführt wurde.
-
In einigen Ausführungsformen umfasst das Verfahren ferner ein Erzeugen der Ausgabedaten der Arbeitsablaufinstanz durch (a) Ausführen eines oder mehrerer ausgewählter Teilgraphen aus einer Mehrzahl von Teilgraphen des Arbeitsablaufs, um Ausgabedaten zu erzeugen, und/oder (b) Befüllen anderer Teilgraphen aus der Mehrzahl von Teilgraphen mit Ausgabedaten von Teilgraphen aus einer zuvor erzeugten Arbeitsablaufinstanz.
-
In einigen Ausführungsformen umfasst das Testen eine Mehrzahl von Tests, die einen Eingabedatentest, einen Datenbereitstellungstest, einen Ausführungstest und einen Ausgabevergleichstest aufweisen.
-
Wenn einer der Mehrzahl von Tests für eine bestimmte Komponente fehlschlägt, wird in einigen Ausführungsformen eine Fehleranzeige sowohl für die bestimmte Komponente als auch für den Arbeitsablauf bereitgestellt. In einigen Ausführungsformen wird jeder der Mehrzahl von Tests der Reihe nach ausgeführt, wobei durch ein Nichtbestehen eines der Mehrzahl von Tests das Testen beendet und eine Fehleranzeige ausgegeben wird.
-
In einigen Ausführungsformen umfasst das Verfahren ferner ein Zuordnen einer Testspezifikation zu dem Testarchiv, wobei die Testspezifikation definiert, welche Ausgabedaten von der einen oder den mehreren Komponenten zu dem Testarchiv hinzugefügt werden sollen.
-
In einigen Ausführungsformen umfasst das Verfahren ferner ein Zuordnen einer Testspezifikation zu dem Testarchiv, wobei die Testspezifikation ein individuelles Anpassen des Testens ermöglicht und Definitionen für Bestehen und Nichtbestehen bereitstellt.
-
In einigen Ausführungsformen umfasst das Verfahren ferner ein Zulassen zusätzlicher Programme, die in der Testspezifikation für ein ausgewähltes Testen der einen oder mehreren Komponenten verwendet werden.
-
In einigen Ausführungsformen umfasst das Verfahren ferner ein erneutes Erzeugen des Testarchivs auf der Grundlage von einer Instanz des aktualisierten Arbeitsablaufpakets.
-
Gemäß verschiedenen Ausführungsformen umfasst ein auf einem Computer implementiertes Verfahren zum automatischen Erstellen und Ausführen eines Testsystems für einen Arbeitsablauf ein Erstellen eines Arbeitsablaufpakets, das eine Versionskennung, eine Arbeitsablaufgraphen-Definition und eine Transformationslogik für jede der einen oder mehreren Komponenten des Arbeitsablaufs enthält. Es wird eine Arbeitsablaufinstanz auf der Grundlage von dem Arbeitsablaufpaket erstellt, und die Arbeitsablaufinstanz wird ausgeführt, um Ausgabedaten zu erzeugen. Die Arbeitsablaufinstanz wird mit den Ausgabedaten als Testarchiv gespeichert, und die eine oder mehrere Komponenten eines aktualisierten Arbeitsablaufpakets werden mit dem Testarchiv getestet. Das Testen umfasst eine Mehrzahl von Tests, die einen Eingabedatentest, einen Datenbereitstellungstest, einen Ausführungstest und einen Ausgabevergleichstest aufweisen. Es wird eine Anzeige ausgegeben, ob das Testen des aktualisierten Arbeitsablaufpakets bestanden oder nicht bestanden wurde. Jeder der Mehrzahl von Tests wird der Reihe nach ausgeführt, wobei durch ein Nichtbestehen eines der Mehrzahl von Tests das Testen beendet und eine Fehleranzeige ausgegeben wird.
-
Mittels der hier erläuterten Konzepte werden ein System und ein Verfahren bereitgestellt, die die derzeit verwendeten Ansätze zum Testen von Arbeitsabläufen verbessern. Das hier erläuterte System und die hier erläuterten Verfahren können die Leistung der Ausführung von Arbeitsabläufen verbessern und Regressionen reduzieren, die durch ein Modifizieren von Arbeitsabläufen verursacht werden, indem wie hier beschrieben ein Testsystem automatisch erstellt und ausgeführt wird.
-
Diese und andere Funktionen werden aus der folgenden detaillierten Beschreibung veranschaulichender Ausführungsformen davon ersichtlich, die in Verbindung mit den beigefügten Zeichnungen zu lesen ist.
-
Figurenliste
-
Die Zeichnungen zeigen veranschaulichende Ausführungsformen. Sie zeigen nicht alle Ausführungsformen. Andere Ausführungsformen können zusätzlich oder stattdessen verwendet werden. Details, die offensichtlich oder unnötig sind, können aus Platzgründen oder zur besseren Veranschaulichung weggelassen werden. Einige Ausführungsformen können mit zusätzlichen Komponenten oder Schritten und/oder ohne alle der gezeigten Komponenten oder Schritte durchgeführt werden. Wenn dieselbe Ziffer in verschiedenen Zeichnungen erscheint, bezieht sie sich auf dieselben oder gleichartige Bauteile oder Schritte.
- 1 zeigt eine Darstellung von Arbeitsabläufen und deren Ausführung gemäß einer beispielhaften Ausführungsform.
- 2 zeigt eine Darstellung des Erstellens eines Testarchivs, gemäß einer beispielhaften Ausführungsform.
- 3 zeigt eine Darstellung von Eingaben und Ausgaben für ein Erstellen und Ausführen eines Testsystems für Arbeitsabläufe, gemäß einer beispielhaften Ausführungsform.
- 4 zeigt einen Ablaufplan eines Systems zum Erstellen und Ausführen eines Testsystems für Arbeitsabläufe gemäß einer beispielhaften Ausführungsform.
- 5 zeigt einen Ablaufplan von Vorgängen beim Erstellen und Ausführen eines Testsystems für Arbeitsabläufe gemäß einer beispielhaften Ausführungsform.
- 6 zeigt eine Darstellung eines funktionellen Blockschaubilds einer speziell konfigurierten Computerhardware-Plattform, die zur Implementierung eines Systems zum Erstellen und Ausführen eines Testsystems für Arbeitsabläufe verwendet werden kann, gemäß einer beispielhaften Ausführungsform.
-
AUSFÜHRLICHE BESCHREIBUNG
-
In der folgenden ausführlichen Beschreibung werden zahlreiche spezifische Einzelheiten anhand von Beispielen dargelegt, um ein umfassendes Verständnis der relevanten Lehren bereitzustellen. Es sollte jedoch klar sein, dass die vorliegenden Lehren auch ohne diese Einzelheiten angewandt werden können. In anderen Beispielen werden bekannte Verfahren, Vorgänge, Komponenten und/oder Schaltkreise auf einer relativ hohen Ebene und ohne Einzelheiten beschrieben, um Aspekte der vorliegenden Lehren nicht unnötig zu überdecken.
-
Sofern nicht ausdrücklich anders angegeben und wie aus der folgenden Beschreibung und den Ansprüchen ersichtlich, sollte beachtet werden, dass sich die in den Beschreibungen der Spezifikation verwendeten Begriffe wie „Verarbeiten“, „Datenverarbeitung“, „Berechnen“, „Ermitteln“ oder dergleichen auf die Aktion und/oder Prozesse eines Computers oder Datenverarbeitungssystems oder einer ähnlichen elektronischen Datenverarbeitungseinheit beziehen, welche die Daten, die als physikalische, zum Beispiel elektronische, Größen in den Registern und/oder Speichern des Datenverarbeitungssystems dargestellt werden, manipuliert und/oder in andere Daten umwandelt, die in ähnlicher Weise als physikalische Größen in den Speichern, Registern oder anderen Einheiten des Datenverarbeitungssystems zum Speichern, Übertragen und Anzeigen von Informationen dargestellt werden.
-
Wie hierin verwendet, bezieht sich der Begriff „Arbeitsablauf“ auf gerichtete azyklische Graphen, wobei die Knoten Rechenvorgänge, Aufgaben oder Transformationen darstellen und Kanten Abhängigkeiten zwischen den Arbeitsablaufknoten anzeigen.
-
Wie hierin verwendet, bezieht sich der Begriff „Arbeitsablaufknoten“ auf eine Anwendung oder einen Dienst, der Teil eines Arbeitsablaufs ist.
-
Wie hierin verwendet, bezieht sich der Begriff „Transformationslogik“ auf die Informationen, die es ermöglichen, die durch den Knoten definierte Transformation durchzuführen. Zum Beispiel kann es sich bei der Transformationslogik um ein bestimmtes Skript handeln.
-
Wie hierin verwendet, bezieht sich der Begriff „Komponente“ auf einen Knoten im Arbeitsablaufgraphen.
-
Wie hierin verwendet, bezieht sich der Begriff „Testsystem“ auf eine Sammlung von Software und Testdaten, die so konfiguriert ist, dass sie eine Programmeinheit testet (z.B. ein von einer Komponente des Arbeitsablaufgraphen bereitgestelltes Skript), indem sie die Programmeinheit unter verschiedenen Bedingungen ausführt und ihr Verhalten und ihre Ausgaben verfolgt.
-
Wie hierin verwendet, bezieht sich der Begriff „Regression“ auf einen Softwarefehler, der dazu führt, dass eine Funktion nach einem bestimmten Ereignis, in der Regel einer Änderung des Codes, nicht mehr wie vorgesehen funktioniert.
-
Der Begriff „Regressionstest“ kann sowohl den gesamten Testprozess als auch den einen oder mehrere spezifische Tests im Testprozess betreffen. Zur Verdeutlichung bezieht sich der wie hierin verwendete Begriff „Regressionstest“ auf den gesamten Prozess des Ermittelns, ob eine Änderung in einem Arbeitsablauf zu einer Regression geführt hat.
-
Wie hierin verwendet, bezieht sich der Begriff „Arbeitsablaufpaket“ auf die Spezifikation eines Arbeitsablaufs, einschließlich seiner Komponenten, der Verbindungen, der Eingabedaten und dergleichen.
-
Wie hierin verwendet, bezieht sich der Begriff „Arbeitsablaufinstanz“ auf eine bestimmte Ausführung eines Arbeitsablaufpakets und kann die Dateien enthalten, die von Aufgaben der Arbeitsablaufknoten erzeugt werden.
-
Wie hierin verwendet, bezieht sich der Begriff „Bündel“ (bundle) auf eine Dateisystem-Verzeichnisstruktur, in der die erforderlichen Dateien, Komponenten-Ausgabeorte und dergleichen Elemente innerhalb der Struktur darstellen, oder bei einem „Bündel“ kann es sich um eine Datei handeln, die URLs (Uniform Resource Locators, einheitliche Ressourcenzeiger) umfasst, die auf Datendateien und Komponenten-Ausgabeorte verweisen, oder bei einem „Bündel“ kann es sich um eine Kombination aus einer Dateisystem-Verzeichnisstruktur und URLs handeln.
-
Wie hierin verwendet, bezieht sich der Begriff „Plattform“ auf einen Satz von Rechenressourcen, die zum Ausführen eines Arbeitsablaufs verwendet werden können, zum Beispiel die Cloud, Cluster oder dergleichen.
-
Wie im Folgenden näher erläutert, bezieht sich die vorliegende Offenbarung im Allgemeinen auf Verfahren und Systeme, um eine Darstellung eines Arbeitsablaufs und seiner Ausführung zu definieren, die Daten (Eingabe/Ausgabe) und Transformationslogik explizit mit dem Arbeitsablaufgraphen verbindet. Bei Aspekten der vorliegenden Offenbarung kann diese Darstellung verwendet werden, um automatisch Regressionstests der Komponenten im Arbeitsablaufgraphen auszuführen. Dies kann erreicht werden, indem eine bestimmte Darstellung einer Arbeitsablaufausführung als Regressionstestarchiv definiert und mit der Definition des Arbeitsablaufs verknüpft wird.
-
Der Regressionstestprozess kann vier Tests für jede Arbeitsablaufkomponente umfassen sowie einen Test, der sicherstellt, dass die Arbeitsablaufsyntax gültig ist. Die Komponenten-Regressionstests umfassen einen Eingabedatentest, einen Datenbereitstellungstest, einen Ausführungstest, und einen Ausgabevergleichstest. Der Eingabedatentest ermittelt, ob alle Komponentenerzeuger (d.h. die Komponenten, die Eingabedaten für die zu testende Komponente erzeugen) vorliegen und ob für sie Testdaten im Testarchiv vorhanden sind. Dieser Test ermittelt ferner, ob die erforderlichen statischen Eingabedateien im Testarchiv vorhanden sind. Der Datenbereitstellungstest ermittelt, ob die von einer bestimmten Komponente benötigten spezifischen Dateien im Testarchiv vorliegen. Der Ausführungstest ermittelt, ob die aktuelle Definition der Komponente erfolgreich auf den Eingabedaten ausgeführt wird. Der Ausgabevergleichstest kann ermitteln, ob die Ausgabe des Ausführungstests mit der erwarteten Ausgabe im Testarchiv übereinstimmt. Der Ausgabevergleichstest kann nutzungskonfigurierbar sein und einen oder mehrere separate Teiltests umfassen, die verschiedene Aspekte der Ausgabe testen, zum Beispiel Namensübereinstimmung, Inhaltsübereinstimmung oder dergleichen. Der Arbeitsablauf-Syntaxtest kann ermitteln, ob die Arbeitsablaufdefinition anhand der Grammatik der Arbeitsablauf-Beschreibungssprache validiert ist.
-
Durch Aspekte der vorliegenden Offenbarung kann zunächst sichergestellt werden, dass ein Arbeitsablauf über die erforderlichen Darstellungen verfügt. Diese Darstellungen entsprechen den Konzepten von Klasse und Instanz, die in der objektorientierten Programmierung verwendet werden. Die hier beschriebenen Techniken können auf verschiedene Weise umgesetzt werden. Beispielhafte Implementierungen werden im Folgenden unter Bezugnahme auf die folgenden Figuren bereitgestellt.
-
Unter Bezugnahme auf 1 kann ein Arbeitsablaufpaket 100 ein Bündel umfassen, das die Arbeitsablaufgraphen-Definition 102, eine Versionskennung 104 und andere optionale Daten enthält. Die optionalen Daten können zum Beispiel erforderliche Datendateien für Arbeitsablaufkomponenten 106, eine arbeitsablaufspezifische Transformationslogik, benutzerdefinierte Arbeitsablaufskripte 108 und dergleichen umfassen. Eine Arbeitsablaufinstanz 110 kann ein Bündel umfassen, das die Instanziierung eines Arbeitsablaufpakets auf einer bestimmten Plattform darstellt. Die Arbeitsablaufinstanz hat den gleichen Inhalt wie das Arbeitsablaufpaket (einschließlich der Arbeitsablaufgraphen-Definition 102, der Versionskennung 104, der für den Arbeitsablauf erforderlichen Datenressourcen 106 und der benutzerdefinierten Arbeitsablaufskripte 108) und umfasst zusätzlich ein Benutzereingabeverzeichnis (user input directory, UID) 112, Speicherorte für die Komponentenausgaben 114 und Metadaten zu allen bereitgestellten optionalen Daten.
-
Wenn das Arbeitsablaufpaket 100 instanziiert wird, enthält das dabei entstehende Bündel der Arbeitsablaufinstanz 110 keine Ausgabedaten. Wird ein Arbeitsablauf nach der Instanziierung ausgeführt, werden die Komponentenausgaben hinzugefügt, sobald sie erstellt werden.
-
Da der Arbeitsablauf und seine Ausführung die oben beschriebenen Darstellungen in Bezug auf das Arbeitsablaufpaket 100 und die Arbeitsablaufinstanz 110 aufweisen, können Aspekte der vorliegenden Offenbarung ein automatisches Regressionstesten umfassen.
-
Eine beispielhafte ausgeführte Arbeitsablaufinstanz 110 der neuesten Version des Arbeitsablaufpakets 100 ist dem Arbeitsablaufpaket 100 als Testarchiv zugehörig. Das Testarchiv kann optional komprimiert werden. Darüber hinaus können Daten von Knoten, die nicht getestet werden sollen, deren Test zu kostspielig ist, oder die nicht getestet werden müssen, aus dem Testarchiv entfernt werden. In einigen Ausführungsformen sind nach dem Erstellen des Testarchivs alle Daten, auf die es verweist, immer zugänglich und unveränderbar. Eine Testspezifikation kann eine optionale Spezifikation umfassen, die angibt, welche Komponenten des Arbeitsablaufpakets 100 getestet werden sollen.
-
Ein automatisches Regressionstesten kann bei jeder Modifikation im Arbeitsablaufpaket 100 durchgeführt werden. Für jede getestete Komponente des Arbeitsablaufs wird eine spezifische Arbeitsablaufinstanz-Bündelstruktur erstellt, Benutzereingaben werden aus dem Testarchiv in die Arbeitsablaufinstanz eingefügt, und vom Benutzer überschriebene Datendateien aus dem Testarchiv können in die Arbeitsablaufinstanz eingefügt werden. Daraufhin können die Regressionstests an der Arbeitsablaufinstanz durchgeführt werden.
-
Beim Eingabedatentest werden die Daten jedes Erzeugers der zu testenden Komponente aus dem Testarchiv an die richtige Ausgabestelle in der Arbeitsablaufinstanz hinzugefügt. Beim Datenbereitstellungstest wird für jede der definierten Eingaben der getesteten Komponente festgestellt, dass die definierten Eingaben in der Arbeitsablaufinstanz vorliegen und alle notwendigen Operationen, zum Beispiel Kopieren, in den definierten Eingaben durchgeführt werden. Beim Ausführungstest wird die Komponente mittels der bestimmten Plattform ausgeführt und ihr Endstatus erfasst. Beim Ausgabevergleichstest werden die Ausgaben der Komponente mit den Ausgaben der gleichen Komponente im Testarchiv verglichen. Bei dem Vergleich kann es sich um einen benutzerdefinierten Vergleich handeln, zum Beispiel eine komplette Textübereinstimmung, eine Namensübereinstimmung oder dergleichen, und der Vergleich kann nur auf einer Teilmenge von Dateien durchgeführt werden. Abschließend wird die Syntax des gesamten Arbeitsablaufs validiert.
-
In einer Ausführungsform sind alle Tests Bestanden/Nichtbestanden-Tests. Ein bestimmter Test muss bestanden werden, bevor der nächste Test ausgeführt werden kann. Wenn ein Schritt fehlschlägt, wird die Testphase als nicht bestanden beendet. Wenn alle Schritte bestanden haben, gilt die Komponente als bestanden. Wenn alle spezifischen Komponenten getestet sind, kann ein Bericht erzeugt und als Ausgabe des Systems an den Benutzer bereitgestellt werden. Laufzeitmodifikatoren, zum Beispiel „Abdeckung“, können beim Ausführungsschritt hinzugefügt werden. Optional können viele benutzerdefinierte Regressionstests über die oben beschriebene Testspezifikation beim Ausgabevergleichstest hinzugefügt werden.
-
Beispielhafte Ausführungsform
-
Im Folgenden wird eine beispielhafte Ausführungsform der vorliegenden Offenbarung beschrieben, die nicht als Einschränkung des Umfangs der Ansprüche zu verstehen ist. Die Ausführungsform beschreibt eine automatische Testerzeugung namens „Testify“, die die oben beschriebenen Darstellungen über ein Programm namens „Flow“ nutzt. In dem Beispiel kann Git zur Versionskontrolle und Travis zum automatischen Ausführen von Tests beim Commit verwendet werden. Der Git-Commit-ID/Hash kann als Versionskennung eines Arbeitsablaufpakets verwendet werden. In ähnlicher Weise kann das UID einer Arbeitsablaufinstanz auch die Version des zugehörigen Arbeitsablaufpakets enthalten. In dem Beispiel liegt die Transformationslogik in Form von Skripten und ausführbaren Dateien vor.
-
Ein Arbeitsablauf-Paketverzeichnis wird zum Beispiel anhand von Git versioniert, wobei definition.yaml die Arbeitsablaufgraphen-Definitionsdatei ist, ein Datenordner die für die Ausführung des Arbeitsablaufs erforderlichen Daten und ein bin-Ordner die für die Ausführung des Arbeitsablaufs erforderlichen ausführbaren Dateien enthält. Für eine Version vA wird ein Verzeichnis erstellt, das ein Klon des Arbeitsablauf-Paketverzeichnisses ist. Ein ArbeitsablaufName-vA.instance-Ordner enthält die gleichen Dateien und Verzeichnisse wie das Arbeitsablauf-Paketverzeichnis sowie eine zusätzliche Struktur, zum Beispiel einen Eingabenordner, der vom Benutzer bereitgestellte Eingabedaten enthält, einen Phasenordner, der Komponentenausgabedaten in komponentenspezifischen Verzeichnissen enthält, die in Phasen gruppiert werden können; und bei metadata.yaml handelt es sich um eine Metadatendatei, die alle Metadaten im Zusammenhang mit dem Ausführen des Arbeitsablaufs definiert, zum Beispiel ersetzte Dateien im Datenordner, Argumente für den Arbeitsablaufrahmen oder dergleichen. Die Metadatendatei umfasst alle relevanten Informationen zum Ausführen des Arbeitsablaufpakets.
-
Unter Bezugnahme auf 2 wird die Arbeitsablaufpaket-Version vA 200 mit Referenzeingaben ausgeführt, um Arbeitsablaufinstanz vA 202 zu erzeugen. Die Arbeitsablaufinstanz vA 202, mit optionalen Testspezifikationen 204, kann dem Testarchiv vA 206 entsprechen. Das Testarchiv vA 206 kann dem Arbeitsablaufpaket hinzugefügt werden, um das Arbeitsablaufpaket vB 208 zu erzeugen. Das Testarchiv vA 206 ergänzt die Dateistruktur der Arbeitsablaufinstanz vA 202, indem es die für die Tests erforderlichen Daten und einige Regeln für die Tests einfügt, die bei den Komponenten des Arbeitsablaufs ausgeführt werden sollen. Nachdem das erste Testarchiv erzeugt wurde, wird das Testarchiv bei jeder Änderung der Definition des Arbeitsablaufpakets neu erzeugt, da der Arbeitsablaufgraph und/oder die Daten, die das Testarchiv darstellt, nicht mehr gültig sind.
-
Unter Bezugnahme auf 3 und 4 kann das Arbeitsablaufpaket vB 208 in eine neue Version geändert oder aktualisiert werden, um das Arbeitsablaufpaket vC 300 zu erzeugen. Die Aktualisierungen des Arbeitsablaufpakets vB 208 können zum Beispiel Änderungen der Programmierung einer oder mehreren Komponenten, das Hinzufügen einer oder mehrerer neuer Komponenten oder das Löschen einer oder mehrerer Komponenten umfassen. Ein Prozess der kontinuierlichen Integration/kontinuierlichen Entwicklung 400, zum Beispiel Travis, kann testify-run aufrufen, um für jede Komponente, wie Komponente0 402 und Komponente1 404, ein Instanzenverzeichnis zu erstellen, um eine Arbeitsablaufinstanz vC 406 für Komponente0 402 und eine Arbeitsablaufinstanz vC 408 für Komponente1 404 zu erzeugen. Es werden zwar nur zwei Komponenten gezeigt, aber für jede zu testende Komponente wird eine eigene Arbeitsablaufinstanz vC erzeugt. Die Instanzenverzeichnisse werden mit Eingabedaten aus dem Testarchiv 302 des Arbeitsablaufpakets vB 208 gefüllt. In Prozess 304 stellt testify-run für jede Komponente ihre Daten bereit, führt die Arbeitsablaufinstanz aus, vergleicht ihre neue Ausgabe mit der vorherigen Ausgabe aus dem Testarchiv 302 und kann auch vom Benutzer bereitgestellte Tests ausführen. Eine erste Ausgabe 306 kann Details zu den Testergebnissen umfassen, wobei für jede Komponente Ergebnisse jedes Testlaufs bereitgestellt werden. Eine zweite Ausgabe 308 kann das Gesamtergebnis des Tests enthalten, zum Beispiel „0“, wenn alle Tests bestanden wurden, und „1“, wenn einer der Tests nicht bestanden wurde. In diesem Beispiel wird die getestete Version vC der Komponente und des Arbeitsablaufpakets vC 300 aufgrund Nichtbestehens eines einzelnen Tests als „Nicht bestanden“ gekennzeichnet. Wenn alle Tests (für alle Komponenten) bestanden wurden, wird das Arbeitsablaufpaket vC als erfolgreich oder gültig gekennzeichnet.
-
Nach dem vorangegangenen Überblick über das Beispielsystem für das Erstellen und Ausführen eines Testsystems für einen Arbeitsablauf kann es nun nützlich sein, eine ausführliche Erläuterung von Beispielprozessen zu betrachten. Zu diesem Zweck zeigt 5 einen beispielhaften Prozess 500, der sich auf Verfahren zum Erstellen und Ausführen eines Testsystems für einen Arbeitsablauf bezieht. Der Prozess 500 wird als eine Sammlung von Blöcken in einem logischen Ablaufplan gezeigt, die eine Sequenz von Operationen darstellt, die in Hardware, Software oder einer Kombination davon implementiert werden kann. Im Zusammenhang mit Software stellen die Blöcke durch einen Computer ausführbare Befehle dar, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, die genannten Operationen durchführen. Im Allgemeinen können durch einen Computer ausführbare Befehle Routinen, Programme, Objekte, Komponenten, Datenstrukturen und dergleichen umfassen, die Funktionen ausführen oder abstrakte Datentypen implementieren. In jedem Prozess ist die Reihenfolge, in der die Operationen beschrieben werden, nicht als Einschränkung zu verstehen, und eine beliebige Anzahl der beschriebenen Blöcke kann in beliebiger Reihenfolge kombiniert und/oder parallel durchgeführt werden, um den Prozess zu implementieren.
-
Unter Bezugnahme auf 5 umfasst der Prozess 500 zum Erstellen und Ausführen eines Testsystems für einen Arbeitsablauf einen Schritt 510 zum Erstellen eines Arbeitsablaufpakets oder zum Auswählen eines vorhandenen Arbeitsablaufpakets, einschließlich einer Arbeitsablaufdefinition und Eingabedaten. In Schritt 520 kann die Testsystem-Routine eine Arbeitsablaufinstanz eines Arbeitsablaufs erstellen. Die Arbeitsablaufinstanz kann die Elemente des Arbeitsablaufpakets umfassen sowie ausführungsspezifische Eingabedaten und Metadaten und Ausgabedaten der Arbeitsablaufkomponente. In Schritt 530 kann die Testsystem-Routine ein Testarchiv erstellen, indem es die Arbeitsablaufinstanz mit den Eingabedaten ausführt. In Schritt 540 kann, nachdem das Arbeitsablaufpaket von der Testsystem-Routine auf eine neue Version geändert oder aktualisiert wurde, jede Komponente in der neuen Version des Arbeitsablaufpakets mittels des Testarchivs für die Referenzeingaben getestet werden. In Schritt 550 wird eine Ausgabe der Testergebnisse von der Testsystem-Routine bereitgestellt.
-
Einige Änderungen an einem Arbeitsablauf können ein Erstellen eines neuen Testarchivs erfordern. In einigen Ausführungsformen kann das neue Testarchiv durch Ausführen der neuen Version des Arbeitsablaufs erstellt werden. In anderen Ausführungsformen kann das neue Testarchiv erstellt werden, indem nur Teilgraphen des Arbeitsablaufs ausgeführt werden, die von den Modifikationen im Arbeitsablauf betroffen sind. Zum Beispiel kann die Testsystem-Routine eine Arbeitsablaufinstanz des neuen Arbeitsablaufs erstellen. Bei Komponenten, die von den Modifikationen nicht betroffen sind, zum Beispiel solche, die letztendlich nicht zu den Verbraucherknoten der Ausgaben der modifizierten Knoten gehören, kopiert die Testsystem-Routine deren Ausgaben aus dem bestehenden Testarchiv. Für hinzugefügte oder modifizierte Komponenten oder Verbraucherknoten derselben wird der Zugriff auf erforderliche Ausführungsressourcen gewährt, und die Test- Routine führt die Teilgraphen des Arbeitsablaufs aus, die aus diesen Komponenten stammen. Bei modifizierten Komponenten in einem Arbeitsablauf kann die Ausführung auf die Komponenten beschränkt werden, deren Modifikationen dazu geführt haben, dass sie den Regressionstest nicht bestanden haben. Die Ausgaben dieser Ausführungen werden in die neue Arbeitsablaufinstanz eingefügt. Die Test-Routine kann aus der neuen Instanz ein neues Testarchiv erstellen.
-
6 zeigt eine Darstellung eines funktionellen Blockschaubilds einer Computerhardware-Plattform 600, die zur Implementierung einer speziell konfigurierten Datenverarbeitungseinheit verwendet werden kann, die eine Routine zum Erstellen und Ausführen eines Testsystems 650 hosten kann. Die Routine zum Erstellen und Ausführen eines Testsystems 650 kann, wie oben erläutert, ein Modul zum Erstellen von Darstellungen 652, ein Testmodul 654 und ein Ausgabemodul 656 umfassen.
-
Die Computerplattform 600 kann eine Zentraleinheit (CPU) 602, ein Festplattenlaufwerk (HDD) 604, einen Direktzugriffsspeicher (RAM) und/oder einen Nur-Lese-Speicher (ROM) 606, eine Tastatur 608, eine Maus 610, eine Anzeige 612 und eine Datenübertragungsschnittstelle 614 umfassen, die an einen Systembus 616 angeschlossen sind.
-
In einer Ausführungsform verfügt das Festplattenlaufwerk (HDD) 604 über Fähigkeiten, zu denen ein Speichern eines Programms gehört, das verschiedene Prozesse ausführen kann, zum Beispiel die Routine zum Erstellen und Ausführen eines Testsystems 650 in der hier beschriebenen Weise.
-
Fazit
-
Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Lehren wurden zur Veranschaulichung vorgelegt, sollen aber weder erschöpfend noch auf die offenbarten Ausführungsformen beschränkt sein. Für den Fachmann sind viele Modifikationen und Variationen erkennbar, ohne vom Umfang und Sinngehalt der beschriebenen Ausführungsformen abzuweichen. Die hier verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder die technische Verbesserung gegenüber den auf dem Markt befindlichen Technologien bestmöglich zu erklären oder um es dem Fachmann zu ermöglichen, die hier offenbarten Ausführungsformen zu verstehen.
-
Es sei darauf hingewiesen, dass in den vorangegangenen Abschnitten zwar der als optimal betrachtete Zustand und/oder andere Beispiele beschrieben wurden, aber dass darin verschiedene Modifikationen vorgenommen werden können und dass der hier offenbarte Gegenstand in verschiedenen Formen und Beispielen umgesetzt werden kann und die Lehren in zahlreichen Anwendungen umgesetzt werden können, von denen hier nur einige beschrieben wurden. Mit den folgenden Ansprüchen sollen alle Anwendungen, Modifikationen und Variationen beansprucht werden, die in den wahren Umfang der vorliegenden Lehren fallen.
-
Die hier erläuterten Komponenten, Schritte, Funktionen, Objekte, Nutzen und Vorteile dienen lediglich der Veranschaulichung. Weder diese noch die diesbezüglichen Erläuterungen zielen darauf ab, den Schutzumfang zu beschränken. Es wurden zwar verschiedene Vorteile erläutert, es sei aber darauf hingewiesen, dass nicht alle Ausführungsformen zwangsläufig alle Vorteile umfassen. Sofern nicht anders angegeben, sind alle Maße, Werte, Bewertungen, Positionen, Ausmaße, Größen und andere Spezifikationen, die in dieser Spezifikation, einschließlich der folgenden Ansprüche, aufgeführt sind, nur annähernd und nicht exakt. Sie sollen eine angemessene Reichweite haben, die mit den Funktionen, auf die sie sich beziehen, und mit dem, was in der sie betreffenden Technik üblich ist, vereinbar ist.
-
Es sind auch zahlreiche andere Ausführungsformen in Betracht zu ziehen. Dazu gehören Ausführungsformen, die weniger, zusätzliche und/oder andere Komponenten, Schritte, Funktionen, Objekte, Nutzen und Vorteile aufweisen. Ebenso gehören hierzu Ausführungsformen, bei denen die Komponenten und/oder Schritte anders aufgebaut und/oder angeordnet sind.
-
Aspekte der vorliegenden Offenbarung sind hierin unter Bezugnahme auf einen Ablaufplan und/oder ein Blockschaubild eines Verfahrens, einer Vorrichtung (Systeme) und Computerprogrammprodukten gemäß Ausführungsformen der Offenbarung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Flussdiagramm-Darstellungen und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Flussdiagramm-Darstellungen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
-
Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines in geeigneter Weise konfigurierten Computers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie so funktionieren, dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Ausführungsformen der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds angegebenen Funktion/Schritts umsetzen.
-
Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds festgelegten Funktionen/Schritte umsetzen.
-
Die Anrufablaufpläne, Ablaufpläne und Blockschaubilder in den Figuren hierin veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in den Blöcken angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
-
Zwar wurde das Vorstehende in Verbindung mit beispielhaften Ausführungsformen beschrieben, doch sei darauf hingewiesen, dass der Begriff „beispielhaft“ lediglich als Beispiel und nicht als bestmöglich oder optimal gemeint ist. Mit Ausnahme der unmittelbar oben genannten Fälle ist nichts von dem, was gesagt oder gezeigt wurde, dazu bestimmt oder sollte so ausgelegt werden, dass es dazu führt, dass eine Komponente, ein Schritt, eine Funktion, ein Objekt, ein Nutzen, ein Vorteil oder ein Äquivalent der Öffentlichkeit bereitgestellt wird, unabhängig davon, ob es in den Ansprüchen erwähnt wird.
-
Es sei darauf hingewiesen, dass die hier verwendeten Begriffe und Ausdrücke die übliche Bedeutung haben, die diesen Begriffen und Ausdrücken in Bezug auf ihre entsprechenden jeweiligen Untersuchungs- und Studiengebiete zukommt, es sei denn, es wurde hier eine andere Bedeutung festgelegt. Relationale Begriffe wie „erster“ und „zweiter“ und dergleichen können lediglich dazu verwendet werden, eine Einrichtung oder Aktion von einer anderen zu unterscheiden, ohne dass dies zwangsläufig eine tatsächliche Beziehung oder Reihenfolge zwischen diesen Einrichtungen oder Aktionen erfordert oder impliziert. Die Begriffe „aufweist“, „aufweisen“ oder jede andere Variante davon dienen dazu, eine nicht ausschließliche Einbeziehung zu erfassen, so dass ein Prozess, Verfahren, Gegenstand oder eine Vorrichtung, der/die eine Liste von Elementen aufweist, nicht nur diese Elemente umfasst, sondern auch andere Elemente enthalten kann, die nicht ausdrücklich aufgelistet sind oder zu einem solchen Prozess, Verfahren, Gegenstand oder einer solchen Vorrichtung gehören. Ein Element, dem „ein“ oder „eine“ vorangestellt ist, schließt die Existenz weiterer identischer Elemente in dem Prozess, Verfahren, Gegenstand oder der Vorrichtung, der/die dieses Element aufweist, nicht ohne weitere Einschränkung aus.
-
Die Zusammenfassung der Offenbarung wird bereitgestellt, damit sich der Leser schnell einen Überblick über die Art der technischen Offenbarung verschaffen kann. Sie wird mit der Maßgabe vorgelegt, dass sie nicht dazu verwendet wird, den Umfang oder die Bedeutung der Ansprüche auszulegen oder einzuschränken. Darüber hinaus ist in der vorstehenden ausführlichen Beschreibung zu erkennen, dass verschiedene Funktionen in verschiedenen Ausführungsformen zusammengefasst sind, um die Offenbarung übersichtlich zu gestalten. Dieses Verfahren der Offenbarung ist nicht so zu verstehen, dass die beanspruchten Ausführungsformen mehr Funktionen aufweisen sollen, als in den einzelnen Ansprüchen ausdrücklich angegeben sind. Vielmehr liegt der Erfindungsgegenstand, wie die folgenden Ansprüche zeigen, in weniger als allen Funktionen einer einzigen offenbarten Ausführungsform. Daher werden die folgenden Ansprüche hiermit in die ausführliche Beschreibung aufgenommen, wobei jeder Anspruch für sich genommen einen gesonderten beanspruchten Gegenstand darstellt.