(57)【特許請求の範囲】
【請求項１】
入力装置からの入力情報をフックし、フックした前記入力情報を送信する入力情報処理部、及び、前記入力装置からの前記入力情報に対応したhttpリクエストを送信する運用Webブラウザを有するクライアント、並びに
前記クライアントからの前記httpリクエストを受信し、所定のデータフォーマットに変換して、運用されている第１の情報処理を実行するアプリケーションに出力するWebサーバ、前記Webサーバが受信した前記httpリクエストをフックし、httpリクエスト情報としてhttpリクエストファイルに格納するhttpリクエスト記録部、前記クライアントの前記入力情報処理部からの前記入力情報を受信し、受信した前記入力情報を入力情報ファイルに格納する入力情報記録部、前記httpリクエストファイルに格納されている前記httpリクエスト情報と前記入力情報ファイルに格納されている前記入力情報とを対応付け、対応付け結果を対応情報として対応情報ファイルに格納する対応情報生成部、及び、前記入力情報ファイルに格納されている前記入力情報を参照して、前記入力情報に対応させたテストシナリオを生成し、テスト仕様およびテスト実行条件に従って修正される、生成した前記テストシナリオをテストシナリオファイルに格納するテストシナリオ生成部を有するサーバを含み、
前記クライアントは、前記httpリクエストファイル、前記テストシナリオファイルおよび前記対応情報ファイルを用いて、前記入力装置からの前記テスト仕様および前記テスト実行条件に基づいて、前記サーバが運用中の前記第１の情報処理からバージョンアップされた、第２の情報処理の内容をテストするテスト実行部をさらに有することを特徴とするテストシナリオを用いたテスト装置。
【請求項２】
前記入力情報は、前記入力情報の入力項目を識別する入力情報IDを付して前記入力情報ファイルに格納され、前記httpリクエスト情報は、前記httpリクエスト情報の前記入力項目に対応する属性名を識別するリクエスト要素IDを付して前記httpリクエストファイルに格納され、前記対応情報ファイルに格納される前記対応情報は、前記リクエスト要素IDと前記入力情報IDの対応を示すことを特徴とする請求項１記載のテストシナリオを用いたテスト装置。
【請求項３】
前記テストシナリオ生成部は、前記テストシナリオをスクリプトとして生成することを特徴とする請求項１記載のテストシナリオを用いたテスト装置。
【請求項４】
クライアントおよびサーバを含むテスト装置における、テストシナリオを用いたテスト方法であって、
前記クライアントは、入力装置からの入力情報をフックし、フックした前記入力情報を送信し、前記入力装置からの前記入力情報に対応したhttpリクエストを送信し、
前記サーバは、前記クライアントからの前記httpリクエストを受信し、所定のデータフォーマットに変換して、運用中の第１の情報処理を実行するアプリケーションに出力し、受信した前記httpリクエストをフックし、httpリクエスト情報としてhttpリクエストファイルに格納し、前記クライアントからの前記入力情報を受信し、受信した前記入力情報を入力情報ファイルに格納し、前記httpリクエストファイルに格納されている前記httpリクエスト情報と前記入力情報ファイルに格納されている前記入力情報とを対応付け、対応付け結果を対応情報として対応情報ファイルに格納し、前記入力情報ファイルに格納されている前記入力情報を参照して、前記入力情報に対応させたテストシナリオを生成し、テスト仕様およびテスト実行条件に従って修正される、生成した前記テストシナリオをテストシナリオファイルに格納し、
前記クライアントは、さらに、前記httpリクエストファイル、前記テストシナリオファイルおよび前記対応情報ファイルを用いて、前記入力装置からの前記テスト仕様および前記テスト実行条件に基づいて、前記サーバが運用中の前記第１の情報処理からバージョンアップされた、第２の情報処理の内容をテストすることを特徴とするテストシナリオを用いたテスト方法。
【請求項５】
前記入力情報は、前記入力情報の入力項目を識別する入力情報IDを付して前記入力情報ファイルに格納され、前記httpリクエスト情報は、前記httpリクエスト情報の前記入力項目に対応する属性名を識別するリクエスト要素IDを付して前記httpリクエストファイルに格納され、前記対応情報ファイルに格納される前記対応情報は、前記リクエスト要素IDと前記入力情報IDの対応を示すことを特徴とする請求項４記載のテストシナリオを用いたテスト方法。
【請求項６】
前記サーバは、前記テストシナリオをスクリプトとして生成することを特徴とする請求項４記載のテストシナリオを用いたテスト方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バージョンアップした情報システムをテストする、テストシナリオを用いたテスト装置および方法に関する。
【背景技術】
【０００２】
クライアントとサーバとをネットワークを介して接続した情報システムのバージョンアップが頻繁に実施されている。バージョンアップした情報システムのテスト用サーバのテストのために、バージョンアップ前の実運用サーバから、テスト用サーバに実運用のhttpリクエストを転送する技術が特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５３０８１９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１の技術は、テスト用サーバが実運用のhttpリクエストに対応した負荷テストを実行するので、テスト用のhttpリクエストを用意する必要がない。しかしながら、負荷テストに用いるhttpリクエストの種類や頻度は実運用の範囲内である。
【０００５】
テスト用サーバのバージョンアップに対しては、負荷テストに限らず、情報処理システムに課せられた処理の正しさも保証する必要がある。たとえば、テスト用サーバのある処理において、１〜５のいずれかの一つの数値入力を許容するとき、許容範囲外の６がクライアントから入力された場合に、入力誤りや再入力を促すメッセージなどをクライアントに画面出力する必要がある。実運用の範囲内のhttpリクエストを用いると、許容範囲外の入力が偶然にはあり得るが、明確な形（確実にテストケースとして実行し、その結果が情報システムの仕様に則していたという確認）のテストの実行とは言えない。すなわち、実運用の範囲外も含めたhttpリクエストをテストのために用意する必要が生じる。
【課題を解決するための手段】
【０００６】
開示するテストシナリオを用いたテスト装置は、入力装置からの入力情報をフックし、フックした入力情報を送信する入力情報処理部、及び、入力装置からの入力情報に対応したhttpリクエストを送信する運用Webブラウザを有するクライアント、並びに、クライアントからのhttpリクエストを受信し、所定のデータフォーマットに変換して、運用されている情報処理を実行するアプリケーションに出力するWebサーバ、Webサーバが受信したhttpリクエストをフックし、httpリクエスト情報としてhttpリクエストファイルに格納するhttpリクエスト記録部、クライアントの入力情報処理部からの入力情報を受信し、受信した入力情報を入力情報ファイルに格納する入力情報記録部、httpリクエストファイルに格納されているhttpリクエスト情報と入力情報ファイルに格納されている入力情報を対応付け、対応付け結果を対応情報として対応情報ファイルに格納する対応情報生成部、及び、入力情報ファイルに格納されている入力情報を参照して、入力情報に対応させたテストシナリオを生成し、テスト仕様に従って修正される、生成したテストシナリオをテストシナリオファイルに格納するテストシナリオ生成部を有するサーバを含み、クライアントは、さらに、テストシナリオファイル、テストシナリオファイルおよび対応情報ファイルを用いて、テスト仕様およびテスト実行条件に基づいて、前記サーバが運用中の前記第１の情報処理内容からバージョンアップされた、第２の情報処理内容をテストするテスト実行部を有する。
【発明の効果】
【０００７】
開示するテストシナリオを用いたテスト装置によれば、情報処理システムのバージョンアップに対して、情報処理システムに課せられた処理の性能や機能を検証できる。
【図面の簡単な説明】
【０００８】
【図１】テストシナリオを用いたテスト装置を含む情報システムの構成例である。
【図２】テストに注目した情報システムの構成例である。
【図３】ＨＴＭＬ画面情報の例である。
【図４】発注入力画面の例である。
【図５】入力情報の例である。
【図６】httpリクエストの例である。
【図７】httpリクエスト情報の例である。
【図８】httpリクエスト情報と入力情報との対応情報の例である。
【図９】対応情報生成部の処理フローチャートである。
【図１０】スクリプトとしてのテストシナリオの例である。
【図１１】テスト実行画面の例である。
【図１２】繰り返しテスト実行画面の例である。
【図１３】入力範囲テスト実行画面の例である。
【図１４】テスト実行部の処理フローチャートである。
【図１５】テスト実行部の処理フローチャートである。
【図１６】httpリクエスト選択部の処理フローチャートである。
【図１７】修正されたテストシナリオである。
【図１８】修正されたhttpリクエストである。
【発明を実施するための形態】
【０００９】
図１は、テストシナリオを用いたテスト装置を含む情報システムの構成例である。情報システムは、運用クライアント１、運用サーバ２、テストクライアント（テスト対象のクライアント）３、およびテストサーバ（テスト対象のサーバ）４の各コンピュータが、互いにネットワーク５を介して接続されている。テスト装置で用いるテストシナリオを記録するテストシナリオ記録装置は、運用中のhttpリクエストを元にテストシナリオを作成するために、運用クライアント１及び運用サーバ２を含む運用中のクライアント‐サーバシステムに構築される。テストクライアント３およびテストサーバ４は、テストシナリオ記録装置が作成したテストシナリオを用いた、テスト装置によるテストの実行について後述するためにネットワーク５に接続している。
【００１０】
運用されている情報処理は、運用クライアント１が入力に対応したhttpリクエストを運用サーバ２に送信し、運用サーバ２が受信したhttpリクエストに対応した処理を実行するものである。以下の説明では、説明を簡単にするために、発注処理や顧客管理などのような、運用されている情報処理に関しては簡単な例示にとどめ、情報処理内容の詳細の説明を省略する。
【００１１】
更新された情報処理は、テストクライアント３がテスト入力に対応したhttpリクエストをテストサーバ４に送信し、テストサーバ４が受信したhttpリクエストに対応した処理を実行するものである。更新された情報処理は、テストクライアント３とテストサーバ４との少なくとも一方で実行される処理内容が、運用されている情報処理から更新されている。以下の説明では、運用されている情報処理と同様に、説明を簡単にするために、発注処理や顧客管理などのような、更新された情報処理内容に関しては詳細の説明を省略する。
【００１２】
運用クライアント１は、入力装置１６および出力装置１７を有し、入力情報処理部１０および運用Webブラウザ１１を含む。入力情報処理部１０は、入力装置１６から運用Webブラウザ１１への入力情報をフックし（取り込み）、運用サーバ２へ送信する。運用Webブラウザ１１は、入力装置１６からの入力情報に対応したhttpリクエストを運用サーバ２へ送信する。入力情報処理部１０からの入力情報は、運用Webブラウザ１１を介して送信してもよいが、運用中の情報処理の性能低下を招く可能性があるので、運用クライアント１と運用サーバ２との専用の通信回線を用いることが望ましい。
【００１３】
運用サーバ２は、Webサーバ２０、httpリクエスト記録部２１、入力情報記録部２２、対応情報生成部２３、及びテストシナリオ生成部２４の各処理部、並びに、httpリクエストファイル２５、入力情報ファイル２６、対応情報ファイル２７、及びテストシナリオファイル２８の各記憶部を含む。
【００１４】
Webサーバ２０は、運用クライアント１からのhttpリクエストを受信し、所定のデータフォーマットに変換して、運用されている情報処理を実行するアプリケーションまたはアプリケーションサーバに出力する。
【００１５】
httpリクエスト記録部２１は、Webサーバ２０が受信したhttpリクエストをフックし（取り込み）、httpリクエスト情報としてhttpリクエストファイル２５に格納する。入力情報記録部２２は、運用クライアント１からの入力情報を受信し、入力情報ファイル２６に格納する。対応情報生成部２３は、httpリクエストファイル２５に格納されているhttpリクエスト情報と入力情報ファイル２６に格納されている入力情報とを対応付け、対応付け結果を対応情報として対応情報ファイル２７に格納する。テストシナリオ生成部２４は、入力情報ファイル２６に格納されている入力情報を参照して、入力情報に対応させたテストシナリオを生成し、生成したテストシナリオをテストシナリオファイル２８に格納する。
【００１６】
図２は、テストシナリオに基づいたテストサーバ４のテストに注目した情報システムの構成例である。テストクライアント３は、入力装置３６および出力装置３７を有し、テスト実行部３０、httpリクエスト選択部３１およびテストWebブラウザ３２の各処理部、並びに、テストシナリオファイル３３、対応情報ファイル３４およびhttpリクエストファイル３５の各記憶部を含む。テストシナリオファイル３３、対応情報ファイル３４およびhttpリクエストファイル３５は、テストの実行に先立ち、運用サーバ２に含まれるテストシナリオファイル２８、対応情報ファイル２７およびhttpリクエストファイル２５が転送されたファイルである。したがって、後述のテスト実行の説明では、転送前のファイルの符号を用いて説明する場合がある。
【００１７】
テスト実行部３０は、入力装置３６から指定されたテスト仕様に基づいて、httpリクエスト選択部３１およびテストWebブラウザ３２を選択的に用いて、テストサーバ４へhttpリクエストの送信を制御する。テスト実行部３０は、httpリクエスト選択部３１を用いることによりテストサーバ４をテストし、テストWebブラウザ３２を用いることによりテストWebブラウザ３２およびテストサーバ４をテストする。したがって、テストWebブラウザ３２がバージョンアップされずに、運用Webブラウザ１１と同じである場合は、テスト実行部３０はhttpリクエスト選択部３１およびテストWebブラウザ３２のいずれか一方を用いる。一方、テストWebブラウザ３２が運用Webブラウザ１１からバージョンアップされている場合は、テスト実行部３０は、httpリクエスト選択部３１を用いてテストサーバ４のテストを完了した後に、テストWebブラウザ３２を用いることによりバージョンアップされたテストWebブラウザ３２をテストする。
【００１８】
httpリクエスト選択部３１は、対応情報を参照して、テスト実行部３０から指定されたテストシナリオに対応するhttpリクエストを選択し、選択したhttpリクエストをテストサーバ４へ送信する。
【００１９】
テストWebブラウザ３２は、テスト実行部３０から入力されたテストシナリオを、入力装置３６から入力された入力情報とみなし、テストシナリオに対応するhttpリクエストをテストサーバ４に送信する。
【００２０】
テストサーバ４は、テストクライアント３からのhttpリクエストを処理するWebサーバ４０有し、図示を省略する、テストされる情報処理を実行する処理部を含む。テストされる情報処理は、発注処理や顧客管理などのような、運用されている情報処理と同様の処理であるが、機能変更やユーザによる使い勝手向上などのために、情報処理を実行する処理部がバージョンアップされている。
【００２１】
テストクライアント３は、運用クライアント１がテストのために時間が空いている（使用時間が少なく、負荷が低い）場合は、運用クライアント１をテストクライアント３として用いてもよい。ただし、運用されている情報処理と同様に、ユーザによる使い勝手向上などのためにWebブラウザもバージョンアップされていることが多い。したがって、ここではテストクライアント３を、運用クライアント１とは別に設ける構成として説明する。
【００２２】
以下、運用されている情報処理として発注処理を例に挙げ、詳細に説明する。
【００２３】
図３は、運用クライアント１の運用Webブラウザ１１が出力装置１７に発注入力画面を出力するためのＨＴＭＬ画面情報６の例である。ＨＴＭＬ画面情報６は、発注入力画面のタイトル６１、製品コード６２、製品個数６３、及びＯＫボタン６４の画面情報を含む。
【００２４】
図４は、運用クライアント１の出力装置１７に運用Webブラウザ１１により出力される、ＨＴＭＬ画面情報６に対応した製品の発注入力画面７の例である。発注入力画面７は、発注する製品の製品コード７１の入力欄、発注する製品個数７２の入力欄、及びＯＫボタン７３を有する。運用Webブラウザ１１は、ＯＫボタン６３の押下に応答して、入力情報（製品個数７１および製品コード７２）に対応したhttpリクエストを運用サーバ２へ送信する。
【００２５】
図５は、入力情報処理部１０がフックした、入力装置１６から運用Webブラウザ１１への入力情報８の例であり、入力情報処理部１０は入力情報８を運用サーバ２へ送信する。運用サーバ２では、入力情報記録部２２が受信した入力情報８を入力情報ファイル２６に格納する。入力情報８は、入力情報ID８１、時刻８２、画面８３、属性名８４、名称８５、および値８６を含む。
【００２６】
入力情報ID８１は、フックした入力情報８に含まれる属性（ここでは、製品コード７１および製品個数７３）に対応して、入力情報８を識別する識別子である。したがって、入力情報８が複数の属性を持つ、すなわち複数種別の入力項目を持つならば、それらの入力項目に応じて入力情報ID８１が割り当てられる。
【００２７】
時刻８２は、入力情報処理部１０が入力情報８をフックした時刻である。画面８３は入力画面であり、ここでは発注入力画面７である。属性名８４は、発注入力画面７を表示するためのＨＴＭＬ画面情報６から取得したinput nameであり、名称８５は、発注入力画面７に表示された属性の名称である。値８６は、発注入力画面７に表示された属性の名称に対応して、入力された値である。
【００２８】
入力情報８の一例を説明する。図５の１行目は、入力情報ID８１が「１」に対応して、時刻８２「2014/7/11 12:00:00.00」に入力情報処理部１０がフックした入力情報を示している。入力情報処理部１０がフックした入力情報は、画面８３「発注入力画面」からフックした属性名８４「code」、名称８５「製品コード」、および値８６「001」である。
【００２９】
図６は、運用Webブラウザ１１が、発注入力画面７のＯＫボタン６３の押下に応答して、運用サーバ２へ送信するhttpリクエスト９の例である。httpリクエスト９は、発注入力画面７の入力情報（製品個数７１および製品コード７２）に対応した「code=001&num=1」を含んでいる。
【００３０】
図７は、httpリクエスト記録部２１が、Webサーバ２０が運用クライアント１から受信したhttpリクエストをフックし（取り込み）、httpリクエストファイル２５に格納するhttpリクエスト情報１０の例である。httpリクエスト情報１０は、リクエスト要素ID１０１、時刻１０２、属性名１０３、値１０４、httpリクエストID１０５、行１０６、および文字１０７を含む。なお、httpリクエスト情報１０は、httpリクエストファイル２５に格納する際に、対応するhttpリクエスト９も格納し、対応付けておく。
【００３１】
リクエスト要素ID１０１は、フックしたhttpリクエスト９に含まれる属性（ここでは、codとnumとの各々）に対応して、httpリクエスト９の要素（属性）を識別する識別子である。したがって、httpリクエスト９が複数の属性を持つ、すなわち複数種別の要素を持つならば、それらの要素に応じてリクエスト要素ID１０１が割り当てられる。
【００３２】
時刻１０２は、httpリクエスト記録部２１がhttpリクエスト９をフックした時刻である。属性名１０３は、httpリクエスト９に含まれる属性（ここでは、codまたはnum）である。値１０４は、属性名１０３に対応した属性の値である。httpリクエストID１０５は、httpリクエスト９を識別する識別子である。したがって、httpリクエスト９が複数の属性を持つならば、それらの属性を示すリクエスト要素ID１０１に同じhttpリクエストID１０５が割り当てられる。行１０６および文字１０７は、httpリクエスト９に含まれるリクエスト要素ID１０１に対応する属性名１０３および値１０４の位置（何行目の万文字目から何文字目までか）を表す。
【００３３】
図８は、対応情報生成部２３が、httpリクエストファイル２５に格納されているhttpリクエスト情報１０と入力情報ファイル２６に格納されている入力情報８とを対応付け、対応付けた結果を対応情報生成部２３が対応情報ファイル２７に格納した対応情報１１の例である。対応情報１１は、リクエスト要素ID１０１と入力情報ID８１の対応関係を表し、この対応関係をリクエスト要素ID１１１と入力情報ID１１２とする。
【００３４】
図９は、対応情報生成部２３の処理フローチャートである。対応情報生成部２３は、httpリクエストファイル２５に格納されている、httpリクエスト情報１０のリクエスト要素ID１０１で識別される一つのhttpリクエスト情報１０を選択する（ステップ２３１）。対応情報生成部２３は、選択したhttpリクエスト情報１０の時刻１０２以前で、時刻１０２から所定時間内の時刻８２の入力情報８を取得する（ステップ２３２）。所定時間は、運用Webブラウザ１１の入力タイムアウト時間（Webブラウザ１１による入力画面７を表示からＯＫボタン７３までのタイムアウト時間）より前の入力情報８はhttpリクエスト情報１０に対応することはないので、入力タイムアウト時間とする。
【００３５】
図７および図５を参照し、所定時間を１０分とし、ステップ２３１〜２３２を実行する例を説明する。リクエスト要素ID１０１が「１」のhttpリクエスト情報１０を選択すると、その時刻１０２は「2014/7/11 12:00:00.50」であるので、時刻８２が「2014/7/11 11:50:00.50」から「2014/7/11 12:00:00.50」に含まれる入力情報ID８１が「１」と「２」との入力情報８が取得される。
【００３６】
対応情報生成部２３は、選択したhttpリクエスト情報１０の属性名１０３に一致する属性名８４を持つ入力情報８を選択する（ステップ２３３）。このステップの実行は、Webブラウザに非同期通信の仕掛け（AJAX）がある場合、ユーザによる入力と無関係にhttp通信が行われる場合があるので、誤った対応付けを防止するためである。
【００３７】
上記の例では、入力情報ID８１が「１」と「２」との入力情報８が取得されたので、httpリクエスト情報１０のリクエスト要素ID１０１が「１」の属性名１０３は「code」であるので、属性名８４が「code」である入力情報ID81が「１」の入力情報８が選択される。
【００３８】
この例では、一つの入力情報ID81が「１」の入力情報８が選択されるが、複数の入力情報ID81に対応する入力情報８が選択される場合がある。このような場合、対応情報生成部２３は、選択された複数の入力情報ID81に対応する入力情報８から、時刻８２が最も早い入力情報８を選択する（ステップ２３４）。
【００３９】
対応情報生成部２３は、選択したhttpリクエスト情報１０のリクエスト要素ID１０１と選択した入力情報８の入力情報ID81を対応付け、リクエスト要素ID１１１と入力情報ID１１２として対応情報ファイル２７に格納する（ステップ２３５）。
【００４０】
図９を用いて、リクエスト要素ID１０１で識別される一つのhttpリクエスト情報１０について説明したが、対応情報生成部２３は、httpリクエスト記録部２１に格納されている各リクエスト要素ID１０１で識別される一つのhttpリクエスト情報１０について処理を繰り返し実行する。
【００４１】
テストシナリオ生成部２４は、入力情報ファイル２６に格納されている入力情報８に対応させたテストシナリオを生成し、生成したテストシナリオに入力情報ID８１を対応付けてテストシナリオファイル２８に格納する。図１０は、図５に示した入力情報８の例に対応する、スクリプトとしてのテストシナリオ１２の例である。このスクリプトは、予め定めた所定のフォーマットに、入力情報８の画面８３、名称８５、および値８６を挿入することにより生成される。テストシナリオ１２に対応付ける入力情報ID８１が複数あれば、複数の入力情報ID８１をテストシナリオ１２に対応付ける。テストシナリオ１２を文字列によるスクリプトとするのは、運用Webブラウザ１１がテストWebブラウザ３２にバージョンアップされた場合でも、テストシナリオがブラウザに依存しないようにするためである。
【００４２】
図２の構成におけるテストの実行について説明する。前述のように、テストシナリオファイル３３および対応情報ファイル３４は、テストの実行に先立ち、運用サーバ２に含まれるテストシナリオファイル２８および対応情報ファイル２７が転送されたファイルである。したって、テストシナリオファイル２８には１２が格納され、対応情報ファイル２７には対応情報１１が格納されている。
【００４３】
更新（バージョンアップ）された情報処理の運用されている情報処理からの更新に伴うテストには、更新部分に限らず、更新されていない部分への影響も考慮する必要があり、多様なテストモードがある。テストモードには、性能テストとしてのテストサーバ４からの応答時間がユーザの許容範囲内かをテストする応答時間テスト、機能テストとしての伝票作成のための積和演算結果を検証する演算テストなどがある。ここでは、テストモードとして、単位時間当たりの処理件数が仕様を満足するかを検証するための繰り返しテスト、および、更新された情報処理が許容する入力範囲内外の入力に対する処理結果を検証するための入力範囲テストを例に説明する。
【００４４】
テスト実行部３０が出力装置３７に出力する画面の例を説明する。図１１は、テスト仕様を入力するためのテスト実行画面１３の例である。図１２は、繰り返しテストの実行条件を入力するための繰り返しテスト実行画面１４の例である。図１３は、入力範囲テストの実行条件を入力するための入力範囲テスト実行画面１５の例である。
【００４５】
テスト実行画面１３は、テストシナリオ１３１、テスト対象１３２、およびテストモード１３３の各入力内容を、ＯＫボタン１３４の押下に応答して入力するための画面である。繰り返しテスト実行画面１４は、テストシナリオ１３１、テスト対象１３２、繰り返し周期１４１、およびテスト時間１４２の各入力内容を、ＯＫボタン１３４の押下に応答して入力するための画面である。入力範囲テスト実行画面１５は、テストシナリオ１３１、テスト対象１３２、入力指定範囲１５１、および増分の各入力内容を、ＯＫボタン１３４の押下に応答して入力するための画面である。テストシナリオ１３１、テスト対象１３２、およびＯＫボタン１３４に関して、図１１〜図１３に共通の符号を付しているのは、テスト実行画面１３での入力を、繰り返しテスト実行画面１４または入力範囲テスト実行画面１５で保持（出力を継続）し、ユーザによる同じ内容の入力の繰り返しを避けることを意味している。
【００４６】
図１４および図１５は、テスト実行部３０の処理フローチャートである。テスト実行部３０は、テスト実行画面１３を出力装置３７に出力し、ＯＫボタン１３４の押下に応答して、前述の各入力内容を入力する（ステップ３０１）。テスト実行部３０は、入力したテスト対象１３２を判定し（ステップ３０２）、サーバならばステップ３０３に移り、ブラウザならばステップ３１５に移る。
【００４７】
更新された情報処理は、テストクライアント３とテストサーバ４との少なくとも一方で実行される処理内容が、運用されている情報処理から更新されている。したがって、テストクライアント３とテストサーバ４の双方の処理内容が更新されている場合、テストクライアント３の処理内容が更新されている場合、およびテストサーバ４の処理内容が更新されている場合の３通りがある。テストクライアント３とテストサーバ４の双方の処理内容が更新されている場合は、更新された情報処理の仕様に合わないテスト結果が得られると、その原因がテストクライアント３とテストサーバ４のいずれにあるのかが判別できない場合が生じる。この状況の発生を避けるために、テストクライアント３とテストサーバ４の双方の処理内容が更新されている場合は、テスト対象１３２をサーバとしてテストサーバ４を先にテストし、そのテスト結果を確認した後にテスト対象１３２をブラウザとしてテストクライアント３とテストサーバ４とを組み合わせたテストを実行する。換言すると、
テスト対象１３２をサーバとすると、テストサーバ４単独のテストであり、テスト対象１３２をブラウザとすると、テストクライアント３とテストサーバ４との組み合わせテストを実行する。組み合わせテストを先に実行した場合の不具合（仕様を満足しないテスト結果）が得られた場合の、原因がテストサーバ４およびテストクライアント３のいずれにあるかが判別できない状況を回避できる。ブラウザが更新され、サーバは更新されない場合も多いが、その場合は、ブラウザが更新されたテストクライアント３と更新されていないテストサーバ４との組み合わせテストを実行することになる。
【００４８】
テスト実行部３０は、入力したテストモード１３３を判定し（ステップ３０３）、「繰り返し」ならばステップ３０４に移り、「入力範囲」ならばステップ３１０に移る。
【００４９】
テスト実行部３０は、繰り返しテスト実行画面１４を出力装置３７に出力し、ＯＫボタン１３４の押下に応答して、前述の各入力内容を入力する（ステップ３０４）。テスト実行部３０は、入力したテストシナリオ１３１を、httpリクエスト選択部３１を動作させるパラメータ（引数）として設定する（ステップ３０５）。テスト実行部３０は、入力した繰り返し周期１４１毎に（ステップ３０６）、httpリクエスト選択部３１を実行する（ステップ３０７）。httpリクエスト選択部３１の処理は後述する。テスト実行部３０は、テスト時間１４２が経過したかを判定し（ステップ３０８）、未達（経過していない）ならばステップ３０６に戻り、経過したならば、ステップ３０９に移る。なお、テスト時間１４２の経過判定は、図示を省略しているが、ステップ３０５においてテスト時間１４２を減算タイマにセットし、残時間が０か否かを判定すればよい。
【００５０】
テスト実行部３０は、テスト結果を出力装置３７に出力し、ユーザによるテスト結果の確認を得て（ステップ３０９）、処理を終了する。テスト結果の詳細説明を省略するが、この繰り返しテストの場合、横軸に１秒ごとのhttpリクエストのテストサーバ４への送信順序（送信時刻）、縦軸にhttpリクエストの応答時間を表示すると、仕様で定める所定の応答時間内に応答が得られる、テスト開始からの時間を評価することができる。
【００５１】
テスト実行部３０は、入力範囲テスト実行画面１５を出力装置３７に出力し、ＯＫボタン１３４の押下に応答して、前述の各入力内容を入力する（ステップ３１０）。テスト実行部３０は、入力したテストシナリオ１３１と入力指定範囲１５１の初期値（図１３の例では0）を、httpリクエスト選択部３１を動作させるパラメータ（引数）として設定する（ステップ３１１）。テスト実行部３０は、httpリクエスト選択部３１を実行し（ステップ３１２）、入力指定範囲１５１の値を入力した増分１５２で更新する（ステップ３１３）。ここでは、入力指定範囲１５１の値は、0、1、2、・・・となる。テスト実行部３０は、入力指定範囲１５１の値が指定範囲外かを判定し（ステップ３１４）、指定範囲内ならばステップ３１２に戻り、指定範囲外ならば、ステップ３０９に移る。
【００５２】
テスト実行部３０は、テスト結果を出力装置３７に出力し、ユーザによるテスト結果の確認を得て、処理を終了する。この入力範囲テストの場合のテスト結果は、たとえば次のようになる。更新されたテストサーバ４が許容する（仕様で定められた）入力範囲を1〜8とし、入力指定範囲１５１を0〜9とすると、入力が1〜8の場合に正常に処理され、入力が0または９の場合に「入力エラー」などのメッセージが得られたかなどを評価することができる。
【００５３】
テスト実行部３０は、テスト対象が１３２がブラウザのとき、ステップ３１５〜ステップ３２６を実行する。ステップ３１５〜ステップ３２６は、説明したステップ３０３〜ステップ３１４と同様であり、異なるのはステップ３１９およびステップ３２４で、httpリクエスト選択部３１ではなく、テストWebブラウザ３２を実行する点である。したがって、テストWebブラウザ３２を実行させる処理に関して後述し、他の説明は省略する。
【００５４】
図１６は、httpリクエスト選択部３１の処理フローチャートである。httpリクエスト選択部３１は、設定されたテストシナリオをテストシナリオファイル３３から取得する（ステップ３５１）。httpリクエスト選択部３１は、パラメータ（引数）が設定されているかを判定し（ステップ３５２）、設定されているならばステップ３５３へ移り、設定されなければステップ３５３をスキップする。パラメータ（引数）は、たとえばテスト実行部３０のステップ３１１で設定されたり、ステップ３２５で更新されたりする入力指定範囲１５２内の設定値である。パラメータ（引数）が設定されているならば、httpリクエスト選択部３１は、取得したテストシナリオのパラメータを修正する（ステップ３５３）。取得したテストシナリオを図１０に示したテストシナリオ１２とし、製品個数２が入力指定範囲１５２の設定値として設定されると、テストシナリオ１０のスクリプト中の製品個数を２に修正する。図１７は、製品個数が２に修正されたテストシナリオ１６である。
【００５５】
取得したテストシナリオ１２には、テストシナリオファイル３３中で入力情報IDと対応付けられている（テストシナリオ生成部２４により入力情報ID８１が対応付けられている）ので、httpリクエスト選択部３１は、対応情報ファイル３４を参照して、その入力情報ID１１１に対応するリクエスト要素ID１１２を取得する（ステップ３５４）。取得したリクエスト要素ID１１２（図７のリクエスト要素ID１０１）は、httpリクエストファイル３５の中でhttpリクエストID１０５に対応付けられ、さらにhttpリクエスト９も対応付けられているので、httpリクエスト選択部３１は、対応するhttpリクエスト９を取得する（ステップ３５５）。httpリクエスト選択部３１は、取得または修正したテストシナリオに対応するように、取得したhttpリクエスト９を修正する（ステップ３５６）。
【００５６】
図１８は、httpリクエスト９が修正されたhttpリクエスト１７である。httpリクエスト１７は、テストシナリオ１６に対応させるために、httpリクエスト９の「code=001&num=1」の部分が「code=001&num=2」に修正されている。
【００５７】
httpリクエスト選択部３１は、httpリクエスト１７をテストサーバ４へ送信し（ステップ３５７）、処理を終了する。テストサーバ４では、Webサーバ４０がhttpリクエスト１７を受信し、httpリクエスト１７に対応する処理を実行するアプリケーション（サーバ）に、httpリクエスト１７に含まれるコードや個数などのパラメータを出力する。httpリクエスト選択部３１は、httpリクエスト１７に対するテストサーバ４からの応答を受信する処理も実行するが、説明を省略する。
【００５８】
以上のように、httpリクエスト選択部３１は、テストWebブラウザ３２がバージョンアップされている場合に、テストWebブラウザ３２に代わって実行される。
【００５９】
テスト実行部３０とテストWebブラウザ３２とのインタフェイスについて簡単に説明する。図１５では省略しているが、テスト実行部３０がテストWebブラウザ３２を実行させるとテストWebブラウザ３２が入力画面を開くので、テスト実行部３０がテストシナリオにしたがって、入力画面の入力内容を入力する。この場合はテストWebブラウザ３２を改変することなく使用できる。テストWebブラウザ３２の改変が許容される場合は、テスト実行部３０がテストシナリオをパラメータとしてテストWebブラウザ３２に渡し、テストWebブラウザ３２は受け取ったテストシナリオに基づいてhttpリクエストを生成する。この場合は、テストWebブラウザ３２は入力画面を開く方法に比べて高速に動作するので、httpリクエストの送信周期を短くした（例えば100ｍ秒周期）性能テストなどに適している。
【００６０】
説明したテスト装置によれば、情報処理システムのバージョンアップに対して、情報処理システムに課せられた処理の性能や機能を検証できる。
【符号の説明】
【００６１】
１：運用クライアント、２：運用サーバ、３：テストクライアント、４：テストサーバ、５：ネットワーク、１０：入力情報処理部、１１：運用Webブラウザ、１６：入力装置、１７：出力装置、２０：Webサーバ、２１：httpリクエスト記録部、２２：入力情報記録部、２３：対応情報生成部、２４：テストシナリオ生成部、２５：httpリクエストファイル、２６：入力情報ファイル、２７：対応情報ファイル、２８：テストシナリオファイル、３０：テスト実行部３０、３１：httpリクエスト選択部、３２：テストWebブラウザ、３３：テストシナリオファイル、３４：対応情報ファイル３４、３５：httpリクエストファイル、３６：入力装置、３７：出力装置、４０：Webサーバ。
【図１】
0006367721.tif 000002
【図２】
0006367721.tif 000003
【図３】
0006367721.tif 000004
【図４】
0006367721.tif 000005
【図５】
0006367721.tif 000006
【図６】
0006367721.tif 000007
【図７】
0006367721.tif 000008
【図８】
0006367721.tif 000009
【図９】
0006367721.tif 000010
【図１０】
0006367721.tif 000011
【図１１】
0006367721.tif 000012
【図１２】
0006367721.tif 000013
【図１３】
0006367721.tif 000014
【図１４】
0006367721.tif 000015
【図１５】
0006367721.tif 000016
【図１６】
0006367721.tif 000017
【図１７】
0006367721.tif 000018
【図１８】
0006367721.tif 000019