JP2020181509A - テストコード生成装置、テストコード生成方法およびプログラム - Google Patents
テストコード生成装置、テストコード生成方法およびプログラム Download PDFInfo
- Publication number
- JP2020181509A JP2020181509A JP2019085935A JP2019085935A JP2020181509A JP 2020181509 A JP2020181509 A JP 2020181509A JP 2019085935 A JP2019085935 A JP 2019085935A JP 2019085935 A JP2019085935 A JP 2019085935A JP 2020181509 A JP2020181509 A JP 2020181509A
- Authority
- JP
- Japan
- Prior art keywords
- test code
- information
- template
- test
- parameter value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 239000000284 extract Substances 0.000 claims abstract description 11
- 238000000034 method Methods 0.000 claims description 32
- 238000010586 diagram Methods 0.000 description 18
- 230000000875 corresponding Effects 0.000 description 5
- 239000000203 mixture Substances 0.000 description 3
- 238000000605 extraction Methods 0.000 description 1
- 230000003287 optical Effects 0.000 description 1
- 230000002093 peripheral Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Abstract
【課題】宣言的モデルを用いて構築されたシステムに対して、より適切にテストを行えるテストコード生成装置を提供する。【解決手段】テストコード生成装置200は、情報取得部291と、テンプレート取得部293と、パラメータ値取得部294と、パラメータ値適用部295と、を備える。情報取得部は、宣言的モデルの情報から、その宣言的モデルの構成要素の情報を抽出する。テンプレート取得部は、構成要素の情報に紐づけられているテストコードのテンプレートを取得する。パラメータ値取得部は、テンプレートに適用するパラメータ値を、構成要素の情報に紐づけられているルールに従って取得する。パラメータ値適用部は、得られたパラメータ値をテンプレートに適用してテストコードを取得する。【選択図】図3
Description
本発明は、テストコード生成装置、テストコード生成方法およびプログラムに関する。
プログラムまたはシステムのテストに関して幾つかの技術が提案されている。
例えば、特許文献1に記載の方法では、アプリケーションにかかわる複数の独立したテストケースを、テストケース毎に異なる動作環境で実行する。テストケース毎の動作環境は、テストマスタドキュメントと呼ばれるテストドキュメントによって示される。
例えば、特許文献1に記載の方法では、アプリケーションにかかわる複数の独立したテストケースを、テストケース毎に異なる動作環境で実行する。テストケース毎の動作環境は、テストマスタドキュメントと呼ばれるテストドキュメントによって示される。
プログラムを用いてシステムを構築する方法の1つに、宣言的モデルを用いてシステムを構築する方法がある。宣言的モデルから構築されたシステムが、モデルの作成ミス、パラメータ誤り、または、実行環境の問題など様々な理由により正しく動作しないことがある。このため、宣言的モデルから構築されたシステムに対して宣言(意図)した通りに構築され正しく動作するかの確認が必要とされる。
構築されたシステムに対してテストを行う都度、手作業でテスト設計(テスト項目の決定等)してテストコードを生成する場合、適切なテスト設計およびテストコード生成には高いスキルが求められ、作業者のスキルによってはテスト設計およびテストコード生成を適切に行えない場合がある。また、テスト設計やテストコード作成でミスが発生した場合も、テストを適切に行えない。
本発明は、上述の課題を解決することのできるテストコード生成装置、テストコード生成方法およびプログラムを提供することを目的としている。
本発明の第1の態様によれば、テストコード生成装置は、宣言的モデルの情報から、その宣言的モデルの構成要素の情報を抽出する情報取得部と、前記構成要素の情報に紐づけられているテストコードのテンプレートを取得するテンプレート取得部と、前記テンプレートに適用するパラメータ値を、前記構成要素の情報に紐づけられているルールに従って取得するパラメータ値取得部と、得られたパラメータ値を前記テンプレートに適用してテストコードを取得するパラメータ値適用部と、を備える。
本発明の第2の態様によれば、テストコード生成方法は、宣言的モデルの情報から、その宣言的モデルの構成要素の情報を抽出する工程と、前記構成要素の情報に紐づけられているテストコードのテンプレートを取得する工程と、前記テンプレートに適用するパラメータ値を、前記構成要素の情報に紐づけられているルールに従って取得する工程と、得られたパラメータ値を前記テンプレートに適用してテストコードを取得する工程と、を含む。
本発明の第3の態様によれば、プログラムは、コンピュータに、宣言的モデルの情報から、その宣言的モデルの構成要素の情報を抽出する工程と、前記構成要素の情報に紐づけられているテストコードのテンプレートを取得する工程と、前記テンプレートに適用するパラメータ値を、前記構成要素の情報に紐づけられているルールに従って取得する工程と、得られたパラメータ値を前記テンプレートに適用してテストコードを取得する工程と、を実行させるためのプログラムである。
この発明によれば、宣言的モデルを用いて構築されたシステムに対して、より適切にテストを行うことができる。
以下、本発明の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、実施形態に係るテストコード生成装置の配置例を示す概略構成図である。図1に示す構成で、宣言的モデルオーケストレーション装置100と、テストコード生成装置200と、実行環境500とが、通信ネットワーク900に接続されている。宣言的モデルオーケストレーション装置100と、テストコード生成装置200と、実行環境500とは、通信ネットワーク900を介して通信を行う。
図1は、実施形態に係るテストコード生成装置の配置例を示す概略構成図である。図1に示す構成で、宣言的モデルオーケストレーション装置100と、テストコード生成装置200と、実行環境500とが、通信ネットワーク900に接続されている。宣言的モデルオーケストレーション装置100と、テストコード生成装置200と、実行環境500とは、通信ネットワーク900を介して通信を行う。
宣言的モデルオーケストレーション装置100は、対象システム(実行環境500に実行させるシステム)の宣言的モデルを解釈して実行環境に応じた処理形式に変換し、プロビジョニング処理を行う装置である。宣言的モデルでは、モデルによって対象システムの性質(特に、そのシステムの出力の性質ないし内容)が示される。
宣言的モデルオーケストレーション装置100の例として、OASIS (Organization for the Advancement of Structured Information Standards) TOSCA (Topology and Orchestration Specification for Cloud Applications) リファレンス実装、および、OpenStack Heat 実装を挙げることができるが、これらに限定されない。
宣言的モデルオーケストレーション装置100の例として、OASIS (Organization for the Advancement of Structured Information Standards) TOSCA (Topology and Orchestration Specification for Cloud Applications) リファレンス実装、および、OpenStack Heat 実装を挙げることができるが、これらに限定されない。
実行環境500は、対象システムを稼働させる実行環境である。実行環境500に、仮想マシン、コンテナ、または物理サーバの何れが用いられていてもよいし、これらの組み合わせが用いられていてもよい。実行環境500の例として、OpenStack、AWS、および、VMware を挙げることができるが、これらに限定されない。
テストコード生成装置200は、対象システムをテストするためのテストコードを自動生成する。具体的には、テストコード生成装置200は、対象システムのコードを宣言的モデルオーケストレーション装置100から取得し、対象システムの構成要素の情報を抽出する。テストコード生成装置200は、構成要素毎に予め用意されたテンプレートに、対象システムの構成要素の情報に基づいて取得したパラメータ値を適用することで、テストコードを生成する。
通信ネットワーク900は、宣言的モデルオーケストレーション装置100と、テストコード生成装置200と、実行環境500との通信を仲介する。通信ネットワーク900は、特定の種類のネットワークに限定されない。例えば、通信ネットワーク900がインターネット(Internet)であり、テストコード生成装置200がクラウドサービスを提供するようになっていてもよいが、これに限定されない。
図2は、宣言的モデルオーケストレーション装置100の機能構成の例を示す概略ブロック図である。図2に示す構成で、宣言的モデルオーケストレーション装置100は、第一通信部110と、第一記憶部180と、第一制御部190とを備える。第一制御部190は、宣言的モデルオーケストレータ部191と、プロビジョニング処理実行部192とを備える。
第一通信部110は、他の装置と通信を行う。特に、第一通信部110は、対象システムをプロビジョニングするための命令を実行環境500に送信して実行させる。また、第一通信部110は、テストコード生成装置200に対して対象システムのコードを送信する。
第一通信部110は、他の装置と通信を行う。特に、第一通信部110は、対象システムをプロビジョニングするための命令を実行環境500に送信して実行させる。また、第一通信部110は、テストコード生成装置200に対して対象システムのコードを送信する。
第一記憶部180は、各種情報を記憶する。第一記憶部180は、宣言的モデルオーケストレーション装置100が備える記憶デバイスを用いて構成される。
特に、第一記憶部180は、宣言的モデル、宣言的モデルの構成要素、実行時のパラメータを格納(記憶)する。例えば OASIS TOSCA では、宣言的モデルは Service Template と言われているシステム構成全体を表す定義であり、構成要素は Node Type や Relationship Type などの Type と言われている型定義である。宣言的モデルはこの型定義をもとに記述する。また、実行時のパラメータはTopology Template(Service Template の一部)の inputs で指定されるようなユーザが指定する値、あるいは実行環境から取得される値である。
特に、第一記憶部180は、宣言的モデル、宣言的モデルの構成要素、実行時のパラメータを格納(記憶)する。例えば OASIS TOSCA では、宣言的モデルは Service Template と言われているシステム構成全体を表す定義であり、構成要素は Node Type や Relationship Type などの Type と言われている型定義である。宣言的モデルはこの型定義をもとに記述する。また、実行時のパラメータはTopology Template(Service Template の一部)の inputs で指定されるようなユーザが指定する値、あるいは実行環境から取得される値である。
第一制御部190は、宣言的モデルオーケストレーション装置100の各部を制御して各種処理を実行する。第一制御部190の機能は、宣言的モデルオーケストレーション装置100が備えるCPU(Central Processing Unit、中央処理装置)が、第一記憶部180からプログラムを読み出して実行することで実行される。
宣言的モデルオーケストレータ部191は、宣言的モデルおよびその宣言的モデルに適用されるパラメータ値を、実行処理を行う内部インタプリタのデータ形式にデータ変換する。例えば宣言的モデルオーケストレータ部191は、宣言的モデルおよびパラメータ値を、実行環境500に対応した命令を部品とするワークフローに変換するように動作する。
プロビジョニング処理実行部192は、宣言的モデルオーケストレータ部191が生成した内部インタプリタの形式のデータを実行することで、実行環境500への対象システムのプロビジョニング処理を行う。例えばプロビジョニング処理実行部192は、前記のようにワークフローを実行する機能を有する。
図3は、テストコード生成装置200の機能構成の例を示す概略ブロック図である。図3に示す構成で、テストコード生成装置200は、第二通信部210と、第二記憶部280と、第二制御部290とを備える。第二記憶部280は、テスト情報記憶部281を備える。第二制御部290は、情報取得部291と、テストコード生成部292とを備える。テストコード生成部292は、テンプレート取得部293と、パラメータ値取得部294と、パラメータ値適用部295とを備える。
第二通信部210は、他の装置と通信を行う。特に、第二通信部210は、宣言的モデルオーケストレーション装置100から対象システムのコードを受信する。また、第二通信部210は、宣言的モデルオーケストレーション装置100からパラメータ値を受信する。
第二通信部210は、他の装置と通信を行う。特に、第二通信部210は、宣言的モデルオーケストレーション装置100から対象システムのコードを受信する。また、第二通信部210は、宣言的モデルオーケストレーション装置100からパラメータ値を受信する。
第二記憶部280は、各種情報を記憶する。第二記憶部280は、テストコード生成装置200が備える記憶デバイスを用いて構成される。
テスト情報記憶部281は、宣言的モデルの構成要素に対するテストコードのテンプレート(ひな型)とパラメータの置換ルールとを格納(記憶)する。テスト情報記憶部281は、宣言的モデルの構成要素に対するテストコードのテンプレートを、後述するテンプレート情報の形式で記憶する。また、テスト情報記憶部281は、後述するテスト情報に、パラメータの置換ルールを含んで記憶する。
第二制御部290は、テストコード生成装置200の各部を制御して各種処理を実行する。第二制御部290の機能は、テストコード生成装置200が備えるCPUが、第二記憶部280からプログラムを読み出して実行することで実行される。
テスト情報記憶部281は、宣言的モデルの構成要素に対するテストコードのテンプレート(ひな型)とパラメータの置換ルールとを格納(記憶)する。テスト情報記憶部281は、宣言的モデルの構成要素に対するテストコードのテンプレートを、後述するテンプレート情報の形式で記憶する。また、テスト情報記憶部281は、後述するテスト情報に、パラメータの置換ルールを含んで記憶する。
第二制御部290は、テストコード生成装置200の各部を制御して各種処理を実行する。第二制御部290の機能は、テストコード生成装置200が備えるCPUが、第二記憶部280からプログラムを読み出して実行することで実行される。
情報取得部291は、第二通信部210を介して宣言的モデルオーケストレーション装置100と通信を行い、第一記憶部180に格納されている情報を取得する。
テストコード生成部292は、情報取得部291が取得した情報とテスト情報記憶部281に格納されている情報(テンプレート情報およびテスト情報)とをもとに、宣言的モデルから作成されたシステム(対象システム)に対するテストコードを生成する。
テストコード生成部292は、情報取得部291が取得した情報とテスト情報記憶部281に格納されている情報(テンプレート情報およびテスト情報)とをもとに、宣言的モデルから作成されたシステム(対象システム)に対するテストコードを生成する。
テンプレート取得部293は、宣言的モデルの構成要素に対するテストコードのテンプレートを取得する。具体的には、テンプレート取得部293は、宣言的モデルの構成要素の情報に基づいて、その構成要素をテストするためのテストコードのテンプレートをテスト情報記憶部281から読み出す。
パラメータ値取得部294は、宣言的モデルの構成要素に対するテストコードのテンプレートに含まれるパラメータのパラメータ値を取得する。具体的には、テスト情報記憶部281が、テストコードのテンプレート毎にそのテンプレートのパラメータ値の取得ルールを記憶しておく。パラメータ値取得部294は、その取得ルールに基づいてパラメータ値を取得する。パラメータ値の取得ルールが、パラメータ値を固定値(定数)で指定している場合もあるし、宣言的モデルオーケストレーション装置100からパラメータ値を取得するよう指示する場合もある。あるいは、パラメータ値取得部294が、実行環境500からパラメータ値を取得するようにしてもよい。
パラメータ値適用部295は、パラメータ値取得部294が取得したパラメータ値をテンプレート取得部293が取得したテンプレートに適用する。これにより、パラメータ値適用部295は、宣言的モデルの構成要素に対するテストコードを取得する。
上記構成により、テストコード生成装置200は、テストコードを自動的に生成する機能を生み出すことが可能である。
上記構成により、テストコード生成装置200は、テストコードを自動的に生成する機能を生み出すことが可能である。
テストコード生成装置200が行う処理についてさらに詳細に説明する。
まず、事前の準備について説明する。
ユーザは宣言的モデルの構成要素に対するテストコードのテンプレート(ひな型)とパラメータの置換ルールとをテスト情報記憶部281に格納する。宣言的モデルの構成要素に対するテストコードのテンプレートを、テストコードのテンプレート、または、単にテンプレートとも称する。
まず、事前の準備について説明する。
ユーザは宣言的モデルの構成要素に対するテストコードのテンプレート(ひな型)とパラメータの置換ルールとをテスト情報記憶部281に格納する。宣言的モデルの構成要素に対するテストコードのテンプレートを、テストコードのテンプレート、または、単にテンプレートとも称する。
図4は、テスト情報記憶部281が記憶するテンプレート情報の例を示す図である。
図4の例で、テンプレート情報は、表形式の情報として構成されており、テンプレート毎に、テンプレートIDと、テンプレート名と、テンプレートのソースコード(プログラム)とが示されている。
図4の例で、テンプレート情報は、表形式の情報として構成されており、テンプレート毎に、テンプレートIDと、テンプレート名と、テンプレートのソースコード(プログラム)とが示されている。
テンプレートIDは、テンプレートを識別する識別情報である。図4の例では、テンプレートIDとして通番が用いられているが、これに限定されない。
テンプレート名は、テンプレートに付されている名称である。テンプレートを識別する識別情報として、テンプレートIDに加えて、あるいは代えて、テンプレート名を用いることができる。
「テンプレート」の列のテストコード中で、パラメータ名が2つの「:」に挟まれて「:(パラメータ名):」の形式で示されている。このパラメータ名が記述された部分は、パラメータ値適用部295によってパラメータ値に置換される。
テンプレート名は、テンプレートに付されている名称である。テンプレートを識別する識別情報として、テンプレートIDに加えて、あるいは代えて、テンプレート名を用いることができる。
「テンプレート」の列のテストコード中で、パラメータ名が2つの「:」に挟まれて「:(パラメータ名):」の形式で示されている。このパラメータ名が記述された部分は、パラメータ値適用部295によってパラメータ値に置換される。
図5は、テスト情報記憶部281が記憶するテスト情報の例を示す図である。
図5の例で、テスト情報は、表形式の情報として構成されており、テストIDと、1つ以上のテストIDに紐づけられるタイプ名と、テストID毎のテスト名、テンプレートID、および、パラメータ(パラメータ値の置換ルール)が示されている。
タイプ名(「タイプ名」の列の情報)は宣言的モデルの構成要素を示しており、テスト情報は、宣言的モデルの構成要素と、その構成要素に使用するテストコードのテンプレートとの対応関係の一覧を示している。
図5の例で、テスト情報は、表形式の情報として構成されており、テストIDと、1つ以上のテストIDに紐づけられるタイプ名と、テストID毎のテスト名、テンプレートID、および、パラメータ(パラメータ値の置換ルール)が示されている。
タイプ名(「タイプ名」の列の情報)は宣言的モデルの構成要素を示しており、テスト情報は、宣言的モデルの構成要素と、その構成要素に使用するテストコードのテンプレートとの対応関係の一覧を示している。
例えば、構成要素を示す「タイプ名」の列の「tosca.nodes.DBMS.MySQL」の欄と、「テンプレートID」の列の「1」、「2」、「3」および「4」の4つの欄とが紐づけられている。これによって、構成要素tosca.nodes.DBMS.MySQLに対して、図4のテンプレートのうち、テンプレートIDが「1」、「2」、「3」および「4」の4つのテンプレートを使用することが示されている。
「パラメータ」の列は、前記した置換対象となるパラメータ名と値の情報を格納する。ここで、パラメータ値には固定値の他に実行時のパラメータ値も指定可能とする。例えば、図5の例で「prop」、「req」の表記は、それぞれ、紐づけられる構成要素に対するproperties、requirementsを示す。これらは、情報取得部291が宣言的モデルオーケストレーション装置100から値を取得することを示している。例えば「prop.port」との表記は、実行時に当該構成要素の「port」プロパティに指定された値を取得することを示す。
実行時にパラメータ値を取得する記述は、「prop」および「req」に限定されず、宣言的モデルオーケストレーション装置100の種類に応じた記述とすることができる。
実行時にパラメータ値を取得する記述は、「prop」および「req」に限定されず、宣言的モデルオーケストレーション装置100の種類に応じた記述とすることができる。
次に、テストコード生成装置200による処理の実行について説明する。
情報取得部291は、テスト対象となるシステム(対象システム)を示す宣言的モデルの情報を宣言的モデルオーケストレーション装置100から取得する。
図6は、宣言的モデルの例を示す図である。
テストコード生成部292は、図6に例示される宣言的モデルから、その宣言的モデルの構成要素を抽出する。構成要素には、プロビジョニング先のサーバ情報(仮想サーバ、コンテナおよび物理サーバの何れでもよい)と、そのサーバ情報が示すサーバ上で動作するミドルウェアまたはアプリケーション等の機能の情報とを含む。
情報取得部291は、テスト対象となるシステム(対象システム)を示す宣言的モデルの情報を宣言的モデルオーケストレーション装置100から取得する。
図6は、宣言的モデルの例を示す図である。
テストコード生成部292は、図6に例示される宣言的モデルから、その宣言的モデルの構成要素を抽出する。構成要素には、プロビジョニング先のサーバ情報(仮想サーバ、コンテナおよび物理サーバの何れでもよい)と、そのサーバ情報が示すサーバ上で動作するミドルウェアまたはアプリケーション等の機能の情報とを含む。
図7は、構成要素およびサーバ情報の抽出例を示す図である。
図7の例では、テストコード生成部292が図6の宣言的モデルから抽出したノード名と、そのノードのタイプ名(構成要素)と、そのノードがプロビジョニングされるサーバ情報とが示されている。
図7の例では、テストコード生成部292が図6の宣言的モデルから抽出したノード名と、そのノードのタイプ名(構成要素)と、そのノードがプロビジョニングされるサーバ情報とが示されている。
テストコード生成部292は、図6の例で「node_templates」のラベルの下に示される「wrodpress」、「apache」、「web_serber」、「wordpress_db」、「mysql」、「db_server」の各ラベルを、ノード名の表記として抽出し、図7の「ノード名」の列に書き込む。
また、テストコード生成部292は、ノード毎に、「type:・・・」で示されるタイプ名(構成要素)を抽出し、図7の「タイプ名」の列に書き込む。
また、テストコード生成部292は、ノード毎に、「type:・・・」で示されるタイプ名(構成要素)を抽出し、図7の「タイプ名」の列に書き込む。
また、テストコード生成部292は、ノード毎に「host:・・・」の記載を検出し、そこに記載されるノードをさらに辿ってサーバ名を抽出する。例えば、テストコード生成部292は、「wordpress」ノードの「host:apache」との記載を検出してノード「appache」を辿り、「host:web_server」との記載を検出する。さらに「web_server」ノードを辿ると「host:・・・」の記載がないことから、テストコード生成部292は、サーバ名が「web_server」であると判定して図7の「サーバ」の列の該当欄に書き込む。
テストコード生成部292は、同様に、「apache」、「wordpress_db」、「myspl」の各ノードについて、それぞれサーバ名「web_server」、「db_server」、「db_server」を検出して図7の「サーバ」の列の該当欄に書き込んでいる。
一方、「web_server」、「db_server」の各ノードについては、「host:・・・」の記載がないことからサーバ名を検出しない。図7の例では、サーバ名を検出しないことを「-」で示している。
一方、「web_server」、「db_server」の各ノードについては、「host:・・・」の記載がないことからサーバ名を検出しない。図7の例では、サーバ名を検出しないことを「-」で示している。
さらに、テストコード生成部292は当該抽出情報とテスト情報(図5)とをもとに、実施が必要なテストを決定する。
図7の例の場合、テストコード生成部292は、図7に示されるタイプ名(構成要素)毎に、図5でそのタイプ名に紐づけられているテストを行うことに決定する。例えば、テストコード生成部292は、db_server 上の mysql ノードに対してテストID「1」、「2」、「3」および「4」のテストを行うことに決定する。また、テストコード生成部292は、wordpress_db ノードに対してテストID「5」のテストを行うことに決定する。また、テストコード生成部292は、web_server 上の apache ノードに対してテストID「6」、「7」および「8」のテストを行うことに決定する。さらに、テストコード生成部292は、wordpress ノードに対してテストID「9」および「10」のテストを行うことに決定する。
図7の例の場合、テストコード生成部292は、図7に示されるタイプ名(構成要素)毎に、図5でそのタイプ名に紐づけられているテストを行うことに決定する。例えば、テストコード生成部292は、db_server 上の mysql ノードに対してテストID「1」、「2」、「3」および「4」のテストを行うことに決定する。また、テストコード生成部292は、wordpress_db ノードに対してテストID「5」のテストを行うことに決定する。また、テストコード生成部292は、web_server 上の apache ノードに対してテストID「6」、「7」および「8」のテストを行うことに決定する。さらに、テストコード生成部292は、wordpress ノードに対してテストID「9」および「10」のテストを行うことに決定する。
さらに、テストコード生成部292はパラメータ置換のために必要な情報を宣言的モデルオーケストレーション装置100から情報取得部291を通して取得する。そして、テストコード生成部292は、テストコードのテンプレートの対象部分を得られた情報に置換してテストコードを生成する。
図8は、パラメータ値の取得例を示す図である。
図8の例では、パラメータ名毎に、テストコード生成部292が取得するパラメータ値の例が示されている。例えば、テストコード生成部292は、wp_db_nameパラメータの値として「wordpress」を取得する。
図8の例では、パラメータ名毎に、テストコード生成部292が取得するパラメータ値の例が示されている。例えば、テストコード生成部292は、wp_db_nameパラメータの値として「wordpress」を取得する。
図9は、テストコード生成部292が生成するテストコードの第1例を示す図である。図9は、テストコード生成部292が生成する、db_serverに対するテストコードの例を示す。
図9の例で、テストコード生成部292は、db_serverに対するテストとして上記のように決定したテストID「1」、「2」、「3」、「4」および「5」の各テストのテンプレートID「1」、「2」、「3」、「4」および「5」を、図5に例示するテスト情報から読み出す。
図9の例で、テストコード生成部292は、db_serverに対するテストとして上記のように決定したテストID「1」、「2」、「3」、「4」および「5」の各テストのテンプレートID「1」、「2」、「3」、「4」および「5」を、図5に例示するテスト情報から読み出す。
そして、テストコード生成部292は、読み出したテンプレートIDのテンプレートを図4に例示するテンプレート情報から読み出す。
さらに、テストコード生成部292は、読み出したテンプレートに対し、図5に示されるルールに従ってパラメータ値を挿入する。
さらに、テストコード生成部292は、読み出したテンプレートに対し、図5に示されるルールに従ってパラメータ値を挿入する。
例えば、テストコード生成部292は、テンプレートID「1」のテンプレートの「:package:」の記載を、図5のルールに従って「mysql」に置き換える。また、テストコード生成部292は、テンプレートID「3」のテンプレートの「:port:」の記載を、図5のルールに従って、db_serverから得られた値「3306」(図8の「mysql_port」の行参照)に置き換える。
これにより、テストコード生成部292は、db_serverに対するテストコードとして、図9に示されるテストコードを取得する。
これにより、テストコード生成部292は、db_serverに対するテストコードとして、図9に示されるテストコードを取得する。
図10は、テストコード生成部292が生成するテストコードの第2例を示す図である。図10は、テストコード生成部292が生成する、web_serverに対するテストコードの例を示す。
テストコード生成部292は、web_serverに対するテストについても、上記のように決定したテストID「6」、「7」、「8」、「9」および「10」の各テストのテンプレートID「1」、「2」、「3」、「6」および「7」を、図5に例示するテスト情報から読み出す。
テストコード生成部292は、web_serverに対するテストについても、上記のように決定したテストID「6」、「7」、「8」、「9」および「10」の各テストのテンプレートID「1」、「2」、「3」、「6」および「7」を、図5に例示するテスト情報から読み出す。
そして、テストコード生成部292は、読み出したテンプレートIDのテンプレートを図4に例示するテンプレート情報から読み出す。
さらに、テストコード生成部292は、読み出したテンプレートに対し、図5に示されるルールに従ってパラメータ値を挿入する。
これにより、テストコード生成部292は、web_serverに対するテストコードとして、図10に示されるテストコードを取得する。
さらに、テストコード生成部292は、読み出したテンプレートに対し、図5に示されるルールに従ってパラメータ値を挿入する。
これにより、テストコード生成部292は、web_serverに対するテストコードとして、図10に示されるテストコードを取得する。
次に、図11を参照してテストコード生成装置200の動作について説明する。
図11は、テストコード生成装置200がテストコードを生成する処理手順の例を示す図である。
図11の処理で、情報取得部291は、宣言的モデルの構成要素を示す構成要素情報を取得する(ステップS101)。具体的には、情報取得部291は、第一通信部110が宣言的モデルオーケストレーション装置100から取得する宣言的モデルのコード(対象システムのコード)を解析して、構成要素情報を抽出する。
図11は、テストコード生成装置200がテストコードを生成する処理手順の例を示す図である。
図11の処理で、情報取得部291は、宣言的モデルの構成要素を示す構成要素情報を取得する(ステップS101)。具体的には、情報取得部291は、第一通信部110が宣言的モデルオーケストレーション装置100から取得する宣言的モデルのコード(対象システムのコード)を解析して、構成要素情報を抽出する。
次に、テンプレート取得部293は、宣言的モデルの構成要素のテストコードのテンプレートを取得する(ステップS102)。具体的には、テストコード生成部292が、テスト情報記憶部281が記憶しているテスト情報を参照して、宣言的モデルの構成要素(対象システムの構成要素)に対するテストを決定する。そして、テンプレート取得部293は、決定したテストに紐づけられているテストコードのテンプレートを取得する。
また、パラメータ値取得部294は、テンプレート取得部293が取得したテンプレートに適用するためのパラメータ値を取得する(ステップS103)。具体的には、パラメータ値取得部294は、テストコード生成部282が決定したテストに紐づけられているパラメータ値取得ルールに従ってパラメータ値を取得する。
パラメータ値適用部295は、テンプレート取得部293が取得したテンプレートに、パラメータ値取得部294が取得したパラメータ値を適用する(ステップS104)。これにより、パラメータ値適用部295は、宣言的モデルをテストするためのテストコードを取得する。
ステップS104の後、テストコード生成装置200は、図11の処理を終了する。
ステップS104の後、テストコード生成装置200は、図11の処理を終了する。
以上のように、情報取得部291は、宣言的モデルの情報から、その宣言的モデルの構成要素の情報を抽出する。テンプレート取得部293は、構成要素の情報に紐づけられているテストコードのテンプレートを取得する。パラメータ値取得部294は、テンプレートに適用するパラメータ値を、構成要素の情報に紐づけられているルールに従って取得する。パラメータ値適用部295は、得られたパラメータ値をテンプレートに適用してテストコードを取得する。
テストコード生成装置200によれば、宣言的モデルを用いて構築されたシステムに対するテストコードを、システムの構成に応じて自動的に生成することができる。テストコードを自動生成できる点で、テストコード生成装置200では、テストコードを生成する人的負担を必要とせず、また、人的なスキルを必要としない。したがって、テストコード生成装置200では、人的スキルの不足により適切なテストコードを生成できないといった事態を回避できる。また、テストコード生成装置200では、人的ミスによって適切なテストコードを生成できないといった事態も回避できる。
このように、テストコード生成装置200によれば、宣言的モデルを用いて構築されたシステムに対して、より適切にテストを行うことができる。
このように、テストコード生成装置200によれば、宣言的モデルを用いて構築されたシステムに対して、より適切にテストを行うことができる。
また、パラメータ値取得部294は、パラメータ値取得のルールがパラメータ値を要求することを示している場合、そのルールに従って宣言的モデルオーケストレーション装置100からパラメータ値を取得する。
これにより、テストコード生成装置200では、パラメータ値がノードに応じて定まる場合に対応してテストコードを自動的に生成することができる。
これにより、テストコード生成装置200では、パラメータ値がノードに応じて定まる場合に対応してテストコードを自動的に生成することができる。
図12は、実施形態に係るテストコード生成装置の構成の例を示す図である。図12に示すテストコード生成装置400は、情報取得部401と、テンプレート取得部402と、パラメータ値取得部403と、パラメータ値適用部404とを備える。
かかる構成にて、情報取得部401は、宣言的モデルの情報から、その宣言的モデルの構成要素の情報を抽出する。テンプレート取得部402は、構成要素の情報に紐づけられているテストコードのテンプレートを取得する。パラメータ値取得部403は、テンプレートに適用するパラメータ値を、構成要素の情報に紐づけられているルールに従って取得する。パラメータ値適用部404は、得られたパラメータ値をテンプレートに適用してテストコードを取得する。
テストコード生成装置400によれば、宣言的モデルを用いて構築されたシステムに対するテストコードを、システムの構成に応じて自動的に生成することができる。テストコードを自動生成できる点で、テストコード生成装置400では、テストコードを生成する人的負担を必要とせず、また、人的なスキルを必要としない。したがって、テストコード生成装置400では、人的スキルの不足により適切なテストコードを生成できないといった事態を回避できる。また、テストコード生成装置400では、人的ミスによって適切なテストコードを生成できないといった事態も回避できる。
このように、テストコード生成装置400によれば、宣言的モデルを用いて構築されたシステムに対して、より適切にテストを行うことができる。
このように、テストコード生成装置400によれば、宣言的モデルを用いて構築されたシステムに対して、より適切にテストを行うことができる。
図13は、実施形態に係るテストコード生成方法における処理の手順の例を示す図である。図13に示すテストコード生成方法は、構成要素情報およびサーバ情報の取得工程(ステップS201)と、テンプレート取得工程(ステップS202)と、パラメータ値取得工程(ステップS203)と、パラメータ値適用工程(ステップS204)とを含む。
構成要素情報およびサーバ情報の取得工程(ステップS201)では、宣言的モデルの情報から、その宣言的モデルの構成要素の情報を抽出する。テンプレート取得工程(ステップS202)では、構成要素の情報に紐づけられているテストコードのテンプレートを取得する。パラメータ値取得工程(ステップS203)では、テンプレートに適用するパラメータ値を、構成要素の情報に紐づけられているルールに従って取得する。パラメータ値適用工程(ステップS204)では、得られたパラメータ値をテンプレートに適用してテストコードを取得する。
このテストコード生成方法によれば、宣言的モデルを用いて構築されたシステムに対するテストコードを、システムの構成に応じて自動的に生成することができる。このテストコード生成方法では、テストコードを自動生成できる点で、テストコードを生成する人的負担を必要とせず、また、人的なスキルを必要としない。したがって、このテストコード生成方法では、人的スキルの不足により適切なテストコードを生成できないといった事態を回避できる。また、このテストコード生成方法では、人的ミスによって適切なテストコードを生成できないといった事態も回避できる。
このように、このテストコード生成方法によれば、宣言的モデルを用いて構築されたシステムに対して、より適切にテストを行うことができる。
このように、このテストコード生成方法によれば、宣言的モデルを用いて構築されたシステムに対して、より適切にテストを行うことができる。
図14は、少なくとも1つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
図14に示す構成で、コンピュータ700は、CPU710と、主記憶装置720と、補助記憶装置730と、インタフェース740とを備える。
上記のテストコード生成装置200および400のうち何れか1つ以上が、コンピュータ700に実装されてもよい。その場合、上述した各処理部の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。また、CPU710は、プログラムに従って、上述した各記憶部に対応する記憶領域を主記憶装置720に確保する。各装置と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って通信を行うことで実行される。
図14に示す構成で、コンピュータ700は、CPU710と、主記憶装置720と、補助記憶装置730と、インタフェース740とを備える。
上記のテストコード生成装置200および400のうち何れか1つ以上が、コンピュータ700に実装されてもよい。その場合、上述した各処理部の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。また、CPU710は、プログラムに従って、上述した各記憶部に対応する記憶領域を主記憶装置720に確保する。各装置と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って通信を行うことで実行される。
テストコード生成装置200がコンピュータ700に実装される場合、第二制御部290の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
また、CPU710は、プログラムに従って、第二記憶部280に対応する記憶領域を主記憶装置720に確保する。第二通信部210が行う通信は、インタフェース740が通信機能を有し、CPU710の制御に従って通信を行うことで実行される。
また、CPU710は、プログラムに従って、第二記憶部280に対応する記憶領域を主記憶装置720に確保する。第二通信部210が行う通信は、インタフェース740が通信機能を有し、CPU710の制御に従って通信を行うことで実行される。
テストコード生成装置400がコンピュータ700に実装される場合、情報取得部401、テンプレート取得部402、パラメータ値取得部403、および、パラメータ値適用部404の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
なお、テストコード生成装置200および400が行う処理の全部または一部を実行するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM(Read Only Memory)、CD−ROM(Compact Disc Read Only Memory)等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM(Read Only Memory)、CD−ROM(Compact Disc Read Only Memory)等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
100 宣言的モデルオーケストレーション装置
110 第一通信部
180 第一記憶部
190 第一制御部
191 宣言的モデルオーケストレータ部
192 プロビジョニング処理実行部
200、400 テストコード生成装置
210 第二通信部
280 第二記憶部
290 第二制御部
291、401 情報取得部
292 テストコード生成部
293、402 テンプレート取得部
294、403 パラメータ値取得部
295、404 パラメータ値適用部
500 実行環境
900 通信ネットワーク
110 第一通信部
180 第一記憶部
190 第一制御部
191 宣言的モデルオーケストレータ部
192 プロビジョニング処理実行部
200、400 テストコード生成装置
210 第二通信部
280 第二記憶部
290 第二制御部
291、401 情報取得部
292 テストコード生成部
293、402 テンプレート取得部
294、403 パラメータ値取得部
295、404 パラメータ値適用部
500 実行環境
900 通信ネットワーク
Claims (4)
- 宣言的モデルの情報から、その宣言的モデルの構成要素の情報を抽出する情報取得部と、
前記構成要素の情報に紐づけられているテストコードのテンプレートを取得するテンプレート取得部と、
前記テンプレートに適用するパラメータ値を、前記構成要素の情報に紐づけられているルールに従って取得するパラメータ値取得部と、
得られたパラメータ値を前記テンプレートに適用してテストコードを取得するパラメータ値適用部と、
を備えるテストコード生成装置。 - 前記パラメータ値取得部は、前記ルールがパラメータ値を要求することを示している場合、そのルールに従って宣言的モデルオーケストレーション装置からパラメータ値を取得する、
請求項1に記載のテストコード生成装置。 - 宣言的モデルの情報から、その宣言的モデルの構成要素の情報を抽出する工程と、
前記構成要素の情報に紐づけられているテストコードのテンプレートを取得する工程と、
前記テンプレートに適用するパラメータ値を、前記構成要素の情報に紐づけられているルールに従って取得する工程と、
得られたパラメータ値を前記テンプレートに適用してテストコードを取得する工程と、
を含むテストコード生成方法。 - コンピュータに、
宣言的モデルの情報から、その宣言的モデルの構成要素の情報を抽出する工程と、
前記構成要素の情報に紐づけられているテストコードのテンプレートを取得する工程と、
前記テンプレートに適用するパラメータ値を、前記構成要素の情報に紐づけられているルールに従って取得する工程と、
得られたパラメータ値を前記テンプレートに適用してテストコードを取得する工程と、
を実行させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019085935A JP2020181509A (ja) | 2019-04-26 | 2019-04-26 | テストコード生成装置、テストコード生成方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019085935A JP2020181509A (ja) | 2019-04-26 | 2019-04-26 | テストコード生成装置、テストコード生成方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020181509A true JP2020181509A (ja) | 2020-11-05 |
Family
ID=73024239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019085935A Pending JP2020181509A (ja) | 2019-04-26 | 2019-04-26 | テストコード生成装置、テストコード生成方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2020181509A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112799971A (zh) * | 2021-04-09 | 2021-05-14 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、设备以及计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060294506A1 (en) * | 2004-11-30 | 2006-12-28 | Microsoft Corporation | Isolating declarative code to preserve customizations |
JP2013145443A (ja) * | 2012-01-13 | 2013-07-25 | Ntt Data Corp | テストコード生成装置、テストコード生成方法、テストコード生成プログラム |
-
2019
- 2019-04-26 JP JP2019085935A patent/JP2020181509A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060294506A1 (en) * | 2004-11-30 | 2006-12-28 | Microsoft Corporation | Isolating declarative code to preserve customizations |
JP2013145443A (ja) * | 2012-01-13 | 2013-07-25 | Ntt Data Corp | テストコード生成装置、テストコード生成方法、テストコード生成プログラム |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112799971A (zh) * | 2021-04-09 | 2021-05-14 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、设备以及计算机可读存储介质 |
CN112799971B (zh) * | 2021-04-09 | 2021-06-22 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、设备以及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102237015B1 (ko) | 블록체인 상의 네이티브 계약을 구현하기 위한 시스템 및 방법 | |
JP5607741B2 (ja) | ランタイム挙動に基づくアプリケーションの自動修正 | |
US9262299B1 (en) | Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system | |
CN103902456B (zh) | 测试脚本处理装置、系统及方法 | |
US10216727B2 (en) | Visually differentiating strings for testing | |
US10552296B2 (en) | Human-readable, language-independent stack trace summary generation | |
CN108830720A (zh) | 智能合约运行方法、装置、系统和计算机可读存储介质 | |
CN106547681B (zh) | 数据自动加载并复用模拟服务测试的方法和装置 | |
US8868976B2 (en) | System-level testcase generation | |
WO2017033441A1 (ja) | システム構築支援システム、方法および記憶媒体 | |
US10067860B2 (en) | Defining test bed requirements | |
TW201229749A (en) | An automated operating system test framework | |
CN108595187A (zh) | 安卓安装包集成软件开发工具包的法、装置及存储介质 | |
US20180203680A1 (en) | Deployment device, deployment method, and recording medium | |
JP2020181509A (ja) | テストコード生成装置、テストコード生成方法およびプログラム | |
US8589734B2 (en) | Verifying correctness of processor transactions | |
JP5979056B2 (ja) | 動作環境移行支援装置、該プログラム、及び該方法 | |
US20190317877A1 (en) | Application state monitoring | |
JP6440895B2 (ja) | ソフトウェア分析装置及びソフトウェア分析方法 | |
CN108255570A (zh) | 异构虚拟机监视器平台间的虚拟机迁移方法、装置和系统 | |
JP5936241B2 (ja) | 解析システム、解析方法およびプログラム | |
US10339229B1 (en) | Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system | |
US10002001B1 (en) | Importing a virtual disk image into a compute service environment | |
CN105956205B (zh) | 一种生成hbase行健的方法及装置 | |
JP6705482B2 (ja) | システム構築パラメータ管理装置、システム構築パラメータ管理システム、システム構築パラメータ管理方法、及び、システム構築パラメータ管理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220310 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20221213 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20221214 |