(57)【要約】【課題】最小限のテストケースから様々なバリエーションのテストケースを生成するテストデータ生成用プログラム、および装置を提供する。【解決手段】上記課題を解決するために、テストデータ生成装置１００に、テストケースを記憶するテストケース記憶部１０１と、新たなテストケースを生成するテスト入力データ生成部１０２と、テストケースにしたがってテスト対象のプログラム（以下、「アプリケーション１１０」という）を実行させるプログラム実行部１０３と、新たなテストケースを生成するテストケース生成部１０４と、を備える。【選択図】図１
2009163609.tif 000002
【特許請求の範囲】
【請求項１】
所望のプログラムの動作をテストするために使用する入出力データを生成するプログラムにおいて、
前記プログラムの一連の動作に必要なデータであるテスト入力データと、該テスト入力データに応じて前記プログラムの実行の結果得られるテスト出力データと、で構成される既存テストケースを記憶するテストケース記憶部から、任意の既存テストケースを取得し、該既存テストケースのテスト入力データと異なる新たなテスト入力データを生成するテスト入力データ生成処理と、
該新たなテスト入力データを前記プログラムに与えて前記一連の動作を実行させるプログラム実行処理と、
該プログラムの実行結果から新たなテスト出力データを取得して、前記既存テストケースのテスト出力データと比較し、該比較の結果に所定の差異を検出すると、前記新たなテスト入力データと前記新たなテスト出力データとで構成する新たなテストケースを生成し、該テストケースを前記テストケース記憶部に記憶するテストケース生成処理と、
を情報処理装置に実行させるプログラム。
【請求項２】
前記テストケース生成処理は、前記プログラムの実行の結果表示される所定の表示画面が一方には存在し他方には存在しない場合に、前記所定の差異が存在すると判断する、
ことを特徴とする請求項１に記載のプログラム。
【請求項３】
前記テストケース生成処理は、前記一連の動作内に、前記プログラムの実行の結果表示される所定の表示項目の出現回数が異なる場合に、前記所定の差異が存在すると判断する、
ことを特徴とする請求項１に記載のプログラム。
【請求項４】
所望のプログラムの動作をテストするために使用する入出力データを生成する方法において、
前記プログラムの一連の動作に必要なデータであるテスト入力データと、該テスト入力データに応じて前記プログラムの実行の結果得られるテスト出力データと、で構成される既存テストケースを記憶するテストケース記憶部から、任意の既存テストケースを取得し、該既存テストケースのテスト入力データと異なる新たなテスト入力データを生成するテスト入力データ生成処理と、
該新たなテスト入力データを前記プログラムに与えて前記一連の動作を実行させるプログラム実行処理と、
該プログラムの実行結果から新たなテスト出力データを取得して、前記既存テストケースのテスト出力データと比較し、該比較の結果に所定の差異を検出すると、前記新たなテスト入力データと前記新たなテスト出力データとで構成する新たなテストケースを生成し、該テストケースを前記テストケース記憶部に記憶するテストケース生成処理と、
を実行する方法。
【請求項５】
所望のプログラムの動作をテストするデータを生成するテストデータ生成装置において、
前記プログラムの一連の動作に必要なデータであるテスト入力データと、該テスト入力データに応じて前記プログラムの実行の結果得られるテスト出力データと、で構成される既存テストケースを記憶するテストケース記憶部と、
前記テストケース記憶部から任意の既存テストケースを取得し、該既存テストケースのテスト入力データと異なる新たなテスト入力データを生成するテスト入力データ生成部と、
該新たなテスト入力データを前記プログラムに与えて前記一連の動作を実行させるプロ
グラム実行部と、
該プログラムの実行結果から新たなテスト出力データを取得して、前記既存テストケースのテスト出力データと比較し、該比較の結果に所定の差異を検出すると、前記新たなテスト入力データと前記新たなテスト出力データとで構成する新たなテストケースを生成し、該テストケースを前記テストケース記憶部に記憶するテストケース生成部と、
を備えるテストデータ生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアのテストに使用するテストデータを生成するプログラム、および装置に関する。
【背景技術】
【０００２】
一般に、Ｗｅｂアプリケーションなどのソフトウェアを開発する場合、開発段階に応じてテスト作業を行なう。この時、テスト仕様書を作成して、テストをどのような手順で行なうかを決めてからテスト作業を行なう。
【０００３】
例えば、一定の機能毎にテストを行なう単体テスト、それらのモジュールを結合して実現する機能毎にテストを行なう結合テスト（統合テスト）、ソフトウェア全体を動作させて行なうシステムテスト等のテストがある。
【０００４】
テスト仕様書は、開発者が手作業で、または自動化作成ツール等のプログラムを利用して作成する。このテスト仕様書には、アプリケーションに対する入力データや操作（以下、「テスト入力データ」という）と、その入力や操作を行なったときに得られる結果（以下、「テスト出力データ」という）を記述する。
【０００５】
例えば、オンラインショッピングや電子掲示板などウェブ機能を利用したアプリケーション（以下、「Ｗｅｂアプリケーション」という）におけるテスト入力データとしては、テキストボックス等に入力するテキスト情報、チェックボックスやラジオボタン、リストボックス等の選択的入力項目、ボタンの押下等で発生するイベント情報、テスト開始前のデータベースやファイル等の状態（永続化情報）などが考えられる。
【０００６】
また、テスト出力データとしては、遷移画面の種別、表示するテキスト情報、画面を構成する部品であるコンポーネント情報、イメージや音声等のメディア情報、永続化情報、フォントのサイズや色などが考えられる。
【０００７】
テストは一般的には図１７のように行なわれる。すなわち、上述のテスト仕様書に基づいて、テスト入力データ１７０１をＷｅｂブラウザを介して入力し、アプリケーション１７０２を動作させる。そして、アプリケーション１７０２が出力する情報がテスト出力データ１７０３と一致するか否かを目視で、または自動化ツールを利用して確認する。特許文献１には、入力データを自動生成してテストを行なうソフトウェア作成方法について開示されている。
【０００８】
ここで、通常の（Ａｊａｘ等の特殊な要素を含まない）Ｗｅｂアプリケーションにおけるテスト入力データ１７０１としては、以下のようなものが挙げられる。
１．Ｗｅｂブラウザ画面への入力項目
（１）テキスト情報
（２）選択情報（チェックボックス、ラジオボタン、リストボックス等）
（３）ＨＴＴＰ通信を発生させるイベント（ボタンの押下等）
２．永続化情報
（１）データベースの初期化
（２）Ｗｅｂアプリケーションの設定ファイル
テスト仕様書としてテスト入力データ１７０１を作成する際には、これらのデータを組み合わせて作成する。そして、例えば、テスト入力データ１７０１を用いて、以下のようにテストが行なわれる。
【０００９】
ＳＴＥＰ１．テスト時に必要となる設定ファイルを用意するとともに、テスト開始前のデータベースに初期値を投入する。
ＳＴＥＰ２．Ｗｅｂアプリケーションのトップページに遷移する。そして、当該画面に対してテキスト情報や選択情報を入力し、ボタンの押下等により次のページに遷移する。
【００１０】
ＳＴＥＰ３．更に遷移先のページにおける画面に対しても、同様にテキスト情報や選択情報を入力し、ボタンの押下等により次のページに遷移する。同様の処理を繰返して、テスト完了のページまで遷移する。
【００１１】
このＳＴＥＰ１．〜ＳＴＥＰ３．の作業をテストケースといい、テスト仕様書には複数のテストケースが記述される。
また、通常の（Ａｊａｘ等の特殊な要素を含まない）Ｗｅｂアプリケーションにおけるテスト出力データ１７０３としては、以下のようなものが挙げられる。
【００１２】
１．Ｗｅｂブラウザ画面への出力項目
（１）画面名（テンプレートの種別）
（２）テキスト情報（文字列内容、色、サイズ、位置）
（３）コンポーネント情報（コンポーネント種別、文字列、状態）
（４）グラフィックス、音声その他のメディア情報
２．永続化情報
（１）データベースの結果値
（２）ログ情報
３．その他
（１）コードカバレッジ（プログラムの実行範囲）
（２）メール等（ＨＴＴＰ以外の通信）
これらのテスト出力データ１７０３は、Ｗｅｂブラウザの画面やデータベースが更新されたタイミングでその正誤が判断される。また、コードカバレッジやメールについては、テスト入力データ１７０１による画面遷移がテスト完了の画面まで進んだタイミングでその正誤が判断される。
【００１３】
ここで、テストケースを作成する際には、テスト入力データをできるだけ多く作成し、各テストケースの実行結果がテスト出力データと一致することをテストしていく必要がある。ただし、単純なテスト入力データを数多く用意すればよいのではなく、最小限のテスト入力データで最大のテストパターンを実行できることが望ましい。「良いテスト入力データ」の条件として、以下のようなものが挙げられる。
【００１４】
１．多くのバグを出現させることができる。
２．他のテストケースと異なるテスト出力データを発生させることができる。
３．コードカバレッジを向上させることができる（他のテストケースで実行できていないコードを実行させることができる）。
【００１５】
従来、テスト入力データを自動的に作成する場合、プログラムソース等から予想されるテスト結果を列挙し、各テスト結果を引き起こすテスト入力データを作成している。そして、テスト実行時に、作成したテスト入力データをＷｅｂブラウザやデータベースに投入している。
【００１６】
これらの作業を自動化するツールとしては、テスト実行時の入力を自動化するスクリプト言語が存在する。テスト入力データをスクリプトとして用意すると、テストケースのバリエーションを増やす際に、変更のある箇所だけを修正すればよいため、効率的にテスト
ケースを増やすことができる。
【００１７】
また、テスト入力データを自動生成するテストデータ作成支援ツールとしては、「ＳＩＭＰＬＩＡ  ＴＦ−ＬＩＮＤＡ」等が存在している。これらのツールは、生成のアルゴリズムとして乱数や連続値を利用し、ユーザの指定した文字数、文字種別等の条件で大量のテストデータを生成することができる。
【００１８】
しかし、上述のスクリプト言語を用いた場合、テスト入力データのバリエーションについては手動で作成する必要がある。そのため、テスト入力データの規模が大きくなると、作業量も増大するため、スクリプトの作成が困難になる。また、人手でテスト入力データを作成することになるので、テストパターンに漏れが生じる恐れがある。
【００１９】
また、上述の「ＳＩＭＰＬＩＡ  ＴＦ−ＬＩＮＤＡ」のようなテストデータ作成支援ツールにおいても、あらかじめ決められたテスト項目を網羅するようにテスト入力データを生成するのが一般的であり、上述した「良いテスト入力データ」を得ることは難しい。
【特許文献１】特開平１１−１０２２８８号公報
【発明の開示】
【発明が解決しようとする課題】
【００２０】
本発明は、上述した問題に鑑みてなされたものであり、その解決しようとする課題は、最小限のテストケースから様々なバリエーションのテストケースを生成するテストデータ生成用プログラム、および装置を提供することである。
【課題を解決するための手段】
【００２１】
上記課題を解決するために、本テストデータ用プログラムは、所望のプログラムの動作をテストするために使用する入出力データを生成するプログラムにおいて、前記プログラムの一連の動作に必要なデータであるテスト入力データと、該テスト入力データに応じて前記プログラムの実行の結果得られるテスト出力データと、で構成される既存テストケースを記憶するテストケース記憶部から、任意の既存テストケースを取得し、該既存テストケースのテスト入力データと異なる新たなテスト入力データを生成するテスト入力データ生成処理と、該新たなテスト入力データを前記プログラムに与えて前記一連の動作を実行させるプログラム実行処理と、該プログラムの実行結果から新たなテスト出力データを取得して、前記既存テストケースのテスト出力データと比較し、該比較の結果に所定の差異を検出すると、前記新たなテスト入力データと前記新たなテスト出力データとで構成する新たなテストケースを生成し、該テストケースを前記テストケース記憶部に記憶するテストケース生成処理と、を情報処理装置に実行させるプログラムである。
【００２２】
本プログラムを情報処理装置に実行させると、テストケース生成処理により、テスト対象のプログラムの実行結果得られる新たなテスト出力データと、既存テストケースのテスト出力データと比較し、比較の結果に所定の差異が検出される場合のみ、新たなテスト入力データと新たなテスト出力データとで構成する新たなテストケースを生成される。
【００２３】
その結果、例えば、１つのテストケースから様々なバリエーションのテストケースを容易に生成することが可能となる。
【発明の効果】
【００２４】
以上に説明したように、本発明によると、最小限のテストケースから様々なバリエーションのテストケースを生成するテストデータ生成用プログラム、および装置を提供することが可能となる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明の実施形態について、図１〜図１６に基づいて説明する。
図１は、本実施例に係るテストデータ生成装置１００の概要を説明する図である。
図１に示すテストデータ生成装置１００は、テストケースを記憶するテストケース記憶部１０１と、新たなテストケースを生成するテスト入力データ生成部１０２と、テストケースにしたがってテスト対象のプログラム（以下、「アプリケーション１１０」という）を実行させるプログラム実行部１０３と、新たなテストケースを生成するテストケース生成部１０４と、を備える。なお、図示するアプリケーション１１０には、アプリケーション実行手段を含む。
【００２６】
テストケース記憶部１０１は、アプリケーション１１０の一連の動作に必要なテスト入力データと、当該テスト入力データに応じてアプリケーション１１０の実行の結果得られるテスト出力データと、で構成されるテストケースを記憶する。既にテストケース記憶部１０１に記憶されているテストケースを既存テストケースという。
【００２７】
なお、テストケースは、テスト入力データとテスト出力データとの１または２以上の組からなるデータ群である。また、テスト入力データには、アプリケーション１１０の実行に必要な様々なデータが含まれる。同様に、テスト出力データには、アプリケーション１１０の実行の結果得られる様々なデータが含まれる。
【００２８】
テスト入力データ生成部１０２は、テストケース記憶部１０１に記憶された任意の既存テストケースを取得し、当該既存テストケースのテスト入力データの一部または全部を変更することにより新たなテスト入力データを生成する。
【００２９】
プログラム実行部１０３は、新たなテスト入力データ（変更されていない既存テストケースのテスト入力データも含む）をアプリケーション１１０に与えて一連の動作を実行させる。
【００３０】
ここで、テスト入力データは、ネットワークやＷｅｂブラウザを介してアプリケーション１１０に与えてもよいし直接アプリケーション１１０に与えてもよい。また、一連の動作とは、１または２以上の所望の目的を達成するまでの動作をいう。例えば、オンラインショッピング用のＷｅｂアプリケーションの場合、注文可能な状態から、注文が完了するまでの動作やエラー表示を行なうまでの動作などをいう。
【００３１】
テストケース生成部１０４は、アプリケーション１１０の実行結果から新たなテスト出力データを取得し、既存テストケースのテスト出力データと比較を行なう。そして、比較の結果に所定の差異を検出すると、新たなテスト入力データと新たなテスト出力データとで構成する新たなテストケースを生成し、テストケース記憶部に記憶する。
【００３２】
ここで、テスト出力データは、アプリケーション１１０の実行の結果、直接またはネットワークを介して得られるデータであってもよいし、当該実行の結果、Ｗｅｂブラウザに表示される表示データ（例えば、ＨＴＭＬやＸＭＬ等のフォーマットデータ）から取得してもよい。
【００３３】
図２は、本実施例に係るテストデータ生成装置１００の構成例を示す図である。
本実施例に係るテストデータ生成装置１００は、テストケース情報を記憶するテスト仕様書データベース２０１と、テスト対象となるＷｅｂアプリケーションへのテスト入力データを生成する入力データ生成器２０２と、テスト入力データをＷｅｂブラウザ２０４に入力してＷｅｂアプリケーションを実行する自動実行エンジン２０３と、Ｗｅｂアプリケーションからの指示に応じて所定の画面を表示するＷｅｂブラウザ２０４と、Ｗｅｂブラ
ウザ２０４の画面から実行結果を取得する実行結果取得エンジン２０５と、実行結果がテスト出力データとして望ましいデータか否かを判定する実行結果判定器２０６と、自動実行エンジン２０３や実行結果取得エンジン２０５に対して実行を指示するテスト指示装置２０７と、データ等の入力手段である入力装置２０８と、を備える。
【００３４】
なお、テストケース情報とは、テストケースの実行に必要なデータであって、テスト入力データおよびテスト出力データで構成されるデータをいう。
図２に示すＷｅｂサーバ２０９は、試験対象となるＷｅｂアプリケーションを実行するサーバであり、ＤＢサーバ２１０は、Ｗｅｂアプリケーションが使用するデータベースサーバである。本実施例では、テストデータ生成装置１００と別にこれらサーバを用意しているが、テストデータ生成装置１００がＷｅｂサーバ２０９やＤＢサーバ２１０を備えてもよい。
【００３５】
テストデータ生成装置１００と、Ｗｅｂサーバ２０９、ＤＢサーバ２１０は、ＴＣＰ／ＩＰネットワークによりそれぞれ接続されている。また、キーボードやマウス等で構成される入力装置２０８は、テストデータ生成装置１００とＵＳＢ等の接続機構で接続され、テスト実施者がテストデータ生成装置１００に対して所望の操作を指示することができるようになっている。
【００３６】
Ｗｅｂブラウザ２０４やテスト指示装置２０７は、入力装置４からの操作を受け付けて、自動実行エンジン２０３や実行結果取得エンジン２０５、Ｗｅｂサーバ２０９に処理の実行を指示する。
【００３７】
入力データ生成器２０２は、テスト仕様書データベース２０１から任意のテストケースを取得し、テストケースを構成するテスト入力データの一部を変更して新たなテスト入力データを生成する。そして、生成した入力テストデータを自動実行エンジン２０３に通知する。
【００３８】
自動実行エンジン２０３は、テスト指示装置２０７から指示を受けると、任意のテストケースにしたがってＷｅｂブラウザ２０４を操作する。例えば、入力データ生成器２０２が生成した入力テストデータをＷｅｂブラウザ２０４画面の入力部に入力し、Ｗｅｂアプリケーションを操作する。
【００３９】
実行結果取得エンジン２０５は、Ｗｅｂブラウザ２０４が画面上に表示するＷｅｂアプリケーションの実行結果やＤＢサーバ２１０におけるデータベース状態を取得する。
出力結果判定器２０６は、実行結果取得エンジン２０５が取得した実行結果と、テストケースにおけるテスト出力データとを比較する。そして、比較結果から実行したテストケースが良好なテストケースか否かを判断し、良好なテストケースと判断した場合には、新たなテストケースとしてテスト仕様書データベース２０１に記憶する。
【００４０】
例えば、実行結果取得エンジン２０５が取得した実行結果が、テスト仕様書データベース２０１に格納されているテストケースにおけるテスト出力データ群に一致するものがない場合、当該テストケースを良好なテストケースと判断する。
【００４１】
なお、テストデータ生成装置１００を構成する入力データ生成器２０２、自動実行エンジン２０３、実行結果取得エンジン２０５および出力結果判定器２０６は、必要に応じて、テストケース情報の集合を管理するテスト仕様書データベース２０１に対してテストケース情報の内容を参照・変更・追加を行なうことが可能となっている。
【００４２】
以下に説明する本実施例では、簡易なオンラインショッピングのＷｅｂアプリケーショ
ンについて、テストデータ生成装置１００を適用してテストケースを生成する処理を説明する。ただし、Ｗｅｂアプリケーションをオンラインショッピングに限定する趣旨ではない。
【００４３】
図３は、本実施例に係るテストデータ生成装置１００を適用するＷｅｂアプリケーションを説明する図である。また、図４は、本実施例に係るＷｅｂアプリケーションの遷移画面とテスト入力データについて示した図である。
【００４４】
本実施例に係るテストデータ生成装置１００の処理の理解を簡単にするために、Ｗｅｂアプリケーションは、（１）Ｗｅｂブラウザ２０４上の検索画面４０１から本のタイトルが検索でき、（２）その検索結果を示す検索結果画面４０２を表示し、（３）「買い物かごに移動」を指示すると買い物かご画面４０３に遷移して当該画面から「注文」または「商品追加」の操作が行なえ、（４）「注文」ボタンを押下すると確認画面４０４に遷移して当該画面から「購入決定」または「キャンセル」の操作が行なえるものとする。
【００４５】
ＤＢサーバ２１０には、テスト開始前にデータベース初期値４１０を記憶させてＤＢサーバ２１０を初期状態に設定する。なお、この作業は、スクリプト等を使用してテスト開始時に行なえばよい。
【００４６】
ステップＳ３０１において、例えば、自動実行エンジン２０３が、Ｗｅｂブラウザ２０４に対してトップページへの遷移を指示すると、Ｗｅｂアプリケーションは、Ｗｅｂブラウザ２０４に検索画面４０１を表示させる。
【００４７】
この時、自動実行エンジン２０３は、テスト入力データ４１１にしたがってＷｅｂブラウザ２０４に対して操作を行なう。例えば、検索画面４０１の「タイトル欄」に本のタイトルを入力し、「検索」ボタンを押下する。すると、Ｗｅｂサーバ２０９は、処理をステップＳ３０２に移行する。
【００４８】
ステップＳ３０２において、Ｗｅｂアプリケーションは、ＤＢサーバ２１０と通信を行ない、Ｗｅｂブラウザ２０４から受け取った本のタイトルを検索する。そして、Ｗｅｂブラウザ２０４に検索結果画面４０２を表示させる。
【００４９】
例えば、自動実行エンジン２０３が、テスト入力データ４１２にしたがって、検索結果画面４０２における「買い物かごに移動」をマウス等で選択すると、Ｗｅｂサーバ２０９は、処理をステップＳ３０３に移行する。
【００５０】
ステップＳ３０３において、Ｗｅｂアプリケーションは、Ｗｅｂブラウザ２０４に買い物かご画面４０３を表示させる。
例えば、自動実行エンジン２０３が、入力テストデータ４１３にしたがって、「注文」ボタンを押下すると、Ｗｅｂサーバ２０９は、処理をステップＳ３０４に移行する。
【００５１】
ステップＳ３０４において、Ｗｅｂアプリケーションは、Ｗｅｂブラウザ２０４に確認画面４０４を表示させる。自動実行エンジン２０３が、テスト入力データ４１４にしたがって、「購入決定」ボタンを押下すると、Ｗｅｂサーバ２０９は、Ｗｅｂブラウザ２０４に完了画面４０５を表示して処理を終了する。
【００５２】
本実施例では、以上に説明した一連のＷｅｂアプリケーションの入出力動作を「基本シナリオ」といい、基本シナリオのテストケースを基本テストケースという。また、基本シナリオを基本に様々に派生したシナリオを派生シナリオといい、派生シナリオのテストケースを派生テストケースという。
【００５３】
例えば、ステップＳ３０１において検索結果が０件であった場合のシナリオ、ステップＳ３０２において検索の結果在庫なしであった場合のシナリオ、ステップＳ３０３において利用者が「商品追加」ボタンを押下した場合のシナリオ、ステップＳ３０４において利用者が「キャンセル」ボタンを押下した場合のシナリオ、などが派生シナリオとなる。
【００５４】
図５は、図３および図４で説明した基本テストケースにおけるテスト入力データおよびテスト出力データについて説明する図である。以下、図３で示した基本テストケースの各ステップで使用するテスト入力データ／テスト出力データの具体例を示している。
【００５５】
ステップＳ３０１、すなわち、初期状態から検索画面への遷移をテストするために、ＤＢサーバ２１０を初期状態にするためのテスト入力データ４１０が使用される。この時、Ｗｅｂアプリケーションのトップページ（検索画面）を表示するだけなので、テスト出力データは必要ない。
【００５６】
ステップＳ３０２、すなわち、検索画面から検索結果画面への遷移をテストするために、タイトル入力欄への入力データ（図５では、文字列「プログラム入門」）と、ボタン操作（図５では、「検索」のボタン押下）からなるテスト入力データ４１１が使用される。
【００５７】
この時、図４に示した検索結果画面４０２が期待されるので、検索結果画面上に表示される表示項目（図５では、書籍名「プログラミング入門」、価格「１，０００円」およびボタン「買い物かごに入れる」）からなるテスト出力データ５１１ａが使用される。
【００５８】
また、ＤＢサーバ２１０の状態に変更はないので、テスト入力データ４１０と同じデータがテスト出力データ５１１ｂとして使用される。
ステップＳ３０３、すなわち、検索結果画面から買い物かご画面への遷移をテストするために、ボタン操作（図５では、「買い物かごに入れる」の選択）からなるテスト入力データ４１２が使用される。
【００５９】
この時、図４に示した買い物かご画面４０３が期待されるので、買い物かご画面上に表示される表示項目（図５では、書籍名「プログラミング入門」、価格「１，０００円」、数量「１冊」、ボタン「注文」および「商品追加」）からなるテスト出力データ５１２ａが使用される。
【００６０】
また、タイトル「プログラミング入門」の書籍の在庫が１冊減るので、ＤＢサーバ２１０内の変更状態を示すテスト出力データがテスト出力データ５１２ｂとして使用される。
ステップＳ３０４やステップＳ３０５における画面遷移についても、同様にしてテスト入力データ、テスト出力データを使用してテストが行なわれる。
【００６１】
図６および図７は、図５に示した基本テストケースのデータ構成の例を示す図である。
図５に示したように、本実施例に係るＷｅｂアプリケーションのテストをするためには、各ステップにおけるＷｅｂブラウザ２０４の入出力データとＤＢサーバ２１０の状態とが必要となる。
【００６２】
すなわち、本実施例におけるテストケースは、Ｗｅｂブラウザ２０４の入出力データとＤＢサーバ２１０の状態の２つの情報で構成される。図６は、基本テストケースにおけるＷｅｂブラウザ２０４の入出力データ（以下、「テスト入出力データ６００」という）を示し、図７は、基本テストケースにおけるＤＢサーバ２１０の状態（以下、「ＤＢ入出力データ７００」という）を示す。
【００６３】
図６に示すテスト入出力データ６００は、画面名、入出力区分、グループ、繰り返し、項目名および項目値で構成されている。
画面名は、Ｗｅｂブラウザ２０４に表示される画面を識別する名称を示す。例えば、検索画面、検索結果画面などである。また、入出力区分は、テスト入力データかテスト出力データかの区別を示す。グループは、各表示画面を任意のグループにグループ化した場合に当該表示画面が属するグループ名を示し、繰り返しは、当該画面の繰り返し表示回数を示す。項目は、テスト入力データを入力する項目、またはテスト出力データが出力される項目（ボタン操作・制御を含む）を示す。
【００６４】
また、図７に示すように、ＤＢ入出力データ７００は、画面名、入出力区分、テーブル名、繰り返し、更新内容および値で構成されている。
画面名は、Ｗｅｂブラウザ２０４に表示される画面名を示す。例えば、検索画面、検索結果画面などである。なお、初期状態とは、Ｗｅｂアプリケーション実行開始時におけるＤＢサーバ２１０の状態をいう。また、入出力区分は、テスト入力データかテスト出力データかの区別を示す。テーブル名は、当該値を管理するテーブル名を示す。また、繰り返しは、当該値の繰り返し出力回数を示す。また、値は、当該表示画面におけるＤＢサーバ２１０内に格納される値を示す。
【００６５】
更新内容は、当該値が直前の表示画面から新規に作成されるものか更新されるものか削除されるものかを示す。本実施例に係るＤＢサーバ２１０の状態は、直前の表示画面（検索画面の場合には初期状態）からの差分のみを記録するからである。例えば、図７に示す例では、買い物かご画面は、直前の表示画面におけるタイトル「プログラミング入門」の在庫数が更新され、在庫数が３に変化することを示している。他の項目については変化がないため省略されている。
【００６６】
以上に説明したテスト入出力データ６００およびＤＢ入出力データ７００の構成は、一例であってこれに限定する趣旨ではない。テスト入出力データ６００およびＤＢ入出力データ７００の構成は、Ｗｅｂアプリケーションに応じて適宜変更する必要があるのは当然である。
【００６７】
図８は、本実施例に係るテストデータ生成装置１００の処理の概要を示すフローチャートである。
テストデータ生成処理を開始すると、テストデータ生成装置１００は、処理をステップＳ８０１に移行する。そして、テストデータ生成装置１００は、テスト仕様書データベース２０１にあらかじめ記憶されている基本テストケースを取得する。そして、テストデータ生成装置１００は、処理をステップＳ８０２に移行する。なお、ステップＳ８０１の処理は、テスト実施者が手作業で行なってもよい。
【００６８】
ステップＳ８０２において、テストデータ生成装置１００は、基本テストケースにしたがって、図３〜図５に示したテスト入力データをＤＢサーバ２１０やＷｅｂブラウザ２０４に入力し、操作を行なってテストを実行する。
【００６９】
ステップＳ８０３において、テストデータ生成装置１００は、ステップＳ８０１およびＳ８０２の処理によって得られる基本テストケースのテスト入出力データについて統計的解析を行なって、テストケース内の同一値項目を検出する。
【００７０】
ステップＳ８０４において、テストデータ生成装置１００は、テストデータ生成装置１００内の図示しない記憶装置に記憶するデータ生成フラグを参照する。そして、データ生成フラグがオンの場合、まだテストケースを生成する必要があると判断し、処理をステップＳ８０４に移行する。
【００７１】
ステップＳ８０５において、テストデータ生成装置１００は、当該テストケースの一部または全部のテスト入力データを編集し、新たなテスト入力データを生成する。以下、この新たなテスト入力データを「新テスト入力データ」という。
【００７２】
ステップＳ８０６において、テストデータ生成装置１００は、ステップＳ８０２と同様に、新テスト入力データを用いてテストを実行し、ステップ毎の実行結果を新たなテスト出力データとして出力する。以下、この新たなテスト出力データを「新テスト出力データ」という。また、以上の処理で得られた新テスト入力データと新テスト出力データとで構成されるテストケースを「新テストケース」という。
【００７３】
ステップＳ８０７において、テストデータ生成装置１００は、テスト仕様書データベース２０１に記憶されているテストケースと、ステップＳ８０６の処理によって得た新テストケースと、を比較し、各テストケースとの差異を抽出する。
【００７４】
ステップＳ８０８において、テストデータ生成装置１００は、差異がある場合には、処理をステップＳ８０９に移行する。また、ステップＳ８０８において、差異がない場合、データ生成装置１００は、処理をステップＳ８０４に移行し、ステップＳ８０４〜Ｓ８０８の処理を繰り返し行なう。
【００７５】
ステップＳ８０９において、データ生成装置１００は、新テストケースをテスト仕様書データベース２０１に記憶する。そして、処理をステップＳ８１０に移行する。
ステップＳ８１０において、データ生成装置１００は、新テストケースを新たに基本テストケースと設定する。そして、データ生成装置１００は、処理をステップＳ８０３に移行し、ステップＳ８０３〜Ｓ８１０の処理を繰り返し行なう。
【００７６】
一方、ステップＳ８０４において、データ生成フラグがオフの場合、テストデータ生成装置１００は、これ以上テストケースを生成する必要がないと判断し、処理をステップＳ８１１に移行する。ステップＳ８１１において、データ生成装置１００は、テストケースの一覧を出力（表示）すると、処理をステップＳ８１２に移行してテストデータ生成処理を終了する。
【００７７】
図９は、図８に示したステップＳ８０２の具体的な処理を示すフローチャートである。
ステップＳ９０１において、自動実行エンジン２０３は、テスト仕様書データベース２０１を参照し、あらかじめ記憶されている基本テストケース（ただし、テスト入力データのみ。以下、「基本テスト入力データ」という）を取得する。そして、例えば、基本テスト入力データに含まれるテスト入力データ４１０を、ＤＢサーバ２１０に投入してＤＢサーバ２１０を初期状態にする。
【００７８】
ステップＳ９０２において、自動実行エンジン２０３は、トップページ（検索画面）のＵＲＬをＷｅｂブラウザ２０４に入力し、Ｗｅｂブラウザ２０４の表示画面を検索画面に遷移させる。
【００７９】
ステップＳ９０３において、自動実行エンジン２０３は、検索画面４０１に表示された入力フォーム内に、基本テスト入力データに含まれるテスト入力データ４１１を入力しＷｅｂブラウザ２０４を操作する。テスト入力データ４１１を使用する場合、自動実行エンジン２０３は、入力フォームに「プログラミング入門」を入力し、「検索」ボタンを押下する操作を行なう。すると、Ｗｅｂサーバ２０９上で実行されているＷｅｂアプリケーションは、ＤＢサーバ２１０を参照し、「プログラミング入門」を検索する。そして、検索結果の表示画面をＷｅｂブラウザ２０４に表示させる。
【００８０】
ステップＳ９０４において、実行結果取得エンジン２０５は、Ｗｅｂブラウザ２０４上に表示された検索結果画面から所定の画面出力項目を抽出する。例えば、図６に示したように、Ｗｅｂブラウザ２０４上に表示される画面が、ＸＭＬ形式のデータである場合、所定の画面出力項目と対応付けたタグで挟まれる文字列を抽出することにより各表示画面に出力される項目値を得ることができる。なお、画面出力項目の抽出は、他の既存の技術を使用して行なってもよい。
【００８１】
また、実行結果取得エンジン２０５は、ＤＢサーバ２１０の状態（例えば、図９に示すＤＢ出力データ９１１ｂ）を取得する。
ステップ９０５において、自動実行エンジン２０３は、Ｗｅｂブラウザ２０４上に表示されている表示画面が最終画面か否かを判断する。例えば、テスト入出力データ６００において、入力するべきテスト入力データがなくなった場合や、当該表示画面におけボタン名が一致しない場合などに、当該表示画面が最終画面と判断すればよい。
【００８２】
そして、当該表示画面が最終画面でないと判断すると、自動実行エンジン２０３は、処理をステップＳ９０３に移行する。そして、ステップＳ９０３〜Ｓ９０５の処理を繰り返し行なう。
【００８３】
また、ステップＳ９０５において、当該表示画面が最終画面であると判断すると、自動実行エンジン２０３は、処理をステップＳ９０６に移行する。そして、基本テスト入力データと、ステップＳ９０１〜Ｓ９０５の処理によって得た画面出力データ（例えば、画面出力データ９１１ａ）と、ＤＢ出力データ（例えば、ＤＢ出力データ９１１ｂ）と、から基本テストケース（テスト入出力データ６００およびＤＢ入出力データ７００）を生成する。そして、当該基本テストケースを、テスト仕様書データベース２０１に登録する。
【００８４】
図１０は、図８に示したステップＳ８０３の具体的な処理を示すフローチャートである。
ステップＳ１００１において、自動実行エンジン２０３は、基本テストケースについて統計的解析処理を行なう。本実施例では、基本テストケースにおける項目値（例えば、テスト入出力データ６００の項目値）や値（例えば、ＤＢ入出力データ７００の値）が、データベース初期値、テスト入力データ、画面出力データとしてそれぞれ使用された回数を算出する。
【００８５】
例えば、図５に示した基本テストケースの場合、図１０に示す統計表１００１が得られる。統計表１００１に記載の「プログラミング入門」は、データベース初期値およびテスト入力データとして１回、画面出力データとして２回使用されたことを示す。
【００８６】
ステップＳ１００２において、自動実行エンジン２０３は、ステップＳ１００１で算出した使用回数が２以上の項目値または値を抽出する。以下、この項目値または値を「同一値項目」という。
【００８７】
例えば、図１０に示す統計表１００１からは、画面出力データとして２回使用された項目値「プログラミング入門」と、画面出力データとして３回使用された値「１０００」が同一項目として抽出される。
【００８８】
なお、複数の同一値項目がある場合は、データベース初期値、テスト入力データおよび画面出力データの全てに使用された項目ほど高い優先順位を与え、使用回数が多いものほど高い優先順位を与える。ただし、上述した同一値項目の抽出方法は例示であって、これに限定する趣旨ではない。必要に応じて、他の方法を用いて同一値項目を抽出してもよい
。
【００８９】
図１１は、図８に示したステップＳ８０５の具体的な処理を示すフローチャートである。
ステップＳ１１０１において、入力データ生成器２０２は、基本テストケース内の同一値項目について、以下の処理を行なって、新たなテストケースを生成する。
【００９０】
（１）テスト入力データに含まれる同一値項目ついて、任意の文字列または値を変更する（１文字変更、１文字削除、１文字追加など）。例えば、「プログラミング入門」を、「ペログラミング入門」、「プログラミング入」、「プログラミング入門あ」などに変更する。
【００９１】
（２）データベース初期値に含まれる同一値項目について、任意の文字列または値を変更する。
（３）データベース初期値について、同一値項目を含むレコードの他のカラムの文字列または値を変更する。
【００９２】
（４）同一値項目を含まないテスト入力データの文字列または値を変更する。
（５）データベース初期値について、同一値項目を含まないレコードの他のカラムの文字列または値を変更する。
【００９３】
なお、上述した（１）〜（５）の処理は、あらかじめ優先順位を付け、当該優先順位にしたがって適宜同一値項目に対して処理を行なう。
ステップＳ１１０２において、入力データ生成器２０２は、十分な数のバリエーションのテストケースが生成されているか否かを判別する。
【００９４】
例えば、入力データ生成器２０２は、テスト仕様書データベース２０１を参照して記憶されているテストケースの数を取得し、十分な数のテストケースが得られたか否かを判断する。例えば、テスト実行前にあらかじめ十分と考えられる数を設定しておき、テストケースの数が当該数に達したら十分な数に達したと判断してもよいし、Ｎ回以上異なるバリエーションのテストケースが作成されなった場合に十分な数に達したと判断してもよい。また、新たに生成されるテストケースの増加割合が一定以下に減少した場合に十分な数に達したと判断してもよい。
【００９５】
そして、十分な数のテストケースが得られていない場合、テストデータ生成装置１００は、本処理を終了する（ステップＳＳ１１０４）。また、十分な数のテストケースが得られている場合、テストデータ生成装置１００は、処理をステップＳ１１０３に移行し、データ生成可能フラグをオフにする。そして、テストデータ生成装置１００は、本処理を終了する（ステップＳ１１０４）。
【００９６】
図１２は、図１１に示したステップＳ１１０１の同一値項目に対して行なわれる処理の具体例を示す図である。
本実施例では、同一値項目が文字列である場合、当該文字列に対して１文字変更、１文字削除、１文字追加の処理を行なっている。
【００９７】
また、同一値項目が値（数値）である場合、当該値に対して１を加算、１を減算、桁数を１桁増加、桁数を１桁削減、最大値に変更、最大値＋１の値に変更、最小値に変更、最小値−１の値に変更、０に変更、１に変更などの処理を行なう。
【００９８】
また、同一値項目がボタン押下等のイベントである場合、押下するボタンを変更する、
発生させるイベント（マウスオーバー、フォーカスイン等）を変更するなどの処理を行なう。
【００９９】
以下に、同一値項目が文字列「プログラミング入門」の場合について説明するが、これに限定する趣旨でないのは当然である。
（１）テスト入力データに含まれる同一値項目を変更する場合、例えば、文字列「プログラミング入門」を、「ペログラミング入門」、「プログラミング入」、「プログラミング入門あ」などと変更する。
【０１００】
（２）データベース初期値に含まれる同一値項目を変更する場合、（１）と同様に、文字列「プログラミング入門」を、「ペログラミング入門」、「プログラミング入」、「プログラミング入門あ」などと変更する。
【０１０１】
（３）データベース初期値について、同一値項目を含むレコードの他のカラムを変更する場合、「プログラミング入門」の価格を１００１円（または９９９円）や１円（または０円）、在庫数を４０や１、０などに変更する。
【０１０２】
（４）同一値項目を含まないテスト入力データを変更する場合、例えば、「キャンセル」ボタンの押下にイベントを変更する。
（５）データベース初期値について、同一値項目を含まないレコードの他のカラムの文字列または値を変更する場合、例えば、文字列「小説１」を「小説２」、「小説」、「小説１あ」、小説１の価格を２００００円などに変更する。
【０１０３】
図１３は、図８に示したステップＳ８０７およびＳ８０８の具体的な処理を示すフローチャートである。
ステップＳ１３０１において、自動実行エンジン２０３は、テスト仕様書データベース２０１に記憶されている既存のテストケース（以下、「既存テストケース」という）との差異の有無を示す「差異フラグ」をオフに設定する。
【０１０４】
ステップＳ１３０２において、自動実行エンジン２０３は、テスト仕様書データベース２０１を参照し、以下に示すステップＳ１３０３〜Ｓ１３０５の処理を実施していない既存テストケースの有無を判断する。
【０１０５】
そして、ステップＳ１３０３〜Ｓ１３０５の処理を実施していない既存テストケースがある場合、自動実行エンジン２０３は、処理をステップＳ１３０３に移行する。
ステップＳ１３０３において、自動実行エンジン２０３は、テスト仕様書データベース２０１を参照し、任意の既存テストケースを取得する。
【０１０６】
ステップＳ１３０４において、自動実行エンジン２０３は、既存テストケースと新テストケースとを比較する。例えば、テスト入出力データについて、画面名毎にテスト入力データの項目値やテスト出力データの項目値を比較し、ＤＢ入出力データについて、画面名毎にテスト入力データの値やテスト出力データの値を比較する。
【０１０７】
ステップＳ１３０５において、自動実行エンジン２０３は、ステップＳ１３０４の比較の結果に差異がある場合には、差異フラグをオンに設定する。そして、自動実行エンジン２０３は、処理をステップＳ１３０２に移行する。
【０１０８】
ここで、差異を検出する際に、テスト出力データの文字列や数値の内容が変化したとしても、両テストケースは同一であるとみなしてもよい。例えば、表示画面中の文字列が１文字異なる結果が得られたとしても、それは良いテストケースとはならない場合があるか
らである。そこで、以下の条件を満たす場合に両テストケースが異なると判断してもよい。
【０１０９】
（１）既存テストケースと比較して、基本テストケースと遷移先画面が異なる場合。
（２）既存テストケースと比較して、基本テストケースと遷移先画面のテスト出力データが異なる場合（例えば、遷移先画面に表示される項目名、項目値、検索結果の表示行数等が異なる場合）。
【０１１０】
（３）既存テストケースと比較して、基本テストケースと同一値項目が異なる場合、または同一値項目の使用回数が異なる場合（同一値項目以外の項目は相違点としてのインパクトが低いため除外することが目的である）。
【０１１１】
一方、ステップＳ１３０２において、全ての既存テストケース対して、ステップＳ１３０３〜Ｓ１３０５の処理が完了した場合、自動実行エンジン２０３は、処理をステップＳ１３０６に移行する。
【０１１２】
ステップＳ１３０６において、自動実行エンジン２０３は、差異フラグを参照する。そして、差異フラグがオンの場合、自動実行エンジン２０３は、処理をステップＳ８０９に移行する。また、差異フラグがオフの場合、自動実行エンジン２０３は、処理をステップＳ８０４に移行する。
【０１１３】
図１４、図１５および図１６は、図１３に示したステップＳ１３０４におけるテストケースの比較処理について説明する図である。
以下、図１４に示すテストケースの場合について具体的に説明する。
【０１１４】
新テストケースＡは、Ｗｅｂブラウザ２０４に対して所定のテスト入力データを入力し、所定の操作することにより、「検索画面」、「検索結果一覧画面（検索結果を１件表示）」、「買い物かご画面」、「確認画面」、「完了画面」の順に画面遷移するテストケースである。
【０１１５】
同様に、既存テストケースＢは、「検索結果画面」、「検索結果一覧画面」、「エラー画面」の順に遷移するテストケースであり、既存テストケースＣは、「検索画面」、「検索結果一覧画面（検索結果を２件表示）」、「買い物かご画面」、「確認画面」、「完了画面」の順に遷移するテストケースである。
【０１１６】
ステップＳ１３０４における比較処理において、自動実行エンジン２０３は、まず、画面遷移の順番を比較する。新テストケースＡと既存テストケースＢとは、遷移する画面が異なるので、自動実行エンジン２０３は、両テストケースに差異があると判断する。
【０１１７】
また、自動実行エンジン２０３は、表示画面毎に、画面出力データを比較する。例えば、新テストケースＡにおける検索結果画面は、検索結果を１件表示するのに対し、既存テストケースＣにおける検索結果画面は、検索結果を２件表示するので、自動実行エンジン２０３は、両テストケースに差異があると判断する。
【０１１８】
図１５は、差異のある新テストケースＡと既存テストケースＢの具体例を示す図である。
新テストケースＡが、データベース初期状態に対してテスト入力データ４１０、検索画面に対してテスト入力データ４１１、検索結果画面に対してテスト入力データ４１２を使用するテストケースの場合、当該画面は、買い物かご画面に遷移する。
【０１１９】
一方、既存テストケースＢが、データベース初期値に対して、テスト入力データ４１０と「プログラミング入門」の在庫数が異なる（在庫数が「０」の）テスト入力データ１５１０を使用し、検索画面に対してテスト入力データ４１１、検索結果画面に対してテスト入力データ４１２を使用するテストケースの場合、検索結果画面において「買い物かごに入れる」を選択すると、在庫がないためにエラー画面に遷移する。
【０１２０】
自動実行エンジン２０３は、買い物かご画面とエラー画面との差異を検出し、新テストケースＡと既存テストケースＢとに差異があると判断する。
図１６は、差異のある新テストケースＡと既存テストケースＣの具体例を示す図である。
【０１２１】
新テストケースＡが、データベース初期状態に対してテスト入力データ４１０、検索画面に対してテスト入力データ１６１１ａを使用する場合、検索結果画面には、画面出力データ１６１２ａが表示される。
【０１２２】
新テストケースＡが、データベース初期状態に対してテスト入力データ４１０、検索画面に対してテスト入力データ１６１１ｂを使用する場合、検索結果画面には、画面出力データ１６１２ｂが表示される。
【０１２３】
画面出力データ１６１２ａは、「ビジネス書１」を検索した検索結果であり、画面出力データ１６１２ｂは、「ビジネス書」を検索した検索結果であるので異なる。
自動実行エンジン２０３は、検索結果画面から取得する画面出力データ１６１２ａと画面出力データ１６１２ｂとの差異を検出し、新テストケースＡと既存テストケースＣとに差異があると判断する。
【０１２４】
なお、本実施例では、Ｗｅｂアプリケーションのテストデータを生成する場合について説明したが、任意のアプリケーションについて本実施例に係るテストデータ生成装置１００は適用することが可能である。
【０１２５】
以上に説明したように、本実施例に係るテストデータ生成装置１００は、最初に与えられたテストケースを基に自動で生成したテスト入力データを使用してテストを実施する。そして、実施の結果得るテスト出力データであって既存のテストケースと異なるテスト出力データが発生したことを検出し、そのテスト入力データとテスト出力データとから新たなテストケースを生成する。その結果、多数の異なるテストケースを容易に生成することが可能となる。
【０１２６】
また、従来手作業で作成せざるを得なかったテストバリエーションの作成を効率的に行なうことができるようになるので、Ｗｅｂアプリケーションのテストにかかる工数を削減することが可能となる。
【０１２７】
また、手動でテストケースを作成する場合には見落としがちなテストケースも洗い出せる可能性が高くなり、結果としてＷｅｂアプリケーションの品質を向上させることが可能となる。
【０１２８】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）  所望のプログラムの動作をテストするために使用する入出力データを生成するプログラムにおいて、
前記プログラムの一連の動作に必要なデータであるテスト入力データと、該テスト入力データに応じて前記プログラムの実行の結果得られるテスト出力データと、で構成される既存テストケースを記憶するテストケース記憶部から、任意の既存テストケースを取得し
、該既存テストケースのテスト入力データと異なる新たなテスト入力データを生成するテスト入力データ生成処理と、
該新たなテスト入力データを前記プログラムに与えて前記一連の動作を実行させるプログラム実行処理と、
該プログラムの実行結果から新たなテスト出力データを取得して、前記既存テストケースのテスト出力データと比較し、該比較の結果に所定の差異を検出すると、前記新たなテスト入力データと前記新たなテスト出力データとで構成する新たなテストケースを生成し、該テストケースを前記テストケース記憶部に記憶するテストケース生成処理と、
を情報処理装置に実行させるプログラム。
（付記２）  前記テスト出力データには、前記プログラムの実行の結果表示される表示画面の種類が含まれる、
ことを特徴とする付記１に記載のプログラム。
（付記３）  前記テスト出力データには、前記プログラムの実行の結果表示される表示画面毎の表示項目が含まれる、
ことを特徴とする付記１に記載のプログラム。
（付記４）  前記テストケース生成処理は、前記プログラムの実行の結果表示される所定の表示画面が一方には存在し他方には存在しない場合に、前記所定の差異が存在すると判断する、  ことを特徴とする付記１に記載のプログラム。
（付記５）  前記テストケース生成処理は、前記一連の動作内に、前記プログラムの実行の結果表示される所定の表示項目の出現回数が異なる場合に、前記所定の差異が存在すると判断する、
ことを特徴とする付記１に記載のプログラム。
（付記６）  前記プログラムがＷｅｂアプリケーションである場合、前記テスト入力データには、前記プログラムが表示する表示画面への入力データと、画面操作指示と、が含まれる、
ことを特徴とする付記１に記載のプログラム。
（付記７）  前記プログラムがＷｅｂアプリケーションである場合、前記テスト入力データには、前記プログラムが表示する表示画面への入力データと、画面操作指示と、が含まれる、
ことを特徴とする付記１に記載のプログラム。
（付記８）  前記プログラムがＷｅｂアプリケーションである場合、前記テスト出力データには、前記プログラムが使用するデータベースの状態が含まれる、
ことを特徴とする付記１に記載のプログラム。
（付記９）  前記入力データ生成処理は、前記テスト入力データに含まれる文字列または数値を一部または全部変更することで前記新たなテスト入力データを生成する、
ことを特徴とする付記１に記載のプログラム。
（付記１０）  前記テスト入力データ生成処理は、前記一連の動作内に、前記テスト入力データと、前記テスト出力データと、が出現する回数を算出し、所定回数以上出現するテスト入力データまたはテスト出力データを変更することで、前記新たなテスト入力データを生成する、  ことを特徴とする付記１に記載のプログラム。
（付記１１）
所望のプログラムの動作をテストするために使用する入出力データを生成する方法において、
前記プログラムの一連の動作に必要なデータであるテスト入力データと、該テスト入力データに応じて前記プログラムの実行の結果得られるテスト出力データと、で構成される既存テストケースを記憶するテストケース記憶部から、任意の既存テストケースを取得し、該既存テストケースのテスト入力データと異なる新たなテスト入力データを生成するテスト入力データ生成処理と、
該新たなテスト入力データを前記プログラムに与えて前記一連の動作を実行させるプログラム実行処理と、
該プログラムの実行結果から新たなテスト出力データを取得して、前記既存テストケースのテスト出力データと比較し、該比較の結果に所定の差異を検出すると、前記新たなテスト入力データと前記新たなテスト出力データとで構成する新たなテストケースを生成し、該テストケースを前記テストケース記憶部に記憶するテストケース生成処理と、
を実行する方法。
（付記１２）  所望のプログラムの動作をテストするデータを生成するテストデータ生成装置において、
前記プログラムの一連の動作に必要なデータであるテスト入力データと、該テスト入力データに応じて前記プログラムの実行の結果得られるテスト出力データと、で構成される既存テストケースを記憶するテストケース記憶部と、
前記テストケース記憶部から任意の既存テストケースを取得し、該既存テストケースのテスト入力データと異なる新たなテスト入力データを生成するテスト入力データ生成部と、
該新たなテスト入力データを前記プログラムに与えて前記一連の動作を実行させるプログラム実行部と、
該プログラムの実行結果から新たなテスト出力データを取得して、前記既存テストケースのテスト出力データと比較し、該比較の結果に所定の差異を検出すると、前記新たなテスト入力データと前記新たなテスト出力データとで構成する新たなテストケースを生成し、該テストケースを前記テストケース記憶部に記憶するテストケース生成部と、
を備えるテストデータ生成装置。
【図面の簡単な説明】
【０１２９】
【図１】本実施例に係るテストデータ生成装置の概要を説明する図である。
【図２】本実施例に係るテストデータ生成装置の構成例を示す図である。
【図３】本実施例に係るテストデータ生成装置を適用するＷｅｂアプリケーションを説明する図である。
【図４】本実施例に係るＷｅｂアプリケーションの遷移画面とテスト入力データについて示した図である。
【図５】本実施例に係る基本テストケースにおけるテスト入力データおよびテスト出力データについて説明する図である。
【図６】図５に示した基本テストケースのデータ構成の例を示す図である。
【図７】図５に示した基本テストケースのデータ構成の例を示す図である。
【図８】本実施例に係るテストデータ生成装置の処理の概要を示すフローチャートである。
【図９】図８に示したステップＳ８０２の具体的な処理を示すフローチャートである。
【図１０】図８に示したステップＳ８０３の具体的な処理を示すフローチャートである。
【図１１】図８に示したステップＳ８０５の具体的な処理を示すフローチャートである。
【図１２】図１１に示したステップＳ１１０１の同一値項目に対して行なわれる処理の具体例を示す図である。
【図１３】図８に示したステップＳ８０７およびＳ８０８の具体的な処理を示すフローチャートである。
【図１４】図１３に示したステップＳ１３０４におけるテストケースの比較処理について説明する図である。
【図１５】図１３に示したステップＳ１３０４におけるテストケースの比較処理について説明する図である。
【図１６】図１３に示したステップＳ１３０４におけるテストケースの比較処理について説明する図である。
【図１７】一般的なテストの実施形態について説明する図である。
【符号の説明】
【０１３０】
１００      テストデータ生成装置
１０１      テストケース記憶部
１０２      テスト入力データ生成部
１０３      プログラム実行部
１０４      テストケース生成部
１１０      アプリケーション
【図１】
2009163609.tif 000003
【図２】
2009163609.tif 000004
【図３】
2009163609.tif 000005
【図４】
2009163609.tif 000006
【図５】
2009163609.tif 000007
【図６】
2009163609.tif 000008
【図７】
2009163609.tif 000009
【図８】
2009163609.tif 000010
【図９】
2009163609.tif 000011
【図１０】
2009163609.tif 000012
【図１１】
2009163609.tif 000013
【図１２】
2009163609.tif 000014
【図１３】
2009163609.tif 000015
【図１４】
2009163609.tif 000016
【図１５】
2009163609.tif 000017
【図１６】
2009163609.tif 000018
【図１７】
2009163609.tif 000019