(57)【要約】      （修正有）【課題】宣言的モデルを用いて構築されたシステムに対して、より適切にテストを行えるテストコード生成装置を提供する。【解決手段】テストコード生成装置２００は、情報取得部２９１と、テンプレート取得部２９３と、パラメータ値取得部２９４と、パラメータ値適用部２９５と、を備える。情報取得部は、宣言的モデルの情報から、その宣言的モデルの構成要素の情報を抽出する。テンプレート取得部は、構成要素の情報に紐づけられているテストコードのテンプレートを取得する。パラメータ値取得部は、テンプレートに適用するパラメータ値を、構成要素の情報に紐づけられているルールに従って取得する。パラメータ値適用部は、得られたパラメータ値をテンプレートに適用してテストコードを取得する。【選択図】図３
2020181509.tif 000002
【特許請求の範囲】
【請求項１】
宣言的モデルの情報から、その宣言的モデルの構成要素の情報を抽出する情報取得部と、
前記構成要素の情報に紐づけられているテストコードのテンプレートを取得するテンプレート取得部と、
前記テンプレートに適用するパラメータ値を、前記構成要素の情報に紐づけられているルールに従って取得するパラメータ値取得部と、
得られたパラメータ値を前記テンプレートに適用してテストコードを取得するパラメータ値適用部と、
を備えるテストコード生成装置。
【請求項２】
前記パラメータ値取得部は、前記ルールがパラメータ値を要求することを示している場合、そのルールに従って宣言的モデルオーケストレーション装置からパラメータ値を取得する、
請求項１に記載のテストコード生成装置。
【請求項３】
宣言的モデルの情報から、その宣言的モデルの構成要素の情報を抽出する工程と、
前記構成要素の情報に紐づけられているテストコードのテンプレートを取得する工程と、
前記テンプレートに適用するパラメータ値を、前記構成要素の情報に紐づけられているルールに従って取得する工程と、
得られたパラメータ値を前記テンプレートに適用してテストコードを取得する工程と、
を含むテストコード生成方法。
【請求項４】
コンピュータに、
宣言的モデルの情報から、その宣言的モデルの構成要素の情報を抽出する工程と、
前記構成要素の情報に紐づけられているテストコードのテンプレートを取得する工程と、
前記テンプレートに適用するパラメータ値を、前記構成要素の情報に紐づけられているルールに従って取得する工程と、
得られたパラメータ値を前記テンプレートに適用してテストコードを取得する工程と、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テストコード生成装置、テストコード生成方法およびプログラムに関する。
【背景技術】
【０００２】
プログラムまたはシステムのテストに関して幾つかの技術が提案されている。
例えば、特許文献１に記載の方法では、アプリケーションにかかわる複数の独立したテストケースを、テストケース毎に異なる動作環境で実行する。テストケース毎の動作環境は、テストマスタドキュメントと呼ばれるテストドキュメントによって示される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１８−１３９１０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
プログラムを用いてシステムを構築する方法の１つに、宣言的モデルを用いてシステムを構築する方法がある。宣言的モデルから構築されたシステムが、モデルの作成ミス、パラメータ誤り、または、実行環境の問題など様々な理由により正しく動作しないことがある。このため、宣言的モデルから構築されたシステムに対して宣言（意図）した通りに構築され正しく動作するかの確認が必要とされる。
【０００５】
構築されたシステムに対してテストを行う都度、手作業でテスト設計（テスト項目の決定等）してテストコードを生成する場合、適切なテスト設計およびテストコード生成には高いスキルが求められ、作業者のスキルによってはテスト設計およびテストコード生成を適切に行えない場合がある。また、テスト設計やテストコード作成でミスが発生した場合も、テストを適切に行えない。
【０００６】
本発明は、上述の課題を解決することのできるテストコード生成装置、テストコード生成方法およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００７】
本発明の第１の態様によれば、テストコード生成装置は、宣言的モデルの情報から、その宣言的モデルの構成要素の情報を抽出する情報取得部と、前記構成要素の情報に紐づけられているテストコードのテンプレートを取得するテンプレート取得部と、前記テンプレートに適用するパラメータ値を、前記構成要素の情報に紐づけられているルールに従って取得するパラメータ値取得部と、得られたパラメータ値を前記テンプレートに適用してテストコードを取得するパラメータ値適用部と、を備える。
【０００８】
本発明の第２の態様によれば、テストコード生成方法は、宣言的モデルの情報から、その宣言的モデルの構成要素の情報を抽出する工程と、前記構成要素の情報に紐づけられているテストコードのテンプレートを取得する工程と、前記テンプレートに適用するパラメータ値を、前記構成要素の情報に紐づけられているルールに従って取得する工程と、得られたパラメータ値を前記テンプレートに適用してテストコードを取得する工程と、を含む。
【０００９】
本発明の第３の態様によれば、プログラムは、コンピュータに、宣言的モデルの情報から、その宣言的モデルの構成要素の情報を抽出する工程と、前記構成要素の情報に紐づけられているテストコードのテンプレートを取得する工程と、前記テンプレートに適用するパラメータ値を、前記構成要素の情報に紐づけられているルールに従って取得する工程と、得られたパラメータ値を前記テンプレートに適用してテストコードを取得する工程と、を実行させるためのプログラムである。
【発明の効果】
【００１０】
この発明によれば、宣言的モデルを用いて構築されたシステムに対して、より適切にテストを行うことができる。
【図面の簡単な説明】
【００１１】
【図１】実施形態に係るテストコード生成装置の配置例を示す概略構成図である。
【図２】実施形態に係る宣言的モデルオーケストレーション装置の機能構成の例を示す概略ブロック図である。
【図３】実施形態に係るテストコード生成装置の機能構成の例を示す概略ブロック図である。
【図４】実施形態に係るテスト情報記憶部が記憶するテンプレート情報の例を示す図である。
【図５】実施形態に係るテスト情報記憶部が記憶するテスト情報の例を示す図である。
【図６】実施形態に係る宣言的モデルの例を示す図である。
【図７】実施形態に係る構成要素およびサーバ情報の抽出例を示す図である。
【図８】実施形態に係るパラメータ値の取得例を示す図である。
【図９】実施形態に係るテストコード生成部が生成するテストコードの第１例を示す図である。
【図１０】実施形態に係るテストコード生成部が生成するテストコードの第２例を示す図である。
【図１１】実施形態に係るテストコード生成装置がテストコードを生成する処理手順の例を示す図である。
【図１２】実施形態に係るテストコード生成装置の構成の例を示す図である。
【図１３】実施形態に係るテストコード生成方法における処理の手順の例を示す図である。
【図１４】少なくとも１つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図１は、実施形態に係るテストコード生成装置の配置例を示す概略構成図である。図１に示す構成で、宣言的モデルオーケストレーション装置１００と、テストコード生成装置２００と、実行環境５００とが、通信ネットワーク９００に接続されている。宣言的モデルオーケストレーション装置１００と、テストコード生成装置２００と、実行環境５００とは、通信ネットワーク９００を介して通信を行う。
【００１３】
宣言的モデルオーケストレーション装置１００は、対象システム（実行環境５００に実行させるシステム）の宣言的モデルを解釈して実行環境に応じた処理形式に変換し、プロビジョニング処理を行う装置である。宣言的モデルでは、モデルによって対象システムの性質（特に、そのシステムの出力の性質ないし内容）が示される。
宣言的モデルオーケストレーション装置１００の例として、OASIS (Organization for the Advancement of Structured Information Standards) TOSCA (Topology and Orchestration Specification for Cloud Applications) リファレンス実装、および、OpenStack Heat 実装を挙げることができるが、これらに限定されない。
【００１４】
実行環境５００は、対象システムを稼働させる実行環境である。実行環境５００に、仮想マシン、コンテナ、または物理サーバの何れが用いられていてもよいし、これらの組み合わせが用いられていてもよい。実行環境５００の例として、OpenStack、AWS、および、VMware を挙げることができるが、これらに限定されない。
【００１５】
テストコード生成装置２００は、対象システムをテストするためのテストコードを自動生成する。具体的には、テストコード生成装置２００は、対象システムのコードを宣言的モデルオーケストレーション装置１００から取得し、対象システムの構成要素の情報を抽出する。テストコード生成装置２００は、構成要素毎に予め用意されたテンプレートに、対象システムの構成要素の情報に基づいて取得したパラメータ値を適用することで、テストコードを生成する。
【００１６】
通信ネットワーク９００は、宣言的モデルオーケストレーション装置１００と、テストコード生成装置２００と、実行環境５００との通信を仲介する。通信ネットワーク９００は、特定の種類のネットワークに限定されない。例えば、通信ネットワーク９００がインターネット（Internet）であり、テストコード生成装置２００がクラウドサービスを提供するようになっていてもよいが、これに限定されない。
【００１７】
図２は、宣言的モデルオーケストレーション装置１００の機能構成の例を示す概略ブロック図である。図２に示す構成で、宣言的モデルオーケストレーション装置１００は、第一通信部１１０と、第一記憶部１８０と、第一制御部１９０とを備える。第一制御部１９０は、宣言的モデルオーケストレータ部１９１と、プロビジョニング処理実行部１９２とを備える。
第一通信部１１０は、他の装置と通信を行う。特に、第一通信部１１０は、対象システムをプロビジョニングするための命令を実行環境５００に送信して実行させる。また、第一通信部１１０は、テストコード生成装置２００に対して対象システムのコードを送信する。
【００１８】
第一記憶部１８０は、各種情報を記憶する。第一記憶部１８０は、宣言的モデルオーケストレーション装置１００が備える記憶デバイスを用いて構成される。
特に、第一記憶部１８０は、宣言的モデル、宣言的モデルの構成要素、実行時のパラメータを格納（記憶）する。例えば OASIS TOSCA では、宣言的モデルは Service Template と言われているシステム構成全体を表す定義であり、構成要素は Node Type や Relationship Type などの Type と言われている型定義である。宣言的モデルはこの型定義をもとに記述する。また、実行時のパラメータはTopology Template（Service Template の一部）の inputs で指定されるようなユーザが指定する値、あるいは実行環境から取得される値である。
【００１９】
第一制御部１９０は、宣言的モデルオーケストレーション装置１００の各部を制御して各種処理を実行する。第一制御部１９０の機能は、宣言的モデルオーケストレーション装置１００が備えるＣＰＵ（Central Processing Unit、中央処理装置）が、第一記憶部１８０からプログラムを読み出して実行することで実行される。
【００２０】
宣言的モデルオーケストレータ部１９１は、宣言的モデルおよびその宣言的モデルに適用されるパラメータ値を、実行処理を行う内部インタプリタのデータ形式にデータ変換する。例えば宣言的モデルオーケストレータ部１９１は、宣言的モデルおよびパラメータ値を、実行環境５００に対応した命令を部品とするワークフローに変換するように動作する。
【００２１】
プロビジョニング処理実行部１９２は、宣言的モデルオーケストレータ部１９１が生成した内部インタプリタの形式のデータを実行することで、実行環境５００への対象システムのプロビジョニング処理を行う。例えばプロビジョニング処理実行部１９２は、前記のようにワークフローを実行する機能を有する。
【００２２】
図３は、テストコード生成装置２００の機能構成の例を示す概略ブロック図である。図３に示す構成で、テストコード生成装置２００は、第二通信部２１０と、第二記憶部２８０と、第二制御部２９０とを備える。第二記憶部２８０は、テスト情報記憶部２８１を備える。第二制御部２９０は、情報取得部２９１と、テストコード生成部２９２とを備える。テストコード生成部２９２は、テンプレート取得部２９３と、パラメータ値取得部２９４と、パラメータ値適用部２９５とを備える。
第二通信部２１０は、他の装置と通信を行う。特に、第二通信部２１０は、宣言的モデルオーケストレーション装置１００から対象システムのコードを受信する。また、第二通信部２１０は、宣言的モデルオーケストレーション装置１００からパラメータ値を受信する。
【００２３】
第二記憶部２８０は、各種情報を記憶する。第二記憶部２８０は、テストコード生成装置２００が備える記憶デバイスを用いて構成される。
テスト情報記憶部２８１は、宣言的モデルの構成要素に対するテストコードのテンプレート（ひな型）とパラメータの置換ルールとを格納（記憶）する。テスト情報記憶部２８１は、宣言的モデルの構成要素に対するテストコードのテンプレートを、後述するテンプレート情報の形式で記憶する。また、テスト情報記憶部２８１は、後述するテスト情報に、パラメータの置換ルールを含んで記憶する。
第二制御部２９０は、テストコード生成装置２００の各部を制御して各種処理を実行する。第二制御部２９０の機能は、テストコード生成装置２００が備えるＣＰＵが、第二記憶部２８０からプログラムを読み出して実行することで実行される。
【００２４】
情報取得部２９１は、第二通信部２１０を介して宣言的モデルオーケストレーション装置１００と通信を行い、第一記憶部１８０に格納されている情報を取得する。
テストコード生成部２９２は、情報取得部２９１が取得した情報とテスト情報記憶部２８１に格納されている情報（テンプレート情報およびテスト情報）とをもとに、宣言的モデルから作成されたシステム（対象システム）に対するテストコードを生成する。
【００２５】
テンプレート取得部２９３は、宣言的モデルの構成要素に対するテストコードのテンプレートを取得する。具体的には、テンプレート取得部２９３は、宣言的モデルの構成要素の情報に基づいて、その構成要素をテストするためのテストコードのテンプレートをテスト情報記憶部２８１から読み出す。
【００２６】
パラメータ値取得部２９４は、宣言的モデルの構成要素に対するテストコードのテンプレートに含まれるパラメータのパラメータ値を取得する。具体的には、テスト情報記憶部２８１が、テストコードのテンプレート毎にそのテンプレートのパラメータ値の取得ルールを記憶しておく。パラメータ値取得部２９４は、その取得ルールに基づいてパラメータ値を取得する。パラメータ値の取得ルールが、パラメータ値を固定値（定数）で指定している場合もあるし、宣言的モデルオーケストレーション装置１００からパラメータ値を取得するよう指示する場合もある。あるいは、パラメータ値取得部２９４が、実行環境５００からパラメータ値を取得するようにしてもよい。
【００２７】
パラメータ値適用部２９５は、パラメータ値取得部２９４が取得したパラメータ値をテンプレート取得部２９３が取得したテンプレートに適用する。これにより、パラメータ値適用部２９５は、宣言的モデルの構成要素に対するテストコードを取得する。
上記構成により、テストコード生成装置２００は、テストコードを自動的に生成する機能を生み出すことが可能である。
【００２８】
テストコード生成装置２００が行う処理についてさらに詳細に説明する。
まず、事前の準備について説明する。
ユーザは宣言的モデルの構成要素に対するテストコードのテンプレート（ひな型）とパラメータの置換ルールとをテスト情報記憶部２８１に格納する。宣言的モデルの構成要素に対するテストコードのテンプレートを、テストコードのテンプレート、または、単にテンプレートとも称する。
【００２９】
図４は、テスト情報記憶部２８１が記憶するテンプレート情報の例を示す図である。
図４の例で、テンプレート情報は、表形式の情報として構成されており、テンプレート毎に、テンプレートＩＤと、テンプレート名と、テンプレートのソースコード（プログラム）とが示されている。
【００３０】
テンプレートＩＤは、テンプレートを識別する識別情報である。図４の例では、テンプレートＩＤとして通番が用いられているが、これに限定されない。
テンプレート名は、テンプレートに付されている名称である。テンプレートを識別する識別情報として、テンプレートＩＤに加えて、あるいは代えて、テンプレート名を用いることができる。
「テンプレート」の列のテストコード中で、パラメータ名が２つの「：」に挟まれて「：（パラメータ名）：」の形式で示されている。このパラメータ名が記述された部分は、パラメータ値適用部２９５によってパラメータ値に置換される。
【００３１】
図５は、テスト情報記憶部２８１が記憶するテスト情報の例を示す図である。
図５の例で、テスト情報は、表形式の情報として構成されており、テストＩＤと、１つ以上のテストＩＤに紐づけられるタイプ名と、テストＩＤ毎のテスト名、テンプレートＩＤ、および、パラメータ（パラメータ値の置換ルール）が示されている。
タイプ名（「タイプ名」の列の情報）は宣言的モデルの構成要素を示しており、テスト情報は、宣言的モデルの構成要素と、その構成要素に使用するテストコードのテンプレートとの対応関係の一覧を示している。
【００３２】
例えば、構成要素を示す「タイプ名」の列の「tosca.nodes.DBMS.MySQL」の欄と、「テンプレートＩＤ」の列の「１」、「２」、「３」および「４」の４つの欄とが紐づけられている。これによって、構成要素tosca.nodes.DBMS.MySQLに対して、図４のテンプレートのうち、テンプレートＩＤが「１」、「２」、「３」および「４」の４つのテンプレートを使用することが示されている。
【００３３】
「パラメータ」の列は、前記した置換対象となるパラメータ名と値の情報を格納する。ここで、パラメータ値には固定値の他に実行時のパラメータ値も指定可能とする。例えば、図５の例で「prop」、「req」の表記は、それぞれ、紐づけられる構成要素に対するproperties、requirementsを示す。これらは、情報取得部２９１が宣言的モデルオーケストレーション装置１００から値を取得することを示している。例えば「prop.port」との表記は、実行時に当該構成要素の「port」プロパティに指定された値を取得することを示す。
実行時にパラメータ値を取得する記述は、「prop」および「req」に限定されず、宣言的モデルオーケストレーション装置１００の種類に応じた記述とすることができる。
【００３４】
次に、テストコード生成装置２００による処理の実行について説明する。
情報取得部２９１は、テスト対象となるシステム（対象システム）を示す宣言的モデルの情報を宣言的モデルオーケストレーション装置１００から取得する。
図６は、宣言的モデルの例を示す図である。
テストコード生成部２９２は、図６に例示される宣言的モデルから、その宣言的モデルの構成要素を抽出する。構成要素には、プロビジョニング先のサーバ情報（仮想サーバ、コンテナおよび物理サーバの何れでもよい）と、そのサーバ情報が示すサーバ上で動作するミドルウェアまたはアプリケーション等の機能の情報とを含む。
【００３５】
図７は、構成要素およびサーバ情報の抽出例を示す図である。
図７の例では、テストコード生成部２９２が図６の宣言的モデルから抽出したノード名と、そのノードのタイプ名（構成要素）と、そのノードがプロビジョニングされるサーバ情報とが示されている。
【００３６】
テストコード生成部２９２は、図６の例で「node_templates」のラベルの下に示される「wrodpress」、「apache」、「web_serber」、「wordpress_db」、「mysql」、「db_server」の各ラベルを、ノード名の表記として抽出し、図７の「ノード名」の列に書き込む。
また、テストコード生成部２９２は、ノード毎に、「type:・・・」で示されるタイプ名（構成要素）を抽出し、図７の「タイプ名」の列に書き込む。
【００３７】
また、テストコード生成部２９２は、ノード毎に「host:・・・」の記載を検出し、そこに記載されるノードをさらに辿ってサーバ名を抽出する。例えば、テストコード生成部２９２は、「wordpress」ノードの「host:apache」との記載を検出してノード「appache」を辿り、「host:web_server」との記載を検出する。さらに「web_server」ノードを辿ると「host:・・・」の記載がないことから、テストコード生成部２９２は、サーバ名が「web_server」であると判定して図７の「サーバ」の列の該当欄に書き込む。
【００３８】
テストコード生成部２９２は、同様に、「apache」、「wordpress_db」、「myspl」の各ノードについて、それぞれサーバ名「web_server」、「db_server」、「db_server」を検出して図７の「サーバ」の列の該当欄に書き込んでいる。
一方、「web_server」、「db_server」の各ノードについては、「host:・・・」の記載がないことからサーバ名を検出しない。図７の例では、サーバ名を検出しないことを「-」で示している。
【００３９】
さらに、テストコード生成部２９２は当該抽出情報とテスト情報（図５）とをもとに、実施が必要なテストを決定する。
図７の例の場合、テストコード生成部２９２は、図７に示されるタイプ名（構成要素）毎に、図５でそのタイプ名に紐づけられているテストを行うことに決定する。例えば、テストコード生成部２９２は、db_server 上の mysql ノードに対してテストＩＤ「１」、「２」、「３」および「４」のテストを行うことに決定する。また、テストコード生成部２９２は、wordpress_db ノードに対してテストＩＤ「５」のテストを行うことに決定する。また、テストコード生成部２９２は、web_server 上の apache ノードに対してテストＩＤ「６」、「７」および「８」のテストを行うことに決定する。さらに、テストコード生成部２９２は、wordpress ノードに対してテストＩＤ「９」および「１０」のテストを行うことに決定する。
【００４０】
さらに、テストコード生成部２９２はパラメータ置換のために必要な情報を宣言的モデルオーケストレーション装置１００から情報取得部２９１を通して取得する。そして、テストコード生成部２９２は、テストコードのテンプレートの対象部分を得られた情報に置換してテストコードを生成する。
【００４１】
図８は、パラメータ値の取得例を示す図である。
図８の例では、パラメータ名毎に、テストコード生成部２９２が取得するパラメータ値の例が示されている。例えば、テストコード生成部２９２は、wp_db_nameパラメータの値として「wordpress」を取得する。
【００４２】
図９は、テストコード生成部２９２が生成するテストコードの第１例を示す図である。図９は、テストコード生成部２９２が生成する、db_serverに対するテストコードの例を示す。
図９の例で、テストコード生成部２９２は、db_serverに対するテストとして上記のように決定したテストＩＤ「１」、「２」、「３」、「４」および「５」の各テストのテンプレートＩＤ「１」、「２」、「３」、「４」および「５」を、図５に例示するテスト情報から読み出す。
【００４３】
そして、テストコード生成部２９２は、読み出したテンプレートＩＤのテンプレートを図４に例示するテンプレート情報から読み出す。
さらに、テストコード生成部２９２は、読み出したテンプレートに対し、図５に示されるルールに従ってパラメータ値を挿入する。
【００４４】
例えば、テストコード生成部２９２は、テンプレートＩＤ「１」のテンプレートの「:package:」の記載を、図５のルールに従って「mysql」に置き換える。また、テストコード生成部２９２は、テンプレートＩＤ「３」のテンプレートの「:port:」の記載を、図５のルールに従って、db_serverから得られた値「3306」（図８の「mysql_port」の行参照）に置き換える。
これにより、テストコード生成部２９２は、db_serverに対するテストコードとして、図９に示されるテストコードを取得する。
【００４５】
図１０は、テストコード生成部２９２が生成するテストコードの第２例を示す図である。図１０は、テストコード生成部２９２が生成する、web_serverに対するテストコードの例を示す。
テストコード生成部２９２は、web_serverに対するテストについても、上記のように決定したテストＩＤ「６」、「７」、「８」、「９」および「１０」の各テストのテンプレートＩＤ「１」、「２」、「３」、「６」および「７」を、図５に例示するテスト情報から読み出す。
【００４６】
そして、テストコード生成部２９２は、読み出したテンプレートＩＤのテンプレートを図４に例示するテンプレート情報から読み出す。
さらに、テストコード生成部２９２は、読み出したテンプレートに対し、図５に示されるルールに従ってパラメータ値を挿入する。
これにより、テストコード生成部２９２は、web_serverに対するテストコードとして、図１０に示されるテストコードを取得する。
【００４７】
次に、図１１を参照してテストコード生成装置２００の動作について説明する。
図１１は、テストコード生成装置２００がテストコードを生成する処理手順の例を示す図である。
図１１の処理で、情報取得部２９１は、宣言的モデルの構成要素を示す構成要素情報を取得する（ステップＳ１０１）。具体的には、情報取得部２９１は、第一通信部１１０が宣言的モデルオーケストレーション装置１００から取得する宣言的モデルのコード（対象システムのコード）を解析して、構成要素情報を抽出する。
【００４８】
次に、テンプレート取得部２９３は、宣言的モデルの構成要素のテストコードのテンプレートを取得する（ステップＳ１０２）。具体的には、テストコード生成部２９２が、テスト情報記憶部２８１が記憶しているテスト情報を参照して、宣言的モデルの構成要素（対象システムの構成要素）に対するテストを決定する。そして、テンプレート取得部２９３は、決定したテストに紐づけられているテストコードのテンプレートを取得する。
【００４９】
また、パラメータ値取得部２９４は、テンプレート取得部２９３が取得したテンプレートに適用するためのパラメータ値を取得する（ステップＳ１０３）。具体的には、パラメータ値取得部２９４は、テストコード生成部２８２が決定したテストに紐づけられているパラメータ値取得ルールに従ってパラメータ値を取得する。
【００５０】
パラメータ値適用部２９５は、テンプレート取得部２９３が取得したテンプレートに、パラメータ値取得部２９４が取得したパラメータ値を適用する（ステップＳ１０４）。これにより、パラメータ値適用部２９５は、宣言的モデルをテストするためのテストコードを取得する。
ステップＳ１０４の後、テストコード生成装置２００は、図１１の処理を終了する。
【００５１】
以上のように、情報取得部２９１は、宣言的モデルの情報から、その宣言的モデルの構成要素の情報を抽出する。テンプレート取得部２９３は、構成要素の情報に紐づけられているテストコードのテンプレートを取得する。パラメータ値取得部２９４は、テンプレートに適用するパラメータ値を、構成要素の情報に紐づけられているルールに従って取得する。パラメータ値適用部２９５は、得られたパラメータ値をテンプレートに適用してテストコードを取得する。
【００５２】
テストコード生成装置２００によれば、宣言的モデルを用いて構築されたシステムに対するテストコードを、システムの構成に応じて自動的に生成することができる。テストコードを自動生成できる点で、テストコード生成装置２００では、テストコードを生成する人的負担を必要とせず、また、人的なスキルを必要としない。したがって、テストコード生成装置２００では、人的スキルの不足により適切なテストコードを生成できないといった事態を回避できる。また、テストコード生成装置２００では、人的ミスによって適切なテストコードを生成できないといった事態も回避できる。
このように、テストコード生成装置２００によれば、宣言的モデルを用いて構築されたシステムに対して、より適切にテストを行うことができる。
【００５３】
また、パラメータ値取得部２９４は、パラメータ値取得のルールがパラメータ値を要求することを示している場合、そのルールに従って宣言的モデルオーケストレーション装置１００からパラメータ値を取得する。
これにより、テストコード生成装置２００では、パラメータ値がノードに応じて定まる場合に対応してテストコードを自動的に生成することができる。
【００５４】
図１２は、実施形態に係るテストコード生成装置の構成の例を示す図である。図１２に示すテストコード生成装置４００は、情報取得部４０１と、テンプレート取得部４０２と、パラメータ値取得部４０３と、パラメータ値適用部４０４とを備える。
【００５５】
かかる構成にて、情報取得部４０１は、宣言的モデルの情報から、その宣言的モデルの構成要素の情報を抽出する。テンプレート取得部４０２は、構成要素の情報に紐づけられているテストコードのテンプレートを取得する。パラメータ値取得部４０３は、テンプレートに適用するパラメータ値を、構成要素の情報に紐づけられているルールに従って取得する。パラメータ値適用部４０４は、得られたパラメータ値をテンプレートに適用してテストコードを取得する。
【００５６】
テストコード生成装置４００によれば、宣言的モデルを用いて構築されたシステムに対するテストコードを、システムの構成に応じて自動的に生成することができる。テストコードを自動生成できる点で、テストコード生成装置４００では、テストコードを生成する人的負担を必要とせず、また、人的なスキルを必要としない。したがって、テストコード生成装置４００では、人的スキルの不足により適切なテストコードを生成できないといった事態を回避できる。また、テストコード生成装置４００では、人的ミスによって適切なテストコードを生成できないといった事態も回避できる。
このように、テストコード生成装置４００によれば、宣言的モデルを用いて構築されたシステムに対して、より適切にテストを行うことができる。
【００５７】
図１３は、実施形態に係るテストコード生成方法における処理の手順の例を示す図である。図１３に示すテストコード生成方法は、構成要素情報およびサーバ情報の取得工程（ステップＳ２０１）と、テンプレート取得工程（ステップＳ２０２）と、パラメータ値取得工程（ステップＳ２０３）と、パラメータ値適用工程（ステップＳ２０４）とを含む。
【００５８】
構成要素情報およびサーバ情報の取得工程（ステップＳ２０１）では、宣言的モデルの情報から、その宣言的モデルの構成要素の情報を抽出する。テンプレート取得工程（ステップＳ２０２）では、構成要素の情報に紐づけられているテストコードのテンプレートを取得する。パラメータ値取得工程（ステップＳ２０３）では、テンプレートに適用するパラメータ値を、構成要素の情報に紐づけられているルールに従って取得する。パラメータ値適用工程（ステップＳ２０４）では、得られたパラメータ値をテンプレートに適用してテストコードを取得する。
【００５９】
このテストコード生成方法によれば、宣言的モデルを用いて構築されたシステムに対するテストコードを、システムの構成に応じて自動的に生成することができる。このテストコード生成方法では、テストコードを自動生成できる点で、テストコードを生成する人的負担を必要とせず、また、人的なスキルを必要としない。したがって、このテストコード生成方法では、人的スキルの不足により適切なテストコードを生成できないといった事態を回避できる。また、このテストコード生成方法では、人的ミスによって適切なテストコードを生成できないといった事態も回避できる。
このように、このテストコード生成方法によれば、宣言的モデルを用いて構築されたシステムに対して、より適切にテストを行うことができる。
【００６０】
図１４は、少なくとも１つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
図１４に示す構成で、コンピュータ７００は、ＣＰＵ７１０と、主記憶装置７２０と、補助記憶装置７３０と、インタフェース７４０とを備える。
上記のテストコード生成装置２００および４００のうち何れか１つ以上が、コンピュータ７００に実装されてもよい。その場合、上述した各処理部の動作は、プログラムの形式で補助記憶装置７３０に記憶されている。ＣＰＵ７１０は、プログラムを補助記憶装置７３０から読み出して主記憶装置７２０に展開し、当該プログラムに従って上記処理を実行する。また、ＣＰＵ７１０は、プログラムに従って、上述した各記憶部に対応する記憶領域を主記憶装置７２０に確保する。各装置と他の装置との通信は、インタフェース７４０が通信機能を有し、ＣＰＵ７１０の制御に従って通信を行うことで実行される。
【００６１】
テストコード生成装置２００がコンピュータ７００に実装される場合、第二制御部２９０の動作は、プログラムの形式で補助記憶装置７３０に記憶されている。ＣＰＵ７１０は、プログラムを補助記憶装置７３０から読み出して主記憶装置７２０に展開し、当該プログラムに従って上記処理を実行する。
また、ＣＰＵ７１０は、プログラムに従って、第二記憶部２８０に対応する記憶領域を主記憶装置７２０に確保する。第二通信部２１０が行う通信は、インタフェース７４０が通信機能を有し、ＣＰＵ７１０の制御に従って通信を行うことで実行される。
【００６２】
テストコード生成装置４００がコンピュータ７００に実装される場合、情報取得部４０１、テンプレート取得部４０２、パラメータ値取得部４０３、および、パラメータ値適用部４０４の動作は、プログラムの形式で補助記憶装置７３０に記憶されている。ＣＰＵ７１０は、プログラムを補助記憶装置７３０から読み出して主記憶装置７２０に展開し、当該プログラムに従って上記処理を実行する。
【００６３】
なお、テストコード生成装置２００および４００が行う処理の全部または一部を実行するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ（Read Only Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【００６４】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００６５】
１００  宣言的モデルオーケストレーション装置
１１０  第一通信部
１８０  第一記憶部
１９０  第一制御部
１９１  宣言的モデルオーケストレータ部
１９２  プロビジョニング処理実行部
２００、４００  テストコード生成装置
２１０  第二通信部
２８０  第二記憶部
２９０  第二制御部
２９１、４０１  情報取得部
２９２  テストコード生成部
２９３、４０２  テンプレート取得部
２９４、４０３  パラメータ値取得部
２９５、４０４  パラメータ値適用部
５００  実行環境
９００  通信ネットワーク
【図１】
2020181509.tif 000003
【図２】
2020181509.tif 000004
【図３】
2020181509.tif 000005
【図４】
2020181509.tif 000006
【図５】
2020181509.tif 000007
【図６】
2020181509.tif 000008
【図７】
2020181509.tif 000009
【図８】
2020181509.tif 000010
【図９】
2020181509.tif 000011
【図１０】
2020181509.tif 000012
【図１１】
2020181509.tif 000013
【図１２】
2020181509.tif 000014
【図１３】
2020181509.tif 000015
【図１４】
2020181509.tif 000016