(57)【要約】【課題】アプリケーションの動作確認を自動的に実行し、ソフトウエアの品質向上のための自動実行ツールを提供する。【解決手段】ソフトウエアの品質を自動的にテストするソフトウエアの検証方法であって、対象とするアプリケーションプログラムへの入力条件および動作環境条件を抽出する条件抽出ステップと、前記条件抽出ステップで抽出された入力条件および動作環境条件の取り得る値を分析して二次元の要因分析表を作成する要因分析表作成ステップと、前記要因分析表作成ステップで作成した要因分析表に基づき、入力条件群および環境条件群を組み合わせてテストすべき項目を決定するテスト項目表作成ステップと、前記テスト項目表作成ステップで作成されたテスト項目にしたがってテストスクリプトを生成するテストスクリプト生成ステップとを有することを特徴とするソフトウエアの検証方法。【選択図】      図１
2004280231.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウエアの品質を自動的にテストするソフトウエアの検証方法であって、
対象とするアプリケーションプログラムへの入力条件および動作環境条件を抽出する条件抽出ステップと、
前記条件抽出ステップで抽出された入力条件および動作環境条件の取り得る値を分析して二次元の要因分析表を作成する要因分析表作成ステップと、
前記要因分析表作成ステップで作成した要因分析表に基づき、入力条件群および環境条件群を組み合わせてテストすべき項目を決定するテスト項目表作成ステップと、
前記テスト項目表作成ステップで作成されたテスト項目にしたがってテストスクリプトを生成するテストスクリプト生成ステップとを有することを特徴とするソフトウエアの検証方法。
【請求項２】
前記テストスクリプト生成ステップにおいて、前記要因分析表の各因子をオブジェクトとして定義し、その状態をメソッドやプロパティとして定義し、これらを組み合わせた前記テスト項目にしたがってテストスクリプトを生成する請求項１記載のソフトウエアの検証方法。
【請求項３】
対象とするアプリケーションプログラムの動作環境上の条件をオブジェクトとして定義し、テストした後の復帰や状態が作り出されるまでの一連の操作を自動的に繰り返すことによって、状態の遷移を起こさせることを特徴とする請求項１あるいは請求項２に記載のソフトウエアの検証方法。
【請求項４】
各テスト項目に対し期待される出力データ値やプログラムの振舞を予めオブジェクトとして定義しておくことで、テスト結果の判定を自動化させることを特徴とする請求項１乃至請求項３のいずれかに記載のソフトウエアの検証方法。
【請求項５】
対象とするアプリケーションプログラムの動作環境上の条件をオブジェクトとして記録しておき、前記テストスクリプトを実行する直前に現在の動作環境と比較することで、前記アプリケーションプログラムの外部仕様変更を検出することを特徴とする請求項１乃至請求項４のいずれかに記載のソフトウエアの検証方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
アプリケーションプログラムの動作確認を自動的に実行し、ソフトウエアの品質向上のための自動実行ツールの技術に関する。
【０００２】
【従来の技術】
アプリケーションプログラムの動作確認に対し、従来の自動テストツールは、時系列に沿ってマウス操作やキー入力を行うことによって記録・再生することを基本としている。自動テストツールは、テストスクリプトを自動生成する操作レコーダ、あるいは、テストスクリプトを実行して結果を集計するテストツール等のサブシステムから構成されており、これらの自動化によって、アプリケーションの自動テスト等への適用がなされている。また、一連の処理手順を記述したテストスクリプトは、開発言語に依存することなく、自由に作成・編集が行える便宜をユーザに与えている（例えば、特許文献１、２参照）。
【０００３】
【特許文献１】
特開平８−３０５６０９号公報（第２〜８頁）
【０００４】
【特許文献２】
特開平９−２１８８０４号公報（第２〜８頁）
【０００５】
【発明が解決しようとする課題】
しかしながら、マウス操作やキー入力を時系列に沿って記録・再生する従来の方法では、以下のように、
１）実際にプログラムが動き始める段階にならなければ、テストスクリプトを作成することができない。
２）また、ブラックボックステストでは、プログラムの外部仕様に基づいて、どのような入力をプログラムに与えるか、あるいはどのような環境条件下でプログラムを動作させるかを考慮してテスト項目を作成するため、記録・再生する方法では、実際に動いているプログラムに基づくテストとなり、外部仕様に基づいていない。
３）さらに、ブラックボックステストは、網羅性の観点から、テスト項目を設定するに当たり、要因分析表に記入された因子群について、それらの状態を組み合わせることにより行っている。このため、組み合わせの回数分だけマウス操作やキー入力を行なわねばならず、コストがかかる上、単純操作の繰り返しによる操作ミスを引き起こす恐れがある。
４）テストスクリプトを開発者が自由に作成・編集を行うことができるとしても、テスト項目設定、要因分析表に記入された因子群を要素としたテストスクリプトとなっていないため、それらの状態を容易に組み合わせることができない。
【０００６】
などの欠点を抱えている。
そこで、本発明では、上記の問題を解決するため、マウス操作によるクリック、キーボード操作による入力等に対し、ＧＵＩ（Ｇｒａｐｈｉｃ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）がどのように反応するかのテスト、ブラックボックステスト、とくに、リグレッションテスト（回帰テスト）に適したソフトウエアの検証技術を提供する。
【０００７】
【課題を解決するための手段】
第一の発明は、ソフトウエアの品質を自動的にテストするソフトウエアの検証方法であって、対象とするアプリケーションプログラムへの入力条件および動作環境条件を抽出する条件抽出ステップと、前記条件抽出ステップで抽出された入力条件および動作環境条件の取り得る値を分析して二次元の要因分析表を作成する要因分析表作成ステップと、前記要因分析表作成ステップで作成した要因分析表に基づき、入力条件群および環境条件群を組み合わせてテストすべき項目を決定するテスト項目表作成ステップと、前記テスト項目表作成ステップで作成されたテスト項目にしたがってテストスクリプトを生成するテストスクリプト生成ステップとを有することを特徴とするソフトウエアの検証方法に関する。
【０００８】
すなわち、第一の発明の方法によれば、条件抽出ステップにおいて、外部仕様に基づいたプログラムに対する入力条件及び動作条件を抽出し、要因分析表作成ステップでテストの因子を網羅し、テスト項目表作成ステップでその因子の組み合わせからテスト項目を作成し、テストスクリプト生成ステップでテスト項目表に対応したスクリプトが自動生成される。
【０００９】
上記の発明によって、プログラムの外部仕様に基づいた入力条件および環境条件を考慮したテストが効率的に実行される。
第二の発明は、前記テストスクリプト生成ステップにおいて、前記要因分析表の各因子をオブジェクトとして定義し、その状態をメソッドやプロパティとして定義し、これらを組み合わせた前記テスト項目にしたがってテストスクリプトを生成する上記第一の発明に記載のソフトウエアの検証方法に関する。
【００１０】
すなわち、第二の発明の方法によれば、文章表現で記述されたプログラムの外部仕様を、いったん、オブジェクトとして要因と状態からなる二次元の要因分析表とし、テスト項目を設計することとなる。これによって、文章表現となっているユーザマニュアルやプログラムの外部仕様を直接にテスト項目を作成するときの困難性や漏れ発生が克服される。
【００１１】
第三の発明は、対象とするアプリケーションプログラムの動作環境上の条件をオブジェクトとして定義し、テストした後の復帰や状態が作り出されるまでの一連の操作を自動的に繰り返すことによって、状態の遷移を起こさせることを特徴とする上記第一あるいは第二の発明に記載のソフトウエアの検証方法に関する。
すなわち、第三の発明の方法によれば、オブジェクトとして定義したプログラムの動作環境条件にしたがってテスト後の復帰や次の状態を作る操作を自動化することで状態の遷移を容易になり、テスト工数の削減が図れる。
【００１２】
第四の発明は、各テスト項目に対し期待される出力データ値やプログラムの振舞を予めオブジェクトとして定義しておくことで、テスト結果の判定を自動化させることを特徴とする上記第一乃至第三の発明のいずれかに記載のソフトウエアの検証方法に関する。
すなわち、第四の発明によれば、予め定義した各テスト項目の出力データ値やプログラムの振舞にしたがって、テスト結果が自動的に判定されることになり、判定するための評価工数を削減することができる。
【００１３】
第五の発明は、対象とするアプリケーションプログラムの動作環境上の条件をオブジェクトとして記録しておき、前記テストスクリプトを実行する直前に現在の動作環境と比較することで、前記アプリケーションプログラムの外部仕様変更を検出する上記第一乃至第四の発明のいずれかに記載のソフトウエアの検証方法に関する。
【００１４】
すなわち、第五の発明によれば、記憶部にプログラムの動作環境を格納しておくことにより、テストスクリプトの実行前に、この格納された動作環境を参照し、現在の動作環境と比較できるため、変更された外部仕様を容易に検出することができる。
【００１５】
【発明の実施の形態】
以下、図面にもとづいて本発明の実施形態を説明する。
図１は、本発明の基本システム構成を示す。ソフトウエアの検証システムは、ユーザが対象とするアプリケーションプログラムテストのための入力条件および使用環境条件を入力するキーボード等の入力手段２、ソフトウエア検証装置１、記憶装置３、プリンタ４、およびディスプレイ５で構成される。
【００１６】
また、ソフトウエア検証装置１は、条件抽出手段１１、要素分析表作成手段１２、テスト項目表作成手段１３、編集手段１４、およびテストスクリプト生成手段１５を有する。さらに、記憶装置３には、生成したテストスクリプト３１、およびプログラム環境条件３２が格納されている。
記憶装置３におけるプログラム環境条件３２は、オブジェクトとして格納しておき、テストスクリプトを実行する直前で現在の動作環境と比較し、プログラムの外部仕様の変更がないかどうかの検出させるために使用されるものである。
【００１７】
ここで、本実施の形態のソフトウエア検証装置１はコンピュータであり、条件抽出手段１１、要素分析表作成手段１２、テスト項目表作成手段１３、編集手段１４、およびテストスクリプト生成手段１５の各手段は、該コンピュータ上で、あらかじめ内蔵された当該プログラムが実行されることにより実現されるものである。また、当該プログラムは、フロッピーディスク、コンパクトディスク等のコンピュータ読み取り可能な記録媒体に記録され、図には示していないが内蔵された媒体読取装置にセットしインストールすることによって、実行可能な状態としてもよい。
【００１８】
図２は、本発明の実施の形態になるソフトウエア検証装置の構成を示す。ユ−ザが、キーボードやマウス操作等による入力手段２によって、要因分析およびテスト項目のパラメータ値を入力し、また、スクリプト表現した要因分析を入力したのを受けて、ソフトウエア検証装置１では、対応する二次元形式の要因分析表ｔ０、テスト項目表ｔ１、および要因分析表ｔ２を作成し、これらの表データは編集手段１４によって解析、編集され、その結果として、テストスクリプトが生成され、生成したテストスクリプト３１を記憶装置３に格納処理する構成となっている。
【００１９】
図３は、本発明の実施の形態になるデータの処理フローを示す。
ブラックボックステストを行うにあたっては、アプリケーションプログラムの外部仕様に基づき、どのような入力をプログラムに与えるか、あるいは、どのような環境条件下でプログラムを動作させるかを考慮してテスト項目を作成することが重要となる。
【００２０】
ユーザのデータ入力では、入力プログラムの外部仕様（機能）を扱いやすい大きさに分割し、プログラムに対する入力条件および動作環境上の条件を抽出する。そして、抽出された入力条件、環境条件群について、それぞれ取り得る値を分析し、入力条件、環境条件群の各々の組合せを決定しテスト項目とする。
また、テスト結果判定のため、各テスト項目に対して期待される出力データ値やプログラムの振る舞いを定義しておく。
【００２１】
以下、図３にしたがって、ユーザの上記条件の入力を受けてのソフトウエア検証装置１におけるデータの処理フローを説明する。
まず、ステップＳ１において、ユーザによって入力された要因分析のパラメータ値を取得、抽出して要因分析表ｔ０が形成される。ステップＳ２、Ｓ３において、同様に、ユーザによるテスト項目のパラメータ値の入力を受けて、テスト項目表ｔ１が形成され、およびスクリプト表現になる要因分析の入力を受けて、要因分析表ｔ２が形成される。
【００２２】
つぎに、ステップＳ４  において、編集手段１４によって、これらｔ０、ｔ１、およびｔ２の表データが２が解析、編集され、テストスクリプトが生成される。さらに、ステップＳ５において、この生成したテストスクリプトは、記憶装置３に格納される。
そして、後に、この格納されたテストスクリプト３１は、マウス操作等のイベント動作に応じて、起動時に、記憶装置３からダウンロードされ、テストが実行される。
【００２３】
図４は、本発明の実施の形態になる要因分析表の例を示す。要因分析表は、入力Ａ１１、入力Ｂ１２、ボタン操作１３、および出力データ値／プログラムの振舞１４の項目を有する複数のレコードで構成され、各レコードには、各項目において取り得る値を示している。
入力Ａ１１、入力Ｂ１２は、プログラムへの入力条件となるテスト因子であり、ボタン操作１３は、マウスのクリック操作を示しており、出力データ値／プログラムの振舞１４は、テスト項目で期待される出力データ値やプログラムの振る舞いを示している。入力Ａ１１、入力Ｂ１２は、何もない、最小値、最大値の３通りの値を取り、ボタン操作１３は、押す／押さない（ブランク）の状態があり、出力データ値／プログラムの振舞１４は、出力なし、Ａを出力、Ｂを出力の３つの状態を掲げている。このように、要因分析では、いくつかの要因となる因子群とそれらの状態の可能な範囲が示される。
【００２４】
上記のような一つの要因分析表からは、因子群とその状態の組合せによって、複数個のテスト項目が設定されることとなる。この場合、テスト項目中の因子は、二つの要因分析表にまたがらないように設定する。
図５は、本発明の実施の形態になるテスト項目表の例を示す。図４の要素分析表と同様に、テスト項目表は、入力Ａ１１、入力Ｂ１２、ボタン操作１３、および出力データ値／プログラムの振舞１４の項目を有する複数のレコードで構成され、各レコードは、図４の要素分析表の因子群とその状態の組合せによって作られる複数のテスト項目で構成されている。
【００２５】
ここで、ユーザ・マニュアルや大半のプログラムの外部仕様書は文章表現で記述されており、それから直接にテスト項目を作成することは困難であり、漏れも生じやすい。上記要因分析は、文章表現で記述された外部仕様を、いったん、要因と状態の二次元の表（要因分析表）に形式化し、テスト項目を設計する方法を用いている。そして、テスト項目の設定は要因分析表に記入された因子群について、それらの状態を組み合わせることにより行っている。
【００２６】
図６は、本発明の実施の形態になる要因分析表  （スクリプト表現）の例を示す。テストスクリプト作成の前段階として、図４の要因分析表をスクリプト表現で書き直した場合を示している。例では、空間的な配置が同じ別表としてスクリプト表現を記述している。要因分析表の見出し部分（要因）は、オブジェクトとして表現する。要因分析表の本文部分（状態）は、オブジェクトのプロパティやメソッドの利用方法を記述する。例えば、ｖａｌｕｅ  ＝  ””はプロパティに空の値を代入することを表し、ｃｌｉｃｋ（）  はボタンをクリックするメソッドを表すという具合である。
【００２７】
図７は、本発明の実施の形態になるテスト項目表  （スクリプト表現）の例を示す。本例のスクリプト表現のテスト項目表は、人手による入力も可能であるが、ユーザが、組合せによる項目数の多いテスト項目表を入力するのは、実際には、煩雑である。ここでのテスト項目表（スクリプト表現）は、要素分析表ｔ０、テスト項目表ｔ１、および要素分析表ｔ２から、テスト項目表の展開順序に従って、プログラム的手段により自動的に作成した場合を想定している。
【００２８】
そして、テスト項目表（スクリプト表現）からテストスクリプトの生成は、見出し部分（要因）と本文部分（状態）を結合することで、プログラム的手段により自動的に生成することができる。
図８は、本発明の実施の形態になるテストスクリプト生成のフローチャートを示す。ソフトウエア検証装置１のテストスクリプト生成手段１５による生成処理のフローを以下に示す。本例では、要素分析表ｔ０、テスト項目表ｔ１、およびスクリプト表現した要素分析表ｔ２をもとに、
まず、ステップＳ１１において、生成するテストスクリプトの出力領域を初期化する。つぎに、ステップＳ１２において、テスト項目表ｔ１にしたがって、行方向の繰り返しの判定を行う。行方向にテスト項目があれば、ステップＳ１３に移行し、前処理として、例えば、”テスト項目１”等のコメントのスクリプトを生成する。
【００２９】
さらに、ステップＳ１４において、テスト項目表ｔ１にしたがって、列方向の処理項目があれば、ステップＳ１５に移行して、スクリプト表現した要素分析表ｔ２をもとにテストスクリプトを生成する。そして、ステップＳ１４において、列方向の処理項目がなければ、ステップＳ１６に進み、後処理として、例えば、”ＯＫ”あるいは”ＮＧ”等の結果の判定を行うスクリプト（文字列）を出力する。
【００３０】
これによって、一つのテスト項目が完了し、ステップＳ１２に戻り、つぎの行のテスト項目がなくなるまで繰り返し処理を行う。
図９は、本発明の実施の形態になるテストスクリプトの生成例を示す。図８のフローチャートにしたがって生成したテストスクリプトの例を示している。
以下、テスト項目１とテスト項目２を例に取り上げて説明する。
【００３１】
テスト項目１のスクリプトは、「入力Ａ→なし、入力Ｂ→なし、ボタン→押下を条件とするテストに対し、期待される出力値が”なし”であれば、”ＯＫ”、そうでなければ、”ＮＧ”の判定結果を出力する。」ことを示している。
テスト項目２のスクリプトは、「入力Ａ→最大値、入力Ｂ→なし、ボタン→押下を条件とするテストに対し、期待される出力値が入力Ａの”最大値”であれば、”ＯＫ”、そうでなければ、”ＮＧ”の判定結果を出力する。」ことを示している。
【００３２】
以上、記述してきたように、要因分析技法を用いることによって、ブラックボックステストにおける要因と状態を組み合わせた多数のテスト項目も、本発明のように簡易な要因分析表とテスト項目表を作成することで、効率的にアプリケーションプログラムのテストを行うことができる。
また、以上のような操作により、テストスクリプトのスケルトンとすることができ、作成されたテストスクリプトは開発言語に依存することなく、ユーザが自由に作成・編集を行うことが可能となる。
【００３３】
（付記１）  ソフトウエアの品質を自動的にテストするソフトウエアの検証方法であって、
対象とするアプリケーションプログラムへの入力条件および動作環境条件を抽出する条件抽出ステップと、
前記条件抽出ステップで抽出された入力条件および動作環境条件の取り得る値を分析して二次元の要因分析表を作成する要因分析表作成ステップと、
前記要因分析表作成ステップで作成した要因分析表に基づき、入力条件群および環境条件群を組み合わせてテストすべき項目を決定するテスト項目表作成ステップと、
前記テスト項目表作成ステップで作成されたテスト項目にしたがってテストスクリプトを生成するテストスクリプト生成ステップとを有することを特徴とするソフトウエアの検証方法。
【００３４】
（付記２）  前記テストスクリプト生成ステップにおいて、前記要因分析表の各因子をオブジェクトとして定義し、その状態をメソッドやプロパティとして定義し、これらを組み合わせた前記テスト項目にしたがってテストスクリプトを生成する付記１記載のソフトウエアの検証方法。
（付記３）  対象とするアプリケーションプログラムの動作環境上の条件をオブジェクトとして定義し、テストした後の復帰や状態が作り出されるまでの一連の操作を自動的に繰り返すことによって、状態の遷移を起こさせることを特徴とする付記１あるいは付記２に記載のソフトウエアの検証方法。
【００３５】
（付記４）  各テスト項目に対し期待される出力データ値やプログラムの振舞を予めオブジェクトとして定義しておくことで、テスト結果の判定を自動化させることを特徴とする付記１乃至付記３のいずれかに記載のソフトウエアの検証方法。
（付記５）  対象とするアプリケーションプログラムの動作環境上の条件をオブジェクトとして記録し、テストスクリプトを実行する直前に現在の動作環境と比較することで、前記アプリケーションプログラムの外部仕様変更を検出する付記１乃至付記４記載のソフトウエアの検証方法。
【００３６】
（付記６）  ソフトウエアの品質を自動的にテストするソフトウエアの検証プログラムであって、
コンピュータに、
対象とするアプリケーションプログラムへの入力条件および動作環境条件を抽出する条件抽出ステップと、
前記条件抽出ステップで抽出された入力条件および動作環境条件の取り得る値を分析して二次元の要因分析表を作成する要因分析表作成ステップと、
前記要因分析表作成ステップで作成した要因分析表に基づき、入力条件群および環境条件群を組み合わせてテストすべき項目を決定するテスト項目表作成ステップと、
前記テスト項目表作成ステップで作成されたテスト項目にしたがってテストスクリプトを生成するテストスクリプト生成ステップとを実行させるソフトウエアの検証プログラム。
【００３７】
（付記７）  ソフトウエアの品質を自動的にテストするソフトウエアの検証装置であって、
対象とするアプリケーションプログラムへの入力条件および動作環境条件を抽出する条件抽出手段と、
前記条件抽出手段で抽出された入力条件および動作環境条件の取り得る値を分析して二次元の要因分析表を作成する要因分析表作成手段と、
前記要因分析表作成手段で作成した要因分析表に基づき、入力条件群および環境条件群を組み合わせてテストすべき項目を決定するテスト項目表作成手段と、前記テスト項目表作成手段で作成されたテスト項目にしたがってテストスクリプトを生成するテストスクリプト生成手段とを有することを特徴とするソフトウエアの検証装置。
【００３８】
【発明の効果】
マウス操作やキー入力を時系列に沿って記録・再生する従来の方法では、１）実際にプログラムが動き始める段階にならなければ、テストスクリプトを作成することができない、２）ブラックボックステストでは、プログラムの外部仕様に基づいて、どのような入力をプログラムに与えるか、あるいはどのような環境条件下でプログラムを動作させるかを考慮してテスト項目を作成する。このため、記録・再生する方法では、実際に動いているプログラムに基づくテストとなり、外部仕様に基づいていない、３）ブラックボックステストは、網羅性の観点から、テスト項目設定、要因分析表に記入された因子群について、それらの状態を組み合わせることにより行う。このため、マウス操作やキー入力を時系列に沿って記録・再生する方法では、組み合わせの回数分だけマウス操作やキー入力をおこなわねばならず、コストがかかる上、単純操作の繰り返しによる操作ミスを引き起こす恐れがある、４）テストスクリプトを開発者が自由に作成・編集を行うことができるとしても、テスト項目設定、要因分析表に記入された因子群を要素としたテストスクリプトではないため、それらの状態を容易に組み合わせることができない、などの欠点を抱えていた。
【００３９】
本発明によれば、実際にプログラムが動き始める前からテストスクリプトを作成することができ、プログラムの外部仕様に基づいてテストを行い、テスト項目表にしたがって自動的にスクリプトが組み合わされるため、コストがかからず、操作ミスを引き起こすこともない、といった効果や効能が期待できる。
【図面の簡単な説明】
【図１】本発明の基本システム構成を示す図である。
【図２】本発明の実施の形態になるソフトウエア検証装置の構成を示す図である。
【図３】本発明の実施の形態になるソフトウエア検証装置におけるデータの処理フローを示す図である。
【図４】本発明の実施の形態になる要因分析表の例を示す図である。
【図５】本発明の実施の形態になるテスト項目表の例を示す図である。
【図６】本発明の実施の形態になる要因分析表（スクリプト表現）の例を示す図である。
【図７】本発明の実施の形態になるテスト項目表（スクリプト表現）の例を示す図である。
【図８】本発明の実施の形態になるテストスクリプト生成のフローチャートを示す図である。
【図９】本発明の実施の形態になるテストスクリプトの生成例を示す図である。
【符号の説明】
１  ソフトウエア検証装置
２  入力手段
３  記憶装置
４  プリンタ
５  ディスプレイ
１１  条件抽出手段
１２  要素分析表作成手段
１３  テスト項目表作成手段
１４  編集手段
１５  テストスクリプト生成手段
３１  テストスクリプト
３２  プログラム環境条件
【図１】
2004280231.tif 000003
【図２】
2004280231.tif 000004
【図３】
2004280231.tif 000005
【図４】
2004280231.tif 000006
【図５】
2004280231.tif 000007
【図６】
2004280231.tif 000008
【図７】
2004280231.tif 000009
【図８】
2004280231.tif 000010
【図９】
2004280231.tif 000011