(57)【要約】      （修正有）【課題】予測不能性を有するソフトウェアが、期待通りの動作をしているかを判定するソフトウェアテスト装置を提供する。【解決手段】ソフトウェアテスト装置１は、テスト入力データ１０２を受け取り、ソフトウェア入力データ１０６とモデル入力データ１０８に変換するデータ変換部１０５と、ソフトウェア入力データに基づいてテスト対象のソフトウェアを実行し、実行結果１１０を出力するソフトウェア実行部１０７とを備える。また、ソフトウェアテスト装置１は、ソフトウェアについての参照モデル１０３とモデル入力データとに基づいて、ソフトウェアを実行した実行結果のモデル許容出力値範囲１１１を生成するモデル実行部１０９と、ソフトウェア実行部が出力した実行結果とモデル許容出力値範囲とに基づいて、差異情報を生成する差異解析部１１２と、評価基準１０４に基づいて、ソフトウェアの動作の判定をする判定部１１４とを有する。【選択図】図１
2019075035.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより、テスト対象であるソフトウェアへソフトウェア入力データを与え、前記ソフトウェアからの出力データに基づいて前記ソフトウェアの動作の判定をするソフトウェアテスト装置であって、
テスト入力データを受け取り、前記テスト入力データを、前記ソフトウェアに与える前記ソフトウェア入力データとモデル入力データに変換するデータ変換部と、
前記ソフトウェア入力データを受け取り、前記ソフトウェア入力データに基づいてテスト対象のソフトウェアを実行し、実行結果を出力するソフトウェア実行部と、
前記ソフトウェアについての参照モデルを受け取り、前記モデル入力データと、前記参照モデルとに基づいて、前記ソフトウェアを実行した実行結果の許容出力値範囲を含むモデル許容出力値範囲を生成するモデル実行部と、
前記ソフトウェア実行部が出力した実行結果と前記モデル実行部が生成した前記モデル許容出力値範囲とに基づいて、差異情報を生成する差異解析部と、
評価基準を受け取り、前記差異情報と前記評価基準に基づいて、前記ソフトウェアの動作の判定をする判定部とを有することを特徴とするソフトウェアテスト装置。
【請求項２】
請求項１に記載のソフトウェアテスト装置において、前記テスト入力データは、時系列に順序付けられたデータであり、前記参照モデルには、状態間の遷移で順序付けが記述されており、前記テスト入力データの順序に従い、前記ソフトウェア実行部が出力した実行結果と、前記モデル許容出力値範囲とに基づいて、前記差異解析部が前記差異情報を生成することを特徴とするソフトウェアテスト装置。
【請求項３】
請求項１に記載のソフトウェアテスト装置において、前記参照モデルには、現状態名、前記モデル入力データ、遷移条件、前記実行結果の出力値範囲、前記遷移条件を満たした場合の次状態名が記述されており、前記出力値範囲は、前記ソフトウェアを実行した前記実行結果の許容出力値範囲もしくは許容しない出力値範囲であり、
前記モデル実行部は、
前記モデル入力データと前記参照モデルに基づいて、前記遷移条件を満たした場合には前記現状態名と前記次状態名に基づいて、前記モデル許容出力値範囲を生成し、
前記差異解析部は、
前記モデル許容出力値範囲と、前記ソフトウェアを実行した前記実行結果とに基づいて、前記差異情報を生成することを特徴とするソフトウェアテスト装置。
【請求項４】
請求項１に記載のソフトウェアテスト装置において、前記参照モデルは、第１の参照モデルと第２の参照モデルを有し、前記評価基準は、第１の評価基準と第２の評価基準を有し、
前記判定部は、
前記第１の参照モデルと前記第１の評価基準に基づいた第１の判定結果と、前記第２の参照モデルと前記第２の評価基準に基づいた第２の判定結果とを出力することを特徴とするソフトウェアテスト装置。
【請求項５】
請求項１に記載のソフトウェアテスト装置において、前記モデル実行部が、第１の参照モデルと前記モデル入力データに基づいて、第１のモデル許容出力値範囲を生成し、
前記差異解析部は、前記ソフトウェア実行部が出力した実行結果と前記第１のモデル許容出力値範囲とに基づいて、複数の前記テスト入力データに対応した第１の差異情報からなる差異情報系列を生成し、
前記判定部が、前記差異情報系列と第1の判定基準に基づいて、前記テスト入力データに対応した許容出力値範囲を算出し、前記許容出力値範囲を含んだ第２の参照モデルを導出し、
前記モデル実行部が、前記第２の参照モデルと、前記モデル入力データに基づいて第２のモデル許容出力値範囲を生成し、
前記差異解析部が、前記ソフトウェア実行部が出力した実行結果と前記第２のモデル許容出力値範囲に基づいて、第２の差異情報を生成し、
前記判定部が、前記第２の差異情報と前記第1の判定基準に基づいて、前記ソフトウェアの動作の判定をすることを特徴とするソフトウェアテスト装置。
【請求項６】
請求項１に記載のソフトウェアテスト装置において、前記ソフトウェア実行部が出力した実行結果を前記モデル入力データとすることを特徴とするソフトウェアテスト装置。
【請求項７】
請求項１に記載のソフトウェアテスト装置において、前記ソフトウェア実行部が出力した実行結果が前記許容出力値範囲の範囲外の場合には、前記判定部が、範囲外となった前記テスト入力データに基づいて、新たな前記テスト入力データを生成することを特徴とするソフトウェアテスト装置。
【請求項８】
請求項１に記載のソフトウェアテスト装置において、テスト対象である前記ソフトウェアは、入力データに対する出力データに予測不能性があり出力データをソフトウェア実行前に決定できないソフトウェアであることを特徴とするソフトウェアテスト装置。
【請求項９】
コンピュータにより、テスト対象であるソフトウェアへソフトウェア入力データを与え、前記ソフトウェアからの出力データに基づいて前記ソフトウェアの動作の判定をするソフトウェアテスト方法であって、
テスト入力データを受け取り、前記テスト入力データから、前記ソフトウェアに与える前記ソフトウェア入力データとモデル入力データを生成し、
前記ソフトウェア入力データを受け取り、前記ソフトウェア入力データに基づいてテスト対象のソフトウェアを実行して、実行結果を出力し、
前記ソフトウェアについての参照モデルを受け取り、前記モデル入力データと、前記参照モデルとに基づいて、前記実行結果の許容出力値範囲を含むモデル許容出力値範囲を生成し、
前記実行結果と前記モデル許容出力値範囲とに基づいて、差異情報を生成し、
評価基準を受け取り、前記差異情報と前記評価基準に基づいて、前記ソフトウェアの動作の判定をすることを特徴とするソフトウェアテスト方法。
【請求項１０】
請求項９に記載のソフトウェアテスト方法において、第１の参照モデルを受け取り、第１のモデル入力データと、前記第１の参照モデルとに基づいて、第１のモデル許容出力値範囲を生成し、
前記実行結果と前記第１のモデル許容出力値範囲とに基づいて、第１の差異情報を生成し、
第１の評価基準を受け取り、前記第１の差異情報と前記第１の評価基準とに基づいて、第１の判定をし、
第２の参照モデルを受け取り、前記第１のモデル入力データと、前記第２の参照モデルとに基づいて、第２のモデル許容出力値範囲を生成し、
前記実行結果と前記第２のモデル許容出力値範囲とに基づいて、第２の差異情報を生成し、
第２の評価基準を受け取り、前記第２の差異情報と前記第２の評価基準とに基づいて、第２の判定をすることを特徴とするソフトウェアテスト方法。
【請求項１１】
請求項９に記載のソフトウェアテスト方法において、第１の参照モデルと前記モデル入力データに基づいて、第１のモデル許容出力値範囲を生成し、
前記実行結果と前記第１のモデル許容出力値範囲とに基づいて、複数の前記テスト入力データに対応した第１の差異情報からなる差異情報系列を生成し、
前記差異情報系列に基づいて、前記テスト入力データに対応した許容出力値範囲を算出し、前記許容出力値範囲を含んだ第２の参照モデルを導出し、
前記第２の参照モデルと、前記モデル入力データに基づいて第２のモデル許容出力値範囲を生成し、
前記実行結果と前記第２のモデル許容出力値範囲とに基づいて、第２の差異情報を生成し、前記評価基準を受け取り、前記第２の差異情報と前記評価基準とに基づいて、前記ソフトウェアの動作の判定をすることを特徴とするソフトウェアテスト方法。
【請求項１２】
請求項９に記載のソフトウェアテスト方法において、前記実行結果が前記許容出力値範囲の範囲外の場合には、前記テスト入力データの追加データを生成することを特徴とするソフトウェアテスト方法。
【請求項１３】
請求項９に記載のソフトウェアテスト方法において、テスト対象である前記ソフトウェアは、入力データに対する出力データに予測不能性があり出力データをソフトウェア実行前に決定できないソフトウェアであることを特徴とするソフトウェアテスト方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアテスト装置および方法に関わり、特に、入力データ値に対する出力データ値に予測不能性があるソフトウェアをテストするソフトウェアテスト装置および方法に関する。
【背景技術】
【０００２】
情報処理装置の性能向上により、計算機システムは実世界と密接に接続して動作することが求められるようになった。処理対象には、例えば次の３項目が含まれる。（１）多数のセンサを使った実世界からのデータ収集、（２）多数のアクチュエータを介した実世界への作用、（３）膨大な量のデータを対象としたデータマイニング。このようなシステムでは、複数のサブシステムが連携することで、複雑に関連しあった大量のデータを処理する。実世界と密接に接続して動作するソフトウェアを設計する場合、複雑に関連しかつ大量のデータを処理するアルゴリズムを、従来のように設計者が人手で構成するのは困難である。この問題を解決するため、機械学習を使って生成した判定アルゴリズム（人工知能）を利用するソフトウェアも出現している。一般に、機械学習における「教師あり学習」では、入力値に対する出力値を定めた学習データセットを訓練データセットとテスティングデータセットに分け、前者を使って学習した結果の精度を後者により評価する。
【０００３】
特許文献１に記載のシステムは、機械学習を使って判定アルゴリズムを生成する際の効率的な学習方法と、学習によって構成されたアルゴリズムのテスト方法を提供する。このシステムおよび方法では、学習データセットを訓練データセットおよびテスティングデータセットに分割し、訓練データセットを用いて判定アルゴリズム（例えば人工ニューラルネットワーク）を生成するとともに、テスティングデータセットを用いて適合スコアを評価する。この後、これらデータセットのデータに遺伝的アルゴリズムを適用してデータセットを組み替え，最適の適合スコアになる訓練データセットとテスティングデータセットを共通の学習データセットから生成する。これにより、学習データセットを最適に分割する方法を与え、高精度の学習を効率良く行うことを可能にする。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００６−５１８０６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
背景技術で述べたように、複数のサブシステムが連携することで、複雑に関連しあった大量のデータを処理するシステムを構成するソフトウェアについては、その全体の動作を把握する設計者が存在せず、ソフトウェアへの入力値に対する出力値が明確には予測できない。このようなソフトウェアは、予測不能性を持つソフトウェアである。一般に、ソフトウェアのテストは、入力値に対して設計上想定された出力値が得られることを検証する行為であり、ソフトウェアが設計通りに動作すること、すなわちソフトウェアの信頼性を、テストを通じて確認することができる。しかし、予測不能性を持つソフトウェアでは入力値に対する出力値を設計時点で決定できず、ソフトウェアが、期待通りの動作をすることを確認できるだけの十分なテストを行なうことができない。
【０００６】
特許文献１の技術は、機械学習により生成した判定アルゴリズムを、予め与えられたデータセットから選択したテスティングデータセットにより評価する。このため、判定アルゴリズムを利用するソフトウェアのテストで利用できる入力値と出力値も、与えられたデータセットの範囲内に限られる。これは、このようなソフトウェアに想定される入力値の一部をカバーするに過ぎず、ソフトウェアの信頼性を確保するためのテストとしては不十分である。一方、機械学習の結果は学習に依存するため入力値に対する出力値を予測することが難しく、与えられたデータセットに含まれない入力値についてのテストは先行技術では扱えない。機械学習により生成した判定アルゴリズムを利用するソフトウェアに代表される、入力値に対する出力値が設計時に決定できない予測不能性を有するソフトウェアの信頼性を確保するためには、出力値が予測不能な入力値を含む膨大な数のテストデータに基づくテストを行う必要がある。
【０００７】
本発明の目的は、予測不能性を有するソフトウェアが、期待通りの動作をしているかを判定するソフトウェアテスト装置および方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の好ましい一例は、コンピュータにより、テスト対象であるソフトウェアへソフトウェア入力データを与え、ソフトウェアからの出力データに基づいてソフトウェアの動作の判定をするソフトウェアテスト装置であって、テスト入力データを受け取り、テスト入力データを、ソフトウェアに与えるソフトウェア入力データとモデル入力データに変換するデータ変換部と、ソフトウェア入力データを受け取り、ソフトウェア入力データに基づいてテスト対象のソフトウェアを実行し、実行結果を出力するソフトウェア実行部と、ソフトウェアについての参照モデルを受け取り、モデル入力データと、参照モデルとに基づいて、ソフトウェアを実行した実行結果の許容出力値範囲を含むモデル許容出力値範囲を生成するモデル実行部と、ソフトウェア実行部が出力した実行結果とモデル実行部が生成したモデル許容出力値範囲とに基づいて、差異情報を生成する差異解析部と、評価基準を受け取り、差異情報と評価基準に基づいて、ソフトウェアの動作の判定をする判定部とを有するソフトウェアテスト装置である。
【発明の効果】
【０００９】
本発明によれば、予測不能性を有するソフトウェアが、期待通りの動作をしているかを判定できるソフトウェアテスト装置および方法を得ることができる。
【図面の簡単な説明】
【００１０】
【図１】実施例に係るソフトウェアテスト装置の構成を示す図である。
【図２】ソフトウェアテスト装置におけるソフトウェアテスト方法を示すフロー図である。
【図３】参照モデルの記法の一例を示す図である。
【図４】評価基準の記法の一例を示す図である。
【図５】モデル許容出力値範囲の構造の一例を示す図である。
【図６】差異情報の構造の一例を示す図である。
【図７】データ変換部が行う手続き１の手順を示すフロー図である。
【図８】ソフトウェア実行部が行う手続き２の手順を示すフロー図である。
【図９】モデル実行部が行う手続き３の手順を示すフロー図である。
【図１０】手続き３から呼び出される手続き３Ａの手順を示すフロー図である。
【図１１】手続き３Ａから呼び出される手続き３Ｂの手順を示すフロー図である。
【図１２】差異解析部が行う手続き４の手順を示すフロー図である。
【図１３】一致性判定部が行う手続き５の手順を示すフロー図である。
【図１４】手続き５から呼び出される手続き５Ａの手順を示すフロー図である。
【図１５】手続き５から呼び出される手続き５Ｂの手順を示すフロー図である。
【図１６】実施例１における入出力データの例を示す図である。
【図１７】実施例１における第１の参照モデルと第１の評価基準の記述例を示す図である。
【図１８】実施例２における参照モデルの記述例を示す図である。
【図１９】実施例２における評価基準の記述例を示す図である。
【図２０】実施例３における入出力データの例を示す図である。
【図２１】実施例３における第２の参照モデルと第２の評価基準の例を示す図である。
【図２２】実施例５における入出力データの例を示す図である。
【図２３】実施例５における第３の参照モデルと第３の評価基準の例を示す図である。
【図２４】実施例６における入出力データの例を示す図である。
【発明を実施するための形態】
【００１１】
以下に、本発明の実施例を、図面を用いて詳細に説明する。
【実施例１】
【００１２】
図１は、ソフトウェアテスト装置１の構成を示す図であり、テスト対象ソフトウェア１０１、参照モデル１０３、評価基準１０４を入力し、テスト入力データ１０２についてテストを行い、判定結果１１５を出力する。一般に、一つのテスト対象ソフトウェア１０１に対してテスト入力データ１０２は複数個あり、それらについてテストした結果を評価基準１０４に基づいて評価し、判定結果１１５を生成する。データ変換部１０５は、テスト入力データ１０２から、テスト対象ソフトウェア１０１の入力データとなるソフトウェア入力データ１０６と、参照モデルの入力データとなるモデル入力データ１０８を抽出する。
【００１３】
ソフトウェア実行部１０７は、ソフトウェア入力データ１０６のもとでテスト対象ソフトウェア１０１を実行し、ソフトウェア出力データ１１０を生成する。モデル実行部１０９も、期待されるソフトウェア出力データの範囲をモデル入力データ１０８から算出し、モデル許容出力値範囲１１１を生成する。差異解析部１１２は、ソフトウェア出力データ１１０が、モデル許容出力値範囲１１１を満たすかあるいは逸脱するかを解析し、解析結果を差異情報蓄積部１１３に格納する。一致性判定部１１４は、入力された評価基準１０４にしたがって差異情報蓄積部１１３の差異情報を評価し、判定結果１１５を出力する。ソフトウェアテスト装置１の各機能部は、ハードウェア資源であるコンピュータのＣＰＵ（プロセッサー）がソフトウェアを実行することで実現される。
【００１４】
本実施例では、利用者は、テスト対象ソフトウェア１０１とテスト入力データ１０２に加えて参照モデル１０３と評価基準１０４を用意し、テスト対象ソフトウェア１０１の出力値が評価基準１０４の下で参照モデルが許容する範囲内にあることを、ソフトウェアテスト装置を用いて検証する。
【００１５】
図１において、同一のテスト対象ソフトウェア１０１とテスト入力データ１０２について複数の観点からのテストを行う場合には、モデル実行部１０９、差異解析部１１２、一致性判定部１１４を複数用意し、同じソフトウェア出力データ１１０に対して複数の参照モデル１０３と評価基準１０４を用いたテストを同時に行っても良い。また、モデル許容出力値範囲１１１がソフトウェア出力の履歴に依存する場合には、ソフトウェア出力データ１１０をデータ変換部１０５に戻し、モデル入力データ１０８として利用しても良い。
【００１６】
図２は、ソフトウェアテスト装置１におけるソフトウェアテスト方法を示すフロー図である。ソフトウェアテスト装置１はテスト入力データ１０２を読み込み（２０２）、入力データがない（２０２）場合には、手続き５に示す手順で一致性判定を行い（２０９）、終了する（２１０）。
入力データがある場合、テスト入力データ１０２をテスト対象ソフトウェア１０１の入力値に変換し（２０４）、手続き２に示す手順でテスト対象ソフトウェア１０１の出力データを得る（２０５）。同様に、テスト入力データ１０２を参照モデル１０３の入力値に変換し（２０６）、手続き３に示す手順で参照モデル１０３のモデル許容出力値範囲１１１を得る（２０７）。
次に、ソフトウェア出力データ１１０とモデル許容出力値範囲１１１の間の差異解析を手続き４の手順で行い（２０８）、ステップ２０２に戻って次のテスト入力データ１０２を読み込む。
【００１７】
図３は、参照モデル１０３の記法の一例であり、利用者はこの記法に基づいて記述した参照モデル１０３を入力する。参照モデル１０３の例を、図１７に示す。実施例では、計算機の動作を抽象化した形式モデルである抽象機械によって、参照モデル１０３を表現する。本実施例では、抽象機械の一種である有限状態機械を用いる。有限状態機械は、抽象化した計算機の状態と計算機への入力および状態が遷移するための条件ならびに計算機からの出力によって構成される。図３の記法は、実施例を具体的に記述するために用いるものであり、本実施例が利用する抽象機械の記法を限定するものではない。図３では記法を拡張ＢＮＦによって表した。ここで、「{}」は{}内の要素の０回以上の繰り返しを、「[]」は[]内の要素がなくても良いことを、「|」は「または」を、「””」はキーワードを表す。
【００１８】
参照モデル１０３は、一つ以上の遷移の並び３０１であり、遷移は遷移前の状態名を左辺に、一つ以上の遷移先を右辺に持つ等式３０２である。ここで、遷移先は条件付遷移先か無条件遷移先のいずれか３０３である。条件付遷移先は、入力、遷移条件、許容出力値範囲と状態名から構成され３０４、入力が遷移条件を満たす時、ソフトウェア出力値に期待される出力範囲を出力し、状態名の状態へ遷移することを表す。ここで、遷移条件と許容出力値範囲はなくても構わない。無条件遷移は、状態名のみから構成され３０５、無条件で状態名の状態へ遷移する。入力は、一つ以上の入力変数の並び３０６であり、入力変数は遷移条件で参照される。許容出力値範囲は、一つ以上の出力値の並び３０７、状態名は、任意の識別子または開始状態である３０８。ここで、開始状態は、モデルの動作の開始点を表す特別な識別子であり、本実施例では「S0」と表記する。参照モデル１０３には、許容出力値範囲の代わりに、許容しない出力値範囲を記述してもよい。
【００１９】
図４は、評価基準１０４の記法の一例であり、利用者はこの記法に基づいて記述した評価基準１０４を入力する。評価基準１０４の例を、図１７に示す。図４の記法は本実施例において実施例を具体的に記述するために用いるものであり、本実施例が利用する評価基準１０４の記法を限定するものではない。図３と同様、図４でも記法を拡張ＢＮＦによって表した。
評価基準１０４は、一つ以上の重み指定の並び（４０１）である。重み指定は、遷移元状態名と遷移先状態名ならびに誤り重みから構成され（４０２）、参照モデル１０３上で遷移元状態名の状態から遷移先状態名の状態への遷移が起こる時、それに対応するテスト対象ソフトウェア１０１の出力との差異情報に付与する誤り重みを指定する。
【００２０】
図５は、モデル許容出力値範囲１１１の構造の一例を示す。この情報は、モデル実行部１０９が生成し、差異解析部１１２が利用する。モデル許容出力値範囲１１１は、テスト入力データ１０２における入力データを識別する入力番号と、遷移元状態名、遷移先状態名、許容出力値範囲、次状態名の組の並びである（５０１）。参照モデル１０３の遷移元状態名の状態に対して入力番号の入力データが遷移条件を満たす条件付遷移があるとき、遷移先状態名と出力される許容出力範囲を組にする。次状態名は遷移後に次の入力データを待つ状態の状態名であり、遷移先状態に続く無条件遷移がないときには遷移先状態名と一致する。無条件遷移があるときには、条件付遷移に到達するまで無条件遷移を繰り返し、最後の無条件遷移の状態名を次状態名とする。なお、図５の構造は本実施例において処理手続きを具体的に記述するために参照モデル１０３と対応付けて用いるものであり、本実施例のモデル許容出力値範囲１１１の構造を限定するものではない。
【００２１】
図６は、差異情報蓄積部１１３に格納される差異情報の構造の一例を示す。差異情報は差異解析部１１２が生成し、一致性判定部１１４が参照する。差異情報は、モデル許容出力値範囲１１１と同様、入力番号と、遷移元状態名、遷移先状態名、次状態名、差異評価値、ソフトウェア出力データ１１０の組の並びである（６０１）。モデル許容出力値範囲１１１の許容出力値範囲とテスト対象ソフトウェア１０１の出力値の差異を差異情報解析部が評価して、差異情報を生成する。遷移元状態名、遷移先状態名、次状態名は、当該モデル許容出力値範囲の遷移元状態名、遷移先状態名、次状態名と同一である。図５と同様、図６の構造は本実施例において処理手続きを具体的に記述するためにモデル許容出力値範囲１１１の構造ならびに評価基準１０４と対応付けて用いるものであり、本実施例の差異情報の構造を限定するものではない。
【００２２】
図７は、データ変換部１０５が行う処理のフローである。データ変換部１０５は、利用者から与えられたテスト入力データ１０２を読み込み（７０２）、処理すべきテスト入力データ１０２がなければ（７０３）、処理を終了する（７０８）。処理すべきテスト入力データ１０２が存在する場合、それをテスト対象ソフトウェア１０１が処理できる入力値に変換し（７０４）、変換した入力値をソフトウェア入力データ１０６としてソフトウェア実行部１０７に送る（７０５）。次に同じテスト入力データ１０２を参照モデル１０３が処理できる入力値に変換し（７０６）、変換した入力値をモデル入力データ１０８としてモデル実行部１０９に送る（７０７）。その後、ステップ７０２に戻って次のテスト入力データ１０２を読み込む。
【００２３】
図８は、手続き２の処理フローであり、テスト対象ソフトウェア１０１に入力値を与え、出力値を得る。この処理は、ソフトウェア実行部１０７が行う。ソフトウェア実行部１０７は、利用者から与えられたテスト対象ソフトウェア１０１を読み込む（８０２）。次にデータ変換部１０５からソフトウェア入力データ１０６を受け取り（８０３）、もし入力値がなければ（８０４）処理を終了する（８０７）。入力値があれば、入力値についてテスト対象ソフトウェア１０１を実行し出力値を得る（８０５）。得られた出力値をソフトウェア出力データ１１０として差異解析部１１２に送り（８０６）、ステップ８０３に戻って次のソフトウェア入力データ１０６を受け取る。
【００２４】
図９は、手続き３の処理フローであり、与えられた入力値に対して参照モデル１０３の状態を遷移させ、参照モデル１０３に記載されたテスト対象ソフトウェア１０１の出力値の要件であるモデル許容出力値範囲１１１を得る。この処理は、モデル実行部１０９が行う。この処理フローでは、処理に必要な情報を一時的に格納する変数として、現状態セットと次状態セットを使う。モデル実行部１０９は、利用者から与えられた参照モデル１０３を読み込み（９０２）、初期値として現状態セットに開始状態を入れ（９０３）、次状態セットを空にする（９０４）。データ変換部１０５からモデル入力データ１０８を受け取り（９０５）、もし入力値がなければ（９０６）処理を終了する（９１３）。入力値があれば、現状態セットの中の状態名を一つ選んで現状態セットから除き（９０７）、選んだ状態名を引数にして手続き３Ａを行う（９０８）。現状態セットが空でなければ（９０９）ステップ９０７に戻り、残りの状態名について処理を繰り返す。現状態セットが空になれば、次状態セットに格納されている状態名を全て現状態セットに入れ（９１０）、手続き３Ａが生成したモデル許容出力値範囲１１１を出力する（９１１）。現状態セットが空でなければ（９１２）ステップ９０４に戻り、処理を続行する。現状態セットが空であれば、処理を終了する(９１３）。
【００２５】
図１０は、図９の手続き３から呼び出される手続き３Ａの処理フローである。手続き３Ａは手続き３から遷移元となる状態名を引数として受け取り、モデル許容出力値範囲１１１を生成する。この過程で、出力値セットを一時変数として使う。まず引数の状態名を左辺に持つ遷移を参照モデル１０３から選び（１００２）、右辺の条件付遷移先を一つ選ぶ（１００３）。条件付遷移先が参照モデル１０３に存在しないならば（１００４）、手続き３に戻る。そうでない場合、手続き３で受け取った入力値を条件付遷移先に記載された入力変数に入れ、遷移条件を評価する（１００５）。遷移条件が満たされないとき（１００６）は、ステップ１００３に戻って次の条件付遷移先を選ぶ。遷移条件が満たされるときは、条件付遷移先に記載された許容出力値範囲と遷移の状態名、遷移先状態名を組にして、許容出力値情報を生成する（１００７）。ここで、参照モデル１０３に、許容しない出力値範囲が記述してある場合には、許容しない出力値範囲であることを示すマークを付ける。許容出力値情報を出力値セットに格納し（１００８）、遷移先状態名を次状態名として（１００９）、次状態名を引数に手続き３Ｂを行う（１０１０）。手続き３Ｂから戻った後に、出力値セットの許容出力値情報をモデル許容出力値範囲１１１に加え（１０１１）、ステップ１００３に戻って残りの条件付遷移先について処理を行う（１００３）。
【００２６】
図１１は、図１０の手続き３Ａから呼び出される手続き３Ｂの処理フローである。手続き３Ｂは次状態名を引数として受け取り、無条件遷移先をたどって、次の入力データを待つ状態の状態名で次状態名を置き換える。まず引数の状態名を左辺に持つ遷移を参照モデル１０３から選び、無条件遷移先を選ぶ（１１０２）。無条件遷移先が存在しないならば（１１０３）、次状態名を次状態セットに加え（１１０７）、出力値セットの許容出力値範囲に次状態名を加えて（１１０８）、モデル許容出力値範囲１１１の組を完成し、呼び出し元に戻る。選んだ遷移に無条件遷移先が存在するならば、遷移の全ての無条件遷移先についてステップ１１０５から１１０６を行う（１１０４）。次状態名を無条件遷移先の遷移先状態名で置き換え（１１０５）、置き換えた次状態を引数として手続き３Ｂの処理を再帰的に行う（１１０６）。処理が終われば、呼び出し元に戻る（１１０９）。
【００２７】
図１２は、手続き４の処理フローであり、ソフトウェア実行部１０７から受け取ったソフトウェア出力データ１１０とモデル実行部１０９から受け取ったモデル許容出力値範囲１１１を照合し、差異情報を生成して差異情報蓄積部１１３に格納する。この処理は、差異解析部１１２が行う。まずソフトウェア実行部１０７からソフトウェア出力データ１１０を受け取り(１２０２）、ソフトウェア出力データ１１０が、無いならば（１２０３）、処理を終了する（１２１１）。ソフトウェア出力データ１１０が、あるならば、モデル実行部１０９からモデル許容出力値範囲１１１を受け取り（１２０４）、受け取ったモデル許容出力値範囲１１１全てについてステップ１２０６以降を行う（１２０５）。ソフトウェア出力データ１１０が、モデル許容出力値範囲１１１の許容出力値範囲の範囲内にあるならば（１２０６）差異評価値を０とし（１２０７）、モデル許容出力値範囲１１１外ならば差異評価値を１とする（１２０８）。ただし、許容出力値範囲に許容しない出力値範囲であることを示すマークが付いている場合には、範囲内にあるときの差異評価値を１、範囲外ならば差異評価値を０とする。モデル許容出力値範囲１１１の遷移元状態名、遷移先状態名、次状態名、差異評価値、ソフトウェア出力データ１１０を組にして差異情報を生成し（１２０９）、差異情報蓄積部１１３に格納する（１２１０）。その後ステップ１２０２に戻り、次のソフトウェア出力データ１１０を受け取る。なお、本実施例では差異評価値を、ソフトウェア出力データ１１０が、モデル許容出力値範囲１１１内にあるならば０、そうでないならば１としているが、モデル許容出力値範囲１１１との距離に基づく差異評価値を使っても良い。
【００２８】
図１３は、手続き５の処理フローであり、差異情報蓄積部１１３に格納された差異情報からテスト入力データ１０２を全てカバーする差異情報系列を探し出し、評価基準１０４のもとに評価して判定結果１１５を出力する。この処理は一致性判定部１１４が行う。この過程で、一時変数として差異情報セットを使う。一致性判定部１１４は、利用者から与えられた評価基準１０４を読み込み（１３０２）、次に差異情報蓄積部１１３から差異情報を受け取る（１３０３）。差異状態セットを空にし（１３０４）、最初の入力番号を持つ差異情報全てについてステップ１３０６以下を行う（１３０５）。まず入力番号と差異情報を引数に手続き５Ａを行い（１３０６）、差異情報セットの全ての差異情報系列について手続き５Ｂを行う（１３０７）。ここで、差異情報セットに差異情報系列がない場合には手続き５Ｂ以下は行わず、ステップ１３０５の次の差異情報の処理へと進む。手続き５Ｂが返す判定結果１１５を受け取り（１３０８）、判定結果１１５を出力する（１３０９）。ステップ１３０５で最初の入力番号を持つ差異情報が存在しない場合、あるいは全ての差異情報についての処理が終了した場合には、処理を終了する（１３１０）。
【００２９】
図１４は、図１３の手続き５から呼び出される手続き５Ａの処理フローである。手続き５Ａは、テスト入力データ１０２を全てカバーする差異情報系列を探し出し、差異情報セットに格納する。手続き５Ａは入力番号と差異情報を引数とし、入力番号が最後のテスト入力データ１０２の入力番号であるならば（１４０２）、最初の入力番号から最後の入力までリンクされた差異情報の系列を構成して差異情報セットに格納し（１４０８）、呼び出し元に戻る（１４０９）。引数の入力番号が最後の入力番号でないとき、引数の差異情報の次状態名が遷移元名に一致する次の入力番号の差異情報を得る（１４０３）。そのような差異情報が存在しないとき（１４０４）、何もしないで呼び出し元に戻る（１４０９）。
【００３０】
差異情報が存在するならば、そのような差異情報全てについてステップ１４０６以下を行う（１４０５）。引数の差異情報を前差異情報、ステップ１４０３で得られた差異情報を後差異情報として両者をリンクで結び（１４０６）、次の入力番号と後差異情報を引数として手続き５Ａを再帰的に行う（１４０７）。その後、呼び出し元に戻る（１４０９）。
【００３１】
図１５は、図１３の手続き５から呼び出される手続き５Ｂの処理フローである。手続き５Ｂは、手続き５Ａで生成された差異情報系列に評価基準１０４を適用して評価値を生成する。手続き５Ｂでは一時変数として処理入力番号を使い、処理中の入力番号を管理する。まず、処理入力番号の初期値を最初の入力番号とし（１５０２）、評価の初期値を０とする（１５０３）。引数として与えられた差異情報系列から処理入力番号と一致する差異情報を選ぶ（１５０４）。選んだ差異情報の遷移元状態名と遷移先状態名を評価基準１０４と照合し誤り重みを得て（１５０５）、差異情報の差異評価値に誤り重みをかけて評価に足し合わせる（１５０６）。処理入力番号が最後の入力番号ならば（１５０７）、評価を入力データ数で割った値を出力して（１５０９）呼び出し元に戻る（１５１０）。処理入力番号が最後の入力番号でないならば、次の入力番号を処理入力番号として（１５０８）ステップ１５０４に戻り、処理を続ける。
【００３２】
入力された画像を認識するソフトウェアをテスト対象ソフトウェア１０１とする実施例を示し、本実施例の概要を述べる。実施例の目的は、任意に与えたテスト入力データ１０２について、テスト対象ソフトウェア１０１の出力データが要件を満たすことを、評価基準１０４の下で評価することである。本実施例のテストは、テスト対象ソフトウェア１０１が、参照モデル１０３を満たすことの検証なので、参照モデル１０３は、テスト対象ソフトウェア１０１の信頼性の根拠を与える。
【００３３】
以下、実施例１の目的を達成する手順を説明する。テスト対象ソフトウェア１０１は、入力された対象物の画像から、対象物の状態を次の５つの区分のいずれかに判定するものとする。
Ｌ１：衝突危険あり、Ｌ２：衝突危険なし、Ｌ３：接近可能性あり、Ｌ４：接近可能性なし、Ｌ５：不明
テスト対象ソフトウェア１０１は、機械学習等により生成した判定アルゴリズムを有しており、対象物のどのような特徴をどのように評価して判定するのかを論理的に解析することはできないとする。すなわち、入力である対象物の画像からは出力である判定結果を予測することができない、予測不能性を持つソフトウェアであることを前提とする。
【００３４】
テスト対象ソフトウェア１０１に対する要件は、画像中の対象物が大きいときには衝突危険の有無が判定されていること、画像中の対象物が小さい時には「不明」を含めてどのような判定でもかまわないこと、両者の中間である時は「不明」以外の判定であること、とする。テスト対象ソフトウェア１０１が、予測不能性を持つとき、その出力値が部分的に要件を満たさなくても、短絡的にテスト不合格とすることが妥当であるとは限らない。例えば画像を認識する場合、不適切な特徴量に影響された誤判定を完全になくすことは、現実的には困難である。一方、要件と照らし合わせて誤判定の影響が大きい場合には、テスト不合格とするのが妥当である。ここでは、画像中の対象物が大きい時には誤判定の評価を厳しく、小さい時には評価を緩くするものとする。
【００３５】
本実施例のソフトウェアテスト装置は、テスト対象ソフトウェア１０１、参照モデル１０３および評価基準１０４、テスト入力データ１０２を入力し、判定結果１１５を出力する。要件は、具体的には画面の縦方向の長さhに対して画面中の対象物の縦方向の長さoが、
・h/5より小さいとき、判定値はＬ１，Ｌ２，Ｌ３，Ｌ４，Ｌ５のいずれでも良い、
・h/5以上でh/2より小さいとき、判定値はＬ１，Ｌ２，Ｌ３，Ｌ４のいずれかであること、
・h/2以上であるとき、判定値はＬ１，Ｌ２であること、とする。図１７の１７０１は、この要件を図３に掲載の記法を使って記述した、第１の参照モデルの例である。例えば、第１の参照モデル１７０１の第１行目は、現状態名はＳ０である。モデル入力データ１６０５は、対象物の縦方向の長さoと、画面の縦方向の長さhである。遷移条件は、oがh/5より小さいことである。モデル入力データ１６０５が遷移条件を満たすときソフトウェア出力データ１６０４に期待される出力範囲である許容出力値範囲１６０６は、Ｌ１，Ｌ２，Ｌ３，Ｌ４，Ｌ５である。そして、モデル入力データ１６０５が遷移条件を満たすとき次状態名Ｓ１の状態に遷移することを表す。
【００３６】
評価基準１０４については、画像中の対象物が大きいとき判定値が要件を満たさないならば誤り重みを重く、画像中の対象物が小さい時に判定値が要件を満たさないならば誤り重みを軽くして、総合的にテスト合否を判定するものとする。このような合否判定のための重み付けを、図４に掲載の記法を使って表現する。図１７の１７０２は、第１の評価基準の例である。テスト入力データ１０２の例を、図１６に示す。この例では、入力番号１６０１が１から５の５つの画像を、テスト入力データ１６０２として入力するものとする。
【００３７】
データ変換部１０５は、図７に掲載の手続き１の手順で、テスト入力データ１０２をテスト対象ソフトウェア１０１の入力値と参照モデル１０３の入力値に変換する。本実施例のテスト対象ソフトウェア１０１は、テスト入力データ１０２から切り出した対象物の画像を入力値として受け取るものとする。一方、参照モデル１０３は、前述のようにテスト入力データ１０２の画面の高さhと対象物の高さoを入力値として受け取る。データ変換部１０５が出力するソフトウェア入力データ１０６を１６０３に、モデル入力データ１０８を１６０５に示す。
【００３８】
ソフトウェア実行部１０７は、図８に掲載の手続き２の手順にしたがい、データ変換部１０５から受け取ったソフトウェア入力データ１０６についてテスト対象ソフトウェア１０１を実行し、出力値をソフトウェア出力データ１１０として差異解析部１１２に送る。本実施例では、テスト対象ソフトウェア１０１は、ソフトウェア入力データ１６０３を入力した場合にソフトウェア出力データ１６０４を出力するものと仮定し、出力値をテストする。この場合、ソフトウェア実行部１０７が出力するソフトウェア出力データ１６０４は、次のようになる。
入力番号1の入力値に対しL5、
入力番号2の入力値に対しL1、
入力番号3の入力値に対しL5、
入力番号4の入力値に対しL3、
入力番号5の入力値に対しL2
【００３９】
モデル実行部１０９は、図９に掲載の手続き３の手順にしたがい、データ変換部１０５から受け取ったモデル入力データ１０８についてモデル許容出力値範囲１１１を生成し、差異解析部１１２に送る。モデル実行部１０９が受け取る入力値を１６０５に、図１７に掲載の参照モデル１０３のもとで計算した許容出力値範囲を１６０６に示す。モデル実行部１０９が出力するモデル許容出力値範囲１１１は、以下である。
入力番号1 (S0, S1, {L1,L2,L3,L4,L5}, S0）
入力番号2 (S0, S3, {L1,L2}, S0）
入力番号3 (S0, S2, {L1,L2,L3,L4}, S0）
入力番号4 (S0, S2, {L1,L2,L3,L4}, S0）
入力番号5 (S0, S3, {L1,L2}, S0）
【００４０】
差異解析部１１２は、図１２に掲載の手続き４の手順にしたがい、ソフトウェア実行部１０７が出力するソフトウェア出力データ１１０と、モデル実行部１０９が出力するモデル許容出力値範囲１１１を照合して差異情報を生成する。差異情報蓄積部１１３に格納される差異情報は、以下である。
入力番号1 (S0, S1, S0, 0, L5）
入力番号2 (S0, S3, S0, 0, L1）
入力番号3 (S0, S2, S0, 1, L5）
入力番号4 (S0, S2, S0, 0, L3）
入力番号5 (S0, S3, S0, 0, L2）
この例では、入力番号3の入力値について、テスト対象ソフトウェア１０１の出力値が参照モデル１０３の許容出力値範囲を満たしていない。
【００４１】
一致性判定部１１４は、図１３に掲載の手続き５の手順にしたがい、差異情報蓄積部１１３に格納された差異情報から全てのテスト入力データ１０２をカバーする差異情報系列を探し出し、評価基準１０４のもとに評価して判定結果１１５を出力する。この例では、差異情報蓄積部１１３に格納されている差異情報系列は一つのみで、それは入力番号1から5をカバーしているので、この差異情報系列について１７０２の第１の評価基準による重み付けを行う。差異情報と適用される評価基準１０４を、下記に示す。
入力番号1 (S0, S1, S0, 0, L5）についてS0 -> S1 / 0.0を適用、
入力番号2 (S0, S3, S0, 0, L1）についてS0 -> S3 / 0.7を適用、
入力番号3 (S0, S2, S0, 1, L5）についてS0 -> S2 / 0.3を適用、
入力番号4 (S0, S2, S0, 0, L3）についてS0 -> S2 / 0.3を適用、
入力番号5 (S0, S3, S0, 0, L2）についてS0 -> S3 / 0.7を適用
入力番号３については、参照モデル１０３の許容出力値範囲を満たしていないので、図１５の１５０６のステップにより、差異評価値1に誤り重み0.3をかけて評価は0.3となり、１５０９のステップで、この評価を、入力データ数である5で割った値である0.06が、判定結果１１５となる。この例では、テスト対象ソフトウェア１０１の出力値が、全てモデル許容出力値範囲１１１内にあるとき、判定結果１１５が0になる。本実施例では、0でない判定結果１１５が得られた場合にテスト合格とするか不合格とするかはソフトウェアテスト装置の利用者が判断するものとし、ソフトウェア装置は、上記の判定結果１１５を出力する。
【００４２】
なお、ここで例示したテスト入力データ１０２と、それに対するテスト対象ソフトウェア１０１の出力データは、本実施例の手順を説明するために仮定したものである。上記の手順によれば、任意のテスト入力データ１０２に対し、テスト対象ソフトウェア１０１の実行前には出力データが不明である場合についても、テストを行うことができる。
【００４３】
以上の過程により、実施例１は、任意に与えたテスト入力データ１０２について、テスト対象ソフトウェア１０１の出力データが、要件を満たすことを、評価基準１０４の下で評価することを可能にし、テスト対象ソフトウェア１０１の信頼性の検証に寄与する。参照モデル１０３は、テスト対象ソフトウェア１０１の信頼性の根拠を与える。
【実施例２】
【００４４】
実施例１は、独立した画像をテスト入力データ１０２とするが、実施例２は、時系列にしたがって順序付けられた画像について、参照モデル１０３を記述してテストをする例である。このような参照モデル１０３の例を、図１８に示す。参照モデル１０３を有限状態機械で表記することから、この例では順序付けを状態間の遷移を使って表現した。状態S0は開始状態、S1は対象物が小さく現れる状態、S2はS1の後に対象物が大きく現れる状態、S3はS2の後に対象物がさらに大きく現れる状態を意味する。
【００４５】
１８０１は、開始状態の後に最初に対象物が小さく現れることを表し、その後に対象物はさらに大きくなる１８０２か、大きさが変わらない１８０３か、のいずれかである。１８０２で対象物が大きくなった場合、その後に対象物はさらに大きくなる１８０４か、大きさが変わらない１８０５か、小さくなる１８０６かのいずれかである。対象物がさらに大きくなった場合１８０４、その後に対象物の大きさが変わらない１８０７か、小さくなる１８０８のいずれかである。
【００４６】
図１９は、このような順序付けられた入力データに対して、テスト対象ソフトウェア１０１の出力値が、モデル許容出力値範囲１１１を満たさないときの誤り重みを規定した、評価基準１０４の例である。この参照モデル１０３のもとでは、順序付けにしたがわないテスト入力データ１０２は不適切であるとして、実施例２のソフトウェアテスト装置はテストを拒絶する。例えば、S1の対象物が現れた状態からS3の対象物が画面の半分以上に現れる状態への直接の遷移は参照モデル１０３には存在せず、対象物が小さく現れるテスト入力データ１０２の次に対象物が大きく現れるテスト入力データ１０２は不適切と判断する。すなわち、このようなテスト入力データ１０２が与えられた場合、一致性判定部１１４の手続き５においてテスト入力データ１０２を全てカバーする差異情報系列が存在せず、判定結果１１５を出力しない。実施例２によれば、時系列にしたがって順序付けられたテスト用入力データを、テスト対象のソフトウェアに提供する場合において対象ソフトウェアのテストができる効果がある。
【実施例３】
【００４７】
図２０および図２１は、参照モデル１０３と評価基準１０４を複数入力してテスト対象ソフトウェア１０１のテストを並行して行う実施例３を説明する図である。図２０は、実施例３における入出力データの例を示し、テスト入力データ２００１、ソフトウェア出力データ２００２、第１の参照モデル用の第１モデル入力値２００３、第１の参照モデル用の許容出力値範囲a２００４、第２の参照モデル用の第２モデル入力値２００５、第２の参照モデル用の許容出力値範囲b２００６からなる。実施例３では、実施例１の参照モデル１０３と評価基準（以下では、第１の参照モデルと第１の評価基準と呼ぶ）に加えて、図２１に示す第２の参照モデル２１０１と第２の評価基準２１０２を入力する。
【００４８】
第２の参照モデル２１０１は対象物の進行方向の観点から、対象物が横方向を向いていると推定される場合にはソフトウェア出力値がＬ２（衝突危険なし）かＬ４（接近可能性なし）かＬ５（不明）であることを求める。すなわち、画面中の対象物の横方向の長さwに対し縦方向の長さoが、
・w/2より小さいとき、ソフトウェア出力データ１１０はＬ２，Ｌ４，Ｌ５のいずれかであること、
・w/2以上であるとき、ソフトウェア出力データ１１０はＬ１，Ｌ２，Ｌ３，Ｌ４，Ｌ５のいずれかであること、とする。第２の参照モデル２１０１では、Ｔ０が開始状態である。
【００４９】
図２０に示すように、実施例３では、一連のテスト入力データ２００１についてソフトウェア出力データ２００２を得ると同時に、第１と第２の参照モデルに関して並行してモデル実行部１０９から第１の参照モデルの許容出力値範囲２００４と第２の参照モデルの許容出力値範囲２００６を得る。差異解析と一致性判定は、各参照モデル１０３の許容出力値範囲について行い、第１の参照モデルについては実施例１に示したとおり判定結果１１５として、0.06が得られる。
【００５０】
第２の参照モデルについても同様の手順を適用すると、４番目のテスト入力データ２００１に対してソフトウェア出力データ２００２が許容出力値範囲内にないことから、第２の評価基準の重み0.5を適用し、判定結果１１５として、0.1が得られる。テストの合否は、これら２つの異なる観点からの判定結果１１５に基づいて決定する。実施例３によれば、複数の参照モデルと評価基準に基づいた判定結果を得ることができるので、判定結果の信頼性を高めることができる。
【実施例４】
【００５１】
本実施例は、参照モデル１０３を、テスト対象ソフトウェア１０１から導出することで参照モデル１０３の入力を省略する実施例である。図１のソフトウェアテスト装置を用いて、次の二段階でテスト対象ソフトウェア１０１をテストする。
（１）参照モデル導出段階
参照モデル導出のためのテスト入力データ１０２と参照モデル１０３の雛形を用意し、テスト対象ソフトウェア１０１と評価基準１０４のもとで参照モデル１０３を導出する。
（２）テスト対象ソフトウェア１０１のテスト段階
導出された参照モデル１０３を使い、テスト対象ソフトウェア１０１について実施例１に記載のテストを行う。
【００５２】
ここで、参照モデル導出段階では、モデル実行部１０９が行う手続き３の手順を示すフロー図（図９）のステップ９０２で、参照モデル１０３の替わりに参照モデル雛形を読み込む。また、一致性判定部１１４が行う手続き５の手順を示すフロー図（図１３）のステップ１３０９で、判定結果１１５を出力する替わりに、判定結果１１５を最小にする差異情報系列のソフトウェア出力データ１１０から許容出力値範囲３０７を算出して参照モデル１０３を導出する。以下、実施例１で示したテスト対象ソフトウェア１０１から参照モデル１０３を導出する過程を示す。
【００５３】
参照モデル雛形の一例を、下記に示す。
S0 = (o, h) o < h/5 (L1,L2,L3,L4,L5) -> S1
S1 = -> S0 
S0 = (o, h) h/5 <= o < h/2 (L1,L2,L3,L4,L5) -> S2
S2 = -> S0
S0 = (o, h) h/2 <= o (L1,L2,L3,L4,L5) -> S3
S3 = -> S0
この例では、雛形の中の許容出力値範囲をテスト対象ソフトウェア１０１の出力値を使って絞り込む。評価基準１０４は、図１７と同一とする。また、参照モデル１０３の導出のためのテスト入力データ１０２として、図１６の入力番号１から５のデータを利用する。
【００５４】
これらの５個のテスト入力データ１０２に対して参照モデル雛形が出力するモデル許容出力値範囲１１１は、
入力番号１（Ｓ０，Ｓ１，{Ｌ１，Ｌ２，Ｌ３，Ｌ４，Ｌ５}，Ｓ０）
入力番号２（Ｓ０，Ｓ３，{Ｌ１，Ｌ２，Ｌ３，Ｌ４，Ｌ５}，Ｓ０）
入力番号３（Ｓ０，Ｓ２，{Ｌ１，Ｌ２，Ｌ３，Ｌ４，Ｌ５}，Ｓ０）
入力番号４（Ｓ０，Ｓ２，{Ｌ１，Ｌ２，Ｌ３，Ｌ４，Ｌ５}，Ｓ０）
入力番号５（Ｓ０，Ｓ３，{Ｌ１，Ｌ２，Ｌ３，Ｌ４，Ｌ５}，Ｓ０）
である。一方、ソフトウェア出力データ１１０は、図１６に示したとおり入力番号１から５まで順に、Ｌ５，Ｌ１，Ｌ５，Ｌ３，Ｌ２である。
【００５５】
これから、差異情報蓄積部１１３には次の差異情報系列が格納される。
入力番号１（Ｓ０，Ｓ１，Ｓ０，０，Ｌ５）
入力番号２（Ｓ０，Ｓ３，Ｓ０，０，Ｌ１）
入力番号３（Ｓ０，Ｓ２，Ｓ０，０，Ｌ５）
入力番号４（Ｓ０，Ｓ２，Ｓ０，０，Ｌ３）
入力番号５（Ｓ０，Ｓ３，Ｓ０，０，Ｌ２）
この差異情報系列は、判定結果１１５を最小にするので、一致性判定部１１４はソフトウェア出力データ１１０から参照モデル１０３の許容出力値範囲３０７を算出して参照モデル１０３を導出する。これは、遷移元状態名と遷移先状態名を参照モデル雛形と照合し、ソフトウェア出力データ１１０から参照モデルの許容出力値範囲３０７を算出することで行える。
【００５６】
このようにして、下記の参照モデル１０３をテスト対象ソフトウェア１０１から導出できる。
S0 = (o, h) o < h/5 (L5) -> S1
S1 = -> S0 
S0 = (o, h) h/5 <= o < h/2 (L3, L5) -> S2
S2 = -> S0
S0 = (o, h) h/2 <= o (L1, L2) -> S3
S3 = -> S0
【００５７】
テスト対象ソフトウェア１０１のテスト段階では、導出した参照モデルを図１の参照モデル１０３として使い、新たなテスト入力データ１０２についてテスト対象ソフトウェア１０１をテストする。この時、テスト対象ソフトウェア１０１と評価基準１０４は、参照モデル導出段階のものと基本的に同一である。実施例４によれば、雛形の参照モデルに基づいて、テスト用の参照モデルを導出できるため、たとえば、元のソフトウェアをバージョンアップしたソフトウェアをテストする場合に、参照モデル１０３を作成する手間を省力化することができる
【実施例５】
【００５８】
テスト対象ソフトウェア１０１の出力値の一部を、データ変換部１０５を介して参照モデルのモデル入力データ２２０５として利用する実施例５を、図２２、図２３を用いて説明する。図２２は、入力番号２２０１、テスト入力データ２２０２、ソフトウェア出力データ２２０４、モデル入力データ２２０５、許容出力値範囲２２０６からなる入出力データの例を示す。
【００５９】
実施例５は、手書きの数字を識別する例であり、識別対象は西暦1990年から2009年までの４桁の数字である。テスト入力データ２２０２に対するテスト対象ソフトウェア１０１の出力値は、Ｌ０：0，Ｌ１：1，Ｌ２：2，Ｌ３：3，Ｌ４：4，Ｌ５：5，Ｌ６：6，Ｌ７：7，Ｌ８：8，Ｌ９：9のいずれかである。第３の参照モデルを図２３に示す。開始状態はＳ０であり、モデル入力データ２２０５であるcが、与えられると、その値に関わらず許容出力値範囲２２０６は、Ｌ１、Ｌ２を出力し、状態Ｓ１に遷移する（２３０１）。これは、最初の数字は1または2と識別されなければならないことを示す。
【００６０】
状態Ｓ１におけるcがＬ１であれば許容出力値範囲２２０６はＬ９のみであり、状態Ｓ２に遷移する（２３０２）。状態Ｓ２におけるモデル入力データｃがＬ９であれば、許容出力値範囲２２０６はＬ９のみであり、状態Ｓ３に推移する（２３０３）。状態Ｓ３におけるモデル入力データｃがＬ９であれば、許容出力値範囲２２０６はＬ０からＬ９であり、状態Ｓ４に推移する（２３０４）。状態Ｓ４は、無条件に状態Ｓ０に推移する（２３０５）。
【００６１】
一方、状態Ｓ１におけるモデル入力データ２２０５であるcがＬ２であれば、許容出力値範囲２２０６はＬ０のみであり、状態Ｓ５に遷移する（２３０６）。状態Ｓ５におけるモデル入力データｃがＬ０であれば、許容出力値範囲２２０６はＬ０のみであり、状態Ｓ６に推移する（２３０７）。状態Ｓ６におけるモデル入力データｃがＬ０であれば、許容出力値範囲２２０６はＬ０からＬ９であり、状態Ｓ７に推移する（２３０８）。状態Ｓ７は、無条件に状態Ｓ０に推移する（２３０９）。もしソフトウェア出力値が、第３の参照モデルの許容出力値範囲内にない場合、次のテスト入力データ２２０２において参照モデルの入力データ値が遷移条件を満たさなくなるので、テストを終了する。
【００６２】
この時、一致性判定部１１４の手続き５においてテスト入力データ２２０２を全てカバーする差異情報系列が存在せず、判定結果１１５は、出力しない。なお、テスト終了までの差異情報系列について判定結果１１５を出力するよう手続き５を変更すると、図２３の第３の評価基準から図１５のステップ１５０９の効果により、テスト終了までに認識した数字の数に反比例して低い（適合性が高い）判定値が出力される。
【００６３】
図２２は、４つの手書き数字から構成されるテスト入力データ２２０２に対する、実施例５によるテストの概略である。まず、入力番号１のテスト入力データ２２０２に対して、データ変換部１０５は、テスト開始を示すダミーの入力データ値を生成してモデル実行部１０９に送り、モデルの状態をＳ０からＳ１へと遷移させるとともに、許容出力値範囲Ｌ１、Ｌ２を得る。一方、ソフトウェア実行部１０７では、入力番号１のテスト入力データ２２０２に対してソフトウェア出力データ２２０４としてＬ１を得る。これ以降、データ変換部１０５は、ソフトウェア出力データ２２０４を参照モデル１０３のモデル入力データ２２０５として利用する。
【００６４】
すなわち、入力番号２のテスト入力データ２２０２について参照モデル１０３のモデル入力データ２２０５は、Ｌ１であり、参照モデル１０３から許容出力値範囲Ｌ９を得る。一方、入力番号２のテスト入力データ２２０２についてソフトウェア出力データ２２０４が、Ｌ９であれば、許容出力値範囲内にある。このソフトウェア出力データ２２０４を、入力番号３のテスト入力データ２２０２に対する参照モデル１０３のモデル入力データ２２０５として利用する。このようにして４つの手書き数字が全て許容出力値範囲内にあれば、評価基準１０４に基づいて判定結果１１５として、0が得られる。
【００６５】
この実施例では、図１のソフトウェア出力データ１１０をデータ変換部１０５に送り、モデル入力データ１０８を作成する。一方、テスト入力データ１０２の情報は、テスト開始を示す最初のダミーデータを除き、モデル入力データ１０８の作成には使っていない。実施例５によれば、テスト入力データ１０２から直接に、モデル入力データ１０８を作成することが困難な場合、テスト対象ソフトウェア１０１を、モデル入力データ１０８を作成する手段として利用することができる。
【実施例６】
【００６６】
差異情報蓄積部１１３に蓄積した差異情報を解析し、テスト入力データとして利用する場合の実施例を実施例６として説明する。図２４は、実施例６における入出力データの例を示し、入力番号２４０１、テスト入力データ２４０２、ソフトウェア入力データ２４０３、ソフトウェア出力データ２４０４、モデル入力データ２４０５、許容出力値範囲２４０６からなる。実施例１では、入力番号１から入力番号５までのテスト入力データ２４０２に対するテストが終わった後、差異情報を解析して入力番号３のテスト入力データ２４０２に対するソフトウェア出力データ２４０４が、許容出力値範囲２４０６内には無いことが分かる。
【００６７】
そこで、実施例６では、入力番号３に類似するテストを重点的に行うため、入力番号３の入力データをわずかに変形したテスト入力データ３１０，３１２，３１３を一致性判定部１１４において生成し、追加入力データとしてテスト入力データ１０２に追加する。図２４は、入力番号３のテスト入力データについて、画像の拡大（入力番号３１０、３１２）と縮小（入力番号３１１）を行った例である。実施例６によれば、許容出力値範囲２４０６の範囲外のテスト入力データについては、テスト入力データを追加できる。そのため、許容出力値範囲外となった場合のテスト入力データについて、深く掘り下げたテストをすることできる。
【符号の説明】
【００６８】
１：ソフトウェアテスト装置、１０１：テスト対象ソフトウェア、１０２：テスト入力データ、１０３：参照モデル、１０４：評価基準、１０５：データ変換部、１０６：ソフトウェア入力データ、１０７：ソフトウェア実行部、１０８：モデル入力データ、１０９：モデル実行部、１１０：ソフトウェア出力データ、１１１：モデル許容出力値範囲、１１２：差異解析部、１１３：差異情報蓄積部、１１４：一致性判定部、１１５：判定結果
【図１】
2019075035.tif 000003
【図２】
2019075035.tif 000004
【図３】
2019075035.tif 000005
【図４】
2019075035.tif 000006
【図５】
2019075035.tif 000007
【図６】
2019075035.tif 000008
【図７】
2019075035.tif 000009
【図８】
2019075035.tif 000010
【図９】
2019075035.tif 000011
【図１０】
2019075035.tif 000012
【図１１】
2019075035.tif 000013
【図１２】
2019075035.tif 000014
【図１３】
2019075035.tif 000015
【図１４】
2019075035.tif 000016
【図１５】
2019075035.tif 000017
【図１６】
2019075035.tif 000018
【図１７】
2019075035.tif 000019
【図１８】
2019075035.tif 000020
【図１９】
2019075035.tif 000021
【図２０】
2019075035.tif 000022
【図２１】
2019075035.tif 000023
【図２２】
2019075035.tif 000024
【図２３】
2019075035.tif 000025
【図２４】
2019075035.tif 000026