(57)【要約】【課題】テスト・プログラムによる動作テストを効率的に実行する。【解決手段】動作検証装置は、所定機器に対して実行された一連の操作の内容を示すログを取得し、このログから対応する関数を特定し、特定した関数からプログラムを自動生成する。また、これらの関数の引数となるべき入力データを設定する。プログラムと入力データを組み合わせて実行セット、更には、テスト・シナリオを構成した上で、各実行セットを連続実行させることにより、テスト・プログラムによる動作テストが自動実行される。【選択図】図５
2010039901.tif 000002
【特許請求の範囲】
【請求項１】
所定機器の動作確認のためのテスト・プログラムを実行させる装置であって、
前記所定機器に対して実行された一連の操作の内容を示すログを取得するログ取得部と、
各種操作を実現するためのロジックが組み込まれた複数種類の関数のうち前記ログに記録された操作に対応する関数を選択し、前記所定機器へのデータ入力操作については前記所定機器への入力データを取得するためのインタフェースを備える入力関数を選択することにより、前記一連の操作を再現するためのテスト・プログラムを生成するプログラム生成部と、
前記入力関数に渡すべき入力データを取得する入力データ取得部と、
前記取得された入力データに基づいて前記一連の操作を実行したときの動作確認のために、前記取得された入力データを前記入力関数に渡して前記テスト・プログラムを実行させるプログラム実行部と、
を備えることを特徴とする動作検証装置。
【請求項２】
前記入力関数に渡すべき入力データを設定するための入力設定画面を表示させる入力設定画面表示部、を更に備え、
前記入力データ取得部は、前記入力設定画面を介して設定された入力データを入力データファイルとして記録し、
前記プログラム実行部は、前記入力データファイルから前記入力関数に渡すべき入力データを抽出することを特徴とする請求項１に記載の動作検証装置。
【請求項３】
テスト・プログラムと入力データファイルを対応づけるためのケース設定画面を表示させるケース設定画面表示部と、
前記ケース設定画面を介して設定されたテスト・プログラムと入力データファイルのセットをケースファイルとして記録するテストケース登録部と、を更に備え、
前記プログラム実行部は、前記ケースファイルにおいて複数のセットが記録されているときには、前記複数のセットに含まれる各テスト・プログラムを各入力データファイルに基づいて順次実行させることを特徴とする請求項２に記載の動作検証装置。
【請求項４】
前記ログに記録された操作内容に応じて選択された関数を一覧表示させる画面であって、前記テスト・プログラムに登録すべき関数を変更するための関数設定画面を表示させる関数設定画面表示部、を更に備え、
前記プログラム生成部は、前記関数設定画面に対する変更操作の結果として登録された関数により前記テスト・プログラムを生成することを特徴とする請求項１から３のいずれかに記載の動作検証装置。
【請求項５】
前記テスト・プログラムの実行中における前記所定機器の表示画面を記録するための画面キャプチャ関数を前記テスト・プログラムに登録可能であることを特徴とする請求項４に記載の動作検証装置。
【請求項６】
所定機器の動作確認のためのテスト・プログラムを実行させるコンピュータ・プログラムであって、
前記所定機器に対して実行された一連の操作の内容を示すログを取得する処理と、
各種操作を実現するためのロジックが組み込まれた複数種類の関数のうち前記ログに記録された操作に対応する関数を選択し、前記所定機器へのデータ入力操作については前記所定機器への入力データを取得するためのインタフェースを備える入力関数を選択することにより、前記一連の操作を再現するためのテスト・プログラムを生成する処理と、
前記入力関数に渡すべき入力データを取得する処理と、
前記取得された入力データに基づいて前記一連の操作を実行したときの動作確認のために、前記取得された入力データを前記入力関数に渡して前記テスト・プログラムを実行させる処理と、
をコンピュータに実行させることを特徴とする動作検証プログラム。
【請求項７】
所定機器に対する一連の操作をログに記録する機能と、前記所定機器の動作確認のためのテスト・プログラムを実行する機能とを備える自動機能テストツールと連携し、
前記自動機能テストツールから前記ログを取得する処理と、
各種操作を実現するためのロジックが組み込まれた複数種類の関数のうち前記ログに記録された操作に対応する関数を選択し、前記所定機器へのデータ入力操作については前記所定機器への入力データを取得するためのインタフェースを備える入力関数を選択することにより、前記一連の操作を再現するためのテスト・プログラムを生成する処理と、
前記入力関数に渡すべき入力データを取得する処理と、
前記取得された入力データに基づいて前記一連の操作を実行したときの動作確認のために、前記取得された入力データを前記入力関数に渡して前記テスト・プログラムを前記自動機能テストツールに実行させる処理と、
をコンピュータに実行させることを特徴とする動作検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、製品の動作をテストするための技術、に関する。
【背景技術】
【０００２】
製品品質を保証する上で、製品出荷前の動作テストは不可欠である。一般的には、テスト・エンジニアが製品を手動操作し、その操作結果を確認することにより動作テストを実行することが多い。しかし、操作バリエーションが豊富な多機能製品の場合、手動による動作テストには限界がある。
【０００３】
そこで、テスト・プログラムで動作テストを自動実行することにより、動作テストの省力化を図ることも多い。たとえば、ＨＰ（Hewlett-Packard）社が提供する自動機能テストツール「ＱＴＰ（Quick Test Professional）」は、ユーザが自作したテスト・プログラムを実行することにより、動作テストを自動化する。
【特許文献１】特開２００４−２２７３９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、テスト・プログラムによる動作テストの場合、テスト・プログラムを作成する手間が発生する。また、作成者によって、テスト・プログラムの内容や品質にばらつきが生じるため、動作テストの信頼性を担保するのが難しい。
【０００５】
本発明は、上記課題に基づいて完成された発明であり、その主たる目的は、動作テストを効率的に実行するための技術、を提供することにある。
【課題を解決するための手段】
【０００６】
本発明のある態様は、所定機器の動作確認のためのテスト・プログラムを実行させる動作検証装置に関する。
この装置は、所定機器に対して実行された一連の操作の内容を示すログを取得し、各種操作を実現するためのロジックが組み込まれた複数種類の関数のうちログに記録された操作に対応する関数を選択し、所定機器へのデータ入力操作については所定機器への入力データを取得するためのインタフェースを備える入力関数を選択することにより、一連の操作を再現するためのテスト・プログラムを生成する。
そして、入力関数に渡すべき入力データを取得し、その入力データに基づいて一連の操作を実行したときの動作確認のために、取得された入力データを入力関数に渡してテスト・プログラムを実行させる。
【０００７】
なお、以上に示した各構成要素の任意の組み合わせ、本発明を方法、システム、記録媒体、コンピュータプログラムにより表現したものもまた、本発明の態様として有効である。
【発明の効果】
【０００８】
本発明によれば、動作テストを効率的に実行しやすくなる。
【発明を実施するための最良の形態】
【０００９】
図１（ａ）は、ポータルサイト第１画面３００の画面図である。
本実施例においては、ポータル・サイト「ＸＹＺ！」を対象とした動作テストについて説明する。ポータルサイト第１画面３００は、エディットボックス３０２と検索リンク３０４を含む。検索リンク３０４は、「ウェブ」、「ブログ」、「画像」、「辞書」という４つのリンクを含む。ユーザがエディットボックス３０２に文字列を入力し、検索リンク３０４のうちのいずれかをマウス・クリックすると、入力文字列の検索が開始される。たとえば、エディットボックス３０２に文字列「液晶」と入力し、リンク「ウェブ」をマウス・クリックした場合、文字列「液晶」を含むウェブサイトが検索対象となる。エディットボックス３０２に文字列「液晶」と入力し、リンク「ブログ」をマウス・クリックした場合には、このポータル・サイトに開設されているブログ（Weblog）のうち、文字列「液晶」を含むブログページが検索対象となる。
ここでは、エディットボックス３０２に文字列「テスト」が入力され、リンク「辞書」がマウス・クリックされたとする。
【００１０】
図１（ｂ）は、ポータルサイト第２画面３１０の画面図である。
ポータルサイト第１画面３００にて、「テスト」を入力し、「辞書」をマウス・クリックすると、図１（ｂ）に示すポータルサイト第２画面３１０が表示される。検索結果欄３０６には、このポータル・サイトが提供している「辞書」サービスにより、文字列「テスト」に関連する項目が羅列される。
ここで、検索結果欄３０６の１番上にあるリンク「テスト（test）」がマウス・クリックされたとする。
【００１１】
上記過程においては、以下に示す３つの操作がなされている。
Ａ１．ポータルサイト第１画面３００のエディットボックス３０２に文字列「テスト」を入力する操作。
Ａ２．ポータルサイト第１画面３００の検索リンク３０４のうち、リンク「辞書」をマウス・クリックする操作。
Ａ３．ポータルサイト第２画面３１０の検索結果欄３０６のうち、リンク「テスト（test）」をマウス・クリックする操作。
以下においては、上記Ａ１〜Ａ３の操作により実現される動作過程のことを、「辞書テスト」とよぶ。
【００１２】
図２は、辞書テストを実行したときのログ３２０を示す図である。
ＨＰ社のＱＴＰが導入されているクライアント端末を操作して、上記ポータル・サイトにアクセスし、Ａ１〜Ａ３の操作を実行した場合、ＱＴＰは図２に示すログ３２０を生成する。ログ３２０には、操作Ａ１〜Ａ３が所定フォーマットの符合文として記録される。
たとえば、操作Ａ１は、
Browser("XYZ!").Page("XYZ!").WebEdit("p").Set"テスト"
という符号文にて表現される。これは、"XYZ!"というウェブ・サイト、"XYZ!"という名前のウェブページ、pという名前のエディットボックス（図１（ａ）、図１（ｂ）に示すエディットボックス３０２に相当する）に対して、文字列「テスト」が入力されたことを意味している。
同様にして、操作Ａ２は、
Browser("XYZ!").Page("XYZ!").Link("辞書").Click
操作Ａ３は、
Browser("XYZ!").Page("XYZ!-すべての辞書-テスト").Link("テスト(test)").Click
という符号文にて表示される。本実施例においては、ＱＴＰの文法に基づいて説明するが、符合文のフォーマットはこれに限られるものではない。
【００１３】
ＱＴＰは、ログ３２０の符合文を解釈しながら、符合文により表現される操作を再現実行できる。このため、いったんログ３２０を生成すれば、同一内容の辞書テストを何度でも繰り返し実行できる。また、ログ３２０の一部を書き換えれば、手動操作時とは異なる内容にて辞書テストを実行できる。たとえば、
Browser("XYZ!").Page("XYZ!").WebEdit("p").Set"テスト"
に含まれる文字列「テスト」を別の文字列「テイスト」に変更し、
Browser("XYZ!").Page("XYZ!").WebEdit("p").Set"テイスト"
と書き換えてＱＴＰに入力すれば、エディットボックス３０２への入力文字列だけ変更した同内容の辞書テストを自動実行できる。
しかし、ログ３２０を書き換えながら動作テストを実行するには、ログ３２０の文法に関してある程度の知識が必要である。また、ログ３２０の書き換えに際し、人為的なミスが発生する可能性がある。
【００１４】
図３は、辞書テストを実行するためのプログラム３３０を示す図である。
ログ３２０により動作テストを実行する代わりに、ログ３２０と同等の内容をＶＢ（Visual Basic）スクリプト等で記述することにより、テスト・プログラムを作成してもよい。図３に示すプログラム３３０は、図２のログ３２０を参照しつつ作成されたテスト・プログラムである。
たとえば、操作Ａ１は、
WebEditSet(Browser("XYZ!").Page("XYZ!").WebEdit("p"),DataTable("p1,dtGlobalSheet")
というＶＢ関数により表現される。WebEditSet関数の具体的なロジックは、同図中段に記述されている通りである。
【００１５】
プログラム３３０、文字列「テスト」のような入力データをプログラム３３０中に含まない点においてログ３２０と異なる。代わりに、WebEditSet関数は、dtGlobalSheetとして表現されるファイル（以下、「入力データファイル」とよぶ）から入力データを受け取る。すなわち、ロジックと入力データが分離されることになる。入力データファイルの書き換えや取り替えにより、さまざまな入力データに基づいて同一ロジックの辞書テストを実行できる。手動による動作テストやログ３２０による動作テストに比べて、プログラム３３０による動作テストは、入力データのバリエーションを増やしやすいというメリットがある。
【００１６】
ただし、プログラム３３０による動作テストには、以下の問題点がある。
ｄ１．プログラムを作成する手間が新たに発生する。
ｄ２．プログラム作成者によって、プログラムの内容が変化する。たとえば、プログラマＰ１が操作Ａ１に対応して作成するWebEditSet関数と、プログラマＰ２が操作Ａ１に対応して作成するWebEditSet関数は、関数名は同じでもロジックが同一になるとは限らない。また、プログラム自体にバグが混入する可能性がある。このため、プログラム３３０自体の信頼性を担保するための取り組みが必要となる。また、プログラム３３０には、例外処理等、動作テストとは直接関係しないロジックも必要であるが、全てのプログラマが例外処理まで考慮したロジックを実装するとは限らない。たとえば、図３に示すWebEditSet関数の場合、入力データが空文字の場合にも対応できるようにロジックが組まれているが、別のプログラマがWebEditSet関数を実装する場合には、こういった配慮が欠如するかもしれない。
結果として、プログラマのスキルが動作テストの内容・結果に影響を及ぼしやすくなってしまう。
【００１７】
図４は、動作検証装置１００の機能ブロック図である。
ここに示す各ブロックは、ハードウェア的には、コンピュータのＣＰＵをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組み合わせによっていろいろなかたちで実現できることは、当業者には理解されるところである。
動作検証装置１００は、専用ハードウェアとして形成されてもよいし、ウェブブラウザなどのユーザインタフェースと連携するソフトウェア・モジュールとして形成されてもよい。
本実施例の動作検証装置１００とは、ＱＴＰのアドオンとして形成されるソフトウェア・モジュールであるとして説明する。
【００１８】
動作検証装置１００は、ＩＦ（インタフェース）部１１０、データ処理部１３０およびデータ保持部１４０を含む。
ＩＦ部１１０は、ユーザやＱＴＰとのインタフェースを担当する。データ処理部１３０は、ＩＦ部１１０やデータ保持部１４０から取得されたデータを元にして各種のデータ処理を実行する。データ処理部１３０は、ＩＦ部１１０とデータ保持部１４０との間のインタフェースの役割も果たす。データ保持部１４０は、各種データを保持するための記憶領域である。
【００１９】
ＩＦ部１１０：
ＩＦ部１１０は、入力部１１２と出力部１１８を含む。入力部１１２はユーザやＱＴＰからの入力処理を担当し、出力部１１８はユーザやＱＴＰに対する出力処理を担当する。入力部１１２は、ログ取得部１１４と入力データ取得部１１６を含む。ログ取得部１１４は、ＱＴＰからログを取得する。入力データ取得部１１６は、入力データファイルを取得し、入力データファイルからプログラムに提供する入力データを取得する。入力データファイルの詳細については、図５や図９に関連して詳述する。
【００２０】
出力部１１８は、関数設定画面表示部１２０、入力設定画面表示部１２２、プログラム画面表示部１２４およびケース設定画面表示部１２６を含む。関数設定画面表示部１２０は、図７に示す関数設定画面２１０を表示させる。入力設定画面表示部１２２は、図９に示す入力設定画面２３０を表示させる。プログラム画面表示部１２４は、図８に示すプログラム画面２２０を表示させる。ケース設定画面表示部１２６は、図１０に示すケース設定画面２４０を表示させる。
【００２１】
データ処理部１３０：
データ処理部１３０は、プログラム生成部１３２、プログラム実行部１３４およびテストケース登録部１３６を含む。プログラム生成部１３２は、動作テスト用のプログラムを自動的に生成する。プログラム実行部１３４は、生成されたプログラムを実行させる。本実施例においては、ＱＴＰにプログラムを実行させる。テストケース登録部１３６は、実行セットをケースファイルに登録する。実行セットおよびケースファイルについては図１０に関連して詳述する。
【００２２】
データ保持部１４０：
データ保持部１４０は、ログ保持部１４２、プログラム保持部１４４、入力データファイル保持部１４６、ケースファイル保持部１４８、関数保持部１５０および結果保持部１５２を含む。ログ保持部１４２は、ログを保持する。プログラム保持部１４４は、プログラムを保持する。入力データファイル保持部１４６は、入力データファイルを保持する。ケースファイル保持部１４８は、ケースファイルを保持する。関数保持部１５０は、動作テスト用のプログラムに登録される関数について、関数ライブラリを保持する。結果保持部１５２は、動作テストの結果を保持する。
【００２３】
図５は、本実施例において、ログを取得して動作テストを実行するまでの概要図である。
まず、動作テストの対象となる機器を手動操作する。本実施例においては、クライアント端末のウェブブラウザを操作して、ポータル・サイト「ＸＹＺ！」にアクセスする。ＱＴＰはログを生成し、ログ取得部１１４はＱＴＰからログを取得する。各種符合文にはあらかじめ関数が対応づけられている。関数設定画面表示部１２０は、関数保持部１５０の関数ライブラリを読み出し、ログに含まれる各符号文に対応する関数を一覧表示させる（Ｓ１）。関数設定画面表示部１２０において、ユーザは、適宜、関数を追加・変更・削除できる。こうして、プログラムに含まれるべき関数が特定される。Ｓ１については、図７に関連して後に詳述する。
【００２４】
次に、このプログラムに供給すべき入力データを設定する（Ｓ２）。設定内容は、入力データファイルとして登録される。Ｓ２については、図９に関連して後に詳述する。Ｓ１で設定された関数群からプログラムを自動生成する（Ｓ３）。Ｓ３については、図８に関連して後に詳述する。
【００２５】
次に、複数種類のプログラムおよび複数種類の入力データファイルから、プログラムと入力データファイルの組合せを「実行セット」として登録する。実行セットは複数個登録することもできる（Ｓ４）。設定内容は、ケースファイルとして登録される。たとえば、プログラムＰ１を入力データファイルＦ２に基づいて実行したあと、プログラムＰ２を入力データファイルＦ６に基づいて実行させたい場合、
実行セット１：プログラムＰ１＋入力データファイルＦ２
実行セット２：プログラムＰ２＋入力データファイルＦ６
としてケースファイルに登録される。Ｓ４については、図１０に関連して詳述する。
最後に、ケースファイルにしたがって、プログラムを実行する。上記例の場合には、プログラム実行部１３４は、実行セット１と実行セット２を連続実行させる。プログラム実行部１３４は、プログラムの実行結果、いいかえれば、テスト結果を結果保持部１５２に登録する。
【００２６】
図６は、ログ画面２００の画面図である。
ログ取得部１１４がログを取得すると、出力部１１８はログ画面２００におけるログ表示領域２０２にログを画面表示させる。ユーザは、ＱＴＰのログをログ表示領域２０２にコピー＆ペーストしてもよい。あるいは、出力部１１８は、ログ画面２００の表示時において、ＱＴＰが生成したログ（ファイル）を取得し、ログ表示領域２０２に画面表示させてもよい。ユーザが実行ボタン２０４をマウス・クリックすると、次の図７に示す関数設定画面２１０が表示される。
【００２７】
図７は、関数設定画面２１０の画面図である。
プログラム生成部１３２は、ログに含まれる符号文について関数を特定し、関数設定画面２１０の関数欄２１４に特定した関数を一覧表示させる。番号欄２１２は実行順序、説明欄２１６は関数の概要説明、オブジェクト欄２１８は操作対象オブジェクト、パラメータ欄２１９はパラメータ名、入力値欄２１７は入力データを示す。
先述の操作Ａ１を示す符合文、
Browser("XYZ!").Page("XYZ!").WebEdit("p").Set"テスト"
には、あらかじめ、WebEditSet関数が関数ライブラリにおいて対応づけられている。プログラム生成部１３２はログ３２０の１番目の符合文を読み出すと、関数保持部１５０の関数ライブラリを参照し、WebEditSet関数を特定する。操作Ａ１が操作対象とするオブジェクトは、「Browser("XYZ!").Page("XYZ!")」のページであるため、オブジェクト欄２１８には、「Browser("XYZ!").Page("XYZ!")」が設定される。WebEditSet関数は、エディットボックスp（エディットボックス３０２）に設定される入力データを引数とする関数である。入力値欄２１７において、エディットボックスpに設定すべき入力データを設定することもできるが、関数設定画面２１０では入力データを登録しないものとして説明する。エディットボックスpに設定すべき入力データは、図９に関連して詳述する入力設定画面２３０にて設定される。
【００２８】
ログ３２０には操作Ａ１〜Ａ３に対応して３つの符合文が含まれているため、プログラム生成部１３２は３つの関数を特定する。ユーザは、関数設定画面２１０にて、関数を追加・削除・変更してもよい。図７における４番目のTextCheck関数と５番目のWebScreenCapture関数は、ユーザが追加選択した関数である。
【００２９】
TextCheck関数は、表示中のウェブページにおいて、変数qに代入される文字列が含まれているかを判定する関数である。WebScreenCapture関数は、表示中のウェブページを画面キャプチャする関数である。動作テストの結果を証跡管理する上で、WebScreenCapture関数は便利な関数である。このように、関数ライブラリには、WebEditSet関数のようにユーザの操作に対応した関数だけでなく、TestCheck関数のように動作テストを補助・支援するための関数も用意されている。ユーザは、関数ライブラリから所望の関数を選択するだけで、動作テストに含めたいロジックを設定できる。
【００３０】
テストケース設定ボタン２１５がクリックされると、図１０のケース設定画面２４０が表示される。入力データファイル作成ボタン２１３がクリックされると、図９の入力設定画面２３０が表示される。プログラム作成ボタン２１１がクリックされると、図８のプログラム画面２２０が表示される。
【００３１】
本実施例の動作検証装置１００には、以下のメリットがある。
ｍ１．ＧＵＩ（Graphical User Interface）ベースで関数を選択するだけで、プログラムに含めたいロジックを選択できる。プログラムを作成するための手間がほとんどかからない。
ｍ２．プログラムに含まれる関数は、関数ライブラリとして登録済みの関数であるため、作成者によってプログラムの品質がばらつきにくい。例外処理等の必要なロジックも、あらかじめ各関数に組み込まれている。
【００３２】
図８は、プログラム画面２２０の画面図である。
関数設定画面２１０において、プログラム作成ボタン２１１がマウス・クリックされると、プログラム生成部１３２がプログラムを生成し、プログラム画面表示部１２４はプログラム画面２２０におけるプログラム表示領域２２２にそのソースコードを表示させる。プログラムは、プログラム保持部１４４に保持される。
【００３３】
図９は、入力設定画面２３０の画面図である。
関数設定画面２１０において、入力データファイル作成ボタン２１３がマウス・クリックされると、入力設定画面表示部１２２は入力設定画面２３０を表示させる。関数設定画面２１０においては、パラメータpとqが定義されている。番号欄２３２は入力順序、変数欄２３４はパラメータpへの入力データ、変数欄２３６はパラメータqへの入力データを示す。入力設定画面２３０では、このパラメータpとqに代入する入力データを設定する。各入力データは、入力データファイルとして入力データファイル保持部１４６に保持される。
【００３４】
たとえば、プログラム３３０に、図９に示す形式の入力データファイルを与えると、
１．文字列「テスト」をエディットボックス３０２に入力して辞書を検索し、実行結果を示す画面に文字列「試験」が含まれているかを判定するテスト
２．文字列「test」をエディットボックス３０２に入力して辞書を検索し、実行結果を示す画面に文字列「試験」が含まれているかを判定するテスト
３．文字列「テストケース」をエディットボックス３０２に入力して辞書を検索し、実行結果を示す画面に文字列「試験」が含まれているかを判定するテスト
・・・のように、異なる入力データに基づく複数の辞書テストを連続実行できる。
【００３５】
図１０は、ケース設定画面２４０の画面図である。
関数設定画面２１０において、テストケース設定ボタン２１５がマウス・クリックされると、ケース設定画面表示部１２６はケース設定画面２４０を表示させる。番号欄２４４は実行順序、実行セット欄２４５は実行セットの概要、プログラム欄２４６は実行対象となるプログラム、入力データファイル欄２４７は入力データの抽出対象となる入力データファイルを示す。
ここでは、インターネット証券のウェブ・サイトを動作テストの対象として説明する。
【００３６】
同図においては、１．ログイン、２．ニュースチェック、３．株売り、４．債券売り、５．住所変更、６．ログアウトという６つの実行セットが登録されている。まず、ＱＴＰは、プログラム「login.vbs」から「login」プロジェクトを生成する。ここでいう「プロジェクト」とは、ＱＴＰの実行形式ファイル群を含むディレクトリである。ＱＴＰは「login」プロジェクトを入力として、login.vbsとlogin.xlsに定義された処理を実行する。ユーザが実行ボタン２４８をマウス・クリックすると、最初に、実行セット「ログイン」の「login」プロジェクトが実行される。１番目の実行セット「ログイン」が完了すると、実行セット「ニュースチェック」として、「ncheck」プロジェクトが実行される。
【００３７】
このように、実行ボタン２４８がマウス・クリックされると、１．ログイン、２．ニュースチェック、３．株売り、４．債券売り、５．住所変更、６．ログアウトという６つの実行セットが連続実行される。これにより、「ログインして、ニュースをチェックした後、手持ち株と手持ち債券の売りを指示し、住所変更をした上で、ログアウトする」というテスト・シナリオに基づく動作テストを自動化できる。
【００３８】
ユーザは、ケース設定画面２４０において自由にテスト・シナリオを作ることができる。たとえば、実行セット「株売り」の代わりに実行セット「株買い」を登録してもよいし、実行セット「株売り」の入力データファイルとして「stock1.xls」ではなく別の入力データファイルを登録してもよい。ケース設定画面２４０において登録されたテスト・シナリオはケースファイルとして記録され、ケースファイル保持部１４８に保持される。
テスト・シナリオの構成や入力データファイル等を少しずつ変化させることにより、動作テストのバリエーションを広げやすくなる。
【００３９】
以上、実施例に基づいて動作検証装置１００を説明した。
動作検証装置１００によれば、プログラムと入力データ、すなわち、処理とパラメータを分離できる。そして、そのためのプログラムをＧＵＩベースの設定に基づき自動生成できる。これにより、プログラムに含めるロジックの多様性を確保しつつも、安定した品質のプログラムを簡易に生成できる。また、入力データファイルの内容を変更するだけで、動作テストの内容を変更できるため、動作テストのバリエーションを広げやすくなる。
【００４０】
更に、実行セットをケースファイルに登録してテスト・シナリオを作ることにより、既存のプログラムを組合せながら、さまざまな状況における動作テストを実現できる。また、WebEditSet関数のようなテスト対象機器を操作するための関数だけでなく、WebScreenCapture関数のような動作テストを支援するための関数を用意しておくことにより、動作テストの効率や信頼性をいっそう向上させやすくなる。
【００４１】
以上、本発明について実施例をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００４２】
本実施例においては、ＱＴＰがユーザの操作を受け付け、ログを生成したことを条件として、動作検証装置１００がプログラムを作成している。
変形例として、ウェブブラウザがＨＴＭＬファイルを取得した時点で、プログラムを生成してもよい。この場合、動作検証装置１００は、ＨＴＭＬファイルに含まれるフォームタグを検索し、ＨＴＭＬファイルにどのような入力インタフェースが含まれているかを特定する。そして、各入力インタフェースにデータを入力するための関数を選択し、これらの関数をさまざまな順序で並べれば、ユーザによる明示的なウェブ操作がなくても、テスト用のプログラムを生成できる。
【図面の簡単な説明】
【００４３】
【図１（ａ）】ポータルサイト第１画面３００の画面図である。
【図１（ｂ）】ポータルサイト第２画面３１０の画面図である。
【図２】辞書テストを実行したときのログを示す図である。
【図３】辞書テストを実行するためのプログラムを示す図である。
【図４】動作検証装置の機能ブロック図である。
【図５】ログを取得して動作テストを実行するまでの概要図である。
【図６】ログ画面の画面図である。
【図７】関数設定画面の画面図である。
【図８】プログラム画面の画面図である。
【図９】入力設定画面の画面図である。
【図１０】ケース設定画面の画面図である。
【符号の説明】
【００４４】
１００  動作検証装置、  １１０  ＩＦ部、  １１２  入力部、  １１４  ログ取得部、  １１６  入力データ取得部、  １１８  出力部、  １２０  関数設定画面表示部、  １２２  入力設定画面表示部、  １２４  プログラム画面表示部、  １２６  ケース設定画面表示部、  １３０  データ処理部、  １３２  プログラム生成部、  １３４  プログラム実行部、  １３６  テストケース登録部、  １４０  データ保持部、  １４２  ログ保持部、  １４４  プログラム保持部、  １４６  入力データファイル保持部、  １４８  ケースファイル保持部、１５０  関数保持部、１５２  結果保持部、  ２００  ログ画面、  ２０２  ログ表示領域、  ２０４  実行ボタン、  ２１０  関数設定画面、  ２１１  プログラム作成ボタン、  ２１２  番号欄、  ２１３  入力データファイル作成ボタン、  ２１４  関数欄、  ２１５  テストケース設定ボタン、  ２１６  説明欄、  ２１７  入力値欄、  ２１８  オブジェクト欄、  ２１９  パラメータ欄、  ２２０  プログラム画面、  ２２２  プログラム表示領域、  ２３０  入力設定画面、  ２３２  番号欄、  ２３４  変数欄、  ２３６  変数欄、  ２４０  ケース設定画面、  ２４４  番号欄、  ２４５  実行セット欄、  ２４６  プログラム欄、  ２４７  入力データファイル欄、  ２４８  実行ボタン、  ３００  ポータルサイト第１画面、  ３０２  エディットボックス、  ３０４  検索リンク、  ３０６  検索結果欄、  ３１０  ポータルサイト第２画面、  ３２０  ログ、  ３３０  プログラム。  
【図１（ａ）】
2010039901.tif 000003
【図１（ｂ）】
2010039901.tif 000004
【図２】
2010039901.tif 000005
【図３】
2010039901.tif 000006
【図４】
2010039901.tif 000007
【図５】
2010039901.tif 000008
【図６】
2010039901.tif 000009
【図７】
2010039901.tif 000010
【図８】
2010039901.tif 000011
【図９】
2010039901.tif 000012
【図１０】
2010039901.tif 000013