(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-09-25
(45)【発行日】2025-10-03
(54)【発明の名称】ワークフローのためのテスト・ハーネスを自動的に作成し、実行する方法、コンピュータ可読プログラムおよびコンピュータ可読記憶媒体
(51)【国際特許分類】
G06F 11/36 20250101AFI20250926BHJP
G06F 8/30 20180101ALI20250926BHJP
【FI】
G06F11/3668 172
G06F8/30
G06F11/3668 184
G06F11/3668 196
(21)【出願番号】P 2021202996
(22)【出願日】2021-12-15
【審査請求日】2024-07-11
(32)【優先日】2020-12-30
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】マイケル、ジョンストン
(72)【発明者】
【氏名】ワシレイオス、ワシレイアディス
【審査官】西間木 祐紀
(56)【参考文献】
【文献】米国特許出願公開第2013/0019126(US,A1)
【文献】米国特許第08712815(US,B1)
【文献】特開2005-085182(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
G06F 8/30
(57)【特許請求の範囲】
【請求項1】
コンピュータの情報処理によって、ワークフローのためのテスト・ハーネスを自動的に作成し、実行する方法であって、
バージョン識別およびワークフロー・グラフ定義を含むワークフロー・パッケージを作成することと、
前記ワークフロー・パッケージに基づいてワークフロー・インスタンスを作成することと、
前記ワークフロー・インスタンスを実行して
、ワークフロー・ノードのタスクによって生成されるファイルを含むコンポーネント出力データである出力データを生成することと、
前記出力データと共に前記ワークフロー・インスタンスをテスト・アーカイブとして保存することと、
前記テスト・アーカイブを用いて、更新されたワークフロー・パッケージの1つまたは複数のコンポーネントをテストすることと、
前記更新されたワークフロー・パッケージの前記テストの合格または不合格の標識を出力することと、
を含む、方法。
【請求項2】
ノード毎の変換ロジックについての情報を含む前記ワークフロー・パッケージを作成することをさらに含む、請求項1に記載の方法。
【請求項3】
(a)前記ワークフローの複数のサブグラフから1つまたは複数の選択されたサブグラフを実行して出力データを生成すること、および(b)前記複数のサブグラフの他のサブグラフに、以前作成されたワークフロー・インスタンスからのサブグラフ出力データを入力すること、のうちの少なくとも1つによって、前記ワークフロー・インスタンスの前記出力データを生成することをさらに含む、請求項1又は請求項2に記載の方法。
【請求項4】
前記標識が、前記1つまたは複数のコンポーネントのそれぞれに対して行われる各テストからの結果を含む、請求項1から請求項3までのいずれか1項に記載の方法。
【請求項5】
前記テストが、入力データ・テスト、データ・ステージング・テスト、実行テスト、および出力比較テストを含む複数のテストを含む、請求項1から請求項4までのいずれか1項に記載の方法。
【請求項6】
前記複数のテストのそれぞれが、順番に実行され、前記複数のテストのうちの1つの不合格が、前記テストを終了させ、不合格の標識を出力する、請求項5に記載の方法。
【請求項7】
テスト仕様を前記テスト・アーカイブに関連付けることであって、前記テスト仕様が、前記1つまたは複数のコンポーネントからのどの出力データが前記テスト・アーカイブに追加されるべきかを定義する、前記関連付けることをさらに含む、請求項1から請求項6までのいずれか1項に記載の方法。
【請求項8】
テスト仕様を前記テスト・アーカイブに関連付けることであって、前記テスト仕様が、前記テストのカスタマイズを可能にし、合格および不合格の定義を提供する、前記関連付けることをさらに含む、請求項1から請求項6までのいずれか1項に記載の方法。
【請求項9】
前記1つまたは複数のコンポーネントの選択されたテストのために、追加プログラムがテスト仕様に提供されることを可能にすることをさらに含む、請求項1から請求項8までのいずれか1項に記載の方法。
【請求項10】
前記更新されたワークフロー・パッケージのインスタンスに基づいて前記テスト・アーカイブを再生成することをさらに含む、請求項1から請求項9までのいずれか1項に記載の方法。
【請求項11】
コンピュータの情報処理によって、ワークフローのためのテスト・ハーネスを自動的に作成し、実行する方法であって、
バージョン識別、ワークフロー・グラフ定義、および前記ワークフローの1つまたは複数のコンポーネントの各コンポーネントの変換ロジックを含む、ワークフロー・パッケージを作成することと、
前記ワークフロー・パッケージに基づいてワークフロー・インスタンスを作成することと、
前記ワークフロー・インスタンスを実行して
、ワークフロー・ノードのタスクによって生成されるファイルを含むコンポーネント出力データである出力データを生成することと、
前記出力データと共に前記ワークフロー・インスタンスをテスト・アーカイブとして保存することと、
前記テスト・アーカイブを用いて、更新されたワークフロー・パッケージの1つまたは複数のコンポーネントをテストすることであって、
前記テストが、入力データ・テスト、データ・ステージング・テスト、実行テスト、および出力比較テストを含む複数のテストを含み、
前記複数のテストのそれぞれが、順番に実行され、前記複数のテストのうちの1つの不合格が、前記テストを終了させる、前記テストすることと、
前記更新されたワークフロー・パッケージの前記テストの合格または不合格の標識を出力することと、
を含む、方法。
【請求項12】
前記標識が、前記1つまたは複数のコンポーネントのそれぞれに対して行われる各テストからの結果を含む、請求項11に記載の方法。
【請求項13】
テスト仕様を前記テスト・アーカイブに関連付けることであって、前記テスト仕様が、前記1つまたは複数のコンポーネントからのどの出力データが前記テスト・アーカイブに追加されるべきかを定義する、前記関連付けることをさらに含む、請求項11又は請求項12に記載の方法。
【請求項14】
テスト仕様を前記テスト・アーカイブに関連付けることであって、前記テスト仕様が、前記テストのカスタマイズを可能にし、合格および不合格の定義を提供する、前記関連付けることをさらに含む、請求項11又は請求項12に記載の方法。
【請求項15】
前記更新されたワークフロー・パッケージのインスタンスに基づいて前記テスト・アーカイブを再生成することをさらに含む、請求項11から請求項14までのいずれか1項に記載の方法。
【請求項16】
実行時に、ワークフローのためのテスト・ハーネスを作成し、実行する方法をコンピュータ・デバイスに実行させる、コンピュータ可読命令を有するコンピュータ可読プログラムであって、前記方法が、請求項1から請求項15までのいずれか1項に記載の方法である、コンピュータ可読プログラム。
【請求項17】
請求項16に記載されたコンピュータ可読プログラムが格納された、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、ワークフローをテストするための方法に関し、より詳細には、ワークフローのためのテスト・ハーネス(test harness)を自動的に生成し、実行するための方法に関する。
【背景技術】
【0002】
ワークフローは、潜在的に、データを処理するためのコンポーネント(ノード)の複雑なパイプラインである。ワークフローは、典型的には、有向非巡回グラフ(DAG:direct acyclic graph)であり、そこで、コンポーネントは通常、スクラッチから構築されるのではなく既存のリソースから形成される。それらは、多くのワークフロー・ノードを含む場合があり、それぞれが、異なる科学分野出身であり得る多くの異なる開発者および科学者によって実施される。
【0003】
ワークフローは、ソフトウェア・プログラムであり、コンポーネントの追加、除去、および修正、またはコンポーネント間のエッジの追加および除去、あるいはそれらの組合せによって発展する。これらの様々な発展プロセスのうち、既存のコンポーネントの修正は、ワークフロー・グラフを変更しない。しかしながら、修正におけるエラーは、例えば、修正されたコンポーネントまたは修正されたコンポーネントによって生産されるデータの下流コンシューマを不合格にさせることによって、グラフの予期される処理挙動を破壊する可能性を有する。ワークフローが、あるオプションで構成される既存のプログラムの合成物であるとき、プログラムの比較的小さなセットが、多くの異なるワークフローを生成し得る。
【0004】
ワークフロー・コンポーネントの全てについてテスト・ハーネスを作成し、維持するプロセスは、非常に時間がかかる場合があり、計算リソースの不足に起因して、あるテストが作成されない、または実行されないことがある。これは、同様に、他の不要な副作用の中でも特に不安定性および生産性の損失に繋がり得る、デプロイメント環境に伝播するエラーをもたらし得る。
【発明の概要】
【発明が解決しようとする課題】
【0005】
ワークフロー実行の性能を改善し、ワークフローの修正によって生じる回帰を減少させ得る、ワークフローのためのテスト・ハーネスを自動的に作成し、実行する方法を提供する。
【課題を解決するための手段】
【0006】
様々な実施形態によれば、コンピューティング・デバイス、非一過性コンピュータ可読記憶媒体、および方法が、ワークフローのためのテスト・ハーネスの自動作成および実行のために提供される。
【0007】
一実施形態では、ワークフローのためのテスト・ハーネスを自動的に作成し、実行するためのコンピュータ実施方法は、バージョン識別およびワークフロー・グラフ定義(workflow graph definition)を含むワークフロー・パッケージを作成することと、ワークフロー・パッケージに基づいてワークフロー・インスタンス(workflow instance)を作成することと、を含む。方法は、ワークフロー・インスタンスを実行して出力データを生成し得る。ワークフロー・インスタンスは、出力データと共にテスト・アーカイブ(test archive)として保存される。更新されたワークフロー・パッケージの1つまたは複数のコンポーネントは、テスト・アーカイブを用いてテストされる。更新されたワークフロー・パッケージのテストの合格または不合格の標識が出力される。
【0008】
いくつかの実施形態では、方法は、ノード毎の変換ロジック(transformation logic)についての情報を含むワークフロー・パッケージを作成することをさらに含む。
【0009】
いくつかの実施形態では、標識は、1つまたは複数のコンポーネントのそれぞれに対して実行される各テストからの結果を含む。
【0010】
いくつかの実施形態では、方法は、(a)ワークフローの複数のサブグラフから1つまたは複数の選択されたサブグラフを実行して出力データを生成すること、および(b)複数のサブグラフの他のサブグラフに、以前作成されたワークフロー・インスタンスからのサブグラフ出力データを入力すること、のうちの少なくとも1つによって、ワークフロー・インスタンスの出力データを生成することをさらに含む。
【0011】
いくつかの実施形態では、テストは、入力データ・テスト、データ・ステージング・テスト(data staging test)、実行テスト、および出力比較テストを含む複数のテストを含む。
【0012】
いくつかの実施形態では、複数のテストのうちの1つが、所与のコンポーネントについて不合格である場合、提供される標識は、所与のコンポーネントおよびワークフローの両方の不合格の標識である。いくつかの実施形態では、複数のテストのそれぞれが、順番に実行され、複数のテストのうちの1つの不合格が、テストを終了させ、不合格の標識を出力する。
【0013】
いくつかの実施形態では、方法は、テスト仕様(test specification)をテスト・アーカイブに関連付けることであって、テスト仕様が、1つまたは複数のコンポーネントからのどの出力データがテスト・アーカイブに追加されるべきかを定義する、関連付けることをさらに含む。
【0014】
いくつかの実施形態では、方法は、テスト仕様をテスト・アーカイブに関連付けることであって、テスト仕様が、テストのカスタマイズを可能にし、合格および不合格の定義を提供する、関連付けることをさらに含む。
【0015】
いくつかの実施形態では、方法は、1つまたは複数のコンポーネントの選択されたテストのために、追加プログラムがテスト仕様に使用されることを可能にすることをさらに含む。
【0016】
いくつかの実施形態では、方法は、更新されたワークフロー・パッケージのインスタンスに基づいてテスト・アーカイブを再生成することをさらに含む。
【0017】
様々な実施形態によれば、ワークフローのためのテスト・ハーネスを自動的に作成し、実行するためのコンピュータ実施方法は、バージョン識別、ワークフロー・グラフ定義、およびワークフローの1つまたは複数のコンポーネントのそれぞれの変換ロジックを含むワークフロー・パッケージを作成することを含む。ワークフロー・インスタンスは、ワークフロー・パッケージに基づいて作成され、ワークフロー・インスタンスが実行されて、出力データを生成する。ワークフロー・インスタンスは、出力データと共にテスト・アーカイブとして保存され、更新されたワークフロー・パッケージの1つまたは複数のコンポーネントは、テスト・アーカイブを用いてテストされる。テストは、入力データ・テスト、データ・ステージング・テスト、実行テスト、および出力比較テストを含む複数のテストを含む。更新されたワークフロー・パッケージのテストの合格または不合格の標識が、出力される。複数のテストのそれぞれが、順番に実行され、複数のテストのうちの1つの不合格が、テストを終了させ、不合格の標識を出力する。
【0018】
本明細書で述べる概念のおかげで、ワークフローをテストするために現在使用される手法を改善するシステムおよび方法が提供される。本明細書で述べるシステムおよび方法は、本明細書で説明するように、テスト・ハーネスを自動的に作成し、実行することによって、ワークフロー実行の性能を改善し、ワークフローの修正によって生じる回帰を減少させ得る。
【0019】
これらのおよび他の特徴は、その例示的実施形態の以下の詳細な説明から明らかとなり、詳細な説明は、添付図面に関連して読まれるものとする。
【0020】
図面は、例示的実施形態のものである。それらは、全ての実施形態を示すものではない。他の実施形態が、追加で、または代わりに用いられてもよい。明白または不必要であり得る詳細は、スペースを節約するため、またはより有効な例示のために省略されることがある。いくつかの実施形態は、追加のコンポーネントもしくはステップを用いて、または例示されるコンポーネントもしくはステップの全てがなくても、あるいはその両方において、実施され得る。同一の数字が異なる図面中に現れるとき、それは同一または類似のコンポーネントまたはステップを指す。
【図面の簡単な説明】
【0021】
【
図1】例示的実施形態と一致する、ワークフローおよびそれらの実行の表現である。
【
図2】例示的実施形態と一致する、テスト・アーカイブの作成の表現である。
【
図3】例示的実施形態と一致する、ワークフローのためのテスト・ハーネスを作成し、実行するための入力および出力を示す図である。
【
図4】例示的実施形態と一致する、ワークフローのためのテスト・ハーネスを作成し、実行するためのシステムのフローチャートである。
【
図5】例示的実施形態と一致する、ワークフローのためのテスト・ハーネスを作成し、実行することに関与する動作のフローチャートである。
【
図6】例示的実施形態と一致する、ワークフローのためのテスト・ハーネスを作成し、実行するためのシステムを実施するために使用され得る、特に構成されるコンピュータ・ハードウェア・プラットフォームの機能ブロック図の例示である。
【発明を実施するための形態】
【0022】
以下の詳細な説明では、関係する教示の完全な理解をもたらすために、多数の具体的詳細が例として述べられている。しかしながら、本教示は、そのような詳細なしでも実施され得ることは明らかであるべきである。他の場合において、周知の方法、手続き、コンポーネント、または回路、あるいはそれらの組合せは、本教示の態様を不必要に曖昧にすることを避けるために、詳細なしで比較的高いレベルで説明されている。
【0023】
特段の記載がない限り、以下の説明および特許請求の範囲から明らかであり得るように、明細書全体を通して、「処理する(processing)」、「計算する(computing)」、「算出する(calculating)」、「判断する(determining)」などの用語を用いる説明は、コンピューティング・システムのレジスタまたはメモリあるいはその両方の中の電子などの物理量として表されるデータを、コンピューティング・システムのメモリ、レジスタ、または他のそのような情報記憶装置、伝送もしくは表示デバイスの中の物理量として同様に表される他のデータに操作または変換あるいはその両方を行う、コンピュータもしくはコンピューティング・システム、または類似の電子コンピューティング・デバイスの動作またはプロセスあるいはその両方を指すと理解されたい。
【0024】
本明細書で用いられる「ワークフロー」という用語は、有向非巡回グラフを指し、そこで、ノードは、計算手続き、タスク、または変換を表し、エッジは、ワークフロー・ノード間の依存関係を示している。
【0025】
本明細書で用いられる「ワークフロー・ノード」という用語は、ワークフローの一部であるアプリケーションまたはサービスを指す。
【0026】
本明細書で用いられる「変換ロジック」という用語は、ノードによって定義される変換を適用することを可能にする情報を指す。例えば、変換ロジックは、特定のスクリプトであってもよい。
【0027】
本明細書で用いられる「コンポーネント」という用語は、ワークフロー・グラフ内のノードを指す。
【0028】
本明細書で用いられる「テスト・ハーネス」という用語は、条件を変更すること、ならびにその挙動および出力をモニタリングすることに基づきプログラム・ユニットを実行することによって、プログラム・ユニット(ワークフロー・グラフのコンポーネントによって提供されるスクリプトなど)をテストするように構成されるソフトウェアおよびテスト・データの集合を指す。
【0029】
本明細書で用いられる「回帰」という用語は、あるイベント、通常はコードに対する変更の後で、ある特徴が意図したように機能しなくなるソフトウェア・バグを指す。
【0030】
「回帰テスト」という用語は、テスト・プロセス内の1つまたは複数の特定のテストだけでなく、テスト・プロセス全体に適用され得る。明確にするために、本明細書で用いられる「回帰テスト」という用語は、ワークフローに対する変更が回帰に繋がっているかどうかを判断するプロセス全体を指す。
【0031】
本明細書で用いられる「ワークフロー・パッケージ」という用語は、そのコンポーネント、接続、入力データなどを含むワークフローの仕様を指す。
【0032】
本明細書で用いられる「ワークフロー・インスタンス」という用語は、ワークフロー・パッケージの特定の実行を指し、ワークフロー・ノードのタスクによって生成されるファイルを含み得る。
【0033】
本明細書で用いられる「バンドル」という用語は、必要なファイル、コンポーネント出力位置などが構造内の要素である、ファイルシステム・ディレクトリ構造を指し、または、「バンドル」は、データ・ファイルおよびコンポーネント出力位置を参照するユニフォーム・リソース・ロケータ(URL)を含むファイルであってもよく、もしくは、「バンドル」は、ファイルシステム・ディレクトリ構造およびURLの組合せであってもよい。
【0034】
本明細書で用いられる「プラットフォーム」という用語は、クラウド、クラスタなどのワークフローを実行するために使用され得る計算リソースのセットを指す。
【0035】
以下でさらに詳細に述べる通り、本開示は、概して、ワークフロー・グラフとデータ(入力/出力)および変換ロジックを明示的にリンクする、ワークフローおよびその実行の表現を定義するための方法およびシステムに関する。本開示の態様は、この表現を用いて、ワークフロー・グラフ内のコンポーネントの回帰テストを自動的に実行し得る。これは、特定のワークフロー実行表現を回帰テスト・アーカイブとして定義すること、およびそれをワークフロー定義にリンクすることによって実現され得る。
【0036】
回帰テストのプロセスは、各ワークフロー・コンポーネントについての4つのテストおよびワークフロー構文が有効であることを保証するテストを含み得る。コンポーネント回帰テストは、入力データ・テスト、データ・ステージング・テスト、実行テスト、および出力比較テストを含む。入力データ・テストは、全てのコンポーネント・プロデューサ(即ち、テストされるコンポーネントに対する入力のためのデータを生産するコンポーネント)が存在するかどうか、およびテスト・データがテスト・アーカイブにおいてそれらに利用可能であるかを判断する。このテストは、必要な静的入力ファイルがテスト・アーカイブに存在するかどうかをさらに判断する。データ・ステージング・テストは、所与のコンポーネントによって必要とされる特定のファイルがテスト・アーカイブに存在するかどうかを判断する。実行テストは、コンポーネントの現在の定義が、入力データに対して実行が成功するかどうかを判断する。出力比較テストは、実行テストの出力がテスト・アーカイブにおいて予期される出力に合致するかどうかを判断し得る。出力比較テストは、使用構成可能であってもよく、名前の合致、コンテンツの合致などの出力の異なる態様をテストする1つまたは複数の別個のサブテストを含んでもよい。ワークフロー構文テストは、ワークフロー定義がワークフロー記述言語の文法に対して検証されるかどうかを判断し得る。
【0037】
本開示の態様は、最初に、ワークフローが必要な表現を有することを確実にし得る。これらの表現は、オブジェクト指向プログラミングに存在するクラスおよびインスタンスの概念に類似している。本明細書で説明する技術は、いくつかの方法で実施されてもよい。実施態様の例は、下記の図面を参照して以下で提供される。
【0038】
図1を参照すると、ワークフロー・パッケージ100は、ワークフロー・グラフ定義102、バージョン識別104、および他の任意選択データを有するバンドルを含み得る。任意選択データは、例えば、ワークフロー・コンポーネントのための必要データ・ファイル106、ワークフロー固有の変換ロジック、ワークフロー・カスタム・スクリプト108などを含み得る。ワークフロー・インスタンス110は、特定のプラットフォーム上のワークフロー・パッケージのインスタンス化を表すバンドルを含み得る。ワークフロー・インスタンスは、ユーザ入力ディレクトリ(UID)112、コンポーネント出力のための位置114、および供給される任意の任意選択データについてのメタデータを追加した、ワークフロー・パッケージ(ワークフロー・グラフ定義102、バージョン識別104、ワークフロー必要データ・リソース106、およびワークフロー・カスタム・スクリプト108を含む)と同一のコンテンツを含む。
【0039】
ワークフロー・パッケージ100がインスタンス化されるとき、ワークフロー・インスタンス110の結果として生じるバンドルは、出力データを含まない。インスタンス化の後にワークフロー実行が続く場合、コンポーネント出力は、それらが作成されると追加される。
【0040】
ワークフローおよびその実行が、ワークフロー・パッケージ100およびワークフロー・インスタンス110に関して上述の表現を有すると仮定すると、本開示の態様が、自動回帰テスト(automatic regression testing)を含み得る。
【0041】
ワークフロー・パッケージ100の最新バージョンの代表的な実行済みワークフロー・インスタンス110は、テスト・アーカイブとしてワークフロー・パッケージ100に関連付けられる。テスト・アーカイブは、任意選択で圧縮され得る。さらに、テストされないノード、テストするにはコストがかかりすぎるノード、またはテストされる必要がないノードについて、データがテスト・アーカイブから除去されてもよい。いくつかの実施形態では、テスト・アーカイブが一旦作成されると、それによって参照される全てのデータが、常にアクセス可能かつ不変である。テスト仕様は、ワークフロー・パッケージ100内のどのコンポーネントがテストされるべきであるかを示す任意選択の仕様を含み得る。
【0042】
自動回帰テストは、ワークフロー・パッケージ100において修正が行われる度に発生し得る。ワークフローのテストされるコンポーネント毎に、一意なワークフロー・インスタンス・バンドル構造が作成され、ユーザ入力が、テスト・アーカイブからワークフロー・インスタンス内に追加され、テスト・アーカイブからのユーザ・オーバライド・データ・ファイルが、ワークフロー・インスタンス内に追加され得る。回帰テストは、次いで、ワークフロー・インスタンスに対して実行され得る。
【0043】
入力データ・テストの場合、テストされているコンポーネントのプロデューサ毎に、そのデータが、テスト・アーカイブからワークフロー・インスタンス内の正しい出力位置に追加される。データ・ステージング・テストの場合、テストされるコンポーネントの定義された入力のそれぞれについて、定義された入力がワークフロー・インスタンスに存在し、コピーなどの任意の必要な動作が、定義された入力において実行されると判断される。実行テストの場合、コンポーネントは、指定されたプラットフォームを用いて実行され、その出口状態が取り込まれる。出力比較テストの場合、コンポーネントの出力が、テスト・アーカイブ内の同一コンポーネントの出力と比較される。比較の種類は、全テキスト照合、名前照合など、ユーザ定義されてもよく、比較は、ファイルのサブセットにのみ適用されてもよい。最後に、ワークフロー全体の構文が、検証される。
【0044】
一実施形態では、テストのそれぞれが、合否判定型テストと考えられる。所与のテストは、次のテストが実行し得る前に合格でなければならない。任意のステップが不合格である場合、テスト段階は不合格に終わる。全てのステップが合格であれば、コンポーネントは合格である。特定のコンポーネントが全てテストされると、レポートが生成され、システムからユーザへ出力として提供され得る。「カバレッジ」などのランタイム修飾子が、実行ステップにおいて追加されてもよい。任意選択で、出力比較テストにおいて、上述したテスト仕様により、多くのカスタム回帰テストが追加されてもよい。
【0045】
実施形態の例
以下は、本開示の例としての実施形態を説明するものであり、特許請求の範囲を限定するように受け取られるべきではない。実施形態は、「フロー(Flow)」と呼ばれるプログラムによって上述のように作成された表現を活用する、「テスティファイ(Testify)」と呼ばれる自動テスト生成器について説明する。実施例は、バージョン管理のためのギット(git)、およびコミット上で動作する自動化テストのためのトラヴィス(travis)を使用し得る。ギット-コミットID/ハッシュは、ワークフロー・パッケージのバージョン識別として使用され得る。同様に、ワークフロー・インスタンスのUIDは、関連ワークフロー・パッケージのバージョンを含み得る。実施例では、変換ロジックは、スクリプトおよび実行可能ファイルの形式である。
【0046】
ワークフロー・パッケージ・ディレクトリは、例えばギットを用いてバージョン管理され、その場合に、definition.yamlは、ワークフロー・グラフ定義ファイルであり、データ・フォルダは、ワークフロー実行に必要なデータを保持し、binフォルダは、ワークフロー実行に必要な実行可能ファイルを保持する。ワークフロー・パッケージ・ディレクトリのクローンであるディレクトリが、バージョンvAに対して作られる。ワークフロー名-vA.instanceフォルダは、ユーザ供給入力データを保持する入力フォルダ、ステージにグループ化され得るコンポーネント固有ディレクトリにコンポーネント出力データを保持するステージ・フォルダなどの、追加の構造を加えたワークフロー・パッケージ・ディレクトリと同一のファイルおよびディレクトリを保持し、metadata.yamlは、データ・フォルダ内の置換されたファイル、ワークフロー・フレームワークへの引数などの、ワークフローの実行に関連する任意のメタデータを定義するメタデータ・ファイルである。メタデータ・ファイルは、ワークフロー・パッケージを実行するための全ての関連情報を含む。
【0047】
ここで
図2を参照すると、ワークフロー・パッケージ・バージョンvA200は、基準入力を用いて実行して、ワークフロー・インスタンスvA202を生成する。ワークフロー・インスタンスvA202は、任意選択のテスト仕様204と共に、テスト・アーカイブvA206としてもよい。テスト・アーカイブvA206は、ワークフロー・パッケージに追加されて、ワークフロー・パッケージvB208を生成してもよい。テスト・アーカイブvA206は、テストに必要なデータおよびワークフロー内のコンポーネントのために実行されるテストについてのいくつかの規則を挿入することによって、ワークフロー・インスタンスvA202のファイル構造を増強する。ワークフロー・グラフまたはテスト・アーカイブあるいはその両方がもはや適用されないことを表すため、最初のテスト・アーカイブが生成された後、そのテスト・アーカイブは、ワークフロー・パッケージ定義に対して変更が行われる度に再生成される。
【0048】
図3および
図4を参照すると、ワークフロー・パッケージvB208は、新バージョンに変更または更新されて、ワークフロー・パッケージvC300を生成し得る。ワークフロー・パッケージvB208への更新は、例えば、1つもしくは複数のコンポーネントに対するプログラミング変更、1つもしくは複数の新コンポーネントの追加、または1つもしくは複数のコンポーネントの削除を含み得る。継続的インテグレーション/継続的開発プロセス400、例えばトラヴィスは、コンポーネント0 402およびコンポーネント1 404などのコンポーネント毎にインスタンス・ディレクトリを作成して、コンポーネント0 402のためのワークフロー・インスタンスvC406およびコンポーネント1 404のためのワークフロー・インスタンスvC408を生成するために、テスティファイ実行(testify-run)を呼び出し得る。コンポーネントが2つだけ示されているが、テストされる各コンポーネントは、それ自体のワークフロー・インスタンスvCを生成させる。インスタンス・ディレクトリには、ワークフロー・パッケージvB208のテスト・アーカイブ302からの入力データが入力される。プロセス304において、コンポーネント毎のテスティファイ実行は、そのデータをステージングし、ワークフロー・インスタンスを実行し、その新たな出力をテスト・アーカイブ302からの以前の出力に対してチェックし、また、ユーザ提供テストを実行することもある。第1の出力306は、テスト結果詳細を含んでもよく、コンポーネント毎に、各テスト実行の結果が提供される。第2の出力308は、全てのテストが合格である場合は「0」、およびいずれかのテストが不合格である場合は「1」など、全体のテスト結果を含み得る。この実施例では、単一のテスト不合格が、コンポーネントのテストされたバージョンvCおよびワークフロー・パッケージvC300を不合格としてマークする。(全コンポーネントについての)全てのテストが合格である場合、ワークフロー・パッケージvCは、成功または有効としてマークされる。
【0049】
ワークフローのためのテスト・ハーネスを作成し、実行するための例としてのシステムの前述の概要を用いて、例としてのプロセスの高水準の議論を考察することが、ここで助けとなり得る。そのために、
図5は、ワークフローのためのテスト・ハーネスを作成し、実行するための方法に関する例示的プロセス500を提示する。プロセス500は、論理フローチャートにおけるブロックの集合として示され、論理フローチャートは、ハードウェア、ソフトウェア、またはその組合せで実施され得る動作のシーケンスを表す。ソフトウェアの文脈において、ブロックは、1つまたは複数のプロセッサによる実行時に列挙された動作を実行する、コンピュータ実行可能命令を表す。概して、コンピュータ実行可能命令は、機能を実行し、または抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含み得る。各プロセスにおいて、動作が説明される順序は、限定として解釈されることを意図するものではなく、任意の数の説明されるブロックが、任意の順序で結合され、または並列で実行され、あるいはその両方が行われて、プロセスを実施し得る。
【0050】
図5を参照すると、ワークフローのためのテスト・ハーネスを作成し、実行するためのプロセス500は、ワークフロー定義および入力データを含む、ワークフロー・パッケージを作成し、または既存のワークフロー・パッケージを選択する動作510を含む。動作520において、テスト・ハーネス・エンジンは、ワークフローのワークフロー・インスタンスを作成し得る。ワークフロー・インスタンスは、ワークフロー・パッケージの要素だけでなく、実行固有の入力データおよびメタデータ、ならびにワークフロー・コンポーネント出力データを含み得る。動作530において、入力データを用いてワークフロー・インスタンスを実行することによって、テスト・ハーネス・エンジンによりテスト・アーカイブが作成され得る。動作540において、ワークフロー・パッケージが、テスト・ハーネス・エンジンにより新バージョンに変更または更新されるとき、ワークフロー・パッケージの新バージョン内の各コンポーネントが、基準入力に対してテスト・アーカイブを用いてテストされ得る。動作550において、テスト結果の出力が、テスト・ハーネス・エンジンによって提供される。
【0051】
ワークフローへのいくつかの変更は、新たなテスト・アーカイブを作成することを必要とし得る。いくつかの実施形態では、新たなテスト・アーカイブは、ワークフローの新バージョンを実行することによって作成され得る。他の実施形態では、新たなテスト・アーカイブは、ワークフロー内の修正によって影響を受けるワークフローのサブグラフのみを実行することによって作成され得る。例えば、テスト・ハーネス・エンジンは、新たなワークフローのワークフロー・インスタンスを作成してもよい。修正されたノードの出力の最終コンシューマ・ノードではないコンポーネントなど、修正によって影響を受けないコンポーネントについて、テスト・ハーネス・エンジンは、それらの出力を既存のテスト・アーカイブからコピーする。追加または修正されたコンポーネントまたはそれらのコンシューマ・ノードについて、必要な実行リソースへのアクセスが与えられ、テスト・エンジンは、これらのコンポーネントに由来するワークフローのサブグラフを実行する。ワークフロー内の修正されたコンポーネントの場合、実行は、修正によって回帰テストに不合格となったコンポーネントに限定され得る。これらの実行の出力は、新たなワークフロー・インスタンス内に配置される。テスト・エンジンは、新たなインスタンスから新たなテスト・アーカイブを作成し得る。
【0052】
図6は、テスト・ハーネス作成および実行エンジン650をホストし得る、特に構成されたコンピューティング・デバイスを実施するために使用され得るコンピュータ・ハードウェア・プラットフォーム600の機能ブロック図の例示を提供する。上述のような、テスト・ハーネス作成および実行エンジン650は、表現作成モジュール652、テスト・モジュール654、および出力モジュール656を含み得る。
【0053】
コンピュータ・プラットフォーム600は、中央処理装置(CPU)602、ハード・ディスク・ドライブ(HDD)604、ランダム・アクセス・メモリ(RAM)または読み取り専用メモリ(ROM)606あるいはその両方、キーボード608、マウス610、ディスプレイ612、および通信インターフェース614を含んでもよく、それらは、システム・バス616に接続されている。
【0054】
一実施形態では、HDD604は、本明細書で説明される方式で、テスト・ハーネス作成および実行エンジン650などの、様々なプロセスを実行し得るプログラムを記憶することを含む能力を有する。
【0055】
結論
本教示の様々な実施形態の説明は例示の目的で提示されているが、網羅的であること、または開示された実施形態に限定することを意図するものではない。多くの修正および変形が、説明された実施形態の範囲および思想から逸脱することなく当業者には明らかであろう。本明細書で使用される専門用語は、実施形態の原理、実際の用途、もしくは市場で見出される技術に対する技術的改善を最もよく説明するため、または本明細書で開示された実施形態を他の当業者が理解可能にするために、選択された。
【0056】
上述したことは、最良の状態または他の実施例あるいはその両方であると考えられるものを説明しているが、様々な修正がそこで行われ得ること、ならびに本明細書で開示された主題が様々な形式および実施例で実施され得ること、ならびに本教示が、そのうちのいくつかだけが本明細書で説明されている多数の用途に適用され得ることを理解されたい。本教示の真の範囲内に入る、任意のおよび全ての適用、修正、および変形を特許請求することが、以下の特許請求の範囲によって意図される。
【0057】
本明細書で述べたコンポーネント、ステップ、特徴、目的、利益、および利点は、単なる例示である。それらのいずれも、またはそれらに関する議論も、保護の範囲を限定することを意図するものではない。様々な利点が本明細書で述べられているが、全ての実施形態が、必ずしも全ての利点を含まないことを理解されたい。特段の記載のない限り、以下の特許請求の範囲に含む、本明細書に記載されている全ての測定値、値、評価、位置、大きさ、サイズ、および他の仕様は、近似値であり、正確ではない。それらは、それらが関連する機能およびそれらが関連する分野において慣例であるものと整合する合理的な範囲を有するように意図される。
【0058】
多数の他の実施形態も考えられる。これらは、より少ない、追加の、または異なる、あるいはそれらの組合せのコンポーネント、ステップ、特徴、目的、利益、および利点を有する実施形態を含む。これらは、コンポーネントまたはステップあるいはその両方が異なるように配列され、または順序付けされ、あるいはその両方である実施形態も含む。
【0059】
本開示の態様は、本開示の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本明細書で説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組合せが、コンピュータ可読プログラム命令によって実施され得ると理解されたい。
【0060】
コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施する手段を作成するように、これらのコンピュータ可読プログラム命令は、適当に構成されたコンピュータ、専用コンピュータ、または機械を製造するための他のプログラマブル・データ処理装置のプロセッサに提供されてもよい。コンピュータ可読記憶媒体に記憶される命令を有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実施する命令を含む製品を含むように、これらのコンピュータ可読プログラム命令は、また、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはそれらの組合せに、ある方式で機能するように指示し得る、コンピュータ可読記憶媒体に記憶されてもよい。
【0061】
コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するように、コンピュータ可読プログラム命令は、また、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させてコンピュータ実施プロセスを作り出すために、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされてもよい。
【0062】
本明細書の図面内のコールフロー、フローチャート、およびブロック図は、本開示の多様な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能性、および動作を例示する。この点に関して、フローチャートまたはブロック図内の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表し得る。いくつかの代替的実施態様において、ブロック内に記載された機能は、図面中に記載された順序以外で発生してもよい。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよく、または、ブロックが、関係する機能性次第で逆の順序で実行されることがあってもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せが、指定された機能もしくは動作を実行し、または専用ハードウェアおよびコンピュータ命令の組合せを実行する専用ハードウェアベース・システムによって実施され得ることにも留意されたい。
【0063】
上述したことは、例示的実施形態と併せて説明されているが、「例示的」という用語は、最良または最適ではなく単に実施例を意味すると理解されたい。上記の場合を除いて、記述または例示されているものは、それが特許請求の範囲に列挙されているか否かに関わらず、いかなるコンポーネント、ステップ、特徴、目的、利益、利点、または公開の均等物の専用にすることを意図されておらず、またはそのように解釈されるべきでない。
【0064】
本明細書で用いられる用語および表現は、特定の意味が本明細書で述べられている場合を除いて、それらの対応するそれぞれの調査および研究の領域に関するそのような用語および表現に一致するような通常の意味を有すると理解されたい。第1の、および第2の、などの関係を示す用語は、そのようなエンティティまたはアクション間のいかなる実際のそのような関係または順序も必ずしも必要とすることも示唆することもなく、1つのエンティティまたはアクションを別のエンティティまたはアクションと区別するためだけに使用され得る。要素のリストを含むプロセス、方法、物品、または装置は、それらの要素だけを含むのではなく、明示的に列挙されていない他の要素、またはそのようなプロセス、方法、物品、もしくは装置に固有の他の要素も含むように、「含む(comprise)」、「含んでいる(comprising)」、またはその任意の他の変化形が、非排他的包含を含むように意図される。「a」または「an」により始まる要素は、さらなる制約なしに、その要素を含むプロセス、方法、物品、または装置において追加の同一要素の存在を排除しない。
【0065】
要約書は、読み手が技術的開示の本質を素早く確認することを可能にするために提供される。それは、特許請求の範囲または意味を解釈または限定するために使用されないという理解で提出されている。加えて、前述の発明を実施するための形態において、様々な特徴が、本開示を合理化するために様々な実施形態においてグループ化されることが分かる。開示のこの方法は、特許請求された実施形態が各請求項に明示的に列挙されるよりも多くの特徴を有するという意図を反映すると解釈されるべきではない。むしろ、以下の特許請求の範囲が反映するように、本発明の主題は、単一の開示された実施形態の全ての特徴よりも少ない特徴にある。したがって、以下の特許請求の範囲は、これにより発明を実施するための形態に組み込まれ、各請求項は、個別に特許請求された主題として自立している。
【符号の説明】
【0066】
100 ワークフロー・パッケージ
102 ワークフロー・グラフ定義
104 バージョン識別
106 必要データ・ファイル、ワークフロー必要データ・リソース
108 ワークフロー・カスタム・スクリプト
110 ワークフロー・インスタンス
112 ユーザ入力ディレクトリ(UID)
114 コンポーネント出力のための位置
200 ワークフロー・パッケージ・バージョンvA
202 ワークフロー・インスタンスvA
204 テスト仕様
206 テスト・アーカイブvA
208 ワークフロー・パッケージvB
300 ワークフロー・パッケージvC
302 テスト・アーカイブ
304 プロセス
306 第1の出力
308 第2の出力
400 継続的インテグレーション/継続的開発プロセス
402 コンポーネント0
404 コンポーネント1
406 ワークフロー・インスタンスvC
408 ワークフロー・インスタンスvC
600 コンピュータ・プラットフォーム
602 中央処理装置(CPU)
604 ハード・ディスク・ドライブ(HDD)
606 ランダム・アクセス・メモリ(RAM)または読み取り専用メモリ(ROM)
608 キーボード
610 マウス
612 ディスプレイ
614 通信インターフェース
616 システム・バス
650 テスト・ハーネス作成および実行エンジン
652 表現作成モジュール
654 テスト・モジュール
656 出力モジュール