(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024170838
(43)【公開日】2024-12-11
(54)【発明の名称】生成システム、生成方法、及び生成プログラム
(51)【国際特許分類】
G06F 11/36 20060101AFI20241204BHJP
【FI】
G06F11/36 184
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023087574
(22)【出願日】2023-05-29
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110000176
【氏名又は名称】弁理士法人一色国際特許事務所
(72)【発明者】
【氏名】清水 遼
(72)【発明者】
【氏名】鹿糠 秀行
(72)【発明者】
【氏名】千葉 直人
(72)【発明者】
【氏名】坂本 峻
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042HH12
5B042HH17
5B042MA08
5B042MA11
5B042MA12
5B042MA14
5B042MC40
(57)【要約】 (修正有)
【課題】複数のコンポーネントが連携するシステムに対し、より網羅性の高いテストデータを効率的に生成する。
【解決手段】複数のマイクロサービス(コンポーネント)MS1、MS2、・・・が相互通信するシステムに対するテストパターンを生成する生成システム1において、テストデータ生成装置10は、テスト対象のコンポーネントが受信したリクエスト及びそのレスポンスに関する第1連携情報と、リクエストを処理するためにテスト対象のコンポーネントが他のコンポーネントに送信したリクエスト及びそのレスポンスに関する第2連携情報とを含む複数の実行ログを記憶するサービス実行ログ保持部500と、サービス実行ログ保持部から実行ログを読み出し、読み出した実行ログ同士の類似度を評価し、評価した類似度に基づく実行ログのグループ毎にテストパターンを生成するテストパターン生成部102と、を備える。
【選択図】
図3
【特許請求の範囲】
【請求項1】
複数のコンポーネントが相互通信するシステムに対するテストパターンを生成する生成システムであって、
プロセッサ及びメモリを有し、
テスト対象のコンポーネントが受信したリクエスト及びそのレスポンスに関する第1連携情報と、前記リクエストを処理するために前記テスト対象のコンポーネントが他のコンポーネントに送信したリクエスト及びそのレスポンスに関する第2連携情報とを含む複数の実行ログを記憶する実行ログ保持部と、
前記実行ログ保持部から前記実行ログを読み出し、前記読み出した実行ログ同士の類似度を評価し、評価した類似度に基づく前記実行ログのグループ毎にテストパターンを生成するテストパターン生成部と、
を備える生成システム。
【請求項2】
前記テストパターン生成部は、前記実行ログに含まれるリクエスト及びそのレスポンスを抽象化し、抽象化した前記実行ログ同士を比較することによりその類似度を評価する
請求項1に記載の生成システム。
【請求項3】
前記テストパターン生成部は、リクエスト及びレスポンスに含まれる変数の値の部分に共通の加工を行うことで、前記実行ログに含まれるリクエスト及びそのレスポンスを抽象化し、抽象化した前記実行ログ同士を比較することによりその類似度を評価する
請求項2に記載の生成システム。
【請求項4】
前記テストパターン生成部は、前記テストパターンのグループに含まれる前記実行ログに基づいて、テストに用いるテストデータを生成する
請求項1に記載の生成システム。
【請求項5】
前記テストパターン生成部は、前記テスト対象のコンポーネントが受信したリクエストを処理するために、相互通信した全てのコンポーネントが送信したリクエスト及びそのレスポンスに関する情報を含む評価用データを前記実行ログに基づいて生成し、前記生成した評価用データ同士の類似度を評価し、評価した類似度に基づく前記実行ログのグループ毎のテストパターンを生成する
請求項1に記載の生成システム。
【請求項6】
複数の前記コンポーネントそれぞれから前記実行ログを受信して前記実行ログ保持部に書き込むログ集約部と、
前記生成したテストパターンをそれぞれ対応する前記コンポーネントに送信するテストパターン更新部と、
を備え、
前記コンポーネントは、前記テストパターン更新部から受信したテストパターンに含まれない前記実行ログのみを前記ログ集約部に送信する
請求項1に記載の生成システム。
【請求項7】
複数のコンポーネントが相互通信するシステムに対するテストパターンを生成する情報処理装置が、
テスト対象のコンポーネントが受信したリクエスト及びそのレスポンスに関する第1連携情報と、前記リクエストを処理するために前記テスト対象のコンポーネントが他のコンポーネントに送信したリクエスト及びそのレスポンスに関する第2連携情報とを含む複数の実行ログを記憶する実行ログ保持部から前記実行ログを読み出し、前記読み出した実行ログ同士の類似度を評価し、評価した類似度に基づく前記実行ログのグループ毎のテストパターンを生成するテストパターン生成処理を実行する
生成方法。
【請求項8】
複数のコンポーネントが相互通信するシステムに対するテストパターンを生成する情報処理装置に、
テスト対象のコンポーネントが受信したリクエスト及びそのレスポンスに関する第1連携情報と、前記リクエストを処理するために前記テスト対象のコンポーネントが他のコンポーネントに送信したリクエスト及びそのレスポンスに関する第2連携情報とを含む複数の実行ログを記憶する実行ログ保持部から前記実行ログを読み出し、前記読み出した実行ログ同士の類似度を評価し、評価した類似度に基づく前記実行ログのグループ毎のテストパターンを生成するテストパターン生成処理を実行させる
生成プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、生成システム、生成方法、及び生成プログラムに関する。
【背景技術】
【0002】
近年、システム開発を迅速化する技術として、マイクロサービスアーキテクチャ(以下、「MSA(MicroService Architecture)」と称する。)が注目されている。マイクロサービスアーキテクチャとは、粒度の細かいサービス(以下、「マイクロサービス」と称する。)を組み合わせることで、システムの機能を実現するシステムアーキテクチャを指す。MSAは個々のマイクロサービスが小さく疎結合であるため、マイクロサービス単位での変更及びデプロイが可能となり、市場のニーズの変化に合わせ迅速かつ高頻度な修正及びリリースを実現することができる。
【0003】
MSAでは、REST API(Representational State Transfer Application Programming Interface)等を利用した同期通信やメッセージングサービスを利用した非同期通信によるマイクロサービス間の連携による分散処理で、リクエストの処理を実現する。そのため、高頻度な修正又はリリースであっても、変更によってマイクロサービス間の連携(通信)部分に齟齬が発生しないよう、継続的にリグレッションテストをすることが重要となる。
【0004】
しかしながら、MSAのシステムにて、多数のマイクロサービスに対するリグレッションテストを自動化するには、工数がかかる。また、リグレッションテストの網羅度を上げるよう、テストを手動で継続的に拡充していくには、工数及び高度なスキルが必要になる。
【0005】
システムのリクエスト及びそのレスポンスのテストを支援する技術として、システム稼働中のログ情報等を解析してテストデータを抽出するRecord&Replay技術がある。例えば、特許文献1には、クライアントからの入力電文(リクエスト)、及び入力電文に対応する出力電文(レスポンス)の実データに基づいたテストパターンを増加させ、運用を続けるほどテスト網羅度を向上させるデータ処理システムが開示されている。このようなRecord&Replay技術を各マイクロサービスに適用することで、マイクロサービス毎の継続的なブラックボックステストを実現することができる。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1に記載の技術では、類似度がある入力電文同士を同じテストパターンとしてまとめているが、独立した1つのリクエスト及びそのレスポンスを対象にテストパターンを生成しているため、マイクロサービス同士の連携を考慮したリグレッションテストを実施することができない、という課題がある。例えば、特許文献1に記載の技術をMSAに適用した場合、1つのリクエストを処理するために連携するマイクロサービスが異なっていても、リクエスト及びそのレスポンスに類似度が有る場合には、同一のテストパターンとしてまとめるため、マイクロサービス同士の連携のパターンを考慮したリグレッションテストをすることができない。一方で、全ての実データをテストに用いると、テスト数が膨大になる。
【0008】
本発明は、このような事情に鑑みてなされたものであり、その目的は、複数のコンポーネントが連携するシステムに対し、より網羅性の高いテストデータを効率的に生成することが可能な生成システム、生成方法、及び生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
上記課題を解決するための本発明の一つは、複数のコンポーネントが相互通信するシステムに対するテストパターンを生成する生成システムであって、プロセッサ及びメモリを有し、テスト対象のコンポーネントが受信したリクエスト及びそのレスポンスに関する第1連携情報と、前記リクエストを処理するために前記テスト対象のコンポーネントが他のコンポーネントに送信したリクエスト及びそのレスポンスに関する第2連携情報とを含む複数の実行ログを記憶する実行ログ保持部と、前記実行ログ保持部から前記実行ログを読み出し、前記読み出した実行ログ同士の類似度を評価し、評価した類似度に基づく前記実行ログのグループ毎にテストパターンを生成するテストパターン生成部と、を備える生成システムである。
【発明の効果】
【0010】
本発明によれば、複数のコンポーネントが連携するシステムに対し、より網羅性の高いテストデータを効率的に生成することができる。
上記した以外の構成及び効果等は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0011】
【
図1】本発明の第1の実施形態における生成システムの構成例を示す図である。
【
図3】本発明の第1の実施形態における生成システムが備えるテストデータ生成装置、及び各サービスの機能構成の一例を示すブロック図である。
【
図4】メッセージログ保持部の一例を示す図である。
【
図6】テストパターン保持部の一例を示す図である。
【
図9】リクエスト及びそのレスポンスに基づくテストパターンの生成方法の一例を説明する図である。
【
図10】リクエスト及びそのレスポンスに基づくテストパターンの生成方法の一例を説明する図である。
【
図11】テストパターンを生成するテストパターン生成処理の概要を説明する図である。
【
図12】テストパターンを生成するテストパターン生成処理の概要を説明する図である。
【
図13】テストパターン生成処理の詳細を説明する処理フロー図である。
【
図14】本発明の第1の実施形態におけるテストパターン生成処理の詳細を説明する図である。
【
図15】本発明の第1の実施形態におけるテストパターン生成処理の詳細を説明する図である。
【
図16】本発明の第1の実施形態におけるテストパターン生成処理の詳細を説明する図である。
【
図17】本発明の第1の実施形態におけるテストパターン生成処理の詳細を説明する図である。
【
図18】テスト実行処理の詳細を説明する処理フロー図である。
【
図19】ソート後のテストデータの一例を示す図である。
【
図20】本発明の第2の実施形態におけるテストパターン生成処理の詳細を説明する図である。
【
図21】本発明の第2の実施形態におけるテストパターン生成処理の詳細を説明する図である。
【
図22】本発明の第2の実施形態におけるテストパターン生成処理の詳細を説明する図である。
【
図23】本発明の第2の実施形態におけるテストパターン生成処理の詳細を説明する図である。
【
図24】本発明の第2の実施形態におけるテストパターン生成処理の詳細を説明する図である。
【
図25】本発明の第3の実施形態における生成システムが備えるテストデータ生成装置、及び各サービスの機能構成の一例を示すブロック図である。
【
図26】サービステストパターン保持部の一例を示す図である。
【
図27】サービス実行ログ生成処理の詳細を説明する処理フロー図である。
【
図28】本発明の第3の実施形態におけるサービス実行ログ生成処理の詳細を説明する図である。
【発明を実施するための形態】
【0012】
以下、図面を参照して、本発明の実施形態について詳細に説明する。以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。本発明は、他の種々の形態でも実施する事が可能である。特に限定しない限り、各構成要素は単数でも複数でも構わない。
図面において示す各構成要素の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面に開示された位置、大きさ、形状、範囲などに限定されない。
以下の説明では、「テーブル」、「リスト」、「キュー」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「XXテーブル」、「XXリスト」等を「XX情報」と呼ぶことがある。識別情報について説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
同一あるいは同様な機能を有する構成要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。ただし、これらの複数の構成要素を区別する必要がない場合には、添字を省略して説明する場合がある。
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU、GPU)によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)および/またはインタフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノードであってもよい。プログラムを実行して行う処理の主体は、演算部であれば良く、特定の処理を行う専用回路(例えばFPGAやASIC)を含んでいてもよい。
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0013】
[第1の実施形態]
まず、本発明の第1の実施形態における生成システム、生成方法、及び生成プログラムについて説明する。
【0014】
<システム構成>
図1は、本実施形態における生成システム1の構成例を示す図である。生成システム1は、テストデータ生成装置10(生成装置)、及びテスト対象システム20を含んで構成される情報処理システムである。生成システム1は、テストデータ生成装置10が、テスト対象システム20に対して実施するテストのテストパターン(テストケース)、及びテストに用いるデータ(以下、「テストデータ」と称する。)を生成するシステムである。テスト対象システム20は、複数のマイクロサービス(コンポーネント)が相互通信して連携することで各種機能を実現するMSA構成のシステムである。
【0015】
テストデータ生成装置10及びテスト対象システム20の間は、例えば、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)、又は専用線等の有線又は無線の通信ネットワークNにより通信可能に接続される。
【0016】
テストデータ生成装置10は、テスト対象システム20のテストパターン及びテストデータを生成する情報処理装置である。テストデータ生成装置10は、一例として、CPU(Central Processing Unit)等の処理装置11と、RAM(Random Access Memory)、ROM(Read Only Memory)等のメモリ12と、HDD(Hard Disk Drive)、SSD(Solid State Drive)等の記憶装置13と、キーボード、マウス、又はタッチパネル等の入力装置14と、ディスプレイ又はプリンタ等の出力装置15と、NIC(Network Interface Card)、無線通信モジュール、USB(Universal Serial Interface)モジュール、又はシリアル通信モジュール等で構成される通信装置16等を備える。
【0017】
テストデータ生成装置10において、所定の処理の実行に用いるプログラム等のデータは、一例として、記憶装置13に記憶され、処理装置11がメモリ12のRAMに読み出して実行する。
【0018】
テスト対象システム20は、1又は複数の情報処理装置により実現される。テスト対象システム20を実現する情報処理装置は、一例として、CPU等の処理装置21と、RAM、ROM等のメモリ22と、HDD、SSD等の記憶装置23と、キーボード、マウス、又はタッチパネル等の入力装置24と、ディスプレイ又はプリンタ等の出力装置25と、NIC、無線通信モジュール、USBモジュール、又はシリアル通信モジュール等で構成される通信装置26等を備える。
【0019】
テスト対象システム20を実現する情報処理装置において、所定の処理の実行に用いるプログラム等のデータは、一例として、記憶装置23に記憶され、処理装置21がメモリ22のRAMに読み出して実行する。
【0020】
<テスト対象システム>
図2は、テスト対象システム20の一例を示す図である。図示する例では、テスト対象システム20は、第1サービスMS1、第2サービスMS2、第3サービスMS3、及び、第4サービスMS4等の複数のマイクロサービスが相互通信して連携することで各種機能を実現する。以下、テスト対象システム20に含まれるマイクロサービスを総称して「サービスMS」と称する。図に示す矢印A1~A4は、マイクロサービス間の通信上の依存関係を表す。例えば、第1サービスMS1と第2サービスMSとの間にある矢印A2は、第1サービスMS1が第2サービスMS2にリクエストを送信し、第2サービスMS2が第1サービスMS1にレスポンスを返す依存関係を表す。なお、テスト対象システム20は、システムを構成する機能(コンポーネント)同士が連携するものであれば必ずしもMSA構成でなくともよい。例えば、複数のシステム同士が連携するものであってもよい。ここで、連携するとは、1つのリクエストを処理するために、機能同士が相互通信することである。
【0021】
テスト対象システム20は、1台の物理計算機で1つのサービスMSを実現してもよいし、1台の物理計算機で複数のサービスMSを実現してもよい。例えば、1台の物理計算機にある複数の仮想計算機(VM:Virtual Machine)又はコンテナ等で、各サービスMSそれぞれを実現してもよい。
【0022】
図3は、本実施形態における生成システム1が備えるテストデータ生成装置10、及び各サービスMSの機能構成の一例を示すブロック図である。
【0023】
<サービス>
サービスMSは、アプリ実行部201、サービス実行ログ生成部202、及びサービス実行ログ送信部203の各機能それぞれを実現するプログラムを記憶装置23に記憶している。各サービスMSは、記憶装置23が記憶するプログラムを、処理装置21がメモリ22に読み出して実行することにより、アプリ実行部201、サービス実行ログ生成部202、及びサービス実行ログ送信部203の各機能それぞれを実現する。アプリ実行部201、サービス実行ログ生成部202、及びサービス実行ログ送信部203の各機能を実現するプログラムは、例えば、可搬性の又は固定された記録媒体に記録して配布することができる。また、各サービスMSは、メッセージログ保持部300及び転送用ログ保持部400を記憶装置23に記憶している。
【0024】
アプリ実行部201は、自サービスMSが有する機能の処理を実行する。例えば、アプリ実行部201は、リクエスト(要求)を受信し、受信したリクエストに基づく処理を実行し、処理を実行した結果のレスポンス(応答)をリクエストの送信元に返信する。また、アプリ実行部201は、送受信したリクエスト及びレスポンスに関する情報を、メッセージログとしてメッセージログ保持部300に書き込む。
【0025】
(メッセージログ保持部)
図4は、メッセージログ保持部300の一例を示す図である。メッセージログ保持部300は、メッセージログを蓄積するデータベースである。メッセージログ保持部300には、アプリ実行部201がリクエスト又はレスポンスを送受信する毎に、メッセージログが書き込まれる。例えば、リクエストのメッセージログには、リクエストの送信元又は送信先、トレースID、及び、要求に含まれる属性の属性名と属性値等が含まれる。また、レスポンスのメッセージログには、http status、及び、応答に含まれる属性の属性名と属性値等が含まれる。
【0026】
サービス実行ログ生成部202は、メッセージログに基づいて、テストパターンを生成するためのサービス実行ログ(実行ログ)を生成し、生成したサービス実行ログを転送用ログ保持部400に書き込む。例えば、サービス実行ログ生成部202は、テストデータの生成に必要なデータをメッセージログから抽出し、抽出したデータをサービス実行ログのデータ形式に変換する。
【0027】
(転送用ログ保持部)
図5は、転送用ログ保持部400の一例を示す図である。転送用ログ保持部400は、サービス実行ログを蓄積するデータベースである。転送用ログ保持部400は、処理を実行したサービスの識別情報が設定される実行サービス401、上流サービス連携情報402(第1連携情報)、及び下流サービス連携情報403(第2連携情報)の各データ項目を有する。転送用ログ保持部400の1データ行(1レコード)のデータが、サービス実行ログに相当する。
【0028】
上流サービス連携情報402は、上流サービスの識別情報が設定されるサービス4021、上流サービスから受信したリクエストのAPIが設定されるAPI4022,上流サービスから受信したリクエストのメソッドが設定されるメソッド4023、上流サービスから受信したリクエストの内容が設定される要求4024、リクエストに対するレスポンスのHttp(Hypertext Transfer Protocol) statusが設定されるHttp status4025、及び、リクエストに対するレスポンスの内容が設定される応答4026を含む。上流サービスは、実行サービス401に対してリクエストを送信した送信元のサービスMSである。
【0029】
下流サービス連携情報403は、下流サービスの識別情報が設定されるサービス4031、下流サービスに送信したリクエストのAPIが設定されるAPI4032、下流サービスに送信したリクエストのメソッドが設定されるメソッド4033、下流サービスに送信したリクエストの内容が設定される要求4034、リクエストに対するレスポンスのHttp statusが設定されるHttp status4035、及び、リクエストに対するレスポンスの内容が設定される応答4036を含む。下流サービスは、上流サービスからのリクエストを処理するために、実行サービス401がリクエストを送信した送信先のサービスMSである。
【0030】
サービス実行ログ送信部203は、サービス実行ログを転送用ログ保持部400から読み出し、読み出したサービス実行ログをテストデータ生成装置10に送信する。
【0031】
サービス実行ログ生成部202、転送用ログ保持部400、及びサービス実行ログ送信部203は、アプリ実行部201と同一の実行環境(物理計算機、VM、又はコンテナ等)に実装されてもよいし、ネットワークを介して通信可能な他の実行環境に実装されてもよい。
【0032】
<テストデータ生成装置>
テストデータ生成装置10は、ログ集約部101、テストパターン生成部102、及びテスト実行部103の各機能それぞれを実現するプログラムを記憶装置13に記憶している。テストデータ生成装置10は、記憶装置13が記憶するプログラムを、処理装置11がメモリ12に読み出して実行することにより、ログ集約部101、テストパターン生成部102、及びテスト実行部103の各機能それぞれを実現する。ログ集約部101、テストパターン生成部102、及びテスト実行部103の各機能を実現するプログラムは、例えば、可搬性の又は固定された記録媒体に記録して配布することができる。また、テストデータ生成装置10は、サービス実行ログ保持部500(実行ログ保持部)、テストパターン保持部600、テストデータ保持部700、及びテスト結果保持部800を記憶装置13に記憶している。
【0033】
ログ集約部101は、各サービスMSそれぞれからサービス実行ログを受信し、受信したサービス実行ログをサービス実行ログ保持部500に書き込む。ログ集約部101は、各サービスMSにサービス実行ログを要求して受信することにより、能動的にサービス実行ログを取得してもよいし、各サービスMSから随時送信されるサービス実行ログを受信することにより、受動的にサービス実行ログを取得してもよい。
【0034】
サービス実行ログ保持部500は、各サービスMSそれぞれから受信したサービス実行ログを蓄積するデータベースである。サービス実行ログ保持部500のデータ形式は、転送用ログ保持部400と同様であるため、その説明を省略する。
【0035】
テストパターン生成部102は、サービス実行ログ保持部500に格納されている各サービス実行ログに基づいて、テストパターン及びテストデータを生成するテストパターン生成処理を実行する。そして、テストパターン生成部102は、生成したテストパターンをテストパターン保持部600に書き込み、生成したテストデータをテストデータ保持部700に書き込む。
【0036】
(テストパターン保持部)
図6は、テストパターン保持部600の一例を示す図である。テストパターン保持部600は、テストパターンを蓄積するデータベースである。
【0037】
テストパターン保持部600は、テストパターンを識別するテストターンIDが設定されるテストパターンID601、テストの対象となるサービスの識別情報が設定される実行サービス602、上流サービス連携情報603、下流サービス連携情報604、及び、サービス実行ログにテストパターンが出現した回数が設定される出現回数の各データ項目を有する。テストパターン保持部600の1データ行のデータが、テストパターンに相当する。
【0038】
上流サービス連携情報603は、サービス実行ログと同様、サービス6031、API6032,メソッド6033、要求6034、Http status6035、及び、応答6036の各データ項目を有する。
【0039】
下流サービス連携情報604は、サービス実行ログと同様、サービス6041、API6042、メソッド6043、要求6044、Http status6045、及び、応答6046の各データ項目を有する。
【0040】
(テストデータ保持部)
図7は、テストデータ保持部700の一例を示す図である。テストデータ保持部700は、テストデータを蓄積するデータベースである。テストデータ保持部700の1データ行のデータが、テストデータに相当する。
【0041】
テストデータ保持部700は、テストパターンIDが設定されるテストパターンID701、出現回数が設定される出現回数702、テストの入力データ(リクエスト)が設定されるテスト入力703、及び、入力データに対する出力データ(レスポンス)の期待値が設定される期待値704の各データ項目を有する。
【0042】
テスト入力703は、サービス7031、API7032,メソッド7033、及び要求7034の各データ項目を有する。期待値704は、Http status7041、及び、応答7042の各データ項目を有する。
【0043】
テスト実行部103は、テストデータ保持部700に格納されているテストデータに基づいて、各サービスMSに対するテストを実行し、そのテストの結果をテスト結果保持部800に書き込む。
【0044】
(テスト結果保持部)
図8は、テスト結果保持部800の一例を示す図である。テスト結果保持部800は、テスト結果を蓄積するデータベースである。テスト結果保持部800の1データ行のデータが、テスト結果に相当する。
【0045】
テスト結果保持部800は、テストパターンIDが設定されるテストパターンID801、テストが成功したか失敗したかが設定されるテスト成否802、レスポンスの期待値が設定される期待値803、及び、リクエストに対するサービスMSからの実際のレスポンスが設定される実際の応答804の各データ項目を有する。期待値803は、Http status8031、及び、応答8032の各データ項目を有する。実際の応答804は、Http status8041、及び、応答8042の各データ項目を有する。
【0046】
続いて、複数のサービスMSが連携するMSAのシステムにおいて、サービスMSに入力された1つの独立したリクエスト及びそのレスポンスにのみに着目してテストパターンを生成した場合に生じる問題点について説明する。
【0047】
図9及び
図10は、リクエスト及びそのレスポンスに基づくテストパターンの生成方法の一例を説明する図である。例えば、
図9に示すように、各サービスMSからリクエスト(要求)及びそのレスポンス(応答)のログを収集し、類似度の高いログを1つのテストパターンとしてグルーピングすることが考えられる。しかしながら、MSA構成のシステムでは、独立したリクエスト(要求)及びそのレスポンス(応答)の類似度が高い場合であっても、リクエストを処理するためにサービスMSが連携する他のサービスMSが異なることがある。
【0048】
例えば、
図10に示す例では、第1サービスMS1に入力されたリクエスト(要求)及びそのレスポンス(応答)のログ1及びログ2は、その属性が全て同一であり、類似度が高い。しかしながら、図示する例では、属性「code」の値によって、第1サービスMS1が連携する他のサービスMSが変化する。具体的には、第1サービスMS1は、属性「code」の値が「1」の場合には、第2サービスMSと連携し、属性「code」の値が「2」の場合には、第3サービスMS3と連携する。このような場合に、ログ1及びログ2を同じテストパターンとしてグルーピングすると、第2サービスMS2との連携、又は第3サービスMS3との連携のうちいずれかのテストパターンが不足する。
【0049】
そのため、各サービスMSそれぞれに入力される1つの独立したリクエスト(要求)及びそのレスポンス(応答)にのみ基づいて、テストパターンを生成すると、システムの運用を続けてサービス実行ログを蓄積したとしても、テストの網羅度を向上させることができない。
【0050】
そこで、本実施形態におけるテストデータ生成装置10は、入力されたリクエストを処理するために、各サービスMSが連携した他のサービスとの相互通信についても考慮して、各サービスMSに対するテストパターン及びそのテストデータを生成することにより、各サービスMSに対するテストの網羅度を向上させる。
【0051】
図11及び
図12は、テストパターンを生成するテストパターン生成処理の概要を説明する図である。サービス実行ログ保持部500に蓄積される各サービス実行ログは、上流サービス連携情報502に加えて、下流サービス連携情報503を含む。上流サービス連携情報502は、実行サービス501が呼ばれた(リクエストが入力された)ときのリクエスト及びそのレスポンスに関する情報である。また、下流サービス連携情報503は、入力されたリクエストを処理するために、実行サービス501が他のサービスMSを呼び出したときのリクエスト及びそのレスポンスに関する情報である。つまり、サービス実行ログは、実行サービス501が、入力されたリクエストを処理するために連携した他のサービスMSとの相互通信に関する下流サービス連携情報503を含む。以下、上流サービス連携情報及び下流サービス連携情報を総称して、「サービス連携情報」と称することがある。
【0052】
テストパターン生成部102は、上流サービス連携情報502に加えて、下流サービス連携情報503を含めてサービス実行ログ同士を比較し、その類似度を評価する。サービス実行ログ同士の類似度を評価する処理の詳細については後述する。そして、テストパターン生成部102は、類似度の高いログをグルーピングして、テストパターンを生成する。
【0053】
例えば、
図11に例示するサービス実行ログ保持部500の2行目のデータ行512と、4行目のデータ行514とは、要求の属性「id」の属性値以外の値が全て同一である。そのため、テストパターン生成部102は、データ行512とデータ行514とは類似度が高いと判定し、データ行512とデータ行514とをグルーピングしてテストパターンを生成し、テストパターン保持部600のデータ行611に追加する。サービス実行ログからテストパターンを生成する処理の詳細は、後述する。
【0054】
一方、
図12に例示するサービス実行ログ保持部500の1行目のデータ行511と、3行目のデータ行513とは、上流サービス連携情報502の類似度は高いが、下流サービス連携情報503の類似度が低い。具体的には、データ行511では、下流サービス連携情報503において、実行サービス501である第1サービスMS1は、第2サービスMS2と連携しているのに対し、データ行513では、第3サービスMS3と連携している。そのため、テストパターン生成部102は、データ行511とデータ行513とは類似度が低いと判定し、データ行511とデータ行513とをグルーピングせずに、それぞれについてテストパターンを生成し、テストパターン保持部600のデータ行612、及びデータ行613に追加する。
【0055】
このように、テストデータ生成装置10は、上流サービス連携情報502に加えて、下流サービス連携情報503も含めてサービス実行ログ同士の類似度を評価することにより、サービスMS間の連携も考慮したテストパターンを生成することができる。よって、テストの網羅度を向上させることができる。
次に、テストデータ生成装置10で行われる処理の詳細について説明する。
【0056】
<テストパターン生成処理>
図13は、テストパターン生成処理の詳細を説明する処理フロー図である。本図に示すテストパターン生成処理は、例えば、テストデータ生成装置10にユーザから所定の入力がされた場合、又は所定のタイミング(例えば、所定の時刻、所定の時間間隔、又は、サービス実行ログがサービス実行ログ保持部500に一定以上蓄積されたタイミング等)で実行される。
【0057】
まず、テストパターン生成部102は、テストパターンを生成する対象の実行サービスを選択する(S101)。例えば、テストパターン生成部102は、所定の条件(例えば、テストデータ数が所定の基準値以下である)を満たす複数のサービスMSを選択してもよいし、テスト対象システム20に含まれる全てのサービスMSを選択してもよい。
【0058】
続いて、テストパターン生成部102は、選択した各実行サービスそれぞれに対し、次のS102~S104の処理を実行する。
【0059】
まず、テストパターン生成部102は、実行サービスのサービス実行ログをサービス実行ログ保持部500から取得する(S102)。このとき、テストパターン生成部102は、一定数量のサービス実行ログを取得してもよいし、一定期間のサービス実行ログを取得してもよいし、過去にテストパターンの生成に用いていないサービス実行ログを取得してもよい。
【0060】
続いて、テストパターン生成部102は、S102で取得したサービス実行ログ同士の類似度を評価し、類似度が高い場合にはグルーピングする(S103)。類似度を評価する処理の詳細については、後述する。
【0061】
続いて、テストパターン生成部102は、S103で生成した各グループのテストパターンを生成し、テストパターン保持部600に記録する(S104)。また、テストパターン生成部102は、各テストパターンのテストデータを生成し、テストデータ保持部700に記録する。
【0062】
テストパターン生成部102は、全ての実行サービスに対して、S102からS104の処理を実行した後、本テストパターン生成処理を終了する。
【0063】
図14から
図17を参照し、具体例を用いて、本実施形態におけるテストパターン生成処理の詳細を説明する。
図14から
図17は、本実施形態におけるテストパターン生成処理の詳細を説明する図である。
【0064】
図14に示すように、まず、テストパターン生成部102は、サービス実行ログから、類似度を評価するための中間データを生成し、生成した中間データを中間データテーブル900に書き込む。中間データテーブル900の各データ項目は、サービス実行ログ保持部500と同様であるため、その説明を省略する。中間データテーブル900の1データ行のデータが、中間データに相当する。
【0065】
本実施形態では、テストパターン生成部102は、サービス連携情報の各データ項目に重みを付けて、サービス実行ログ同士の類似度を評価する。具体的には、テストパターン生成部102は、サービス実行ログの上流サービス連携情報502の要求5024及び応答5026、並びに、下流サービス連携情報503の要求5034及び応答5036の各属性について、属性名を保持し、属性値の部分に共通の加工行うことで抽象化する。共通の加工としては、例えば、変数値の削除、又は、変数値を正規表現にすること等がある。本実施形態では、テストパターン生成部102は、属性値を捨象することで抽象化する。本実施形態では、捨象した値を「*」で表記する。図示する例では、テストパターン生成部102は、サービス実行ログの要求及び応答に含まれる属性「code」、「id」、「name」「msg」「result」について、その属性値を全て「*」に捨象している。そして、テストパターン生成部102は、要求及び応答以外の他のデータ項目の値はそのまま保持した中間データを生成する。
【0066】
続いて、
図15に示すように、テストパターン生成部102は、中間データテーブル900の各データ行(中間データ)を、テストパターン保持部600の各データ行(テストパターン)と比較する。そして、テストパターン生成部102は、一致するテストパターンがない場合に、中間データをテストパターン保持部600に新規に追加する。図示する例では、テストパターン生成部102は、中間データテーブル900のデータ行911と一致するテストパターンがテストパターン保持部600に格納されていないため、データ行911の中間データをテストパターン保持部600に新規のデータ行611として追加している。このとき、テストパターン生成部102は、新規に追加したデータ行611の出現回数605を1に設定する。
【0067】
続いて、
図16に示すように、テストパターン生成部102は、テストパターン保持部600に新規に追加したテストパターンのテストデータを生成する。図示する例では、テストパターン生成部102は、新規に追加したデータ行611の元となったサービス実行ログ保持部500のデータ行511の上流サービス連携情報502のデータを、新たなデータ行711として、テストデータ保持部700に追加している。すなわち、テストパターン生成部102は、サービス実行ログのデータを、テスト実行時の入力データ(リクエスト)、及び出力データ(レスポンス)の期待値として用いる。
【0068】
一方、
図17に示すように、テストパターン生成部102は、中間データと一致するテストパターンがテストパターン保持部600に存在する場合には、当該テストパターンの出現回数605を1加算する。図示する例では、テストパターン生成部102は、中間データテーブル900のデータ行914が、テストパターン保持部600のデータ行612(テストパターンID「2」)と一致するため、テストパターン保持部600に新規にデータ行を追加せず、データ行612の出現回数605を1加算している。すなわち、テストパターン生成部102は、データ行914のサービス実行ログを、テストパターン保持部600のデータ行612のグループにグルーピングしている。
【0069】
例えば、
図5に示すデータ例のサービス実行ログの全てのデータ行に対し、上述したテストパターン生成処理を実行すると、
図6に示すデータ例のテストパターン保持部600、及び、
図7に示すデータ例のテストデータ保持部700が生成される。なお、本実施形態では、テストパターン保持部600に格納されるテストパターンは、要求及び応答の属性名を保持し、属性値を捨象した中間データ(類似度の評価基準となったデータ)であるが、これに限らず、各グループの代表値をテストパターンとしてもよい。
【0070】
上述した例では、テストパターン生成部102は、類似度を評価する際に、サービスMS間の連携を特定する上で重要な情報となるサービス、API、メソッド、HTTP statusの値は、完全一致で比較評価し、リクエスト毎に差分が出やすい要求及び応答の情報は属性値を捨象して比較評価している。すなわち、要求及び応答は、属性の組合せが一致するか否かで比較評価しており、その属性値については比較評価の対象から除外している。よって、本例では、サービス、API、メソッド、HTTP statusの重みが、要求及び応答の重みより重い。なお、類似度を評価する際の各データ項目の重みは、ユーザが適宜設定変更可能である。例えば、要求又は応答に含まれる特定の属性については、その属性値を含めて完全一致で比較評価するようにしてもよい。
【0071】
また、本実施形態では、サービス連携情報の各データ項目に重みを付けて類似度を評価する手法について説明したが、これに限らず、各データ項目それぞれの値の一致、不一致又は閾値を用いて類似度を評価する等、他の手法により類似度を評価してもよい。例えば、テストパターン生成部102は、各データ項目の文字列が一致するか否か、または、各データ項目の値(例えば、数値)の差が所定の閾値以内であるか否か等の任意の評価基準により、サービス実行ログ同士の類似度を評価してもよい。
【0072】
<テスト実行処理>
図18は、テスト実行処理の詳細を説明する処理フロー図である。本図に示すテスト実行処理は、例えば、テストデータ生成装置10にユーザから所定の入力がされた場合、又は所定のタイミング(例えば、所定の時刻、所定の時間間隔、又は、テストパターン又はテストデータが一定以上蓄積されたタイミング等)で実行される。
【0073】
まず、テスト実行部103は、テストの終了条件を設定する(S201)。テストの終了条件は、事前に予め設定されていてもよいし、ユーザから都度設定入力を受け付けてもよい。終了条件として、例えば、テストデータ保持部700にある全てのテストデータのテストを実行する、ユーザから指定された件数のテストを実行する、ユーザから指定された時間が経過するまでテストを実行する等がある。
【0074】
続いて、テスト実行部103は、テストデータ保持部700からテストデータを取得し、取得したテストデータを、出現回数の降順でソートする(S202)。なお、本実施形態では、テスト実行部103は、出現回数の降順でテストデータをソートしているが、これに限らず、その他何等かの指標に基づいてテストデータをソートしてもよいし、出現回数の昇順でテストデータをソートしてもよい。
【0075】
図19は、ソート後のテストデータの一例を示す図である。図示するように、ソート後のテストデータは、出現回数702の多い順に上から並べられている。
【0076】
続いて、テスト実行部103は、ソートした順にテストデータを取り出し、取り出したテストデータについて、次のS203からS206の処理を実行する。
【0077】
まず、テスト実行部103は、取り出したテストデータに係るサービス7031のAPI7032を、メソッド7033により要求7034で呼び出し(リクエストを送信し)、呼び出したサービス7031から受信したレスポンスと期待値704とを比較する(S203)。
【0078】
続いて、テスト実行部103は、S203で比較した結果、サービス7031からのレスポンスが期待値704と一致するか否かを判定する(S204)。
【0079】
テスト実行部103は、サービス7031からのレスポンスが期待値704と一致する場合には(S204:Yes)、テスト成否802を「成功」とし、テストパターンID701と期待値704とサービス7031からの実際のレスポンスとを含むテスト結果をテスト結果保持部800に記録する(S205)。
【0080】
一方、テスト実行部103は、サービスMSからのレスポンスが期待値704と一致しない場合には(S204:No)、テスト成否802を「失敗」とし、テストパターンID701と期待値704とサービス7031からの実際のレスポンスとを含むテスト結果をテスト結果保持部800に記録する(S206)。
【0081】
テスト実行部103は、全てのテストデータに対して、S203からS206の処理を実行した後、本テスト実行処理を終了する。
【0082】
以上説明したように、本実施形態の生成システム1は、テスト対象のサービスMSが受信したリクエスト及びそのレスポンスに関する上流サービス連携情報と、リクエストを処理するためにテスト対象のサービスMSが他のサービスMSに送信したリクエスト及びそのレスポンスに関する下流サービス連携情報とを含む複数のサービス実行ログを記憶するサービス実行ログ保持部500と、サービス実行ログ同士の類似度を評価し、評価した類似度に基づくサービス実行ログのグループ毎にテストパターンを生成するテストパターン生成部102と、を備える。
【0083】
すなわち、本実施形態の生成システム1は、上流サービス連携情報に加えて、下流サービス連携情報を含むサービス実行ログ同士の類似度に基づくグループ毎のテストパターンを生成する。これにより、テスト対象のサービスMSが、受信したリクエストを処理するために連携する他のサービスMSについても考慮したテストパターンを生成することができる。すなわち、テスト対象のサービスMSが受信したリクエスト及びそのレスポンスが類似していても、リクエストを処理するために連携する他のサービスMSが異なるサービス実行ログ同士を区別してテストパターンを生成することができる。よって、テスト対象システム20の運用を続けるほど、テストの網羅度が向上するテストデータを提供することができる。これにより、複数のサービスMSが連携するテスト対象システム20に対し、より網羅性の高いテストデータを効率的に生成することができる。
【0084】
また、本実施形態の生成システム1は、サービス実行ログに含まれるリクエスト及びそのレスポンスを抽象化し、抽象化したサービス実行ログ同士を比較することによりその類似度を評価する。
【0085】
メッセージを用いて行う各テストの内容は、メッセージに含まれる情報によって異なるが、メッセージには、テストケースを生成する上で重要な情報と、そうではない情報とが含まれる。そこで、例えば、テストケースを生成する上で重要な情報以外の情報を抽象化することで、効率よくサービス実行ログ同士の類似度を評価することができる。
【0086】
また、本実施形態の生成システム1は、生成システム1は、リクエスト及びそのレスポンスに含まれる変数の値の部分に共通の加工を行うことで、サービス実行ログに含まれるリクエスト及びそのレスポンスを抽象化し、抽象化したサービス実行ログ同士を比較することによりその類似度を評価する。
【0087】
メッセージを用いて行う各テストの内容は、特に、そのメッセージにおける変数の種類(名称)ないし変数の数によって異なる。そこで、変数の値の部分に共通の加工(例えば、捨象等)を行うことで、変数名の組み合わせを類似度評価の基準とすることができる。これにより、テストの内容を定める各変数名を基準に、効率よくサービス実行ログ同士の類似度を評価することができる。
【0088】
また、本実施形態の生成システム1は、テストパターンのグループに含まれるサービス実行ログに基づいて、テストに用いるテストデータを生成する。
【0089】
このような構成により、テスト対象のサービスMSが実際に送受信したリクエスト及びレスポンスを、テストの入力データ及び出力データの期待値として用いることができる。これにより、リグレッションテストのテストデータを自動的かつ正確に生成することができる。よって、ユーザがリグレッションテストのテストデータを手動で作成する手間を省くことができる。
【0090】
[第2の実施形態]
続いて、本発明の第2の実施形態における生成システム、生成方法、及び生成プログラムについて説明する。
【0091】
本実施形態における生成システム1の構成は、第1の実施形態における生成システム1と同様であるため、その説明を省略する。第1の実施形態では、下流サービス連携情報について、実行サービスが直接呼び出した(リクエストを送信した送信先の)サービスMSとの連携にのみ基づいて類似度を評価しているが、本実施形態では、実行サービスが受信したリクエストを処理するために、相互通信した全てのサービスMS間の連携に基づいて類似度を評価する点が異なる。
【0092】
図20から
図24を参照し、具体例を用いて、本実施形態におけるテストパターン生成処理の詳細を説明する。
図20から
図24は、本実施形態におけるテストパターン生成処理の詳細を説明する図である。
【0093】
図20に示すように、本実施形態におけるサービス実行ログ保持部500に格納される(各サービスMSから送信される)サービス実行ログは、第1の実施形態におけるサービス実行ログの各データ項目に加えて、リクエストの処理の流れをトレースするためのトレースIDが設定されるトレースID504を有する。本実施形態におけるサービス実行ログの他のデータ項目は、第1の実施形態におえるサービス実行ログと同様であるため、その説明を省略する。
【0094】
まず、テストパターン生成部102は、サービス実行ログから、類似度を評価するための第1中間データを生成し、生成した第1中間データを第1中間データテーブル900Aに書き込む。サービス実行ログから第1中間データを生成する方法は、第1の実施形態におけるサービス実行ログから中間データを生成する方法と同様であるため、その説明を省略する。
【0095】
続いて、
図21に示すように、テストパターン生成部102は、第1中間データテーブル900Aの各データ行について、トレースID904を参照して、各サービスMSの呼び出しのデータを連鎖的に収集し、サービス連携グラフ1000(評価用データ)を生成する。
【0096】
サービス連携グラフ1000は、エッジE1~E5、及びノードN1~N5を有し、実行サービスが受信したリクエストを処理するために、相互通信した全てのサービスMSが送受信したリクエスト及びそのレスポンスに関する情報を表すグラフである。エッジE1~E5は、リクエストのメソッド、リクエストの要求、レスポンスのHTTP status、レスポンスの応答を表す。また、ノードN1~N5は、エッジE1~E5によって呼び出されたサービスMSのAPIを表す。
【0097】
図21に示す例では、テストパターン生成部102は、まず、第1中間データテーブル900Aのデータ行921に基づいて、エッジE1,ノードN1、エッジE2、及びノードN2を生成する。続いて、テストパターン生成部102は、データ行921のトレースID904、及び、下流サービス連携情報903に基づいて、データ行922を特定し、エッジE3,ノードN3,エッジE4,及びノードN4を生成する。続いて、テストパターン生成部102は、データ行922のトレースID904、及び、下流サービス連携情報903に基づいて、データ行923を特定し、ノードN3をサービス連携グラフ1000の終端(サービスMS4から他のノードMSへの呼び出しはない)とする。
【0098】
続いて、
図22に示すように、テストパターン生成部102は、サービス連携グラフ1000に基づいて、第2中間データ1100(評価用データ)を生成する。第2中間データ1100は、トレースID1104が同一のリクエスト及びそのレスポンスの情報が全て下流サービス連携情報1103に設定されている点が、第1中間データと異なる。また、第2中間データ1100は、下流サービス連携情報1103が、サービス11032を呼び出す呼出元のサービスの識別情報が設定される呼出元11031のデータ項目を更に有する点が、第1中間データと異なる。第2中間データ1100の他のデータ項目は、第1中間データと同様であるため、その説明を省略する。
【0099】
続いて、
図23に示すように、テストパターン生成部102は、第2中間データ1100を、テストパターン保持部600の各データ行と比較する。ここで、第2中間データ1100のサービス連携情報同士を比較することは、サービス連携グラフ1000のノード及びエッジを比較することに相当する。そして、テストパターン生成部102は、テストパターン保持部600に一致するデータ行がない場合に、第2中間データ1100をテストパターン保持部600に新規に追加する。図示する例では、テストパターン生成部102は、第2中間データ1100と一致するデータ行がテストパターン保持部600にないため、第2中間データ1100をテストパターン保持部600に新規のデータ行621として追加している。このとき、テストパターン生成部102は、新規に追加したデータ行621の出現回数605を1に設定する。
【0100】
続いて、
図24に示すように、テストパターン生成部102は、テストパターン保持部600に新規に追加したデータ行621(テストパターン)のテストデータを生成する。図示する例では、テストパターン生成部102は、新規に追加したデータ行621の元となったサービス実行ログ保持部500のデータ行521の上流サービス連携情報502のデータを、新たなデータ行721として、テストデータ保持部700に追加している。すなわち、テストパターン生成部102は、サービス実行ログのデータを、テスト実行時の入力データ(リクエスト)、及び出力データ(レスポンス)の期待値として用いる。
【0101】
以上説明したように、本実施形態の生成システム1は、テスト対象のサービスMSが受信したリクエストを処理するために、相互通信した全てのサービスMSが送信したリクエスト及びそのレスポンスに関する情報を含む評価用データ(サービス連携グラフ1000及び第2中間データ1100)をサービス実行ログに基づいて生成し、評価用データ同士の類似度を評価し、評価した類似度に基づくサービス実行ログのグループ毎のテストパターンを生成する。
【0102】
すなわち、本実施形態の生成システム1は、テスト対象のサービスMSが受信したリクエストを処理するために、呼び出された全てのサービスMSの連携を含めて、サービス実行ログ同士の類似度を評価する。これにより、テスト対象のサービスMSが受信したリクエストを処理するために連携した全てのサービスMSについて考慮したテストパターンを生成することができる。よって、テストの網羅度をより向上させるテストデータを提供することができる。
【0103】
[第3の実施形態]
続いて、本発明の第3の実施形態における生成システム、生成方法、及び生成プログラムについて説明する。
【0104】
本実施形態における生成システム1Aのハードウェア構成は、第1の実施形態における生成システム1と同様であるため、その説明を省略する。第1の実施形態では、メッセージログ保持部300に格納された全てのメッセージログを用いてテストパターンを生成しているが、MSAのような粒度の細かい分散システムの場合には、サービスMSが多数存在するため、メッセージログが多量に生成される。そのため、全てのメッセージログに基づくサービス実行ログを各サービスMSからテストデータ生成装置10に転送すると、その転送量も多くなり、通信負荷が高くなる。また、保管するサービス実行ログのデータ量も多くなる。例えば、パブリッククラウドサービスは、従量課金であることが多い。そのため、パブリッククラウドサービスでサービスMSを動作させる場合には、サービス実行ログの転送、保管、及び取得のそれぞれに対し従量課金がかかり、そのコストも増大する。また、全てのメッセージログについて、上述したテストパターン生成処理を実行すると、その処理負荷も高くなる。
【0105】
そのため、本実施形態では、サービスMSがメッセージログの要否を判定し、転送対象をフィルタリングすることで、各サービスMSからテストデータ生成装置10に転送するサービス実行ログのデータ量を低減する点が、第1の実施形態と異なる。
【0106】
図25は、本実施形態における生成システム1Aが備えるテストデータ生成装置10A、及び各サービスMSの機能構成の一例を示すブロック図である。本実施形態において、第1の実施形態と同様の構成には、同一の符号を付し、その説明を省略する。
【0107】
<テストデータ生成装置>
テストデータ生成装置10Aは、ログ集約部101、テストパターン生成部102、テスト実行部103、及びテストパターン更新部104の各機能それぞれを実現するプログラムを記憶装置13に記憶している。テストデータ生成装置10Aは、記憶装置13が記憶するプログラムを、処理装置11がメモリ12に読み出して実行することにより、ログ集約部101、テストパターン生成部102、テスト実行部103、及びテストパターン更新部104の各機能それぞれを実現する。また、テストデータ生成装置10Aは、サービス実行ログ保持部500、テストパターン保持部600、テストデータ保持部700、及びテスト結果保持部800を記憶装置13に記憶している。
【0108】
テストパターン更新部104は、各サービスMSそれぞれのテストパターンをテストパターン保持部600から読み出し、読み出したテストパターンをそれぞれ対応するサービスMSに送信するテストパターン更新処理を実行する。テストパターン更新部104は、所定のタイミング(例えば、所定の時刻、所定の時間間隔)でテストパターン更新処理を実行してもよいし、一定数以上のテストパターンがテストパターン保持部600に蓄積されたときにテストパターン更新処理を実行してもよいし、テストデータ生成装置10Aにユーザから所定の入力がされたときにテストパターン更新処理を実行してもよい。
【0109】
ログ集約部101、テストパターン生成部102、テスト実行部103、及びテストパターン更新部104の各機能を実現するプログラムは、例えば、可搬性の又は固定された記録媒体に記録して配布することができる。
【0110】
<サービス>
本実施形態におけるサービスMSは、アプリ実行部201、サービス実行ログ生成部202A、サービス実行ログ送信部203、及びテストパターン受信部204の機能を実現するプログラムを記憶装置23に記憶している。各サービスMSは、記憶装置23が記憶するプログラムを、処理装置21がメモリ22に読み出して実行することにより、アプリ実行部201、サービス実行ログ生成部202A、サービス実行ログ送信部203、及びテストパターン受信部204の各機能それぞれを実現する。また、各サービスMSは、メッセージログ保持部300、転送用ログ保持部400、及びサービステストパターン保持部1200を記憶装置23に記憶している。アプリ実行部201、サービス実行ログ生成部202A、サービス実行ログ送信部203、及びテストパターン受信部204の各機能を実現するプログラムは、例えば、可搬性の又は固定された記録媒体に記録して配布することができる。
【0111】
テストパターン受信部204は、テストデータ生成装置10Aから自サービスMSに係るテストパターンを受信し、受信したテストパターンをサービステストパターン保持部1200に書き込む。
【0112】
(サービステストパターン保持部)
図26は、サービステストパターン保持部1200の一例を示す図である。サービステストパターン保持部1200は、自サービスMSのテストパターンを蓄積するデータベースである。サービステストパターン保持部1200は、テストターンIDが設定されるテストパターンID1201、上流サービス連携情報1202、及び、下流サービス連携情報1203の各データ項目を有する。上流サービス連携情報1202及び下流サービス連携情報1203に設定される各データは、テストパターン保持部600の上流サービス連携情報603及び下流サービス連携情報604と同様であるため、その説明を省略する。
【0113】
サービス実行ログ生成部202Aは、メッセージログに基づいてサービス実行ログを生成するサービス実行ログ生成処理を実行する。本実施形態におけるサービス実行ログ生成部202Aは、生成したサービス実行ログそれぞれについて、サービステストパターン保持部1200に格納されたテストパターンそれぞれと比較することで、テストデータ生成装置10Aへの転送の要否を判定する。そして、サービス実行ログ生成部202は、転送の必要があるサービス実行ログのみを転送用ログ保持部400に書き込む。
次に、サービスMSで行われるサービス実行ログ生成処理の詳細について説明する。
【0114】
<サービス実行ログ生成処理>
図27は、サービス実行ログ生成処理の詳細を説明する処理フロー図である。本図に示すサービス実行ログ生成処理は、例えば、サービスMSにユーザから所定の入力がされた場合、又は所定のタイミング(例えば、所定の時刻、所定の時間間隔)で実行される。
【0115】
まず、サービス実行ログ生成部202Aは、メッセージログ保持部300から、自サービスMSに対するリクエストのメッセージログを抽出する(S301)。
【0116】
続いて、サービス実行ログ生成部202Aは、S301で抽出したリクエストのメッセージログそれぞれについて、当該リクエストを処理するために実行した他のサービスMSへのリクエストのメッセージログをメッセージログ保持部300から抽出する(S302)。
【0117】
続いて、サービス実行ログ生成部202Aは、S301で抽出した自サービスMSに対するリクエストのメッセージログと、S302で抽出した他のサービスMSへのリクエストのメッセージログとを、サービス実行ログのデータ形式に変換し、サービス実行ログとして記録する(S303)。
【0118】
続いて、サービス実行ログ生成部202Aは、次のS304からS307の処理を、生成した各サービス実行ログそれぞれに対し実行する。
【0119】
まず、サービス実行ログ生成部202Aは、サービス実行ログと、サービステストパターン保持部1200に格納された各テストパターンそれぞれとを比較する(S304)。
【0120】
続いて、サービス実行ログ生成部202Aは、S304における比較の結果、サービス実行ログとマッチするテストパターンがあるか否かを判定する(S305)。テストパターンとマッチするか否かの判定は、テストデータ生成装置10における類似度の評価方法と同様であってもよいし、異なる方法又は異なる閾値を用いてもよい。例えば、過剰にログを破棄しないよう、テストパターン生成部102における類似度の評価方法よりも評価基準を低くしてもよい。
【0121】
サービス実行ログ生成部202Aは、サービス実行ログとマッチするテストパターンがある場合(S305:Yes)には、当該サービス実行ログを破棄する(S306)。
【0122】
一方、サービス実行ログ生成部202Aは、サービス実行ログとマッチするテストパターンがない場合(S305:No)には、当該サービス実行ログを転送用ログ保持部400に記録する(S307)。
【0123】
サービス実行ログ生成部202Aは、生成した全てのサービス実行ログに対して、S304からS307の処理を実行した後、本サービス実行ログ生成処理を終了する。
【0124】
図28は、本実施形態におけるサービス実行ログ生成処理の詳細を説明する図である。図示する例では、転送用ログ保持部400のデータ行432のサービス実行ログは、サービステストパターン保持部1200のデータ行1211のテストパターンとマッチする。よって、サービス実行ログ生成部202Aは、データ行432のサービス実行ログを、転送用ログ保持部400から削除する(サービス実行ログを破棄し、転送用ログ保持部400に記録しない)。
【0125】
以上説明したように、本実施形態のテストデータ生成装置10Aは、生成したテストパターンをそれぞれ対応するサービスMSに送信する。そして、各サービスMSは、受信したテストパターンに含まれないサービス実行ログのみをテストデータ生成装置10Aに送信する。
【0126】
すなわち、本実施形態の生成システム1Aの各サービスMSは、新たなテストパターンを生成可能なサービス実行ログのみをテストデータ生成装置10Aに送信する。これにより、テストパターンの生成に不要なサービス実行ログの転送を抑制し、サービス実行ログの転送量を低減することができる。そして、各サービスMS及びテストデータ生成装置10Aにおいて蓄積するサービス実行ログのデータ量を削減し、また、テストパターン生成処理の処理負荷を低減することができる。
【0127】
本発明は、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲内で、任意の構成要素を用いて実施可能である。以上説明した実施形態や変形例はあくまで一例であり、発明の特徴が損なわれない限り、本発明はこれらの内容に限定されるものではない。また、上記では種々の実施形態や変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【0128】
例えば、本実施形態の各装置が備えるハードウェアの一部は、他の装置に設けてもよい。
【0129】
また、各サービス又はテストデータ生成装置の各プログラムは他の装置に設けてもよいし、あるプログラムを複数のプログラムからなるものとしてもよいし、複数のプログラムを一つのプログラムに統合してもよい。
【符号の説明】
【0130】
1,1A 生成システム
10,10A テストデータ生成装置
101 ログ集約部
102 テストパターン生成部
103 テスト実行部
104 テストパターン更新部
20 テスト対象システム
201 アプリ実行部
202,202A サービス実行ログ生成部
203 サービス実行ログ送信部
204テストパターン受信部
300 メッセージログ保持部
400 転送用ログ保持部
500 サービス実行ログ保持部
600 テストパターン保持部
700 テストデータ保持部
800 テスト結果保持部
1200 サービステストパターン保持部