(57)【要約】【課題】どの程度のカバレッジであるかを適切に判定する。【解決手段】検査対象プログラムから条件文を抽出する条件文抽出手段２２と、抽出された条件文の真偽組み合わせを網羅する条件判定パターン情報を作成する条件判定パターン作成手段２３とを備える。作成された条件判定パターン情報に対応させて、条件判定パターンの実行時にログ出力を指示するコマンドが設定されたコマンドファイルを生成し、前記検査対象プログラムについて作成された条件判定パターン情報による検査を行うと共に、前記コマンドファイルのコマンドに基づきログ出力を行う検査手段２５を具備する。【選択図】図１
2008257390.tif 000002
【特許請求の範囲】
【請求項１】
検査対象プログラムから条件文を抽出する条件文抽出手段と、
抽出された条件文の真偽組み合わせを網羅する条件判定パターン情報を作成する条件判定パターン作成手段と、
作成された条件判定パターン情報に対応させて、条件判定パターンの実行時にログ出力を指示するコマンドが設定されたコマンドファイルを生成するコマンドファイル生成手段と、
前記検査対象プログラムについて前記条件判定パターン作成手段により作成された条件判定パターン情報による検査を行うと共に、前記コマンドファイルのコマンドに基づきログ出力を行う検査手段と
を具備することを特徴とするプログラム検査装置。
【請求項２】
情報を入力する入力手段と、
この入力手段から前記条件判定パターン作成手段により作成される条件判定パターン情報について追加、変更の入力がなされると、対応して編集を行う編集手段と
を具備することを特徴とする請求項１に記載のプログラム検査装置。
【請求項３】
コマンドファイル生成手段により生成されたコマンドファイルについて少なくとも同意義のコマンドファイルを合成する合成手段を具備することを特徴とする請求項１または請求項２に記載のプログラム検査装置。
【請求項４】
コンピュータに実行されるプログラムであって、実行の際に、
検査対象プログラムから条件文を抽出する条件文抽出手段と、
抽出された条件文の真偽組み合わせを網羅する条件判定パターン情報を作成する条件判定パターン作成手段と、
作成された条件判定パターン情報に対応させて、条件判定パターンの実行時にログ出力を指示するコマンドが設定されたコマンドファイルを生成するコマンドファイル生成手段と、
前記検査対象プログラムについて前記条件判定パターン作成手段により作成された条件判定パターン情報による検査を行うと共に、前記コマンドファイルのコマンドに基づきログ出力を行う検査手段と
を実現することを特徴とするプログラム検査用プログラム。
【請求項５】
コンピュータに対し情報を入力する入力手段から、前記条件判定パターン作成手段により作成される条件判定パターン情報について追加、変更の入力がなされると、対応して編集を行う編集手段を含むことを特徴とする請求項４に記載のプログラム検査用プログラム。
【請求項６】
コマンドファイル生成手段により生成されたコマンドファイルについて少なくとも同意義のコマンドファイルを合成する合成手段を具備することを特徴とする請求項４または請求項５に記載のプログラム検査用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、各種ソフトウエアに係るプログラムの品質を検査する場合に用いると好適なプログラム検査装置及びプログラム検査用プログラムに関するものである。
【背景技術】
【０００２】
近年、組込みマイコンソフトを始め、各種のソフトウエアの品質をカバレッジで示すケースが増加している。ここで、カバレッジは、ソフトウェアコード（パス）に対して「どの程度テストが実施できたか」というテスト率を表すために用いられるものであり、Ｃ０，Ｃ１，Ｃ２という定義が良く用いられている。
【０００３】
上記のＣ０は、命令網羅率（ステートメントカバレッジ）と称されるもので、コード内の全てのステートメントを少なくとも１回実行した率を示す。また、Ｃ１は、分岐網羅率（ブランチカバレッジ）と称されるもので、コード内の全てのブランチを少なくとも１回実行した率を示す。更に、Ｃ２は条件網羅率（コンディションカバレッジ）と称され、コード内のすべての条件を少なくとも１回実行した率を示す。これら以外に、Modified Condition/Decision Coverage (MC/DC)などが知られている。
【０００４】
従来、組込みマイコンのプログラムをテストするためのテストパターンについては、人手により作成が行われていた。これに対し、自動でプログラムテストするためのテストパターンを自動生成するものが特許文献１に記載されている。
【特許文献１】特開平１１−１５６９５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、作成されたテストパターンについてどの程度のカバレッジであるかについては、判断を人が行っており、客観的なものではなかった。本発明は、このようなプログラム検査の現状に鑑みてなされたもので、その目的は、検査対象のプログラムが、作成されたテストパターンについてどの程度のカバレッジであるかを適切に判定することを可能とするプログラム検査装置及びプログラム検査用プログラムを提供することである。また、他の目的は、検査を行う過程において生成されたファイル内容を再利用可能とするプログラム検査装置及びプログラム検査用プログラムを提供することである。
【課題を解決するための手段】
【０００６】
本発明に係るプログラム検査装置は、検査対象プログラムから条件文を抽出する条件文抽出手段と、抽出された条件文の真偽組み合わせを網羅する条件判定パターン情報を作成する条件判定パターン作成手段と、作成された条件判定パターン情報に対応させて、条件判定パターンの実行時にログ出力を指示するコマンドが設定されたコマンドファイルを生成するコマンドファイル生成手段と、前記検査対象プログラムについて前記条件判定パターン作成手段により作成された条件判定パターン情報による検査を行うと共に、前記コマンドファイルのコマンドに基づきログ出力を行う検査手段とを具備することを特徴とする。
【０００７】
本発明に係るプログラム検査装置は、情報を入力する入力手段と、この入力手段から前記条件判定パターン作成手段により作成される条件判定パターン情報について追加、変更の入力がなされると、対応して編集を行う編集手段とを具備することを特徴とする。
【０００８】
本発明に係るプログラム検査装置は、コマンドファイル生成手段により生成されたコマンドファイルについて少なくとも同意義のコマンドファイルを合成する合成手段を具備することを特徴とする。
【０００９】
本発明に係るプログラム検査用プログラムは、コンピュータに実行されるプログラムであって、実行の際に、検査対象プログラムから条件文を抽出する条件文抽出手段と、抽出された条件文の真偽組み合わせを網羅する条件判定パターン情報を作成する条件判定パターン作成手段と、作成された条件判定パターン情報に対応させて、条件判定パターンの実行時にログ出力を指示するコマンドが設定されたコマンドファイルを生成するコマンドファイル生成手段と、前記検査対象プログラムについて前記条件判定パターン作成手段により作成された条件判定パターン情報による検査を行うと共に、前記コマンドファイルのコマンドに基づきログ出力を行う検査手段とを実現することを特徴とする。
【００１０】
本発明に係るプログラム検査用プログラムは、コンピュータに対し情報を入力する入力手段から、前記条件判定パターン作成手段により作成される条件判定パターン情報について追加、変更の入力がなされると、対応して編集を行う編集手段を含むことを特徴とする。
【００１１】
本発明に係るプログラム検査用プログラムは、コマンドファイル生成手段により生成されたコマンドファイルについて少なくとも同意義のコマンドファイルを合成する合成手段を具備することを特徴とする。
【発明の効果】
【００１２】
本発明では、検査対象プログラムについて、作成された条件判定パターン情報による検査を行うと共に、コマンドファイルのコマンドに基づきログ出力を行うので、条件判定パターン情報についてのカバレッジがログ出力として表れ、検査対象のプログラムが、作成されたテストパターンについてどの程度のカバレッジであるかを適切に判定することが可能となる。また、条件判定パターン情報について追加、変更の入力がなされると、対応して編集を行うこともでき、所要の条件判定パターン情報を作成することが可能である。また、作成された条件判定パターン情報やコマンドファイルのコマンドは再利用可能であり、次のプログラム検査に応用でき便利である。
【発明を実施するための最良の形態】
【００１３】
以下、添付図面を参照して本発明に係るプログラム検査装置及びプログラム検査用プログラムの実施例を説明する。各図において、同一の構成要素には同一の符号を付して重複する説明を省略する。プログラム検査装置は図１に示されるように、制御部１０に、キーボードなどの入力手段１１、ＣＲＴやＬＣＤなどの表示手段１２、ＨＤＤやＭＯなどの記憶装置１３が接続されている。記憶装置１３には、検査対象プログラムが記憶されている。
【００１４】
制御部１０には、ＣＰＵ２０とメモリ２１が備えられている。メモリ２１には、プログラム検査用プログラムが記憶され、プログラム検査用プログラムがＣＰＵ２０によって実行され、条件文抽出手段２２、条件判定パターン作成手段２３、コマンドファイル生成手段２４、検査手段２５、編集手段２６、合成手段２７が実現される。
【００１５】
条件文抽出手段２２は、検査対象プログラムから条件文を抽出するものである。条件判定パターン作成手段２３は、条件文抽出手段２２により抽出された条件文の真偽組み合わせを網羅する条件判定パターン情報を作成するものである。
【００１６】
コマンドファイル生成手段２４は、条件判定パターン作成手段２３により作成された条件判定パターン情報に対応させて、条件判定パターンの実行時にログ出力を指示するコマンドが設定されたコマンドファイルを生成するものである。検査手段２５は、検査対象プログラムについて条件判定パターン作成手段２３により作成された条件判定パターン情報による検査を行うと共に、上記コマンドファイルのコマンドに基づきログ出力を行うものである。
【００１７】
編集手段２６は、入力手段１１から上記条件判定パターン作成手段２３により作成される条件判定パターン情報について追加、変更の入力がなされると、対応して編集を行うものである。合成手段２７は、コマンドファイル生成手段２４により生成されたコマンドファイルについて少なくとも同意義のコマンドファイルを合成するものである。これら編集手段２６と合成手段２７は、必要に応じて用いられる。
【００１８】
ＣＰＵ２０は、プログラム検査用プログラムを実行して図２のフローチャートに示される処理を行い、上記各手段を実現するので、このフローチャートに基づきプログラム検査装置の動作を説明する。スタートとなるとＣＰＵ２０は、記憶装置１３から検査対象プログラムを取り出し、この検査対象プログラムから条件文を抽出する（Ｓ１１）。
【００１９】
ここで、検査対象プログラムが図３に示されるようにＣ言語により記述されたものであるとすると、条件文は「ｉｆ」により始まり、条件が論理積（＆＆（アンド））や論理和（｜｜（ＯＲ））などにより結合されたものである。即ち、ステップＳ１１においては、図３の検査対象プログラムの６行目、１０行目、１５行目、１７行目、２４行目が該当し、図４に示される条件文抽出ファイルが得られる。図４において、第１フィールドには行番号（複数行の場合には、先頭行番号）が格納され、第２フィールドには抽出した条件文が格納され、第３フィールドには識別情報が格納される。第３フィールドの識別情報として、この実施例ではコンパイルフラグを用いている。この図４のファイルについても、編集手段２６による編集が可能である。
【００２０】
ステップＳ１１に続いて、抽出された条件文の真偽組み合わせを網羅する条件判定パターン情報を作成する（Ｓ１２）。例えば、抽出した図３の条件文において、第６行目の条件文では、条件「ｂ＿ａａａ１＝＝ＯＦＦ」、条件「ｂ＿ａａａ２＝＝ＯＦＦ」、条件「ｂ＿ａａａ３＝＝ＯＦＦ」に関する真偽の組み合わせが考えられ、これに対する全ての条件が偽である条件「ｂ＿ａａａ１！＝ＯＦＦ」、条件「ｂ＿ａａａ２！＝ＯＦＦ」、条件「ｂ＿ａａａ３！＝ＯＦＦ」となる。
【００２１】
３つの条件の真偽に関し、真を「○」で表し、偽を「×」で表すならば、「○○○」、「×○○」、「○×○」、「○○×」、「××○」、「×○×」、「○××」、「×××」の８通りの組み合わせが考えられ、これが第６行目の条件文に関する条件判定パターン情報としてステップＳ１２において図５に示すように作成される。１０行目、１５行目、１７行目、２４行目の条件文に関する条件判定パターン情報としても同様に作成される。
【００２２】
ステップＳ１２の次に、必要な場合に、作成された条件判定パターン情報について追加、変更の入力がなされると、対応して編集を行う（Ｓ１３）。例えば、図３のプログラムにおける第６行目の条件文は上記で示したように８通りの組み合わせが考えられるが、必要とする組み合わせとなるように削除、変更するなどの編集を行うことが出来る。ここでは、図５の例を示すが、一般的に図５の例に限られることなく、その他必要な変更や追加に係る編集が行われ、網羅的な条件判定パターン情報が得られる。
【００２３】
以上のようにして、編集された結果の条件判定パターン情報ファイルを図５に示す。このファイルの第１フィールドには、検査対象プログラムの先頭行番号が格納され、第２フィールドには、真偽に関し、真を「○」で表し、偽を「×」で表した場合の真偽の組み合わせが格納され、第３フィールドには、条件パターン情報毎にユニークな条件番号が格納され、第４フィールドには、条件式が格納され、第５フィールドには、識別情報としてコンパイルフラグが格納される。
【００２４】
ステップＳ１３の次に、作成された条件判定パターン情報に対応させて、条件判定パターンの実行時にログ出力を指示するコマンドが設定されたコマンドファイルを生成する（Ｓ１４）。具体的には、識別情報であるコンパイルフラグ毎に条件判定パターンの実行時にログ出力を指示するコマンドが設定されたコマンドファイルを生成する。
【００２５】
作成された条件判定パターン情報は、図５に示した通りであり、識別情報であるコンパイルフラグは図５から分かるように、条件文の先頭行番号に対応して、行番号６については「ＳＷＡＡＡ＝＝ＳＷ０Ｎ」、行番号１０については「！ＳＷＡＡＡ＝＝ＳＷ０Ｎ」、行番号１５、１７については「／＊コンパイルフラグが無い＊／」、行番号２４については「ＳＷＢＢＢ！＝＝ＮＯＴ＿ＳＷ０Ｎ」である。
【００２６】
上記ステップＳ１４においては、コンパイルフラグ毎にコマンドファイルが作成されるので、コンパイルフラグとコマンドファイルの対応関係を示すコマンド管理ファイルが作成される。コマンド管理ファイルは、コンパイルフラグ（「／＊コンパイルフラグが無い＊／」も含む）にそれぞれ対応して図６に示すようにファイル名「ｔｅｓｔ＿００．ｔｘｔ」、「ｔｅｓｔ＿０１．ｔｘｔ」、「ｔｅｓｔ＿０２．ｔｘｔ」、「ｔｅｓｔ＿０３．ｔｘｔ」が対応付けられて記憶されている。
【００２７】
図６に示されるファイル名「ｔｅｓｔ＿００．ｔｘｔ」のコマンドファイルの内容に係るコマンドは、図７に示される。このコマンドは、Ｇｒｅｅｎ  Ｈｉｌｌｓ社製の組み込みソフトウエア開発環境（ＭＵＬＴＩ）によるものである。この図７のファイルにおける第１行目の「ｂ」から第５行目の「｝」までが一連のコマンドであるので、これを説明する。第１行目の「ｂ」は、コマンドに固定的に定められた符号であり、次の「”ｔｅｓｔ．ｃ”」は、検査対象ソース名を表し、次の「＃１５」は行番号１５を表している。
【００２８】
図７における第１行目の末尾の「｛」は次にプログラムが記述されることを示し、第５行目の「｝」とペアとなっている。第２行目の「ｉｆ」は条件文を示し、次の「（ｔ＿ｐａｒａ  ！＝１０）」は、条件パターン情報を示している。これに続く、「ｐｒｉｎｔｆ（」は、””により囲まれる文字を画面に出力する命令であり、固定である。そして、””により、条件番号（組合番号）として「［０３−０１］」と「Ｎｏ．％３ｄ￥ｎ」とにより「［０３−０１］Ｎｏ．ｎ」（ｎは検査パターン番号）を出力することを示す。
【００２９】
「Ｎｏ．％３ｄ￥ｎ」に続く「ｇ＿ｄｂｇｉｉ」は検査パターン番号であり、当該検査対象プログラムに共通のものであり、更に続く「）；｝ｅｌｓｅ｛ｒｅｓｕｍ｝；；」は条件不成立の場合に復旧することを示す。
【００３０】
図７における第４行目の「ｃ；」は、コマンドに固定的に定められた符号及び終了符号であり、次の第５行目の「｝」は、この文までが一連のコマンドであることを示す。第６行目以降は、行番号１７に関するコマンドであり、上記で説明した意味に準じるものである。
【００３１】
図８には、図６におけるファイル名「ｔｅｓｔ＿０１．ｔｘｔ」のコマンドファイルの内容に係るコマンドが示され、図９（ａ）には、図６におけるファイル名「ｔｅｓｔ＿０２．ｔｘｔ」のコマンドファイルの内容に係るコマンドが示され、図９（ｂ）には、図６におけるファイル名「ｔｅｓｔ＿０３．ｔｘｔ」のコマンドファイルの内容に係るコマンドが示されている。これら図６におけるファイル名「ｔｅｓｔ＿０１．ｔｘｔ」、ファイル名「ｔｅｓｔ＿０２．ｔｘｔ」及びファイル名「ｔｅｓｔ＿０３．ｔｘｔ」のコマンドファイルの内容に関しても、上記の図７により各構成文を説明したものに準じた意味を有するものである。
【００３２】
ステップＳ１４の次に、必要な場合に、上記ステップＳ１４にて生成されたコマンドファイルについて少なくとも同意義のコマンドファイルを合成する（Ｓ１５）。図１０（a）に示されるコンパイルフラグ情報ファイルには、識別情報であるコンパイルフラグ「ＳＷＡＡＡ＝＝ＳＷ０Ｎ」、識別情報であるコンパイルフラグ「ＳＷＢＢＢ＝＝ＳＷ０Ｎ」、識別情報であるコンパイルフラグ「ＳＷＣＣＣ＝＝０ｘ８０」を記載、編集する。
【００３３】
図１０(b)のコマンド合成ファイルでは、コンパイルフラグ「/*コンパイルフラグが無い*/」、「ＳＷＡＡＡ＝＝ＳＷ０Ｎ」、「ＳＷＢＢＢ＝＝ＳＷ０Ｎ」に対応してファイル名「ｔｅｓｔ００．ｔｘｔ」、「ｔｅｓｔ０１．ｔｘｔ」、「ｔｅｓｔ０３．ｔｘｔ」のコマンドファイルが記憶され、コマンドファイル「ｔｅｓｔ０２．ｔｘｔ」は合成の結果削除される。
【００３４】
次に、ＣＰＵ２０は、検査対象プログラムについて上記で作成された条件判定パターン情報による検査を行うと共に、上記コマンドファイルのコマンドに基づきログ出力を行う（Ｓ１６）。つまり、ＣＰＵ２０は、前述の「ＭＵＬＴＩ」を用いて記憶装置１３の検査対象プログラムの検査を行う際に、以上のようにして合成されたコマンドファイルを読み込み、作成された条件判定パターン情報による検査を行う。これにより、コマンドファイルのコマンドが実行され、条件成立の場合にログ出力が行われる。
【００３５】
この結果、ステップＳ１４において作成されステップＳ１５において合成した条件判定パターン情報中の幾つかのパターンに該当した場合には、コマンドファイルにおける対応のコマンドによってログ出力がなされ、例えば図１１に示すように、［０１−０１］、［０３−０２］などで示される条件番号（組合番号）と「Ｎｏ．１」や「Ｎｏ．２」等の検査パターン番号が出力される。
【００３６】
本実施例では、ＣＰＵ２０が上記図１１に示されるログ出力ファイルの情報を用いて、検査結果を図１２に示すように出力する（Ｓ１７）。即ち、ＣＰＵ２０は、図５で示すように、作成、編集され必要とされる検査パターンに対して、検査結果を表示する。第１フィールドには条件文の先頭行番号を表示し、第２フィールドには条件パターン情報毎にユニークな条件番号を表示し、第３フィールドには、識別情報としてコンパイルフラグを表示し、第４フィールドにはログ出力の有無について出力有を○にて表示する。
【００３７】
従って、○が表示されている行に対応する条件パターン情報については、検査対象プログラムにおいて実行されることが確保されたことを示し、○が表示されている行が多い程、つまり○が多い程、当該検査対象プログラムにおけるカバレッジの率が高く高品質であることが一目で判別できる。
【００３８】
上記図３の検査対象プログラムについて、コンパイルフラグ「ＳＷＡＡＡ＝＝ＳＷ０Ｎ」とコンパイルフラグ「ＳＷＢＢＢ＝＝ＳＷ０Ｎ」について考察すると、条件パターン情報毎にユニークな条件番号０１−０１〜０１−０８、０３−０１〜０３−０２、０４−０１〜０４−０２、０５−０１〜０５−０２についてログ出力がなされ、これら全てに○が表示されている場合には、作成した条件パターン情報についてカバレッジが網羅されていると判定できる。なお、作成された条件判定パターン情報やコマンドファイルのコマンドは例えば、記憶装置１３に記憶され、必要時に読み出しを行って再利用可能であり、次のプログラム検査に応用できる。
【図面の簡単な説明】
【００３９】
【図１】本発明に係るプログラム検査装置の実施例の構成を示すブロック図。
【図２】本発明に係るプログラム検査装置の実施例の動作を説明するためのフローチャート。
【図３】本発明に係るプログラム検査装置の実施例による検査を行う対象である検査対象プログラムの一例を示す図。
【図４】本発明に係るプログラム検査装置の実施例による検査を行う対象である検査対象プログラムから条件文を抽出した結果である条件文抽出ファイルの内容を示す図。
【図５】図４の条件文抽出ファイルについて編集された結果の条件判定パターン情報ファイルの内容を示す図。
【図６】本発明に係るプログラム検査装置の実施例によって作成されるコマンド管理ファイルの内容を示す図。
【図７】本発明に係るプログラム検査装置の実施例によって作成されるコマンドファイルの内容を示す図。
【図８】本発明に係るプログラム検査装置の実施例によって作成されるコマンドファイルの内容を示す図。
【図９】本発明に係るプログラム検査装置の実施例によって作成されるコマンドファイルの内容を示す図。
【図１０】本発明に係るプログラム検査装置の実施例によって作成されるファイルの内容を示す図であり、図１０（a）はコンパイルフラグ情報ファイルを示し、図１０(b)はコマンド合成ファイルを示す。
【図１１】本発明に係るプログラム検査装置の実施例によって出力されるログファイルの内容を示す図。
【図１２】本発明に係るプログラム検査装置の実施例によって出力されるログのファイルを用いて作成される検査結果の表示例を示す図。
【符号の説明】
【００４０】
１０  制御部
１１  入力手段
１２  表示手段
１３  記憶装置
２０  ＣＰＵ
２１  メモリ
２２  条件文抽出手段
２３  条件判定パターン作成手段
２４  コマンドファイル生成手段
２５  検査手段
２６  編集手段
２７  合成手段
【図１】
2008257390.tif 000003
【図２】
2008257390.tif 000004
【図３】
2008257390.tif 000005
【図４】
2008257390.tif 000006
【図５】
2008257390.tif 000007
【図６】
2008257390.tif 000008
【図７】
2008257390.tif 000009
【図８】
2008257390.tif 000010
【図９】
2008257390.tif 000011
【図１０】
2008257390.tif 000012
【図１１】
2008257390.tif 000013
【図１２】
2008257390.tif 000014