(57)【要約】【課題】従来のコードカバレッジ（例えば、ＭＣ／ＤＣ）に替わる新たなコードカバレッジを用いて、コード間の一致と不一致とを明確に区別することができる一致性検査方法、一致性検査装置およびプログラムを提供することを課題とする。【解決手段】本発明は、テストデータを、記憶部に格納し、記憶部に格納されたテストデータを、新・旧コード別に実行し、実行されたコード中に記述された演算子のカバレッジ率を算出するための演算子カバレッジ情報を、新・旧コード別に測定し、実行されたコード中に記述された定数のカバレッジ率を算出するための定数パラメータカバレッジ情報を、新・旧コード別で測定する。【選択図】        図３
2009163636.tif 000002
【特許請求の範囲】
【請求項１】
コード変更前後の旧コードおよび新コードのコードカバレッジを評価する、記憶部と制御部とを少なくとも備えた一致性検査装置において実行される一致性検査方法であって、
上記制御部において実行される、
テストデータを、上記記憶部に格納するテストデータ格納ステップと、
上記テストデータ格納ステップにて上記記憶部に格納された上記テストデータを、新・旧コード別に実行する実行ステップと、
上記実行ステップにて実行された、上記コード中に記述された演算子のカバレッジ率を算出するための演算子カバレッジ情報を、新・旧コード別に測定する演算子カバレッジ測定ステップと、
上記実行ステップにて実行された、上記コード中に記述された定数のカバレッジ率を算出するための定数パラメータカバレッジ情報を、新・旧コード別で測定する定数パラメータカバレッジ測定ステップと、
を含むことを特徴とする、一致性検査方法。
【請求項２】
請求項１に記載の一致性検査方法において、
上記制御部において実行される、
上記演算子カバレッジ測定ステップにて測定された上記演算子カバレッジ情報と、上記定数パラメータカバレッジ測定ステップにて測定された上記定数パラメータカバレッジ情報とに基づいて、新・旧コード別に上記テストデータの精度を評価付けし上記記憶部に格納するテスト評価ステップ
を更に含むことを特徴とする、一致性検査方法。
【請求項３】
請求項２に記載の一致性検査方法において、
上記テスト評価ステップは、
上記新たに精度を評価付けされたテストデータと、既に上記記憶部に格納された過去のテストデータとを比較し、両テストデータのうち精度が高い方のテストデータを新・旧コード別に上記記憶部に格納することを特徴とする、一致性検査方法。
【請求項４】
請求項１に記載の一致性検査方法において、
上記一致性検査装置は、
表示部
を更に備え、
上記制御部において実行される、
上記実行ステップにて実行された上記旧コードおよび上記新コードの出力差、上記演算子カバレッジ測定ステップにて測定された上記演算子カバレッジ情報、および／または、上記定数パラメータカバレッジ測定ステップにて測定された上記定数パラメータカバレッジ情報、を上記表示部に表示する表示ステップ
を更に含むことを特徴とする、一致性検査方法。
【請求項５】
コード変更前後の旧コードおよび新コードのコードカバレッジを評価する、記憶部と制御部とを少なくとも備えた一致性検査装置であって、
上記記憶部は、
テストデータを記憶するテストデータ記憶手段
を備え、
上記制御部は、
上記テストデータ格納手段により上記記憶部に格納された上記テストデータを、新・旧コード別に実行する実行手段と、
上記実行手段により実行された、上記コード中に記述された演算子のカバレッジ率を算出するための演算子カバレッジ情報を、新・旧コード別に測定する演算子カバレッジ測定手段と、
上記実行手段により実行された、上記コード中に記述された定数のカバレッジ率を算出するための定数パラメータカバレッジ情報を、新・旧コード別で測定する定数パラメータカバレッジ測定手段と、
を備えたことを特徴とする、一致性検査装置。
【請求項６】
請求項５に記載の一致性検査装置において、
上記制御部は、
上記演算子カバレッジ測定手段により測定された上記演算子カバレッジ情報と、上記定数パラメータカバレッジ測定手段により測定された上記定数パラメータカバレッジ情報とに基づいて、新・旧コード別に上記テストデータの精度を評価付けし上記記憶部に格納するテスト評価手段
を更に備えたことを特徴とする、一致性検査装置。
【請求項７】
請求項６に記載の一致性検査装置において、
上記テスト評価手段は、
上記新たに精度を評価付けされたテストデータと、既に上記記憶部に格納された過去のテストデータとを比較し、両テストデータのうち精度が高い方のテストデータを新・旧コード別に上記記憶部に格納することを特徴とする、一致性検査装置。
【請求項８】
請求項５に記載の一致性検査装置において、
上記一致性検査装置は、
表示部
を更に備え、
上記制御部は、
上記実行手段により実行された上記旧コードおよび上記新コードの出力差、上記演算子カバレッジ測定手段により測定された上記演算子カバレッジ情報、および／または、上記定数パラメータカバレッジ測定手段により測定された上記定数パラメータカバレッジ情報、を上記表示部に表示する表示手段
を更に備えたことを特徴とする、一致性検査装置。
【請求項９】
コード変更前後の旧コードおよび新コードのコードカバレッジを評価する、記憶部と制御部とを少なくとも備えた一致性検査装置に実行させるためのプログラムであって、
上記制御部において実行される、
テストデータを、上記記憶部に格納するテストデータ格納ステップと、
上記テストデータ格納ステップにて上記記憶部に格納された上記テストデータを、新・旧コード別に実行する実行ステップと、
上記実行ステップにて実行された、上記コード中に記述された演算子のカバレッジ率を算出するための演算子カバレッジ情報を、新・旧コード別に測定する演算子カバレッジ測定ステップと、
上記実行ステップにて実行された、上記コード中に記述された定数のカバレッジ率を算出するための定数パラメータカバレッジ情報を、新・旧コード別で測定する定数パラメータカバレッジ測定ステップと、
を実行させるためのプログラム。
【請求項１０】
複数のコードによる出力値の一致性を検査しながらコードカバレッジを評価する、記憶部と制御部とを少なくとも備えた一致性検査装置において実行される一致性検査方法であって、
上記制御部において実行される、
複数のテストデータを上記記憶部に格納するテストデータ格納ステップと、
上記テストデータ格納ステップにて上記記憶部に格納された上記テストデータを入力値として、上記複数のコードに実行させる実行ステップと、
上記実行ステップにて所定の複数回実行された、上記コード中の演算子のカバレッジ率を算出するための演算子カバレッジ情報を測定する演算子カバレッジ測定ステップと、
上記実行ステップにて実行された上記コードにより出力された上記所定の複数の上記出力値により、上記演算子に記述された定数が一意に推定可能である定数のカバレッジ率を算出するための定数パラメータカバレッジ情報を測定する定数パラメータカバレッジ測定ステップと、
を含むことを特徴とする一致性検査方法。
【請求項１１】
請求項１０に記載の一致性検査方法において、
上記制御部において実行される、
上記演算子カバレッジ測定ステップにて測定された上記演算子カバレッジ情報、または、上記定数パラメータカバレッジ測定ステップにて測定された上記定数パラメータカバレッジ情報に基づいて、上記カバレッジ率を上昇させる上記テストデータを上記記憶部に格納するテスト評価ステップ、
を更に含むことを特徴とする一致性検査方法。
【請求項１２】
請求項１１に記載の一致性検査方法において、
上記演算子カバレッジ測定ステップは、
上記実行ステップにて実行された上記演算子の上記コード中の行情報を、上記演算子カバレッジ情報に格納し、
上記定数パラメータカバレッジ測定ステップは、
上記実行ステップにて上記コードにより出力された上記出力値により推定した上記定数の上記コード中の行情報を、上記定数パラメータカバレッジ情報に格納し、
上記テスト評価ステップは、
上記記憶部に格納された上記テストデータに対応する上記行情報と、上記実行ステップにて新たに実行された上記テストデータに対応する上記行情報と、を比較することにより、当該テストデータが上記カバレッジ率を上昇させるか否か判定し、上昇させると判定した場合に当該テストデータを当該行情報に対応付けて上記記憶部に格納すること、
を特徴とする一致性検査方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一致性検査方法、一致性検査装置およびプログラムに関し、特に、コード変更前後の旧コードおよび新コードのコードカバレッジを評価する一致性検査方法、一致性検査装置およびプログラムに関する。
【背景技術】
【０００２】
従来から、ソフトウェアの分野では、デバッグテストにかなりの時間を費やされていたため、様々なデバッグテスト技術が開発されている。
【０００３】
例えば、特許文献１の技術は、コードカバレッジ情報をコードカバレッジデータベースに格納し、このコードカバレッジデータベースを利用して、非実行コード記述を削除またはコメントアウトするコード最適化手段で設計データおよび検証ベクタの両方のコード最適化を行う集積回路装置の設計方法および設計装置である。
【０００４】
また、特許文献２の技術は、機能、容量共に余裕のあるホストの中に第１プログラム命令のブレークポイントに対応するパッチコードを用意し、実行時にブレークポイントを識別するパッチコードと置き換えて実行し、予想される結果と比較してソフトウェアの良否を判断する組込型処理装置システム用コードカバレッジ測定方法および装置である。
【０００５】
また、特許文献３の技術は、ソフトウェア機能をシミュレートするためのシミュレーションモデルと制御ユニットの使用を有する、制御ユニットのためのソフトウェア機能を検証する方法とシステムである。
【０００６】
また、特許文献４の技術は、被検査ＥＣＵに擬似信号を入力しその出力を評価することによって良否判定を行う車載ＥＣＵの検査装置であり、検査装置のオプションユニット交換によってＥＣＵ種類に対応したＥＣＵ検査を行うものである。
【０００７】
また、特許文献５の技術は、ソースコードの全行数に対するテスト通過行数の割合を算出して重み付けカバレッジ情報を生成する手段を備えるカバレッジ取得システムである。
【０００８】
また、非特許文献１の技術は、ＭＣ／ＤＣ（Ｍｏｄｉｆｉｅｄ  Ｃｏｎｄｉｔｉｏｎ／Ｄｅｃｉｓｉｏｎ  Ｃｏｖｅｒａｇｅ）という業界標準のカバレッジ測定基準を用いてソースコード中のテストされていない箇所を検出するものである。
【０００９】
また、特許文献６の技術は、ランダムに作成されたテストデータを使ってシステムＬＳＩを検査する際、上記ＭＣ／ＤＣに基づいて、カバレッジチェッカーを用いることでランダムデータが検査項目をどれだけ満たすかを確認し、テスト完全性の指標としてカバレッジを使用するシステム検証装置および検証方法である。
【００１０】
このように、ソフトウェアの構造を変更した場合は、変更前後の機能（入出力の関係）が一致しているかを検査する必要がある。代表的には、上記特許文献６のように、用意されたテストデータを、変更前と変更後のコードに対してそれぞれ実行しその結果を比較する手法があり、テストの充分性（精度）はコードカバレッジ情報（カバレッジ率）から判断している（図１を参照）。
【００１１】
ここで、図１は、上記特許文献６に示すような、従来のコードカバレッジ（例えば、ＭＣ／ＤＣ）に基づいた一致性検査手法の一例を示すデータフロー図である。図１において、テストデータは新・旧コード別に実行され、その結果、コードの出力差が「０」となるので「新・旧コードの出力は一致する」と判断されている。また、このテストの精度を評価するため、上記ＭＣ／ＤＣを用いてカバレッジ測定が新・旧コード別に行われ、その結果、各コードのカバレッジ率が「１００％」となるので「テストの精度が高い」と判断されている。
【００１２】
【特許文献１】特開２００４−３５５１３０号公報
【特許文献２】特開２００７−００４７９３号公報
【特許文献３】特開２００５−５０４３７７号公報
【特許文献４】特開昭６３−１６８８３７号公報
【特許文献５】特開２００６−１５５０９２０号公報
【特許文献６】特開２００４−０８６８３８号公報
【非特許文献１】Ｋｅｌｌｙ  Ｊ．Ｈａｙｈｕｒｓｔら、“Ａ  Ｐｒａｔｉｃａｌ  Ｔｕｒｏｔｉａｌ  Ｏｎ  Ｍｏｄｉｆｉｅｄ  Ｃｏｎｄｉｔｉｏｎ／Ｄｅｃｉｓｉｏｎ  Ｃｏｖｅｒａｇｅ”、ＮＡＳＡ／ＴＭ−２００１−２１０８７６、２００１年５月
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、従来のコードカバレッジ（例えば、非特許文献１および特許文献６に記載のＭＣ／ＤＣなど）では、コード変更（新コードと旧コードとの差）が検出できない場合があり、より厳しいコードカバレッジを定義する必要があった。
【００１４】
ここで、図２に参照し、従来のコードカバレッジの問題を説明する。図２は、従来のコードカバレッジ（例えば、ＭＣ／ＤＣ：Ｍｏｄｉｆｉｅｄ  Ｃｏｎｄｉｔｉｏｎ／Ｄｅｃｉｓｉｏｎ  Ｃｏｖｅｒａｇｅ）と、このＭＣ／ＤＣを１００％満たすテストデータの一例を示す図である。ここで、「ＭＣ／ＤＣ」とは、上述のように、ソースコード中のテストされていない箇所を検出するために用いられる業界標準のカバレッジ測定基準であり、ソフトウェアのデバッグテストに用いられる。
【００１５】
図２において、従来のコードカバレッジ（例えば、ＭＣ／ＤＣ）では、図２の変更前の（ａ）と変更後の（ｂ）のコードは機能が全く違うが、出力値（Ｏ１とＯ２）が一致しているため、これらのコードが１００％一致していると判断している。すなわち、ＭＣ／ＤＣをコードカバレッジテストに用いる場合は、テストデータによっては、コード中の機能に違いがあるのにもかかわらず出力が一致することがあり、不一致を一致と判断する危険性があるという問題点を有する。
【００１６】
本発明は、上記に鑑みてなされたもので、従来のコードカバレッジ（例えば、ＭＣ／ＤＣ）に替わる新たなコードカバレッジを用いて、コード間の一致と不一致とを明確に区別することができる一致性検査方法、一致性検査装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１７】
このような目的を達成するため、請求項１に記載の一致性検査方法は、コード変更前後の旧コードおよび新コードのコードカバレッジを評価する、記憶部と制御部とを少なくとも備えた一致性検査装置において実行される一致性検査方法であって、上記制御部において実行される、テストデータを、上記記憶部に格納するテストデータ格納ステップと、上記テストデータ格納ステップにて上記記憶部に格納された上記テストデータを、新・旧コード別に実行する実行ステップと、上記実行ステップにて実行された、上記コード中に記述された演算子のカバレッジ率を算出するための演算子カバレッジ情報を、新・旧コード別に測定する演算子カバレッジ測定ステップと、上記実行ステップにて実行された、上記コード中に記述された定数のカバレッジ率を算出するための定数パラメータカバレッジ情報を、新・旧コード別で測定する定数パラメータカバレッジ測定ステップと、を含むことを特徴とする。
【００１８】
また、請求項２に記載の一致性検査方法は、請求項１に記載の一致性検査方法において、上記制御部において実行される、上記演算子カバレッジ測定ステップにて測定された上記演算子カバレッジ情報と、上記定数パラメータカバレッジ測定ステップにて測定された上記定数パラメータカバレッジ情報とに基づいて、新・旧コード別に上記テストデータの精度を評価付けし上記記憶部に格納するテスト評価ステップを更に含むことを特徴とする。
【００１９】
また、請求項３に記載の一致性検査方法は、請求項２に記載の一致性検査方法において、上記テスト評価ステップは、上記新たに精度を評価付けされたテストデータと、既に上記記憶部に格納された過去のテストデータとを比較し、両テストデータのうち精度が高い方のテストデータを新・旧コード別に上記記憶部に格納することを特徴とする。
【００２０】
また、請求項４に記載の一致性検査方法は、請求項１に記載の一致性検査方法において、上記一致性検査装置は、表示部を更に備え、上記制御部において実行される、上記実行ステップにて実行された上記旧コードおよび上記新コードの出力差、上記演算子カバレッジ測定ステップにて測定された上記演算子カバレッジ情報、および／または、上記定数パラメータカバレッジ測定ステップにて測定された上記定数パラメータカバレッジ情報、を上記表示部に表示する表示ステップを更に含むことを特徴とする。
【００２１】
また、請求項５に記載の一致性検査装置は、コード変更前後の旧コードおよび新コードのコードカバレッジを評価する、記憶部と制御部とを少なくとも備えた一致性検査装置であって、上記記憶部は、テストデータを記憶するテストデータ記憶手段を備え、上記制御部は、上記テストデータ格納手段により上記記憶部に格納された上記テストデータを、新・旧コード別に実行する実行手段と、上記実行手段により実行された、上記コード中に記述された演算子のカバレッジ率を算出するための演算子カバレッジ情報を、新・旧コード別に測定する演算子カバレッジ測定手段と、上記実行手段により実行された、上記コード中に記述された定数のカバレッジ率を算出するための定数パラメータカバレッジ情報を、新・旧コード別で測定する定数パラメータカバレッジ測定手段と、を備えたことを特徴とする。
【００２２】
また、請求項６に記載の一致性検査装置は、請求項５に記載の一致性検査装置において、上記制御部は、上記演算子カバレッジ測定手段により測定された上記演算子カバレッジ情報と、上記定数パラメータカバレッジ測定手段により測定された上記定数パラメータカバレッジ情報とに基づいて、新・旧コード別に上記テストデータの精度を評価付けし上記記憶部に格納するテスト評価手段を更に備えたことを特徴とする。
【００２３】
また、請求項７に記載の一致性検査装置は、請求項６に記載の一致性検査装置において、上記テスト評価手段は、上記新たに精度を評価付けされたテストデータと、既に上記記憶部に格納された過去のテストデータとを比較し、両テストデータのうち精度が高い方のテストデータを新・旧コード別に上記記憶部に格納することを特徴とする。
【００２４】
また、請求項８に記載の一致性検査装置は、請求項５に記載の一致性検査装置において、上記一致性検査装置は、表示部を更に備え、上記制御部は、上記実行手段により実行された上記旧コードおよび上記新コードの出力差、上記演算子カバレッジ測定手段により測定された上記演算子カバレッジ情報、および／または、上記定数パラメータカバレッジ測定手段により測定された上記定数パラメータカバレッジ情報、を上記表示部に表示する表示手段を更に備えたことを特徴とする。
【００２５】
また、請求項９に記載のプログラムは、コード変更前後の旧コードおよび新コードのコードカバレッジを評価する、記憶部と制御部とを少なくとも備えた一致性検査装置に実行させるためのプログラムであって、上記制御部において実行される、テストデータを、上記記憶部に格納するテストデータ格納ステップと、上記テストデータ格納ステップにて上記記憶部に格納された上記テストデータを、新・旧コード別に実行する実行ステップと、上記実行ステップにて実行された、上記コード中に記述された演算子のカバレッジ率を算出するための演算子カバレッジ情報を、新・旧コード別に測定する演算子カバレッジ測定ステップと、上記実行ステップにて実行された、上記コード中に記述された定数のカバレッジ率を算出するための定数パラメータカバレッジ情報を、新・旧コード別で測定する定数パラメータカバレッジ測定ステップと、を実行させることを特徴とする。
【００２６】
また、請求項１０に記載の一致性検査方法は、複数のコードによる出力値の一致性を検査しながらコードカバレッジを評価する、記憶部と制御部とを少なくとも備えた一致性検査装置において実行される一致性検査方法であって、上記制御部において実行される、複数のテストデータを上記記憶部に格納するテストデータ格納ステップと、上記テストデータ格納ステップにて上記記憶部に格納された上記テストデータを入力値として、上記複数のコードに実行させる実行ステップと、上記実行ステップにて所定の複数回実行された、上記コード中の演算子のカバレッジ率を、演算子カバレッジ情報として測定する演算子カバレッジ測定ステップと、上記実行ステップにて実行された上記コードにより出力された上記所定の複数の上記出力値により、上記演算子に記述された定数が一意に推定可能である定数のカバレッジ率を、定数パラメータカバレッジ情報として測定する定数パラメータカバレッジ測定ステップと、を含むことを特徴とする。
【００２７】
また、請求項１１に記載の一致性検査方法は、請求項１０に記載の一致性検査方法において、上記制御部において実行される、上記演算子カバレッジ測定ステップにて測定された上記演算子カバレッジ情報、または、上記定数パラメータカバレッジ測定ステップにて測定された上記定数パラメータカバレッジ情報に基づいて、上記カバレッジ率を上昇させる上記テストデータを上記記憶部に格納するテスト評価ステップ、を更に含むことを特徴とする。
【００２８】
また、請求項１２に記載の一致性検査方法は、請求項１１に記載の一致性検査方法において、上記演算子カバレッジ測定ステップは、上記実行ステップにて実行された上記演算子の上記コード中の行情報を、上記演算子カバレッジ情報に格納し、上記定数パラメータカバレッジ測定ステップは、上記実行ステップにて上記コードにより出力された上記出力値により推定した上記定数の上記コード中の行情報を、上記定数パラメータカバレッジ情報に格納し、上記テスト評価ステップは、上記記憶部に格納された上記テストデータに対応する上記行情報と、上記実行ステップにて新たに実行された上記テストデータに対応する上記行情報と、を比較することにより、当該テストデータが上記カバレッジ率を上昇させるか否か判定し、上昇させると判定した場合に当該テストデータを当該行情報に対応付けて上記記憶部に格納すること、を特徴とする。
【発明の効果】
【００２９】
この発明によれば、テストデータを、記憶部に格納し、記憶部に格納されたテストデータを、新・旧コード別に実行し、実行されたコード中に記述された演算子のカバレッジ率を算出するための演算子カバレッジ情報を、新・旧コード別に測定し、実行されたコード中に記述された定数のカバレッジ率を算出するための定数パラメータカバレッジ情報を、新・旧コード別で測定するので、「演算子カバレッジ情報」と「定数パラメータカバレッジ情報」に基づいて、図１を参照して上述した、従来のコードカバレッジ（例えば、ＭＣ／ＤＣ）で１００％を満たすテストデータでは、区別できなかったコード間の差を、より正確に検出できるようになるという効果を奏する。
【００３０】
また、この発明によれば、測定された演算子カバレッジ情報と、定数パラメータカバレッジ情報とに基づいて、新・旧コード別にテストデータの精度を評価付けし記憶部に格納するので、例えば、同じ演算子および定数に対して複数のテストデータが使われている場合、冗長なテストを除去して、簡潔な新・旧コード向けテストデータベースを作成することができる。
【００３１】
また、この発明によれば、新たに精度を評価付けされたテストデータと、既に記憶部に格納された過去のテストデータとを比較し、両テストデータのうち精度が高い方のテストデータを新・旧コード別に記憶部に格納するので、演算子カバレッジ率および定数パラメータカバレッジ率が１００％になった場合は、次の新・旧コードのテストの際には、この１００％になったテストデータを用いてデバッグテストを行うことできるので、精度の高いテストデータを得た後は、演算子カバレッジ情報と定数パラメータカバレッジ情報の測定を省略することができ、全体のデバッグテストを簡略化できるという効果を奏する。
【００３２】
また、この発明によれば、一致性検査装置は、表示部を更に備え、実行された旧コードおよび新コードの出力差、測定された演算子カバレッジ情報、および／または、定数パラメータカバレッジ情報、を表示部に表示するので、新・旧コードの演算子・定数に対するカバレッジ率を容易に視覚的に比較することができるという効果を奏する。
【発明を実施するための最良の形態】
【００３３】
以下に、本発明にかかる一致性検査装置および一致性検査方法の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００３４】
［本発明の概要］
以下、本発明の概要について説明し、その後、本発明の構成および処理等について詳細に説明する。図３は、本発明における一致性検査装置の基本動作処理の一例を示すフローチャートである。
【００３５】
本発明は、概略的に、以下の基本的特徴を有する。すなわち、本発明は、まず、テストデータを、記憶部に格納する。
【００３６】
つぎに、本発明は、記憶部に格納されたテストデータを、新・旧コード別に実行する（ＳＡ−１）。
【００３７】
そして、本発明は、実行されたコード中に記述された演算子のカバレッジ率を算出するための演算子カバレッジ情報を、新・旧コード別に測定する（ＳＡ−２）。ここで、「演算子カバレッジ」（ＯＣ：Ｏｐｅｒａｔｏｒ  Ｃｏｖｅｒａｇｅ）とは、カバレッジテストの新たな測定基準であり、演算子のカバレッジ率の測定基準として、各入力が独立的に出力へ影響を与えることを確認するために用いられる。そして、コード内の入力の数や演算の形式が既知であるため、演算子により定義される。
【００３８】
そして、本発明は、実行されたコード中に記述された定数のカバレッジ率を算出するための定数パラメータカバレッジ情報を、新・旧コード別で測定する（ＳＡ−３）。ここで、「定数パラメータカバレッジ」（ＣＰＣ：Ｃｏｎｓｔａｎｔ  Ｐａｒａｍｅｔｅｒ  Ｃｏｖｅｒａｇｅ）とは、カバレッジテストの新たな測定基準であり、定数のカバレッジ率の測定基準として、テストデータがシステムの定数パラメータをどれだけ正確に推定できるかを示す判断基準である。
【００３９】
そして、本発明は、測定された演算子カバレッジ情報と、定数パラメータカバレッジ情報とに基づいて、新・旧コード別にテストデータの精度を評価付けし記憶部に格納する（ＳＡ−４）。
【００４０】
ここで、本発明は、新たに精度を評価付けされたテストデータと、既に記憶部に格納された過去のテストデータとを比較し、両テストデータのうち精度が高い方のテストデータを新・旧コード別に記憶部に格納するようにしてもよい。
【００４１】
そして、本発明は、実行された旧コードおよび新コードの出力差、測定された演算子カバレッジ情報、および／または、定数パラメータカバレッジ情報、を表示部に表示する（ＳＡ−５）。
【００４２】
以上で、本発明の概要の説明を終える。
【００４３】
［一致性検査装置１００の構成］
次に、コード変更前後の旧コードおよび新コードのコードカバレッジを評価する、本一致性検査装置１００の構成について説明する。図４は、本発明が適用される、演算子カバレッジおよび定数パラメータカバレッジに基づいた一致性検査装置の構成の一例を示すブロック図であり、該構成のうち本発明に関係する部分のみを概念的に示している。本一致性検査装置１００は、概略的に、記憶部１０６と制御部１０２と表示部１１４とを少なくとも備えて構成されている。
【００４４】
図４において一致性検査装置１００は、概略的に、一致性検査装置１００の全体を統括的に制御するＣＰＵ等の制御部１０２、通信回線等に接続されるルータ等の通信装置（図示せず）に接続される通信制御インターフェース部（図示せず）、入力部（図示せず）や表示部１１４に接続される入出力制御インターフェース部（図示せず）、および、各種のデータベースやテーブルなどを格納する記憶部１０６を備えて構成されており、これら各部は任意の通信路を介して通信可能に接続されている。更に、この一致性検査装置１００は、ルータ等の通信装置および専用線等の有線または無線の通信回線を介して、ネットワークに通信可能に接続されていてもよい。
【００４５】
記憶部１０６に格納される各種のデータベースやテーブル（テストデータＤＢ１０６ａ〜新コード向けテストデータＤＢ１０６ｃ）は、固定ディスク装置等のストレージ手段であり、各種処理に用いる各種のプログラムやテーブルやファイルやデータベースやウェブページ等を格納する。
【００４６】
これら記憶部１０６の各構成要素のうち、テストデータＤＢ１０６ａは、テストデータを記憶するテストデータ記憶手段である。すなわち、テストデータＤＢ１０６ａは、新・旧コードを実行して、一致性を検査する際に入力されるテストデータを格納するデータベースである。
【００４７】
また、旧コード向けテストデータＤＢ１０６ｂは、測定された演算子カバレッジ情報と定数パラメータカバレッジ情報とに基づいて精度を評価付けされた、旧コード向けテストデータを記憶する旧コード向けテストデータ記憶手段である。すなわち、旧コード向けテストデータＤＢ１０６ｂは、テスト評価部１０２ｅ−１から、新しいカバレッジ測定結果を得られた場合に、テストデータを対応付けて格納するデータベースであり、このデータベースは、テストデータとそのテストデータがコード中のどの演算子または定数のカバレッジに貢献したかを表す情報（演算子カバレッジ（ＯＣ）情報・定数パラメータカバレッジ（ＣＰＣ）情報）を当該テストデータに対応付けて記憶する。
【００４８】
また、新コード向けテストデータＤＢ１０６ｃは、測定された演算子カバレッジ情報と定数パラメータカバレッジ情報とに基づいて精度を評価付けされた、新コード向けテストデータを記憶する新コード向けテストデータ記憶手段である。すなわち、新コード向けテストデータＤＢ１０６ｃは、テスト評価部１０２ｅ−２から、新しいカバレッジ測定結果を得られた場合に、テストデータを対応付けて格納するデータベースであり、このデータベースは、テストデータとそのテストデータがコード中のどの演算子または定数のカバレッジに貢献したかを表す情報（演算子カバレッジ（ＯＣ）情報・定数パラメータカバレッジ（ＣＰＣ）情報等）を当該テストデータに対応付けて記憶する。
【００４９】
また、通信制御インターフェース部は、一致性検査装置１００とネットワーク（またはルータ等の通信装置）との間における通信制御を行う。すなわち、通信制御インターフェース部は、他の端末と通信回線を介してデータを通信する機能を有する。
【００５０】
また、入出力制御インターフェース部は、入力部や表示部１１４の制御を行う。ここで、表示部１１４としては、モニタ（家庭用テレビを含む）の他、スピーカを用いることができる。本発明において、表示部１１４は、実行結果として、新・旧コードの出力差を表すログと、測定部１０２ｂからのカバレッジ測定値（演算子カバレッジ測定情報、および、定数パラメータカバレッジ情報）とを表示する表示手段である。また、入力部としては、キーボード、マウス、およびマイク等を用いることができる。
【００５１】
また、図４において、制御部１０２は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）等の制御プログラム、各種の処理手順等を規定したプログラム、および所要データを格納するための内部メモリを有し、これらのプログラム等により、種々の処理を実行するための情報処理を行う。制御部１０２は、機能概念的に、実行部１０２ａ、測定部１０２ｂ、および、テスト評価部１０２ｅを備えて構成されている。
【００５２】
このうち、実行部１０２ａは、テストデータＤＢ１０６ａに格納されたテストデータを入力として、新・旧コード別に実行する実行手段である。すなわち、実行部１０２ａは、比較対象の新・旧コードをそれぞれ実行する実行手段である。ここで、実行部１０２ａは、図４に示すように、旧コード実行部１０２ａ−１、および、新コード実行部１０２ａ−２を備えて構成されている。すなわち、旧コード実行部１０２ａ−１は、テストデータＤＢ１０６ａに格納されたテストデータを入力として、旧コードを実行し、出力値を出力する旧コード実行手段であり、新コード実行部１０２ａ−２は、テストデータＤＢ１０６ａに格納されたテストデータを入力として、新コードを実行し、出力値を出力する新コード実行手段である。実行部１０２ａは、旧コード実行部１０２ａ−１により出力された出力値と、新コード実行部１０２ａ−２により出力された出力値と、の出力差を演算してログを保存する。ここで、実行部１０２ａは、新コードおよび旧コードの出力差を計算することにより、コード変更前後の出力の一致性（出力差「０」であること）を判断してもよい。なお、この出力差は、表示部１１４により表示される。
【００５３】
また、測定部１０２ｂ−１〜２は、実行部１０２ａにより新・旧コード別に実行されたコード中に記述された、演算子のカバレッジ率を算出するための演算子カバレッジ情報、および、定数のカバレッジ率を算出するための定数パラメータカバレッジ情報を、新・旧コード別に測定する測定手段である。ここで、測定部１０２ｂは、図４に示すように、演算子カバレッジ測定部１０２ｃ−１〜２、および、定数パラメータカバレッジ測定１０２ｄ−１〜２を備えて構成されている。このうち、演算子カバレッジ測定部１０２ｃ−１〜２は、実行部１０２ａにより実行されたコード中に記述された演算子のカバレッジ率を算出するための演算子カバレッジ情報を、新・旧コード別に測定する演算子カバレッジ測定手段である。また、定数パラメータカバレッジ測定１０２ｄ−１〜２は、実行部１０２ａにより実行されたコード中に記述された定数のカバレッジ率を算出するための定数パラメータカバレッジ情報を、新・旧コード別に測定する定数パラメータカバレッジ測定手段である。
【００５４】
また、テスト評価部１０２ｅ−１〜２は、演算子カバレッジ測定部１０２ｃ−１〜２により測定された演算子カバレッジ情報と、定数パラメータカバレッジ測定部１０２ｄ−１〜２により測定された定数パラメータカバレッジ情報とに基づいて、新・旧コード別にテストデータの精度を評価付けし、記憶部１０６の旧コード向けテストＤＢ１０６ｂ、および、新コード向けテストＤＢ１０６ｃにそれぞれ格納するテスト評価手段である。ここで、テスト評価部１０２ｅは、テスト評価部１０２ｅにより新たに精度を評価付けされたテストデータと、既に記憶部１０６（旧コード向けテストＤＢ１０６ｂまたは新コード向けテストＤＢ１０６ｃ）に格納されたテストデータとを比較し、両テストデータのうち精度が高い方のテストデータを記憶部１０６（旧コード向けテストＤＢ１０６ｂまたは新コード向けテストＤＢ１０６ｃ）に格納してもよい。すなわち、テスト評価部１０２ｅ−１〜２は、カバレッジ測定結果によるテストデータの評価付け部であり、新たに実行されたテストデータに対応する測定結果情報（演算子カバレッジ情報または定数パラメータカバレッジ情報）と、データベース（旧コード向けテストＤＢ１０６ｂまたは新コード向けテストＤＢ１０６ｃ）に格納された過去の測定結果情報とを比べて、新しく得られた測定情報の精度が高ければ現テストデータをデータベースに追加し、データベースに格納された測定情報を更新する。
【００５５】
またここで、制御部１０２は、表示部１１４を制御して、実行部１０２ａにより実行された旧コードおよび新コードの出力差、演算子カバレッジ測定部１０２ｃ−１〜２により測定された演算子カバレッジ情報、および／または、定数パラメータカバレッジ測定部１０２ｄ〜１−２により測定された定数パラメータカバレッジ情報、を表示部１１４に表示してもよい。
【００５６】
以上で、本一致性検査装置１００の構成の説明を終える。
【００５７】
［一致性検査装置１００の処理］
続いて、このように構成された本実施の形態における本一致性検査装置１００の処理の一例について、以下に図３を参照して詳細に説明する。
【００５８】
［基本動作処理］
まず、基本動作処理の詳細について再び図３を参照して説明する。図３は、本発明における一致性検査装置の基本動作処理の一例を示すフローチャートである。
【００５９】
（前処理）
まず、制御部１０２は、前処理として、テストデータを、記憶部１０６のテストデータＤＢ１０６ａに格納する。その後、本処理（ＳＡ−１〜ＳＡ−５）へと進む。
【００６０】
（本処理）
つぎに、実行部１０２ａは、記憶部１０６のテストデータＤＢ１０６ａに格納されたテストデータを入力として、新・旧コード別に実行する（ＳＡ−１）。すなわち、旧コード実行部１０２ａ−１は、テストデータを入力として旧コードを実行し、新コード実行部１０２ａ−２は、当該テストデータを入力として新コードを実行する。
【００６１】
そして、測定部１０２ｂ−１〜２の演算子カバレッジ測定部１０２ｃ−１〜２は、実行部１０２ａにより実行された、コード中に記述された演算子のカバレッジ率を算出するための演算子カバレッジ情報を、新・旧コード別に測定する（ＳＡ−２）。なお、このＳＡ−２における演算子カバレッジ情報測定処理については、後述の実施例１の演算子カバレッジ情報測定処理にて、図５〜図７を参照して詳細に説明する。
【００６２】
そして、測定部１０２ｂ−１〜２の定数パラメータカバレッジ測定部１０２ｄ−１〜２は、実行部１０２ａにより実行されたコード中に記述された定数のカバレッジ率を算出するための定数パラメータカバレッジ情報を、新・旧コード別で測定する（ＳＡ−３）。なお、このＳＡ−３におけるこの定数パラメータカバレッジ情報測定処理については、後述の実施例２の定数パラメータカバレッジ情報測定処理にて、図８〜図１０を参照して詳細に説明する。
【００６３】
そして、テスト評価部１０２ｅ−１〜２は、測定部１０２ｂ−１〜２の演算子カバレッジ測定部１０２ｃ−１〜２により測定された演算子カバレッジ情報と、測定部１０２ｂ−１〜２の定数パラメータカバレッジ測定部１０２ｄ−１〜２により測定された定数パラメータカバレッジ情報とに基づいて、新・旧コード別にテストデータの精度を評価付けし記憶部１０６の旧コード向けデータＤＢ１０６ｂ、および、新コード向けデータＤＢ１０６ｃに格納する（ＳＡ−４）。
【００６４】
ここで、テスト評価部１０２ｅ−１〜２は、新たに精度を評価付けされたテストデータと、既に記憶部１０６（旧コード向けデータＤＢ１０６ｂまたは新コード向けデータＤＢ１０６ｃ）に格納された過去のテストデータとを比較し、両テストデータのうち精度が高い方のテストデータを新・旧コード別に記憶部１０６（旧コード向けデータＤＢ１０６ｂまたは新コード向けデータＤＢ１０６ｃ）に格納するようにしてもよい。なお、このＳＡ−４におけるこのテスト評価処理については、後述の実施例３のテスト評価処理にて、図１１を参照して詳細に説明する。
【００６５】
そして、制御部１０２は、表示部１１４を制御して、実行部１０２ａにより実行された旧コードおよび新コードの出力差、演算子カバレッジ測定部１０２ｃ−１〜２により測定された演算子カバレッジ情報、および／または、定数パラメータカバレッジ測定部１０２ｄ−１〜２により測定された定数パラメータカバレッジ情報、を表示部に表示する（ＳＡ−５）。なお、このＳＡ−５におけるこの表示処理については、後述の実施例４の表示処理にて、図１２および図１３を参照して詳細に説明する。
【００６６】
以上で、基本動作処理の説明を終える。
【００６７】
これにて、本一致性検査装置１００の処理についての説明を終える。
【００６８】
［実施例］
続いて、以下に、本実施の形態が適用される本一致性検査装置１００の実施例１〜４について、図５〜図１３を参照して詳細に説明する。
【００６９】
（実施例１：演算子カバレッジ情報測定処理）
最初に、図３のＳＡ−２に対応する演算子カバレッジ情報測定処理について、図５〜図７を参照して詳細に説明する。ここで、図５は、本実施例における演算子カバレッジ（ＯＣ）の一例を示す図であり、図６は、本実施例における演算子カバレッジ（ＯＣ）による解析の一例を示す図であり、図７は、本実施例における演算子カバレッジ（ＯＣ）による解析の一例をより詳細に示す図である。
【００７０】
まず、本発明における演算子カバレッジ（ＯＣ：Ｏｐｅｒａｔｏｒ  Ｃｏｖｅｒａｇｅ）の定義について説明する。演算子カバレッジ（ＯＣ）は、カバレッジテストの新たな測定基準であり、このＯＣは、コード内の入力の数や演算の形が既知であるため、演算子（Ｏｐｅｒａｔｏｒ）により定義される。また、演算子カバレッジ（ＯＣ）では、カバレッジ率の測定基準として、例えば、１つの入力の与え値だけを変えながら演算式どおり出力が算出されるかを確認するなど、各入力が独立的に出力へ影響を与えることを確認するために用いられる。ここで、演算子カバレッジ（ＯＣ）は、ブール変数・整数・実数（ブール・線形・非線形演算式）に適用することができる。なお、ブール変数によるブール式に適用する場合は、ＭＣ／ＤＣのカバレッジ測定結果と同じになる。
【００７１】
続いて、演算子カバレッジ（ＯＣ）の一例を、図５を参照して説明する。図５において、上図は、ブール変数に対して演算子カバレッジ（ＯＣ）によるテスト（ＯＣ  ｔｅｓｔ  ｃａｓｅｓ  ｆｏｒ  Ｂｏｏｌｅａｎ  ＡＮＤ）を行った結果の一例を示しており、中図は、整数の乗算に対して演算子カバレッジ（ＯＣ）によるテスト（ＯＣ  ｔｅｓｔ  ｃａｓｅｓ  ｆｏｒ  ｉｎｔｅｇｅｒ  ｍｕｌｔｉｐｌｉｃａｔｉｏｎ）を行った結果の一例を示しており、そして、下図は、不等式に対して演算子カバレッジ（ＯＣ）によるテスト（ＯＣ  ｔｅｓｔ  ｃａｓｅｓ  ｆｏｒ  ｕｎｅｑｕａｌｉｔｙ）を行った結果の一例を示す。
【００７２】
図５の上図において、例えば、入力値（ａＢ）が「１」で、入力値（ｂＢ）が「１」の場合、ブール演算を行うと、出力値（ｏＢ）は、「１」となる。また、例えば、入力値（ａＢ）が「０」で、入力値（ｂＢ）が「１」の場合、ブール演算を行うと、出力値（ｏＢ）は、「０」となり、入力値（ａＢ）が「１」で、入力値（ｂＢ）が「０」の場合も、ブール演算を行うと、出力値（ｏＢ）は、「０」となる。この際、上述のように、ブール変数によるブール式に演算子カバレッジ（ＯＣ）適用する場合は、従来のＭＣ／ＤＣのカバレッジ測定結果と同じになる。
【００７３】
図５の中図において、例えば、入力値（ａ）が「１０」で、入力値（ｂ）が「２００」の場合、数値掛け算を行うと、出力値（ｏＢ）は、「２００」となる。また、例えば、入力値（ａ）が「１５」で、入力値（ｂ）が「２０」の場合、数値掛け算を行うと、出力値（ｏＢ）は、「３００」となり、入力値（ａ）が「１０」で、入力値（ｂ）が「５」の場合は、数値掛け算を行うと、出力値（ｏＢ）は、「５０」となる。この際、従来のＭＣ／ＤＣによるカバレッジ測定結果と異なる場合がある。詳細は、図６および図７を参照して後述する。
【００７４】
図５の下図において、例えば、入力値（ａ）が「ｘ１」で、ｘ１≧Ｔの場合、数値比較（ａ≧Ｔ）を行うと、出力値（ｏＢ）は、「１」となる。また、例えば、入力値（ａ）が「ｘ２」で、ｘ２＜Ｔの場合、数値比較（ａ≧Ｔ）を行うと、出力値（ｏＢ）は、「０」となる。この際、従来のＭＣ／ＤＣに基づくカバレッジ測定結果と異なる場合がある。詳細は、図８〜図１０を参照して後述する。
【００７５】
つぎに、演算子カバレッジ（ＯＣ）を上述の図２のテストデータに適用した結果について説明する。ここで、図６の各（ａ）〜（ｃ）は、上述の従来のカバレッジ（例えば、ＭＣ／ＤＣ）を表す図２の各（ａ）〜（ｃ）に対応する。
【００７６】
図６に示すように、例えば、入力値（ａ）が「２」であり、入力値（ｂ）が「２」である場合は、変更前のコードではブロック１に進むため、出力値（Ｏ１）は「４（Ｙ）」となり、出力値（Ｏ２）は、「４」となる。また、例えば、入力値（ａ）が「１」であり、入力値（ｂ）が「２」である場合は、変更前のコードではブロック２に進むため、出力値（Ｏ１）は「２（Ｙ）」となり、出力値（Ｏ２）は、「２」となり、入力値（ａ）が「２」であり、入力値（ｂ）が「１」である場合も、同様にブロック２に進むため、出力値（Ｏ１）は「２（Ｙ）」となり、出力値（Ｏ２）は、「２」となる。
【００７７】
図６において、テストデータ（入力値（ａ，ｂ）＝（２，２），（１，２），（２，１）であるデータ）を用いて、従来のＭＣ／ＤＣに基づいてコードカバレッジ測定を行うと、出力値（Ｏ１およびＯ２）は全て一致しながら、ＭＣ／ＤＣは１００％満たす。その結果、コードの機能に違い（図６の例では「＋」と「＊」の違い）があるにもかかわらず、変更前のコードと変更後のコードとが１００％一致すると評価されていた。
【００７８】
一方、本発明における演算子カバレッジ（ＯＣ）を適用した場合、従来のＭＣ／ＤＣで１００％満たすテストデータと同一のテストデータを用いたとしても、ＭＣ／ＤＣのようにコード中のテストされた条件／判定をカバレッジの測定基準とせず、コード中のどの演算子を通して得られた出力値であるかを評価するので、従来のＭＣ／ＤＣでは見落としていたコード内の機能の違いを検出することができる。
【００７９】
すなわち、図６の（ｃ）に示すように、番号１のテストデータを入力として変更前のコードを実行した場合、出力値（Ｏ１）は、（変更前のコード中のブロック１の演算子「＋」にて演算される結果、）「４（Ｙ）」となり、同じく番号１のテストデータを入力として変更後のコードを実行した場合、出力値（Ｏ２）は、（変更後のコード中のブロック３の演算子「＊」にて演算される結果、）同じ値の「４」となり、出力差がなく、ＭＣ／ＤＣは１００％となり、コードの違いを判別できないが、ＯＣでは、演算子（図６の例では「＋」や「＊」）を基準にして判定するため、変更前後で出力差がない場合であっても、コードの違いを評価しうる。
【００８０】
例えば、図６（ｃ）に示すように、番号１〜３のテストデータを用いた場合、一致性検査装置１００は、変更前コードを実行した結果、番号１の出力値（Ｏ１）は、ブロック１の演算子「＋」にて演算されたものであり、番号２および３の出力値（Ｏ１）は、ブロック２の演算子「＊」にて演算されたものであるので、演算子カバレッジ（ＯＣ）をそれぞれ、１／３と２／３と評価する。一方、一致性検査装置１００は、変更後のコードを実行した結果、番号１〜３の出力値（Ｏ２）は、全てブロック３の演算子「＊」にて演算されたものであるので、演算子カバレッジ（ＯＣ）を、３／３の１００％と評価する。すなわち、テスト信号である番号１〜３のうち、ブロック１を通過する確率は１／３であり、ブロック２を通過する確率は２／３である。言い換えると、図６の（ｃ）において、番号１の出力値（Ｏ１）の「４（Ｙ）」は、ブロック１に対する演算子カバレッジ（ＯＣ）が「１／３」であり、番号２および３の出力値（Ｏ２）の「２（Ｎ）」は、ブロック２に対する演算子カバレッジ（ＯＣ）が「２／３」である。また、変更後のコード中のブロック３においては、上記テストデータのどの値を入力してもブロック３にて必ず演算するので、ブロック３に対する演算子カバレッジ（ＯＣ）は、１００％である。
【００８１】
このように、演算子カバレッジ（ＯＣ）を上述の図２のテストデータに適用した結果、従来のカバレッジ（例えば、ＭＣ／ＤＣ）で１００％満たすテストデータを用いても、演算子カバレッジ（ＯＣ）を適用することにより、このＯＣが全ブロック１〜３に対して１００％でないと評価することができる。したがって、ＭＣ／ＤＣとは異なり、図６（ｃ）に示すテストデータのみでは、演算子カバレッジ（ＯＣ）１００％を満たさないため、一致・不一致が判断できないテストデータに対して、完全に一致したとは判断しない。
【００８２】
続いて、図７を参照して、ブロック１〜３の各ブロックに対して演算子カバレッジ（ＯＣ）が１００％となる場合のテストデータについて説明する。ここで、図７において、図７（ｃ）は、ブロック１の演算子カバレッジ（ＯＣ）が１００％であるテストデータの一例を示し、図７（ｄ）は、ブロック２の演算子カバレッジ（ＯＣ）が１００％であるテストデータの一例を示し、そして、図７（ｅ）は、ブロック３の演算子カバレッジ（ＯＣ）が１００％であるテストデータの一例を示す。
【００８３】
図７（ｃ）に示すように、図７（ｃ）のテストデータは、入力値（ａ，ｂ）＝（２，２），（４，２），（２，４）である。このテストデータを変更前のコードに入力すると、条件式「（ａ＞１）なおかつ（ｂ＞１）？」にて全てＹｅｓ（Ｙ）と判断されてブロック１に進み、ブロック１の演算子「＋」により演算されるので、図７（ｃ）に記載のテストデータは、ブロック１の演算子カバレッジ（ＯＣ）が１００％であるテストデータと評価される。図７（ｃ）に示すように、番号２および３における出力値（Ｏ１）の値「６（Ｙ）」と、出力値（Ｏ２）の値「８」とが異なる場合がある。すなわち、出力値（Ｏ１）と出力値（Ｏ２）とに差があらわれることがある。そのため、上述の従来のＭＣ／ＤＣ１００％のテストデータ（入力値（ａ，ｂ）＝（２，２），（１，２），（２，１）であるデータ）では、判別できなかった新・旧コードの出力の違いを判別することができる（図７ｃ）。
【００８４】
また、図７（ｄ）に示すように、図７（ｄ）のテストデータは、入力値（ａ，ｂ）＝（１，１），（１，２），（２，１）である。このテストデータを変更前のコードに入力すると、条件式「（ａ＞１）なおかつ（ｂ＞１）？」にて全てＮｏ（Ｎ）と判断されてブロック２へ進み、ブロック２の演算子「＊」により演算されるので、図７（ｄ）に記載のテストデータは、ブロック２の演算子カバレッジ（ＯＣ）が１００％であるテストデータと評価される。
【００８５】
図７（ｅ）に示すように、図７（ｅ）のテストデータは、入力値（ａ，ｂ）＝（２，２），（１，２），（２，１）である。このテストデータを変更後のコードに入力すると、全てブロック３へ進み、ブロック３の演算子「＊」により演算されるので、図７（ｅ）に記載のテストデータは、ブロック３の演算子カバレッジ（ＯＣ）が１００％であるテストデータとされる。
【００８６】
このように、本実施例の演算子カバレッジ（ＯＣ）を用いてコードカバレッジ測定を行うことにより、各ブロックに関して演算子カバレッジ（ＯＣ）が１００％であるテストデータを用いれば、従来のコードカバレッジ（例えば、ＭＣ／ＤＣ）で１００％となり判断できなかった、変更後のソフトウェアの新・旧コードの違いを判別することができる。これにより、演算子カバレッジ（ＯＣ）が１００％のテストデータを用いてコードカバレッジ測定を行った結果、コードの不一致を正確に判断することができる。
【００８７】
以上で、演算子カバレッジ情報測定処理の実施例の説明を終える。
【００８８】
（実施例２：定数パラメータカバレッジ情報測定処理）
次に、図３のＳＡ−３に対応する定数パラメータカバレッジ情報測定処理について、図８〜図１０を参照して詳細に説明する。ここで、図８は、本実施例における定数パラメータカバレッジ（ＣＰＣ）の一例を示す図であり、図９は、本実施例における定数パラメータカバレッジ（ＣＰＣ）による推定の一例を示す図であり、そして、図１０は、本実施例における定数パラメータカバレッジ（ＣＰＣ）による推定の一例をより詳細に示す図である。
【００８９】
まず、本発明における定数パラメータカバレッジ（ＣＰＣ：Ｃｏｎｓｔａｎｔ  Ｐａｒａｍｅｔｅｒ  Ｃｏｖｅｒａｇｅ）の定義について説明する。定数パラメータカバレッジ（ＣＰＣ）は、カバレッジテストの新たな測定基準であり、このＣＰＣは、テストデータがシステムの定数パラメータをどれだけ正確に推定できるかの判断基準である。このＣＰＣにより、非連続性が起こりやすい境界を検出することができる（以下、詳細に説明する）。
【００９０】
ここで、定数パラメータカバレッジ（ＣＰＣ）の一例を、図８を参照して説明する。図８は、入力データ（ｘ）と、関数（ｘ／３）に含まれる定数３を正確に推定するための定数パラメータカバレッジ（ＣＰＣ）の一例を示している。ここで、図８（ａ）は、関数（ｘ／３）のグラフであり、図８（ｂ）は、テストデータ（ｘ）とＣＰＣの表である。
【００９１】
図８に示すように、テストデータである入力値ｘ＝０，５を入力し、コード中の関数がｙ＝ｘ／３であるコードを実行した場合、出力値はそれぞれｙ＝０，１となる。そのため、「ｘ／Ｋ」において演算子が同じであっても、定数Ｋ＝３，４，５の場合、同じ出力値（ｙ＝０，１）が得られてしまう。換言すれば、このテストデータ（ｘ＝０，５）を用いた場合、整数割り算の関数（ｙ＝ｘ／Ｋ）における定数Ｋは、「３，４，５」の３通り推定できる。すなわち、（入力値ｘ，出力値ｙ）＝（２，０），（５，１）のとき、整数割り算の関数（ｙ＝ｘ／Ｋ）は、ｙ＝ｘ／３だけでなく、ｙ＝ｘ／４であるともｙ＝ｘ／５であるとも考えられる。
【００９２】
したがって、ｙ＝ｘ／Ｋに対して、テストデータ（ｘ）として「２，５」を用いる場合、定数が３通り推定できるので、定数パラメータカバレッジ（ＣＰＣ）は、「１／３」（３３％）と評価する。
【００９３】
続いて、図９を参照し、上記図８のコードにおいて、定数パラメータカバレッジ（ＣＰＣ）を１００％まで増加させるテストデータの一例と、この場合における定数パラメータカバレッジ（ＣＰＣ）を説明する。
【００９４】
図９の上図は、図８に対応する。なお、図９上図において、テストデータ（ｘ）が「２，５」の場合、定数Ｋが３通りのＫ＝３，４，５であると推定できるため、ＯＣは１／３（３３％）である。
【００９５】
次に、図９の中図において、テストデータ（ｘ＝２，４）をそれぞれ入力した場合、出力値はそれぞれｙ＝０，１となるので、定数Ｋは２通りのＫ＝３，４であると推定でき、ｙ＝ｘ／３に対して定数パラメータカバレッジ（ＣＰＣ）は、「２／３」（６６％）となる。
【００９６】
図９の下図において、テストデータ（ｘ＝２，３）をそれぞれ入力した場合、出力値はそれぞれｙ＝０，１となるので、定数Ｋは１通りのＫ＝３であると推定でき、ｙ＝ｘ／３に対して定数パラメータカバレッジ（ＣＰＣ）は、「３／３」（１００％）となる。すなわち、このテストデータ（ｘ）の「２，３」を適用する場合は、定数Ｋは「３」以外あり得ないことになる。
【００９７】
以上のように、定数パラメータカバレッジ（ＣＰＣ）を適用すれば、非連続性が起こりやすい境界を検出することができ、出力値が同じ場合でも定数の違いを判別することができる。
【００９８】
また、このように、定数パラメータカバレッジ（ＣＰＣ）を測定しながら、テストデータ（ｘ）の値を変化させていくことによって、冗長性を抑えながら定数パラメータカバレッジ（ＣＰＣ）が１００％のテストデータを得ることができる。
【００９９】
続いて、図１０を参照し、定数パラメータカバレッジ（ＣＰＣ）を用いて、一例として、関数（ｘ／３）と関数（ｘ／５）とを区別できることを示す。図１０において、図１０（ａ）は、入力データ（ｘ）と関数による演算結果を示す表であり、図１０（ｂ）は、ある入力値の組合せにおける、演算子カバレッジ（ＯＣ）と定数パラメータカバレッジ（ＣＰＣ）とを示すグラフである。
【０１００】
図１０（ａ）において、例えば、入力データｘ＝０，１，２，３，４，５，６である場合、関数（ｘ／３）によれば、ｙ１＝０，０，０，１，１，１，２の出力値が得られ、関数（ｘ／５）によれば、ｙ２＝０，０，０，０，０，１，１の出力値が得られる。図１０（ｂ）は、これらの値（入力データ（ｘ）、出力値（ｙ１）、出力値（ｙ２））をプロットしたグラフを示す。
【０１０１】
ここで、演算子カバレッジ（ＯＣ）は、上述の実施例１にて説明したように、カバレッジ率の測定基準として、例えば、１つの入力の与え値だけを変えながら演算式どおり出力が算出されるかを確認するなどして、各入力が独立的に出力へ影響を与えることを確認するものである。
【０１０２】
図１０（ｂ）に示すように、２つの入力を実行させた場合、関数（ｘ／３）と関数（ｘ／５）に対して、各入力が独立的に出力へ影響を与えることが１００％確認されるので、どの組合せとも演算子カバレッジ（ＯＣ）が１００％である。一方、ＯＣ１００％の場合であっても、定数Ｋが一意に推定できるわけではないので、定数パラメータカバレッジ（ＣＰＣ）は１００％とは限らない。
【０１０３】
すなわち、図１０（ｂ）に示すように、テストデータ（ｘ＝２，５）であるとき、演算子カバレッジ（ＯＣ）１００％となるが、関数（ｘ／３）でも関数（ｘ／４）でも関数（ｘ／５）でも出力値ｙ＝０，１となり両者を区別することができないため、定数パラメータカバレッジ（ＣＰＣ）は「１／３」（３３％）と評価される。これに対し、テストデータ（ｘ＝２，３）を用いた場合、ＯＣ１００％であり、かつ、関数（ｘ／３）が一意に推定できるため、ＣＰＣ１００％となる。テストデータ（ｘ＝４，５）であるときも同様である。
【０１０４】
このように、図１０（ｂ）に示すように、演算子カバレッジ（ＯＣ）１００％のテストデータでは定数の違いが判別できなかったが、定数パラメータカバレッジ（ＣＰＣ）を適用すれば、定数の違いをも含めた、より明確なコードの差を評価することができる。すなわち、演算子カバレッジ（ＯＣ）と、定数パラメータカバレッジ（ＣＰＣ）とを測定することで、従来のカバレッジ（例えば、ＭＣ／ＤＣ）よりも正確に、ソフトウェア変更前後の新・旧コードの差を判別することができる。
【０１０５】
以上で、定数パラメータカバレッジ情報測定処理の実施例の説明を終える。
【０１０６】
（実施例３：テスト評価処理）
次に、図３のＳＡ−４に対応するテスト評価処理について、図１１を参照して詳細に説明する。ここで、図１１は、本実施例におけるテスト評価処理の一例を示す図である。なお、図１１において、図１１のＳＢ−１とＳＢ−２は、図３のＳＡ−１に対応し、同様に、ＳＢ−３は、ＳＡ―２とＳＡ−３に対応し、そしてＳＢ−４とＳＢ−５は、ＳＡ−４に対応する。
【０１０７】
続いて、図１１を参照して、テスト評価部１０２ｅ−１〜２の処理による、テストデータベース（新コード向けテストデータベース１０６ｂ，旧コード向けテストデータベース１０６ｃ）の生成について説明する。図１１において、演算子カバレッジ（ＯＣ）と、定数パラメータカバレッジ（ＣＰＣ）とは、それぞれコードの特定演算子および定数に対して定義される。そこで、それぞれのテストデータがコード内のどの行の演算子および定数のＯＣとＣＰＣとを最大化するのかを示す情報（例えば、コード中の行情報）を格納する。そのため、同じ演算子および定数に対して複数のテストデータが使われている場合、冗長なテストを除去して、簡潔なテストデータベースを作成することができる。なお、以下の説明では、新コード側と旧コード側とを区別せず説明することがあるが、同様の処理は、新コード側および旧コード側でそれぞれ実行される。
【０１０８】
図１１に示すように、まず、制御部１０２は、テストデータが格納された記憶部１０６のテストデータＤＢ１０６ａから、テストデータを読み出す（ＳＢ−１）。
【０１０９】
そして、実行部１０２ａは、ＳＢ−２にて読み出したテストデータを、新・旧コード別に実行する（ＳＢ−２）。
【０１１０】
そして、測定部１０２ｂの演算子カバレッジ測定部１０２ｃは、実行部１０２ａにより実行された、コード中に記述された演算子のカバレッジ率を算出するための演算子カバレッジ情報を、新・旧コード別に測定し、また、測定部１０２ｂの定数パラメータカバレッジ測定部１０２ｄは、実行部１０２ａにより実行された、コード中に記述された定数のカバレッジ率を算出するための定数パラメータカバレッジ情報を、新・旧コード別で測定する（ＳＢ−３）。
【０１１１】
そして、テスト評価部１０２ｅは、新規に実行されたテストデータに対応する演算子カバレッジ（ＯＣ）情報および定数パラメータカバレッジ（ＣＰＣ）情報と取得する（ＳＢ−４）。
【０１１２】
そして、ＳＡ−４で取得されたテストデータのＯＣ・ＣＰＣ情報（行情報を含む。）と、当該行情報に対応するテストデータＤＢに格納されたＯＣ・ＣＰＣ情報とを比較して、新しいテストデータが、テストデータＤＢに格納されたテストデータよりも、評価付けされた精度が高いか否かを判断する（ＳＢ−５）。
【０１１３】
そして、テスト評価部１０２ｅは、精度が高いと判断した場合（ＳＢ−５：Ｙｅｓ）、テストデータＤＢに行情報に対応付けてテストデータを登録する。すなわち、テストデータとテスト行情報を、テストデータとそのデータがコードのどの演算子または定数のカバレッジに貢献したかを表す情報を、「テストデータ：演算子カバレッジ（ＯＣ）情報」・「テストデータ：定数パラメータカバレッジ（ＣＰＣ）情報」とそれぞれ対応付けて格納する。
【０１１４】
これにより、精度の高いテストデータを得た後は、次回の新・旧コードのテストの際には、冗長性が排除されたテストデータＤＢに格納されたテストデータを用いて、デバッグテストを行うことでき、且つ、次回実行時に演算子カバレッジ情報と定数パラメータカバレッジ情報の測定を省略することができ、全体のデバッグテストを簡略化できる。
【０１１５】
以上で、テスト評価処理の実施例の説明を終える。
【０１１６】
（実施例４：表示処理）
最後に、図３のＳＡ−５に対応する表示処理について、図１２および図１３を参照して詳細に説明する。ここで、図１２および図１３は、本実施例における表示処理による表示画面の一例を示す図である。
【０１１７】
図１２において、表示部１１４はテストの結果を表示する。このテスト結果は、新・旧コードの演算子・定数に対してどれだけカバーできているかを示す情報と、実行されたテストデータの数などで表示される。例えば、画面左側の旧コードブラウザには、変更前の旧コードが表示され、画面右側の新コードブラウザには、変更前の新コードが表示され、両コードを視覚的に比較可能になっている。また、画面左下のボックスには、テストに関する共通情報として、テストしたデータ数や出力差などが表示される。また、画面の中央下側には、新・旧コード別に、コード全体における演算子カバレッジ（ＯＣ）率（％）と、コード全体における定数パラメータカバレッジ（ＣＰＣ）率（％）が表示される。また、各新・旧コードブラウザの右側にＯＣ状態バーおよびＣＰＣ状態バーがあり、測定されたコード中の演算子および定数に対応したＯＣおよびＣＰＣの状態を、新・旧コード別に、色や濃淡にて表示される。このＯＣ状態バーおよびＣＰＣ状態バーについては、図１３を参照し下記に詳述する。
【０１１８】
続いて、図１３を参照して、ＯＣ状態バーおよびＣＰＣ状態バーについて説明する。図１３は、ＯＣ状態バーの一例であり、図１３において、掛け算演算子「＊」に対して実行されたテストデータの演算子カバレッジ（ＯＣ）が、色や濃淡にて表示されている。ここで、図１３（ａ）は、テストデータがＯＣの１／３を満たす場合を示し、図１３（ｂ）は、テストデータがＯＣの２／３を満たす場合を示し、そして、図１３（ｃ）は、テストデータがＯＣの１００％を満たす場合を示す。図１３の各図に示すように、ＯＣの値の上昇とともに、ＯＣ状態バーが濃く表示される。なお、図示されていないが、ＣＰＣ状態バーも同様に表示される。
【０１１９】
これにより、新・旧コードの演算子・定数に対するカバレッジ率を容易に視覚的に比較することができる。
【０１２０】
以上で、表示処理の実施例の説明を終える。
【０１２１】
これにて、本一致性検査装置１００の実施例の説明を終える。
【０１２２】
［他の実施の形態］
さて、これまで本発明の実施の形態について説明したが、本発明は、上述した実施の形態以外にも、特許請求の範囲に記載した技術的思想の範囲内において種々の異なる実施の形態にて実施されてよいものである。
【０１２３】
例えば、一致性検査装置１００がスタンドアローンの形態で処理を行う場合を一例に説明したが、一致性検査装置１００とは別筐体で構成されるクライアント端末からの要求に応じて処理を行い、その処理結果を当該クライアント端末に返却するように構成してもよい。
【０１２４】
また、実施の形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。
【０１２５】
このほか、文献中や図面中で示した処理手順、制御手順、具体的名称、各処理の登録データや検索条件等のパラメータを含む情報、画面例、データベース構成については、特記する場合を除いて任意に変更することができる。
【０１２６】
また、一致性検査装置１００に関して、図示の各構成要素は機能概略的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。
【０１２７】
例えば、一致性検査装置１００の各装置が備える処理機能、特に制御部１０２にて行われる各処理機能については、その全部または任意の一部を、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）および当該ＣＰＵにて解釈実行されるプログラムにて実現することができ、あるいは、ワイヤードロジックによるハードウェアとして実現することも可能である。尚、プログラムは、後述する記録媒体に記録されており、必要に応じて一致性検査装置１００に機械的に読み取られる。すなわち、ＲＯＭまたはＨＤなどの記憶部１０６などは、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）として協働してＣＰＵに命令を与え、各種処理を行うためのコンピュータプログラムが記録されている。このコンピュータプログラムは、ＲＡＭにロードされることによって実行され、ＣＰＵと協働して制御部１０２を構成する。
【０１２８】
また、このコンピュータプログラムは、一致性検査装置１００に対して任意のネットワークを介して接続されたアプリケーションプログラムサーバに記憶されていてもよく、必要に応じてその全部または一部をダウンロードすることも可能である。
【０１２９】
また、本発明に係るプログラムを、コンピュータ読み取り可能な記録媒体に格納することもできる。ここで、この「記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等の任意の「可搬用の物理媒体」、あるいは、ＬＡＮ、ＷＡＮ、インターネットに代表されるネットワークを介してプログラムを送信する場合の通信回線や搬送波のように、短期にプログラムを保持する「通信媒体」を含むものとする。
【０１３０】
また、「プログラム」とは、任意の言語や記述方法にて記述されたデータ処理方法であり、ソースコードやバイナリコード等の形式を問わない。なお、「プログラム」は必ずしも単一的に構成されるものに限られず、複数のモジュールやライブラリとして分散構成されるものや、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）に代表される別個のプログラムと協働してその機能を達成するものをも含む。なお、実施の形態に示した各装置において記録媒体を読み取るための具体的な構成、読み取り手順、あるいは、読み取り後のインストール手順等については、周知の構成や手順を用いることができる。
【０１３１】
記憶部１０６に格納される各種のデータベース等（テストデータＤＢ１０６ａ〜新コード向けテストデータＤＢ１０６ｃ）は、ＲＡＭ、ＲＯＭ等のメモリ装置、ハードディスク等の固定ディスク装置、フレキシブルディスク、光ディスク等のストレージ手段であり、各種処理やウェブサイト提供に用いる各種のプログラムやテーブルやデータベースやウェブページ用ファイル等を格納する。
【０１３２】
また、一致性検査装置１００は、既知のパーソナルコンピュータ、ワークステーション等の情報処理装置を接続し、該情報処理装置に本発明の方法を実現させるソフトウェア（プログラム、データ等を含む）を実装することにより実現してもよい。
【０１３３】
更に、装置の分散・統合の具体的形態は図示するものに限られず、その全部または一部を、各種の付加等に応じた任意の単位で、機能的または物理的に分散・統合して構成することができる。
【産業上の利用可能性】
【０１３４】
以上詳述に説明したように、本発明によれば、従来のコードカバレッジ（例えば、ＭＣ／ＤＣ）に替わる新たなコードカバレッジ（ＯＣおよびＣＰＣ）を用いて、ソフトウェア変更後のコード間の一致と不一致とを明確に区別することができる一致性検査方法、一致性検査装置およびプログラムを提供することができるので、ソフトウェア分野において有用である。
【図面の簡単な説明】
【０１３５】
【図１】従来のコードカバレッジ（例えば、ＭＣ／ＤＣ）に基づいた一致性検査手法の一例を示すデータフロー図である。
【図２】従来のコードカバレッジ（例えば、ＭＣ／ＤＣ）とこのＭＣ／ＤＣを１００％満たすテストデータの一例を示す図である。
【図３】本発明における一致性検査装置の基本動作処理の一例を示すフローチャートである。
【図４】本発明が適用される、演算子カバレッジおよび定数パラメータカバレッジに基づいた一致性検査装置の構成の一例を示すブロック図である。
【図５】本実施例における演算子カバレッジ（ＯＣ）の一例を示す図である。
【図６】本実施例における演算子カバレッジ（ＯＣ）による解析の一例を示す図である。
【図７】本実施例における演算子カバレッジ（ＯＣ）による解析の一例をより詳細に示す図である。
【図８】本実施例における定数パラメータカバレッジ（ＣＰＣ）の一例を示す図である。
【図９】本実施例における定数パラメータカバレッジ（ＣＰＣ）による推定の一例を示す図である。
【図１０】本実施例における定数パラメータカバレッジ（ＣＰＣ）による推定の一例をより詳細に示す図である。
【図１１】本実施例におけるテスト評価処理の一例を示す図である。
【図１２】本実施例における表示処理による表示画面の一例を示す図である。
【図１３】本実施例における表示処理による表示画面の一例を示す図である。
【符号の説明】
【０１３６】
１００  一致性検査装置
１０２  制御部
１０２ａ  実行部
１０２ａ−１  旧コード実行部
１０２ａ−２  新コード実行部
１０２ｂ−１〜２  測定部
１０２ｃ−１〜２  演算子カバレッジ測定部
１０２ｄ−１〜２  定数パラメータカバレッジ測定部
１０２ｅ−１〜２  テスト評価部
１０６  記憶部
１０６ａ  テストデータＤＢ
１０６ｂ  旧コード向けテストデータＤＢ
１０６ｃ  新コード向けテストデータＤＢ
１１４  表示部
【図１】
2009163636.tif 000003
【図２】
2009163636.tif 000004
【図３】
2009163636.tif 000005
【図４】
2009163636.tif 000006
【図５】
2009163636.tif 000007
【図６】
2009163636.tif 000008
【図７】
2009163636.tif 000009
【図８】
2009163636.tif 000010
【図９】
2009163636.tif 000011
【図１０】
2009163636.tif 000012
【図１１】
2009163636.tif 000013
【図１２】
2009163636.tif 000014
【図１３】
2009163636.tif 000015