(57)【要約】      （修正有）【課題】バックエンドサーバのトランザクション単位で入力データ及び処理結果データを保存しておくことで、トランザクション単位でのテストの再実行を可能とする。【解決手段】楽観的排他ロック機構を備えたオンラインシステムに対してテストを実施するに当たり、テストの初回ラン時にBLサーバ16への入力データとBLサーバ16からの処理結果データをテスト用ＤＢ26に蓄積しておき、再ラン時には同ＤＢ26に格納された初回ラン時の入力データをBLサーバ16に対して送信すると共に、BLサーバ16からの処理結果データをテスト用ＤＢ26に登録するテスト支援部を備え、このテスト支援部が、再ラン時にBLサーバ16からの処理結果データに付与されたタイムスタンプによって、初回ラン時にＤＢ26に蓄積された後続入力データのタイムスタンプを上書きした後、BLサーバ16に送信する。【選択図】図１２
2010118014.tif 000002
【特許請求の範囲】
【請求項１】
クライアントと、データベースに対する業務処理を実行するバックエンドサーバと、上記クライアントからのリクエストデータを受け取り、担当のバックエンドサーバに必要な入力データを送信して処理を依頼し、その処理結果データをクライアントに送信するフロントエンドサーバを備えたオンラインシステムに対してテストを実施するに当たり、テストの初回ラン時にバックエンドサーバに送信した入力データと、バックエンドサーバから送信された処理結果データをフロントエンドサーバ内のテスト用データベースに蓄積しておき、テストの再ラン時にはこのテスト用データベースに格納された初回ラン時の入力データをバックエンドサーバに対して送信すると共に、バックエンドサーバから送信された再ラン時の処理結果データを上記テスト用データベースに登録する機能を備えたテスト支援システムであって、
上記バックエンドサーバが処理結果データをフロントエンドサーバに返信するに際し、データベースの該当レコードに付与されたユニークな管理コードを処理結果データに付与すると共に、フロントエンドサーバがこの処理結果データに基づいた入力データをバックエンドサーバに送信して同レコードに対する後続の処理を依頼する際には、当該入力データにも上記の管理コードが引き継がれ、バックエンドサーバではこの入力データに含まれる管理コードがデータベースの該当レコードの管理コードと一致している場合のみ、依頼された処理を実行する楽観的排他ロック機構を備えている場合に、
上記テストの再ラン時に上記バックエンドサーバから送信された先行の処理結果データに付与された新たな管理コードによって、初回ラン時に上記テスト用データベースに蓄積された後続処理用入力データの管理コードを上書きした後、この入力データをバックエンドサーバに送信する機能を備えたことを特徴とするテスト支援システム。
【請求項２】
上記テスト支援システムが、テスト用データベースに格納された初回ラン時の処理結果データと、再ラン時の処理結果データを比較し、その比較結果を出力する機能を備えており、
この比較に際して、初回ラン時の処理結果データに付与された管理コードと、再ラン時の処理結果データに付与された管理コードにマスク処理を施すことを特徴とする請求項１に記載のテスト支援システム。
【請求項３】
上記管理コードが、バックエンドサーバが管理するデータベースの該当コードに付与されたタイムスタンプであることを特徴とする請求項１または２に記載のテスト支援システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はテスト支援システムに係り、特に、複数のクライアントとサーバを通信ネットワークで接続したオンラインシステムの全体動作を検証するオンラインテストを支援する技術に関する。
【背景技術】
【０００２】
複数のクライアントとサーバを通信ネットワークで接続したオンラインシステムを通じて、クライアントに対して様々なサービスを提供する機会が増えてきている。
図１８は、このようなオンラインシステムの一例を示すシステム構成図であり、オンラインシステム80は、Webブラウザプログラムを搭載したクライアント12と、PL（Presentation Logic）サーバ14と、複数のBL（Business Logic）サーバ16（第１のBLサーバ16a〜第３のBLサーバ16c）を備えている。クライアント12−PLサーバ14間、及びPLサーバ14−BLサーバ16間は、通信ネットワークを介して接続されている。
【０００３】
PLサーバ14は、クライアント12からのリクエストデータ30を受け付けた後、担当のBLサーバ16に入力データを送信して処理を依頼すると共に、BLサーバ16から返された処理結果データ32をクライアントに送信するフロントエンドサーバとして機能する。
このためPLサーバ14は、画面制御部20と、ディスパッチエンジン21と、コネクタ22を備えている。
【０００４】
画面制御部20は、画面遷移定義ＤＢ23を参照し、クライアント12に対して送信する画面（Htmlファイル）を生成する機能を果たす。
またディスパッチエンジン21は、ディスパッチ定義ＤＢ24を参照し、リクエストデータ30に対応したトランザクション及び担当BLサーバを特定する機能を果たす。
またコネクタ22は、各BLサーバ16が要求する固有の形式に入力データを変換すると共に、BLサーバ16から送信された処理結果データをPLサーバ14の標準形式に変換する機能を発揮する。このため、BLサーバ16毎に対応のデータ変換部（第１のBLサーバ用データ変換部22a〜第３のBLサーバ用データ変換部22c）が設けられている。
【０００５】
各BLサーバ16は、PLサーバ14から受け取った入力データに基づき、直接または図示しないDBサーバを通じて間接的に管理しているデータベース28に対する検索、更新等の業務処理を実行するバックエンドサーバとして機能する。
【０００６】
図１８では、クライアント12から送信されたリクエストデータ30に含まれるデータ(1)を第１のBLサーバ16aに送信して所定のトランザクション処理を依頼し、その処理結果データであるデータ(2)を第２のBLサーバ16bに送信して所定のトランザクション処理を依頼し、その処理結果データであるデータ(3)を第３のBLサーバ16cに送信して所定のトランザクション処理を依頼し、その処理結果データであるデータ(4)を最終的な処理結果データ32としてクライアント12に送信するパターンが例示されている。
【０００７】
このようなオンラインシステム80を構築するに際しては、各サーバに搭載された個々のアプリケーションプログラムの単体テストや結合テストが必要であることは勿論であるが、サービスのリリース前にはクライアント12と各サーバを通信ネットワークを介して接続した状態で、オンラインシステム全体の動作を検証する必要がある。
また、既存のオンラインシステムに新たな機能を追加したり、バグの修正を行った場合には、他の既存機能に悪影響（デグレード）が生じていないか等を確認する必要性が生じる。
【０００８】
この所謂オンラインテストに際しては、予め準備された複数のシナリオに従ってオペレータがクライアント12から実際の入力を行い、システムによって提供される各種機能が正常に動作するか否かが検証される。そして、何らかの不具合が生じた場合には、少し前の地点に戻って入力をやり直し、問題箇所や原因を突き止める作業が繰り返される。
【０００９】
大規模なオンラインシステムともなれば、多数のサーバの連携によって処理が実行されるため、必然的にテスト項目が多岐に亘り、また不具合が生じる可能性も増大する。この結果、全項目についての確認を完了するためには、多数のオペレータが何度も同じ入力を繰り返す必要が生じる。
このため、非特許文献１及び２に示すように、オペレータによる入力作業を軽減するためのツールが幾つか提案されている。
【非特許文献１】QuickTest ProfessionalインターネットURL:http://www.ashisuto.co.jp/prod/qtp/sum/index.html検索日：平成２０年６月４日
【非特許文献２】SeleniumとはインターネットURL:http://www.thinkit.co.jp/free/article/0705/2/1/検索日：平成２０年６月４日
【発明の開示】
【発明が解決しようとする課題】
【００１０】
この種の入力支援ツールは、オペレータによる入力装置31からの入力操作と、表示装置33における表示画面を入力支援用ＤＢ82に逐一記録する機能を備えているため、オペレータが再入力することなく、同じリクエストデータ30をサーバ側に何度でも再投入することができると共に、新たな表示画面と前回の表示画面を比較し、両者が一致するか否かを判定することが可能となる。
また、各BLサーバ16が管理するデータベース28のバックアップを最初に１回だけとっておけば、これをベースにして任意の地点までの入力を再現することにより、当該地点におけるデータベース28の状態を復元することが可能となる。
【００１１】
しかしながら、この従来の入力支援ツールはあくまでもクライアント12毎に導入されるアプリケーションプログラムであり、監視の対象となるデータもクライアント12から送信されたリクエストデータ30と、クライアント12が受信した処理結果データ32に限定されているという問題があった。
【００１２】
実際のところ、クライアント12から１つのリクエストデータを受け付けた場合であっても、PLサーバ14を介して複数のBLサーバ16が連携して動作し、最終的な処理結果データがもたらされることが多いにかかわらず、上記の入力支援ツールで捕捉できるのは図１８におけるリクエストデータ30と処理結果データ32に限られ、PLサーバ14内においてトランザクション単位で生起したデータ(1)〜(4)のレベルでデータを保存することは出来なかった。
【００１３】
このため、従来の入力支援ツールは、テストの再ランもリクエスト単位に限定され、各BLサーバ16によるトランザクション単位でテストを再実行することもできなかった。この結果、図１９に示すように、あるデータベース28の状態がトランザクションα〜γによって実際には（イ）→（ロ）→（ハ）→（ニ）と順に更新されていく場合であっても、従来の入力支援ツールで再現されるのは（イ）→（ニ）の更新のみであり、途中の（ロ）及び（ハ）の状態を復元することは不可能であった。
【００１４】
この問題を解決するため、本出願人はPLサーバ14内に各BLサーバ16に対する入力データと、各BLサーバからの出力データを逐一蓄積しておき、テストの再ラン時にトランザクション単位でBLサーバ16の動作を再現する技術を先に提案している（特願2008-252054）。
【００１５】
具体的には図１に示すように、PLサーバ14内にテスト用ＤＢ26を設けると共に、ディスパッチエンジン21内にテスト支援部25を設けておき、テストの初回ラン時にはディスパッチエンジン21を通過するデータ(1)〜(4)をテスト支援部25が全て補足し、テスト用ＤＢ26に格納する。
また、テストの再ラン時には、図４に示すように、テスト用ＤＢ26に格納されていたデータ(1)〜(3)がテスト支援部25によって取り出され、ディスパッチエンジン21及びコネクタ22を介してBLサーバ16に渡されるため、クライアント12からの入力を不要とすることができる。
【００１６】
このように、トランザクション単位で入力データと処理結果データが保存されているため、テストの再ランもトランザクション単位できめ細かく実行することが可能となり、図８に示すように、トランザクション単位でデータベースが更新されてきた様子を確認することが可能となる。
また、テストの再実行時の処理結果データ(2)'〜(4)'も、テスト支援部25によってテスト用ＤＢ26に格納されるため、初回実行時の結果データ(2)〜(4)とトランザクション単位で比較することも可能となる。
【００１７】
ところで、オンラインシステムにおいては、同一のデータベースに対して複数のクライアントが同時にアクセスし、相互に矛盾した更新処理が実行されることを防止する目的で、「楽観的排他ロック」と称する機能が一般に設けられている。
【００１８】
図９は、この楽観的排他ロックの仕組みを説明するための図であり、データベース28の各レコードには「最終更新日時」のデータ項目42が設けられている。
ここで、図９(a)に示すように、クライアント12から「社員ID＝001」を指定した検索リクエストデータ30が送信されると、PLサーバ14経由でこれを受け取ったBLサーバ16は、データベース28から検索条件にマッチしたレコードを抽出し、PLサーバ14経由でクライアント12に検索処理結果データ32を送信することとなるが、この検索処理結果データ32には「更新日時」のデータ項目43が設けられており、データベース28の「最終更新日時」の値である「05/24/10:00」が充填されている。
【００１９】
そして、同クライアント12から「社員ID＝001」のレコードについての更新リクエストデータが送信される場合には、このデータにも上記の「更新日時」が引き継がれることとなる。
例えば、図９(b)に示すように、５月24日の14:00にクライアント12から同社員の所属を「営業部」から「総務部」に変更する内容の更新リクエストデータ30が送信される場合、「05/24/10:00」のデータが付加されている。
【００２０】
この更新リクエストデータ30を受信したBLサーバ16は、その更新日時とデータベース28に格納された対応レコードの最終更新日時を比較し、両者が一致していることを確認した上で、当該レコードへの更新を実行する。この際、当該レコードの最終更新日時は「05/24/14:00」に更新される。また、クライアント12に対しては更新処理結果データ32が送信されるが、このデータの更新日時には最新の「05/24/14:00」が記録される。
【００２１】
これに対し、更新リクエストデータ30の更新日時とデータベース28側の最終更新日時が一致しない場合には、その間に他のクライアントによって当該レコードに更新がなされたことを意味しているため、BLサーバ16からクライアント12に対してエラーメッセージが送信され、データの更新が拒絶されることとなる。
【００２２】
上記のタイムスタンプの代わりに、処理毎にユニークな管理コードが処理結果データに付与される場合もある。何れにせよ、このような楽観的排他ロック機構を備えることにより、オンラインシステムに含まれるデータベースに矛盾が生じることを有効に抑えることが可能となる。
しかしながら、この楽観的排他ロック機構を備えたオンラインシステムにこのテスト支援システムをそのまま適用すると再ラン時に問題が生じる。
【００２３】
まず、図１０は初回ラン時の手順を示すものであり、図１０(a)に示すように、05/24/14:00の時点でクライアント12から(A)の更新リクエストデータ（更新日時：05/24/10:00）が送信されると、PLサーバ14経由でこれを受け取ったBLサーバ16は、当該更新リクエストデータ(A)の更新日時とデータベース28側の最終更新日時と比較し、両者が一致していることを確認した後、所属を「営業部」から「総務部」に変更する更新処理を実行する。この際、当該レコードの最終更新日時も「05/24/14:00」に更新される。
【００２４】
同時に、BLサーバ16からクライアント12に対しては、PLサーバ14経由で更新処理結果データ(B)が送信される。この更新処理結果データ(B)の更新日時にも、最終更新日時である「05/24/14:00」が記録されている。
この間、テスト用ＤＢ26には、テスト支援部25（図示省略）によって更新リクエストデータ(A)及び更新処理結果データ(B)が格納される。
【００２５】
つぎに、図１０(b)に示すように、05/24/16:00の時点でクライアント12から(C)の更新リクエストデータ（更新日時：05/24/14:00）が送信されると、BLサーバ16は当該更新リクエストデータ(C)の更新日時とデータベース28側の最終更新日時と比較し、両者が一致していることを確認した後、所属を「総務部」から「法務部」に変更する更新処理を実行する。この際、当該レコードの最終更新日時も「05/24/16:00」に更新される。
【００２６】
同時に、BLサーバ16からクライアント12に対しては、PLサーバ14経由で更新処理結果データ(D)が送信される。この更新結果データ(D)の更新日時にも、最終更新日時である「05/24/16:00」が記録されている。
この間、テスト用ＤＢ26には、テスト支援部25によって更新リクエストデータ(C)及び更新結果データ(D)が格納される。
【００２７】
つぎに、図１１は再ラン時の手順を示すものであり、図１１(a)に示すように、05/24/21:00の時点でPLサーバ14から(A)の更新リクエストデータ（更新日時：05/24/10:00）が送信されると、BLサーバ16は当該更新リクエストデータ(A)の更新日時とデータベース28側の最終更新日時と比較する。再ラン時には、初回ランの直前にバックアップされたデータが用いられるため、両日時は当然に一致することから、BLサーバ16は所属を「営業部」から「総務部」に変更する更新処理を実行する。この際、当該レコードの最終更新日時は現在時刻の「05/24/21:00」に更新される。
【００２８】
同時に、BLサーバ16からPLサーバ14に対しては、更新処理結果データ(B)'が送信される。この更新処理結果データ(B)'の更新日時にも、最終更新日時である「05/24/21:00」が記録されている。
この間、テスト用ＤＢ26には、テスト支援部25によって更新結果データ(B)'が格納される。
【００２９】
つぎに、図１１(b)に示すように、05/24/23:00の時点でPLサーバ14から(C)の更新リクエストデータ（更新日時：05/24/14:00）が送信されると、BLサーバ16は当該更新リクエストデータ(C)の更新日時とデータベース28側の最終更新日時と比較する。この場合には更新日時が不一致となるため、BLサーバ16からPLサーバ14に対してエラーメッセージが送信され、データベース28の更新処理は当然ながら拒絶されることとなる。
この間、テスト用ＤＢ26には、テスト支援部25によってエラーメッセージ(D)'が再ラン結果データとして記録される。
【００３０】
以上を要するに、楽観的排他ロック機構の下においてこのテスト支援システムをそのまま適用すると、以下の問題が生じる。
(1)初回ラン時にテスト用ＤＢ26格納された入力データの更新日時と、再ラン時にBLサーバ16によって更新されたデータベースの最終更新日時とが不一致となるため、楽観的排他ロックが発動され、再ラン結果データがエラーとなる。
(2)再ラン結果データの更新日時には再ラン時の現在日時が付与されるため、各トランザクションの処理結果データと再ラン結果データを比較する際に、図１３(a)に示すように、更新日時の不一致を理由に「比較結果＝不一致」と判定されてしまう。
【００３１】
この発明は、バックエンドサーバのトランザクション単位で入力データ及び処理結果データを保存しておくことで、トランザクション単位でのテストの再実行及びデータベースの復元を可能とするテスト支援システムを、楽観的排他ロック機構を備えたオンラインシステムに対して適用した場合に生じる上記の問題を解消することを目的としている。
【課題を解決するための手段】
【００３２】
上記の目的を達成するため、請求項１に記載したテスト支援システムは、クライアントと、データベースに対する業務処理を実行するバックエンドサーバと、上記クライアントからのリクエストデータを受け取り、担当のバックエンドサーバに必要な入力データを送信して処理を依頼し、その処理結果データをクライアントに送信するフロントエンドサーバを備えたオンラインシステムに対してテストを実施するに当たり、テストの初回ラン時にバックエンドサーバに送信した入力データと、バックエンドサーバから送信された処理結果データをフロントエンドサーバ内のテスト用データベースに蓄積しておき、テストの再ラン時にはこのテスト用データベースに格納された初回ラン時の入力データをバックエンドサーバに対して送信すると共に、バックエンドサーバから送信された再ラン時の処理結果データを上記テスト用データベースに登録する機能を備えたテスト支援システムであって、上記バックエンドサーバが処理結果データをフロントエンドサーバに返信するに際し、データベースの該当レコードに付与されたユニークな管理コードを処理結果データに付与すると共に、フロントエンドサーバがこの処理結果データに基づいた入力データをバックエンドサーバに送信して同レコードに対する後続の処理を依頼する際には、当該入力データにも上記の管理コードが引き継がれ、バックエンドサーバではこの入力データに含まれる管理コードがデータベースの該当レコードの管理コードと一致している場合のみ、依頼された処理を実行する楽観的排他ロック機構を備えている場合に、上記テストの再ラン時に上記バックエンドサーバから送信された先行の処理結果データに付与された新たな管理コードによって、初回ラン時に上記テスト用データベースに蓄積された後続処理用入力データの管理コードを上書きした後、この入力データをバックエンドサーバに送信する機能を備えたことを特徴としている。
上記の「初回ラン」とは、クライアントから入力されたリクエストデータに基づいて実施される第１回目のオンラインテストを意味している。これに対し「再ラン」とは、データベースに蓄積された初回ラン時のデータに基づいて再演される２回目以降のオンラインテストを意味している。
【００３３】
請求項２に記載したテスト支援システムは、請求項１のシステムであって、さらに上記テスト支援システムが、テスト用データベースに格納された初回ラン時の処理結果データと、再ラン時の処理結果データを比較し、その比較結果を出力する機能を備えており、この比較に際して、初回ラン時の処理結果データに付与された管理コードと、再ラン時の処理結果データに付与された管理コードにマスク処理を施すことを特徴としている。
【００３４】
請求項３に記載したテスト支援システムは、請求項１または２のシステムであって、上記管理コードが、バックエンドサーバが管理するデータベースの該当コードに付与されたタイムスタンプであることを特徴としている。
【発明の効果】
【００３５】
請求項１に記載したテスト支援システムにあっては、初回ラン時にテスト用データベースに蓄積された入力データを再ラン時にバックエンドサーバに対して送信するに際し、先行の入力データに対する処理結果データに付与された再ラン時の管理コードが引き継がれることとなるため、データベース側の再ラン時の管理コードと一致することとなり、楽観的排他ロック機構によってエラーと判定されることを有効に回避可能となる。
【００３６】
請求項２に記載したテスト支援システムにあっては、初回ラン時の処理結果データと再ラン時の処理結果データを比較するに際し、それぞれの管理コード部分にマスク処理が施されるため、楽観的排他ロックのために便宜的に付与される管理コードの不一致により、他の実質的なデータの部分が一致しているにもかかわらず全体として不一致と判定される不都合を有効に回避可能となる。
【発明を実施するための最良の形態】
【００３７】
図１は、この発明に係るテスト支援システムを含むオンラインシステム10を示しており、Webブラウザプログラムを搭載したクライアント12と、PLサーバ14と、複数のBLサーバ16（第１のBLサーバ16a、第２のBLサーバ16b、第３のBLサーバ16c）と、テスト端末18を備えている。クライアント12−PLサーバ14間、PLサーバ14−BLサーバ16a〜16c間、PLサーバ14−テスト端末18間は、通信ネットワークを介して接続されている。
【００３８】
PLサーバ14は、クライアント12からのリクエストデータ30を受け付け、当該リクエストを実現するのに必要なトランザクション及び担当のBLサーバ16を特定した後、担当のBLサーバ16に入力データ（引数）を送信して処理を依頼すると共に、BLサーバ16から返された最終的な処理結果データ32を含む画面をクライアント12に送信する、フロントエンドサーバとして機能する。
このためPLサーバ14は、画面制御部20と、ディスパッチエンジン21と、コネクタ22を備えている。
【００３９】
画面制御部20は、画面遷移定義ＤＢ23を参照し、クライアント12に対して送信する画面（Htmlファイル）を生成する機能を主として果たす。
【００４０】
ディスパッチエンジン21は、ディスパッチ定義ＤＢ24を参照し、クライアント12からのリクエストに対応したトランザクション及び担当のBLサーバ16を特定する機能を果たす。
また、ディスパッチエンジン21内には、テスト支援部25が生成されており、PLサーバ14のディスク内に設けられたテスト用ＤＢ26を管理している。このテスト支援部25の機能、及びその生成方法については後述する。
【００４１】
コネクタ22は、各BLサーバ16が要求する固有のフォーマットに入力データを変換すると共に、BLサーバ16から送信された処理結果データをPLサーバ14の標準形式に変換する機能を発揮する。このため、BLサーバ16a〜16c毎に複数のデータ変換部（第１のBLサーバ用データ変換部22a〜第３のBLサーバ用データ変換部22c）が設けられている。
例えば、第１のBLサーバ16aがＣ言語に対応したTPモニタを搭載している場合、第１のBLサーバ用データ変換部22aは、TPモニタ向けのデータ変換機能を備える。また、第２のBLサーバがEJB（Enterprise Java Beans）コンテナを搭載している場合、第２のBLサーバ用データ変換部22bは、EJBコンテナ向けのデータ変換機能を備える。また、第３のBLサーバ16cがCOBOL言語に対応したDB/BCシステムを搭載している場合、第３のBLサーバ用データ変換部22cは、ホストOS向けのデータ変換機能を備える。
【００４２】
BLサーバ16a〜16cは、PLサーバ14から受け取った入力データに基づき、直接または図示しないDBサーバを通じて間接的に管理しているデータベース28に対する検索、更新等の業務処理を実行するバックエンドサーバとして機能する。
【００４３】
つぎに、図２のフローチャートに従い、このオンラインシステム10に対する初回ラン時の処理手順を説明する。
初回ラン時には、まずクライアント12からリクエストデータ30が送信される。例えば、オペレータがテストシナリオに従い、検索画面の入力欄に入力装置31を介して検索文字列を入力すると、クライアント12からPLサーバ14に対して、検索のリクエストID及び検索文字列を含んだリクエストデータ30が送信される。
【００４４】
このリクエストデータ30を受信した画面制御部20は（Ｓ10）、当該リクエストデータ30に含まれているリクエストIDを取得する（Ｓ11）。つぎに画面制御部20は、画面遷移定義ＤＢ23を参照し、当該リクエストIDに対応したPLトランザクションIDを特定する（Ｓ12）。このPLトランザクションIDは、ディスパッチエンジン21に渡される。
【００４５】
画面制御部20からPLトランザクションIDを受け取ったディスパッチエンジン21は、このPLトランザクションIDをキーにディスパッチ定義ＤＢ24を検索し、当該PLトランザクションIDに関連付けられたBEトランザクションIDを特定する（Ｓ13）。
【００４６】
BEトランザクションIDは、特定のBLサーバに対する特定の処理（トランザクション）を規定するものであり、PLトランザクションIDには１または複数のBEトランザクションIDが処理の順番通りに関連付けられている。このため、ディスパッチエンジン21はPLトランザクションIDに基づいて複数のBEトランザクションIDを特定した時点で、今回のリクエストに応えるために必要なトランザクション、それぞれの担当BLサーバ16、トランザクションの順番等を認識することができる。
【００４７】
ここでは、クライアント12から送信された検索文字列であるデータ(1)を第１のBLサーバ16aに送信して所定の検索処理を依頼し、その処理結果データであるデータ(2)を第２のBLサーバ16bに送信して所定の検索処理を依頼し、その処理結果データであるデータ(3)を第３のBLサーバ16cに送信して所定の検索処理を依頼し、その処理結果データであるデータ(4)を最終的な処理結果データ32としてクライアント12に送信する処理手順が、ディスパッチ定義ＤＢ24に規定されているものと想定する。
【００４８】
この場合、まずディスパッチエンジン21は、データ(1)をコネクタ22の第１のBLサーバ用データ変換部22aに出力する。第１のBLサーバ用データ変換部22aは、このデータ(1)を第１のBLサーバ16a向けのデータ形式に変換した後、第１のBLサーバ16aに送信する（Ｓ14）。
【００４９】
これと並行してテスト支援部25がデータ(1)を捕捉し、検索トランザクション及び第１のBLサーバ16aを特定する情報と関連付けてテスト用ＤＢ26に格納する（Ｓ15）。具体的には、図３に示すように、BEトランザクションID「１１１」のINデータ（＝入力データ）の項目に、データ(1)が登録される。
この場合、BEトランザクションID「１１１」が、検索トランザクション及び第１のBLサーバ16aを特定する情報に該当する。
図示の通り、このテスト用ＤＢ26には、各トランザクション単位でリクエストID、PLトランザクションID、BEトランザクションIDからなる制御情報が格納されている。
【００５０】
つぎに、第１のBLサーバ16aから処理結果データが返されると（Ｓ16）、第１のBLサーバ用データ変換部22aにおいてPLサーバ14向けの標準形式に変換された後（Ｓ17）、データ(2)としてディスパッチエンジン21に出力される。
【００５１】
この際、テスト支援部25がデータ(2)を捕捉し、テスト用ＤＢ26に第１のBLサーバ16aからの検索トランザクションの処理結果データとして格納する（Ｓ18）。具体的には、BEトランザクションID「１１１」のOUTデータ（＝処理結果データ）の項目に、データ(2)が登録される。
【００５２】
つぎにディスパッチエンジン21は、上記のディスパッチ定義に従い、データ(2)をコネクタ22の第２のBLサーバ用データ変換部22bに出力する。第２のBLサーバ用データ変換部22bは、このデータ(2)を第２のBLサーバ16b向けのデータ形式に変換した後、第２のBLサーバ16bに送信する（Ｓ19）。
【００５３】
同時に、テスト支援部25がデータ(2)を捕捉し、検索トランザクション及び第２のBLサーバ16bを特定する情報と関連付けてテスト用ＤＢ26に格納する（Ｓ20）。具体的には、BEトランザクションID「２２２」のINデータの項目に、データ(2)が登録される。
この場合、BEトランザクションID「２２２」が、検索トランザクション及び第２のBLサーバ16bを特定する情報に該当する。
【００５４】
第２のBLサーバ16bから処理結果データが返されると（Ｓ21）、第２のBLサーバ用データ変換部22bにおいてPLサーバ14向けの標準形式に変換された後（Ｓ22）、データ(3)としてディスパッチエンジン21に出力される。
【００５５】
この際、テスト支援部25がデータ(3)を捕捉し、テスト用ＤＢ26に第２のBLサーバ16bからの検索トランザクションの処理結果データとして格納する（Ｓ23）。具体的には、BEトランザクションID「２２２」のOUTデータの項目に、データ(3)が登録される。
【００５６】
つぎにディスパッチエンジン21は、上記のディスパッチ定義に従い、データ(3)をコネクタ22の第３のBLサーバ用データ変換部22cに出力する。第３のBLサーバ用データ変換部22cは、このデータ(3)を第３のBLサーバ16c向けのデータ形式に変換した後、第３のBLサーバ16cに送信する（Ｓ24）。
【００５７】
同時に、テスト支援部25がデータ(3)を捕捉し、検索トランザクション及び第３のBLサーバ16cを特定する情報と関連付けてテスト用ＤＢ26に格納する（Ｓ25）。具体的には、BEトランザクションID「３３３」のINデータの項目に、データ(3)が登録される。
この場合、BEトランザクションID「３３３」が、検索トランザクション及び第３のBLサーバ16cを特定する情報に該当する。
【００５８】
第３のBLサーバ16cから処理結果データが返されると（Ｓ26）、第３のBLサーバ用データ変換部22cにおいてPLサーバ14向けの標準形式に変換された後（Ｓ27）、データ(4)としてディスパッチエンジン21に出力される。
【００５９】
この際、テスト支援部25がデータ(4)を捕捉し、テスト用ＤＢ26に第３のBLサーバ16cからの処理結果データとして格納する（Ｓ28）。具体的には、BEトランザクションID「３３３」のOUTデータの項目に、データ(4)が登録される。
【００６０】
このデータ(4)は、画面制御部20によって最終的なリクエストの処理結果データ32として処理結果表示画面中に埋め込まれ、クライアント12に送信される（Ｓ29）。
この結果、クライアント12の表示装置33上に処理結果データ32が表示される。
【００６１】
以上のように、クライアント12から一つのリクエストデータ30が送信された場合、テスト支援部25の働きにより、テスト用ＤＢ26には第１のBLサーバ16a、第２のBLサーバ16b、第３のBLサーバ16cに係る入力データ及び処理結果データが、トランザクション単位で蓄積されることとなる。
【００６２】
もちろん、複数のBLサーバ16に対して所定の処理を順番に依頼する場合に限られず、１つのBLサーバ16に対して複数の処理を連続して依頼する場合や、複数のBLサーバ16に対して同時並列的に複数の処理を依頼する場合にも、テスト支援部25によってトランザクション毎に入力データと処理結果データがテスト用ＤＢ26に記録されることとなる。
【００６３】
つぎに、初回ランによって収集したトランザクション毎の入力データ及び処理結果データに基づいて、同様のテストを再ランする場合について説明する。
図４は、再ラン時におけるオンラインシステム10のシステム構成図であり、クライアント12や画面制御部20の関与なしに再ランが実行されることを表現している。
【００６４】
以下、図５のフローチャートに従い、再ラン時の処理手順を説明する。
まず、テスト端末18からPLトランザクションID「１１１１」を特定した再ランの指示データが送信されると、これを受けたテスト支援部25は（Ｓ40）、再ランの実行範囲を特定する（Ｓ41）。ここで、PLトランザクションID「１１１１」はBEトランザクションID「１１１」〜「３３３」を包含する上位概念であるため、テスト支援部25は初回ランと同じ範囲で再ランを行うべきものと判断する。
【００６５】
そこでテスト支援部25は、テスト用ＤＢ26からBEトランザクションID「１１１」の入力データであるデータ(1)を取り出し（Ｓ42）、ディスパッチエンジン21に渡す。
【００６６】
ディスパッチエンジン21は、データ(1)をコネクタ22の第１のBLサーバ用データ変換部22aに出力する。第１のBLサーバ用データ変換部22aは、このデータ(1)を第１のBLサーバ16a向けのデータ形式に変換した後、第１のBLサーバに送信する（Ｓ43）。
【００６７】
そして、第１のBLサーバ16aから処理結果データが返されると（Ｓ44）、第１のBLサーバ用データ変換部22aにおいてPLサーバ14向けの標準形式に変換された後（Ｓ45）、データ(2)'としてディスパッチエンジン21に出力される。
【００６８】
このデータ(2)'は、テスト支援部25によって捕捉され、テスト用ＤＢ26に格納される（Ｓ46）。具体的には、図６に示すように、BEトランザクションID「１１１」の再ラン結果データの項目に、データ(2)'が登録される。
【００６９】
つぎにテスト支援部25は、テスト用ＤＢ26からBEトランザクションID「２２２」の入力データであるデータ(2)を取り出し（Ｓ47）、ディスパッチエンジン21に渡す。
【００７０】
ディスパッチエンジン21は、データ(2)をコネクタ22の第２のBLサーバ用データ変換部22bに出力する。第２のBLサーバ用データ変換部22bは、このデータ(2)を第２のBLサーバ16b向けのデータ形式に変換した後、第２のBLサーバ16bに送信する（Ｓ48）。
【００７１】
そして、第２のBLサーバ16bから処理結果データが返されると（Ｓ49）、第２のBLサーバ用データ変換部22bにおいてPLサーバ14向けの標準形式に変換された後（Ｓ50）、データ(3)'としてディスパッチエンジン21に出力される。
【００７２】
このデータ(3)'は、テスト支援部25によって捕捉され、テスト用ＤＢ26に格納される（Ｓ51）。具体的には、BEトランザクションID「２２２」の再ラン結果データの項目に、データ(3)'が登録される。
【００７３】
つぎにテスト支援部25は、テスト用ＤＢ26からBEトランザクションID「３３３」のINデータであるデータ(3)を取り出し（Ｓ52）、ディスパッチエンジン21に渡す。
【００７４】
ディスパッチエンジン21は、データ(3)をコネクタ22の第３のBLサーバ用データ変換部22cに出力する。第２のBLサーバ用データ変換部22cは、このデータ(3)を第３のBLサーバ16c向けのデータ形式に変換した後、第３のBLサーバ16cに送信する（Ｓ53）。
【００７５】
そして、第３のBLサーバ16cから処理結果データが返されると（Ｓ54）、第３のBLサーバ用データ変換部22cにおいてPLサーバ14向けの標準形式に変換された後（Ｓ55）、データ(4)'としてディスパッチエンジン21に出力される。
【００７６】
このデータ(4)'は、テスト支援部25によって捕捉され、テスト用ＤＢ26に格納される（Ｓ56）。具体的には、BEトランザクションID「３３３」の再ラン結果データの項目に、データ(4)'が登録される。
【００７７】
つぎに、テスト支援部25はテスト用ＤＢ26に格納された初回ラン時の各BEトランザクションIDの処理結果データ（OUTデータ）と再ラン結果データとを比較し（Ｓ57）、その比較結果のリストをテスト端末18に送信する（Ｓ58）。
【００７８】
例えば、バグの修正を行う前に初回ランを実行しておき、バグの修正後に再ランを行えば、バグの修正によって悪影響が生じているか否かを確認することができる。すなわち、比較結果リストが全て「一致」であれば問題ないが、「不一致」の場合にはデグレードが生じている可能性があるため、より細かいレベルでの再ランを行う必要がある。
【００７９】
このテスト支援システムにおいては、トランザクション単位で個別に再ランを行うこともできる。
例えば、テスト端末18からBEトランザクションID「２２２」を指定した再ランの指示データが送信された場合、図７に示すように、テスト支援部25はテスト用ＤＢ26から「２２２」の入力データであるデータ(2)を取り出し、ディスパッチエンジン21に渡す。
【００８０】
ディスパッチエンジン21は、データ(2)をコネクタ22の第２のBLサーバ用データ変換部22bに出力する。第２のBLサーバ用データ変換部22bは、このデータ(2)を第２のBLサーバ16b向けのデータ形式に変換した後、第２のBLサーバ16bに送信する。
【００８１】
そして、第２のBLサーバ16bから処理結果データが返されると、第２のBLサーバ用データ変換部22bにおいてPLサーバ14向けの標準形式に変換された後、データ(3)'としてディスパッチエンジン21に出力される。
このデータ(3)'は、テスト支援部25によって捕捉され、テスト用ＤＢ26におけるBEトランザクションID「２２２」の再ラン結果データの項目に登録される。
【００８２】
このように、トランザクション単位で再ランを実施し、初回ラン時の処理結果データと再ラン結果データとを比較することにより、リクエスト単位で入力データと処理結果データを比較する従来の入力支援ツールに比べ、よりきめ細かいレベルでBLサーバ16の動作を検証することが可能となる。
【００８３】
また、このようにBLサーバ16のトランザクション単位での再ランが可能であることから、このテスト支援システムによれば、データベース28の状態もトランザクション単位で復元することが可能となる。
すなわち、各BLサーバ16が管理するデータベース28については、初回ランの直前にバックアップが取られているため、このバックアップされたデータに基づいて必要なトランザクションを順次実行することにより、各データベース28の更新具合をその都度確認することが可能となる。
【００８４】
図８は、ある住所管理データベース28に対する更新状況を例示するものであり、トランザクションαによって「TEL」が更新され、トランザクションβによって「FAX」が、またトランザクションγによって「住所」が更新される仕組みである場合、トランザクションα〜γを順にワンステップずつ再ランさせることにより、データベース28が（イ）→（ロ）→（ハ）→（ニ）と更新されてきた様子を個別に確認することができる。
【００８５】
これに対し、従来の入力支援ツールを用いた場合は、リクエスト単位でしか再ランが実施できず、BLサーバ16のトランザクション単位で再ランを実施することができなかったため、図１９に示したように、データベース28の（イ）と（ハ）の状態のみを比較するしかなく、途中の（ロ）地点、（ハ）地点の状態を確認することはできなかった。
【００８６】
ところで、オンラインシステムにおいては上記の通り、同一のデータベースに対して複数のクライアントが同時にアクセスし、相互に矛盾した更新処理が実行されることを防止する目的で「楽観的排他ロック」と称する機能が一般に設けられており、このテスト支援部25をそのまま動作させた場合には問題が生じることとなる。
以下、繰り返しになるが、楽観的排他ロックの仕組みと問題を簡単に述べた後、その解決方法について説明する。
【００８７】
まず図９に示したように、楽観的排他ロック機構の下では、データベース28の各レコードに「最終更新日時」のデータ項目42が設けられている。
ここで、図９(a)に示すように、クライアント12から「社員ID＝001」を指定した検索リクエストデータ30が送信されると、PLサーバ14経由でこれを受け取ったBLサーバ16は、データベース28から検索条件にマッチしたレコードを抽出し、PLサーバ14経由でクライアント12に検索処理結果データ32を送信することとなるが、この検索処理結果データ32には「更新日時」のデータ項目43が設けられており、データベース28の「最終更新日時」の値である「05/24/10:00」が充填されている。
【００８８】
そして、同クライアント12から「社員ID＝001」のレコードについての更新リクエストデータが送信される場合には、このデータにも上記の「更新日時」が引き継がれることとなる。
例えば、図９(b)に示すように、５月24日の14:00にクライアント12から同社員の所属を「営業部」から「総務部」に変更する内容の更新リクエストデータ30が送信される場合、「05/24/10:00」のデータが付加されている。
【００８９】
この更新リクエストデータ30を受信したBLサーバ16は、その更新日時とデータベース28に格納された対応レコードの最終更新日時を比較し、両者が一致していることを確認した上で、当該レコードへの更新を実行する。この際、当該レコードの最終更新日時は「05/24/14:00」に更新される。また、クライアント12に対しては更新処理結果データ32が送信されるが、このデータの更新日時には最新の「05/24/14:00」が記録される。
【００９０】
これに対し、更新リクエストデータ30の更新日時とデータベース28側の最終更新日時が一致しない場合には、その間に他のクライアントによって当該レコードに更新がなされたことを意味しているため、BLサーバ16からクライアント12に対してエラーメッセージが送信され、データの更新が拒絶されることとなる。
【００９１】
このような楽観的排他ロック機構を備えることにより、オンラインシステムに含まれるデータベースに矛盾が生じることを有効に抑えることが可能となるが、この楽観的排他ロック機構を備えたオンラインシステムにこのテスト支援システムをそのまま適用すると再ラン時に問題が生じる。
【００９２】
まず、初回ラン時には図１０(a)に示すように、05/24/14:00の時点でクライアント12から(A)の更新リクエストデータ（更新日時：05/24/10:00）が送信されると、PLサーバ14経由でこれを受け取ったBLサーバ16は、当該更新リクエストデータ(A)の更新日時とデータベース28側の最終更新日時と比較し、両者が一致していることを確認した後、所属を「営業部」から「総務部」に変更する更新処理を実行する。この際、当該レコードの最終更新日時も「05/24/14:00」に更新される。
【００９３】
同時に、BLサーバ16からクライアント12に対しては、PLサーバ14経由で更新処理結果データ(B)が送信される。この更新処理結果データ(B)の更新日時にも、最終更新日時である「05/24/14:00」が記録されている。
この間、テスト用ＤＢ26には、テスト支援部25（図示省略）によって更新リクエストデータ(A)及び更新処理結果データ(B)が格納される。
【００９４】
つぎに、図１０(b)に示すように、05/24/16:00の時点でクライアント12から(C)の更新リクエストデータ（更新日時：05/24/14:00）が送信されると、BLサーバ16は当該更新リクエストデータ(C)の更新日時とデータベース28側の最終更新日時と比較し、両者が一致していることを確認した後、所属を「総務部」から「法務部」に変更する更新処理を実行する。この際、当該レコードの最終更新日時も「05/24/16:00」に更新される。
【００９５】
同時に、BLサーバ16からクライアント12に対しては、PLサーバ14経由で更新処理結果データ(D)が送信される。この更新結果データ(D)の更新日時にも、最終更新日時である「05/24/16:00」が記録されている。
この間、テスト用ＤＢ26には、テスト支援部25によって更新リクエストデータ(C)及び更新結果データ(D)が格納される。
【００９６】
つぎに、再ラン時には図１１(a)に示すように、05/24/21:00の時点でPLサーバ14から(A)の更新リクエストデータ（更新日時：05/24/10:00）が送信されると、BLサーバ16は当該更新リクエストデータ(A)の更新日時とデータベース28側の最終更新日時と比較する。再ラン時には初回ランの直前にバックアップされたデータが用いられるため、両日時は当然に一致することから、BLサーバ16は所属を「営業部」から「総務部」に変更する更新処理を実行する。この際、当該レコードの最終更新日時は現在時刻の「05/24/21:00」に更新される。
【００９７】
同時に、BLサーバ16からPLサーバ14に対しては、更新処理結果データ(B)'が送信される。この更新処理結果データ(B)'の更新日時にも、最終更新日時である「05/24/21:00」が記録されている。
この間、テスト用ＤＢ26には、テスト支援部25によって更新結果データ(B)'が格納される。
【００９８】
つぎに、図１１(b)に示すように、05/24/23:00の時点でPLサーバ14から(C)の更新リクエストデータ（更新日時：05/24/14:00）が送信されると、BLサーバ16は当該更新リクエストデータ(C)の更新日時とデータベース28側の最終更新日時と比較する。この場合には更新日時が不一致となるため、BLサーバ16からPLサーバ14に対してエラーメッセージが送信され、データベース28の更新処理は当然ながら拒絶されることとなる。
この間、テスト用ＤＢ26には、テスト支援部25によってエラーメッセージ(D)'が再ラン結果データとして記録される。
【００９９】
以上のことから、楽観的排他ロック機構の下においてこのテスト支援システムをそのまま適用すると、以下の問題が生じる。
(1)初回ラン時にテスト用ＤＢ26格納された入力データの更新日時と、再ラン時にBLサーバ16によって更新されたデータベースの最終更新日時とが不一致となるため、楽観的排他ロックが発動され、再ラン結果データがエラーとなる。
(2)再ラン結果データの更新日時には再ラン時の現在日時が付与されるため、各トランザクションの処理結果データと再ラン結果データを比較する際に、図１３(a)に示すように、更新日時の不一致を理由に「比較結果＝不一致」と判定されてしまう。
【０１００】
これに対しこのテスト支援システムは、更新日時に関して「引継ぎ」及び「マスキング」という手法を適用することにより、上記の問題を解消している。
【０１０１】
まず「引継ぎ」とは、図１２(a)に示すように、BLサーバ16によって再ラン結果データ(B)'に付与された更新日時「05/24/21:00」を用いて、後続トランザクションの入力データ(C)に対して初回ラン時に付与された「05/24/14:00」の更新日時を上書きした後、BLサーバ16に送信する手法を意味する。この更新日時の引継ぎは、テスト支援部25によって実行される。
【０１０２】
この結果、更新リクエストデータ(C)の更新日時とデータベース28側の最終更新日時とが一致することとなり、社員ID＝001の所属を「総務部」から「法務部」に変更する更新処理が、BLサーバ16において正しく実行されることとなる。
また、BLサーバ16からPLサーバ14に対しては、更新結果データ(D)'が送信される。この更新結果データ(D)'の更新日時には、最終更新日時である「05/24/23:00」が記録されている。この更新結果データ(D)'は、テスト支援部25によってテスト用ＤＢ26の再ラン結果データ項目に登録される。
【０１０３】
つぎに「マスキング」とは、図１３(a)に示すように、テスト用ＤＢ26に格納された処理結果データ(B)と再ラン結果データ(B)'をそのまま比較すると、更新日時が異なるために全体が不一致と判定されてしまう場合に、図１３(b)に示すように、両データの更新日時にマスク処理を施した上で比較する手法を意味する。具体的には、両データの更新日時を共通の文字列「***」等に置き換えることが該当する。
このマスク処理も、テスト支援部25によって実行される。
【０１０４】
この結果、楽観的排他ロックのために便宜的に付与される更新日時項目の値の不一致によって、残りの実質的なデータ項目の値に変更がない場合であっても全体が不一致と判定されてしまう不都合を回避可能となる。
図示は省略したが、処理結果データ(D)と再ラン結果データ(D)'との比較時にも、それぞれの更新日時にはマスク処理が施される。
【０１０５】
テスト支援部25は、上記の通り、ディスパッチエンジン21内に組み込まれ、ディスパッチエンジン21を通過するデータを捕捉してテスト用ＤＢ26に格納する機能、再ラン時にテスト用ＤＢ26から必要なデータを取り出してディスパッチエンジン21に渡し、所定のBLサーバ16への送信を依頼する機能、BLサーバ16から送信されたデータを捕捉してテスト用ＤＢ26に格納すると共に、初回ラン時のデータと比較する機能を発揮するが、テスト終了後の本番時においては全く不要となる。
このため、ディスパッチエンジン21用のアプリケーション内にテスト支援部25用のコードを予め組み込んでおくのは好ましくない。
また、本番時とテスト時とではマシン構成や回線容量等の環境が異なる場合が多いため、通常はテスト終了後にアプリケーションの設定を本番用に書き換えることが行われているが、この際にバグが混入する危険性があった。
【０１０６】
そこでこのシステム10では、テスト対象となるアプリケーションプログラム自体には手を加えることなく、テスト時にのみテスト支援部25を外部からディスパッチエンジン21内に組み込むと共に、外部に配置されたテスト用の設定情報を反映させる仕組みを採用している。
【０１０７】
図１４は、この仕組みを説明するための模式図であり、PLサーバ14のディスク領域50には、ディスパッチエンジン用実行ファイル51と、テスト支援部用ライブラリ52と、テスト設定ファイル53が格納されている。ディスパッチエンジン用実行ファイル51には、本番設定ファイル54が含まれている。
【０１０８】
また、PLサーバ14のメモリ空間56には、上位クラスローダ57が設けられており、この上位クラスローダ57内に予めスイッチモジュール58が配置されている。
この上位クラスローダ57は、Java（登録商標）の動作環境であるJ2EE（Java 2 Enterprise Edition）の仕様に基づいて実現されるものであり、この上位クラスローダ57内に配置されたモジュールは、メモリ空間56に展開された全てのアプリケーションから参照できるという特徴を備えている。
このスイッチモジュール58は、スイッチモジュール用のライブラリを予めPLサーバ14の所定のディレクトリに格納しておくことで、JVM（Java Virtual Machine）の起動時に上位クラスローダ57内に自動的に配置される。
【０１０９】
つぎに、図１５のフローチャートに従い、テスト支援部25の組込及びテスト用設定情報の反映手順について説明する。
まず、ディスパッチエンジン用実行ファイル51を起動させ、メモリ空間56のWARクラスローダ59内にフレームワーク60、固有機能部61、本番設定情報62を配置させる（Ｓ51）。J2EEの環境下においては、各WebアプリケーションはWARクラスローダ単位で管理される。
【０１１０】
つぎに、フレームワーク60が上位クラスローダ57内にスイッチモジュール58が存在しているか否かをチェックする（Ｓ52）。
ここで、スイッチモジュール58が存在している場合（Ｓ53／YES）、フレームワーク60はテストモードであると認識し、テスト支援部用ライブラリ52を自己のWARクラスローダ59内にロードし（Ｓ54）、テスト支援部25を生成する。
【０１１１】
このテスト支援部25は、PLサーバ14のディスク領域50から対応のテスト設定ファイル53をメモリ空間56上に読み込み（Ｓ55）、WARクラスローダ59内に展開された本番設定情報をテスト設定情報で上書きする。
【０１１２】
以上の結果、図１６(b)に示すように、メモリ空間のWARクラスローダ59内には、ディスパッチエンジン固有の機能を担当する固有機能部61とフレームワーク60の他に、テスト支援部25が組み込まれると共に、本番用の設定情報62がテスト用設定情報63に切り替えられることとなる。
【０１１３】
そして、オンラインテストが完了した後は、スイッチモジュール用ライブラリを削除してJVMを再起動させ、上位クラスローダ57内のスイッチモジュール58を除去しておくだけで、Ｓ54〜Ｓ56の処理がスキップされ、図１６(a)に示すように、WARクラスローダ59内にはフレームワーク60と固有機能部61及び本番設定情報62が配置される。
この結果、ディスパッチエンジン用実行ファイル51（Webアプリケーション）に手を加えることなく、ディスパッチエンジン21を本番仕様に切り替えることが可能となる。
【０１１４】
オンラインシステムにあっては、実装言語やフレームワークを異にする複数のサーバ（ホストシステムを含む）を連携させる異機種間連携の仕組みを一般に備えているため、図１７に示すように、これまでは各BLサーバ16a〜16c毎に専用のテスタ70a〜70cを接続し、BLサーバ単位でIN/OUTのデータ確認を行っていた。このため、複数のテスタを準備し、それぞれの操作法をマスターせざるを得ないという問題があった。
【０１１５】
これに対し、このテスト支援システムの場合には、上記のようにコネクタ22において入力データが各BLサーバ16a〜16c向けの形式に変換された上で送信されると共に、各BLサーバ16a〜16cからの処理結果データがコネクタ22において標準フォーマットに変換される機能を備えているため、テスト支援部25は各種BLサーバ16のテストを標準フォーマットに基づいて統一的に実行することが可能となり、オペレータもテスト支援部25の操作法のみを習得すれば済むこととなる。
【図面の簡単な説明】
【０１１６】
【図１】この発明に係るテスト支援システムの初回ラン時における構成を示すシステム構成図である。
【図２】オンラインテストの初回ラン時における処理手順を示すフローチャートである。
【図３】テスト用ＤＢのデータ項目例を示す説明図である。
【図４】テスト支援システムの再ラン時における構成を示すシステム構成図である。
【図５】オンラインテストの再ラン時における処理手順を示すフローチャートである。
【図６】テスト用ＤＢのデータ項目例を示す説明図である。
【図７】テスト支援システムにおける再ランの要領を示す概念図である。
【図８】テスト支援システムの再ラン時にBLサーバのデータベースがトランザクション単位で更新される様子を示す説明図である。
【図９】楽観的排他ロックの一般的な仕組みを説明する模式図である。
【図１０】このテスト支援システムにおいて楽観的排他ロックを動作させた場合の問題点を示す模式図である。
【図１１】このテスト支援システムにおいて楽観的排他ロックを動作させた場合の問題点を示す模式図である。
【図１２】テスト支援システムにおいて楽観的排他ロックを動作させた場合の問題点を回避する方法を示す模式図である。
【図１３】テスト支援システムにおいて楽観的排他ロックを動作させた場合の問題点を回避する方法を示す模式図である。
【図１４】ディスパッチエンジンにオンライン支援部を組み込みテスト用の設定を施す際の要領を示す模式図である。
【図１５】ディスパッチエンジンにオンライン支援部を組み込みテスト用の設定を施す際の手順を示すフローチャートである。
【図１６】ディスパッチエンジンをテストモードと本番モードとの間でスイッチ可能としたことを示す説明図である。
【図１７】言語使用やフレームワークの異なるBLサーバ毎に専用のテスタを用いてテストを行う従来のテスト方法を示す模式図である。
【図１８】従来のオンラインシステムの一例を示すシステム構成図である。
【図１９】従来のオンラインテストにおけるデータベースの再現性を示す説明図である。
【符号の説明】
【０１１７】
10    オンラインシステム
12    クライアント
14    PLサーバ
16    BLサーバ
16a    第１のBLサーバ
16b    第２のBLサーバ
16c    第３のBLサーバ
18    テスト端末
20    画面制御部
21    ディスパッチエンジン
22    コネクタ
22a    第１のBLサーバ用データ変換部
22b    第２のBLサーバ用データ変換部
22c    第３のBLサーバ用データ変換部
25    テスト支援部
26    テスト用データベース
28    データベース
30    リクエストデータ
31    入力装置
32    処理結果データ
33    表示装置
42    「最終更新日時」のデータ項目
43    「更新日時」データ項目
50    PLサーバのディスク領域
51    ディスパッチエンジン用実行ファイル
52    テスト支援部用ライブラリ
53    テスト設定ファイル
54    本番設定ファイル
56    PLサーバのメモリ空間
57    上位クラスローダ
58    スイッチモジュール
59    WARクラスローダ
60    フレームワーク
61    固有機能部
62    本番設定情報
63    テスト用設定情報
【図１】
2010118014.tif 000003
【図２】
2010118014.tif 000004
【図３】
2010118014.tif 000005
【図４】
2010118014.tif 000006
【図５】
2010118014.tif 000007
【図６】
2010118014.tif 000008
【図７】
2010118014.tif 000009
【図８】
2010118014.tif 000010
【図９】
2010118014.tif 000011
【図１０】
2010118014.tif 000012
【図１１】
2010118014.tif 000013
【図１２】
2010118014.tif 000014
【図１３】
2010118014.tif 000015
【図１４】
2010118014.tif 000016
【図１５】
2010118014.tif 000017
【図１６】
2010118014.tif 000018
【図１７】
2010118014.tif 000019
【図１８】
2010118014.tif 000020
【図１９】
2010118014.tif 000021