(57)【要約】【課題】ソフトウェアのテストを行うためのシナリオを容易に作成し、信頼性の高いテストを実現する。【解決手段】ＧＵＩ機能を備えるソフトウェアの設計に一般的に使われているプロトタイピングツールで得られる状態遷移情報１０から、複数のステートとステート間の遷移を生じさせるトリガとが列挙されるシナリオを作成部４１によって作成する。重み付け手段５０は、テスト対象となるソフトウェアの開発履歴情報３０やシナリオ実行の有無に基づき、シナリオ６０に重み付けを行う。時間算出部４２は、各シナリオの実行時間を算出する。抽出部４４は、シナリオ６０の抽出を、実行時間の合計が実行時間情報３０で定める時間内となる条件で、重み付けを実行時間で割って得られる重み付け点数の大きい順に抽出し、シナリオ実行手段７０がテストを実行する。【選択図】　　　図１
2004005399.tif 000002
【特許請求の範囲】
【請求項１】
複数の状態間を遷移しながら動作するソフトウェアのテスト方法であって、
該ソフトウェアの各状態に関する修正の回数を開発履歴情報として記憶しておき、
状態間の遷移を遷移のトリガとなる入力情報とともに定める状態遷移情報に基づいて、状態間をトリガで連結してテストを行うシナリオを、複数作成する作成工程と、
作成工程で作成される各シナリオの実行時間を算出する時間算出工程と、
開発履歴情報を用いて、シナリオ作成工程で作成される各シナリオに重みを付け、時間算出工程で算出される各シナリオの実行時間の長さの相対的な比で重みを除算し、各シナリオの重み付け点数を求める重み付け工程と、
重み付け工程で求められる重み付け点数が大きい順に、作成工程で作成されているシナリオを抽出し、抽出されるシナリオの実行時間の合計が予め定める条件を満たすように抽出するシナリオを選択する抽出工程と、
抽出工程で抽出するシナリオを実行してテストを行う実行工程とを、
含むことを特徴とするソフトウェアのテスト方法。
【請求項２】
複数の状態間を遷移しながら動作するソフトウェアのテスト方法であって、
ソフトウェア部品が、実機における使用実績のあるもの、実機における使用実績のあるものを一部修正したもの、新規に作成されて実機における使用実績のないもののうち、いずれに属するかを属性情報として記憶しておき、
状態間の遷移を遷移のトリガとなる入力情報とともに定める状態遷移情報に基づいて、状態間をトリガで連結してテストを行うシナリオを、複数作成する作成工程と、
作成工程で作成される各シナリオの実行時間を算出する時間算出工程と、
属性情報を用いて、シナリオ作成工程で作成される各シナリオに重みを付け、時間算出工程で算出される各シナリオの実行時間の長さの相対的な比で重みを除算し、各シナリオの重み付け点数を求める重み付け工程と、
重み付け工程で求められる重み付け点数が大きい順に、作成工程で作成されているシナリオを抽出し、抽出されるシナリオの実行時間の合計が予め定める条件を満たすように抽出するシナリオを選択する抽出工程と、
抽出工程で抽出するシナリオを実行してテストを行う実行工程とを、
含むことを特徴とするソフトウェアのテスト方法。
【請求項３】
修正を予定している状態を含むソフトウェアを、該状態を識別するためのステート識別子とともに修正情報として記憶しておき、
修正情報に基づいて、該ステート識別子を含むシナリオを抽出し、
抽出されるシナリオの実行時間の合計をテストに要する時間とみなすことによって、テストに要する時間を予測するテスト範囲予測工程を、
さらに含むことを特徴とする請求項１または２記載のソフトウェアのテスト方法。
【請求項４】
前記実行工程は、
シナリオを実行した結果の合否を判定し、不合格と判定された遷移を含むシナリオに、抽出の可否を判別する抽出情報として、抽出しないことを示すオン情報を付加する合否判定ステップをさらに含み、
前記抽出工程は、
抽出情報がオンであるシナリオを抽出しないことを特徴とする請求項１〜３のいずれかに記載のソフトウェアのテスト方法。
【請求項５】
前記抽出工程では、１または複数のシナリオを抽出し、
前記予め定める条件は、予め実行時間情報として入力される時間より、抽出するシナリオの実行時間の合計が短いことであることを特徴とする請求項１〜４のいずれかに記載のソフトウェアのテスト方法。
【請求項６】
前記実行工程では、実行したシナリオの重み付け点数を減少させることを特徴とする請求項１〜５のいずれかに記載のソフトウェアのテスト方法。
【請求項７】
請求項１〜６のいずれかに記載のソフトウェアのテスト方法を、コンピュータに実行させるためのプログラム。
【請求項８】
請求項１〜６のいずれかに記載のソフトウェアのテスト方法を、コンピュータに実行させるためのプログラムが記録されるコンピュータ読取り可能な記録媒体。
【請求項９】
複数の状態間を遷移しながら動作するソフトウェアのテスト装置であって、
ソフトウェアの各状態に関する修正の回数を開発履歴情報として記憶する履歴記憶手段と、
状態間の遷移を遷移のトリガとなる入力情報とともに定める状態遷移情報に基づいて、状態間をトリガで連結してテストを行うシナリオを、複数作成する作成手段と、
作成手段で作成される各シナリオの実行時間を算出する時間算出手段と、
履歴記憶手段に記憶されている開発履歴情報を用いて、作成手段で作成される各シナリオに重みを付け、時間算出手段で算出される各シナリオの実行時間の長さの相対的な比で重みを除算し、各シナリオの重み付け点数を求める重み付け手段と、
重み付け手段で求められる重み付け点数が大きい順に、作成手段で作成されているシナリオを抽出し、抽出されるシナリオの実行時間の合計が予め定める条件を満たすように抽出するシナリオを選択する抽出手段と、
抽出手段が抽出するシナリオを実行してテストを行う実行手段とを、
含むことを特徴とするソフトウェアのテスト装置。
【請求項１０】
複数の状態間を遷移しながら動作するソフトウェアのテスト装置であって、
ソフトウェア部品が、実機における使用実績のあるもの、実機における使用実績のあるものを一部修正したもの、新規に作成されて実機における使用実績のないもののうち、いずれに属するかを属性情報として記憶する属性情報記憶手段と、
状態間の遷移を遷移のトリガとなる入力情報とともに定める状態遷移情報に基づいて、状態間をトリガで連結してテストを行うシナリオを、複数作成する作成手段と、
作成手段で作成される各シナリオの実行時間を算出する時間算出手段と、
属性情報記憶手段に記憶されている属性情報を用いて、作成手段で作成される各シナリオに重みを付け、時間算出手段で算出される各シナリオの実行時間の長さの相対的な比で重みを除算し、各シナリオの重み付け点数を求める重み付け手段と、
重み付け手段で求められる重み付け点数が大きい順に、作成手段で作成されているシナリオを抽出し、抽出されるシナリオの実行時間の合計が予め定める条件を満たすように抽出するシナリオを選択する抽出手段と、
抽出手段が抽出するシナリオを実行してテストを行う実行手段とを、
含むことを特徴とするソフトウェアのテスト装置。
【請求項１１】
修正を予定している状態を含むソフトウェアを、該状態を識別するためのステート識別子とともに修正情報として記憶する修正情報記憶手段と、
修正情報に基づいて、該ステート識別子を含むシナリオを抽出し、抽出されるシナリオの実行時間の合計をテストに要する時間とみなすことによって、テストに要する時間を予測するテスト範囲予測手段とを、
さらに含むことを特徴とする請求項９または１０記載のソフトウェアのテスト装置。
【請求項１２】
前記実行手段は、
抽出手段が抽出するシナリオを実行してテストを行う実行部と、
シナリオを実行した結果の合否を判定し、不合格と判定された遷移を含むシナリオに、抽出の可否を判別する抽出情報として、抽出しないことを示すオン情報を付加する合否判定部とを含み、
前記抽出手段は、
抽出情報がオンであるシナリオを抽出しないことを特徴とする請求項９〜１１のいずれかに記載のソフトウェアのテスト装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＧＵＩ（Ｇｒａｐｈｉｃａｌ　Ｕｓｅｒ　Ｉｎｔｅｒｆａｃｅ）機能などを備えるソフトウェアのテスト方法および装置に関する。
【０００２】
【従来の技術】
従来から、各種の汎用的な情報処理装置や、専用の電子機器などで、画像表示機能を備えるものは、ＧＵＩ機能を備えて利用者の便宜を図るようにしている。ＧＵＩ機能では、画面に表示する情報で利用者の操作を促し、また利用者の操作に応じて新たな画面表示の状態であるステートに遷移する。一つの画面表示のステートからは、一般に複数のステートに遷移可能である。ＧＵＩ機能は、高度な画像処理を伴う。しかし、画像処理の内容はかなり定型化される面もあるので、ソフトウェア開発を支援するために、プロトタイピングツールと呼ばれるソフトウェアが用いられる。プロトタイピングツールでは、複数のステートの各ステートを表すステート識別子と、トリガとなる入力情報があるときに遷移する状態とについての状態遷移情報を得ることができる。
【０００３】
ＧＵＩ機能を備えるソフトウェアを開発するには、設計者が意図した通りにＧＵＩが実装できているかテストする必要がある。テストでは、あるステートにおいてどのようなトリガにより次のステートに遷移するのか確認する。また、確認するための操作手順を複数のシナリオとして作成しておく。シナリオはテスト担当者が機能仕様書などを元に状態遷移を理解し手作業で作成するか、もしくは既存ソフトウェアの機能改善においては、以前に利用したシナリオを流用するなどして用意しなければならない。また、用意した複数のシナリオに基づくテストの実施も、手作業で行われるのが一般的である。しかしながら、手作業によるシナリオ作成では、テスト内容に漏れが生じることがあり、また、ソフトウェアが複雑化するにつれ、シナリオ作成に要する労力、時間ともに多大になるという問題がある。
【０００４】
このような問題に対処する従来技術に、利用者が、ソフトウェアの構造仕様情報と状態遷移仕様情報とを定義することによって、ソフトウェアの仕様検証を行なうテストシナリオが自動的に生成され、そのテストシナリオに従ってシステムテストが自動的に実行されるというものがある（特許文献１参照）。
【０００５】
しかしながら、前述の従来技術では、生成されるテストシナリオは、ソフトウェアのＧＵＩ部が持つ全ての状態と全ての状態が網羅されたものとなるので、ソフトウェアの信頼性の軽重を問うことなく、すべてのソフトウェアに対して同様にテストを実行する。各種の機器に備わる画像処理機能が、日進月歩で向上される状況下では、ソフトウェアの開発に許される時間が益々短くなる傾向にあり、限られた時間の中でソフトウェアの信頼性を確保するためには、信頼性の低い部分を重点的にテストし、信頼性の高いと推定される部分のテストを省くことで、テストの実施に要する総時間を節約する必要があるけれども、従来技術では、どのシナリオを重点的にテストするべきかを判断することができないという問題がある。
【０００６】
また、ソフトウェアの修正を行なうと、修正後、修正に関わる部分のテストを実施しなければならないので、ソフトウェアを修正するか否かを決定する前に、テストに要する時間を見積り、その見積り時間に基づいて、実際にソフトウェアを修正するか否か、また修正する時期を決定している。したがって、テストに要する時間を誤って短く見積ることによって、テスト時間を含めたソフトウェアの総開発時間を実際より短く見積ってしまうことがある。総開発時間を実際より短く見積ると、計画に対する開発達成の遅延や、開発時間の不足に起因してテスト不充分によるソフトウェアの信頼性低下を惹起することがある。逆に、テストに要する時間を誤って長く見積ることによって、必要以上に製品の市場投入時期が遅れて市場機会を失ったり、正確にテスト時間を見積れば開発計画の中に織り込むことが出来たはずの製品の機能追加ができなくなってしまうこともある。
【０００７】
また、テスト実施の段階で、ソフトウェアの不具合が発覚すると、不具合と関係がありテストを実施しなければならない範囲を明確にし、不具合のあるソフトウェアを修正するまで、不具合と関係のない部分を優先的にテストする必要があるけれども、従来、どのシナリオが不具合と関係しているのかを人手で判断しているので、作業に要する労力および時間が多大になるという問題がある。
【０００８】
【特許文献１】
特開平９−２２３０４０号公報
【０００９】
【発明が解決しようとする課題】
本発明の目的は、シナリオの作成を容易に行い、信頼性の高いテストを行うことができるソフトウェアのテスト方法および装置を提供することである。
【００１０】
本発明の他の目的は、ソフトウェアを修正するに際し、ソフトウェアの修正に伴って新たにテストを実施しなければならないシナリオを抽出し、抽出されるシナリオを実行するために必要とされる時間を正確に予測することのできるソフトウェアのテスト方法および装置を提供することである。
【００１１】
【課題を解決するための手段】
本発明は、複数の状態間を遷移しながら動作するソフトウェアのテスト方法であって、
該ソフトウェアの各状態に関する修正の回数を開発履歴情報として記憶しておき、
状態間の遷移を遷移のトリガとなる入力情報とともに定める状態遷移情報に基づいて、状態間をトリガで連結してテストを行うシナリオを、複数作成する作成工程と、
作成工程で作成される各シナリオの実行時間を算出する時間算出工程と、
開発履歴情報を用いて、シナリオ作成工程で作成される各シナリオに重みを付け、時間算出工程で算出される各シナリオの実行時間の長さの相対的な比で重みを除算し、各シナリオの重み付け点数を求める重み付け工程と、
重み付け工程で求められる重み付け点数が大きい順に、作成工程で作成されているシナリオを抽出し、抽出されるシナリオの実行時間の合計が予め定める条件を満たすように抽出するシナリオを選択する抽出工程と、
抽出工程で抽出するシナリオを実行してテストを行う実行工程とを、
含むことを特徴とするソフトウェアのテスト方法である。
【００１２】
本発明に従えば、ＧＵＩ機能を備えるなど、複数の状態間を遷移しながら動作するソフトウェアを、作成工程と、時間算出工程と、重み付け工程と、抽出工程と、実行工程とを含む方法でテストする。ソフトウェアの各状態に関する修正の回数は、開発履歴情報として記憶しておく。作成工程では、状態間の遷移を遷移のトリガとなる入力情報とともに定める状態遷移情報に基づいて、状態間をトリガで連結してテストを行うシナリオを、複数作成するので、状態とトリガとを組合わせてシナリオを容易に作成することができる。時間算出工程では、作成工程で作成される各シナリオの実行時間を算出する。重み付け工程では、開発履歴情報を用いて、シナリオ作成工程で作成される各シナリオに重みを付け、時間算出工程で算出される各シナリオの実行時間の長さの相対的な比で重みを除算し、各シナリオの重み付け点数を求める。修正回数が多い状態は重み付け点数を大きくすることができ、抽出工程では、重み付け点数の大きい順にシナリオを抽出し、抽出されるシナリオの実行時間の合計が予め定める条件を満たすようにするので、テストに要する時間が条件を満たす範囲で、修正回数の多い状態が多く含まれるようなシナリオを抽出することができる。実行工程では、抽出工程で抽出するシナリオを実行してテストを行う。
【００１３】
作成工程で用いる状態遷移情報は、ソフトウェアの設計において一般的に使われているプロトタイピングツールなどから得られる。状態遷移情報から複数のシナリオを作成し、テスト対象となるソフトウェアの開発履歴情報やシナリオの実行時間に基づいてシナリオに重み付けを行い、実行時間が予め定める条件を満たす範囲で有効なテストを行うことができる。
【００１４】
また本発明は、複数の状態間を遷移しながら動作するソフトウェアのテスト方法であって、
ソフトウェア部品が、実機における使用実績のあるもの、実機における使用実績のあるものを一部修正したもの、新規に作成されて実機における使用実績のないもののうち、いずれに属するかを属性情報として記憶しておき、
状態間の遷移を遷移のトリガとなる入力情報とともに定める状態遷移情報に基づいて、状態間をトリガで連結してテストを行うシナリオを、複数作成する作成工程と、
作成工程で作成される各シナリオの実行時間を算出する時間算出工程と、
属性情報を用いて、シナリオ作成工程で作成される各シナリオに重みを付け、時間算出工程で算出される各シナリオの実行時間の長さの相対的な比で重みを除算し、各シナリオの重み付け点数を求める重み付け工程と、
重み付け工程で求められる重み付け点数が大きい順に、作成工程で作成されているシナリオを抽出し、抽出されるシナリオの実行時間の合計が予め定める条件を満たすように抽出するシナリオを選択する抽出工程と、
抽出工程で抽出するシナリオを実行してテストを行う実行工程とを、
含むことを特徴とするソフトウェアのテスト方法である。
【００１５】
本発明に従えば、ソフトウェア部品が、実機における使用実績のあるもの、実機における使用実績のあるものを一部修正したもの、新規に作成されて実機における使用実績のないもののうち、いずれに属するかを属性情報として記憶しておき、重み付け工程では、属性情報を用いて、シナリオ作成工程で作成される各シナリオに重みを付け、時間算出工程で算出される各シナリオの実行時間の長さの相対的な比で重みを除算し、各シナリオの重み付け点数を求める。本発明のその他の工程は、前述の発明と同じである。
【００１６】
このように、属性情報に基づいて、実機における使用実績のあるもの、実機における使用実績のあるものを一部修正したもの、新規に作成されて実機における使用実績のないものであるかを、重み付けに反映させるので、新規に作成されて実機における使用実績がなく信頼性の低い状態は重み付け点数を大きくすることができ、重み付け点数の大きいシナリオを優先的に実行させることによって、信頼性の低い部分を重点的にテストし、実機における使用実績のある信頼性の高いと推定される部分のテストを省くことができる。したがって、テストの実施に要する総時間を節約でき、効率的で信頼性の高いテストを行うことができる。
【００１７】
また本発明は、修正を予定している状態を含むソフトウェアを、該状態を識別するためのステート識別子とともに修正情報として記憶しておき、
修正情報に基づいて、該ステート識別子を含むシナリオを抽出し、
抽出されるシナリオの実行時間の合計をテストに要する時間とみなすことによって、テストに要する時間を予測するテスト範囲予測工程を、さらに含むことを特徴とする。
【００１８】
本発明に従えば、修正を予定している状態を含むソフトウェアを、該状態を識別するためのステート識別子とともに修正情報として記憶しておく。テスト範囲予測工程では、修正情報に基づいて、該ステート識別子を含むシナリオを抽出し、抽出されるシナリオの実行時間の合計をテストに要する時間であると予測する。このことによって、修正を予定している状態を含むソフトウェアに関わるシナリオを抽出し、抽出した全てのシナリオのテスト実施に要する総時間を明確にすることができる。すなわち、テスト所要時間を正確に予測できるので、ソフトウェア開発に関する全体計画の精度を向上することが可能になり、充分な信頼性を有するソフトウェアを備え、かつ機能の充実した製品を開発するとともに、製品のタイムリーな市場投入を実現できる。
【００１９】
また本発明は、前記実行工程は、
シナリオを実行した結果の合否を判定し、不合格と判定された遷移を含むシナリオに、抽出の可否を判別する抽出情報として、抽出しないことを示すオン情報を付加する合否判定ステップをさらに含み、
前記抽出工程は、
抽出情報がオンであるシナリオを抽出しないことを特徴とする。
【００２０】
本発明に従えば、実行工程は、抽出工程で抽出するシナリオを実行してテストを行う実行ステップに加え、シナリオを実行した結果の合否を判定し、不合格と判定された遷移を含むシナリオに、抽出の可否を判別する抽出情報として、抽出しないことを示すオン情報を付加する合否判定ステップをさらに含む。このように、不具合の遷移を含み不合格と判定されるシナリオが発覚すると、該不具合の遷移を含むシナリオの有無を検索し、検索結果として検出されるシナリオの全てに抽出情報としてオン情報を付加するので、不具合に関わりのあるシナリオを明確にすることができる。抽出工程では、オン情報の付加されるシナリオを抽出しないので、ソフトウェアを修正するまで、不具合と関わりのないシナリオを抽出して重点的にテストできる。したがって、テストの実施に要する総時間を節約でき、効率的で信頼性の高いテストを行うことができる。
【００２１】
また本発明の前記抽出工程では、１または複数のシナリオを抽出し、
前記予め定める条件は、予め実行時間情報として入力される時間より、抽出するシナリオの実行時間の合計が短いことであることを特徴とする。
【００２２】
本発明に従えば、実行時間情報として入力される時間より短い時間で実行可能で信頼性が高いテストを、修正回数の多い状態に重みを付けて抽出される１または複数のシナリオを用いて行うことができる。
【００２３】
また本発明の前記実行工程では、実行したシナリオの重み付け点数を減少させることを特徴とする。
【００２４】
本発明に従えば、シナリオを実行すると重み付け点数が減少する。減少させる点数を大きくしておけば、１回実行したシナリオを繰返して抽出することを防ぎ、実行するシナリオの偏りを軽減することができる。重み付け点数が大きいシナリオは、点数を減少させても繰返して抽出され、実行される可能性があり、重点的にテストを行う対象とすることができる。
【００２５】
また本発明は、前述のいずれかに記載のソフトウェアのテスト方法を、コンピュータに実行させるためのプログラムである。
【００２６】
本発明に従えば、シナリオの作成を、ソフトウェアの設計に用いるプロトタイピングツールなどから得られる状態遷移情報に基づいて容易に行い、開発履歴情報を反映させた重み付けでシナリオを選択して、信頼性の高いテストをコンピュータに行わせることができる。
【００２７】
また本発明は、前述のいずれかに記載のソフトウェアのテスト方法を、コンピュータに実行させるためのプログラムが記録されるコンピュータ読取り可能な記録媒体である。
【００２８】
本発明に従えば、プログラムをコンピュータに読取らせて、シナリオの作成を、ソフトウェアの設計に用いるプロトタイピングツールなどから得られる状態遷移情報に基づいて容易に行い、開発履歴情報を反映させた重み付けでシナリオを選択して、信頼性の高いテストを行わせることができる。
【００２９】
また本発明は、複数の状態間を遷移しながら動作するソフトウェアのテスト装置であって、
ソフトウェアの各状態に関する修正の回数を開発履歴情報として記憶する履歴記憶手段と、
状態間の遷移を遷移のトリガとなる入力情報とともに定める状態遷移情報に基づいて、状態間をトリガで連結してテストを行うシナリオを、複数作成する作成手段と、
作成手段で作成される各シナリオの実行時間を算出する時間算出手段と、
履歴記憶手段に記憶されている開発履歴情報を用いて、作成手段で作成される各シナリオに重みを付け、時間算出手段で算出される各シナリオの実行時間の長さの相対的な比で重みを除算し、各シナリオの重み付け点数を求める重み付け手段と、
重み付け手段で求められる重み付け点数が大きい順に、作成手段で作成されているシナリオを抽出し、抽出されるシナリオの実行時間の合計が予め定める条件を満たすように抽出するシナリオを選択する抽出手段と、
抽出手段が抽出するシナリオを実行してテストを行う実行手段とを、
含むことを特徴とするソフトウェアのテスト装置である。
【００３０】
本発明に従えば、複数の状態間を遷移しながら動作するソフトウェアのテスト装置は、履歴記憶手段と、作成手段と、時間算出手段と、重み付け手段と、抽出手段と、実行手段とを含む。履歴記憶手段は、ソフトウェアの各状態に関する修正の回数を開発履歴情報として記憶する。作成手段は、状態間の遷移を遷移のトリガとなる入力情報とともに定める状態遷移情報に基づいて、状態間をトリガで連結してテストを行うシナリオを、複数作成する。状態遷移情報は、ソフトウェアの設計を行う際に利用するプロトタイピングツールなどから得ることができるので、シナリオの作成を容易に行うことができる。時間算出手段は、作成手段で作成される各シナリオの実行時間を算出する。重み付け手段は、履歴記憶手段に記憶されている開発履歴情報を用いて、作成手段で作成される各シナリオに重みを付け、時間算出手段で算出される各シナリオの実行時間の長さの相対的な比で重みを除算し、各シナリオの重み付け点数を求めるので、実行時間が短く、かつ修正回数の多い状態を含むシナリオに大きな重み付け点数が付けられる。
【００３１】
状態に関する修正は、不具合を直すために行われることが多く、修正回数が多い状態は信頼性が低いと考えられる。抽出手段は、重み付け手段で求められる重み付け点数が大きい順に、作成手段で作成されているシナリオを抽出し、抽出されるシナリオの実行時間の合計が予め定める条件を満たすように、抽出するシナリオを選択するので、予め定める条件を満たす実行時間で、信頼性が低い状態を含むシナリオを優先的に抽出することができる。実行手段は、抽出手段が抽出するシナリオを実行してテストを行うので、信頼性が低い状態を含むシナリオを優先的に実行して、ソフトウェアの信頼性を高めることができる。
【００３２】
また本発明は、複数の状態間を遷移しながら動作するソフトウェアのテスト装置であって、
ソフトウェア部品が、実機における使用実績のあるもの、実機における使用実績のあるものを一部修正したもの、新規に作成されて実機における使用実績のないもののうち、いずれに属するかを属性情報として記憶する属性情報記憶手段と、
状態間の遷移を遷移のトリガとなる入力情報とともに定める状態遷移情報に基づいて、状態間をトリガで連結してテストを行うシナリオを、複数作成する作成手段と、
作成手段で作成される各シナリオの実行時間を算出する時間算出手段と、
属性情報記憶手段に記憶されている属性情報を用いて、作成手段で作成される各シナリオに重みを付け、時間算出手段で算出される各シナリオの実行時間の長さの相対的な比で重みを除算し、各シナリオの重み付け点数を求める重み付け手段と、
重み付け手段で求められる重み付け点数が大きい順に、作成手段で作成されているシナリオを抽出し、抽出されるシナリオの実行時間の合計が予め定める条件を満たすように抽出するシナリオを選択する抽出手段と、
抽出手段が抽出するシナリオを実行してテストを行う実行手段とを、
含むことを特徴とするソフトウェアのテスト装置である。
【００３３】
本発明に従えば、ソフトウェアのテスト装置は、ソフトウェア部品が、実機における使用実績のあるもの、実機における使用実績のあるものを一部修正したもの、新規に作成されて実機における使用実績のないもののうち、いずれに属するかを属性情報として記憶しておく属性情報記憶手段を備え、重み付け手段が、属性情報を用いて、シナリオ作成手段で作成される各シナリオに重みを付け、時間算出手段で算出される各シナリオの実行時間の長さの相対的な比で重みを除算し、各シナリオの重み付け点数を求める。
【００３４】
このように、属性情報に基づいて、実機における使用実績のあるもの、実機における使用実績のあるものを一部修正したもの、新規に作成されて実機における使用実績のないものであるかを、重み付けに反映させるので、新規に作成されて実機における使用実績がなく信頼性の低い状態は重み付け点数を大きくすることができる。重み付け点数の大きいシナリオを優先的に実行させることによって、信頼性の低い部分を重点的にテストし、実機における使用実績のある信頼性の高いと推定される部分のテストを省くことができるので、テストの実施に要する総時間を節約でき、効率的で信頼性の高いテストを行うことの可能なソフトウェアのテスト装置が実現される。
【００３５】
また本発明は、修正を予定している状態を含むソフトウェアを、該状態を識別するためのステート識別子とともに修正情報として記憶する修正情報記憶手段と、
修正情報に基づいて、該ステート識別子を含むシナリオを抽出し、抽出されるシナリオの実行時間の合計をテストに要する時間とみなすことによって、テストに要する時間を予測するテスト範囲予測手段とを、さらに含むことを特徴とする。
【００３６】
本発明に従えば、ソフトウェアのテスト装置は、修正を予定している状態を含むソフトウェアを、該状態を識別するためのステート識別子とともに修正情報として記憶しておく修正情報記憶手段を備え、テスト範囲予測手段が、修正情報に基づいて、該ステート識別子を含むシナリオを抽出し、抽出されるシナリオの実行時間の合計をテストに要する時間であると予測する。このことによって、修正を予定している状態を含むソフトウェアに関わるシナリオを抽出し、抽出した全てのシナリオのテスト実施に要する総時間を明確にすることの可能なソフトウェアのテスト装置が実現される。
【００３７】
また本発明は、前記実行手段は、
抽出手段が抽出するシナリオを実行してテストを行う実行部と、
シナリオを実行した結果の合否を判定し、不合格と判定された遷移を含むシナリオに、抽出の可否を判別する抽出情報として、抽出しないことを示すオン情報を付加する合否判定部とを含み、
前記抽出手段は、
抽出情報がオンであるシナリオを抽出しないことを特徴とする。
【００３８】
本発明に従えば、ソフトウェアのテスト装置は、実行手段として、抽出手段が抽出するシナリオを実行してテストを行う実行部と、シナリオを実行した結果の合否を判定し、不合格と判定された遷移を含むシナリオに、抽出の可否を判別する抽出情報として、抽出しないことを示すオン情報を付加する合否判定部とを含む。合否判定部は、不具合の遷移を含み不合格と判定されるシナリオが発覚すると、該不具合の遷移を含むシナリオの有無を検索し、検索結果として検出されるシナリオの全てに抽出情報としてオン情報を付加し、不具合に関わりのあるシナリオを明確にする。抽出手段は、オン情報の付加されるシナリオを抽出しない。このことによって、ソフトウェアを修正するまで、不具合と関わりのないシナリオを抽出して重点的にテストすることのできるソフトウェアのテスト装置が実現される。
【００３９】
【発明の実施の形態】
図１は、本発明の実施の一形態であるソフトウェアのテスト装置１の概略的なシステム構成を示すブロック図である。状態遷移情報１０は、ソフトウェアのＧＵＩ設計において一般的に利用されているプロトタイピングツールから得られる。実行時間情報２０は、所望のテスト実行時間として入力される。開発履歴情報３０には、ソフトウェアの開発過程等におけるステートの新規作成・修正に関する情報が格納されている。シナリオ作成手段４０は、状態遷移情報１０と実行時間情報２０とに基づき、テストに用いるシナリオを作成する。重み付け手段５０は、開発履歴情報３０に基づき、シナリオに対する重み付けを行う。シナリオ作成手段４０によって作成したシナリオ６０は、シナリオ実行手段７０によって、テストとして実行される。さらに、シナリオ作成手段４０には、作成部４１、時間算出手段である時間算出部４２、記憶部４３および抽出手段である抽出部４４が含まれる。
【００４０】
本実施形態でシナリオとは、上記ソフトウェアの一連の操作内容を表現するものであり、具体的には、ステートとトリガ、トリガにより遷移する先のステートを列挙することにより表したものとする。ステートは、ソフトウェアの利用者に、操作を促す画面を表示し、何らかの操作を待つ状態である。利用者の操作を待ちながら、処理を行っている結果を表示することもある。
【００４１】
シナリオ作成手段４０、重み付け手段５０およびシナリオ実行手段７０は、マイクロコンピュータのＣＰＵなどが、予め設定されるプログラムに従った動作することによって実現される。このプログラムは、予めＲＯＭなどに格納して実行させることができ、またハードディスクなどの書換え可能な記録媒体に記録しておいて、ＲＡＭに読出して実行させることもできる。ハードディスクやＲＡＭなどには、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの着脱可能な記録媒体からプログラムを読込んだり、インターネットなどの通信ネットワークを介してプログラムをダウンロードすることもできる。
【００４２】
図２は、状態遷移情報１０の一例を示している。縦軸はステート識別子Ｓ１，Ｓ２，Ｓ３、横軸はトリガ識別子Ｔ１，Ｔ２，Ｔ３をそれぞれ示す。たとえばステート識別子Ｓ１で示されるステートの行とトリガ識別子Ｔ１で示されるトリガの列とが交わる欄を参照すると、ステート識別子Ｓ２で表されるステートが定義されている。これは、ステート識別子Ｓ１のステートでトリガＴ１を実行するとステートＳ２の状態に遷移することを示す。なお、以下の説明では、ステート識別子Ｓ１，Ｓ２，Ｓ３で表されるステートをそれぞれステートＳ１，Ｓ２，Ｓ３として示す。また、トリガ識別子Ｔ１，Ｔ２，Ｔ３で表されるトリガを、トリガＴ１，Ｔ２，Ｔ３としてそれぞれ示す。
【００４３】
図３は、状態遷移情報１０が示すステートＳ１，Ｓ２，Ｓ３間の遷移フローを示す。以下、遷移のループについて説明する。図３で、Ｓ１〜Ｓ３はステート識別子、矢印は遷移方向、矢印上の記号はトリガ識別子を示す。ステートＳ１からは、トリガＴ１によってステートＳ２に遷移する。ステートＳ２からは、トリガＴ２によってステートＳ３に遷移する。ステートＳ３からは、トリガＴ３によってステートＳ１に戻る。上記のように遷移していくうちに同じステートに戻ることを遷移のループと呼称する。限られた時間の中で多様なテストを実施するためには、同じステート遷移を繰返し確認することは効率的でない。したがって、ループの回数を制限するか、もしくはループを許可しないという条件を定める。以下、本実施形態ではループを許可しない条件で説明する。
【００４４】
図４は、図１のソフトウェアのテスト装置１で行なわれる動作手順を示すフローチャートである。ステップＳ２００で、図１の作成部４１は、状態遷移情報１０を読み込む。次にステップＳ２０１に進み、図２で例示した縦軸のステート識別子Ｓ１，Ｓ２，Ｓ３のうちから最上段のステート識別子Ｓ１をシナリオの始点として取得する。次にステップＳ２０２で、ステートＳ１からの遷移先を求める。ステートＳ１は、トリガＴ１によってステートＳ２に遷移するため、ステートＳ１の遷移先はステートＳ２となる。ステートＳ２にはトリガＴ１とトリガＴ２が定義されており、トリガＴ１の遷移先はステートＳ１である。ステップＳ２０３では、ステップＳ２０２で取得した遷移先が終点であるか否かを判断する。本動作では前述のようにループを許可しないため、ステートＳ２が１つ目のシナリオの終点となる。
【００４５】
ステップＳ２０３で終点と判断されると、ステップＳ２０４では、他にトリガがないか否かを判断する。ステートＳ２のもう一方のトリガＴ２による遷移先はステートＳ３である。ステートＳ３にはトリガＴ１とトリガＴ３が定義されており、トリガＴ１の遷移先はステートＳ２でありループしているため、ステートＳ３が２つ目のシナリオの終点となる。さらに、ステートＳ３のもう一方のトリガＴ３による遷移先はステートＳ１でありループしているため、ステートＳ３がシナリオの終点となるが、前記２つ目のシナリオと同一であるため新たなシナリオとはしない。ステートＳ３に定義されているトリガはトリガＴ１とトリガＴ２のみであるので、ステートＳ１を始点としたシナリオは以上で全てである。次にステップＳ２０５では、他に始点はないか否かを判断する。ステートＳ１の他に、シナリオの始点となるステートはステートＳ２であるので、ステートＳ１の場合と同様にシナリオを作成し、シナリオの始点となる最後のステートＳ３まで繰返す。
【００４６】
図５は、以上の動作によって作成されるシナリオ６０の例を示す。また、作成されたシナリオ６０は記憶部４３に格納しておく。図４のステップＳ２０６で、時間算出部４２は、記憶部４３に格納されている各シナリオ６０を実行するために要する時間を算出する。各シナリオ６０の実行時間は、ステート遷移回数にて求める。たとえば、ステート遷移に要する時間を１秒とし、あるシナリオ６０においてステート遷移回数が５回であれば、シナリオ実行に要する時間は５秒であるとする。このように全てのシナリオ６０について、それぞれの実行時間を算出しておく。
【００４７】
次にステップＳ２０７では、開発履歴情報３０に基づきシナリオ６０の重み付けを行う。重み付け手段５０は、まず開発履歴情報３０を読み込む。開発履歴情報３０は、ステート識別子と当該ステートに関わるソフトウェア部品の修正回数を列挙することにより表したものである。記憶部４３に格納されている各シナリオ６０の作成直後の重み付け点数は０とする。ステップＳ２０８では、この重み付け点数に開発履歴情報３０のステートの修正回数を加算し、時間算出部４２にて算出したシナリオ実行時間で割り、単位時間当たりの重み付け点数を求める。たとえば、開発履歴情報３０でステートＳ１の修正回数が５回、ステートＳ２の修正回数が２回の場合を想定する。上記１つ目に作成したシナリオ６０にはステートＳ１，Ｓ２が含まれるのみであるため、ステート遷移回数は１回であり、シナリオ実行に要する時間は１秒となる。重み付け点数は、初期値０に５と２とを加算した値７を１（秒）で割る結果、７となる。同様に記憶部４３に格納済みのシナリオ６０について、ステップＳ２０９で全て重み付け点数が求められたと判断されるまで、手順を繰返す。なお、重み付け点数は、シナリオに含まれるステートの修正回数の合計値をシナリオの実行時間で除算して、単位時間当りで求めているけれども、実行時間の長さに対応する比で除算すればよく、必ずしも単位時間単位で求めなくてもよい。
【００４８】
次にステップＳ２１０以下で、抽出部４４は実行時間情報２０に基づき、シナリオ実行手段７０にて実行するシナリオ６０を抽出する。実行時間情報２０は、シナリオ実行手段７０で実行するシナリオ６０全ての実行に要する時間を表す。まずステップＳ２１０で、抽出部４４は実行時間情報２０を読み込む。次にステップＳ２１１では、記憶部４３に格納されている重み付け点数の大きいシナリオ６０から順に抽出する。ステップＳ２１２では、抽出した各シナリオ６０の実行時間の和が実行時間情報２０の値に達するまで、ステップＳ２１１のシナリオ抽出を繰返す。抽出されたシナリオ６０の実行時間の和が実行時間情報２０の値に達すると、ステップＳ２１３に移る。
【００４９】
ステップＳ２１３で、シナリオ実行手段７０は、シナリオ作成手段４０で作成されたシナリオ６０を読み込み、シナリオ６０のトリガをイベントメッセージとしてテスト対象のソフトウェアに送信することによって、テスト対象のソフトウェアのＧＵＩ部をシナリオ６０に従って操作する。シナリオ実行手段７０で実行したシナリオ６０は、ステップＳ２１４で重み付け点数を減算する。たとえば、作成部４１で１つ目に作成したシナリオ６０の場合、シナリオ実行前の重み付け点数は７であり、シナリオ実行した後はあらかじめ定めておいた定数として、たとえば１０を減算してマイナス３とする。重み付け点数を減算することで、テストを繰返した場合に実行するシナリオの偏りを軽減することが可能となる。重み付け点数が大きいシナリオは、点数を減算しても大きな点数が残り、繰返して抽出される可能性を高くすることもできる。ステップＳ２１５では、抽出部４４で抽出されたシナリオ６０が全て実行されたか否かを判断し、全部が実行されるまで繰返す。
【００５０】
以上説明したような構成によれば、ソフトウェアのＧＵＩ設計において一般的に使われているプロトタイピングツールから得られる状態遷移情報１０から複数のシナリオ６０を容易に作成することが可能となる。また、テスト対象となるソフトウェアの開発履歴情報３０や過去のシナリオ実行の有無に基づき、シナリオ６０に重み付けを行い、実行時間情報２０で定める所望の実行時間内で、信頼性の低い部分を重点的にテストし、信頼性の高いと推定される部分のテストを省くことができ、テスト実施に要する総時間を節約することが可能となる。
【００５１】
なお、以上の説明では、抽出するシナリオ６０を、実行時間情報２０を入力して制限するようにしているけれども、すべてのステートを少なくとも１回はテストするような条件とすることもできる。
【００５２】
図６は、本発明の実施の第２の形態であるソフトウェアのテスト装置２の概略的なシステム構成を示すブロック図である。本実施の形態のソフトウェアのテスト装置２は、実施の第１形態のソフトウェアのテスト装置１に類似し、対応する部分については同一の参照符号を付して説明を省略する。ソフトウェアのテスト装置２は、実施の第１形態のソフトウェアのテスト装置１の開発履歴情報３０に代えて、属性情報８０を有することを特徴とする。属性情報８０は、ソフトウェアのテスト装置２に備わり、同一の参照符号で表される属性情報記憶手段８０に格納される。
【００５３】
属性情報８０には、ステート識別子と、当該ステートに関るソフトウェア部品の属性に関する情報とが格納されている。ここで属性とは、ソフトウェア部品が、「既存」、「修正」、または「新規」のいずれの区分に属するかをいう。「既存」は、既に開発済みのたとえば情報処理装置（実機）に実装されて使用された実績のあるソフトウェア部品であって、開発中の装置にそのまま引継いで使用されるものである。「修正」は、実機に実装されて使用された実績があるけれども、開発中の装置に引継いで使用するに際し、一部修正を加えたものである。「新規」は、開発中の装置に使用するべく新規に作成したソフトウェア部品であって、実機における使用実績のないものである。
【００５４】
ソフトウェアのテスト装置２では、重み付け手段５０が、属性情報８０を用いて、シナリオ作成手段４０で作成される各シナリオに重みを付け、時間算出手段４２で算出される各シナリオの実行時間の長さの相対的な比で重みを除算し、各シナリオの重み付け点数を求める。
【００５５】
図７は、図６のソフトウェアのテスト装置２で行なわれる動作手順を示すフローチャートである。ステップＳ２００〜ステップＳ２０６の動作は、前述の図４に示す実施の第１形態におけるソフトウェアのテスト装置１の動作と同一であるので、説明を省略する。
【００５６】
ステップＳ２０６の動作後に進むステップＳ３００では、重み付け手段５０が、属性情報８０を読み込む。属性情報８０は、ステート識別子と当該ステートに関わるソフトウェア部品の属性を列挙することにより表したものである。ステップＳ３０１では、属性情報８０のソフトウェア部品の属性に基づいて重み付け点数を加算し、時間算出部４２にて算出したシナリオ実行時間で割り、単位時間当たりの重み付け点数を求める。たとえば、属性別の重み付けの加算点数を、信頼性が高いと推定される「既存」は０、比較的信頼性の高い「修正」は５、最も信頼性が低い「新規」は１０とし、ステートＳ１が「新規」、ステートＳ２が「修正」の場合を想定する。前述の実施の第１形態において初めに作成したシナリオについて例示すると、シナリオにはステートＳ１、Ｓ２が含まれるのみであるため、ステート遷移回数は１回であり、シナリオ実行に要する時間は１秒となる。したがって、重み付け点数は、初期値０に、ステートＳ１の点数１０（「新規」）と、ステートＳ２の点数５（「修正」）とを加算した値１５を１（秒）で割った結果、１５となる。同様に記憶部４３に格納済みのシナリオ６０について、ステップＳ３０２で全て重み付け点数が求められたと判断されるまで、ステップＳ３０１の動作を繰り返す。
【００５７】
ステップＳ３０２で全て重み付け点数が求められたと判断された後に進むステップＳ２１０〜ステップＳ２１５の動作手順は、前述の図４に示す実施の第１の形態と同一に実行される。
【００５８】
以上説明したような重み付け手段５０を備える構成のソフトウェアのテスト装置２によれば、信頼性の低い「新規」「修正」部分を重点的にテストし、信頼性の高いと推定されるソフトウェア部品である「既存」部分のテストを省くことができ、テスト実施に要する総時間を節約することが可能となる。
【００５９】
図８は、本発明の実施の第３の形態であるソフトウェアのテスト装置３の概略的なシステム構成を示すブロック図である。本実施の形態のソフトウェアのテスト装置３は、実施の第１形態のソフトウェアのテスト装置１に類似し、対応する部分については同一の参照符号を付して説明を省略する。ソフトウェアのテスト装置３は、修正を予定している状態を含むソフトウェアを、該状態を識別するためのステート識別子とともに修正情報９０として記憶する修正情報記憶手段９０と、修正情報９０に基づいて、該ステート識別子を含むシナリオ６０を抽出し、抽出されるシナリオ６０の実行時間の合計をテストに要する時間とみなすことによって、テストに要する時間を予測するテスト範囲予測手段１００とをさらに含むことを特徴とする。
【００６０】
修正情報９０は、修正を予定しているソフトウェア部品に関わるステート識別子を列挙することにより表したものであり、この修正情報９０を記憶する修正情報記憶手段９０とを、便宜上同一の参照符号で表記する。テスト範囲予測手段１００は、修正情報９０に基づき、記憶部４３から関係するシナリオを抽出する。記憶部４３に格納されているシナリオから、修正情報９０に基づいて指定されるステート識別子を含むシナリオを全て抽出し、総実行時間を求める。この総実行時間を、テストに要する時間であると予測する。
【００６１】
図９は、図８のソフトウェアのテスト装置３で行なわれる動作手順を示すフローチャートである。ステップＳ２００〜ステップＳ２０６の動作は、前述の図４に示す実施の第１形態におけるソフトウェアのテスト装置１の動作と同一であるので、説明を省略する。
【００６２】
ステップＳ２０６の動作後に進むステップＳ４００では、テスト範囲予測手段１００が、修正情報９０から修正を予定している状態を識別するための１つ目のステート識別子を読み込む。たとえば、ステート識別子Ｓ１を読み込んだと想定する。ステップＳ４０１では、シナリオを記憶部４３から読み込む。ステップＳ４０２では、シナリオにステート識別子Ｓ１が含まれるか否かを判断する。ステート識別子Ｓ１が含まれると判断すると、ステップＳ４０３では、記憶部４３から当該シナリオの実行時間を読み込む。ステップＳ４０４では、記憶部４３に他のシナリオが格納されていないか判断する。
【００６３】
ステート識別子Ｓ１を含む他のシナリオが格納されている場合は、ステップＳ４０１に戻り、前記他のシナリオを読み込む。ステート識別子Ｓ１を含む他のシナリオが格納されていない場合は、ステップＳ４０５に進み、ステップＳ４０５では、修正情報９０に修正を予定している状態を識別する他のステート識別子が格納されていないかを判断する。他のステート識別子が格納されている場合は、ステップＳ４００に戻り、修正情報９０から次のステート識別子を読み込む。修正を予定している状態を識別する他のステート識別子が格納されていない場合は、ステップＳ４０６に進み、ステップＳ４０６では、前述のステップＳ４０３で読み込んでおいた各シナリオの実行時間の総和を算出する。
【００６４】
以上説明したようなテスト範囲予測手段１００を備える構成のソフトウェアのテスト装置３によれば、修正を予定しているソフトウェア部品に関係するシナリオの抽出と、抽出した全てのシナリオの実行に要する時間を取得することが可能となる。
【００６５】
図１０は、本発明の実施の第４の形態であるソフトウェアのテスト装置４の概略的なシステム構成を示すブロック図である。本実施の形態のソフトウェアのテスト装置４は、実施の第１形態のソフトウェアのテスト装置１に類似し、対応する部分については同一の参照符号を付して説明を省略する。ソフトウェアのテスト装置４は、シナリオ実行手段７０が、実行部７１と合否判定部７２とを含んで構成されることを特徴とする。
【００６６】
実行部７１は、抽出部４４が抽出するシナリオを実行してテストを行う。合否判定部７２は、シナリオを実行した結果の合否を判定し、合格と判定した場合、重み付け手段５０を制御して予め定める定数を重み付け点数から減算し、不合格と判定した場合、重み付け点数の減算を行わずに、不合格と判定された遷移を含むシナリオを抽出し、抽出されたシナリオに、抽出の可否を判別する抽出情報として、抽出しないことを示すオン情報を付加する。
【００６７】
ここでシナリオ抽出の可否を判別する抽出情報とは、たとえば「１」と「０」とによって与えられる２値化された情報であり、シナリオを抽出しないことを示す抽出情報「１」をオン情報と呼び、シナリオを抽出することを示す抽出情報「０」をオフ情報と呼ぶ。この抽出情報は、シナリオごとにオン情報またはオフ情報のいずれかが指定されるものであり、記憶部４３に記憶される。シナリオが作成された直後では、シナリオに付加される抽出情報は全てオフ情報である。
【００６８】
図１１は、図１０のソフトウェアのテスト装置４で行なわれる動作手順を示すフローチャートである。ステップＳ２００〜ステップＳ２０９の動作は、前述の図４に示す実施の第１形態におけるソフトウェアのテスト装置１の動作と同一であるので、説明を省略する。
【００６９】
ステップＳ２０９の動作後に進むステップＳ２１０では、抽出部４４が実行時間情報２０を読み込む。ステップＳ２１１では、記憶部４３に格納されている重み付け点数の大きいシナリオから順に読み出す。ステップＳ５００では、読み出されたシナリオに付加されている抽出情報がオンであるか否かが判断される。抽出情報がオンであれば抽出することなくステップＳ２１１に戻り、次の順位のシナリオを読み出す。抽出情報がオフであれば抽出部４４がシナリオを抽出してステップＳ２１２に進み、ステップＳ２１２では、抽出したシナリオの実行時間を加算する演算を行ない、各シナリオ６０の実行時間の和が実行時間情報２０の値に達するまでステップＳ２１１のシナリオ読み出しを繰り返す。ステップＳ５００において抽出されたシナリオ６０の時間の和が実行時間情報２０の値に達するとステップＳ２１３に移る。
【００７０】
ステップＳ２１３では、実行部７１が、シナリオ作成手段４０で作成されたシナリオ６０を読み込み、シナリオ６０のトリガをイベントメッセージとしてテスト対象のソフトウェアに送信することによって、テスト対象のソフトウェアのＧＵＩ部をシナリオ６０に従って操作する。ステップＳ５０１では、合否判定部７２が、実行部７１で実行したシナリオ６０の合否判定を行なう。合否判定を具体例によって説明すると、たとえば前述の図５に示した１番目のシナリオは、ステートＳ１を始点とし、トリガＴ１をイベントメッセージとしてテスト対象のソフトウェアに送信することによって、ステートＳ２に遷移すると合格であり、ステートＳ２以外に遷移すると不合格となる。テスト対象のソフトウェアが現在どのステートに遷移しているかについては、問合せイベントメッセージを受信すると現在の状態をステート識別子として送信するように、ソフトウェアを予めプログラミングしておき、該ソフトウェアに問合せイベントメッセージを送信するなどの方法によって知ることができる。
【００７１】
合否判定の結果、合格と判定されると、ステップＳ２１４に進み、ステップＳ２１４では、重み付け手段５０によって重み付け点数を減算する。不合格と判定されると、不合格と判定した日時、シナリオ識別子、ステート識別子、トリガ識別子を不合格リストに登録し、ステップＳ５０２に移る。図１２は、不合格リストの例を示す図である。
【００７２】
図１１に戻って、ステップＳ５０２では、合否判定手段７２が、不合格と判定した遷移を含むシナリオ（以後、関係シナリオと呼ぶことがある）を検索する。図１３は、シナリオを例示する図である。図１３を参照して不合格と判定した遷移を含むシナリオの検索について説明する。たとえば、シナリオＳＮ１のステートＳ１からトリガＴ１による遷移を不合格と判定したと想定する。その場合、検索によって、ステートＳ１からトリガＴ１により遷移する操作を含むシナリオを全て検出する。シナリオＳＮ２は、ステートＳ１からトリガＴ１によりステートＳ２に遷移し、ステートＳ２からトリガＴ２によりステートＳ３に遷移する。１回目の遷移が不合格と判定した遷移と同一であるため、シナリオＳＮ２を不合格と判定した遷移を含むシナリオであると判定する。同様にシナリオＳＮ７は、３回目の遷移が不合格と判定した遷移と同一であるため、不合格と判定した遷移を含むシナリオである。また、シナリオＳＮ３は、ステートＳ２からトリガＴ１によりＳ１に遷移し、不合格と判定した遷移と同じ遷移を含まないため、不合格と判定した遷移を含まないシナリオと判定する。同様にシナリオＳＮ４、シナリオＳＮ５、シナリオＳＮ６、シナリオＳＮ８についても不合格と判定した遷移と同じ遷移を含まないため、不合格と判定した遷移を含まないシナリオと判定する。
【００７３】
再び図１１に戻って、ステップＳ５０３では、合否判定手段７２が、検索の結果、不合格と判定した遷移を含むと判定されたシナリオの抽出情報をオンにし、次回のステップＳ５００における動作実行の際には、抽出部４４によって抽出されないようにする。ステップＳ２１５では、抽出部４４によって抽出されたシナリオ６０が全て実行されたか否かを判断し、全部が実行されるまでステップＳ２１３以降の動作を繰返す。
【００７４】
なお一旦オン情報が付加されたシナリオであっても、不具合部分が修正され、その修正履歴が開発履歴情報３０に格納されると、該開発履歴情報３０に基づき、不具合の修正されたシナリオには、それらシナリオを抽出できるように先のオン情報に代えてオフ情報が付加される。図１４は、修正された関係シナリオの抽出情報をオフにする動作手順を説明するフローチャートである。図１４を参照し、合否判定手段７２が、不合格と判定した遷移を含むシナリオ（関係シナリオ）であるとして一旦オン情報の付加されたシナリオの抽出情報を、オフにする動作手順を説明する。
【００７５】
ステップＳ６００では、重み付け手段５０が、開発履歴情報３０を読み込む。ステップＳ６０１では、重み付け手段５０が、開発履歴情報３０に新たな修正個所情報が格納されているかを確認する。ここで、修正個所情報とは、修正したステート識別子と、トリガ識別子と、修正を反映した日時とを列挙したものである。新たな修正個所情報が格納されていない場合、ステップＳ６０７へスキップし、抽出情報をオフにする本動作を終了する。新たな修正個所情報が格納されている場合、ステップＳ６０２へ進み、ステップＳ６０２では、前述の図１２に例示する不合格リストを読み込む。
【００７６】
ステップＳ６０３では、新たな修正個所情報に含まれるステート識別子およびトリガ識別子と同一のステート識別子およびトリガ識別子を有し、かつ修正個所情報の修正を反映した日時に比べて不合格と判定された日時が古いという検索条件に従って不合格リストを検索する。さらに不合格リストの中に前述の検索条件に合致するシナリオがなければ、ステップＳ６０６にスキップし、合致するシナリオがあれば、ステップＳ６０４に進む。ステップＳ６０４では、検索の結果得られたシナリオの抽出情報をオフにする。抽出情報がオフにされたシナリオは、次回のステップＳ５００における動作実行の際には、抽出部４４による抽出が可能となり、修正の実効性についてテストを行なうことができる。前述の検索条件に合致するシナリオの検索は、合否判定の不合格時における関係するシナリオの検索と同様にして実現できる。
【００７７】
ステップＳ６０５では、検索の結果得られたすべてのシナリオの抽出情報が、オフにされたと判断されるまで、ステップＳ６０４の動作を繰返す。検索の結果得られたすべてのシナリオの抽出情報をオフにすると、ステップＳ６０６に進む。ステップＳ６０６では、前述の新たな修正個所情報に含まれるすべてのステート識別子およびトリガ識別子について、不合格リストを検索し、検索結果として得られるシナリオの抽出情報をオフにする処理が完了するまで、ステップＳ６０２〜ステップＳ６０５の動作を繰返し実行する。新たな修正個所情報に含まれるすべてのステート識別子およびトリガ識別子について、不合格リストの検索結果として得られるシナリオの抽出情報をオフにする処理が完了したとき、ステップＳ６０７へ進み、抽出情報をオフにする本動作を終了する。
【００７８】
以上説明したような実行部７１と合否判定部７２とを備えるソフトウェアのテスト装置４の構成によれば、テスト工程でソフトウェアの不具合が発覚しても、その不具合を有するソフトウェアに関係のあるテストシナリオを、ソフトウェアの修正が完了するまで実施しないので、不具合と関係のない部分を優先的にテストすることが可能となる。またシナリオの実行結果が合格の場合、合否判定部７２は、重み付け手段５０を制御して該シナリオの重み付け点数を減算するので、繰り返しテスト時における実行シナリオの偏りを軽減することが可能になる。
【００７９】
【発明の効果】
以上のように本発明によれば、ＧＵＩ機能を記述したソフトウェア等の設計において一般的に使われているプロトタイピングツールなどから得られる状態遷移情報から複数のシナリオを作成し、テスト対象となるソフトウェアの開発履歴情報に基づいてシナリオに重み付けを行い、実行時間が予め定める条件を満たす範囲で信頼性の高いテストを行うことができる。
【００８０】
また本発明によれば、属性情報に基づいて、実機における使用実績のあるもの、実機における使用実績のあるものを一部修正したもの、新規に作成されて実機における使用実績のないものであるかを、重み付けに反映させるので、新規に作成されて実機における使用実績がなく信頼性の低い状態は重み付け点数を大きくすることができ、重み付け点数の大きいシナリオを優先的に実行させることによって、信頼性の低い部分を重点的にテストし、実機における使用実績のある信頼性の高いと推定される部分のテストを省くことができる。したがって、テストの実施に要する総時間を節約でき、効率的で信頼性の高いテストを行うことができる。
【００８１】
また本発明によれば、修正を予定している状態を含むソフトウェアを、該状態を識別するためのステート識別子とともに修正情報として記憶しておく。テスト範囲予測工程では、修正情報に基づいて、該ステート識別子を含むシナリオを抽出し、抽出されるシナリオの実行時間の合計をテストに要する時間であると予測する。このことによって、修正を予定している状態を含むソフトウェアに関わるシナリオを抽出し、抽出した全てのシナリオのテスト実施に要する総時間を明確にすることができる。すなわち、テスト所要時間を正確に予測できるので、ソフトウェア開発に関する全体計画の精度を向上することが可能になり、充分な信頼性を有するソフトウェアを備え、かつ機能の充実した製品を開発するとともに、製品のタイムリーな市場投入を実現できる。
【００８２】
また本発明によれば、実行工程は、抽出工程で抽出するシナリオを実行してテストを行う実行ステップに加え、シナリオを実行した結果の合否を判定し、不合格と判定された遷移を含むシナリオに、抽出の可否を判別する抽出情報として、抽出しないことを示すオン情報を付加する合否判定ステップをさらに含む。このように、不具合の遷移を含み不合格と判定されるシナリオが発覚すると、該不具合の遷移を含むシナリオの有無を検索し、検索結果として検出されるシナリオの全てに抽出情報としてオン情報を付加するので、不具合に関わりのあるシナリオを明確にすることができる。抽出工程では、オン情報の付加されるシナリオを抽出しないので、ソフトウェアを修正するまで、不具合と関わりのないシナリオを抽出して重点的にテストできる。したがって、テストの実施に要する総時間を節約でき、効率的で信頼性の高いテストを行うことができる。
【００８３】
また本発明によれば、実行時間を入力すれば、入力される時間内で実行可能な信頼性が高いテストを行うシナリオを抽出して実行することができる。
【００８４】
また本発明によれば、各状態に関する修正の回数を重み付けに反映させ、重み付け点数の多いシナリオを優先的に実行させることによって、信頼性の低い部分を重点的にテストし、信頼性の高いと推定される部分のテストを省くことができ、テストの実施に要する総時間を節約し、かつ信頼性の高いテストを行なうことができる。
【００８５】
また本発明によれば、ソフトウェアの設計に用いるプロトタイピングツールなどから得られる状態遷移情報に基づいて容易にテスト用のシナリオを作成し、開発履歴情報を反映させて、信頼性を高めたテストをコンピュータで行うことができる。
【００８６】
また本発明によれば、プログラムをコンピュータに読取らせて、シナリオの作成を容易に行い、開発履歴情報を反映させて信頼性を高めたテストを行わせることができる。
【００８７】
また本発明によれば、ＧＵＩ機能などを備えるソフトウェアの設計において一般的に使われているプロトタイピングツールなどから得られる状態遷移情報から複数のシナリオを作成し、テスト対象となるソフトウェアの開発履歴情報やシナリオの実行時間に基づいてシナリオに重み付けを行い、実行時間が予め定める条件を満たす範囲で信頼性の高いテストを行うことができる。
【００８８】
また本発明によれば、ソフトウェアのテスト装置は、ソフトウェア部品が、実機における使用実績のあるもの、実機における使用実績のあるものを一部修正したもの、新規に作成されて実機における使用実績のないもののうち、いずれに属するかを属性情報として記憶しておく属性情報記憶手段を備え、重み付け手段が、属性情報を用いて、シナリオ作成手段で作成される各シナリオに重みを付け、時間算出手段で算出される各シナリオの実行時間の長さの相対的な比で重みを除算し、各シナリオの重み付け点数を求める。
【００８９】
このように、属性情報に基づいて、実機における使用実績のあるもの、実機における使用実績のあるものを一部修正したもの、新規に作成されて実機における使用実績のないものであるかを、重み付けに反映させるので、新規に作成されて実機における使用実績がなく信頼性の低い状態は重み付け点数を大きくすることができる。重み付け点数の大きいシナリオを優先的に実行させることによって、信頼性の低い部分を重点的にテストし、実機における使用実績のある信頼性の高いと推定される部分のテストを省くことができるので、テストの実施に要する総時間を節約でき、効率的で信頼性の高いテストを行うことの可能なソフトウェアのテスト装置が実現される。
【００９０】
また本発明によれば、ソフトウェアのテスト装置は、修正を予定している状態を含むソフトウェアを、該状態を識別するためのステート識別子とともに修正情報として記憶しておく修正情報記憶手段を備え、テスト範囲予測手段が、修正情報に基づいて、該ステート識別子を含むシナリオを抽出し、抽出されるシナリオの実行時間の合計をテストに要する時間であると予測する。このことによって、修正を予定している状態を含むソフトウェアに関わるシナリオを抽出し、抽出した全てのシナリオのテスト実施に要する総時間を明確にすることの可能なソフトウェアのテスト装置が実現される。
【００９１】
また本発明によれば、ソフトウェアのテスト装置は、実行手段として、抽出手段が抽出するシナリオを実行してテストを行う実行部と、シナリオを実行した結果の合否を判定し、不合格と判定された遷移を含むシナリオに、抽出の可否を判別する抽出情報として、抽出しないことを示すオン情報を付加する合否判定部とを含む。合否判定部は、不具合の遷移を含み不合格と判定されるシナリオが発覚すると、該不具合の遷移を含むシナリオの有無を検索し、検索結果として検出されるシナリオの全てに抽出情報としてオン情報を付加し、不具合に関わりのあるシナリオを明確にする。抽出手段は、オン情報の付加されるシナリオを抽出しない。このことによって、ソフトウェアを修正するまで、不具合と関わりのないシナリオを抽出して重点的にテストすることのできるソフトウェアのテスト装置が実現される。
【図面の簡単な説明】
【図１】本発明の実施の一形態であるソフトウェアのテスト装置１の概略的なシステム構成を示すブロック図である。
【図２】図１に示す状態遷移情報１０の一例を示す図表である。
【図３】図２の状態遷移情報１０に基づく遷移フローを表す図である。
【図４】図１のソフトウェアのテスト装置１で行われる動作手順を示すフローチャートである。
【図５】図４の動作手順で得られるシナリオ６０の定義の一例を表す図である。
【図６】本発明の実施の第２の形態であるソフトウェアのテスト装置２の概略的なシステム構成を示すブロック図である。
【図７】図６のソフトウェアのテスト装置２で行なわれる動作手順を示すフローチャートである。
【図８】本発明の実施の第３の形態であるソフトウェアのテスト装置３の概略的なシステム構成を示すブロック図である。
【図９】図８のソフトウェアのテスト装置３で行なわれる動作手順を示すフローチャートである。
【図１０】本発明の実施の第４の形態であるソフトウェアのテスト装置４の概略的なシステム構成を示すブロック図である。
【図１１】図１０のソフトウェアのテスト装置４で行なわれる動作手順を示すフローチャートである。
【図１２】不合格リストの例を示す図である。
【図１３】シナリオを例示する図である。
【図１４】修正された関係シナリオの抽出情報をオフにする動作手順を説明するフローチャートである。
【符号の説明】
１，２，３，４　ソフトウェアのテスト装置
１０　状態遷移情報
２０　実行時間情報
３０　開発履歴情報
４０　シナリオ実行手段
４１　作成部
４２　時間算出部
４３　記憶部
４４　抽出部
５０　重み付け手段
６０　シナリオ
７０　シナリオ実行手段
７１　実行部
７２　合否判定部
８０　属性情報記憶手段
９０　修正情報記憶手段
１００　テスト範囲予測手段
【図１】
2004005399.tif 000003
【図２】
2004005399.tif 000004
【図３】
2004005399.tif 000005
【図４】
2004005399.tif 000006
【図５】
2004005399.tif 000007
【図６】
2004005399.tif 000008
【図７】
2004005399.tif 000009
【図８】
2004005399.tif 000010
【図９】
2004005399.tif 000011
【図１０】
2004005399.tif 000012
【図１１】
2004005399.tif 000013
【図１２】
2004005399.tif 000014
【図１３】
2004005399.tif 000015
【図１４】
2004005399.tif 000016