(57)【特許請求の範囲】
【請求項１】
仕様に基づいて作成された被テスト対象物が前記仕様に従って動作するか否かの検証の際に入力されるテストケースの評価を行なうテストケース評価装置であって、
被テスト対象物の原仕様の一部または全部を変更した誤り仕様を生成する誤り仕様生成部と、
前記原仕様及び前記誤り仕様を被テスト対象物に対するテストケースごとに実行して前記各仕様の実行結果を出力する仕様実行部と、
前記テストケースごとに前記原仕様の仕様実行結果と前記誤り仕様の仕様実行結果とを比較し、前記原仕様の仕様実行結果と異なる実行結果が得られた前記誤り仕様の仕様実行結果を、前記被テスト対象物に潜在する誤りの検出能力を示す誤り検出データとして抽出し、該誤り検出データに基づいて実行されるべきテストケースを抽出する誤り情報抽出部とを具備する
ことを特徴とするテストケース評価装置。
【請求項２】
前記誤り検出データは、各テストケースについての、前記仕様の仕様実行結果および前記各テストケースに定義された命令シーケンス中の仕様実行の終了時点データを含む
ことを特徴とする請求項１に記載のテストケース評価装置。
【請求項３】
仕様に基づいて作成された被テスト対象物が前記仕様に従って動作するか否かの検証の結果を解析するテスト結果解析装置であって、
請求項１に記載のテストケース評価装置により抽出された誤り検出データと、前記被テスト対象物の検証の結果データとの比較を行ない、
該比較結果に基づいて、前記被テスト対象物に存在する誤りを示す実行結果解析データを生成する
ことを特徴とするテスト結果解析装置。
【請求項４】
前記実行結果解析データは、被テスト対象物についての各誤りの検出に有効な第１のテストケース群と、
テストの実行結果が前記誤り検出データと一致した第２のテストケース群と、前記第１のテストケース群と前記第２のテストケース群との比較により得られた、被テスト対象物に各誤りが存在する可能性を示す評価結果とを含む
ことを特徴とする請求項３に記載のテスト結果解析装置。
【請求項５】
仕様に基づいて作成された被テスト対象物が前記仕様に従って動作するか否かの検証の際に入力されるテストケースの評価を行なうテストケース評価プログラムを格納するコンピュータ読み取り可能な記録媒体であって、
前記プログラムは、前記コンピュータに、
被テスト対象物の原仕様の一部または全部を変更した誤り仕様を生成する誤り仕様生成処理と、
前記原仕様及び前記誤り仕様を被テスト対象物に対するテストケースごとに実行して前記各仕様の実行結果を出力する仕様実行処理と、
前記テストケースごとに前記原仕様の仕様実行結果と前記誤り仕様の仕様実行結果とを比較し、前記原仕様の仕様実行結果と異なる実行結果が得られた前記誤り仕様の仕様実行結果を、前記被テスト対象物に潜在する誤りの検出能力を示す誤り検出データとして抽出し、該誤り検出データに基づいて実行されるべきテストケースを抽出する誤り情報抽出処理とを実行させるためのものである
ことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、テスト装置、テストケース評価装置、およびテスト結果解析装置に関する。特に、ソフトウェアなどの被テスト対象物が仕様に従って正常に動作するか否かの検証を行うテストにおいて、想定される誤りの検出能力に応じてテストケースを選択・補完し、又テストの実行結果から被テスト対象物の誤りを示すことによって、被テスト対象物に潜在する誤りを検出するのに必要十分なテストを効率よく行うための技術に関する。
【０００２】
【従来の技術】
近年、ソフトウェア開発は大規模化かつ複雑高度化しており、これに伴ってソフトウェアの動作の検証を行うテストも大規模化している。
【０００３】
このテストの一般的手順を以下に説明する。まず、テストされる対象物（ソフトウェア）の仕様に基づき、テストツール上でソフトウエアに入力されるテストケースが生成される。ここで、テストケースとは、所望するテストのパターンを記述したものであり、通常、各変数・状態の初期値と被テスト対象に与える命令シーケンスとで構成される。次に、このテストケースに基づき、被テスト対象物であるソフトウエアのテストが実行される。ユーザーは、このテスト実行で得られた実行結果を解析して、被テスト対象の仕様の誤り（仕様との相違、バグ）を検出し、デバッグ・プログラム修正を行う。これらの手順が、入力テストケースに関して所望する動作が得られるまで繰り返して行われる。
【０００４】
従来より、テストの大規模化・複雑化を背景として、上述した手順のうちのテストケースの作成・テストの実行についての自動化技術が実用に供されている。
【０００５】
第１に、テストケースの生成フェーズにおいては、テストケース生成作業を機械的に行うことが、ソフトウエアの大規模化に応じた大量のテストケースを自動生成することを可能としている。このテストケースの自動生成では、状態遷移図やフローチャート等で記述されるソフトウエアの仕様やソフトウエアのソースコード自体などの入力内容に従って、各テストケースが決定・生成される。
【０００６】
第２に、テストの実行フェーズにおいては、各種のテストツールに対して用意されたテストケースが逐次自動で読み込まれて、ソフトウエアが実行される。この各テストケースについて実行されたテスト結果が判定され、出力される。このテスト結果の判定手法には、例えば、あらかじめ実行結果データを用意しておき、実際の実行結果が実行結果データに一致すれば合格とする方法、異常な動作を定義しておき、異常な動作が検出された場合に不合格とする方法、適用したテストケースに対して最後まで実行できれば合格とする方法などがある。
【０００７】
このように、何度も繰り返し行われるテスト関連作業を自動的・機械的に行うことによって、テスト関連作業におけるコストの軽減が図られていた。
【０００８】
【発明が解決しようとする課題】
しかしながら、従来のソフトウェアのテストには、以下の問題点があった。
【０００９】
即ち、第１に、機械的に作成されたテストケースは、仕様に示される組み合わせパターンを網羅すべく生成されるため、ケースの数が膨大である。この生成されたテストケースは、誤りの検出能力（即ち、被テスト対象ソフトウエアに潜在するバグを検出する能力）も一律ではなく、検出能力の高いものと低いものとが混在している。しかし、従来はどのテストケースがどの誤りを検出するのに有効かを判断する有効な手段がなかった。従って、これら全てのテストケースを使って一様にテストを行っていた。こうしたテストは非効率的であり、開発コストを増大させていた。加えて、機械的手段で膨大に生成されたテストケースの集合が、必ずしも充分な誤り検出能力を有しているとは限らない。しかし、従来は生成されたテストケースの集合が誤りを検出するのに有効であるかどうかを判断する有効な手段がなかった。従って当該テストが誤りを検出するために充分になされたことを保証することは困難であった。
【００１０】
また、第２に、テストケースの数の多さに伴って、テスト実行により出力されるテスト結果の数も多くなる。加えて、一般にはある一つの誤りに対し複数のテストケースが不合格となるため、テスト結果からある誤りを特定するためには、多くの不合格となったテスト結果を解析しなければならない。このため、テスト結果の解析・デバッグ作業が非効率的であった。
【００１１】
これらの要因により、ソフトウエアのテスト実行作業・結果解析作業の各段階作業が長期化し、開発コストを増大させていた。
【００１２】
以上のように、本発明は、上記の問題点を解決するためになされたものである。
【００１３】
そしてその目的とするところは、テストケースの誤り検出能力を事前に評価することで、被テスト対象物に潜在する誤りを検出するのに必要十分なテストを効率よく行うことを可能とするテスト装置、およびテストケース評価装置を提供することにある。
【００１４】
又、他の目的は、テストの実行結果に従い、容易に被テスト対象物中の誤りを示すことで、テスト結果の解析・デバッグの効率化を図ることを可能とするテスト装置、およびテスト結果解析装置を提供することにある。
【００１５】
【課題を解決するための手段】
上記の課題を達成するための本発明の特徴は、予め被テスト対象に想定される誤りとテストケースとの対応関係である誤り検出データを求め、この誤り検出データを利用してテスト実行・解析を行う点にある。
【００１６】
この誤り検出データはテスト関連作業の各フェーズで利用される。まず、第１には、この誤り検出データによりテストケースの事前評価を行う。第２には、この誤り検出データによりテストの実行結果から被テスト対象物に潜在する誤りを示す。
【００１７】
かかる機能を実現するために、請求項１の発明は、仕様に基づいて作成された被テスト対象物が前記仕様に従って動作するか否かの検証を行うテスト装置であって、前記被テスト対象物に対する入力テストケースと前記被テスト対象物の仕様とから、想定される誤りの検出能力を示す誤り検出データを各テストケースごとに予め生成する誤り情報生成部を具備し、前記誤り検出データに基づき、少なくとも前記テストケースの評価および検証結果からの前記誤りの特定のうちの１つを行うことを特徴とするものである。
【００１８】
上記構成によれば、各テストケースごとの誤り検出能力を予め取得することが可能となる。つまり、この各テストケースごとの誤り検出能力を用いてテストケースの評価やテスト結果の解析を効率よく行い、テストのコスト削減を図ることが可能となるのである。
【００１９】
また、請求項２の発明は、仕様に基づいて作成された被テスト対象物が前記仕様に従って動作するか否かの検証の際に入力されるテストケースの評価を行うテストケース評価装置であって、前記被テスト対象物に対する入力テストケースと前記被テスト対象物の仕様とから、想定される誤りの検出能力を示す誤り検出データを各テストケースごとに予め生成する誤り情報生成部を具備し、前記誤り検出データに基づき各テストケースの評価を行うことを特徴とすることにより、与えられたテストケース集合の中から誤り検出に有効なテストケースを選択的に抽出したり、他方与えられたテストケース集合では検出しにくい誤りを指摘することが可能とする。つまり、無駄なテストを抑制したり、与えられたテストケースの足りない部分を補完する作業が効率化され、テストのコスト削減が実現される。
【００２０】
また、請求項３の発明は、仕様に基づいて作成された被テスト対象物が前記仕様に従って動作するか否かの検証の結果を解析するテスト結果解析装置であって、被テスト対象物に対する入力テストケースごとの予め想定される１または複数の誤りの検出能力を示す誤り検出データと、前記被テスト対象物の検証の結果データとの比較を行い、該比較結果に基づいて、前記被テスト対象に存在する誤りを示す実行結果解析データを生成することにより、被テスト対象物に実際に存在する可能性の高い誤りを示すことができる。このため、存在する可能性の高い誤りから優先的に探索することが可能となる。また、不合格となったテスト結果を原因別に分類することができる。このため、テスト結果から誤りを特定する作業にかかるコストを削減することが可能となる。
【００２１】
また、請求項４の発明は、前記誤り情報生成部は、さらに、被テスト対象物の原仕様の一部または全部を変更した誤り仕様を生成する誤り仕様生成部と、前記原仕様及び前記誤り仕様を被テスト対象物に対する入力テストケースごとに実行して前記各仕様の実行結果を出力する仕様実行部とを具備し、前記誤り検出データは、前記仕様実行部が行った、前記原仕様の各テストケースごとの仕様実行結果と前記誤り仕様の各テストケースごとの仕様実行結果との比較結果に基づき生成されることを特徴とする。
【００２２】
上記構成によれば、原仕様に誤りを意図的に埋め込んだ誤り仕様を仮想的に実行し、原仕様の実行結果と相違する結果を生ずるテストケースを、誤り検出に有効なテストケースであると予め判定することができる。このように容易に各テストケースの誤り検出能力を算出し、与えられたテストケース集合の中から誤り検出に有効なテストケースを選択的に抽出したり、他方与えられたテストケース集合では検出しにくい誤りを指摘することが可能となる。つまり、無駄なテストを抑制したり、与えられたテストケースの足りない部分を補完する作業が効率化され、テストのコスト削減が実現される。
【００２３】
また、請求項５の発明は、前記誤り検出データは、各テストケースについての、前記仕様の仕様実行結果および前記各テストケースに定義された命令シーケンス中の仕様実行の終了地点データを含むことにより、原仕様の実行結果と誤り仕様の実行結果とを比較して、容易に誤り検出データを生成することが可能とする。
【００２４】
また、請求項６の発明は、前記実行結果解析データは、被テスト対象物についての各誤りの検出に有効な第１のテストケース群と、テストの実行結果が前記誤り検出データと一致した第２のテストケース群と、前記第１のテストケース群と前記第２のテストケース群との比較により得られ、被テスト対象物に各誤りが存在する可能性を示す評価結果とを含むことにより、仕様に応じて想定される各誤りごとにテストケースとの相関関係やテストされるソフトウエアとの相関関係を容易に把握することが可能となる。
【００２５】
さらに、請求項７の発明（記録媒体）は、被テスト対象物に対して、被テスト対象物が仕様に従って動作するか否かの検証の際に入力されるテストケースの評価を行うテストケース評価プログラムを格納したコンピュータ読み取り可能な記録媒体であって、前記被テスト対象物に対する入力テストケースと前記被テスト対象物の仕様とから、予め想定される誤りについての誤り検出能力を示す誤り検出データを各テストケースごとに予め生成する誤り情報生成ステップと、前記誤り検出データに基づき各テストケースの評価を行うテストケース抽出ステップとを含むことを特徴とする。
【００２６】
上記構成によれば、請求項２の発明と同様、与えられたテストケース集合の中から誤り検出に有効なテストケースを選択的に抽出したり、他方与えられたテストケース集合では検出しにくい誤りを指摘することが可能とする。つまり、無駄なテストを抑制したり、与えられたテストケースの足りない部分を補完する作業が効率化され、テストのコスト削減が実現される。
【００２７】
さらに、請求項８の発明は、前記誤り情報生成ステップは、さらに、被テスト対象物の原仕様の一部または全部を変更した誤り仕様を生成する誤り仕様生成ステップと、前記原仕様及び前記誤り仕様を被テスト対象物に対する入力テストケースごとに実行する仕様実行ステップと、前記原仕様の各テストケースごとの仕様実行結果と前記誤り仕様の各テストケースごとの仕様実行結果との比較結果に基づき前記誤り検出データを生成する誤り情報抽出ステップとを含むことを特徴とする。
【００２８】
上記構成によれば、請求項４の発明と同様、原仕様に誤りを意図的に埋め込んだ誤り仕様を仮想的に実行し、原仕様の実行結果と相違する結果を生ずるテストケースを、誤り検出に有効なテストケースであると予め判定することができる。このように容易に各テストケースの誤り検出能力を算出し、与えられたテストケース集合の中から誤り検出に有効なテストケースを選択的に抽出したり、他方与えられたテストケース集合では検出しにくい誤りを指摘することが可能となる。つまり、無駄なテストを抑制したり、与えられたテストケースの足りない部分を補完する作業が効率化され、テストのコスト削減が実現される。
【００２９】
【発明の実施の形態】
以下、図面を用いて本発明の実施の形態を詳細に説明する。
【００３０】
第１の実施形態
第１の実施形態は、仕様の誤りのパターンと各テストケースの対応関係を用いて、テストケースを事前に評価する機能を提供するものである。
【００３１】
図１に示すように、本発明の実施形態に係るテスト装置１の構成は、テストの対象となるソフトウエアのテストに用いる入力テストケース６の分析・評価を行って、各テストケースごとに誤り検出を行うための情報を記録した誤り情報テーブル７を出力するテストケース評価部２と、被テスト対象ソフトウエアをテストケース１１に従ってテストし、被テスト対象ソフトウエアに実際にどのような誤りが存在するかを評価した誤り評価データ１４を出力するテスト結果解析部３とに大別される。第１の実施形態は、このうちのテストケース評価部２により実現される。
【００３２】
テストケース評価部２は、テスト対象のソフトウエアの仕様５とテストケース集合６とを入力とし、入力テストケース６の分析・評価を行ってテストの対象となるソフトウエアの誤り検出を行うための情報を記録した誤り情報テーブル７を出力する。
【００３３】
このテストケース評価部２は、テスト対象ソフトウエアの仕様（以下、単に仕様と称する）５に誤りを意図的に埋め込んで誤り仕様２２を生成する誤り使用生成部２１と、誤り仕様２２を生成するための情報を記録する仕様変更データベース２０と、仕様５と誤り仕様２２とをそれぞれ入力テストケース６に従って実行する仕様実行部２３と、仕様の実行結果である仕様／誤り仕様実行結果テーブル２４上の仕様５と誤り仕様２２との仕様の実行の結果を比較・解析して誤り情報テーブル７を生成する誤り情報抽出部２５により構成される。
【００３４】
尚、仕様変更データベース２０の編成は、柔軟なアクセスが可能な関係型データベースであることが望ましいが、必ずしも関係型データベースに限定されず任意の編成方式が可能である。仕様・誤り仕様実行結果テーブル２４・誤り情報テーブル７などの各テーブルも、アクセス頻度・データ規模などに応じて適宜配置場所やデータ編成を変更することができる。各テーブルの内容詳細については後述する。
【００３５】
次に、第１の実施形態におけるハードウエア構成を説明する。第１の実施形態に係るテストケース評価装置２の実施には、以下で説明する処理を実現するプログラムを作成し、この作成したプログラムをロードすることでこの処理を実行可能とするコンピュータシステムを用いる。このコンピュータシステムには、いわゆる汎用機、ワークステーション、ＰＣ、ＮＣ（Network Computer）等が含まれる。第１の実施形態で用いるコンピュータシステムのハードウエアは、各種処理を行うためＣＰＵと、プログラムメモリ・データメモリ等のメモリと、ＦＤ・ＣＤなどの外部記憶装置と、キーボード・マウス等の入力装置と、ディスプレー・プリンタ等の出力装置とを備える。
【００３６】
さらに、第１の実施形態を実施するコンピュータシステムは、単一のコンピュータであってもよく、また例えばローカル又はリモートにネットワーク接続されたサーバーマシンとクライアントマシンとにより構成されてもよい。ソフトウエアの開発規模や開発人員構成に応じて、仕様変更データベース２０・テストケース６・仕様５・誤り情報テーブル７などの任意のデータをサーバーマシンに記憶し、テストケース評価装置２やテスト結果解析装置３のエンジン部分（処理部分）のみをクライアントマシンで並行的に実行することで、処理効率を向上させることができる。
【００３７】
尚、上述したテストケース評価装置２を実現するためのプログラムは、各種記録媒体に保存することができる。かかる記録媒体を、上記ハードウエアを具備するコンピュータにより読み出し、当該プログラムを実行することにより、本発明が実施されることができる。ここで記録媒体とは、例えばメモリ・磁気ディスク・光ディスク等、プログラムを記録することができる装置全般を含む。
【００３８】
第１の実施形態は上記のように構成されており、以下その処理の流れを順に説明する。
【００３９】
まず、処理内容の説明に先立って第１の実施形態の以下の説明で用いられる仕様、テストケース等の例を示す。
【００４０】
（１）仕様
第１の実施形態では、テスト対象のソフトウエアの仕様は図２で示されるような状態遷移図によって記述されているものとする。図２中の各ノードの意味を説明する。
【００４１】
丸型ノードは、ソフトウェアの状態を表すノードである。例えば図２のノードＮ１はソフトウェアの状態がＳ１であることを示す。
【００４２】
菱型ノードは、条件分岐を表すノードである。例えば図２１のノードＮ３は、変数Ｐの値が１であるかどうかによって、次の処理がノードＮ４になるかノードＮ６になるかが決まることを示す。
【００４３】
凹型五角形ノードは、受信処理を表すノードである。例えば図２のノードＮ２は、ソフトウェアが、メッセージＭＩＮ１が外部から送られてくるのを待つことを示す。
【００４４】
凸型五角形ノードは、送信処理を表すノードである。例えば図２のノードＮ４は、ソフトウェアが、メッセージＭＯＵＴ１を外部に送信することを示す。
【００４５】
四角形ノードは、上記以外の通常処理を表すノードである。例えば図２のノードＮ９は、ソフトウェアが、変数ＲＣの値を１増加させることを示す。
【００４６】
尚、状態遷移が菱型ノード以外で分岐している場合は、次に行われる処理によって分岐先が定まることを表す。例えばノードＮ１の状態の後、ＭＩＮ１が受信されれば分岐先はノードＮ２となり、ＭＩＮ２が受信されれば分岐先はノードＮ７となる。
【００４７】
尚、第１の実施形態では状態遷移図による仕様の表現を例としたが、仕様の表現はこれに限定されず、フローチャートなどの他の表現を用いて本発明を実施することも可能である。
【００４８】
（２）テストケース
図３に、第１の実施形態で用いるテストケース集合の一例を示す。このテストケース集合は５つのテストケースｂ１〜ｂ５からなる。表の各列が１つのテストケースを表している。各テストケースは初期状態と命令シーケンスとからなる。初期状態は、テスト開始時のテスト対象ソフトウエアの状態と変数の値とを表す。例えば、テストケースｂ１を用いたテストの開始時には、対象の状態がＳ１かつ変数ＰとＲＣの値がそれぞれ１と２００であることになる。命令シーケンスは、テスト実行時にどのような命令をどのような順序で行うかを指定する。例えば、テストケースｂ１を用いたテストの実行には、ｂ１の命令シーケンスの各命令が上の行から１行ずつ順に実行されていくものとする。命令シーケンスの各命令の意味は、以下のように定められているものとする。
【００４９】
・ＳＥＮＤ（message）  テスト対象に対し、メッセージmessageを送信
・ＷＡＩＴ（message）  メッセージ受信をしながら、テスト対象からメッセージmessageが送られるまで待つ
・ＴＥＳＴ（状態：state）  テスト対象の状態がstateとなるのを待つ
【００５０】
第１の実施形態では、命令シーケンスを最後まで正常に実行できたとき、そのテストケースについてのテストは合格であると判定される。通常の実行に充分な時間を経過しても命令シーケンスの実行が終わらない場合、不合格であると判定する。この時間は、ユーザが推測に基づいて指定するものとする。
【００５１】
例えば、図３のｂ１の命令シーケンスを用いてテストを行う場合、テスト実行部３１は図３に示す以下のような命令を順に実行する。
【００５２】
1）.テスト対象の状態をＳ１、変数ＰとＲＣの値をそれぞれ１と２００に設定する。
2）.次に、テスト対象にメッセージＭＩＮ１を送信する。
3）.テスト対象からメッセージＭＯＵＴ１が返ってくるまで待つ。
4）.テスト対象の状態がＳ２となるのを待つ。
【００５３】
これらの命令を最後まで正常に実行できた場合に、テスト対象はｂ１のテストケースについて合格であるとする。通常の実行に充分な時間を経過しても3）.においてメッセージＭＯＵＴ１が返ってこない、もしくは4）.においてテスト対象の状態がＳ２とならない場合に、不合格であるとする。
【００５４】
尚、上記では、テストケースに定義された命令シーケンスをすべて正常に実行できるか否かをタイムアウトにより判断する例を説明した。但し、テスト実行の合否の判定方法はこれに限定されない。例えば、テスト対象のＡＰＩ（Application Programming Interface）を介して、又はテスト対象に変数内容を表示するコードを挿入することによって、テスト実行中における所定の変数の値を確認することで判定するなど、種々の変形が可能である。
【００５５】
（３）テストの実行例
図２の仕様に基づいたソフトウェアに対し、図３のテストケースｂ１を適用してのテストを行った場合の流れの一例を以下に説明する。このテストの実行は、後述するテスト実行部３１で行われる。仮にテスト対象ソフトウェアが仕様に忠実に作成できている（即ち誤りがなく作成できている）とすると、例えば次のような流れでテスト対象の実行が行われる。
【００５６】
1）.テスト対象の状態が１、変数ＰとＲＣの値がそれぞれ１と２００に設定される。（図２のノードＮ１）
2）.テスト実行部３１がテスト対象にメッセージＭＩＮ１を送信する。（図３のｂ１テストケースの命令シーケンス１行目）
3）.テスト対象はメッセージＭＩＮ１を受信する。（図２のノードＮ２）
4）.テスト対象は変数Ｐの値が１であるかどうかを調べる。（図２のノードＮ３）
5）.テスト対象はメッセージＭＯＵＴ１を送信する。（図２のノードＮ４）
6）.テスト対象の状態がＳ２に変化する。（図２のノードＮ５）
7）.テスト実行部３１がテスト対象の状態がＳ２となっていることを確認し、テストケースｂ１についてテストは合格と判定する。（図３のｂ１テストケースの命令シーケンス３行目）
【００５７】
次に、上述の例を用いて、第１の実施形態に係るテストケース評価装置２における誤り仕様生成部２１、仕様実行部２３、誤り情報抽出部２５における処理の流れを順に説明する。
【００５８】
（１）誤り仕様生成処理
誤り仕様生成部２１の行う誤り仕様生成処理の内容を以下に説明する。
【００５９】
先に、以下の処理で用いられる仕様変更データベースおよび仕様変更情報について説明する。
【００６０】
各仕様について想定している各誤りそれぞれについて、誤り仕様を生成するための仕様変更情報が予め定義されているものとする。これら各仕様変更情報は仕様変更データベース２０に用意されているものとする。仕様変更情報は、仕様をどう変更すべきかを表す「仕様変更操作」と、仕様のどの部分（ノード）を変更すべきかを表す「仕様変更場所」の２つの情報から構成される。
【００６１】
次に、誤り仕様生成部２１の処理手順を、図４のフローチャートを用いて説明する。
【００６２】
まず、想定している誤りの一つに着目する（Ｓ１０）。想定している誤りそれぞれについて、Ｓ１１からＳ１５の処理を繰り返す（Ｓ１６）。着目順序は任意で良い。
【００６３】
次に、仕様変更データベース２０中の、着目している誤りに対応する仕様変更情報を参照する（Ｓ１１）。
【００６４】
参照した仕様変更情報の仕様変更場所に当てはまる個所の一つに着目し、Ｓ１３、Ｓ１４を実行する。仕様変更場所に当てはまる個所それぞれについて、これを繰り返す（Ｓ１５）。順序は任意で良い。
【００６５】
入力された仕様のコピーを作成し、着目した個所について仕様変更操作で指定された変更を行う（Ｓ１３）。
【００６６】
変更した仕様のコピーに対し、着目した誤りと変更を施した個所を記録する（Ｓ１４）。
【００６７】
最後に変更を施された仕様のコピーの集合を誤り仕様の集合とする（Ｓ１７）。
【００６８】
上記の図４の処理フローを、理解のためさらに具体例をもって説明する。
【００６９】
ここでは２つの誤りを想定し、図２の仕様に対して誤り仕様生成の処理を適用した場合を示す。仕様に埋め込む誤りの一例として、「処理抜け誤り」と「分岐先固定誤り」を想定する。「処理抜け誤り」に対する仕様変更情報の仕様変更操作を「処理を一つ抜く」、仕様変更場所を「通常処理ノード」とする。「受信分岐先固定誤り」に対する仕様変更操作を「何を受信しても、常に同じノードに分岐させる」、仕様変更場所を「受信分岐先ノード」とする。
【００７０】
1）.「処理抜け誤り」に着目する。（Ｓ１０）
2）.仕様変更データベース２０から「処理抜け誤り」に対応する仕様変更情報を参照する。（Ｓ１１）
3）.仕様変更場所の「通常処理ノード」のうち、ノードＮ９に着目する。（Ｓ１２）
4）.図２の仕様のコピーを作成し、ノードＮ９の処理を抜く。（Ｓ１３）
5）.変更した仕様に対し、施した変更「処理を抜く」と変更個所「ノードＮ９」の２つの情報を記録する。（Ｓ１４）
6）.「通常処理ノード」のうち、ノードＮ１０に着目し、2）.〜5）.と同様の操作を行う。（Ｓ１２〜Ｓ１４）
7）.「受信分岐先固定誤り」に着目する。（Ｓ１０）
8）.仕様変更データベース２０から「受信分岐先固定誤り」に対応する仕様変更情報を参照する。（Ｓ１１）
9）．仕様変更場所の「受信分岐先ノード」のうち、ノードＮ２に着目する。（Ｓ１２）
10）.図２の仕様のコピーを作成し、ノードＮ２において何を受信しても常にノードＮ２に分岐するよう変更を施す。（Ｓ１３）
11）.変更した仕様に対し、施した変更「何を受信しても常にノードＮ２に分岐するよう変更」と変更個所「ノードＮ２」の２つの情報を記録する。（Ｓ１４）
12）.「受信分岐先ノード」のうち、ノードＮ７に着目し、8）.〜11）.と同様の操作を行う。（Ｓ１２〜Ｓ１４）
13）.変更を加えた４つの仕様を誤り仕様の集合とする。（Ｓ１７）
以後上記の例を用いて説明を行っていくため、ノードＮ９の処理抜け誤りの誤り仕様をｍ１、ノードＮ１０の処理抜け誤り仕様をｍ２、ノードＮ２の受信分岐先固定誤りの誤り仕様をｍ３、ノードＮ７の受信分岐先固定誤りの誤り仕様をｍ４と呼ぶ。ｍ１〜ｍ４の誤り仕様をそれぞれ図５乃至図８に示す。
【００７１】
誤り仕様の集合が生成されると、次に仕様実行部２３により仕様の実行が行われる。
【００７２】
（２）仕様実行処理
仕様実行部２３の行う仕様実行処理の内容を以下に説明する。尚、以下において仕様実行とは、仕様を模擬的に動作させて仮想的な実行を行うことをいう。仕様に入力を与えて模擬的に動作させることで、仕様どおりにつくられたソフトウェアがどのように動作するかを確認することができる。この仕様実行は、例えば、仕様の各記述方法に対応した既存のインタープリターなどを利用して行うことができる。
【００７３】
仕様実行部２３の入力は、仕様５と誤り仕様の集合２２とテストケース集合６との３つである。仕様実行部２３は、仕様５と各誤り仕様２２に対して各テストケース６を適用して仕様実行を行い、実行結果を仕様／誤り仕様実行結果テーブル２４（以下、単に仕様実行結果テーブルと称する）に記録する。仕様実行部２３は、実行に要する時間を計測するためのタイマを備える。仕様実行部２３は、一つのテストケースに関する実行が所定のタイムアウト時間を超えた場合、その時点で実行を中止し、そこでの実行結果を記録する。このタイムアウト時間はユーザによって指定され、その値は正常な実行が終了するのに充分であると考えられる時間を指定するものとする。
【００７４】
先に、以下の処理で用いられる仕様・誤り仕様実行結果テーブル２４について説明する。仕様実行結果テーブル２４の内容の一例を図９に示す。仕様実行結果テーブル２４は、列はテストケースの識別子、行は仕様または誤り仕様の識別子で指定されるテーブルである。これらの仕様の識別子は、仕様の名前・ポインタなど、識別対象を参照可能なものなら何でも良い。テーブルの各セルには、行で指定される仕様または誤り仕様に対して、列で指定されるテストケースを適用して仕様実行を行った結果が記録される。セルに記録される情報は、「テストケース合否」と「実行終了地点」の２つである。ここで、「テストケース合否」はテストケースについて実行した結果、そのテストケースについて合格と判定されたか否かを表す。「実行終了地点」はテストケースのどの部分まで正常に実行できたかを表す。
【００７５】
次に、仕様実行部２３の処理手順を、図１０のフローチャートを用いて説明する。
【００７６】
まず、与えられたテストケースの一つに着目し、Ｓ２１、Ｓ２２の処理を実行する（Ｓ２０）。与えられたテストケースそれぞれについて、これを繰り返す（Ｓ２３）。順序は任意で良い。
【００７７】
与えられた仕様を、着目したテストケースに従って仕様実行する（Ｓ２１）。
【００７８】
仕様実行の結果（テストケース合否、実行終了地点）を、仕様実行結果テーブル２４中に記録する（Ｓ２２）。記録する場所は、与えられた仕様と着目したテストケースによって指定されるセルを選択する。
【００７９】
次に、誤り仕様の一つに着目し、Ｓ２５からＳ２８の処理を実行する。誤り仕様それぞれについて、これを繰り返す（Ｓ２９）。繰り返す順序は任意で良い。
【００８０】
与えられたテストケースの一つに着目し、Ｓ２６、Ｓ２７の処理を実行する（Ｓ２５）。与えられたテストケースそれぞれについて、これを繰り返す（Ｓ２８）。順序は任意で良い。
【００８１】
着目した誤り仕様を、着目したテストケースに従って仕様実行する（Ｓ２６）。
【００８２】
仕様実行の結果（テストケース合否、実行終了地点）を仕様実行結果テーブル２４に記録する（Ｓ２７）。記録する場所は着目した誤り仕様と着目したテストケースによって指定されるセルを選択する。
【００８３】
上記の図１０の処理フローを、理解のためさらに具体例をもって以下に説明する。ここでは、図２の元々の仕様とｍ１〜ｍ４の誤り仕様（図５〜図８）、図３のテストケース集合等を入力とした場合の仕様実行処理を説明する。
【００８４】
1）.テストケースｂ１に着目する。（Ｓ２０）
2）.図２の仕様の動作を着目したテストケースｂ１に従って仕様実行する。仕様実行を行うと、仕様実行部２３はノードＮ１からノードＮ２、ノードＮ３、ノードＮ４、ノードＮ５の順に処理を行う。命令シーケンスが全て正常に実行できるので、ｂ１については合格と判断される。従って、仕様実行結果テーブル２４の図２の仕様とテストケースｂ１によって指定されるセルに結果（テストケース合否は合格、実行終了地点は命令シーケンス中の３行目）を記録する。（Ｓ２１、Ｓ２２）
3）.その他（ｂ２〜ｂ５）のテストケースについても、Ｓ２１、Ｓ２２の処理を繰り返す。（Ｓ２３）
4）.誤り仕様ｍ１に着目する。（Ｓ２４）
5）.テストケースｂ４に着目する（Ｓ２５）。ｍ１の動作を、着目したテストケースに従って仕様実行する（Ｓ２６）。仕様実行を行うと、ノードＮ１からノードＮ７、ノードＮ８、ノードＮ１０、ノードＮ１１、ノードＮ１２と処理が進み、次にノードＮ１に戻って、ノードＮ１、ノードＮ７、ノードＮ８、ノードＮ１０…という処理が行われる。但し、ＲＣが２００でないので、メッセージＭＯＵＴ３はいつまで経っても送信されず、ｂ４の命令シーケンスは５行目で止まったままとなる。そのため、いずれ仕様実行装置がタイムアウトを起こし、ｂ４については不合格と判断されることになる。従って、仕様実行結果テーブルの誤り仕様ｍ１とテストケースｂ４によって指定されるセルに、結果（テストケース合否は不合格、実行終了地点は命令シーケンス中の４行目）を記録する。（Ｓ２７）
6）.その他のテストケース（ｂ１，ｂ２，ｂ３，ｂ５）についても、Ｓ２６、Ｓ２７の処理を繰り返す。（Ｓ２８）
7）.その他の誤り仕様（ｍ２〜ｍ４）についても、Ｓ２５からＳ２８の処理を繰り返す。（Ｓ２９）
以上の処理によって、図９に示す仕様実行結果テーブル２４が得られる。図９中で、各セルの情報のうち、上の行がテストケース合否、下の行が実行終了地点を示す。
【００８５】
（３）誤り情報抽出処理
次に、誤り情報抽出部２５の行う誤り情報抽出処理の内容を以下に説明する。
【００８６】
誤り情報抽出部２５は、仕様実行結果テーブル２４を入力として、
誤り仕様と誤り動作を起こすテストケースとの対応を抽出して、誤り情報テーブル７を生成する処理を行う。
【００８７】
先に、以下の処理で生成される誤り情報テーブル７について説明する。誤り情報テーブル７の内容の一例を図１１に示す。
【００８８】
誤り情報テーブル７は、列はテストケースの識別子、行は誤り仕様の識別子で指定されるテーブルである。これらの識別子は仕様実行結果テーブル２４で用いたものと同じものを用いる。セルに記録される情報も、仕様実行結果テーブル２４と同じものを記録するが、あるテストケースに着目した際に、元々の仕様と実行結果が同じである誤り仕様に対応するセルについては空欄とする。
【００８９】
以下に、誤り情報抽出部２５の処理手順を、図１２のフローチャートを用いて説明する。
【００９０】
まず、仕様結果テーブル２４の一つの列に着目し、Ｓ４１からＳ４５までの処理を行う。仕様実行結果テーブル２４の各列それぞれについてこれを繰り返す（Ｓ４６）。順序は任意で良い。
【００９１】
仕様実行結果テーブル２４の行のうち、誤り仕様に対応する行の一つに着目し、Ｓ４２からＳ４４の処理を行う。各誤り仕様に対応する行それぞれについて、これを繰り返す（Ｓ４５）。順序は任意で良い。
【００９２】
着目した行と列で指定されるセルの内容と、同じ列の与えられた仕様に対応する行で指定されたセルの内容とを比較する（Ｓ４２）。この比較結果から不合格のものを抽出する。すなわち、比較結果の内容が同じなら、Ｓ４５に進む。内容が異なれば、着目した行と列に対応するセルの内容を、誤り情報テーブルの対応するセルに記録する（Ｓ４４）。
【００９３】
上記の図１２の処理フローを、理解のためさらに具体例をもって以下に説明する。ここでは、図９の仕様実行結果テーブル２４と図３のテストケース集合６を入力とした場合の処理を説明する。
【００９４】
1）.仕様実行結果テーブルの列ｂ２に着目する。（Ｓ４０）
2）.仕様実行結果テーブルの行ｍ１に着目する。（Ｓ４１）
3）.行ｍ１と列ｂ２で指定されるセルの内容と、列ｂ２と与えられた仕様に対応する行で指定されたセルの内容を比較する。内容は同じ（合格かつ２行目まで正常に実行）であるので、このまま次の処理に移る（Ｓ４２、Ｓ４３）
4）.仕様実行結果テーブルの行ｍ４に着目する。（Ｓ４１）
5）.行ｍ４と列ｂ２で指定されるセルの内容と、列ｂ２と与えられた仕様に対応する行で指定されたセルの内容を比較する（Ｓ４２）。内容が異なるので、行ｍ４と列ｂ２で指定されるセルの内容（不合格かつ１行目まで正常に実行）を、誤り情報テーブルのセル行ｍ４と列ｂ２で指定されるセルに記録する。（Ｓ４３、Ｓ４４）
6）.他の行ｍ２，ｍ３についてもＳ４２〜Ｓ４４の処理を繰り返す。（Ｓ４５）
7）.他の列ｂ１，ｂ３，ｂ４，ｂ５についてもＳ４１〜Ｓ４５の処理を繰り返す。（Ｓ４６）
上記の処理によって生成される誤り情報テーブル７の内容を図１１に示す。
【００９５】
第１の実施形態によれば、以下のような効果が得られる。
【００９６】
すなわち、誤り情報テーブル７は、各テストケースの誤り検出能力に関する情報を持っており、テストケース集合全体や各テストケースの評価を行うことが可能である。
【００９７】
たとえば、テストケースｂ５の列には２つの空でないセルがあり、それらの誤り仕様識別子はそれぞれｍ３とｍ４である。これは、テストケースｂ５の誤り仕様ｍ３とｍ４について適用すると、与えられた仕様と違う結果が得られることを示している。このことから、テストケースｂ５は誤り仕様ｍ３とｍ４で埋め込んだ誤りを検出するのに有効であるといえる。また、空欄の少ないテストケースほど多くの誤りに対して有効であり、逆に空欄の多いテストケースは誤り検出能力が低いと言える。これによってテストケースを分類したり、誤り検出能力の高いものを抽出することで、効率的なテストの実行ができる。
【００９８】
また、誤り仕様に着目すると、ｍ２の行に属するセルは全て空である。このことから、ｂ１〜ｂ５のテストケース集合はｍ２で埋め込んだ誤りを検出するのに有効でないことが判る。このようなテストケース集合の弱点を明らかにすることで、テストケースの弱点を補う作業を軽減したり、どんな誤りが検出されずに残りうるかを推測することが可能となる。
【００９９】
第２の実施の形態
以下、本発明の第２の実施形態において、第１の実施形態と異なる点についてのみ、図面を用いて詳細に説明する。
【０１００】
第２の実施形態は、仕様の誤りのパターンと各テストケースの対応関係を用いて、テスト対象ソフトウエアにどのような誤りが潜在するかを解析する機能を提供するものである。
【０１０１】
第２の実施形態は、図１に示す本発明の実施形態に係るテスト装置１のうちの、テスト結果解析装置３により実現される。
【０１０２】
尚、第２の実施形態は、第１の実施形態と組み合わせて、即ちまずテストケース評価装置２によるテストケース評価フェーズが行われた後、さらにテスト結果解析装置３によるテスト結果解析フェーズを行うべく構成されてもよい。あるいは、予めテストの対象となるソフトウエアについての誤り情報テーブル７が得られていれば、テスト結果解析装置３によるテスト結果解析フェーズを単独で実施することが可能である。
【０１０３】
図１に示すように、テスト結果解析装置３は、テスト対象のソフトウェア１２とテストケース集合１１と誤り情報テーブル７を入力とし、テスト対象に実際にどのような誤りが存在するかについての評価を行い、その結果を誤り評価データ１４として出力する。
【０１０４】
テスト結果解析装置３は、各テストケース１１についてテスト対象ソフトウエア１２のテストを行なうテスト実行部３１と、テスト実行部３１におけるテストの結果と誤り情報テーブル７を比較・解析して実際にどんな誤りが存在するかについての評価を行なうテスト結果評価部３３とにより構成される。
【０１０５】
第２の実施形態のハードウエア構成は第１の実施形態と同様であるため説明を省略する。
【０１０６】
第２の実施形態に係るテスト結果解析装置３は上記のように構成されており、以下その処理の流れにつき説明する。ここでは第２の実施形態に係るテスト実行部３１、テスト結果評価部３３における処理の流れを順に説明する。
【０１０７】
（１）テスト実行処理
まず、テスト実行部３１の行うテスト実行処理の内容を以下に説明する。
【０１０８】
テスト結果解析処理では、まず、テスト実行部３１にテストケース集合１１とテスト対象ソフトウエア１２が入力され、実際にテストを行って実行結果を記録する処理が行われる。
【０１０９】
テスト実行部３１は、与えられたテストケースの集合１１を用いて実際にテストを行い、結果をテスト実行結果テーブル３２として記録する。尚、与えられるテストケース集合１１は、第１の実施形態の入力であるテストケース集合とすることも可能であるが、誤り情報テーブル７に従って選択的に抽出・補完されたテストケース集合とすることが、テスト実行の効率化の面から望ましい。このテスト実行部３１は実行に要する時間を計測するためのタイマを備えており、一つのテストケースに関する実行が所定のタイムアウト時間を超えた場合、その時点で実行を中止し、そこでの実行結果をテスト実行結果テーブル３２に記録する。このタイムアウト時間はユーザによって指定され、その値は正常な実行が終了するのに充分であると考えられる時間を指定するものとする。
【０１１０】
先に、以下の処理で生成されるテスト実行結果テーブル３２について説明する。
【０１１１】
図１３に、テスト実行結果テーブル３２の内容の一例を示す。テスト実行結果テーブル３２は、テストケースの識別子によって列を指定する１行のテーブルである。このテスト実行結果テーブル３２は各テスト対象ソフトウエアごとに生成される。各セルには、列に対応するテストケースを適用した際の実行結果が記録される。各実行結果は「テストケース合否」と「実行終了地点」の二つの情報から構成される。ここで、「テストケース合否」はテストケースについて実行した結果、そのテストケースについて合格と判断されたか否かを示す。「実行終了地点」はテストケースのどの部分まで正常に実行できたかを示す。
【０１１２】
次に、テスト実行部３１の処理手順を、図１４のフローチャートを用いて説明する。
【０１１３】
まず、テストケースの一つに着目し、Ｓ５１、Ｓ５２の処理を実行する（Ｓ５０）。各テストケースについてこれを繰り返す（Ｓ５３）。順序は任意で良い。
【０１１４】
着目したテストケースに従い、テスト対象ソフトウェアを動作させる（Ｓ５１）。
【０１１５】
テスト対象ソフトウェアの動作結果（テストケース合否、実行終了地点）をテスト実行結果テーブル３２に記録する（Ｓ５２）。
【０１１６】
上記の図１４の処理フローを、理解のためさらに具体例をもって以下に説明する。ここでは、図３のテストケース、図２の仕様に対応するソフトウェア、図１１の誤り情報データテーブルを入力とした場合のテスト実行部３１の処理を説明する。
【０１１７】
1）.テストケースｂ１に着目する。（Ｓ５０）
2）.テスト対象ソフトウェアをテストケースｂ１に従って動作させる（Ｓ５１）。その結果、命令シーケンスが１行目から３行目まで全て正常に実行できたとすると、テスト対象ソフトウェアはｂ１について合格と判断する。このとき、テスト実行結果テーブルのｂ１によって指定される列に結果（テストケース合否は合格、実行終了地点は命令シーケンス中の３行目）を記録する。（Ｓ５２）
3）.テストケースｂ３に着目する。（Ｓ５０）
4）.テスト対象ソフトウェアをテストケースｂ５に従って動作させる（Ｓ５１）。その結果、命令シーケンスの２行目でメッセージを待っているうちにタイムアウト終了してしまったとすると、テスト対象ソフトウェアはｂ５について不合格と判断する。このとき、テスト実行結果テーブルのｂ５によって指定される列に結果（テストケース合否は不合格、実行終了地点は命令シーケンス中の１行目）を記録する。（Ｓ５２）
5）.その他（ｂ２，ｂ４，ｂ５）のテストケースについても、Ｓ５１、Ｓ５３の処理を繰り返す（Ｓ５３）。
【０１１８】
上記の処理によって、図１３のテスト実行結果テーブルが得られたものとする。図１３中の各セルの情報は、上の行がテストケース合否、下の行が実行終了地点を示している。
【０１１９】
（２）テスト結果評価処理
テスト実行結果テーブル３２が生成されると、テスト結果評価部３３による処理に移る。テスト結果評価部３３はテスト実行結果テーブル３２と誤り情報テーブル７を入力とし、誤り評価データ１４を生成する。
【０１２０】
先に、以下の処理で生成される誤り評価データ１４について説明する。
【０１２１】
図１５に、図１１の誤り情報テーブルと図１３のテスト実行結果テーブルから得られる誤り評価データ１４の内容の一例を示す。誤り評価データ１４は、テスト実行結果テーブル３２を集計した結果に基づく、各誤りの存在する可能性についての評価結果である。誤り評価データには、「有効なテストケース」、「実行結果の一致したテストケース」、「評価結果」の３つのデータ項目があり、これらのデータが各誤り仕様ごとに記録される。「有効なテストケース」には、その誤りを検出するのに有効なテストケースの集合が記録される。「実行結果の一致したテストケース」には、有効なテストケースのうち、テスト対象の実行結果が誤り情報の結果に一致したテストケースの集合が記録される。「評価結果」は誤りの存在する可能性についての評価結果であり、Ａ，Ｂ，Ｃ，−の４段階で表現される。各段階の意味を以下に示す。
【０１２２】
1).Ａは、有効なテストケースの集合が空でなく、かつ有効なテストケースの集合と実行結果の一致したテストケースの集合が完全に一致した場合の評価を表す。当該テスト対象に仕様の誤りが存在する（仕様どおりでない）可能性が高いことを示す。
【０１２３】
2).Ｂは、有効なテストケースの集合と実行結果の一致したテストケースの集合がともに空でなく、かつそれらが一致しない場合の評価を表す。その誤りが存在する可能性はＡほとではないが、Ｃよりも高いことを示す。
【０１２４】
3).Ｃは、有効なテストケースの集合が空でなく、かつ実行結果の一致したテストケースの集合が空である場合の評価を表す。その誤りが存在しない可能性が高いことを示す。
【０１２５】
4).−は、有効なテストケースの集合が空である場合の評価を表す。判定不能であることを表す。
【０１２６】
以下に、テスト結果評価部３３の処理手順を、図１６のフローチャートを用いて説明する。
【０１２７】
まず、誤り情報テーブル７の一つの誤りの仕様に着目し、Ｓ６２からＳ６３の処理を行う。誤り情報テーブルの各誤り仕様それぞれについて、これを繰り返す（Ｓ６４）。順序は任意で良い。
【０１２８】
着目した誤り仕様の行に属するセルのうち、空でないものに着目し、Ｓ６２の処理を行う（Ｓ６２）。同じ行の空でないセルそれぞれについて、これを繰り返す（Ｓ６３）。順序は任意で良い。
【０１２９】
誤り評価データ１４をＳ６１で着目した誤り仕様に関して参照する。参照した部分の「有効なテストケース」項目に、Ｓ６２で着目したセルに対応するテストケースを追加する（Ｓ６２）。
【０１３０】
テスト実行結果テーブル３２の一つのセルに着目し、Ｓ６６〜Ｓ６８の処理を行う（Ｓ６５）。テスト実行結果テーブルの各セルについてこれを繰り返す（Ｓ６９）。順序は任意で良い。
【０１３１】
Ｓ６５で着目したセルに対応するテストケースに関して、誤り情報テーブル７を参照する。参照した列に属するセルのうち、Ｓ６５で着目したセルと内容が一致するものに着目し、Ｓ６７の処理を行う。参照した列で内容が一致する各セルについて、これを繰り返す（Ｓ６８）。
【０１３２】
誤り評価データ１４をＳ６６で着目したセルに対応する誤り仕様に関して参照する。参照した部分の「実行結果が一致したテストケース」項目に、Ｓ６５で着目したセルに対応するテストケースを追加する（Ｓ６７）。
【０１３３】
誤り評価データ１４の誤り仕様の一つに着目し、Ｓ７１の処理を行う（Ｓ７０）。誤り評価データ１４の各誤り仕様について、これを繰り返す（Ｓ７２）。順序は任意で良い。
【０１３４】
着目した誤り仕様について、以下の基準に従って評価結果を記録する（Ｓ７１）。
【０１３５】
まず、有効なテストケースの集合が空でなく、かつ有効なテストケースの集合と実行結果の一致したテストケースの集合が完全に一致した場合には、評価結果はＡとする。
【０１３６】
有効なテストケースの集合と実行結果の一致したテストケースの集合がともに空でなく、かつそれらが一致しない場合には、評価結果はＢとする。
【０１３７】
有効なテストケースの集合が空でなく、かつ実行結果の一致したテストケースの集合が空である場合には、評価結果はＣとする。
【０１３８】
有効なテストケースの集合が空である場合には、評価結果は−とする。
【０１３９】
上記の図１６の処理フローを、理解のためさらに具体例をもって以下に説明する。ここでは、図１１の誤り情報テーブルと図１３のテスト実行結果テーブルを入力とした場合のテスト結果評価部３３の処理を説明する。
【０１４０】
1）.誤り情報テーブルの誤り仕様ｍ１に着目する。（Ｓ６０）
2）.誤り情報テーブルのセルのうち、行ｍ１と列ｂ４で指定されるセルに着目する。（Ｓ６１）
3）.誤り評価データをｍ１に関して参照する。参照した部分の「有効なテストケース」項目に、テストケースｂ４を追加する。（Ｓ６２）
4）.誤り情報テーブルの他の誤り仕様（ｍ２〜ｍ４）についても、Ｓ６１、Ｓ６２の処理を繰り返す。（Ｓ６４）
5）.テスト実行結果テーブルのｂ４に対応するセルに着目する。（Ｓ６５）
6）.テストケースｂ４に関して、誤り情報テーブルを参照する。誤り情報テーブルの列ｂ４に属するセルのうち、行ｍ１と列ｂ４で指定されるセルに着目する。（Ｓ６６）
7）.誤り評価データを誤り仕様ｍ１に関して参照する。参照した部分の「実行結果が一致したテストケース」項目に、テストケースｂ４を追加する。（Ｓ６７）
8）.テスト実行結果テーブルの他のセル（ｂ２〜ｂ５に対応するセル）についても、Ｓ６６〜Ｓ６８の処理を繰り返す。（Ｓ６９）
9）.誤り評価データの誤り仕様ｍ１に着目する。（Ｓ７０）
10）.誤り仕様ｍ１について、有効なテストケースの集合が空でなく、かつ有効なテストケースの集合と実行結果の一致したテストケースの集合が完全に一致するので、誤り仕様ｍ１の評価結果はＡとなる。（Ｓ７１）
11）.誤り評価データの他の誤り仕様（ｍ２〜ｍ４）についても、Ｓ７１の処理を実行する（Ｓ７２）。
【０１４１】
上記の処理により、図１５に示す内容の誤り評価データが得られる。
【０１４２】
図１５に示す評価結果を参照することで、ｍ１において埋め込んだ誤り（ノードＮ９処理抜け）が存在する可能性が高いこと、ｍ３の誤り（ノードＮ２受信遷移先固定）が存在する可能性は低いこと、ｍ２の誤り（ノードＮ１０処理抜け）については有効なテストケースがなく判定不能であること等を容易に把握することができる。
【０１４３】
第２の実施形態によれば、以下のような効果が得られる。
【０１４４】
すなわち、誤り評価データを参照することにより、ユーザーが不合格のテスト結果からソフトウエア処理上のどこで仕様と一致しないのかを示す誤り位置を探るデバッグの際に、当該テスト対象ソフトウエアに存在する可能性の高い誤りから優先的に探すことができる。例えば図１５の誤り評価データの場合では、存在する可能性の高いｍ１の誤りから探し、逆に可能性の低いｍ３は後回しにする、といったデバッグ手順をとることができ、デバッグ効率が大幅に向上する。
【０１４５】
また、テスト結果の誤りを原因別に分類することができる。例えば図１３では、ｂ４とｂ５の２つのテストケースが不合格となっているが、図１３のテスト実行結果テーブルだけを参照したのではこれらが同一の原因によるものか、それぞれ違う原因によるものかの判定ができない。ここで図１５の誤り評価データを参照すると、ｂ４とｍ１の誤りを原因としている可能性が高く、一方ｂ５はｍ３またはｍ４の誤りを原因としている可能性が高いことが容易に把握できる。従って、それぞれのテストケースの実行による誤りが、個別に原因を持っている可能性が高いと判断することができる。
【０１４６】
【発明の効果】
以上説明したように、本発明によれば、以下に記載されるような効果を奏する。
【０１４７】
即ち、本発明においては、被テスト対象物に想定される誤りに応じた各テストケースごとの誤り検出能力を示すデータを出力する機能を提供する。この誤り検出データをテスト実行に先だって各テストケースに適用することによって、与えられたテストケース集合の中から誤り検出能力の高いテストケースを選択的に抽出したり、他方では与えられたテストケース集合では検出しにくい誤りを事前に認識・テストケースを補完することができる。従って、被テスト対象に潜在する誤りを検出するのに必要十分なテストケースにより、テストを効率よく、迅速に行うことが可能となる。
【０１４８】
また、誤り検出データをテスト実行後のテスト実行結果に適用することによって、被テスト対象物に実際に存在する可能性の高い誤り（誤りの原因、パターン）の箇所や種別を容易に知ることができ、これらの誤りを優先的に探してデバッグすることができる。また、不合格となったテスト結果を原因別に分類することなどもできる。従って、テスト実行結果から誤りを特定する解析・デバッグ作業を効率よく、迅速に行うことが可能となる。
【０１４９】
このように、本発明を用いれば、テストの精度を維持しつつテストにおけるコスト削減が実現され、ひいてはソフトウエア開発期間の短縮および精度の向上がもたらされる。
【図面の簡単な説明】
【図１】本発明の実施形態に係るテスト装置、テストケース評価装置、およびテスト結果解析装置の機能構成を示すブロック図である。
【図２】本発明の実施形態におけるテストの対象となるソフトウエアの仕様の一例を示す図である。
【図３】本発明の実施形態におけるテストケースの集合の一例を示す図である。
【図４】本発明の第１の実施形態に係る誤り仕様生成部の処理アルゴリズムを示すフローチャートである。
【図５】本発明の実施形態における誤り仕様の一例を示す図である。
【図６】本発明の実施の形態における誤り仕様の例を示す図である。
【図７】本発明の実施形態における誤り仕様の一例を示す図である。
【図８】本発明の実施の形態における誤り仕様の一例を示す図である。
【図９】本発明の第１の実施形態における仕様／誤り仕様実行結果テーブルの一例を示す図である。
【図１０】本発明の第１の実施形態に係る仕様実行部の処理アルゴリズムを示すフローチャートである。
【図１１】本発明の実施形態における誤り情報テーブルの一例を示す図である。
【図１２】本発明の第１の実施形態に係る誤り情報抽出部の処理アルゴリズムを示すフローチャートである。
【図１３】本発明の第２の実施形態におけるテスト結果実行テーブルの一例を示す図である。
【図１４】本発明の第２の実施形態に係るテスト実行部の処理アルゴリズムを示すフローチャートである。
【図１５】本発明の第２の実施形態における誤り評価データの一例を示す図である。
【図１６】本発明の第２の実施形態に係るテスト結果評価部の処理アルゴリズムを示すフローチャートである。
【符号の説明】
１  テスト装置
２  テストケース評価部
３  テスト結果解析部
５  仕様
６  テストケース集合
７  誤り情報テーブル
１１  評価後テストケース集合
１２  テスト対象ソフトウエア
１４  誤り評価データ
２０  仕様変更データベース
２１  誤り仕様生成部
２２  誤り仕様の集合
２３  仕様実行部
２４  仕様／誤り仕様実行結果テーブル
２５  誤り情報抽出部
３１  テスト実行部
３２  テスト実行結果テーブル
３３  テスト結果評価部
【図１】
0004253056.tif 000002
【図２】
0004253056.tif 000003
【図３】
0004253056.tif 000004
【図４】
0004253056.tif 000005
【図５】
0004253056.tif 000006
【図６】
0004253056.tif 000007
【図７】
0004253056.tif 000008
【図８】
0004253056.tif 000009
【図９】
0004253056.tif 000010
【図１０】
0004253056.tif 000011
【図１１】
0004253056.tif 000012
【図１２】
0004253056.tif 000013
【図１３】
0004253056.tif 000014
【図１４】
0004253056.tif 000015
【図１５】
0004253056.tif 000016
【図１６】
0004253056.tif 000017