特許第6835972号(P6835972)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ タレンド、インコーポレイテッドの特許一覧

特許6835972データ統合ワークフローエディタ中に構築されたテストケース生成器
<>
  • 特許6835972-データ統合ワークフローエディタ中に構築されたテストケース生成器 図000002
  • 特許6835972-データ統合ワークフローエディタ中に構築されたテストケース生成器 図000003
  • 特許6835972-データ統合ワークフローエディタ中に構築されたテストケース生成器 図000004
  • 特許6835972-データ統合ワークフローエディタ中に構築されたテストケース生成器 図000005
  • 特許6835972-データ統合ワークフローエディタ中に構築されたテストケース生成器 図000006
  • 特許6835972-データ統合ワークフローエディタ中に構築されたテストケース生成器 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6835972
(24)【登録日】2021年2月8日
(45)【発行日】2021年2月24日
(54)【発明の名称】データ統合ワークフローエディタ中に構築されたテストケース生成器
(51)【国際特許分類】
   G06F 11/36 20060101AFI20210215BHJP
   G06F 8/34 20180101ALI20210215BHJP
【FI】
   G06F11/36 184
   G06F11/36 164
   G06F8/34
【請求項の数】15
【全頁数】16
(21)【出願番号】特願2019-536457(P2019-536457)
(86)(22)【出願日】2017年9月8日
(65)【公表番号】特表2019-534523(P2019-534523A)
(43)【公表日】2019年11月28日
(86)【国際出願番号】US2017050784
(87)【国際公開番号】WO2018052813
(87)【国際公開日】20180322
【審査請求日】2020年8月26日
(31)【優先権主張番号】62/395,179
(32)【優先日】2016年9月15日
(33)【優先権主張国】US
(31)【優先権主張番号】62/402,880
(32)【優先日】2016年9月30日
(33)【優先権主張国】US
(31)【優先権主張番号】15/386,930
(32)【優先日】2016年12月21日
(33)【優先権主張国】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】519093263
【氏名又は名称】タレンド、インコーポレイテッド
(74)【代理人】
【識別番号】100108855
【弁理士】
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100103034
【弁理士】
【氏名又は名称】野河 信久
(74)【代理人】
【識別番号】100179062
【弁理士】
【氏名又は名称】井上 正
(74)【代理人】
【識別番号】100199565
【弁理士】
【氏名又は名称】飯野 茂
(74)【代理人】
【識別番号】100153051
【弁理士】
【氏名又は名称】河野 直樹
(74)【代理人】
【識別番号】100162570
【弁理士】
【氏名又は名称】金子 早苗
(72)【発明者】
【氏名】イル、ミシェル・ギヨーム・モリス
(72)【発明者】
【氏名】ダイネス、キアラン
【審査官】 杉浦 孝光
(56)【参考文献】
【文献】 米国特許出願公開第2015/0020049(US,A1)
【文献】 特開2005−322157(JP,A)
【文献】 特開2010−128559(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
G06F 8/34
(57)【特許請求の範囲】
【請求項1】
データ統合ワークフローの変換モジュールに対するテストケースを生成する方法あって、
ソフトウェアフレームワークと互換性のある前記データ統合ワークフローの前記変換モジュールに対する前記テストケースを生成させるための要求を受け取ることと、
前記データ統合ワークフロー中で、入力データソースから前記変換モジュールへの第1のネットワークパスを識別することと、
前記データ統合ワークフロー中で、前記変換モジュールから出力データソースへの第2のネットワークパスを識別することと、
前記変換モジュールに対する前記テストケースを定義するコードを生成することと、
前記入力データソースにアクセスすることなく、前記テストケースのシミュレートされた入力データソースから前記変換モジュールへ入力データを送ることと、前記出力データソースにアクセスすることなく、前記変換モジュールから前記テストケースのシミュレートされた出力データソースにおいて出力データ受け取ることとによって、前記ソフトウェアフレームワーク中で前記テストケースを実行することと、
変更されたモジュールを生成するように前記変換モジュールが変更されたと決定することと、
前記ソフトウェアフレームワーク中で前記テストケースを再実行することと、
を含み、
ここにおいて、前記テストケースの再実行は、前記変更されたモジュールの機能性を検証する、
方法。
【請求項2】
前記データ統合ワークフローのグラフィカルモデルをグラフィカルユーザインターフェース(GUI)中に表示することと、ここにおいて、前記グラフィカルモデルの少なくとも1つのアイコンは、前記変換モジュールを表し、
前記グラフィカルユーザインターフェースを介して、前記要求を受け取ることと、をさらに備え、ここにおいて、前記少なくとも1つのアイコンの選択、前記変換モジュールを識別する、
請求項1に記載の方法。
【請求項3】
前記テストケースに対するテスト入力データを受け取ることと、
前記テストケースに対するターゲット出力データを受け取ることとをさらに含み
ここにおいて、前記テストケースを実行すること
前記テスト入力データを使用して、前記変換モジュールを実行すること、
前記変換モジュールから実際の出力データを受け取ること、および、
前記実際の出力データを前記ターゲット出力データと比較することを含む、請求項1に記載の方法。
【請求項4】
前記実際の出力データの前記ターゲット出力データとの比較に基づいて、前記テストケース、前記テスト入力データ、および、前記ターゲット出力データによって定義されたテストに、前記変換モジュールが合格したか不合格であったかを決定することと、
前記決定の表示を記憶することと、をさらに備える、請求項3に記載の方法。
【請求項5】
前記テストケースを実行することは、前記テスト入力データを前記変換モジュールに提供するために、前記入力データソースをシミュレートすることを含む、請求項3に記載の方法。
【請求項6】
前記テストケースは、前記データ統合ワークフローのバージョンに関係付けられている、請求項1に記載の方法。
【請求項7】
データ統合ワークフローの変換モジュールに対するテストケースを生成するためのシステムであって、
1つ以上のプロセッサと、
1つ以上のアプリケーションを記憶しているメモリと、を備え、前記1つ以上のプロセッサ上で前記1つ以上のアプリケーションが実行されるとき、動作を実行し、
前記動作は、
ソフトウェアフレームワークと互換性のある前記データ統合ワークフローの前記変換モジュールに対する前記テストケースを生成させるための要求を受け取ることと、
前記データ統合ワークフロー中で、入力データソースから前記変換モジュールへの第1のネットワークパスを識別することと、
前記データ統合ワークフロー中で、前記変換モジュールから出力データソースへの第2のネットワークパスを識別することと、
前記変換モジュールに対する前記テストケースを定義するコードを生成することと、
前記入力データソースにアクセスすることなく、前記テストケースのシミュレートされた入力データソースから前記変換モジュールへ入力データを送ることと、前記出力データソースにアクセスすることなく、前記変換モジュールから前記テストケースのシミュレートされた出力データソースにおいて出力データ受け取ることとによって、前記ソフトウェアフレームワーク中で前記テストケースを実行することと、
変更されたモジュールを生成するように前記変換モジュールが変更されたと決定することと、
前記ソフトウェアフレームワーク中で前記テストケースを再実行することと、
を備え、
ここにおいて、前記テストケースの再実行は、前記変更されたモジュールの機能性を検証する、
システム。
【請求項8】
前記動作は、
前記データ統合ワークフローのグラフィカルモデルをグラフィカルユーザインターフェース(GUI)中に表示することと、ここにおいて、前記グラフィカルモデルの少なくとも1つのアイコンは、前記変換モジュールを表し、
前記グラフィカルユーザインターフェースを介して、前記要求を受け取ることと、をさらに備え、ここにおいて、前記少なくとも1つのアイコンの選択、前記変換モジュールを識別する、
請求項に記載のシステム。
【請求項9】
前記動作は、
前記テストケースに対するテスト入力データを受け取ることと、
前記テストケースに対するターゲット出力データを受け取ることとをさらに備え
ここにおいて、前記テストケースを実行すること
前記テスト入力データを使用して、前記変換モジュールを実行すること、
前記変換モジュールから実際の出力データを受け取ること、および、
前記実際の出力データを前記ターゲット出力データと比較することを備える、請求項に記載のシステム。
【請求項10】
前記動作は、
前記実際の出力データの前記ターゲット出力データとの比較に基づいて、前記テストケース、前記テスト入力データ、および、前記ターゲット出力データによって定義されたテストに、前記変換モジュールが合格したか不合格であったかを決定することと、
前記決定の表示を記憶することと、をさらに備える、請求項に記載のシステム。
【請求項11】
前記テストケースを実行することは、前記テスト入力データを前記変換モジュールに提供するために、前記入力データソースをシミュレートすることを含む、請求項に記載のシステム。
【請求項12】
命令を含む非一時的コンピュータ読取可能記憶媒体であって、前記命令が1つ以上のプロセッサによって実行されるとき、データ統合ワークフローの変換モジュールに対するテストケースを生成する動作を実行し、前記動作は、
ソフトウェアフレームワークと互換性のある前記データ統合ワークフローの前記変換モジュールに対する前記テストケースを生成させるための要求を受け取ることと、
前記データ統合ワークフロー中で、入力データソースから前記変換モジュールへの第1のネットワークパスを識別することと、
前記データ統合ワークフロー中で、前記変換モジュールから出力データソースへの第2のネットワークパスを識別することと、
前記変換モジュールに対するテストケースを定義するコードを生成することと、
前記入力データソースにアクセスすることなく、前記テストケースのシミュレートされた入力データソースから前記変換モジュールへ入力データを送ることと、前記出力データソースにアクセスすることなく、前記変換モジュールから前記テストケースのシミュレートされた出力データソースにおいて出力データ受け取ることとによって、前記ソフトウェアフレームワーク中で前記テストケースを実行することと、
変更されたモジュールを生成するように前記変換モジュールが変更されたと決定することと、
前記ソフトウェアフレームワーク中で前記テストケースを再実行することと、
を備え、
ここにおいて、前記テストケースの再実行は、前記変更されたモジュールの機能性を検証する、
非一時的コンピュータ読取可能記憶媒体。
【請求項13】
前記動作は、
前記テストケースに対するテスト入力データを受け取ることと、
前記テストケースに対するターゲット出力データを受け取ることとをさらに備え、
ここにおいて、前記テストケースを実行することは、
前記テスト入力データを使用して、前記変換モジュールを実行すること、
前記変換モジュールから実際の出力データを受け取ること、および、
前記実際の出力データを前記ターゲット出力データと比較することを備える、請求項12に記載の非一時的コンピュータ読取可能記憶媒体。
【請求項14】
前記動作は、
前記実際の出力データの前記ターゲット出力データとの比較に基づいて、前記テストケース、前記テスト入力データ、および、前記ターゲット出力データによって定義されたテストに、前記変換モジュールが合格したか不合格であったかを決定することと、
前記決定の表示を記憶することと、をさらに備える、請求項13に記載の非一時的コンピュータ読取可能記憶媒体。
【請求項15】
前記テストケースを実行することは、前記テスト入力データを前記変換モジュールに提供するために、前記入力データソースをシミュレートすることを含む、請求項13に記載の非一時的コンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【背景】
【0001】
【分野】
【0002】
[0001] 本開示は、一般的に、データ統合ワークフローの要素に対してユニットテストを生成することに関する。より具体的には、本開示は、ユーザが選択したソフトウェアフレームワーク内で、コードを生成してユーザが選択したプログラムモジュールをテストするためのデータ統合ワークフローエディタに関する技術を提供する。
【関連技術】
【0003】
[0002] データを集め、保管するためのテクノロジーは、最近数十年で多いに向上している。特に、データ収集レート、データアクセススピードおよびデータ保管能力はすべて、大幅に進歩している。さらに、コンピュータプロセッサスピードも数桁増加しており、多数のコンピューティングリソースがクラウドを通して容易に利用可能になっている。結果として、数十年前は実現困難であった大規模なデータ分析が、現在可能である。
【0004】
[0003] 多くの現代のビジネス、大学、政府および他のエンティティは、会計、研究、諜報、マーケティング、在庫、品質制御、トランザクションおよび他の目的のために、データを収集する。用語「ビッグデータ」は、エンティティが保持しているかもしれない大量のデータ(例えば、テラバイト)を指すように作られた。このビッグデータは、傾向を決定するために統計的に分析されることができ、有益な予測モデル(例えば、機械学習モデル)を生成するために使用されることができる。エンティティは、意思決定を通知し、傾向、問題および潜在的な機会を識別するために、このような分析およびモデルを使用することができる。
【0005】
[0004] エンティティが保持するビッグデータは、多くの異なるデータストアに渡って分散されることが多い。次に、異なるデータストアは、異なるフォーマットで記憶されている異なるタイプのデータを含んでいるかもしれない。結果として、統計的分析を実行でき、予測モデルを生成できるように、データは、異なるロケーションから抽出され、再フォーマットされ、組み合わされ、および、単一のデータレポジトリ中にロードされてもよい。このプロセスは、抽出、変換、および、ロード(ETL)と呼ばれることが多い。
【図面の簡単な説明】
【0006】
図1】[0005] 図1は、1つの実施形態にしたがった、本開示の技術を適用するために使用されてもよい例示的なコンピューティング環境を図示している。
図2】[0006] 図2は、1つの実施形態にしたがった、コンピューティングシステムのより詳細な図を図示している。
図3】[0007] 図3は、1つの実施形態にしたがった、ディスプレイ上に示されるようなデータ統合ワークフローのグラフィカルモデルを図示している。
図4】[0008] 図4は、1つの実施形態にしたがった、データ統合ワークフローの変換モジュールに対してテストケースを生成するための方法を図示したフローチャートである。
図5】[0009] 図5は、1つの実施形態にしたがった、データ統合ワークフローの変換モジュールに対してテストケースを実行するための方法を図示したフローチャートである。
図6】[0010] 図6は、1つの実施形態にしたがった、テストケースのためのコードを生成する例示的なデータ統合システムを図示している。
【詳細な説明】
【0007】
[0011] ここで説明する実施形態は、データ変換ワークフローのコンポーネントに対してユニットテストケースを生成するための技術を説明する。データ統合ワークフローエディタは、データ変換ワークフローのグラフィカルデータをユーザに表示する。ユーザは、データ変換ワークフロー内の変換モジュールを表すグラフィカルモデルの少なくとも1つのアイコンを選択する。ユーザは、変換モジュールに対するテストケースを生成するためのオプションを選択する。ユーザは、テストケースが特定のソフトウェアフレームワークと互換性があることも要求する。データ統合ワークフローエディタは、データ変換ワークフローにおいて、変換モジュールへの入力パスと変換モジュールからの出力パスを識別する。コード生成器は、変換モジュールに対するテストケースを生成する。テストケースは、ソフトウェアフレームワークを使用して実行できる。
【0008】
[0012] 実行されるとき、テストケースは、(例えば、ユーザによって提供される)テスト入力データを使用して、変換モジュールを実行する。テストケースは、その後、変換モジュールからの実際の出力データと(例えば、ユーザによって提供される)ターゲット出力データを比較する。実際の出力データがターゲット出力データと一致する場合、テストケースは、テストが成功したことを示す。そうでなければ、テストケースは、テストが不合格であったことを示し、オプション的に、不合格についての追加の詳細を提供してもよい。
【0009】
[0013] ETLに関してソフトウェアを効率的に管理するために、継続的インテグレーションが使用されることがある。用語「継続的インテグレーション」は、チームに従事するコンピュータプログラマが頻繁に彼らの作業を統合し、統合エラーが即座に検出できるように、自動化された構造により各統合を検証するソフトウェア開発行為を指す。
【0010】
[0014] ETLプロジェクトに関するデータ統合ワークフローは、入力データのソース、入力データを処理する(例えば、プログラミングコードの)モジュール、モジュール出力が送られる宛先を特定してもよく、同様に、ソース、モジュールおよび宛先の間の関連を特定してもよい。用語「データ変換モジュール」は、1つ以上の入力ソースから入力データを受け取り、入力データ上の少なくとも1つの動作を実行し、出力データを作成し、出力データを宛先に送る、データ変換ワークフローのコンポーネントを指す。
【0011】
[0015] ETLプロジェクトに取り組むソフトウェア開発チームに従事するプログラマーは、経時的に変化するかもしれない。チームメンバーは、既存のデータ統合ワークフローのよく知らないコンポーネントを修正せざるを得ないことが多いかもしれない。これらのよく知らないコンポーネントの正しい構造または動作は、明らかでないかもしれない。このような状況下で、チームメンバーは、うっかりこれらのコンポーネントのコンピュータコードにエラーをもたらすことがある。これらのエラーのうちのいくつかは、作成の際にETLプロジェクトが正しくない結果を送出するまで察知されないかもしれない。ユニットテストは、予測された挙動または既知のエラー状態を開発者がテストすることを可能にするが、手動のコードユニットテストは、時間がかかり、複雑であることがある。
【0012】
[0016] ここで説明する実施形態は、手動のコーディングを必要とすることなく、変換モジュールに対するテストケースを生成するための技術を提供する。テストケースは、テストケースを生成するアプリケーションから独立して実行されることができる。テストケースは、データ統合ワークフロー中の変換モジュールに入力を提供するデータソースにアクセスすることなく、実行されることができる。さらに、テストケースは、データ統合ワークフロー中の変換モジュールから出力を受け取る宛先にアクセスすることなく、実行されることができる。これらの理由により、テストケースは、高度に持ち運び可能であり、データソースとデータ統合ワークフロー中で参照される宛先とから独立している。
【0013】
[0017] テストケースは、さまざまなデータソースと構造を正確にシミュレートでき、それにより、テスト目的のために、実際のデータベースシステムをセットアップすることなく、または、維持することなく、ダミーのまたは模造の入力データセットに対して開発者が変換モジュールを仮想的にテストすることを可能にする。(例えば、変換モジュールが変更される毎に、テストケースを自動的に実行するために、ボタンをクリックすること、または、オプションを選択することにより、)開発者は、テストケースに対する変換モジュールにおける各変化を確認できる。
【0014】
[0018] テストケースは、データ統合ワークフローのバージョンにも関係付けられることができる。変換モジュールの意図した機能性が後のバージョンで変化する場合、開発者は、テストケースが以前のバージョンに関係付けられていることを観測することにより、テストケースは陳腐化したと決定してもよい。
【0015】
[0019] 図1は、1つの実施形態にしたがった、本開示の技術を適用するために使用されてもよい例示的なコンピューティング環境100を図示している。コンピューティングシステム108、データストア104およびデータストア106は、ネットワーク102に接続されている。データ統合ワークフローエディタ110は、データ統合ワークフロー112のグラフィカルモデルをディスプレイ118上に表示する。
【0016】
[0020] ユーザは、グラフィカルモデル中の少なくとも1つのアイコンを選択し、ユニットテストフレームワーク114を使用するテストケースを、選択したアイコンによって表される変換モジュールに対して生成することを要求する。データ統合ワークフローエディタ110は、データ統合ワークフロー112中の変換モジュールが、データストア104からの入力を受け取り、出力をデータストア106に送るように構成されていると決定する。データ統合ワークフローエディタ110は、その後、テストケース116を生成する。
【0017】
[0021] テストケース116は、実行時、テスト入力上の変換モジュールを実行する。テストケース116は、データストア104以外のソースからテスト入力を受け取ることができ、さらに、データストア104を模倣する方法でテスト入力を変換モジュールに提供することができる。結果として、テストケース116が実行されるとき、データストア104は、アクセスされる必要はない。同様に、テストケース116は、データストア106を模倣する方法で、変換モジュールから出力を受け取ることができる。結果として、データストア106は、テストケースが実行されるとき、アクセスされる必要はない。
【0018】
[0022] テストケース116は、ユニットテストフレームワーク114を使用し、ユーザによって設計されたソフトウェアフレームワークで実行されることができる。(例えば、Junitのような)ユニットテストフレームワーク114は、(例えば、Java(登録商標)のような)プログラミング言語に関係付けられてもよい。ソフトウェアフレームワークは、Apache Hadoopまたは他の何らかのフレームワークであってもよい。データ統合ワークフローエディタ110が動作していない場合でさえも、テストケース116は、ソフトウェアフレームワークを使用して、実行されることができる。さらに、テストケース116は、ユニットテストフレームワーク114とソフトウェアフレームワークとを使用できる他のコンピューティングシステムに移動可能である。言い換えると、テストケース116は、データ統合ワークフローエディタ110に依存しない。
【0019】
[0023] ユーザは、変換モジュールが変更される毎に、特定のテスト入力と特定のターゲット出力を使用して、テストケースを自動的に実行することも指定できる。この方法でテストケースを使用することは、ソフトウェア開発者が、変更がなされた後、変換モジュールが依然として適切に機能していることを確認することを可能にする。
【0020】
[0024] 図2は、1つの実施形態にしたがった、コンピューティングシステム108のより詳細な図を図示している。コンピューティングシステム108、データストア104およびデータストア106は、ネットワーク102に接続されている。データ統合ワークフローエディタ110は、グラフィカルユーザインターフェース(GUI)202、コード生成器204およびデータ統合ワークフロー112のグラフィカルモデル206を含んでいる。グラフィカルモデル206は、アイコン208を含んでいる。データ統合ワークフローエディタ110は、ディスプレイ118上で、GUI202中においてデータ統合ワークフロー112のグラフィカルモデル206を表示する。
【0021】
[0025] ユーザは、グラフィカルモデル206中のアイコン208のうちの1つ以上を選択し、テストのためにデータ統合ワークフロー112の変換モジュール210を指定することができる。データ統合ワークフローエディタ110は、変換モジュール210がデータストア104から入力を受け取り、データストア106に出力を送るように構成されていることを決定する。コード生成器204は、その後、ユニットテストフレームワーク114を使用して、テストケース116を生成する。
【0022】
[0026] テストケース116は、実行時、テスト入力に関して変換モジュール210を実行する。テストケース116は、データストア104以外のソースからテスト入力を受け取ることができ、さらに、データストア104を模倣した方法で、テスト入力を変換モジュールに提供できる。結果として、データストア104は、テストケース116が実行されるとき、アクセスされる必要がない。同様に、テストケース116は、データストア106を模倣した方法で、変換モジュールから出力を受け取ることができる。結果として、データストア106は、テストケース116が実行されるとき、アクセスされる必要がない。
【0023】
[0027] テストケース116は、ユニットテストフレームワーク114を使用し、ユーザによって設計されるソフトウェアフレームワークで実行できる。ユニットテストフレームワーク114は、(例えば、Javaに関係付けられているJunitのような)プログラミング言語に関係付けられてもよい。例えば、ソフトウェアフレームワークは、Apache HadoopまたはSpark frameworkであってもよい。たとえデータ統合ワークフローエディタ110が動作していないとしても、テストケース116は、ソフトウェアフレームワークを使用して実行される。さらに、テストケース116は、ユニットテストフレームワーク114とソフトウェアフレームワークを使用できる他のコンピューティングシステムに移動可能である。言い換えると、テストケース116は、データ統合ワークフローエディタ110に依存しない。
【0024】
[0028] 図3は、1つの実施形態にしたがった、ディスプレイ302上に示されるようなデータ統合ワークフローのグラフィカルモデル300を図示している。アイコン304は、変換モジュールを表す。アイコン306とアイコン310は、変換モジュールがデータ統合ワークフローにおいて入力を受け取るデータソースを表す。例えば、アイコン306は、データベースを表す一方で、アイコン310は、フラットファイルを表してもよい。アイコン314は、変換モジュールが出力を提供するデータソースを表す。
【0025】
[0029] 矢印312は、アイコン304によって表された変換モジュールがアイコン310によって表されたデータソースから入力を受け取ることをユーザに示すために、グラフィカルモデル300において示される。同様に、矢印308は、アイコン304によって表された変換モジュールがアイコン306によって表されたデータソースから入力を受け取ることもユーザに示すために、グラフィカルモデル300において示される。矢印316は、アイコン304によって表された変換モジュールがアイコン314によって表されたデータソースに出力を提供することをユーザに示すために、グラフィカルモデル300において示される。
【0026】
[0030] ユーザは、カーソル318を使用して、アイコン304を選択してもよい。いったんアイコン304が選択されると、ドロップダウンウインドウが現れ、テストケースを生成するオプションを提供する。ユーザは、オプションを選択し、テストとテストケースに対するソフトウェアフレームワークに関係付けるためのデータ統合ワークフローのバージョンのような、テストケースに対する追加の詳細を提供できる。ユーザからのこれらの入力に基づいて、コード生成器は、ユニットテストフレームワークを使用して、変換モジュールに対するテストケースを生成する。
【0027】
[0031] テストケース中に含まれるコードは、アイコン306とアイコン310によって表されたデータレポジトリ以外のソースからテスト入力データを受け取るように設計されている。しかしながら、テストケースが実行されるとき、それは、依然として変換モジュールを通常に実行することを可能にする方法で、テスト入力データをテストされる変換モジュールに提供する。例えば、変換モジュールが、あるフォーマットで、または、あるデータ構造で入力を受け取るように設計されている場合、テストケースは、そのフォーマットまたはデータ構造でテスト入力データを提供できるコードを含んでいる。同様に、変換モジュールが、あるフォーマットで、または、あるデータ構造でアイコン314によって表されたデータレポジトリに出力を提供する場合、テストケースは、そのフォーマットまたはデータ構造で、出力を途切れなく受け取るためのコードを含む。テストケースは、変換モジュールからの出力をターゲット出力と比較するコードも含んでいる。
【0028】
[0032] 図4は、1つの実施形態にしたがった、データ統合ワークフローの変換モジュールに対するテストケースを生成するための方法400を図示したフローチャートである。ステップ402において、データ統合ワークフローエディタは、グラフィカルユーザインターフェースにおいて、データ統合ワークフローのグラフィカルモデルを表示する。
【0029】
[0033] ステップ404において、データ統合ワークフローエディタは、グラフィカルモデルにおいて、ユーザによって選択された変換モジュールを識別する。グラフィカルモデル中の1つ以上のアイコンは、変換モジュールを表してもよい。
【0030】
[0034] ステップ406において、データ統合ワークフローエディタは、データ統合ワークフローにおいて、変換モジュールへの入力パスを識別する。入力パスは、グラフィカルモデル中の変換モジュールを表すアイコンに向けて指している矢印によって表されてもよい。ステップ408において、データ統合ワークフローエディタは、変換モジュールへの追加の入力パスがあるか否かを決定し、各追加の入力パスに対してステップ406を繰り返す。
【0031】
[0035] ステップ410において、データ統合ワークフローエディタは、データ統合ワークフローにおいて、変換モジュールから出力パスを識別する。出力パスは、グラフィカルモデル中の変換モジュールを表すアイコンから離れて指している矢印によって表されてもよい。ステップ412において、データ統合ワークフローエディタは、変換モジュールから追加の出力パスがあるか否かを決定し、各追加の出力パスに対してステップ410を繰り返す。
【0032】
[0036] ステップ414において、データ統合ワークフローエディタは、ユーザによって選択されたソフトウェアフレームワークを識別する。ステップ416において、コード生成器は、選択した変換モジュールに対するテストケースを定義するコードを生成する。テストケースは、データ統合ワークフローにおいて入力パスに接続されている実際のデータソースよりもむしろ、ユーザが特定したデータソースから、ステップ406−408において識別された各入力パスに対するテスト入力データを受け取るためのコードを含んでいる。テストケースは、テストケースが変換モジュールを実行するとき、実際のデータソースを模倣する方法で、テスト入力データを変換モジュールに提供するためのコードも含んでいる。
【0033】
[0037] さらに、テストケースは、ステップ410−412において識別された各出力パスに対するターゲット出力データを受け取るためのコードを含んでいる。テストケースがテストプロセスの一部として変換モジュールを実行するとき、テストケースは、各出力パスに対する変換モジュールから実際の出力データを受け取るためのコードも含んでいる。テストケースは、各パスに対して、ターゲット出力データを実際の出力データを比較するためのコードを含んでいる。ターゲット出力データと実際の出力データとの間に何らかの矛盾がある場合、テストケースは、変換モジュールがテストの少なくとも一部分において失敗したこと示す。
【0034】
[0038] 図5は、1つの実施形態にしたがった、データ統合ワークフローの変換モジュールに対してテストケースを実行するための方法500を図示したフローチャートである。テストケースは、ユニットテストフレームワークを用い、ソフトウェアフレームワークと互換性のあるユニットテストであってもよい。
【0035】
[0039] ステップ502において、テストケースは、変換モジュールに対するテスト入力データを受け取る。テスト入力データは、フラットファイルまたは他の何らかのフォーマットで受け取られてもよい。ステップ504において、テストケースは、ターゲット出力データを受け取る。テスト入力データのように、ターゲット入力データは、フラットファイルまたは他の何らかのフォーマットで受け取られてもよい。ターゲット出力データは、変換モジュールがテスト入力データを入力として使用して実行されるとき、変換モジュールが出力することになっているものを示す。
【0036】
[0040] ステップ506において、テストケースは、テスト入力データを(テストケースがテストプロセスの一部として実行する)変換モジュールに提供するための、第1のデータソースをシミュレートする。データ統合ワークフロー内で、変換モジュールは、第1のデータソースから入力を受け取るように構成されている。しかしながら、テストケースによって変換モジュールが実行されるとき、テストケースは、変換モジュールが第1のデータソースにアクセスすることを可能にしない。代わりに、テストケースは、テスト入力データを変換モジュールに提供する場合、第1のデータソースがするのと同じ方法で変換モジュールとインターフェースすることにより、第1のデータソースをシミュレートする。これは、テストケースが第1のデータソースから独立することを可能にする。
【0037】
[0041] ステップ508において、テストケースは、変換モジュールから実際の出力データを受け取るために、第2のデータソースをシミュレートする。データ統合ワークフロー内で、変換モジュールは、出力を第1のデータソースに送るように構成されている。しかしながら、変換モジュールがテストケースによって実行されるとき、テストケースは、変換モジュールが第2のデータソースにアクセスすることを可能にしない。代わりに、テストケースは、変換モジュールから実際の出力データを受け取る場合、第2のデータソースがするのと同じ方法で変換モジュールとインターフェースすることにより、第2のデータソースをシミュレートする。これは、テストケースが第2のデータソースから独立することを可能にする。
【0038】
[0042] ステップ510において、テストケースは、実際の出力データをターゲット出力データと比較する。ステップ512において、テストケースは、比較に基づいてテスト結果を提供する。実際の出力データが出力データと一致する場合、テスト結果は、変換モジュールがテストに合格したことを示す。そうでなければ、テスト結果は、変換モジュールがテストに不合格であったことを示す。テストに合格したか不合格であったかの表示は、テストに関係付けられることができ、記憶されることができる。
【0039】
[0043] ステップ514において、テストケースが生成されたデータ統合ワークフローエディタは、テストケースが実行された前回以来、変換モジュールが変更されたか否かを決定する。変換モジュールが変更された場合、ステップ502−512を繰り返す。そうでなければ、方法500は終了する。1つの実施形態において、ステップ514はオプション的である。ユーザは、データ統合ワークフローエディタにおいて、変換モジュールが変更される度にテストケースが実行されることを要求するオプションを選択してもよい。
【0040】
[0044] 図6は、1つの実施形態にしたがった、テストケースに対するコードを生成する例示的なデータ統合システム600を図示している。図示されるように、データ統合システム600は、中央処理ユニット(CPU)602、さまざまなI/Oデバイス614(例えば、キーボード、ディスプレイ、マウスデバイス、ペン入力等)のデータ統合システム600への接続を可能にしてもよい1つ以上の入力/出力(I/O)デバイスインターフェース604、ネットワークインターフェース606、メモリ608、記憶装置610およびインターコネクト612を含んでいる。
【0041】
[0045] CPU602は、メモリ608中に記憶されているプログラミング命令を検索し、実行してもよい。同様に、CPU602は、メモリ608中に存在するアプリケーションデータを検索し、記憶してもよい。インターコネクト612は、CPU602、I/Oデバイスインターフェース604、ネットワークインターフェース606、メモリ608および記憶装置610間で、プログラミング命令とアプリケーションデータを送信する。CPU602は、単一のCPU、複数のCPU、複数の処理コアを有する単一のCPU、および、これらに類するものを表すことができる。さらに、メモリ606は、ランダムアクセスメモリを表す。さらに、記憶装置610は、ディスクドライブであってもよい。単一のユニットで示されているが、記憶装置610は、固定ディスクドライブ、取り外し可能メモリカードまたは光学記憶装置、ネットワーク接続型記憶装置(NAS)、または、ストレージエリアネットワーク(SAN)のような、固定されたおよび/または取り外し可能な記憶デバイスの組み合わせであってもよい。
【0042】
[0046] 図示されるように、メモリ608は、データ統合ワークフローエディタ110を含んでいる。データ統合ワークフローエディタ110は、データ統合ワークフロー112のグラフィカルモデルを表示する。ユーザは、データ統合ワークフロー112内で変換モジュールを表すグラフィカルモデル中の1つ以上のアイコンを選択してもよい。ユーザは、データ統合ワークフローエディタ110が、変換モデルに対するユニットテストを定義するためのコードを生成することも要求してもよい。それに応じて、データ統合ワークフローディタ110は、ユニットテストフレームワーク114に基づいて、テストケース116を生成する。
【0043】
[0047] 本発明のさまざまな実施形態の説明は、実例の目的のために提示されているが、開示した実施形態に網羅的である、または、開示した実施形態に限定されることを意図してはいない。説明した実施形態の範囲および精神から逸脱することなく、多くの修正およびバリエーションが当業者に明らかだろう。ここで使用される専門用語は、実施形態の原理、市場において見出された技術を超える実用的アプリケーションまたは技術的改善を最良に説明するように、あるいは、他の当業者がここで開示した実施形態を理解できるようにするように、選択された。
【0044】
[0048] データ変換ワークフローのコンポ―ネントに対してユニットテストケースを生成するさらなる例は、添付の付録中に提供されている。
【0045】
[0049] 上記は、本開示の実施形態に向けられているが、本開示の他の実施形態およびさらなる実施形態を、その基本的な範囲から逸脱することなく考案することができ、その範囲は、下記の特許請求の範囲によって決定される。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[1] データ統合ワークフローの変換モジュールに対するテストケースを生成する方法あって、
ソフトウェアフレームワークと互換性のある前記データ統合ワークフローの変換モジュールに対するテストケースを生成させるための要求を受け取ることと、
前記データ統合ワークフロー中で、第1のデータソースから前記変換モジュールへの入力パスを識別することと、
前記データ統合ワークフロー中で、前記変換モジュールから第2のデータソースへの出力パスを識別することと、
前記変換モジュールに対する前記テストケースを定義するコードを生成することと、を備え、ここにおいて、前記テストケースは、前記第1のデータソースまたは前記第2のデータソースにアクセスすることなく、前記ソフトウェアフレームワーク中で実行できる、
方法。
[2] 前記データ統合ワークフローのグラフィカルモデルをグラフィカルユーザインターフェース(GUI)中に表示することと、ここにおいて、前記グラフィカルモデルの少なくとも1つのアイコンは、前記変換モジュールを表し、
前記グラフィカルユーザインターフェースを介して、前記要求を受け取ることと、をさらに備え、ここにおいて、ユーザは、前記少なくとも1つのアイコンを選択することにより、前記変換モジュールを識別する、
[1]に記載の方法。
[3] 前記テストケースに対するテスト入力データを受け取ることと、
前記テストケースに対するターゲット出力データを受け取ることと、
前記テストケースを実行することであって、
前記テスト入力データを使用して、前記変換モジュールを実行すること、
前記変換モジュールから実際の出力データを受け取ること、および、
前記実際の出力データを前記ターゲット出力データと比較することにより、
前記テストケースを実行することと、をさらに含む、[1]に記載の方法。
[4] 前記実際の出力データの前記ターゲット出力データとの比較に基づいて、前記テストケース、前記テスト入力データ、および、前記ターゲット出力データによって定義されたテストに、前記変換モジュールが合格したか不合格であったかを決定することと、
前記決定の表示を記憶することと、をさらに備える、[3]に記載の方法。
[5] 前記変換モジュールが変更されていると決定することと、
前記決定に応答して、前記テストケースを実行することと、をさらに備える、[3]に記載の方法。
[6] 前記テストケースを実行することは、前記テスト入力データを前記変換モジュールに提供するために、前記第1のデータソースをシミュレートすることを含む、[3]に記載の方法。
[7] 前記テストケースを実行することは、前記実際の出力データを前記変換モジュールから受け取るために、前記第2のデータソースをシミュレートすることを含む、[3]に記載の方法。
[8] 前記テストケースは、前記データ統合ワークフローのバージョンに関係付けられている、[1]に記載の方法。
[9] 命令を含む非一時的コンピュータ読取可能記憶媒体であって、前記命令が1つ以上のプロセッサによって実行されるとき、データ統合ワークフローの変換モジュールに対するテストケースを生成する動作を実行し、前記動作は、
ソフトウェアフレームワークと互換性のある前記データ統合ワークフローの変換モジュールに対するテストケースを生成させるための要求を受け取ることと、
前記データ統合ワークフロー中で、第1のデータソースから前記変換モジュールへの入力パスを識別することと、
前記データ統合ワークフロー中で、前記変換モジュールから第2のデータソースへの出力パスを識別することと、
前記変換モジュールに対するテストケースを定義するコードを生成させることと、を備え、ここにおいて、前記テストケースは、前記第1のデータソースまたは前記第2のデータソースにアクセスすることなく、前記ソフトウェアフレームワーク中で実行される、
非一時的コンピュータ読取可能記憶媒体。
[10] 前記動作は、
前記データ統合ワークフローのグラフィカルモデルをグラフィカルユーザインターフェース(GUI)中に表示することと、ここにおいて、前記グラフィカルモデルの少なくとも1つのアイコンは、前記変換モジュールを表し、
前記グラフィカルユーザインターフェースを介して、前記要求を受け取ることと、をさらに備え、ここにおいて、ユーザは、前記少なくとも1つのアイコンを選択することにより、前記変換モジュールを識別する、[8]に記載の非一時的コンピュータ読取可能記憶媒体。
[11] 前記動作は、
前記テストケースに対するテスト入力データを受け取ることと、
前記テストケースに対するターゲット出力データを受け取ることと、
前記テストケースを実行することであって、
前記テスト入力データを使用して、前記変換モジュールを実行すること、
前記変換モジュールから実際の出力データを受け取ること、および、
前記実際の出力データを前記ターゲット出力データと比較することにより、
前記テストケースを実行することと、をさらに備える、[8]に記載の非一時的コンピュータ読取可能記憶媒体。
[12] 前記動作は、
前記実際の出力データの前記ターゲット出力データとの比較に基づいて、前記テストケース、前記テスト入力データ、および、前記ターゲット出力データによって定義されたテストに、前記変換モジュールが合格したか不合格であったかを決定することと、
前記決定の表示を記憶することと、をさらに備える、[11]に記載の非一時的コンピュータ読取可能記憶媒体。
[13] 前記動作は、
前記変換モジュールが変更されていると決定することと、
前記決定に応答して、前記テストケースを実行することと、をさらに備える、[11]に記載の非一時的コンピュータ読取可能記憶媒体。
[14] 前記テストケースを実行することは、前記テスト入力データを前記変換モジュールに提供するために、前記第1のデータソースをシミュレートすることを含む、[11]に記載の非一時的コンピュータ読取可能記憶媒体。
[15] 前記テストケースを実行することは、前記実際の出力データを前記変換モジュールから受け取るために、前記第2のデータソースをシミュレートすることを含む、[11]に記載の非一時的コンピュータ読取可能記憶媒体。
[16] 前記テストケースは、前記データ統合ワークフローのバージョンに関係付けられている、[9]に記載の非一時的コンピュータ読取可能記憶媒体。
[17] データ統合ワークフローの変換モジュールに対するテストケースを生成するためのシステムであって、
1つ以上のプロセッサと、
1つ以上のアプリケーションを記憶しているメモリと、を備え、前記1つ以上のプロセッサ上で前記1つ以上のアプリケーションが実行されるとき、動作を実行し、
前記動作は、
ソフトウェアフレームワークと互換性のある前記データ統合ワークフローの変換モジュールに対するテストケースを生成させるための要求を受け取ることと、
前記データ統合ワークフロー中で、第1のデータソースから前記変換モジュールへの入力パスを識別することと、
前記データ統合ワークフロー中で、前記変換モジュールから第2のデータソースへの出力パスを識別することと、
前記変換モジュールに対する前記テストケースを定義するコードを生成することと、を備え、ここにおいて、前記テストケースは、前記第1のデータソースまたは前記第2のデータソースにアクセスすることなく、前記ソフトウェアフレームワーク中で実行できる、
システム。
[18] 前記動作は、
前記データ統合ワークフローのグラフィカルモデルをグラフィカルユーザインターフェース(GUI)中に表示することと、ここにおいて、前記グラフィカルモデルの少なくとも1つのアイコンは、前記変換モジュールを表し、
前記グラフィカルユーザインターフェースを介して、前記要求を受け取ることと、をさらに備え、ここにおいて、ユーザは、前記少なくとも1つのアイコンを選択することにより、前記変換モジュールを識別する、
[17]に記載のシステム。
[19] 前記動作は、
前記テストケースに対するテスト入力データを受け取ることと、
前記テストケースに対するターゲット出力データを受け取ることと、
前記テストケースを実行することであって、
前記テスト入力データを使用して、前記変換モジュールを実行すること、
前記変換モジュールから実際の出力データを受け取ること、および、
前記実際の出力データを前記ターゲット出力データと比較することにより、
前記テストケースを実行することと、をさらに備える、[17]に記載のシステム。
[20] 前記動作は、
前記実際の出力データの前記ターゲット出力データとの比較に基づいて、前記テストケース、前記テスト入力データ、および、前記ターゲット出力データによって定義されたテストに、前記変換モジュールが合格したか不合格であったかを決定することと、
前記決定の表示を記憶することと、をさらに備える、[19]に記載のシステム。
[21] 前記動作は、
前記変換モジュールが変更されていると決定することと、
前記決定に応答して、前記テストケースを実行することと、をさらに備える、[19]に記載のシステム。
[22] 前記テストケースを実行することは、前記テスト入力データを前記変換モジュールに提供するために、前記第1のデータソースをシミュレートすることを含む、[19]に記載のシステム。
[23] 前記テストケースを実行することは、前記実際の出力データを前記変換モジュールから受け取るために、前記第2のデータソースをシミュレートすることを含む、[19]に記載のシステム。
図1
図2
図3
図4
図5
図6