(57)【要約】【課題】日々提供されるサービスやＯＳの膨大なパッチに対して、リアルデータを使用した迅速かつ確実な退行テストを実施する。【解決手段】テスト装置によるテスト方法であって、本番用システムへのリクエスト入力履歴情報とアクセス履歴情報とによりテストデータ情報を作成し、更新アクセスである第１のテストデータと更新アクセスである第２のテストデータとのアクセス時間が重複する場合、第２のテストデータのリクエスト入力時間を所定の時間遅らせるように前記テストデータ情報を更新し、テスト用システムに対して更新後のテストデータ情報に含まれるテストデータを入力するテスト方法である。【選択図】図２
2011086083.tif 000002
【特許請求の範囲】
【請求項１】
テスト装置によるテスト方法であって、
前記テスト装置は、第１のデータベースと第１のサーバを含む本番用システムへの複数のリクエストの入力時間を示すリクエスト入力履歴情報と、前記リクエストに対応した前記第１のデータベースへの複数のアクセスのアクセス種別及びアクセス時間を示すアクセス履歴情報とにより、複数のテストデータのリクエスト入力時間とアクセス時間とアクセス種別を含むテストデータ情報を作成し、
前記テスト装置は、前記テストデータ情報を参照し、前記複数のテストデータに含まれ、アクセス種別が更新アクセスである第１のテストデータと、前記第１のテストデータよりアクセス開始時間が遅く、アクセス種別が更新アクセスである第２のテストデータと、のアクセス時間が重複する場合、前記第２のテストデータのリクエスト入力時間を所定の時間遅らせるように前記テストデータ情報を更新し、
前記テスト装置は、第２のデータベースと第２のサーバを含むテスト用システムに対して前記更新後のテストデータ情報に含まれる前記複数のテストデータを入力する、ことを特徴とするテスト方法。
【請求項２】
請求項１に記載のテスト方法であって、
前記所定の時間は、前記第２のテストデータのアクセス開始時間と前記第１のテストデータのアクセス終了時間との差である、ことを特徴とするテスト方法。
【請求項３】
請求項２に記載のテスト方法であって、
前記テスト装置は、前記更新後のテストデータ情報により、前記第２のデータベースへのアクセス障害が発生するかを確認し、
前記テスト装置は、前記アクセス障害が発生する場合、前記更新前の前記第１のテストデータと前記第２のテストデータを変換した前記第２のデータベースへのアクセス言語により前記第２のデータベースが復元できるかを確認し、
前記テスト装置は、前記第２のデータベースが復元できる場合、前記テストデータ情報に含まれる前記第１のテストデータと前記第２のテストデータを前記アクセス言語に置換し、
前記テスト装置は、前記テスト用システムに対して前記置換後のテストデータ情報に含まれる前記複数のテストデータを入力する、ことを特徴とするテスト方法。
【請求項４】
請求項３に記載のテスト方法であって、
前記テスト装置は、前記テストデータ情報を参照し、前記複数のテストデータに含まれ、アクセス種別が更新アクセスである第３のテストデータと、アクセス種別が参照アクセスである第４のテストデータと、のアクセス時間が重複する場合、前記第４のテストデータのセッションに含まれる他のテストデータのアクセス種別を確認し、
前記テスト装置は、前記第４のテストデータのセッションに含まれる前記他のテストデータのアクセス種別が参照アクセスである場合、前記第４のテストデータと、前記第４のテストデータのセッションに含まれる前記他のテストデータとを前記テストデータ情報より削除する、ことを特徴とするテスト方法。
【請求項５】
請求項４に記載のテスト方法であって、
前記テスト装置は、前記第４のテストデータのセッションに含まれる前記他のテストデータのアクセス種別に更新アクセスが含まれる場合、前記更新前の前記第３のテストデータと前記第４のテストデータを変換した前記第２のデータベースへのアクセス言語により前記第２のデータベースが復元できるかを確認し、
前記テスト装置は、前記第２のデータベースが復元できる場合、前記テストデータ情報に含まれる前記第３のテストデータと前記第４のテストデータを前記アクセス言語に置換し、
前記テスト装置は、前記テスト用システムに対して前記置換後のテストデータ情報に含まれる前記複数のテストデータを入力する、ことを特徴とするテスト方法。
【請求項６】
請求項１に記載のテスト方法であって、
前記テスト装置は、前記更新後のテストデータ情報に含まれる複数のテストデータより、前記テスト用システムへの入力順にテストデータを選択し、
前記テスト装置は、前記選択したテストデータのアクセス時間と、直前のテストデータとのアクセス時間との第１の時間間隔を算出し、
前記選択したテストデータのリクエスト入力時間を第１の時間間隔早める、ことを特徴とするテスト方法。
【請求項７】
請求項６に記載のテスト方法であって、
前記テスト装置は、前記選択したテストデータのリクエストに含まれる他のテストデータを選択し、
前記テスト装置は、前記他のテストデータのアクセス時間と、前記他のテストデータによりアクセスするデータベースの格納領域に対してアクセスする直前のテストデータのアクセス時間との第２の時間間隔を算出し、
前記テスト装置は、前記選択したテストデータ及び、前記他のテストデータのリクエスト入力時間を第１の時間間隔又は第２の時間間隔早める、ことを特徴とするテスト方法。
【請求項８】
請求項７に記載のテスト方法であって、
前記テスト装置は、前記選択したテストデータ及び、前記他のテストデータのリクエスト入力時間を、第１の時間間隔又は第２の時間間隔のうち短い時間間隔早める、ことを特徴とするテスト方法。
【請求項９】
請求項１に記載のテスト方法であって、
前記テスト装置は、前記テスト用システムに対して前記更新後のテストデータ情報に含まれる前記複数のテストデータを入力し、アクセス障害が発生する場合には、アクセス障害が発生するテストデータのリクエスト入力時間を遅らせることを特徴とするテスト方法。
【請求項１０】
テスト装置であって、
第１のデータベースと第１のサーバを含む本番用システムと、第２のデータベースと第２のサーバを含むテスト用システムと、に接続するインターフェースと、
前記本番用システムへの複数のリクエストの入力時間を示すリクエスト入力履歴情報と、前記リクエストに対応した前記第１のデータベースへの複数のアクセスのアクセス種別及びアクセス時間を示すアクセス履歴情報とにより作成された複数のテストデータのリクエスト入力時間とアクセス時間とアクセス種別を含むテストデータ情報を格納するメモリと、
前記テストデータ情報を参照し、前記複数のテストデータに含まれ、アクセス種別が更新アクセスである第１のテストデータと、前記第１のテストデータよりアクセス開始時間が遅く、アクセス種別が更新アクセスである第２のテストデータと、のアクセス時間が重複する場合、前記第２のテストデータのリクエスト入力時間を所定の時間遅らせるように前記テストデータ情報を更新し、前記テスト用システムに対して前記更新後のテストデータ情報に含まれる前記複数のテストデータを入力する、プロセッサと、を含むことを特徴とするテスト装置。
【請求項１１】
請求項１０に記載のテスト装置であって、
前記所定の時間は、前記第２のテストデータのアクセス開始時間と前記第１のテストデータのアクセス終了時間との差である、ことを特徴とするテスト装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テスト装置及びテスト方法に関し、特に、アップデートしたサービスやＯＳが正常に動作するかどうかをテストするテストデータの作成に関する。
【背景技術】
【０００２】
昨今のインターネット、イントラネットでは、２４時間停止することなく利用可能なサービスが増えてきている。しかし、それらを提供するサービスやＯＳには攻撃の糸口となるセキュリティホールやバグが存在することもあるため、日常的にパッチが提供されている。したがって、早急で確実な退行テストの実施が必要不可欠となっている。
【０００３】
退行テストは、パッチ適用前のサービスの実行結果とパッチ適用後のサービスの実行結果とを比較することで実施できる。例えば、特許文献１では、テスト対象のサービスが稼動するパッチ適用前の本番系システム上に入力併走装置を置き、複製したパケットをパッチ適用後の検証系システムにも送信し、本番系システムの結果と検証系システムの結果を照合することで退行テストを実施している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２５７５８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１では、本番系システムに入力されたパケットを複製し、そのまま検証系システムに送信するため、同一テーブルへのアクセスが複数のパケットにより引き起こされた場合、ロック衝突やダーティリードが発生し、本番系システムと検証系システムのＤＢへのアクセス順に相違が生じる可能性がある。アクセス順に相違が発生すると結果も異なる可能性があるため、正確な退行テストが実施できないという問題がある。ロック衝突とは、あるＤＢアクセスが情報を占有ロックしているときに、別のＤＢアクセスが上記情報を占有ロックしようとしたときに発生する問題である。ダーティリードとは、あるＤＢアクセスが情報を更新中に、別のＤＢアクセスが上記情報を参照したときに発生する問題である。
【０００６】
また、特許文献１の手法では、退行テストの実施にリアルデータを本番系システムで処理したときに要した時間と同等のテスト時間が必要であった。したがって、テスト時間に膨大な時間を費やさなければならないという問題がある。
【課題を解決するための手段】
【０００７】
上記課題を解決するためのテスト装置によるテスト方法は、前記テスト装置は、第１のデータベースと第１のサーバを含む本番用システムへの複数のリクエストの入力時間を示すリクエスト入力履歴情報と、前記リクエストに対応した前記第１のデータベースへの複数のアクセスのアクセス種別及びアクセス時間を示すアクセス履歴情報とにより、複数のテストデータのリクエスト入力時間とアクセス時間とアクセス種別を含むテストデータ情報を作成し、前記テスト装置は、前記テストデータ情報を参照し、前記複数のテストデータに含まれ、アクセス種別が更新アクセスである第１のテストデータと、前記第１のテストデータよりアクセス開始時間が遅く、アクセス種別が更新アクセスである第２のテストデータと、のアクセス時間が重複する場合、前記第２のテストデータのリクエスト入力時間を所定の時間遅らせるように前記テストデータ情報を更新し、前記テスト装置は、第２のデータベースと第２のサーバを含むテスト用システムに対して前記更新後のテストデータ情報に含まれる前記複数のテストデータを入力する、ことを特徴とするテスト方法である。
【０００８】
上記課題を解決するためのテスト装置は、第１のデータベースと第１のサーバを含む本番用システムと、第２のデータベースと第２のサーバを含むテスト用システムと、に接続するインターフェースと、前記本番用システムへの複数のリクエストの入力時間を示すリクエスト入力履歴情報と、前記リクエストに対応した前記第１のデータベースへの複数のアクセスのアクセス種別及びアクセス時間を示すアクセス履歴情報とにより作成された複数のテストデータのリクエスト入力時間とアクセス時間とアクセス種別を含むテストデータ情報を格納するメモリと、前記テストデータ情報を参照し、前記複数のテストデータに含まれ、アクセス種別が更新アクセスである第１のテストデータと、前記第１のテストデータよりアクセス開始時間が遅く、アクセス種別が更新アクセスである第２のテストデータと、のアクセス時間が重複する場合、前記第２のテストデータのリクエスト入力時間を所定の時間遅らせるように前記テストデータ情報を更新し、前記テスト用システムに対して前記更新後のテストデータ情報に含まれる前記複数のテストデータを入力する、プロセッサと、を含むことを特徴とするテスト装置である。
【発明の効果】
【０００９】
本発明によれば、日々提供されるサービスやＯＳの膨大なパッチに対して、リアルデータを使用した迅速かつ確実な退行テストを実施することができる。
【図面の簡単な説明】
【００１０】
【図１】本実施例における本番環境システムの構成図である。
【図２】本実施例におけるテスト環境システムの構成図である。
【図３】本実施例におけるコンピュータのハードウェア構成図である。
【図４】本実施例におけるテストデータ制御装置のハードウェア構成図である。
【図５】本実施例におけるパケット複製装置のハードウェア構成図である。
【図６】本実施例における出力ログ収集装置のハードウェア構成図である。
【図７】本実施例におけるリアルデータの入力タイミング情報である。
【図８】本実施例におけるＤＢアクセスログ情報を示す図である。
【図９】本実施例におけるテストデータ情報を示す図である。
【図１０】本実施例におけるリアルデータ収集処理を示すフローチャートを示す図である。
【図１１】本実施例におけるテストデータ作成方法を説明したフローチャートを示す図である。
【図１２】本実施例におけるロック衝突やダーティリード発生箇所の削除候補選択処理を説明したフローチャートを示す図である。
【図１３】本実施例におけるロック衝突やダーティリード発生箇所の削除実施処理を説明したフローチャートを示す図である。
【図１４】本実施例における入力タイミング短縮処理を説明したフローチャートを示す図である。
【図１５】本実施例における入力タイミング調整処理を説明したフローチャートを示す図である。
【図１６】本実施例における退行テスト処理を説明したフローチャートを示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について、図面を用いて説明する。
【００１２】
図１は、本実施例における本番環境のシステムの構成を示す図である。本番環境のシステムには、負荷分散装置１０１、ＡＰサーバ（本番用）１０２、１０３、ＤＢサーバ１０４、ＤＢ１０５、パケット複製装置１０６、テストデータ用リポジトリ１０７、出力ログ収集装置１０８、出力ログ用リポジトリ１０９が含まれる。各リポジトリやＤＢは、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ（ＨＤＤ）であっても、ＨＤＤの集合であるストレージ装置であってもよい。負荷分散装置１０１は、ＡＰサーバ（本番用）１０２、ＡＰサーバ（本番用）１０３、パケット複製装置１０６、出力ログ収集装置１０８とＬＡＮ１１１によって接続されている。ＤＢサーバ（本番用）１０４は、ＡＰサーバ（本番用）１０２、ＡＰサーバ（本番用）１０３、ＤＢ（本番用）１０５とＬＡＮ１１１によって接続されている。パケット複製装置１０６は、負荷分散装置１０１、テストデータ用リポジトリ１０７とＬＡＮ１１１によって接続されている。出力ログ収集装置１０８は出力ログ用リポジトリ１０９とＬＡＮ１１１によって接続されている。
【００１３】
図２は、本実施例におけるテスト環境システムの構成を示す図である。テスト環境のシステムには、テストー他制御装置（テスト装置）２０５、ＡＰサーバ（テスト用）２０１、１０２、ＤＢサーバ（テスト用）２０３、ＤＢ（テスト用）２０４、出力結果用リポジトリ２０６、テストデータ用リポジトリ１０７、出力ログ収集装置１０８、出力ログ用リポジトリ１０９が含まれる。テストデータ用リポジトリ１０７、出力ログ収集装置１０８、出力ログ用リポジトリ１０９は、図１と同様である。各リポジトリやＤＢは、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ（ＨＤＤ）であっても、ＨＤＤの集合であるストレージ装置であってもよい。テストデータ制御装置２０５はテストデータ用リポジトリ１０７、出力結果用リポジトリ２０６、ＡＰサーバ（テスト用）２０１、ＡＰサーバ（テスト用）２０２、出力ログ収集装置１０８とＬＡＮ１１１によって接続されている。ＤＢサーバ（テスト用）２０３はＡＰサーバ（テスト用）２０２、ＡＰサーバ（テスト用）２０１、ＤＢ（テスト用）２０４とＬＡＮ１１１によって接続されている。出力ログ収集装置１０８は出力ログ用リポジトリ１０９、テストデータ制御装置２０５とＬＡＮ１１１によって接続されている。
【００１４】
図３は、本実施例におけるＡＰサーバ（本番用）１０２、ＡＰサーバ（本番用）１０３、ＤＢサーバ（本番用）１０４、ＡＰサーバ（テスト用）２０１、ＡＰサーバ（テスト用）２０２、ＤＢサーバ（テスト用）２０３のハードウェア構成を示す図である。コンピュータ３０１は互いに接続関係にあるＣＰＵ３０２とメモリ３０３、入出力Ｉ／Ｆ３０４、ＨＤＤ３０５、ＲＯＭ３０６、ネットワークカード３０７から構成されており、ネットワークカード３０７を通じてＬＡＮ３１１に接続されている。ユーザインタフェースであるディスプレイ３０８、キーボード３０９、マウス３１０は、入出力Ｉ／Ｆ３０４を通じてコンピュータ内プログラムに接続されている。ＨＤＤ３０５あるいはＲＯＭ３０６に格納されたサービスを監視するためのプログラムがメモリ３０３に読み出されＣＰＵ３０２により監視プログラムを実行する。
【００１５】
図４は、本実施例におけるテストデータ制御装置２０５のハードウェア構成を示す図である。なお、本実施例においては、テストデータ制御装置２０５、パケット複製装置１０６、出力ログ収集装置１０８は、物理的に別々の装置として説明しているがこれに限定されるものではない。テストデータ制御装置２０５と、パケット複製装置１０６とが、物理的に同一の装置に実装されてもよい。テストデータ制御装置２０５、パケット複製装置１０６、出力ログ収集装置１０８、とが物理的に同一の装置に実装されてもよい。テストデータ制御装置２０５は、プログラム等を格納するメモリ４００１と、メモリ４００１に格納されたプログラムを読み出して実行するＣＰＵ４００２と、ＬＡＮ１１１と接続するＩ／Ｆ４００３と、を含む。メモリ４００１には、テストデータ抽出プログラム４０１、入力タイミング制御プログラム４０２、テストデータ送信プログラム４０３、出力ログ比較プログラム４０４、出力結果比較プログラム４０５、出力結果受信プログラム４０６、出力ログ抽出プログラム４０７を格納する。以後、プログラムを主語にして処理を記載する場合には、ＣＰＵがメモリに格納されている該プログラムを読み出して実行することにより処理を実行することを示す。
【００１６】
テストデータ抽出プログラム４０１は、テストデータ用リポジトリ１０７から次に入力するべきテストデータを抽出する。入力タイミング制御プログラム４０２は、テストデータ情報を参照し、テストデータ抽出プログラム４０１で抽出したテストデータをいつどこのサーバに対して送信するのかを制御する。テストデータ送信プログラム４０３は、テストデータを各サーバに対して送信する。出力ログ抽出プログラム４０７は、出力ログ用リポジトリ１０９に保存されている各種ログを抽出する。出力ログ比較プログラム４０４は、出力ログ抽出プログラム４０７が抽出したテスト環境システム更新前のログと、テスト環境システム更新後のログを比較する。出力結果受信プログラム４０６は、ＡＰサーバ（テスト用）２０１、ＡＰサーバ（テスト用）２０２から送られてきた結果を受信し、出力結果用リポジトリ２０６に保存する。出力結果比較プログラム４０５は、出力結果用リポジトリ２０６に保存したテスト環境システム更新前の出力結果と、テスト環境システム更新後の出力結果を比較する。各プログラムにより実行される、詳細な処理は、フローチャートにて後述する。
【００１７】
図５は、本実施例におけるパケット複製装置１０６のハードウェア構成を示す図である。パケット複製装置１０６は、プログラム等を格納するメモリ５００１と、メモリ５００１に格納されたプログラムを読み出して実行するＣＰＵ５００２と、ＬＡＮ１１１と接続するＩ／Ｆ５００３と、を含む。メモリ５００１には、パケット複製プログラム５０１、パケット制御プログラム５０２を格納する。パケット複製プログラム５０１は、本番環境システムに対してユーザから送信されたリクエストを複製する。パケット制御プログラム５０２は、上記パケット複製装置１０６上の動作を制御する。
【００１８】
図６は、本実施例における出力ログ収集装置１０８のハードウェア構成を示す図である。出力ログ収集装置１０８は、プログラム等を格納するメモリ６００１と、メモリ６００１に格納されたプログラムを読み出して実行するＣＰＵ６００２と、ＬＡＮ１１１と接続するＩ／Ｆ６００３と、を含む。メモリ６００１には、出力ログ収集プログラム６０１、出力ログ管理プログラム６０２を格納する。出力ログ収集プログラム６０１は、ＡＰサーバ（テスト用）２０１、ＡＰサーバ（テスト用）２０２、ＤＢサーバ（テスト用）２０３から、出力ログを収集する。出力ログ管理プログラム６０２は、出力ログ収集プログラム６０１が収集した出力ログを出力ログ用リポジトリ１０９に保存する。
【００１９】
図７は、本実施例におけるリアルデータの入力タイミング情報を示す図である。入力タイミング情報は、パケット複製装置１０６上で動作するパケット複製プログラム５０１により作成され、テストデータ用リポジトリ１０７に保存される。入力タイミング情報は、セッションＩＤ７０１、リクエストＩＤ７０２、送信元ＩＰ７０３、送信時間７０４から構成される。
【００２０】
例えば、図７の項目１は、セッションＩＤ７０１が１２３ＡＢＣ、リクエストＩＤ７０２がＡＡＡＢＢＢ、送信元ＩＰ７０３が１９２．１６８．１．１０、送信時間７０４が２００９０７０１０１２７５４であるリアルデータを示している。上記セッションＩＤとは、接続を確立してから切断するまでの一連の処理であるセッションを、管理するためにＡＰサーバが発行する管理ＩＤのことである。１つのセッションには、１又は複数のリクエストが含まれる。上記リクエストＩＤとは、ＡＰサーバからＤＢサーバへ送信されるリクエストに含まれる複数ＳＱＬを、リクエストごとに管理するためにＡＰサーバが発行する管理ＩＤのことである。
【００２１】
図８は、本実施例におけるＤＢアクセスログ情報を示す図である。ＤＢアクセスログ情報は、ＤＢサーバ（本番用）１０４で作成され、出力ログ収集装置１０８の出力ログ収集プログラム６０１により収集され、出力ログ収集装置１０８の出力ログ管理プログラム６０２によって出力ログ用リポジトリ１０９に保存される。ＤＢアクセスログ情報は、リクエストＩＤ８０１、内容８０２、テーブル８０３、種類８０４、アクセス時間８０５から構成される。内容８０２は、リクエストの処理内容を示す。テーブル８０３は、リクエストのアクセス先テーブルを示す。種類８０４は、リクエスの処理の種類を示す。更新は、例えば、ライト処理を示し、参照は、例えば、リード処理を示す。ＤＢアクセス情報のリクエストＩＤ８０１と内容８０２のマッピングについては、ＤＢサーバとＡＰサーバの連携によって収集する。
【００２２】
例えば、図８の項目１は、リクエストＩＤ９０１がＡＡＡＢＢＢ、内容９０２がＤＢへのアクセス開始、テーブル８０３がＡ、種類８０４が更新、アクセス時間８０５が２００９０７０１２７５４であるＤＢアクセスログを示している。
【００２３】
図９は、本実施例におけるテストデータ情報を示す図である。テストデータ制御装置２０５上で動作するテストデータ抽出プログラム４０１によってテストデータ用リポジトリ１０７から抽出したリアルデータの入力タイミング情報と、テストデータ制御装置２０５上で動作する出力ログ抽出プログラム４０７によって出力ログ用リポジトリ１０９から抽出したＤＢアクセスログ情報を、テストデータ制御装置２０５上で動作する入力タイミング制御プログラム４０２によって入力データ単位で情報を整理することにより作成され、テストデータ用リポジトリ１０７に格納されている。このデータベースは、セッションＩＤ９０１、リクエストＩＤ９０２、入力タイミング９０３、種類９０４、情報９０５、アクセス開始９０６、アクセス終了９０７、送信先９０８から構成されている。入力タイミング１００３、アクセス開始１００６や、アクセス終了１００７に示される時間は、項目１の入力タイミング（０秒）からの経過時間である。また、アクセス開始９０６は、リクエストを入力してから実際にアクセスを開始するまでに時間がかかるため、入力タイミングより遅れて開始される。
【００２４】
例えば、図９の項目１は、セッションＩＤ９０１が１２３ＡＢＣ、リクエストＩＤ９０２がＡＡＡＢＢＢ、入力タイミング９０３が０秒後、種類９０４が更新、情報９０５がＡ、アクセス開始９０６が２秒後、アクセス終了９０７が４秒後、送信先９０８がＡＰサーバのテストデータを示している。
【００２５】
「リアルデータ収集時の動作」
図１０は、本実施例における、リアルデータ収集処理を示すフローチャートを示す図である。本処理は、パケット複製装置１０６及び出力ログ収集装置１０８により実行される。
【００２６】
ステップ１００１では、パケット制御プログラム５０２がリアルデータの収集を開始する。
【００２７】
ステップ１００２では、ＤＢ（本番用）１０５のＤＢ状態をＤＢ（テスト用）２０４にコピーする。具体的には、ＤＢサーバ（本番用）１０４をＤＢサーバ（テスト用）２０３に接続し、ＤＢサーバ（本番用）１０４のコントローラが、ＤＢ（本番用）１０５の記憶装置に記憶されているデータを、ＤＢサーバ（テスト用）２０３に対して送信する。そして、ＤＢサーバ（テスト用）２０３のコントローラが、ＤＢサーバ（本番用）１０４から送られるデータを受信し、ＤＢ（テスト用）２０４の記憶装置に格納する。
【００２８】
ステップ１００３では、パケット複製装置１０６がユーザからのリクエストを受信すると、パケット制御プログラム５０２が、リアルデータ収集の終了フラグを確認する。該終了フラグの設定方法として、リアルデータ収集した時間、収集したリクエストの種類数、受信数によって設定するか否かを決定する方法や、ユーザ（管理者）により設定する方法などがある。本実施例においては、該終了フラグの設定方法を限定しない。パケット制御プログラム５０２は、終了フラグが設定されていない場合は、リアルデータの収集を続行するため、ステップ１００４へ進む。パケット制御プログラム５０２は、終了フラグが設定されている場合は、リアルデータの収集を終了するため、ステップ１０１０へ進む。ユーザから受信するリクエストは、例えばＨＴＴＰリクエストであるが、これに限定されるものではない。
【００２９】
ステップ１００４では、パケット複製装置１０６が、ユーザからのリクエストを受信する。
【００３０】
ステップ１００５では、パケット複製装置１０６のパケット複製プログラム５０１が、ステップ１００４で受信したリクエストを複製する。ここで、ユーザより受信したリクエストをオリジナルリクエストと呼び、複製したリクエストをレプリカリクエストと呼ぶ。
ステップ１００６では、パケット複製装置１０６が、オリジナルリクエストを負荷分散装置１０１へ送信する。
【００３１】
ステップ１００７では、パケット複製装置１０６のパケット制御プログラム５０２が、ステップ１００５で複製したレプリカリクエストをテストデータ用リポジトリ１０７に保存する。本発明では、ステップ１００７にて保存した上記レプリカリクエストを利用してテストデータを作成する。
【００３２】
ステップ１００８では、パケット複製装置が、ＡＰサーバ（本番用）１０２、ＡＰサーバ（本番用）１０３から返ってきたレスポンスを受信し、パケット制御プログラム５０２がレスポンスに含まれるセッションＩＤを、セッションを取り扱うメソッドにより取得する。ただし、セッションＩＤの取得方法はこの方法に限定されない。
【００３３】
ステップ１００９では、パケット制御プログラム５０２がテストデータ用リポジトリ１０７に保存されているリアルデータの入力タイミング情報を更新する。
【００３４】
ステップ１０１０では、リアルデータの収集を終了する。
【００３５】
ステップ１０１１では、出力ログ収集装置１０８の出力ログ収集プログラム６０１がオリジナルデータを処理する際の、ＡＰサーバ（本番用）１０２、ＡＰサーバ（本番用）１０３、ＤＢサーバ（本番用）１０４の出力するログを収集し、出力ログ管理プログラム６０２が収集した出力ログを出力ログ用リポジトリ１０９に保存し、ＤＢアクセスログ情報を更新する。
【００３６】
「テストデータ作成時の動作」
図１１は、本実施例における、テストデータ作成処理の手順を示すフローチャートである。本処理は、テストデータ制御装置と出力ログ収集装置により実行される。
ステップ１１００では、テストデータ制御装置２０５のテストデータ入力タイミング制御プログラム４０２が、リアルデータの入力タイミング情報とＤＢアクセスログ情報の突合せて、テストデータ情報を作成する。
【００３７】
ステップ１１０１では、テストデータ制御装置２０５がＤＢ（本番用）１０５上で発生するダーティリードもしくはロック衝突などの「アクセス障害」の原因となるＤＢアクセスを削除する。詳細な削除手順については、図１２のロック衝突やダーティリード発生箇所の削除候補選択の手順を示すフローチャートと、図１３のロック衝突やダーティリード発生箇所の削除実施の手順を示すフローチャートで説明する。
【００３８】
ステップ１１０２では、テストデータの入力タイミングを短縮する。詳細な短縮手順については、図１４の入力タイミング短縮の手順を示すフローチャートで説明する。
【００３９】
ステップ１１０３では、テストデータ制御装置２０５のコントローラが、テストデータ情報を参照して、ＡＰサーバ（テスト用）２０１、ＡＰサーバ（テスト用）２０２にテストデータを送信する。テストデータは、１１０１及び１１０２にて更新したテストデータを使用する。
【００４０】
ステップ１１０４では、テストデータ制御装置２０５のテストデータ入力タイミング制御プログラム４０２が、ステップ１１０３にて、ダーティリードもしくはロック衝突が発生したかどうか調べる。ダーティリードもしくはロック衝突が発生した場合には、ステップ１１０５へ進む。ダーティリードもしくはロック衝突が発生していなければ、ステップ１１０７へ進む。
【００４１】
ステップ１１０５では、テストデータ制御装置２０５のテストデータ入力タイミング制御プログラム４０２が、上記ダーティリードもしくはロック衝突が発生したＤＢアクセスに係わるテストデータの入力タイミングを遅らせるようにテストデータ情報を更新する。詳細な手順については、図１５の入力タイミング調整の手順を示すフローチャートで説明する。
【００４２】
ステップ１１０６では、再度最初からテストを実行する。
【００４３】
ステップ１１０７では、出力ログ収集装置１０８上の出力ログ収集プログラム６０１が、ＡＰサーバ（テスト用）２０１、ＡＰサーバ（テスト用）２０２、ＤＢサーバ（テスト用）２０３が出力するログを収集し、出力ログ管理プログラム６０２が収集した出力ログを出力ログ用リポジトリ１０９に保存する。
【００４４】
ステップ１１０８では、テストデータ制御装置２０５上で動作する出力結果受信プログラム４０６が、ＡＰサーバ（テスト用）２０１、ＤＢサーバ（テスト用）２０３からの出力結果を受信し、上記出力結果を出力結果用リポジトリ２０６に保存する。
【００４５】
図１２は、本実施例におけるアクセス障害の削除候補選択処理の手順を示すフローチャートである。
【００４６】
ステップ１２０１では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、ＤＢアクセス情報において、ＤＢへのアクセス時間が重複し、同一のＤＢのテーブルへのアクセスである、ＤＢアクセスを発行するリクエストの組を検索する。ＤＢアクセスは、上述したリクエストをもとに実行されるアクセスである。
【００４７】
ステップ１２０２では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、ステップ１２０１で検索した組を順に選択する。ステップ１２０１で検索した組を選択する順によって作成されるテストデータは変化する。しかし、選択する順によらず、ロック衝突やダーティリードが発生せず、テスト時間を短縮したテストデータを作成することができる。選択する組があればステップ１２０３へ進み、選択する組がなければ終了する。
【００４８】
ステップ１２０３では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、ステップ１２０２で選択した組が「Ｗ、Ｗ」の組合せかどうか調べる。ここで、Ｗとはライト処理を示し、更新を含むＤＢアクセスである。つまり、選択されたＤＢアクセスの組が、ライトアクセスとライトアクセスの組であることを示す。もし、「Ｗ、Ｗ」の組合せであればステップ１２０４へ進む。「Ｗ、Ｗ」の組合せでなければステップ１２０９へ進む。
【００４９】
ステップ１２０４では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、ステップ１２０２で選択した組のうち、ＤＢアクセスの遅い方のテストデータの入力タイミングを、２つのＤＢアクセスのＤＢアクセス時間が被らないように遅らせる。つまり、アクセス開始時間の遅い一方のＤＢアクセスの開始時間を、他方のＤＢアクセスの終了時間後にする変更をするように入力タイミングを遅らせる。入力タイミングを遅らせる時間は、例えば、一方のＤＢアクセスの開始時間と、他方のＤＢアクセスの終了時間との差である。そして、テストデータ情報を更新する。ただし、更新前のテストデータ情報もバックアップファイルとして一時的に保存しておく。このように、他方のリクエスト入力時間を遅らせることにより、アクセス障害の発生を回避することができる。
【００５０】
ステップ１２０５では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、更新後のテストデータ情報を用いたテスト時に、ダーティリード、ロック衝突、同一セッションのテストデータ間でセッションＩＤが引き継げないなどの問題が生じるかを確認する。本実施例では、これらの障害をまとめてアクセス障害と呼ぶ。例えば、更新後のテストデータを確認し、入力タイミングを変更したＤＢアクセスと、他ＤＢアクセスのアクセス時間を比較してダーティリード、ロック衝突が起こる可能性があるか否かを確認する。もし、該問題が発生するのであれば、ステップ１２０６へ進む。該問題が発生しなければ、ステップ１２０４で保存した更新前のテストデータ情報のバックアップファイルを破棄し、ステップ１２０２へ戻る。
【００５１】
ステップ１２０６では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、ステップ１２０４で保存した更新前のテストデータ情報のバックアップファイルをテストデータ情報とする。そして、ステップ１２０４で更新したテストデータ情報を破棄する。
【００５２】
ステップ１２０７では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、ステップ１２０２で選択したＤＢアクセスの組を第１の削除候補に追加する。
ステップ１２０８は、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、テストデータ情報を参照して、第１の削除候補に追加したＤＢアクセスと、同一のセッションＩＤをもつＤＢアクセスを第２の削除候補に追加する。
【００５３】
ステップ１２０９では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、「Ｗ、Ｒ」の組合せかどうか調べる。もし「Ｗ、Ｒ」の組合せであればステップ１２１０へ進み、「Ｗ、Ｒ」の組合せでなければ、ステップ１２０２へ戻る。上記Ｒとは、参照（リード）のみのＤＢアクセスのことである。
【００５４】
ステップ１２１０は、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、「Ｗ、Ｒ」の組に含まれる参照（リード）のみのアクセスと同一セッションＩＤのＤＢアクセスが、参照（リード）アクセスのみであるかどうか調べる。もし、参照アクセスと同一セッションＩＤのＤＢアクセスが全て参照アクセスであれば、ステップ１２１１へ進み、参照アクセスと同一セッションＩＤのＤＢアクセスが参照アクセスでなければ、ステップ１２１２へ進む。
【００５５】
ステップ１２１１は、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、「Ｗ、Ｒ」の組に含まれる参照（リード）のみのアクセスと、該参照アクセスと同一セッションＩＤの参照アクセスを、ＤＢアクセスをテストデータ情報より削除する。ここで、更新アクセス（Ｗ）とアクセス時間が重複する参照アクセスと、該参照アクセスと同一セッションの参照アクセスをテストデータより削除することにより、その後の更新アクセスや参照アクセスに影響を与えずに、ダーティリードなどのアクセス障害を回避することがでる。
【００５６】
ステップ１２１２は、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、ステップ１２０２で選択したＤＢアクセスの組を第１の削除候補に追加する。
ステップ１２１３は、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、テストデータ情報を参照して、第１の削除候補に追加したＤＢアクセスと、同一のセッションＩＤをもつＤＢアクセスを第２の削除候補に追加する。
【００５７】
図１３は、本実施例におけるアクセス障害発生箇所の削除処理の手順を示すフローチャートである。
【００５８】
ステップ１３０１では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、図１２で作成した第１の削除候補と第２の削除候補の両方の削除候補に含まれるＤＢアクセスを、第２の削除候補からから削除する。
【００５９】
ステップ１３０２では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、第１の削除候補に含まれるＤＢアクセスの組に対して、同一のＤＢアクセスが入っている二つのＤＢアクセスの組は同一グループである、という条件によりグルーピングする。例えば、「Ｗ１、Ｗ２」の組と、「Ｗ１、Ｗ３」の組は同一のグループにグルーピングされる。「Ｗ１、Ｗ２」の組と、「Ｗ４、Ｗ３」の組は同一のグループにグルーピングされない。
【００６０】
ステップ１３０３では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、第２の削除候補に含まれる各ＤＢアクセスをそれぞれ一つのグループとする。例えば、第２の削除候補に「Ｒ１、Ｗ４」が含まれる場合には、「Ｒ１」と「Ｗ４」がそれぞれグループとなる。
【００６１】
ステップ１３０４では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、ステップ１３０２、ステップ１３０３にてグルーピングされたグループを順に選択する。上記選択順に関しては、どのようなアルゴリズムを使用しても結果は変わらない。もし、選択するグループがあればステップ１３０５へ進み、選択するグループがなければ終了する。
【００６２】
ステップ１３０５では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、ステップ１３０４で選択したグループ内に含まれる更新アクセスからＳＱＬを生成する。ＳＱＬはＤＢにアクセスするための言語である。
【００６３】
ステップ１３０６では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、生成したＳＱＬで正しくＤＢ状態を復元できるかどうか調べる。復元できるか否かを調査する方法の一例として以下の方法がある。まず、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、ＤＢサーバ（テスト用）上に生成したＳＱＬを発行する直前のＤＢテーブルの状態を復元した復元調査用のＤＢテーブルを作成する。そして、上記復元調査用のＤＢテーブルに対して、上記ＳＱＬを発行した後のＤＢテーブル状態と、元の更新アクセス群を実行した後のＤＢテーブル状態とを比較する。調査方法としては、生成したＳＱＬが正しくＤＢ状態を復元できるかどうかを調査できれば良く、上記調査方法には限定されない。ＤＢにおいて、アクセスの排他制御などを実行している場合には、アクセス時間が重複するアクセスが複数存在しても生成したＳＱＬにより正しくＤＢ状態を復元できる可能性があるため、正しくＤＢ状態を復元できるかどうか調べる処理を実行する。もし生成したＳＱＬにより、ステップ１３０４で選択されたグループのＤＢアクセス前のＤＢ状態から、正しくＤＢアクセス後のＤＢ状態を復元できる場合は、ステップ１３０７へ進み、生成したＳＱＬで正しくＤＢ状態を復元できない場合は、ステップ１３０８へ進む。このように、アクセス時間が重複するテストデータをＳＱＬに変換することにより復元可能な場合には、アクセス障害が発生しないことを事前に確認することができる。さらに、リクエスト入力時間を変更しないため、他のテストデータに対して影響を与えないでテストを実施することが可能となる。
【００６４】
ステップ１３０７では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、ステップ１３０４で選択したグループのＤＢアクセスをテストデータ情報上から全て削除し、代わりにステップ１３０５で生成したＳＱＬをテストデータとして登録する。
【００６５】
ステップ１３０８では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、ステップ１３０４で選択したグループ以前（又は、以後）のテストデータを全てテストデータ情報から削除する。ステップ１３０４で選択したグループの前後によりＤＢに対してアクセス障害が発生しためである。
【００６６】
図１４は、本実施例において入力タイミング短縮処理の手順を示すフローチャートである。
【００６７】
ステップ１４０１では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、テストデータの各ＤＢアクセスをアクセス順に選択する。もし、選択していないＤＢアクセスがあれば上記ＤＢアクセスを選択してステップ１４０２へ進み、選択していないＤＢアクセスがなければ終了する。
【００６８】
ステップ１４０２では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、ステップ１４０１で選択したＤＢアクセスに係わるテストデータのＡＰサーバでの処理時間を取得する。
【００６９】
ステップ１４０３は、ステップ１４０２で取得したＡＰサーバでの処理時間を使用して、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、１４０１にて選択したＤＢアクセスの開始時間と、直前のＤＢアクセスの終了時間との時間間隔を求め、Ｔ１とする。
【００７０】
ステップ１４０４は、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、ステップ１４０１で選択したＤＢアクセスと同一のリクエストＩＤを持つＤＢアクセスを全て選択する。
【００７１】
ステップ１４０５では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、ステップ１４０１で選択したＤＢアクセス及びステップ１４０４で選択したＤＢアクセスと、同一テーブルへのＤＢアクセスで、かつＤＢ更新を伴うＤＢアクセスをのうち、ステップ１４０１で選択したＤＢアクセス及びステップ１４０３で選択したＤＢアクセスに含まれる各々ＤＢアクセスの直近のＤＢアクセスを選択する。
【００７２】
ステップ１４０６は、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、ステップ１４０２で取得したＡＰサーバでの処理時間を使用して、ステップ１４０１とステップ１４０４にて選択したＤＢアクセスの各々のアクセス開始時間と、直近の同一テーブルへの更新アクセスの終了時間との時間間隔（Ｔ２）を求める。
【００７３】
ステップ１４０７では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、ステップ１４０１とステップ１４０４にて選択したＤＢアクセスの各々のアクセス開始時間を、時間間隔Ｔ１と時間間隔Ｔ２のうち最も小さい時間間隔分だけ前にずらす。このように時間間隔を前にずらすことにより、アクセス障害を発生させずに、テスト時間を短縮することができる。
【００７４】
ステップ１４０８は、テストデータ制御装置２０５の入力タイミング制御プログラム４０２がステップ１４０１で選択したＤＢアクセスに係わるテストデータと同一セクションＩＤを持つ各テストデータの入力タイミングと、ＤＢアクセス終了時間を確認してセッションＩＤを引き継げないというセッションエラーが発生するかどうかを調べる。もし、セッションエラーが発生するのであればステップ１４０９へ進み、セッションエラーが発生しないのであればステップ１４０１へ戻る。
【００７５】
ステップ１４０９では、テストデータ制御装置２０５の入力タイミング制御プログラム４０２が、セッションエラーが発生しないように所定の時間分だけ、ステップ１４０１で選択したＤＢアクセスに係わるテストデータの入力タイミングを遅らせるように、テストデータ入力タイミング情報情報を更新する。
【００７６】
図１５は、本実施例において入力タイミング調整処理の手順を示すフローチャートである。
【００７７】
ステップ１５０１は、テストデータ制御装置２０５のテストデータ入力タイミング制御装置４０２は、テストデータ制御装置２０５を擬似ブラウザとして稼動させ、テスト環境システムに作成したテストデータを入力し、上記テスト中にダーティリードやロック衝突、同一セッションＩＤを持つ入力データ間でセッションＩＤを引き継げないというセッションエラーなどの問題が発生するかどうかを調べる。もし、上記問題が発生すれば、ステップ１５０２へ進み、上記問題が発生しなければ終了する。
【００７８】
ステップ１５０２では、テストデータ制御装置２０５のテストデータ入力タイミング制御装置４０２は、上記問題が発生したＤＢアクセスの組や、テストデータの組のうち、ＤＢアクセスや入力タイミングが遅い方のテストデータを選択する。
【００７９】
ステップ１５０３では、テストデータ制御装置２０５のテストデータ入力タイミング制御装置４０２は、ステップ１５０２で選択したテストデータ以降の入力タイミングを上記問題が発生した時間分だけ遅らせるように、テストデータ入力タイミング情報情報を更新する。ステップ１５０４ではＤＢを入力タイミング調整開始前の状態に復元する。ステップ１５０５では入力タイミング調整をリスタートする。
【００８０】
「テスト時の動作」
図１６は、本実施例において退行テスト処理の手順を示すフローチャートである。
ステップ１６０１では、テスト環境システムに対して、パッチの適用やＡＰサーバの更新など、退行テストを行いたい項目を更新する。
【００８１】
ステップ１６０２では、テストデータ制御装置２０５のテストデータ入力タイミング制御装置４０２は、テストデータ制御装置２０５を擬似ブラウザとして稼動させ、テスト環境システムにテストデータを入力する。
【００８２】
ステップ１６０３では、テストデータ制御装置２０５の出力ログ比較プログラム４０４と、出力結果比較プログラム４０５が、ステップ１１０７、ステップ１１０８で保存した出力ログ・出力結果とステップ１６０２で得られた出力ログ・出力結果をで比較する。上記比較手法については、既存の手法を使用する。
【００８３】
以上、添付図面を参照しながら本発明にかかるリアルデータを利用したテストデータの作成方法とテスト方法の最適な実施形態について説明したが、本発明の実施形態はかかる例に限定されない。
【符号の説明】
【００８４】
１０１…負荷分散装置、１０２…ＡＰサーバ（本番用）、１０３…ＡＰサーバ（本番用）、１０４…ＤＢサーバ（本番用）、１０５…ＤＢ（本番用）、１０６…パケット複製装置、１０７…テストデータ用リポジトリ、１０８…出力ログ収集装置、１０９…出力ログ用リポジトリ、１１１…ＬＡＮ、１０７…テストデータ用リポジトリ、１０９…出力ログ用リポジトリ、２０１…ＡＰサーバ（テスト用）、２０２…ＡＰサーバ（テスト用）、２０３…ＤＢサーバ（テスト用）、２０４…ＤＢ（テスト用）、２０５…テストデータ制御装置、２０６…出力結果用リポジトリ、３０１…コンピュータ、３０２…ＣＰＵ、３０３…メモリ、３０４…入出力Ｉ／Ｆ、３０５…ＨＤＤ、３０６…ＲＯＭ、３０７…ネットワークカード、３０８…ディスプレイ、３０９…キーボード、３１０…マウス、４０１…テストデータ抽出プログラム、４０２…入力タイミング制御プログラム、４０３…テストデータ送信プログラム、４０４…出力ログ比較プログラム、４０５…出力結果比較プログラム、４０６…出力結果受信プログラム、４０７…出力ログ抽出プログラム、５０１…パケット受信プログラム、５０２…パケット複製プログラム、５０３…パケット送信プログラム、５０４…パケット制御プログラム、６０１…出力ログ収集プログラム、６０２…出力ログ管理プログラム
【図１】
2011086083.tif 000003
【図２】
2011086083.tif 000004
【図３】
2011086083.tif 000005
【図４】
2011086083.tif 000006
【図５】
2011086083.tif 000007
【図６】
2011086083.tif 000008
【図７】
2011086083.tif 000009
【図８】
2011086083.tif 000010
【図９】
2011086083.tif 000011
【図１０】
2011086083.tif 000012
【図１１】
2011086083.tif 000013
【図１２】
2011086083.tif 000014
【図１３】
2011086083.tif 000015
【図１４】
2011086083.tif 000016
【図１５】
2011086083.tif 000017
【図１６】
2011086083.tif 000018