(57)【要約】      （修正有）【課題】検査済みのプログラム経路を特定するカバレージ測定装置を提供する。【解決手段】カバレージ測定装置２００は、測定対象コードを取得し（２０１）、検査項目情報を取得し（２０２）、測定対象コードを検査項目情報に基づいて検査し（２０３）、検査中に生成した状態変数の割り当て情報及びブランチ対応状態変数情報を用いて、検査済みのブランチを特定して（２０４）、カバレージ測定を行う（２０５）。この場合、カバレージ測定装置２００は、形式検証を行った際に、検査を実行したブランチを特定できると共にカバレージ測定を正確に行うことができる。【選択図】図５
2010140326.tif 000002
【特許請求の範囲】
【請求項１】
測定対象のコードを取得する測定対象コード取得手段と、
検査項目情報を取得する検査項目情報取得手段と、
前記測定対象コードについて、前記検査項目情報に基づいて形式手法により検査する検査手段と、
前記検査の状態変数と前記測定対象コード中のブランチとの対応付けを定義したブランチ対応状態変数情報を生成するブランチ対応状態変数情報生成手段と、
前記検査で割り当てられた状態変数と、前記ブランチ対応状態変数情報とを用いて、処理実行したブランチを特定する検査対象ブランチ特定手段と、
前記検査対象ブランチ特定手段が特定したブランチに関するカバレージを測定するカバレージ測定手段と、
を備えることを特徴とするカバレージ測定装置。
【請求項２】
カバレージ測定結果に基づいて、未検査のブランチに対応する分岐条件に関する情報を生成する検査項目生成部をさらに備えることを特徴とする請求項１に記載のカバレージ測定装置。
【請求項３】
前記ブランチ間の階層関係を予め定義しておき、
前記検査項目生成部は、下位階層を優先的に、未検査のブランチに対応する分岐条件に関する情報を生成することを特徴とする請求項２に記載のカバレージ測定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システム等のプログラムテストにおけるカバレージを測定するカバレージ測定装置に関する。
【背景技術】
【０００２】
ソフトウェアのテスト手法の１つに、形式検証手法がある。形式検証手法では、検査対象になるソフトウェアと、検査項目を全て数式化して検査することで、入力領域を網羅的に検査することができる。
【０００３】
上記形式検証手法によりテストを行う形式検証システムにおいて、等価性判断する場合、所定の条件を設定して等価性を判断しただけでは、等価性を判断できるのみで、回路中のどの部分を使用しているか判断することができない。この場合、テストケースが十分であるか否かを判断することができない。
【０００４】
ところで、同一の機能を有する２つの論理システムの等価性を検証するにあたり、一方の論理システムをＦＳＭ変換することにより得られた入力文字列を、他の論理システムに適用して、テストの網羅性の検証を省略しているシステムがある。
【０００５】
【特許文献１】特開２００８−２０４１８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、予めテストを網羅しているシステムが存在している必要がある。予めテスト検証を網羅しているシステムが存在していない場合、テストケースが網羅されているか否か判断するために、検査を行った処理経路を特定する必要がある。
【０００７】
本発明は、上記のような課題を解決するためになされたものであり、検査済みのプログラム経路を特定するカバレージ測定装置を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の１つの観点では、カバレージ測定装置は、測定対象のコードを取得する測定対象コード取得手段と、検査項目情報を取得する検査項目情報取得手段と、前記測定対象コードについて、前記検査項目情報に基づいて形式的手法により検査する検査手段と、前記検査の状態変数とブランチとの対応付けを定義したブランチ対応状態変数情報を生成するブランチ対応状態変数情報生成手段と、前記検査で割り当てられた状態変数と、前記ブランチ対応状態変数情報とを用いて、処理実行したブランチを特定する検査対象ブランチ特定手段と、前記検査対象ブランチ特定手段が特定したブランチに関するカバレージを測定するカバレージ測定手段と、を備える。
【０００９】
ここでいうカバレージとは、プログラムテストの実行網羅率をいう。上記のカバレージ測定装置は、テスト実行結果を参照して、テスト対象項目をどの程度網羅しているかを測定する。カバレージ測定装置は、測定対象のコード及び検査項目情報を取得して、検査時に用いる状態変数と、測定対象のコード中のブランチとを対応付けを定義したブランチ対応状態変数情報を生成する。
【００１０】
そして、カバレージ測定装置は、測定コードについて、検査項目情報に基づいて検査し、検査中に生成した状態変数の割り当て情報及びブランチ対応状態変数情報を用いて、検査済みのブランチを特定して、カバレージ測定を行う。
【００１１】
この場合、カバレージ測定装置は、形式検証を行った際に、検査を実行したブランチを特定できると共にカバレージ測定を正確に行うことができる。
【００１２】
上記のカバレージ測定装置の一態様では、カバレージ測定結果に基づいて、未検査のブランチに対応する分岐条件に関する情報を生成する検査項目生成部をさらに備える。
【００１３】
この態様では、カバレージ測定装置は、検査項目生成部が、網羅していないテスト条件に関する情報を提示するので、カバレージ測定結果を向上し得る有益な情報を提示することができる。
【００１４】
上記のカバレージ測定装置の他の一態様では、前記ブランチ間の階層関係を予め定義しておき、前記検査項目生成部は、下位階層を優先的に、未検査のブランチに対応する分岐条件に関する情報を生成する。
【００１５】
この態様では、カバレージ測定装置は、下位階層における未検査のブランチを優先して、分岐条件の情報を生成するので、当該下位階層の未検査のブランチの検査項目について検査すれば、下位階層のブランチの上位階層についても同時に検査することになるので、カバレージ測定装置は、下位階層のブランチの分岐条件に関する情報を生成すれば、上位階層の未検査のブランチについての分岐条件の情報を生成する必要がなくなる。よって、カバレージ測定装置は、未検査のブランチに関する情報の生成処理の効率向上を図ることができる。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照して本発明の好適な実施の形態について説明する。
【００１７】
［プログラムテストの概略説明］
プログラムテストの概略説明をする。プログラムのテスト手法として、「テストデータによるテスト手法」と「形式検証によるテスト手法」がある。
【００１８】
図１（Ａ）に示すような入力変数Ａ及び入力変数Ｂが入力された場合の、プログラムの出力変数Ｃについて、テストすることを例とする。
【００１９】
例えば、検査したい項目が「入力変数Ａ及び入力変数Ｂに対して、出力変数Ｃが０以上１００以下になること」である場合、「テストデータによるテスト手法」では、図１（Ｂ）に示すように、テストデータを用いてシミュレーションを行い、シミュレーションした結果、出力される出力変数Ｃを参照し、検査項目が適切な結果を出力しているか否かを判断する。
【００２０】
上記の「テストデータによるテスト手法」では、入力領域の全てをテストするには、処理負荷がかかるという問題がある。
【００２１】
「形式検証によるテスト手法」では、図２に示すように、検査対象になるプログラムと、検査項目を全て数式化して検査することにより、入力領域を網羅的に検査する。
【００２２】
しかし、上記の「形式検証によるテスト手法」では、検査対象に対して検査項目の成立可否が返されているだけで、検査対象のプログラム中のどの部分が成立に必要であったかについての情報を得ることができなかった。よって、入力領域に対しては、網羅的な検査ができたとしても、検査対象となるプログラムについて網羅的な検査を実行できているか否かの判断ができないという問題点がある。
【００２３】
そこで、本発明では、形式検証を行なう際、検査対象に対する検査指標としてＦｏｒｍａｌ  Ｃｏｄｅ  Ｃｏｖｅｒａｇｅ（以下、ＦＣＣとも呼ぶ）を図３に示すように定義し、その求め方や、ＦＣＣが１００％を満たさなかった場合、形式検証的に検査項目を見つけてＦＣＣが１００％を満たす方法を提案する。
【００２４】
なお、図３に示す分母「＃ｂｒａｎｃｈｅｓ」は、プログラムに含まれているブランチの総数を意味する。そして、分子「＃（検査項目の成立に必要だったｂｒａｎｃｈｅｓ）」とは、検査項目の成立に必要であったブランチの総数をいい、複数の検査項目については、それぞれの成立に必要であったブランチ数を出し、累積するが同じブランチについては、冗長に数えないものとする。
【００２５】
［カバレージ測定装置］
図４に本実施例におけるカバレージ測定装置を実現するコンピュータ１００の模式図を示す。コンピュータ１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１と、メモリ１２と、入力装置１３と、ハードディスク１４と、ディスプレイ１５と、インタフェース１６とを備える。これらは、システムバス１０を介して接続されている。ＣＰＵ１１は、コンピュータ１の制御中枢として機能すると共に、各種のプログラムを実行する。メモリ１２は、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、ＣＰＵ１１の作業領域として機能し、そこは処理途中のデータ等が記憶される。ハードディスク１４には、カバレージ測定に関するプログラムや各種データが記憶されている。
【００２６】
入力装置１３は、例えばキーボードやマウスであり、オペレータが指示を入力するための入力手段として機能する。インタフェース１６は、外部機器との間で通信を行う機能を有する。ＣＰＵ１１は、インタフェース１６を介して各種データを取得する。
【００２７】
［カバレージ測定ユニット］
図５は、カバレージ測定ユニット２００の機能ブロック図である。カバレージ測定ユニット２００は、実体的には、コンピュータ１００の構成要素により構成される。図５に示すように、カバレージ測定ユニット２００は、測定対象コード取得部２０１、検査項目情報取得部２０２、検査部２０３、検査対象ブランチ特定部２０４、カバレージ測定部２０５、及び検査項目生成部２０６を備える。
【００２８】
測定対象コード取得部２０１は、測定対象コードを取得する。また、検査項目情報取得部２０２は、検査項目の情報を取得する。例えば、測定対象コード取得部２０１や検査項目情報取得部２０２は、通信手段等を用いて測定対象コードや検査項目の情報を取得する。
【００２９】
検査部２０３は、測定対象コードについて、検査項目情報が成立するか否か検査する。検査部２０３は、上述の「形式検証によるテスト手法」を用いて検査する。
【００３０】
検査対象ブランチ特定部２０４は、検査項目に対応するブランチを特定する。検査対象ブランチ特定部２０４が、検査項目に対応するブランチを特定する具体的な方法については、後述する。
【００３１】
カバレージ測定部２０５は、検査部２０３の検査結果に基づいて、測定対象コードのＦＣＣを測定する。
【００３２】
検査項目生成部２０６は、カバレージ測定結果に基づいて、検査していないブランチに関する検査項目を生成する。
【００３３】
［処理概要について］
図６に本実施例における、カバレージ測定処理のフローチャートの概要を説明する。本実施例におけるカバレージ測定処理とは、検査項目の情報及び検査対象のコードを取得し、検査項目の情報について、検査対象のコードに対して検査を行い、検査対象のコード内のブランチについてのカバレージを測定し、検査を行っていないブランチの検査項目を抽出する処理をいう。
【００３４】
測定対象コード取得部２０１が、測定対象コードを取得し（ステップＳ１０）、検査項目情報取得部２０２が、検査項目情報を取得する（ステップＳ２０）。検査部２０３は、検査項目情報に関する測定対象コードの検査を行う（ステップＳ３０）。検査対象ブランチ特定部２０４が、検査を行ったブランチを特定し（ステップＳ４０）、カバレージ測定部２０５がカバレージを測定する（ステップＳ５０）。そして、カバレージ測定部２０５は、カバレージ測定結果を保持しておき（ステップＳ６０）、検査項目の数が所定の閾値に達していない場合（ステップＳ７０；Ｎｏ）、ステップＳ２０へ移行する。また、カバレージ測定部２０５は、検査項目の数が所定の閾値以上となっている場合（ステップＳ７０；Ｙｅｓ）、ＦＣＣが１００％であれば（ステップＳ８０；Ｙｅｓ）、そのまま処理を終了し、ＦＣＣが１００％でなければ（ステップＳ８０；Ｎｏ）、検査項目生成部２０６が検査項目を生成し（ステップＳ９０）、処理を終了する。
【００３５】
このように、カバレージ測定ユニット２００は、検査項目情報についての検査結果を取得するだけでなく、検査対象のコード内における、検査済みのブランチを特定し、カバレージを測定するので、検査対象内のコードについての検査がどの程度行われたか利用者に通知することができる。
【００３６】
また、カバレージ測定ユニット２００は、検査を行っていないブランチの検査項目を生成するので、生成した検査項目について、検査を実行すれば、カバレージ測定結果を向上させることができる。以下に、検査を実行したブランチを特定すると共にカバレージを測定するＦＣＣ測定方法と、実行していないブランチの検査項目に関連する情報を提示する検査項目生成方法に分けて説明する。
【００３７】
［ＦＣＣ測定方法１について］
図７（Ａ）に示すような、プログラムがある場合、各判断部で分岐するブランチ３０Ａ、ブランチ３０Ｂ、及びブランチ３０Ｃが存在することとなる。また、各ブランチ３０の取り得る値をグラフ化すると、図７（Ｂ）のようになる。
【００３８】
カバレージ測定ユニット２００が、検査項目について検査をした後に、検査時に実行したブランチを特定し、カバレージを測定すれば、検査をしていない箇所を特定することができる。例えば、図７（Ｃ）に示すような検査状況の場合、検査項目１、２については、満たしているので測定対象コードのＦＣＣ測定をすると、ブランチ３０Ｃは、検査できていないことが分かる。カバレージ測定ユニット２００は、ブランチ３０Ｃを検査すれば、ＦＣＣは１００％になり、全てのブランチ３０が検査済みになる。
【００３９】
ＦＣＣを測定する方法について、以下に記載する。
【００４０】
本実施例では、検査部２０３が、検査項目について検査をした後、検査対象ブランチ特定部２０４が、検査対象のプログラム中の判断部内の条件を変更し、検査結果が正常であるか否かを判断し、検査結果が異常になった場合、当該判断部の条件を変更する前に通過していたブランチ３０を実行していたと判断する。
【００４１】
具体例を図８に示す。検査対象ブランチ特定部２０４は、ブランチ３０Ａを通過させないように、判断部５０内の条件を変更し、図示している検査項目１について検査を行う。図８の例では、検査対象ブランチ特定部２０４は、判断部５０内の条件に「＆＆０」を追加し、判断部５０の判断結果が常に「偽」になるようにしている。この場合に、検査対象ブランチ特定部２０４は、検査項目１について検査をすると、本来検査するはずのブランチ３０Ａを検査できなくなっているので、検査結果が「ＮＧ」となる。このように、検査結果が変わった場合、検査対象ブランチ特定部２０４は、検査項目１でブランチ３０Ａを実行していたと判断する。
【００４２】
上述のように、カバレージ測定ユニット２００では、検査対象ブランチ特定部２０４が各判断部５０内の条件を変更し、各検査項目の結果の変化に基づいて、各検査項目でどのブランチ３０を検査しているかについて特定する。
【００４３】
これによれば、カバレージ測定ユニット２００は、検査した結果、網羅していないブランチ３０を特定することもできる。なお、上記方法の場合、総検査数は、「検査項目数」×「ブランチの数」となる。
【００４４】
なお、上述の実施例では、検査対象ブランチ特定部２０４は、判断部５０内の条件に「＆＆０」を追加し、判断部５０の判断結果が常に「偽」になるようにしていたが、逆に判断部５０内の条件に「＆＆１」を追加し、判断部５０の判断結果が常に「真」になるようにしても良い。
【００４５】
次に、ＦＣＣ測定方法１の処理手順について、図９に示すフローチャートを用いて説明する。この処理は、コンピュータ１００内のＣＰＵ１１が、予め用意されたプログラムを検査することにより実現される。なお、上記ＦＣＣ測定方法１の処理におけるステップＳ４１〜ステップＳ４４は、図６のフローチャートのステップＳ４０に対応する。
【００４６】
検査対象ブランチ特定部２０４は、所定の検査項目で検査したか否かのチェックについて、全てのブランチ３０に対して行っているか否かを判断し、全てのブランチに対して行っていない場合（ステップＳ４１；Ｎｏ），所定のブランチ３０を実行しないように、当該ブランチ３０の直前にある判断部５０の条件を設定する（ステップＳ４２）。
【００４７】
そして、検査対象ブランチ特定部２０４は、当該検査項目について検査をし、検査結果が変化するか否か判断する。判断した結果、検査結果が変化した場合（ステップＳ４３；Ｎｏ）、検査対象ブランチ特定部２０４は、判断部５０の条件を元に戻し、実行排除したブランチ３０を実行したものと判断し（ステップＳ４４）、ステップＳ４１へ移行する。また、判断した結果、検査結果が変化しない場合（ステップＳ４３；Ｙｅｓ）、ステップＳ４２へ移行する。
【００４８】
ステップＳ４１で、全てのブランチ３０についてチェックしていた場合（ステップＳ４１；Ｙｅｓ）、カバレージ測定部２０５が、ＦＣＣ測定を行い（ステップＳ５０）、処理を終了する。
【００４９】
［ＦＣＣ測定方法２について］
次に、ＦＣＣ測定方法２について説明する。ＦＣＣ測定方法２では、予めブランチ３０間の上下関係を定義しておき、上流のブランチ３０から検査結果変更のチェックを行い、検査結果に変更がなければ、当該ブランチ３０の下流のブランチ３０についての検査結果変更チェックを省略する。
【００５０】
上流のブランチ３０を検査していない場合、下流のブランチ３０についても検査しないこととなるので、上流のブランチ３０を検査していないのであれば、下流のブランチ３０について検査結果変更チェックを省略しても、実行ブランチ３０の特定結果に影響はない。
【００５１】
このように、カバレージ測定ユニット２００は、予めブランチの上下関係を定義しておき、上流のブランチ３０から検査結果変更チェックを行い、上流のブランチ３０について検査結果変更がない段階で、下流のブランチ３０について検査結果変更のチェックを省略すれば、各ブランチの検査結果変更に関する処理の効率化を図ることができる。
【００５２】
図１０を用いてブランチ３０の上下関係について説明する。図１０の場合、ブランチ３０Ａがブランチ３０Ｂ、ブランチ３０Ｃの上流ブランチに対応する。
【００５３】
ＦＣＣ測定方法２の処理手順を図１１のフローチャートに示す。この処理は、コンピュータ１００内のＣＰＵ１１が、予め用意されたプログラムを検査することにより実現される。なお、上記ＦＣＣ測定方法２の処理におけるステップＳ５１〜ステップＳ５６は、図６のフローチャートのステップＳ４０に対応する。
【００５４】
検査対象ブランチ特定部２０４は、所定の検査項目で実行したか否かのチェックについて、全てのブランチ３０に対して行っているか否かを判断し、全てのブランチ３０に対して行っていない場合（ステップＳ５１；Ｎｏ），検査対象ブランチ特定部２０４は、ブランチ３０の上下関係の対応情報を参照し、検査済みでないブランチ３０の内、最も上流のブランチ３０を特定対象として決定し、さらに、検査対象ブランチ特定部２０４は、ブランチ３０の上下関係の対応情報を参照し、判断部５０の変更対象となるブランチの下流のブランチ３０を特定する（ステップＳ５２）。
【００５５】
検査対象ブランチ特定部２０４は、特定対象のブランチ３０を実行しないように、当該ブランチ３０の直前にある判断部５０の条件を設定する（ステップＳ５３）。
【００５６】
そして、検査対象ブランチ特定部２０４は、当該検査項目について検査をし、検査結果が変化するか否か判断する。検査対象ブランチ特定部２０４が判断した結果、検査結果が変化した場合（ステップＳ５４；Ｎｏ）、検査対象ブランチ特定部２０４は、判断部５０の条件を元に戻し、実行排除したブランチ３０を実行したものと判断し（ステップＳ５５）、ステップＳ５１へ移行する。また、検査対象ブランチ特定部２０４が判断した結果、検査結果が変化しない場合（ステップＳ５４；Ｙｅｓ）、下流ブランチ３０の検査を行うことなく（ステップＳ５６）、ステップＳ５１へ移行する。
【００５７】
ステップＳ５１で、全てのブランチについてチェックしていた場合（ステップＳ５１；Ｎｏ）、カバレージ測定部２０５が、ＦＣＣ測定を行い（ステップＳ５０）、処理を終了
する。
【００５８】
［ＦＣＣ測定方法３について］
次に、ＦＣＣ測定方法３を示す。ＦＣＣ測定方法３では、ブランチ３０に対応する状態変数とを対応付けた情報を有するブランチテーブルを予め生成しておき、形式検査を実施した際に、割り当てられた状態変数に対応するブランチを上記ブランチテーブルを用いて特定する。ＦＣＣ測定方法３の概念図を図１２に示す。
【００５９】
具体的に、カバレージ測定ユニット２００では、測定対象コード取得部２０１が測定対象のコードを取得し、検査項目情報取得部２０２が検査項目情報を取得する。そして、検査部２０３が、取得済みの検査項目情報及び検査コードを用いて、ブランチと状態変数とを対応付けたブランチテーブルや、状態変数と当該状態変数の割り当て状況とを対応付けた状態変数の割り当てテーブルを生成する。そして、検査部２０３は、形式手法で検査を行う。検査部２０３は、検査を行った際に検査時における状態変数の割り当て状態を、状態変数割り当てテーブルに反映する。ここで、検査部２０３が、検査時における状態変数の割り当て状態を特定することについては、従来技術であるため、詳細については省略する。
【００６０】
そして、検査対象ブランチ特定部２０４は、状態変数割り当てテーブルと、ブランチテーブルとを参照し、検査時に実行したブランチ３０を特定する。
【００６１】
ＦＣＣ測定方法３によれば、カバレージ測定ユニット２００は、予めブランチ３０と状態変数とを対応付けたブランチテーブルを用意し、検査時に割り当てられた状態変数に対応するブランチを検索することにより、検査したブランチ３０を特定することができると共に、正確にカバレージ測定を行うことができる。
【００６２】
また、ＦＣＣ測定方法１やＦＣＣ測定方法２については、一度検査を行った後に、再度、各ブランチ３０の判断部５０内の条件を変更して、再検査を実行しているので、ＦＣＣ測定方法３は、１つの検索項目に対して１度検査すれば良いので、ＦＣＣ測定方法１やＦＣＣ測定方法２に比して、効率良く実行ブランチ３０の特定を行うことができる。
【００６３】
ＦＣＣ測定方法３の処理手順を図１３に示すフローチャートに従って説明する。ＦＣＣ測定方法３の処理は、図６に示すフローチャート中のステップＳ３０及びステップＳ４０に対応する処理である。よって、カバレージ測定ユニット２００が既に、検査項目情報や測定対象コードを既に取得している状態で上記ＦＣＣ測定方法３の処理を行う。
【００６４】
まず、検査部２０３が、測定対象コードを読み込み、状態変数とブランチ３０との対応テーブルであるブランチテーブルを生成しておく（ステップＳ３１）。
【００６５】
そして、検査部２０３が、状態変数と、当該状態変数の割り当て可否情報とを対応付けた状態変数の割り当てテーブルを生成する（ステップＳ３２）。その後、検査部２０３は、検査項目情報について、測定対象コードを検査する（ステップＳ３３）。そして、検査部２０３は、割当て状況に応じて状態変数の割り当てテーブルを反映する。
【００６６】
そして、検査が成立していた場合（ステップＳ３４；Ｙｅｓ）、検査対象ブランチ特定部２０４は、上記状態変数の割り当てテーブルとブランチテーブルとを参照し、検査対象のブランチを特定し（ステップＳ３５）、処理を終了する。
【００６７】
［検査項目生成手法１］
次に、検査項目生成方法１について説明する。検査項目生成方法１とは、ＦＣＣ測定を行った後に、検査を実行していないブランチ３０を特定し、特定したブランチ３０を実行するための条件情報を提示する方法をいう。具体的に、カバレージ測定ユニット２００が、特定したブランチ３０に対応する判断部５０の直前に、Ａｓｓｅｒｔ文を埋め込み、再度検査をし、Ａｓｓｅｒｔ処理を実行した結果出力される情報を提示する。
【００６８】
具体例を図１４（Ａ）及び図１４（Ｂ）を用いて説明する。カバレージ測定ユニット２００は、図１４（Ａ）に示すプログラム中の分岐条件に合致するブランチ３０について、テストを実行していないことを特定した場合、図１４（Ｂ）に示すように、上記分岐条件の逆条件を含むＡｓｓｅｒｔ文を判断部５０の上に挿入する。そして、カバレージ測定ユニット２００は、再度検査を実行し、上記Ａｓｓｅｒｔ文を実行することにより出力される情報を提示する。なお、カバレージ測定ユニット２００は、乱数を発生させて、上記検査の検査項目を決定する。
【００６９】
このように、カバレージ測定ユニット２００は、検査を実行していないブランチ３０を特定し、検査を実行していないブランチ３０の判断部５０の直前にＡｓｓｅｒｔ文を埋め込み、再検査をし、Ａｓｓｅｒｔ文による出力内容を提示する。この場合、カバレージ測定ユニット２００は、検査を行っていないブランチ３０を実行するための、条件となる情報を提示する。
【００７０】
これによれば、カバレージ測定ユニット２００は、検査を実行していない検査項目の条件に関する情報を提示することができる。
【００７１】
検査項目生成方法１の処理手順を図１５に示すフローチャートに従って説明する。検査項目生成方法１の処理は、図６に示すフローチャート中のステップＳ９０内の処理である。よって、既にＦＣＣ測定を終えている状況で行うということになる。
【００７２】
まず、検査項目生成部２０６は、検査を実行していないブランチ３０、及び当該ブランチ３０の位置を特定する（ステップＳ９１）。具体的に、検査項目生成部２０６は、検査対象コード取得部２０１が取得した検査コード中の、検査対象ブランチ特定部２０４が特定していないブランチ３０を検査実行していないブランチ３０として判断する。
【００７３】
そして、検査項目生成部２０６は、検査を実行してない全てのブランチ３０について、分岐条件の逆条件を作成していない場合（ステップＳ９２；Ｙｅｓ）、検査項目生成部２０６は、検査実施していないブランチ３０の条件の逆条件を含むＡｓｓｅｒｔ文を生成し（ステップＳ９３）、生成したＡｓｓｅｒｔ文を、検査実施していないブランチ３０に対応する判断部５０の直前に挿入する（ステップＳ９４）。
【００７４】
検査項目生成部２０６は、Ａｓｓｅｒｔ文が挿入された状態の検査対象コードについてランダムの入力変数を用いて検査を行い、Ａｓｓｅｒｔ処理が行われない場合（ステップＳ９５；Ｙｅｓ）、当該ブランチは不要であるため、ブランチ削除を促す出力結果を表示し（ステップＳ９７）、ステップＳ９２へ移行する。そして、検査項目生成部２０６は、検査成立せず、Ａｓｓｅｒｔ処理が行われた場合（ステップＳ９５；Ｎｏ）、当該Ａｓｓｅｒｔ処理による出力内容を提示し、ステップＳ９２へ移行する。テスト実行していない全てのブランチ３０について、Ａｓｓｅｒｔ文挿入を終了した場合（ステップＳ９２；Ｙｅｓ）、処理を終了する。
【００７５】
［検査項目生成手法２について］
次に、検査項目生成方法２ついて説明する。検査項目生成方法２とは、予めブランチ間の上下関係を定義しておき、ＦＣＣ測定を行った後に、検査を実行していないブランチ３０を特定し、特定したブランチ３０の内、下流のブランチ３０を優先して、判断部５０の直前にＡｓｓｅｒｔ文を埋め込み、上流のブランチ３０については、Ａｓｓｅｒｔ文の挿入については、省略し、再度検査をする。カバレージ測定ユニット２００は、下流のブランチ３０に関する検査項目を提示しておくことにより、当該検査項目に基づいて、検査を実行すれば、下流のブランチ３０だけでなく、上流のブランチ３０についても、検査実行することができる。これにより、上流のブランチ３０について、Ａｓｓｅｒｔ文挿入処理を行わなくても、上流のブランチ３０のテストを実行することができ、効率良く、未実施の検査項目の抽出を行うことができる。
【００７６】
なお、上流ブランチ３０と、下流ブランチ３０との対応関係については、ＦＣＣ測定方法２で述べた内容と同様である。
【００７７】
検査項目生成方法２の処理手順を図１６に示すフローチャートを用いて説明する。検査項目生成方法２の処理は、図６に示すフローチャート中のステップＳ９０内の処理である。よって、既にＦＣＣ測定を終えている状況で行うということになる。
【００７８】
まず、検査項目生成部２０６は、検査を実施していないブランチ３０、及び当該ブランチ３０の位置を特定する（ステップＳ１０１）。具体的に、検査項目生成部２０６は、検査対象コード取得部２０１が取得した検査コード中の、検査対象ブランチ特定部２０４が特定していないブランチ３０を検査実行していないブランチ３０として判断する。
【００７９】
そして、検査項目生成部２０６は、検査実行してないブランチ３０の全てについて、分岐条件の逆条件を作成していない場合（ステップＳ１０２；Ｎｏ）、検査項目生成部２０６は、上流ブランチ３０と下流ブランチ３０との対応関係を定義した情報を参照し（ステップＳ１０３）、検査項目情報を生成していないブランチ３０の内、最も下流のブランチ３０を検査項目生成対象のブランチ３０とする（ステップＳ１０４）。そして、検査項目生成部２０６は、検査実行していないブランチ３０を通過するための条件の逆条件を含むＡｓｓｅｒｔ文を生成し、生成したＡｓｓｅｒｔ文を検査実行していないブランチ３０に対応する判断部５０の直前に挿入する（ステップＳ１０５）。
【００８０】
検査項目生成部２０６は、Ａｓｓｅｒｔ文が挿入された状態の検査対象コードについてランダムの入力変数を用いて検査を行い、Ａｓｓｅｒｔ処理が行われない場合（ステップＳ１０６；Ｙｅｓ）、当該ブランチは不要であるため、ブランチ削除を促す出力結果を表示し（ステップＳ１０９）、ステップＳ１０２へ移行する。そして、検査項目生成部２０６は、Ａｓｓｅｒｔ処理が行われた場合（ステップＳ１０６；Ｎｏ）、当該Ａｓｓｅｒｔ処理による出力内容を提示し（ステップＳ１０７）、検査項目生成部２０６が検査項目生成対象のブランチ３０の上流ブランチ３０について、検索項目生成対象から除外し（ステップＳ１０８）、ステップＳ１０２へ移動する。検査項目生成部２０６は、ステップＳ１０２において、検査実行していないブランチ３０について、Ａｓｓｅｒｔ文挿入を終了した場合（ステップＳ１０２；Ｙｅｓ）、処理を終了する。
【００８１】
［変形例］
上述の実施例で特に述べていなかったが、カバレージ測定ユニット２００は、測定対象コードについてプログラムスライシングを行い、プログラムスライシングにより得られたコードを検査対象のコードとするようにしても良い。具体例として、カバレージ測定ユニット２００が、検査項目情報の変数に対応するプログラムを抽出する等がある。この場合、カバレージ測定ユニット２００が、検査を行う際、検査処理効率の改善を図ることができる。
【００８２】
プログラムスライシングを行う例を図１７に示す。図１７に表示しているのは、変数の関連を表したものである。図１７の場合、変数Ｚに着目するのであれば、図１７の右の図の変数のみに着目すれば良いことになる。
【図面の簡単な説明】
【００８３】
【図１】テストデータによるテストの概念図である。
【図２】形式検証手法によるテストの概念図である。
【図３】カバレージ測定を算出する式である。
【図４】本発明におけるカバレージ測定装置を実現するコンピュータのブロック図である。
【図５】本発明におけるカバレージ測定ユニットの機能ブロック図である。
【図６】ＦＣＣ測定及び検査項目生成の処理手順を示すフローチャートである。
【図７】ＦＣＣ測定方法を概念的に示す図である。
【図８】本発明におけるＦＣＣ測定方法１を概念的に示す図である。
【図９】本発明におけるＦＣＣ測定方法１の処理手順を示すフローチャートである。
【図１０】上流ブランチ及び下流ブランチを概念的に示す図である。
【図１１】本発明におけるＦＣＣ測定方法２の処理手順を示すフローチャートである。
【図１２】本発明におけるＦＣＣ測定方法３を概念的に示す図である。
【図１３】本発明におけるＦＣＣ測定方法３の処理手順を示すフローチャートである。
【図１４】本発明における検査項目生成手法１について概念的に示す図である。
【図１５】本発明における検査項目生成手法１の処理手順を示すフローチャートである。
【図１６】本発明における検査項目生成手法２の処理手順を示すフローチャートである。
【図１７】スライシングについて概念的に示す図である。
【符号の説明】
【００８４】
２００  カバレージ測定ユニット
２０１  測定対象コード取得部
２０２  検査項目情報取得部
２０３  検査部
２０４  検査対象ブランチ特定部
２０５  カバレージ測定部
２０６  検査項目生成部
【図１】
2010140326.tif 000003
【図２】
2010140326.tif 000004
【図３】
2010140326.tif 000005
【図４】
2010140326.tif 000006
【図５】
2010140326.tif 000007
【図６】
2010140326.tif 000008
【図７】
2010140326.tif 000009
【図８】
2010140326.tif 000010
【図９】
2010140326.tif 000011
【図１０】
2010140326.tif 000012
【図１１】
2010140326.tif 000013
【図１２】
2010140326.tif 000014
【図１３】
2010140326.tif 000015
【図１４】
2010140326.tif 000016
【図１５】
2010140326.tif 000017
【図１６】
2010140326.tif 000018
【図１７】
2010140326.tif 000019