(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-25
(45)【発行日】2025-01-09
(54)【発明の名称】テスト支援システム及びテスト支援方法
(51)【国際特許分類】
G06F 11/36 20060101AFI20241226BHJP
【FI】
G06F11/36 164
G06F11/36 184
G06F11/36 188
G06F11/36 192
(21)【出願番号】P 2021076375
(22)【出願日】2021-04-28
【審査請求日】2024-02-06
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜弁理士法人
(72)【発明者】
【氏名】岡田 雅江
(72)【発明者】
【氏名】中田 侑
(72)【発明者】
【氏名】那須 弘志
(72)【発明者】
【氏名】山崎 謙太
【審査官】西間木 祐紀
(56)【参考文献】
【文献】特開2018-055161(JP,A)
【文献】特開2005-149043(JP,A)
【文献】特開2012-195699(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
(57)【特許請求の範囲】
【請求項1】
外部サービスと連携しながら現行システムに入力される実際のリクエストを用いて新システムのリアルタイムテストを行うテスト支援システムであって、
前記現行システムに対して配置された第1のリクエスト制御装置と、
前記新システムに対して配置された第2のリクエスト制御装置と、
前記第1のリクエスト制御装置と前記第2のリクエスト制御装置に接続されたチェック処理装置と、を有し、
前記第1のリクエスト制御装置は、
前記現行システムへの処理要求に対する第1のリクエストを前記外部サービスに送信し、
前記処理要求を複製して前記新システムへ送信し、
前記第1のリクエストを複製して前記チェック処理装置に送信し、
前記第1のリクエストに対する前記外部サービスからの応答を前記現行システムに送信し、
前記第2のリクエスト制御装置は、
前記複製された処理要求に対する第2のリクエストを前記チェック処理装置に送信し、
前記チェック処理装置は、
前記複製された第1のリクエストと前記第2のリクエストを比較して前記新システムが正常か異常かを判断し、前記新システムが正常と判断した場合に、前記外部サービスからの前記応答を複製して前記第2のリクエストに対する応答として前記新システムに送信することを特徴とするテスト支援システム。
【請求項2】
前記第2のリクエスト制御装置は、
前記新システムが前記外部サービ
スに送信しようとする前記第2のリクエストの宛先を変更して前記チェック処理装置に送信することを特徴とする請求項1に記載のテスト支援システム。
【請求項3】
前記第1のリクエスト制御装置は、
前記現行システム及び前記新システムに対して異なる識別子を有するトレース情報を付与し、
前記チェック処理装置は、
前記トレース情報を用いて、前記第1のリクエストと前記第2のリクエストの対応付けを行うことを特徴とする請求項1に記載のテスト支援システム。
【請求項4】
前記チェック処理装置は、
前記現行システムの処理速度と前記新システムの処理速度の差に基づいて、前記第1のリクエスト、前記第2のリクエスト又は前記応答の転送タイミングを制御することを特徴とする請求項1に記載のテスト支援システム。
【請求項5】
前記チェック処理装置は、
前記転送タイミングを制御して、前記新システムが受け付け可能な状態になった後に、前記応答を複製して前記新システムに送信することを特徴とする請求項4に記載のテスト支援システム。
【請求項6】
前記チェック処理装置は、
前記新システムの内部状態に基づいて、テスト開始タイミングを制御することを特徴とする請求項1に記載のテスト支援システム。
【請求項7】
テスト中か非テスト中かを示すモード情報と前記現行システム及び前記新システムの役割を示す管理情報の内の少なくとも一つの情報に基づいて、前記第1のリクエスト制御装置、前記第2のリクエスト制御装置及び前記チェック処理装置を制御するテスト状況制御装置を更に有することを特徴とする請求項1に記載のテスト支援システム。
【請求項8】
前記モード情報と前記管理情報の内の少なくとも一つの情報を表示する表示部を更に有することを特徴とする請求項7に記載のテスト支援システム。
【請求項9】
前記現行システムは、
前記処理要求を処理する第1のサーバを有し、
前記新システムは、
前記複製された処理要求を処理する第2のサーバを有することを特徴とする請求項1に記載のテスト支援システム。
【請求項10】
前記第1のリクエスト制御装置は、
前記現行システムの内部又は外部に配置され、
前記第2のリクエスト制御装置は、
前記新システムの内部又は外部に配置されることを特徴とする請求項1に記載のテスト支援システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、テスト支援システム及びテスト支援方法に関する。
【背景技術】
【0002】
情報システムは、一度本番リリースを行ったらそれで終わりではなく、必要に応じて機能追加や機能改善を行ったりセキュリティ対策を行ったりたりとバージョンアップが必要である。特に近年はOpen Source Software(OSS)を活用した情報システムの開発が広まっている。OSSは頻繁にバージョンアップされサポート期間も短いため、それらを活用する情報システムも高頻度な更新が必要である。
【0003】
その際、バージョンアップの影響がないことを確認した上で安全かつ容易に更新する方法が求められる。その方式の1つとして、バージョンを上げた新システムを用意し、テストで問題がないことを確認後、トラフィックを現行システムから新システムに切り替えることが行われる。
【0004】
テストはテストケースを用いて行われることが多いが、作成したテストケースがバージョンアップの影響を完全に網羅できている保証がなく、本番リリース後に実運用でデータが流れて初めてわかる不具合も多い。このため、テストケースによるテストの他に、現行システムに流れる実データを使ったテストが求められる。
【0005】
また、テスト後のトラフィック切り替え時にリクエストの宛先などの設定値の書き換えによって発生する不具合を最小限に抑えるため、テスト時の新システムの設定値は現行システムと同じ値であるとより望ましい。
【0006】
実運用で情報システムに流れるデータを本番リリース前の新システムに流し、その処理結果を現行システムと新システムで比較してテストを行うことで、新システムに実データが流れた時の動作を保証することができる。
【0007】
特許文献1では、テスト移行支援システムによって現行システムに流れた過去のパケットを保存し、新バージョンの検証用システムに保存したパケットを送信して、応答パケットや応答時間等を比較する技術が開示されている。
【先行技術文献】
【特許文献】
【0008】
【発明の概要】
【発明が解決しようとする課題】
【0009】
上記特許文献1に記載の技術により、過去の実データによるテストが可能である。しかしながら、過去の実データによる正確なテスト実施のためには、パケットを保存した時のシステムの状態を新システムに再現してから検証する必要がある。このため、システム状態の長期保存が必要であることやその復元に時間がかかる等の問題がある。よって、過去データを使ったテストではなく、現行システムに流れるパケットをリアルタイムにミラーリングしてテスト方法が求められる。
【0010】
しかし、更新対象の情報システムが更新対象外の環境で稼動する外部サービスと連携して稼働する場合、同じ外部サービスを同時に利用することになり、リアルタイムでのテスト中に予期せぬ重複処理が発生する危険がある。
【0011】
ここで、外部サービスとの連携とは、クラウドベンダが提供するマネージドのストレージサービスの利用や、ネットワーク接続されたストレージ系システムを含む別システムに処理要求を行いその結果を取得して続きの処理を行う場合などを指す。
【0012】
本発明の目的は、外部サービスと連携して稼働する場合であっても、外部サービスに影響を与えずに実データを用いた新システムのリアルタイムテストを実現可能にすることにある。
【課題を解決するための手段】
【0013】
本発明の一態様のテスト支援システムは、外部サービスと連携しながら現行システムに入力される実際のリクエストを用いて新システムのリアルタイムテストを行うテスト支援システムであって、前記現行システムに対して配置された第1のリクエスト制御装置と、前記新システムに対して配置された第2のリクエスト制御装置と、前記第1のリクエスト制御装置と前記第2のリクエスト制御装置に接続されたチェック処理装置と、を有し、前記第1のリクエスト制御装置は、前記現行システムへの処理要求に対する第1のリクエストを前記外部サービスに送信し、前記処理要求を複製して前記新システムへ送信し、前記第1のリクエストを複製して前記チェック処理装置に送信し、前記第1のリクエストに対する前記外部サービスからの応答を前記現行システムに送信し、前記第2のリクエスト制御装置は、前記複製された処理要求に対する第2のリクエストを前記チェック処理装置に送信し、前記チェック処理装置は、前記複製された第1のリクエストと前記第2のリクエストを比較して前記新システムが正常か異常かを判断し、前記新システムが正常と判断した場合に、前記外部サービスからの前記応答を複製して前記第2のリクエストに対する応答として前記新システムに送信することを特徴とする。
【0014】
本発明の一態様のテスト支援方法は、外部サービスと連携しながら現行システムに入力される実際のリクエストを用いて新システムのリアルタイムテストを行うテスト支援方法であって、テスト中の前記新システムから新システムリクエストを前記外部サービスに送らず、前記現行システムの前記外部サービスへの現行システムリクエストに対する応答を複製して、前記新システムリクエストに対する応答として前記新システムに入力することを特徴とする。
【発明の効果】
【0015】
本発明の一態様によれば、外部サービスと連携して稼働する場合であっても、外部サービスに影響を与えずに実データを用いた新システムのリアルタイムテストを実現可能にすることができる。
【図面の簡単な説明】
【0016】
【
図2】本発明におけるシステム構成の一例を示すブロック図である。
【
図3】各コンポーネントが動作する計算機の構成の一例を示すブロック図である。
【
図4】端末のメモリまたは記憶装置、リクエスト制御装置のメモリまたは記憶装置、チェック処理装置のメモリまたは記憶装置に格納されたプログラムや処理、データの一例を示すブロック図である。
【
図5】リクエスト制御装置のメモリまたは記憶装置、チェック処理装置のメモリまたは記憶装置が保持するテーブルの構成の一例を示す図である。
【
図6】本発明の各コンポーネントの処理の流れの一例を示す図である。
【
図7】リクエスト複製処理部の処理の一例を示す図である。
【
図8】トレース情報付与処理部の処理の一例を示す図である。
【
図9】転送タイミング制御処理部の処理の一例を示す図である。
【
図10】宛先変更処理部の処理の一例を示す図である。
【
図11】リクエスト転送処理部の処理の一例を示す図である。
【
図12】リクエスト対応付け処理部の処理の一例を示す図である。
【
図13】リクエスト比較処理部の処理の一例を示す図である。
【
図14】システム状態監視処理部の処理の一例を示す図である。
【
図15】宛先変更処理部の実施例2の処理の一例を示す図である。
【
図16】テスト状況制御装置のメモリまたは記憶装置に格納されたプログラムや処理、データの一例を示すブロック図である。
【
図17A】テスト状況管理GUIの一例を示す図である。
【
図17B】テスト状況管理GUIの一例を示す図である。
【発明を実施するための形態】
【0017】
以下、図面を用いて、本発明の一実施の形態を詳述する。
なお、以下の説明では、同種の要素を区別しないで説明する場合には、枝番を含む参照符号のうちの共通部分(枝番を除く部分)を使用し、同種の要素を区別して説明する場合は、枝番を含む参照符号を使用することがある。例えば、ユーザを特に区別しないで説明する場合には、「ユーザ900」と記載し、個々のユーザを区別して説明する場合には、「ユーザ900-1」、「ユーザ900-2」のように記載することがある
【実施例1】
【0018】
図1を用いて本発明の概要を説明する。
本発明は、実データを用いた新システムのリアルタイムテストを支援するテスト支援フレームワーク10を有する。
テスト支援フレームワーク10は、リクエスト制御装置200、チェック処理装置300及びテスト状況制御装置400を有する。
【0019】
本発明は、一つの情報システム内部で処理が完結せず、外部サービスと連携しながら動く情報システムについて、バージョンを上げた新システムのテストを、外部サービスに影響を与えずに実データを用いてリアルタイムテストする技術に関する。なお、外部サービスとの連携とは、ターゲットとする情報システム外の環境で稼動する情報システムやサービス、サーバ等との連携を指し、例えば、クラウドベンダが提供するマネージドのストレージサービスの利用や、ネットワーク接続されたストレージ系システムを含む別システムに処理要求を行いその結果を取得して続きの処理を行う場合、などを指す。
【0020】
以降、これらのターゲットとする情報システム外の環境で稼動する情報システムやサービス、サーバ等を「外部サービス」と呼ぶ。また、本番稼働中のシステムを「現行システム」、バージョンを上げたテスト対象のシステムを「新システム」と呼ぶ。これらはそれぞれ
図1の外部サービス500、現行システム600、新システム700に対応する。
【0021】
現行システム600の一例として、非テスト時において、処理要求元800が現行システム600に対して処理要求を行い、現行システム600の内部で処理が行われ、外部サービス500に外部処理要求を送信し、外部サービス500内部で行われた処理による外部処理応答を現行システム600が受け取り、現行システム600の内部で処理を行い、処理要求元800に処理応答を返すような情報システムを想定する。
【0022】
なお、処理要求元800は単数であっても複数であってもよく、処理要求元800の実態はネットワーク経由で現行システム600に処理要求を行う他の情報システムやサービス、サーバ等の自立して動作する処理装置であってもよいし、不特定の人間がPC等のクライアント端末を操作して行う形態であってもよい。また、現行システム600が連携して動作する外部サービス500は単数であってもよいし、複数であってもよい。
【0023】
このような現行システム600に対して、バージョンを上げた新システム700のテストを、外部サービス500に影響を与えずに、実データを用いてリアルタイムテストする技術を構成する各処理装置の概要を以下に示す。
【0024】
リクエスト制御装置200は、現行システム600と新システム700の外側または内側にそれぞれに少なくとも一つ以上配備される。現行システム600には、リクエスト制御装置200-1が配置され、新システム700には、リクエスト制御装置200-2が配置される。
【0025】
リクエスト制御装置200は、自分が配備されたシステムが現行システム600であるか新システム700であるかによって、現行システムモード、新システムモードの二つの状態を切り替え、それぞれ異なるふるまいをする。
【0026】
リクエスト制御装置200は、現行システム600と新システム700に入出力される処理要求および応答に対して、内容確認および新システム700のテストのための複製処理・転送処理や、外部サービス500に影響を与えずにテストするための宛先変更処理、現行システム600と新システム700が入出力する要求および応答の対応付けのためのトレース情報の付与処理、などの制御を行う。上記処理の詳細は後述する。
【0027】
また、リクエスト制御装置200は、アプリケーションやシステムに特別な設定を行わずかつ構成を変えずに、どのようなアプリケーション・システムであっても内部に手を入れずに配備され、上記処理を実行可能であることを特徴とする。その配備方法の一例としては、コンテナ型の仮想環境を提供するソフトウェアの一例であるDocker(https://www.docker.com/)と、その実行基盤構築及び管理ツールの一例であるubernetes(https://kubernetes.io/)を活用して構築される情報システムにおいて、各アプリケーションの機能を持ったコンテナの横にサイドカーコンテナとしてEnvoy Proxy(https://www.envoyproxy.io/)を配備するような方法があげられる。
【0028】
チェック処理装置300は、リクエスト制御装置200から受け取った現行システム600と新システム700に入出力される処理要求および応答の複製または転送に対して、各入出力に付与されたトレース情報に基づいて現行システム600と新システム700に入出力される要求および応答の対応付け処理や、内容比較処理、現行システム600への入力される処理要求および応答を新システム700に転送するタイミングの制御処理、を行う。上記処理の詳細は後述する。
【0029】
テスト状況制御装置400は、テスト状況(テスト中/非テスト中)の管理と、システムの役割(現行システム/新システム)の管理を行い、これらに応じたリクエスト制御装置200、チェック処理装置300の制御を行う。また、テスト支援フレームワーク10のユーザ900がテスト状況を管理するためのGUI画面を提供する。上記処理の詳細は後述する。
【0030】
なお、リクエスト制御装置200およびチェック処理装置300をテスト中のみ配備することとし、非テスト時にはリクエスト制御装置200およびチェック処理装置300を配備しない場合には、テスト状況制御装置400は、テスト状況(テスト中/非テスト中)の管理を行わなくてもよい。
【0031】
また、事前にどのリクエスト制御装置200が現行システムまたは新システムであるかを決め、リクエスト制御装置200の状態を現行システムモードまたは新システムモードに固定してから配備し、かつその情報をチェック処理装置300が共有する場合には、テスト状況制御装置400は、システムの役割(現行システム/新システム)の管理を行わなくてもよい。
【0032】
さらに、リクエスト制御装置200およびチェック処理装置300をテスト中のみ配備することとし、非テスト時にはリクエスト制御装置200およびチェック処理装置300を配備せず、かつ事前にどのリクエスト制御装置200が現行システムまたは新システムであるかを決め、リクエスト制御装置200の状態を現行システムモードまたは新システムモードに固定してから配備し、かつその情報をチェック処理装置300が共有する場合には、テスト支援フレームワーク10はテスト状況制御装置400を持たなくてもよい。
【0033】
以降、実施例1では主にテスト支援フレームワーク10がテスト状況制御装置400を持たない場合について述べ、実施例3において、テスト支援フレームワーク10がテスト状況制御装置400を持つ場合について述べる。
【0034】
以降、現行システム600と新システム700に入出力される処理要求および応答やそれらの複製・転送について、特に区別しない場合には「リクエスト」と呼ぶ。
【0035】
図2は、本発明の実施例1におけるシステム構成の一例を示すブロック図である。
図2のシステムは、ネットワークスイッチ100と、リクエスト制御装置200と、チェック処理装置300と、外部サービス500と、現行システム600と、新システム700と、処理要求元800と、ユーザ900の操作する端末910から構成される。テスト状況制御装置400を持つ場合は、これらの機器とテスト状況制御装置400とが、ネットワークスイッチ100を介して接続される。
【0036】
現行システム600および新システム700はそれぞれ一つまたは複数のサーバ610-1、610-2、710-1、710-2を持つ。リクエスト制御装置200は、前述の通り現行システム600および新システム700の内部または外部にそれぞれ一つ以上配備される。
【0037】
図2では、現行システム600および新システム700のもつ各サーバ610-1、610-2、710-1、710-2に対して一対一対応で配備されているが一つのリクエスト制御装置200が複数のサーバへのリクエストをまとめて制御してもよい。
【0038】
<計算機の説明>
図3は、
図2に示す各コンポーネントが動作する計算機80の構成の一例を示すブロック図である。
計算機80は、プロセッサであるCPU(Central Processing Unit)81と、主記憶デバイスであるメモリ82と、不揮発性の二次記憶装置83と、入出力装置84と、ポート85を有する。これらの各構成要素は、バス86により相互に接続される。
【0039】
CPU81は、メモリ82に記憶されているプログラムを実行することによって、各計算機の所定の機能を実現する。メモリ82は、CPU81よって実行されるプログラム及びプログラムの実行に必要なデータを記憶する。プログラムは、二次記憶装置830からメモリ82にロードされる。
【0040】
入出力装置84は、ディスプレイ、ポインタ又はキーボード等のデバイスの一つ又は複数のデバイスを含む。ユーザ900は、入出力装置84により、各計算機を操作することができる。
【0041】
ポート85は、ネットワーク(例えば、
図2のネットワークスイッチ100)に接続される。各計算機は、ポート85を介して、他の計算機80と通信することができる。なお、各コンポーネントが動作する計算機80は、仮想マシンやコンテナ等の仮想環境であっても良い。
【0042】
<メモリまたは記憶装置のデータ構成の説明>
図4は、ユーザ900が利用する端末910のメモリまたは記憶装置920、リクエスト制御装置200のメモリまたは記憶装置220、チェック処理装置300のメモリまたは記憶装置320に格納されたプログラムや処理、データの一例を示すブロック図である。
【0043】
ユーザ900が利用する端末910のメモリまたは記憶装置920は、後述
図17に示したGUIを表示するためのクライアントプログラム921を持つ。クライアントプログラム921の一例は、ウェブブラウザである。
【0044】
リクエスト制御装置200のメモリまたは記憶装置220は、リクエスト複製処理部221、トレース情報付与処理部222、宛先変更処理部223、リクエスト転送処理部224、トレース情報管理テーブル225、システム対応管理テーブル226を持つ。
【0045】
チェック処理装置300のメモリまたは記憶装置320は、転送タイミング制御処理部321、リクエスト対応付け処理部322、リクエスト比較処理部323、システム状態監視処理部324、トレース情報管理テーブル325、システム対応管理テーブル326、比較結果管理テーブル327、比較条件管理データベース328を持つ。
【0046】
比較結果管理テーブル327は、チェック処理装置300のメモリまたは記憶装置320上に存在していてもよいし、チェック処理装置300のメモリまたは記憶装置320とは別のネットワーク接続された独立の専用または共用の一つまたは複数のサーバのメモリまたは記憶装置上に存在してもよい。
【0047】
比較条件管理データベース328は比較条件情報3281を持つ。チェック処理装置300において現行システム600と新システム700のリクエストを比較し新システム700の正常・異常判断をする際に、バージョンアップの影響によってリクエスト内容が異なっていても正常である場合が存在する。このとき、どのような変化であれば正常とみなすかを示す情報が比較条件情報3281である。
【0048】
リクエスト制御装置200のメモリまたは記憶装置220のトレース情報管理テーブル225、システム対応管理テーブル226と、チェック処理装置300のメモリまたは記憶装置320のトレース情報管理テーブル325、システム対応管理テーブル326とは、同一の情報を持つものとし、一方のテーブルに変更があった場合にはリクエスト制御装置200およびチェック処理装置300間の通信によって変更内容を伝達し、同期する。
【0049】
また、リクエスト制御装置200のメモリまたは記憶装置220またはチェック処理装置300のメモリまたは記憶装置320だけがトレース情報管理テーブル225または325、システム対応管理テーブル226または326を保有し、リクエスト制御装置200およびチェック処理装置300間の通信によって必要な情報をやり取りする形態であってもよい。
【0050】
また、トレース情報管理テーブル225または325、およびシステム対応管理テーブル226または326は、リクエスト制御装置200のメモリまたは記憶装置220、またはチェック処理装置300のメモリまたは記憶装置320上に存在していてもよいし、リクエスト制御装置200のメモリまたは記憶装置220、またはチェック処理装置300のメモリまたは記憶装置320とは別のネットワーク接続された独立の専用または共用の一つまたは複数のサーバのメモリまたは記憶装置上に存在してもよい。
【0051】
上記の各処理部およびテーブルの詳細は後述する。
【0052】
上記のユーザ900が利用する端末910のメモリまたは記憶装置920、リクエスト制御装置200のメモリまたは記憶装置220、チェック処理装置300のメモリまたは記憶装置320は、ネットワーク接続されたデータベースや仮想サーバのようなものの上で動作しても良い。
【0053】
<テーブルの説明>
図5は、リクエスト制御装置200のメモリまたは記憶装置220、およびチェック処理装置300のメモリまたは記憶装置320が保持するテーブルの構成の一例を示す図である。
【0054】
トレース情報管理テーブル225は、リクエスト制御装置200が現行システム600と新システム700が入出力するリクエストの対応付けのために各リクエストに付与するトレース情報を管理するテーブルである。
【0055】
トレース情報管理テーブル225は、対応付けできるリクエストの各ペアに割り当てられた固有のペアID2251と、現行システムに流れるリクエストに付与した現行システムトレース識別子2252と、新システムに流れるリクエストに付与した新システムトレース識別子2253を持つ。
【0056】
システム対応管理テーブル226は、現行システム600と新システム700のリクエストの宛先の対応付けを管理するテーブルである。
【0057】
システム対応管理テーブル226は、現行システム宛先2261と、新システム宛先2262を持つ。なお、同じ構成を持つシステムの宛先と管理番号のペアのテーブルが二つ以上存在し、現行システム、新システムを指定すると、管理番号をキーに宛先を対応付ける形式をとってもよい。
【0058】
比較結果管理テーブル327は、チェック処理装置300が現行システム600と新システム700のリクエストを比較し新システムの正常・異常判断をした結果を管理するテーブルである。
【0059】
比較結果管理テーブル327は、リクエストの比較ごとに割り当てられた固有の比較番号3271と、現行システムに流れたリクエスト内容である現行システムリクエスト内容3272と、新システムに流れたリクエスト内容である新システムリクエスト内容3273と、比較によって新システムの正常・異常判断をした結果3274を持つ。
【0060】
<全体の処理の流れの説明>
図6は、本発明であるテスト支援フレームワーク10を用いて、新システム700のテストを、外部サービス500に影響を与えずに実データを用いてリアルタイムテストする際の処理の流れを示している。
【0061】
はじめに、処理要求元800が現行システム600に処理要求を送信801する。現行システム側に配備されたリクエスト制御装置200-1(現行システムモード)が、現行システム600宛の処理要求を取得し、リクエスト複製処理221を実行する。これにより、現行システム600宛の処理要求の2つの複製を作成し、処理要求が3つに増幅される。それぞれ、現行システム送付用と新システム送付用、チェック処理装置保存用とする。なお、処理要求の複製数を1つとして、現行システム送付用と新システム送付用としてもよく、その場合は、チェック処理装置300において新システムに送信する前に複製され、チェック処理装置300に保存されるものとする。また、テスト内容やリクエストの対応付け方法に依って必要ない場合にはチェック処理装置保存用の複製をしなくてもかまわない。
【0062】
次に、複製されたリクエストに対して現行システム側に配備されたリクエスト制御装置200-1(現行システムモード)はトレース情報付与処理222を実行する。本処理によってトレース識別子を発行し、リクエストにトレース識別子を付与して、現行システム600と新システム700で行われるそれぞれの一連の処理の間伝搬させることで、チェック処理装置300による現行システム600と新システム700が入出力するリクエストの対応付けが可能になる。
【0063】
トレース情報のリクエストへの付与とその伝搬方法の一例としては、分散トレーシング(SIGELMAN, Benjamin H., et al. Dapper, a large-scale distributed systems tracing infrastructure. 2010.)の方法を応用することなどが考えられる。3つのリクエストのうち2つには現行システム用のトレース識別子を、1つには新システム用のトレース識別子を付与する。そして、現行システム600に、現行システム用のトレース識別子を付与した処理要求の一方を送信する。残りの2つのリクエストはチェック処理装置300に送信し、現行システム用のトレース識別子が付いたリクエストはチェック処理装置保存用として一時保持される。
【0064】
新システム用のトレース識別子が付いたリクエストは、転送タイミング制御処理321のタイミング制御にあわせて、新システム700に送信される。新システム側に配備されたリクエスト制御装置200-2(新システムモード)が、新システム700宛の処理要求を取得し、リクエスト複製処理221を実行したのち、新システム700に送信される。
【0065】
現行システム600、新システム700は各システム内部で処理要求にしたがって処理が実行され(601、701)、その結果外部サービスに送信する新たな処理要求が作成され、送信される(602,702)。
【0066】
まず、現行システムの外部処理要求は、現行システム側に配備されたリクエスト制御装置200-1(現行システムモード)が取得し、リクエスト転送処理224を実行する。これにより、外部サービスへ外部処理要求をするために送信するリクエストと、チェック処理装置に送信してリクエスト比較をするために利用されるリクエストの2つのリクエストが作成され、それぞれに送信される。
【0067】
一方、新システムの外部処理要求は、新システム側に配備されたリクエスト制御装置200-2(新システムモード)が取得し、宛先変更処理223を実行しチェック処理装置宛に書き換える。これにより、新システムは外部サービスに外部処理要求を送信したと錯覚したまま、外部サービスをテストの情報で書き換える危険性を回避する。
【0068】
チェック処理装置300は、リクエスト対応付け処理322を実行し、現行システム600から転送されてきた外部処理要求と、新システム700から宛先変更されてきた外部処理要求の対応付け処理322を行う。そして、対応付けしたリクエストペアに対してリクエスト比較処理323を実行する。これによって、処理要求元800の処理要求によって処理を行い、外部サービス500に外部処理要求を行うまでの新システム700の正常・異常を判断可能である。
【0069】
外部サービス500は、現行システムからの外部処理要求に従って処理を行い501、外部処理応答を現行システムに送信502する。
【0070】
現行システム側に配備されたリクエスト制御装置200-1(現行システムモード)が、現行システム600宛の外部処理応答を取得し、リクエスト複製処理221を実行する。これにより、現行システム600宛の外部処理応答の2つの複製を作成し、外部処理応答が3つに増幅される。それぞれ、現行システム送付用と新システム送付用、チェック処理装置保存用とする。なお、外部処理応答の複製数を1つとして、現行システム送付用と新システム送付用としてもよく、その場合は、チェック処理装置300において新システムに送信する前に複製され、チェック処理装置300に保存されるものとする。また、テスト内容やリクエストの対応付け方法に依って必要ない場合にはチェック処理装置保存用の複製をしなくてもかまわない。
【0071】
次に、複製されたリクエストに対して現行システム側に配備されたリクエスト制御装置200-1(現行システムモード)はトレース情報付与処理222を実行する。本処理によってトレース識別子を確認する。外部サービス応答からトレース識別子が消えてしまっていた場合、同じ識別子を付与しなおす。また、複製された3つのリクエストのうち1つは新システム用のトレース識別子に書き換える。
【0072】
そして、現行システム600に、現行システム用のトレース識別子を付与した外部処理応答の一方を送信する。残りの2つのリクエストはチェック処理装置300に送信し、現行システム用のトレース識別子が付いたリクエストはチェック処理装置保存用として一時保持される。新システム用のトレース識別子が付いたリクエストは、転送タイミング制御処理321のタイミング制御にあわせて、新システム700に送信される。
【0073】
新システム側に配備されたリクエスト制御装置200-2(新システムモード)が、新システム700宛の外部処理応答を取得し、リクエスト複製処理221を実行したのち、新システム700に送信される。これにより、新システムからの外部処理要求は外部サービスに送信されていないにも関わらず、あたかも外部サービスに外部処理要求を送信し、その応答を受け取ったかのように認識して、処理を継続することが可能になる。
【0074】
現行システム600、新システム700は各システム内部で外部処理応答の内容にしたがって処理が実行され(603、703)る。
【0075】
情報システムが複数の外部サービスと連携する場合、または、一つ以上の外部サービスと複数回連携して処理を行う場合には、現行システム600および新システム700の外部処理要求送信(602、702)から、外部処理応答の内容にしたがった処理の実行(603、703)までが繰り返される。
【0076】
最後の外部処理応答およびその処理の結果、処理要求元800に送信する処理応答が作成され、送信される(604,704)。
【0077】
現行システムの処理応答は、現行システム側に配備されたリクエスト制御装置200-1(現行システムモード)が取得し、リクエスト転送処理224を実行する。これにより、処理要求元800へ処理応答をするために送信するリクエストと、チェック処理装置300に送信してリクエスト比較をするために利用されるリクエストの2つのリクエストが作成され、それぞれに送信される。
【0078】
一方、新システムの処理応答は、新システム側に配備されたリクエスト制御装置200-2(新システムモード)が取得し、宛先変更処理223を実行しチェック処理装置宛に書き換える。これにより、新システムは処理要求元800に処理応答を送信したと錯覚したまま、処理要求元800に複数の処理応答が届く危険性を回避する。
【0079】
リクエスト制御装置200の、リクエスト複製処理部221、トレース情報付与処理部222、宛先変更処理部223、リクエスト転送処理部224、チェック処理装置300の、転送タイミング制御処理部321、リクエスト対応付け処理部322、リクエスト比較処理部323、システム状態監視処理部324、による処理の詳細は後述する。
【0080】
<各処理部の処理の説明>
図7に、リクエスト制御装置200が行う、リクエスト複製処理部221の処理の一例を示す。以下の処理は、リクエスト処理装置200が処理要求または外部処理応答、およびその複製を取得したことを契機に実行される。
【0081】
まず、ステップ2211において、リクエスト制御装置200がシステム宛のリクエストを受信する。
【0082】
次に、ステップ2212において、現在テスト中であるか否かを確認する。テスト中であればステップ2213へ進み、テスト中でなければステップ2216へ進む。なお、テスト中であるか否かは、
図14に示すシステム状態監視処理部の処理によって判断され、リクエスト制御装置200に配信されるものとし、リクエスト制御装置200は当該情報をメモリまたは記憶装置220に持つものとする。
【0083】
ステップ2213では、当該リクエスト制御装置200が現行システムモード(現行システム側に配備)であるか否か(新システムモード:新システム側に配備)を確認する。現行システムモードであればステップ2214に進み、現行システムモードでなければステップ2216に進む。なお、当該リクエスト制御装置200が現行システムモードであるか新システムモードであるかは、前述の通り、リクエスト制御装置200の配備前にどのリクエスト制御装置200のモードを決定しておくか、後述するテスト状況制御装置400が管理してモード情報をリクエスト制御装置200に配信されるものとし、リクエスト制御装置200は当該情報をメモリまたは記憶装置220に持つものとする。
【0084】
ステップ2214では、ステップ2211で受信したシステム宛リクエスト情報の複製を2つ作成する。
【0085】
次に、ステップ2215において、合計3つのリクエストをトレース情報付与処理部222に送信し、処理を終了する。
【0086】
ステップ2216では、テスト中でない場合には複製は不要であり、新システムモードであった場合でも、新システムに送信するリクエストの複製は不要であるから、ステップ2211で受信したシステム宛リクエスト情報に手を入れず、そのままシステムに送信し、処理を終了する。
【0087】
図8に、リクエスト制御装置200が行う、トレース情報付与処理部222の処理の一例を示す。以下の処理は、リクエスト複製処理部221の処理の結果を受け取ったことを契機に実行される。
【0088】
まず、ステップ2221において、リクエストがトレース識別子を持っているかを確認する。持っていればステップ2224に進み、持っていなければステップ2222に進む。
【0089】
ステップ2222では、リクエストが外部処理要求の応答であるかを確認する。例えば、TCP/IPのシーケンス番号、確認応答番号、送信元IPアドレス、送信先IPアドレスなどから判断できる。外部処理要求の応答であればステップ2224に進み、外部処理要求の応答でなければステップ2223に進む。
【0090】
ステップ2223では、ここに到達する場合はリクエストは処理要求元800からの新規の処理要求であるとみなせるため、2つの新しいトレース識別子を発行し、トレース情報管理テーブル225に、ペアID2251、現行システムトレース識別子2252、新システムトレース識別子2253を登録する。
【0091】
ステップ2224では、トレース情報管理テーブル225に従って、3つのリクエストのうち2つが現行システムトレース識別子2252を、残りの1つが新システムトレース識別子2253を持つように、トレース識別子を持っていないリクエストにトレース識別子を付与、トレース識別子を持っている場合でも先述の割合になるよう必要に応じてトレース識別子を書き換える。
【0092】
最後に、ステップ2225において、現行システムトレース識別子2252を持つリクエストの一方を現行システムに、もう一方の現行システムトレース識別子2252を持つリクエストと、新システムトレース識別子2253を持つリクエストの二つをチェック処理部300に送信する。
【0093】
図9に、チェック処理装置300が行う、転送タイミング制御処理部321の処理の一例を示す。以下の処理は、チェック処理装置300が現行システムモードのリクエスト制御装置200から新システム宛のリクエストを受け取ったことを契機に実行される。
【0094】
まず、ステップ3211において、現行システムモードのリクエスト制御装置200から、新システムトレース識別子が付与された現行システムへのリクエストの複製を受け取る。
【0095】
次に、ステップ3212において、ステップ3211において受信したリクエストが、処理の起点となる最初のリクエスト、つまり、処理要求元800からの新規の処理要求であるかを確認する。最初のリクエストであればステップ3215に進み、最初のリクストでなければステップ3213に進む。
【0096】
ステップ3213では、チェック処理装置300が新システムから対応する外部処理要求を受信済みであるか確認する。ここに到達する場合は、ステップ3211において受信したリクエストは外部サービス500からの外部処理応答であるため、本ステップを実行することで、新システム700が対応する外部処理要求を送信し、外部処理応答が受け付けられる状態であることを確認してからリクエストを送信することができる。
【0097】
チェック処理装置300が受信したどのリクエストが、ステップ3211において受信したリクエストの外部処理要求に対応するかは、トレース識別子の情報や、TCP/IPのシーケンス番号、確認応答番号、送信元IPアドレス、送信先IPアドレスなどから判断できる。確認の結果、受信済みであればステップ3215に進み、受信済みでなければステップ3214に進み任意の時間待機した後、再度ステップ3213を実行する。
【0098】
ステップ3215では、ステップ3211において受信したリクエストを、新システムがあたかも処理要求元800から直接新規の処理要求を受け取ったかのように、または、新システムがあたかも外部サービス500に外部処理要求を送信しその応答を受け取ったかのように認識するように加工する。
【0099】
例えば、TCP/IPのシーケンス番号、確認応答番号、送信元IPアドレス、送信先IPアドレスや、その他リクエスト固有の値を書き換える。この際、必要に応じてシステム対応管理テーブル226を用いて、ステップ3211において受信したリクエストに付与されている現行システム宛先2261と対応する新システム宛先2262の情報を照らし合わせながら加工処理を行う。最後に、ステップ3216において、リクエストを新システムに送信する。
【0100】
このように、チェック処理装置300は、現行システム600及び新システム700の処理速度の差を考慮して、リクエストの転送タイミングの制御を行う。例えば、現行システム600より新システム700の方が処理が遅れても、外部サービス500へのリクエストに対する応答を新システム700に送るタイミングを、新システム700側で応答を受け付ける体制になってから送信することが可能となる。これにより、テスト失敗リスクが低下する。
【0101】
また、新システム700より現行システム600の方が処理が遅れ、新システム700が外部サービス500へのリクエストに対する応答を時間内に受け取れなかったためにリクエストの再送が行われた場合であっても、重複するリクエストは無視する。これにより、テスト失敗リスクが低下する。
【0102】
図10に、リクエスト制御装置200が行う、宛先変更処理部223の処理の一例を示す。以下の処理は、新システムモードのリクエスト制御装置200が新システムから処理要求元800または外部サービス500宛のリクエストを取得したことを契機に実行される。
【0103】
まず、ステップ2231において、新システムから処理要求元800または外部サービス500宛のリクエストを取得する。
次に、ステップ2232において、チェック処理装置300に送信されるようリクエストの宛先変更を行う。
最後に、ステップ2233において、リクエストをチェック処理装置300に送信する。
【0104】
なお、このとき、テスト内容やリクエストの対応付け方法に依って本来の宛先情報などが必要である場合は、宛先書き換え前の情報もともに送信する。また、リクエストを含むパケットをシリアライズして丸ごと送信してもよい。
【0105】
図11に、リクエスト制御装置200が行う、リクエスト転送処理部224の処理の一例を示す。以下の処理は、現行システムモードのリクエスト制御装置200が現行システム600から処理要求元800または外部サービス500宛のリクエストを取得したことを契機に実行される。
【0106】
まず、ステップ2241において、現行システム600から処理要求元800または外部サービス500宛のリクエストを取得する。
次に、ステップ2242において、リクエストを複製する。
最後に、一方のリクエストをそのまま本来の送信先である処理要求元800または外部サービス500に送信し、もう一方をチェック処理部300に転送する。
【0107】
図12に、チェック処理装置300が行う、リクエスト対応付け処理部322の処理の一例を示す。以下の処理は、チェック処理部300が現行システム600または新システム700から処理要求元800または外部サービス500宛のリクエストの転送を受け取ったことを契機に実行される。
【0108】
まず、ステップ3221において、現行システム600または新システム700から処理要求元800または外部サービス500宛のリクエストの転送を受け取る。
【0109】
次に、ステップ3222において、リクエストに付与されているトレース識別子を確認し、トレース情報管理テーブル225を参照して対になるトレース識別子(現行システムトレース識別子2252または新システムトレース識別子2253)を取得する。
【0110】
次に、ステップ3223において、ステップ3222で取得した対になるトレース識別子の情報や、各リクエストのパケットのTCP/IPのシーケンス番号、確認応答番号、送信元IPアドレス、送信先IPアドレスなどの情報から、ステップ3221において受信したリクエストと対になるリクエストを受信しているか確認する。確認の結果、受信済みであればステップ3225に進み、受信済みでなければステップ3224に進み任意の時間待機した後、再度ステップ3223を実行する。
【0111】
最後に、対になるリクエストをペアのリクエストとして、リクエスト比較処理部323に渡す。
【0112】
図13に、チェック処理装置300が行う、リクエスト比較処理部323の処理の一例を示す。以下の処理は、リクエスト対応付け処理322の結果を受け取ったことを契機に実行される。
【0113】
まず、ステップ3231において、リクエスト対応付け処理322の結果として、対になるリクエストのペアを受け取る。
【0114】
次に、ステップ3232において、リクエスト内容が同一であるか確認する。同一であればステップ3235に進み、同一でなければステップ3233に進む。
【0115】
ステップ3233では、チェック処理装置300の比較条件管理データベース328にアクセスし、格納されている比較条件情報3281を参照して、追加の比較条件があるか確認する。追加の比較条件があればステップ3234に進み、なければステップ3236に進む。
【0116】
ステップ3234では、リクエスト内容が追加の比較条件に合致するか確認する。合致すればステップ3235に進み、合致しなければステップ3236に進む。
【0117】
ステップ3235では、リクエスト比較の結果、新システム700の処理が正常であったとみなし、比較結果管理テーブル327に、現行システムリクエスト内容3272、新システムリクエスト内容3263、結果3274を「正常」として書き込む。
【0118】
ステップ3235では、リクエスト比較の結果、新システム700の処理に異常があったとみなし、比較結果管理テーブル327に、現行システムリクエスト内容3272、新システムリクエスト内容3263、結果3274を「異常」として書き込む。
【0119】
最後に、ステップ3237で結果を保存し、処理を終了する。比較結果管理テーブル327の内容は、テスト終了後に後述のテスト状況制御装置400が提供するテスト結果表示画面440に表示されるほか、テスト中およびテスト終了後任意のファイル形式でチェック処理装置300に保存されたものをユーザ900の端末910から閲覧することや、ユーザ900の端末910の標準出力に出力されることで確認可能である。
【0120】
図14に、チェック処理装置300が行う、システム状態監視処理部324の処理の一例を示す。以下の処理は、リクエスト制御装置200およびチェック処理装置300が配備され、新システムのテストを行おうとしたことを契機に実行される。
【0121】
まず、ステップ3241において、新システム700の準備が完了しているか確認する。たとえば、システムが利用するサーバやストレージシステムなどのステータスチェックを行うことや、ネットワーク疎通確認スクリプトを用意して実行するなどの方法が考えられる。確認の結果、準備が完了していればステップ3243に進み、完了していなければステップ3242に進み任意の時間待機した後、再度ステップ3241を実行する。
【0122】
次に、ステップ3243において、現行システムの600と新システム700のシステム内部状態の同期が完了しているか確認する。たとえば、システム内部に持つキャッシュや、システムがストレージシステムを持つ場合にはストレージに保存されるデータの状態の同期が完了していることを確認する。確認の結果、準備が完了していればステップ3245に進み、完了していなければステップ3244に進み任意の時間待機した後、再度ステップ3243を実行する。
【0123】
最後に、ステップ3245において、チェック処理装置300内の各処理部や、リクエスト制御装置200に対してテスト開始命令を送信する。
【0124】
以上の処理は、現行システムモードのリクエスト制御装置200が、リクエスト複製処理部221のステップ2214で2つのリクエストの複製を作成し、合計3つのすべてのリクエストおよびその複製に対して、トレース情報付与処理部222のステップ2223でトレース識別子を付与する場合について述べた。
【0125】
しかし、リクエスト複製処理部221のステップ2214で作成するリクエストの複製数を1つとして、現行システム送付用と新システム送付用としてもよい。その場合は、チェック処理装置300において新システムに送信する前にリクエストが複製され、チェック処理装置300に保存されるものとする。また、テスト内容やリクエストの対応付け方法に依って必要ない場合にはチェック処理装置保存用の複製をしなくてもかまわない。
【0126】
また、新システム用のトレース識別子を付与する処理を行うタイミングは、トレース情報付与処理部222のステップ2223でなくとも構わない。その場合、例えば、新システム700にリクエストが送信される前に新システム側に配備されたリクエスト制御装置200が行うリクエスト複製処理部221の処理において、ステップ2213の確認でNoとなった場合、つまり、テスト中であって当該リクエスト制御装置200が新システムモード(新システム側に配備)である場合、ステップ2216またはその直前で新システム用の識別子を付与する。他に、チェック処理装置300が、転送タイミング制御処理部321のステップ3215で行うリクエストの加工処理において、トレース識別子を付与する等の方法も考えられる。
【実施例2】
【0127】
実施例1では、新システム700に配備された新システムモードのリクエスト制御装置200が、新システムから処理要求元800または外部サービス500宛に送付されるすべてのリクエストに対して、宛先変更処理部223の処理によってリクエストをチェック処理装置300に送信する例を述べた。
【0128】
しかし、リクエストの内容と宛先によっては、リクエストをそのまま外部サービス500に送信してもよい場合も存在する。たとえば、外部サービス500からデータを取得する、httpのGetメソッドのようなリクエストは、外部サービス500の状態を更新しないため送信してもよい。一方、外部サービス500のデータを更新する、httpのPostメソッドのようなリクエストは、外部サービス500の状態を二重に更新する恐れがあるためを送信しないほうが良い。
【0129】
そこで、リクエストの内容と宛先を加味して新システム700が処理要求元800または外部サービス500宛に送付するリクエストをそのまま外部に送信するか、実施例1の通りチェック処理装置300に送信するかを判断する機能を兼ね備えた宛先変更処理部223の処理の一例を
図15に示す。以下の処理は、新システムモードのリクエスト制御装置200が新システムから処理要求元800または外部サービス500宛のリクエストを取得したことを契機に実行される。
【0130】
まず、ステップ22311において、新システム600から処理要求元800または外部サービス500宛のリクエストを取得する。
【0131】
次に、ステップ22312において、リクエスト内容および宛先を参照し、外部に影響を与えるようなリクエストであるかを確認する。影響を与えるようなリクエストでなければステップ22313に進み、影響を与えるようなリクエストであればステップ22315に進む。
【0132】
ステップ22313では、チェック処理装置300におけるリクエスト比較処理323のため、リクエストの複製を行う。
【0133】
次に、ステップ22314において、一方のリクエストはそのまま送信し、もう一方のリクエストをチェック処理装置300に転送する。なお、テスト方針によって、外部に影響を与えずそのまま送信可能なリクエストについてはリクエスト比較処理323が不要であるとする場合には、ステップ22313の処理を行わず、そのままリクエストを送信してもよい。
【0134】
ステップ22315では、チェック処理装置300に送信されるようリクエストの宛先変更を行う。
【0135】
最後に、ステップ223316において、リクエストをチェック処理装置300に送信する。なお、このとき、テスト内容やリクエストの対応付け方法に依って本来の宛先情報などが必要である場合は、宛先書き換え前の情報もともに送信する。また、リクエストを含むパケットをシリアライズして丸ごと送信してもよい。これにより、リクエスト制御装置200やチェック処理装置300の負荷が軽減される。
【実施例3】
【0136】
実施例1および3では、主にテスト支援フレームワーク10がリクエスト制御装置200およびチェック処理装置300をテスト中のみ配備することとし、非テスト時にはリクエスト制御装置200およびチェック処理装置300を配備せず、かつ事前にどのリクエスト制御装置200が現行システムまたは新システムであるかを決め、リクエスト制御装置200の状態を現行システムモードまたは新システムモードに固定してから配備し、かつその情報をチェック処理装置300が共有する場合の例を述べた。
【0137】
しかし、リクエスト制御装置200およびチェック処理装置300をテスト中のみ配備し、非テスト時に撤退することは運用のコストがかかる。また、事前にどのリクエスト制御装置200が現行システムまたは新システムであるかを決め、リクエスト制御装置200の状態を現行システムモードまたは新システムモードに固定してから配備する場合には、テスト完了後に新システムを本番運用した後の次のテストにおいて、リクエスト制御装置200を再設定しなくてはならない。
【0138】
これを改善するため、テスト状況制御装置400を新たに導入して、テスト状況(テスト中/非テスト中)の管理と、システムの役割(現行システム/新システム)の管理を行い、これらに応じたリクエスト制御装置200、チェック処理装置300の制御を行い、また、テスト支援フレームワーク10(本発明)のユーザ900がテスト状況を管理するためのGUI画面を提供することで運用負荷の軽減を実現する例について述べる。
【0139】
図16は、テスト状況制御装置400のメモリまたは記憶装置420に格納されたプログラムや処理、データの一例を示すブロック図である。
【0140】
テスト状況制御装置400のメモリまたは記憶装置420は、システム状態監視処理部421、GUI表示処理部422、システム対応管理テーブル423を持つ。
【0141】
システム状態監視処理部421は、チェック処理装置300が行う、システム状態監視処理部324の処理と同等の機能を持つ。また、システム対応管理テーブル423を参考に、リクエスト制御装置200に対して現行システムモード/新システムモードの切り替えを命じる。
【0142】
GUI表示処理部422は、Javascriptのようにユーザ900の端末910のメモリまたは記憶装置上のクライアントプログラム921で動作しても良いし、専用アプリケーションなど、端末910上のクライアントプログラム921以外のクライアントGUIを用いて動作してもよい。
【0143】
システム対応管理テーブル423は、テスト状況制御装置400のメモリまたは記憶装置420上に存在していてもよいし、テスト状況制御装置400のメモリまたは記憶装置420とは別のネットワーク接続された独立の専用または共用の一つまたは複数のサーバのメモリまたは記憶装置上に存在してもよい。
【0144】
システム対応管理テーブル423は、リクエスト制御装置200のメモリまたは記憶装置220の、システム対応管理テーブル226、チェック処理装置300のメモリまたは記憶装置320の、システム対応管理テーブル326と同一の情報を持つものとし、いずれかのテーブルに変更があった場合にはリクエスト制御装置200およびチェック処理装置300およびテスト状況制御装置400間の通信によって変更内容を伝達し、同期する。
【0145】
また、リクエスト制御装置200のメモリまたは記憶装置220またはチェック処理装置300のメモリまたは記憶装置320またはテスト状況制御装置400のメモリまたは記憶装置420のいずれか1つ以上がシステム対応管理テーブル226または326または423を保有し、リクエスト制御装置200およびチェック処理装置300間およびテスト状況制御装置400間の通信によって必要な情報をやり取りする形態であってもよい。
【0146】
テスト状況制御装置400は、テスト中か非テスト中かを示すモード情報と現行システム600及び新システム700の役割を示す管理情報の内の少なくとも一つの情報に基づいて、リクエスト制御装置200及びチェック処理装置300を制御する。また、前記モード情報と前記管理情報の内の少なくとも一つの情報を表示する表示部を有しても良い。
【0147】
図17A、
図17Bは、テスト状況制御装置400が提供するGUIの一例を示す図である。
【0148】
テスト管理画面430は、テスト支援フレームワーク10(本発明)のユーザ900がテスト状況を管理するためのGUI画面の一例である。
【0149】
ユーザ900は、テスト管理画面430に表示されているテスト状況チェックボックス431を用いてテスト状況(テスト中/非テスト中)の切り替えを行う。なお、切り替えはチェックボックスでなくトグルスイッチの操作等別の形態で行ってもよい。
【0150】
また、ユーザ900は、環境情報入力窓432に、現行システムの宛先情報432-1と新システムの宛先情報432-2を入力する。なお、情報の入力は入力窓への手入力だけでなく、ファイル類のアップロード等別の形態で行ってもよい。最後に、ユーザ900が更新ボタン433を押下することで、テスト状況が切り替えられる。
【0151】
テスト結果表示画面440は、テスト支援フレームワーク10(本発明)のユーザ900がテスト結果を確認するためのGUI画面の一例である。
【0152】
ユーザ900は、現行システム表示441でテスト時の現行システムを、新システム表示442でテスト時の新システムを、テスト期間表示443でテスト期間を、テスト結果表示444でテスト結果を参照可能である。テスト結果表示444には、比較結果管理テーブル327の内容相当の情報が閲覧可能である。
【0153】
上記実施例では、テスト中の新システムからのリクエストを外部に送らないことでこれを実現する。さらに、現行システムの外部サービスへのリクエストに対する応答を複製し、新システムのリクエストに対する応答として入力することでシステム内部の処理を継続してテストを行うことで、実際に外部サービスにリクエストを送信した場合と同等のテストを実施したとみなせる。
【0154】
上記実施例によれば、外部サービスと連携して稼働する場合であっても、外部サービスに影響を与えずに実データを用いた新システムのリアルタイムテストを実現可能にすることができる。
【符号の説明】
【0155】
10 テスト支援フレームワーク
200 リクエスト制御装置
300 チェック処理装置
400 テスト状況制御装置
500 外部サービス
600 現行システム
700 新システム
800 処理要求元
900 ユーザ