(57)【要約】【課題】被テストプログラムのうち所望の部分だけをテストすることができ、被テストプログラムが編集された場合においてもその編集に左右されずにテストすることができ、テストを行うために必要となる変数の設定や検証のための手間をかけずにテストする。【解決手段】テストプログラム１５１に従って、被テストプログラム１６１のテストを実行する範囲を指定するとともに、被テストプログラム１６１の指定される範囲に付与する変数の値を設定するテストプログラム実行部１１０と、被テストプログラム１６１の指定された範囲を実行し、指定される範囲にて参照される変数の値、並びに指定された範囲を実行した結果である変数の値を管理する被テストプログラム実行部１２０とを有し、テストプログラム実行部１１０は、指定された範囲を実行した結果である変数の値をテストプログラム１５１にて予め設定された値と比較することにより検証する。【選択図】図１
2007193586.tif 000002
【特許請求の範囲】
【請求項１】
被テストプログラムのテストを行うためのテストプログラムに従って、前記被テストプログラムのテストを実行する範囲を指定するとともに、前記被テストプログラムのうち前記指定される範囲に付与する変数の値を設定するテストプログラム実行手段と、
前記被テストプログラムについて前記テストプログラム実行手段にて指定された範囲を実行し、該指定される範囲にて参照される変数の値、並びに前記指定された範囲を実行した結果である変数の値を管理する被テストプログラム実行手段とを有し、
前記テストプログラム実行手段は、前記被テストプログラム実行手段にて管理される、前記指定された範囲を実行した結果である変数の値を取得し、該変数の値を前記テストプログラムにて予め設定された値と比較することにより検証するプログラムテスト支援システム。
【請求項２】
前記テストプログラム実行手段は、
前記テストプログラムに従って、前記被テストプログラムのテストを実行する範囲を指定する実行範囲指定手段と、
前記テストプログラムに従って、前記被テストプログラムのうち前記実行範囲指定手段にて指定される範囲に付与する変数の値を設定する変数値設定手段と、
前記被テストプログラム実行手段にて管理される、前記実行範囲指定手段にて指定された範囲を実行した結果である変数の値を取得し、該変数の値を前記テストプログラムにて予め設定された値と比較することにより検証する変数値検証手段とを具備し、
前記被テストプログラム実行手段は、
前記実行範囲指定手段により指定された範囲に基づいて、前記被テストプログラムのテストの実行を開始する場所を制御する実行位置制御手段と、
前記実行範囲指定手段により指定された範囲の終了点で前記被テストプログラムの実行を停止させる実行停止手段と、
前記被テストプログラムについて前記実行範囲指定手段にて指定される範囲にて参照される変数の値、並びに前記実行範囲指定手段にて指定された範囲を実行した結果である変数の値を管理する変数管理手段とを具備することを特徴とする請求項１に記載のプログラムテスト支援システム。
【請求項３】
前記テストプログラム実行手段は、前記テストプログラムに従って、前記被テストプログラムのテスト実行範囲を解析し、前記被テストプログラムの誤りによってテスト終了点へ遷移しないパスを導出する実行範囲解析手段を有し、
前記実行範囲指定手段は、前記テストプログラムに従って、前記被テストプログラムのテストの成功終了位置を指定するとともに、前記実行範囲解析手段にて導出されたパスに基づいて、前記被テストプログラムのテストの失敗終了位置を指定することを特徴とする請求項２に記載のプログラムテスト支援システム。
【請求項４】
テストプログラムに従って被テストプログラムのテストを実行するテストプログラム実行手段と、前記テストプログラム実行手段の制御によって前記被テストプログラムを実行する被テストプログラム実行手段とを有してなるプログラムテスト支援システムを用いて前記被テストプログラムのテストを実行する方法であって、
前記テストプログラム実行手段が、前記テストプログラムに従って、前記被テストプログラムのテストを実行する範囲を指定する処理と、
前記テストプログラム実行手段が、前記テストプログラムに従って、前記被テストプログラムのうち前記指定される範囲に付与する変数の値を設定する処理と、
前記被テストプログラム実行手段が、前記指定された範囲に基づいて、前記被テストプログラムのテストの実行を開始する場所を制御する処理と、
前記被テストプログラム実行手段が、前記テストプログラム実行手段の制御によって前記被テストプログラムのうち前記指定された範囲を実行する処理と、
前記被テストプログラム実行手段が、前記被テストプログラムについて前記指定される範囲にて参照される変数の値、並びに前記被テストプログラムについて前記指定された範囲を実行した結果である変数の値を管理する処理と、
前記被テストプログラム実行手段が、前記指定された範囲の終了点で被テストプログラムの実行を停止させる処理と、
前記テストプログラム実行手段が、前記被テストプログラム実行手段にて管理される、前記被テストプログラムについて前記指定された範囲を実行した結果である変数の値を取得し、該変数の値を前記テストプログラムにて予め設定された値と比較することにより検証する処理とを有する方法。
【請求項５】
前記テストプログラム実行手段が、前記テストプログラムに従って、前記被テストプログラムのテスト実行範囲を解析し、前記被テストプログラムの誤りによってテスト終了点へ遷移しないパスを導出する処理と、
前記テストプログラム実行手段が、前記テストプログラムに従って、前記被テストプログラムのテストの成功終了位置を指定するとともに、前記導出されたパスに基づいて、前記被テストプログラムのテストの失敗終了位置を指定する処理とを有することを特徴とする請求項４に記載の方法。
【請求項６】
テストプログラムに従って被テストプログラムのテストを実行するコンピュータに、
前記テストプログラムに従って、前記被テストプログラムのテストを実行する範囲を指定する手順と、
前記テストプログラムに従って、前記被テストプログラムのうち前記指定される範囲に付与する変数の値を設定する手順と、
前記テストプログラムの制御によって前記被テストプログラムのうち前記指定された範囲を実行する手順と、
前記指定された範囲に基づいて、前記被テストプログラムのテストの実行を開始する場所を制御する手順と、
前記被テストプログラムについて前記指定される範囲にて参照される変数の値、前記被テストプログラムについて前記指定された範囲を実行した結果である変数の値を管理する手順と、
前記指定された範囲の終了点で被テストプログラムの実行を停止させる手順と、
前記被テストプログラムについて前記指定された範囲を実行した結果である変数の値を前記テストプログラムにて予め設定された値と比較することにより検証する手順とを実行させるプログラム。
【請求項７】
コンピュータに、
前記テストプログラムに従って、前記被テストプログラムのテスト実行範囲を解析し、前記被テストプログラムの誤りによってテスト終了点へ遷移しないパスを導出する手順と、
前記テストプログラムに従って、前記被テストプログラムのテストの成功終了位置を指定するとともに、前記導出されたパスに基づいて、前記被テストプログラムのテストの失敗終了位置を指定する手順とを実行させることを特徴とする請求項６に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムテストを支援するプログラムテスト支援システム、方法及びプログラムに関し、特に、プログラムのうち指定した部分だけのプログラムテストを支援するプログラムテスト支援システム、方法及びプログラムに関する。
【背景技術】
【０００２】
従来より、プログラムテストを支援するための様々な方法が考えられている。
【０００３】
図１６は、プログラムテストを支援する従来のデバック方法の一例を説明するための機能構成図である。
【０００４】
本従来例は図１６に示すように、被テストプログラム実行部１１００と、変数値入力部１１２０とから構成され、被テストプログラム実行部１１００は、変数参照管理部１１０１を備えている。このように構成されたシステムにおいては、被テストプログラム実行部１１００によって被テストプログラム１１１０を実行させる。被テストプログラム実行部１１００は、変数への参照があった場合に変数参照管理部１１０１を参照し、変数参照管理部１１０１にてその変数が設定されていなければ、ユーザに変数入力部１１２０を介してその値の入力を促し、その値をその変数の値として実行を継続する（例えば、特許文献１参照。）。
【０００５】
図１７は、従来のプログラムテスト支援方法の他の例を説明するための図である。
【０００６】
本従来例は図１７に示すように、テスト範囲指定部１２００と、テストプログラム生成部１２１０とから構成されている。このように構成されたシステムにおいては、被テストプログラム１２２０のうち所望の部分をテスト範囲指定部１２００により指定すると、テスト範囲指定部１２００において、その指定された範囲の命令列及びその命令列により参照されている変数定義を抽出し、命令列、変数定義抽出ファイル１２３０を生成する。そして、テストプログラム生成部１２１０において、命令列、変数定義抽出ファイル１２３０とテストデータ１２４０を入力として、テストプログラム１２５０を生成する（例えば、特許文献２参照。）。
【０００７】
図１８は、プログラムテストを支援する従来のプログラムデバックシステムの他の例を説明するための図である。
【０００８】
本従来例は図１８に示すように、ブロック区切り設定部１８０１と、ブロック実行部１８０２とから構成されている。このように構成されたシステムにおいては、ブロック区切り設定部１８０１にて被テストプログラム１８１０のブロック区切り１８１１，１８１２を設定し、ブロック実行部１８０２によって、被テストプログラム１８１０の実行開始行１８１５から次のブロック区切り１８１２までを実行する（例えば、特許文献３参照。）。
【特許文献１】特開２００１−２２９０４４号公報
【特許文献２】特開２０００−３３９１９２号公報（第９頁、図１）
【特許文献３】特開２００２−２７８７９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述した従来の技術においては、以下のような問題点がある。
【００１０】
（１）被テストプログラムを任意の点から開始する機能がないため、テストしたい場所からテストを開始することができない。特に、実装が複雑になりそうな部分を集中的に網羅する際、被テストプログラムに適切な入力を与え、その部分まで遷移させるようにすることは、手間がかかり、効率が悪い。
【００１１】
（２）テストプログラムを作成に必要な情報を被テストプログラムから取得する場合、被テストプログラムを修正する度にテストプログラムを作り直すことになり、テストプログラムの作成を効率的に行うことができない。さらに、被テストプログラムから取得した情報を元にテストプログラムを生成し、そのテストプログラムに編集を加えてテストプログラムを完成させる場合、再生成する度にテストプログラムを編集する必要があり、開発の手間がかかる上に、テストプログラム自身にバグを混入させてしまう可能性がある。
【００１２】
（３）プログラムテストを行うために必要となる変数の設定や検証を、テストを行う度に行わなければならず、そのための手間がかかってしまう。
【００１３】
本発明は、上述したような従来の技術が有する問題点に鑑みてなされたものであって、被テストプログラムのうち所望の部分だけをテストすることができ、かつ、被テストプログラムが編集された場合においてもその編集に左右されずにテストすることができ、かつ、テストを行うために必要となる変数の設定や検証のための手間をかけずにテストすることができるプログラムテスト支援システム、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記目的を達成するために本発明は、
被テストプログラムのテストを行うためのテストプログラムに従って、前記被テストプログラムのテストを実行する範囲を指定するとともに、前記被テストプログラムのうち前記指定される範囲に付与する変数の値を設定するテストプログラム実行手段と、
前記被テストプログラムについて前記テストプログラム実行手段にて指定された範囲を実行し、該指定される範囲にて参照される変数の値、並びに前記指定された範囲を実行した結果である変数の値を管理する被テストプログラム実行手段とを有し、
前記テストプログラム実行手段は、前記被テストプログラム実行手段にて管理される、前記指定された範囲を実行した結果である変数の値を取得し、該変数の値を前記テストプログラムにて予め設定された値と比較することにより検証する。
【００１５】
上記のように構成された本発明においては、テストプログラム実行手段において、テストプログラムに従って、被テストプログラムのテストを実行する範囲が指定されるとともに、被テストプログラムのうち指定される範囲に付与する変数の値が設定される。被テストプログラム実行手段においては、テストプログラム実行手段にて指定された範囲に基づいて、被テストプログラムのテストの実行を開始する場所が制御され、テストプログラム実行手段の制御によって被テストプログラムが実行される。被テストプログラムの実行状態においては、被テストプログラム実行手段において、被テストプログラムについて指定される範囲にて参照される変数の値、並びに指定された範囲を実行した結果である変数の値が管理される。そして、指定された範囲の終了点で被テストプログラムの実行が停止する。その後、テストプログラム実行手段において、被テストプログラムについて指定された範囲を実行した結果である変数の値が被テストプログラム実行手段から取得され、その変数の値がテストプログラムにて予め設定された値と比較することにより検証される。
【発明の効果】
【００１６】
本発明は、以上説明したように構成されているので、以下のような効果を奏する。
【００１７】
（１）テストプログラムにおいて、被テストプログラム中でテストをしたい範囲の選択、そのテスト範囲に対する入力となる変数値の設定及び出力となる変数値の検証が記述でき、かつ、被テストプログラム実行手段が、テストプログラムで指定された被テストプログラムのテスト範囲のみを実行でき、かつ、そのテスト範囲における変数の値を取得することができるため、被テストプログラムのうち所望の部分だけをテストすることができる。
【００１８】
（２）被テストプログラムの修正に応じてテストプログラムを作り直さなくて済むだけでなく、テストプログラムのコードを固定させることができることでテストプログラムへのバグ混入させる機会を減らすことができ、テストプログラムの作成、実施を効率的に行うことができる。
【００１９】
（３）被テストプログラムを動作させる範囲、変数値の設定、検証をテストプログラムに集約でき、かつ、それをテストプログラム実行手段により実行できるため、被テストプログラムの実行を常時監視する必要がなく、そのテスト実行結果を見るだけでテストの成功可否が可能となる。
【発明を実施するための最良の形態】
【００２０】
以下に、本発明の実施の形態について図面を参照して説明する。
【００２１】
（第１の実施の形態）
図１は、本発明のプログラムテスト支援システムの第１の実施の形態を示す図である。
【００２２】
本形態は図１に示すように、プログラム制御により動作する、中央処理装置やプロセッサ、データ処理装置等となるコンピュータ１００と、テストプログラム１５１が格納されたテストプログラム格納部１５０と、被テストプログラム１６１が格納された被テストプログラム格納部１６０とから構成されている。
【００２３】
コンピュータ１００は、テストプログラム格納部１５０からテストプログラム１５１を取り出し、テストプログラム１５１に従って被テストプログラム１６１のテストを実行するテストプログラム実行部１１０と、被テストプログラム格納手段１６０から被テストプログラム１６１を取り出し、テストプログラム実行部１１０の制御によって被テストプログラム１６１を実行する被テストプログラム実行部１２０とを含む。
【００２４】
テストプログラム１５１は、被テストプログラム１６１中のどの部分をテストの対象とするか、そして、そのテスト対象部分にどんな変数値を付与するのか、そして、そのテスト対象部分を実行した結果、どんな変数値になっていることを期待するかを含んでいる。
【００２５】
テストプログラム実行部１１０は、テストプログラム１５１に従って、被テストプログラム１６１のテストを実行する範囲を指定する実行範囲指定部１１１と、テストプログラム１５１に従って、被テストプログラム１６１のうち実行範囲指定部１１１にて指定される範囲に付与する変数の値を設定する変数値設定部１１２と、被テストプログラム１６１について実行範囲指定部１１１にて指定された範囲を実行した結果である変数の値を、テストプログラム１５１にて予め設定された値と比較することにより検証する変数値検証部１１３とを有している。
【００２６】
被テストプログラム実行部１２０は、実行範囲指定部１１１により指定された範囲に基づいて、被テストプログラム１６１のテストの実行を開始する場所を制御する実行位置制御部１２１と、実行範囲指定部１１１により指定された範囲の終了点で被テストプログラム１６１の実行を停止させる実行停止部１２２と、被テストプログラム１６１について実行範囲指定部１１１にて指定される範囲にて参照される変数の値、並びに実行範囲指定部１１１にて指定された範囲を実行した結果である変数の値を管理する変数管理部１２３とを有しており、実行位置制御手段１２１により被テストプログラム１６１中の指定された場所から被テストプログラム１６１の実行を始め、実行停止手段１２２により被テストプログラム１６１を指定された場所で被テストプログラム１６１の実行を終了する。
【００２７】
以下に、上記のように構成されたプログラムテスト支援システムにおける処理について説明する。
【００２８】
図２は、図１に示したプログラムテスト支援システムにおける処理を説明するためのフローチャートである。
【００２９】
まず、テストプログラム実行部１１０の実行範囲指定部１１１において、テストプログラム格納部１５０から取り出したテストプログラム１５１の内容に従って、被テストプログラム格納部１６０から取り出した被テストプログラム１６１の実行範囲を設定し、その実行開始位置を被テストプログラム実行部１２０の実行位置制御部１２１に対して指定するとともに、実行終了位置を被テストプログラム実行部１２０の実行停止部１２２に対して指定する（ステップＡ１）。なお、上述したように、テストプログラム１５１には、被テストプログラム１６１中のどの部分をテストの対象とするかが含まれているため、実行範囲指定部１１１においては、テストプログラム１５１の内容に従って被テストプログラム１６１の実行範囲を設定することができる。
【００３０】
次に、テストプログラム実行部１１０の変数値設定部１１２において、テストプログラム格納部１５０から取り出したテストプログラム１５１の内容に従って、被テストプログラム格納部１６０から取り出した被テストプログラム１６１のうち、実行範囲指定部１１１にて指定された範囲に付与する変数値を設定し、被テストプログラム実行部１２０の変数管理部１２３に通知する（ステップＡ２）。なお、上述したように、テストプログラム１５１には、テスト対象部分にどんな変数値を付与するのかが含まれているため、変数値設定部１１２においては、テストプログラム１５１の内容に従って被テストプログラム１６１に付与する変数値を設定することができる。
【００３１】
次に、被テストプログラム実行部１２０において、実行範囲指定部１１１から指定され、実行位置制御部１２１にて制御される実行開始位置から被テストプログラム１６１をステップ実行する（ステップＡ３）。
【００３２】
そして、被テストプログラム１６１の実行中において、変数値設定部１１２にて設定され、変数管理手段１２３で保持されていない変数の値が取得されれば（ステップＡ４）、テストは失敗とみなし終了する（ステップＡ５）。
【００３３】
一方、被テストプログラム１６１が実行されていき、実行範囲指定部１１１から指定された実行終了位置に達した場合は（ステップＡ６）、実行停止部１２２によって被テストプログラム１６１の実行が停止し、テストプログラム実行部１１０の変数値検証部１１３において、変数管理部１２３から検証対象の変数値を取得し、その変数値が期待通りか検証して終了する（ステップＡ７）。なお、上述したように、テストプログラム１５１には、テスト対象部分を実行した結果、どんな変数値になっていることを期待するかが含まれているため、変数値検証部１１３においては、変数管理部１２３から取得した変数の値を、テストプログラム１５１にて予め設定された値と比較することにより検証することになる。
【００３４】
上述したように本形態においては、被テストプログラムの実行開始位置、終了位置及び参照可能な変数をテストプログラムから制御できるように構成されているため、被テストプログラム中の所望の部分だけをテストすることができる。さらに、被テストプログラムからテストプログラムが生成される構成ではないため、被テストプログラムを編集してもテストプログラムを再生成する必要がない。この結果、テストプログラムを固定化することができ、テスト作成、実施にかかる時間を短くすることができる。
【００３５】
（第２の実施の形態）
図３は、本発明のプログラムテスト支援システムの第２の実施の形態を示す図である。
【００３６】
本形態は図３に示すように、プログラム制御により動作する、中央処理装置やプロセッサ、データ処理装置等となるコンピュータ２００と、テストプログラム２５１が格納されたテストプログラム格納部２５０と、被テストプログラム２６１が格納された被テストプログラム格納部２６０とから構成されている。
【００３７】
コンピュータ２００は、テストプログラム格納部２５０からテストプログラム２５１を取り出し、テストプログラム２５１に従って被テストプログラム２６１のテストを実行するテストプログラム実行部２１０と、被テストプログラム格納手段２６０から被テストプログラム２６１を取り出し、テストプログラム実行部２１０の制御によって被テストプログラム２６１を実行する被テストプログラム実行部２２０とを含む。
【００３８】
テストプログラム２５１は、被テストプログラム２６１中のどの部分をテストの対象とするか、そして、そのテスト対象部分にどんな変数値を付与するのか、そして、そのテスト対象部分を実行した結果、どんな変数値になっていることを期待するかを含んでいる。
【００３９】
テストプログラム実行部２１０は、テストプログラム２５１に従って、被テストプログラム２６１のテスト実行範囲を解析し、被テストプログラム２６１の実行フロー上、条件分岐やループ、例外送出等、被テストプログラム２６１に誤りがあったとき、遷移しうる到達すべきでない実行位置のリストを抽出し、被テストプログラム２６１の誤りによってテスト終了点へ遷移しないパスを導出する実行範囲解析部２１４と、テストプログラム２５１に従って、被テストプログラム２６１のテストの実行開始位置及び成功終了位置を指定するとともに、実行範囲解析部２１４にて導出されたパスに基づいて、被テストプログラム２６１のテストの失敗終了位置を指定する実行範囲指定部２１１と、テストプログラム２５１に従って、被テストプログラム２６１のうち実行範囲指定部２１１にて指定される範囲に付与する変数の値を設定する変数値設定部２１２と、被テストプログラム２６１について実行範囲指定部２１１にて指定された範囲を実行した結果である変数の値を、テストプログラム２５１にて予め設定された値と比較することにより検証する変数値検証部２１３とを有している。
【００４０】
被テストプログラム実行部２２０は、実行範囲指定部２１１により指定された範囲に基づいて、被テストプログラム２６１のテストの実行を開始する場所を制御する実行位置制御部２２１と、実行範囲指定部２１１により指定された範囲の終了点で被テストプログラム２６１の実行を停止させる実行停止部２２２と、被テストプログラム２６１について実行範囲指定部２１１にて指定される範囲にて参照される変数の値、並びに実行範囲指定部２１１にて指定された範囲を実行した結果である変数の値を管理する変数管理部２２３とを有しており、実行位置制御手段２２１により被テストプログラム２６１中の指定された場所から被テストプログラム２６１の実行を始め、実行停止手段２２２により被テストプログラム２６１を指定された場所で被テストプログラム２６１の実行を終了する。この際、実行範囲指定部２１１にて指定された失敗終了位置にて被テストプログラム２６１の実行を終了する場合は、テストが失敗したことをテストプログラム実行部２１０に報告して終了する。
【００４１】
以下に、上記のように構成されたプログラムテスト支援システムにおける処理について説明する。
【００４２】
図４は、図３に示したプログラムテスト支援システムにおける処理を説明するためのフローチャートである。
【００４３】
まず、テストプログラム実行部２１０の実行範囲解析部２１４において、テストプログラム格納部２５０から取り出したテストプログラム２５１の内容に従って、被テストプログラム格納部２６０から取り出した被テストプログラム２６１の実行範囲を解析し、被テストプログラム２６１の誤り等によりテスト範囲から外れた実行位置に遷移しうる実行位置を抽出する（ステップＢ１）。
【００４４】
次に、テストプログラム実行部２１０の実行範囲指定部２１１において、テストプログラム格納部２５０から取り出したテストプログラム２５１の内容に従って、被テストプログラム２６１の実行開始位置を被テストプログラム実行部２２０の実行位置制御部２２１に対して指定し、また、被テストプログラム実行部２２０の実行停止部２２２に対して、被テストプログラム２６１のテストの成功終了位置を指定するとともに、実行範囲解析部２１４にて導出されたパスに基づいて、被テストプログラム２６１のテストの失敗終了位置を指定する（ステップＢ２）。なお、上述したように、テストプログラム２５１には、被テストプログラム２６１中のどの部分をテストの対象とするかが含まれているため、実行範囲解析部２１４においては、テストプログラム２５１の内容に従って被テストプログラム２６１の実行範囲を解析することができる。
【００４５】
次に、テストプログラム実行部２１０の変数値設定部２１２において、テストプログラム格納部２５０から取り出したテストプログラム２５１の内容に従って、被テストプログラム格納部２６０から取り出した被テストプログラム２６１のうち、実行範囲指定部２１１にて指定された範囲に付与する変数値を設定し、被テストプログラム実行部２２０の変数管理部２２３に通知する（ステップＢ３）。なお、上述したように、テストプログラム２５１には、テスト対象部分にどんな変数値を付与するのかが含まれているため、変数値設定部２１２においては、テストプログラム２５１の内容に従って被テストプログラム２６１に付与する変数値を設定することができる。
【００４６】
次に、被テストプログラム実行部２２０において、実行範囲指定部２１１から指定され、実行位置制御部２２１にて制御される実行開始位置から被テストプログラム２６１をステップ実行する（ステップＢ４）。
【００４７】
そして、被テストプログラム２６１の実行中において、変数値設定部２１２にて設定され、変数管理手段２２３で保持されていない変数の値が取得されたり（ステップＢ５）、実行範囲指定部２１１から実行停止部２２２に指定された失敗終了位置に到達したりした場合は（ステップＢ６）、テストは失敗とみなし終了する（ステップＢ７）。
【００４８】
一方、被テストプログラム２６１が実行されていき、実行範囲指定部２１１から指定された成功終了位置に達した場合は（ステップＢ８）、実行停止部２２２によって被テストプログラム２６１の実行が停止し、テストプログラム実行部２１０の変数値検証部２１３において、変数管理部２２３から検証対象の変数値を取得し、その変数値が期待通りか検証して終了する（ステップＢ９）。なお、上述したように、テストプログラム２５１には、テスト対象部分を実行した結果、どんな変数値になっていることを期待するかが含まれているため、変数値検証部２１３においては、変数管理部２２３から取得した変数の値を、テストプログラム２５１にて予め設定された値と比較することにより検証することになる。
【００４９】
上述したように本形態においては、第１の実施の形態による効果に加えて、テストとしては到達すべきではないが、被テストプログラムの誤りなどにより到達しうる実行位置に失敗として終了できるように構成されているため、被テストプログラムに誤りがあった場合、直ちに実行を終了させることができる。これにより、テスト作成、実施の効率をさらに向上させることが可能である。
【実施例】
【００５０】
以下に、上述した実施の形態の動作について、具体的な実施例を用いて説明する。
【００５１】
（実施例１）
図５は、図１に示したプログラムテスト支援システムの一実施例を示す図である。
【００５２】
本発明のプログラムテスト支援システムは、例えば図５に示すように、コンピュータ１０００のメモリ１００２上に読み込まれ、ＣＰＵ１００２を操作して動作するプログラム１０１０として実施される。また、本実施例においては、テストプログラム及び被テストプログラムは、記憶装置１００３やメモリ１００２上に格納されている。被テストプログラムとしては、例えば、ＷＳ−ＢＰＥＬなどのビジネスプロセス実行言語で書かれたものや、ＪａｖａやＣ、Ｃ＋＋等のプログラミング言語で書かれたものに適用可能である。そして、マウスやキーボード、タッチパネルなどの入力装置１００４を通じて、テストの作成および実施の開始を指令する。
【００５３】
図６は、テストプログラムの具体例を示す図であり、図７は、被テストプログラムの具体例を示す図である。
【００５４】
以下に、図６に示したようなテストプログラムによって、図７に示したような被テストプログラムを対象に実施例を説明する。
【００５５】
テストプログラムの内容としては、テスト範囲の識別子として“ｔｅｓｔ１”で指定されるもので、そのテスト範囲へと入力となるのは、変数ｙで、その値は“＜ａ＞＜ｂ＞１＜／ｂ＞＜ａ＞”であり、実行した結果、変数ｃには、１が設定されている。
【００５６】
図８及び図９は、図７に示した被テストプログラムに図６に示したテストプログラムを埋め込んだ状態を示す図である。
【００５７】
被テストプログラムでは、そのテストプログラムによって検証したい範囲を図８の４行目及び１１行目のように注釈として場所をあらわすラベルを埋め込んだり、図９のようにプログラムの実行には影響を与えない要素を埋め込んだりして実現する。つまり、被テストプログラム中の場所を一意に特定できる手段でかつ、プログラムの実行には影響を与えない方法であれば、どのようなものでもよい。
【００５８】
テストプログラム実行部によりテストプログラムが読み込まれ、図６の１行目でテスト範囲を指示する命令があれば、実行位置制御部に“ｔｅｓｔ１”として識別される開始位置から実行することを設定する。実行開始位置を制御する方法としては、被テストプログラムの先頭から、当該開始場所までの命令列を実行せずに読み飛ばす方法、もしくは、当該開始場所へのジャンプ命令を被テストプログラムの先頭に暗黙的に追加もしくは実行する方法として実現する。また、実行停止部の実現方法としては、被テストプログラムに実行停止位置となる場所にブレークポイントを設定する方法や、被テストプログラム実行部により、暗黙的に実行停止位置となる場所に実行ストップ命令を挿入する方法として実現される。
【００５９】
そして、テストプログラム実行部が図６の２行目で変数ｙへの値を設定する指示を読み込むと、被テストプログラム実行部に変数ｙの値を通知する。
【００６０】
図１０は、変数管理の具体例を示す図である。
【００６１】
変数管理部としては、例えば、図１０に示すように、変数名とその値のペアとして、メモリや記憶装置に格納することで実現する。また、変数管理部は、ブロッキングキューなどの変数値の設定と変数値の参照を待ち合わせる機構を用いて実現してもよい。次に、図６の３行目にあるテストプログラムが変数値を検証する指示する命令があると、被テストプログラムの実行が完了後に、その検証を実施する。
【００６２】
以下に、図８に示したような形式で場所を特定するように書かれた被テストプログラムの実行処理について説明する。
【００６３】
テストプログラムからの指定により、被テストプログラムは、５行目から実行が開始される。すると７行目で変数ｙが参照される。ここで、テストプログラムにより変数ｙの値が“＜ａ＞＜ｂ＞１＜／ｂ＞＜ａ＞”であると設定されているため、この値を用いて実行され、その結果、８行目で変数ｃに“１”が設定される。
【００６４】
図１１は、誤りが含まれた被テストプログラムの一例を示す図である。
【００６５】
もし、被テストプログラムが図１１の７行目のように、変数ｙを参照すべきところ、変数ｘを参照していた場合、テストプログラムにより変数ｘの設定はされていないため、このテストは、失敗として終了する。
【００６６】
最後に、図８に示した１１行目で、テスト範囲の終端であることがわかり、被テストプログラムの実行はここで打ち切られ、テストプログラムの３行目の変数ｃの検証が実施され終了する。
【００６７】
（実施例２）
本実施例においては、第１の実施例との差分として、第２の実施の形態にて示した実行範囲解析部の実現例について説明する。
【００６８】
図１２は、図７に示した被テストプログラムに図６に示したテストプログラムを埋め込んだ状態を示す図である。また、図１３及び図１４は、実行範囲解析の具体例を示す図である。
【００６９】
図１２に示した被テストプログラムにおける実行範囲解析の実現方法としては、テストプログラムで指定されたテスト範囲に関する情報と、被テストプログラムの構造から、図１３に示したような解析木を構築する。
【００７０】
図１３に示した解析木中の矢印をたどることで、被テストプログラムの誤りにより、switchからotherwiseへと遷移する可能性があることを検出する。これを元に図１４に示すように、終了点として指定されたものには成功終了点、成功終了点に至らないパスについては、その入り口に失敗終了点が必要であることを導出する。そして、図１４に示した解析木に従って、被テストプログラムの実行停止位置を設定する。
【００７１】
図１５は、誤りが含まれた被テストプログラムの一例を示す図である。
【００７２】
例えば、被テストプログラムが、図１５の１３行目のように、ｃ==１とすべきところ、ｃ==０となっていた場合、１７行目のotherwiseを実行しようとする時点で実行が停止され、失敗と報告される。
【図面の簡単な説明】
【００７３】
【図１】本発明のプログラムテスト支援システムの第１の実施の形態を示す図である。
【図２】図１に示したプログラムテスト支援システムにおける処理を説明するためのフローチャートである。
【図３】本発明のプログラムテスト支援システムの第２の実施の形態を示す図である。
【図４】図３に示したプログラムテスト支援システムにおける処理を説明するためのフローチャートである。
【図５】図１に示したプログラムテスト支援システムの一実施例を示す図である。
【図６】テストプログラムの具体例を示す図である。
【図７】被テストプログラムの具体例を示す図である。
【図８】図７に示した被テストプログラムに図６に示したテストプログラムを埋め込んだ状態を示す図である。
【図９】図７に示した被テストプログラムに図６に示したテストプログラムを埋め込んだ状態を示す図である。
【図１０】変数管理の具体例を示す図である。
【図１１】誤りが含まれた被テストプログラムの一例を示す図である。
【図１２】、図７に示した被テストプログラムに図６に示したテストプログラムを埋め込んだ状態を示す図である。
【図１３】実行範囲解析の具体例を示す図である。
【図１４】実行範囲解析の具体例を示す図である。
【図１５】誤りが含まれた被テストプログラムの一例を示す図である。
【図１６】プログラムテストを支援する従来のデバック方法の一例を説明するための機能構成図である。
【図１７】従来のプログラムテスト支援方法の他の例を説明するための図である。
【図１８】プログラムテストを支援する従来のプログラムデバックシステムの他の例を説明するための図である。
【符号の説明】
【００７４】
１００，２００    コンピュータ
１１０，２１０    テストプログラム実行部
１１１，２１１    実行範囲指定部
１１２，２１２    変数値設定部
１１３，２１３    変数値検証部
１２０，２２０    被テストプログラム実行部
１２１，２２１    実行位置制御部
１２２，２２２    実行停止部
１２３，２２３    変数管理部
１５０，２５０    テストプログラム格納部
１５１，２５１    テストプログラム
１６０，２６０    被テストプログラム格納部
１６１，２６１    被テストプログラム
２１４    実行解析部
１０００  コンピュータシステム
１００１  ＣＰＵ
１００２  メモリ
１００３  記憶装置
１００４  入力装置
１００５  出力装置
１０１０  部分テスト作成実施プログラム
【図１】
2007193586.tif 000003
【図２】
2007193586.tif 000004
【図３】
2007193586.tif 000005
【図４】
2007193586.tif 000006
【図５】
2007193586.tif 000007
【図６】
2007193586.tif 000008
【図７】
2007193586.tif 000009
【図８】
2007193586.tif 000010
【図９】
2007193586.tif 000011
【図１０】
2007193586.tif 000012
【図１１】
2007193586.tif 000013
【図１２】
2007193586.tif 000014
【図１３】
2007193586.tif 000015
【図１４】
2007193586.tif 000016
【図１５】
2007193586.tif 000017
【図１６】
2007193586.tif 000018
【図１７】
2007193586.tif 000019
【図１８】
2007193586.tif 000020