(57)【要約】【課題】デグレードを引き起こすおそれを低減させた論理検証システムを提供する。【解決手段】論理検証システム１１は、比較部１２と、修正関数抽出部１３と、テスト実行部１４と、コードカバレッジ測定部１５と、判断部１６と、出力部１７とを備える。比較部１２は、複数の関数毎の修正前のソースコードと修正後のソースコードとを比較する。修正関数抽出部１３は、比較部１２による比較結果により、複数の関数のうち、差分があった関数を修正後関数として抽出する。コードカバレッジ測定部１５は、テスト実行部１４により実行されたテスト結果から、修正後関数のコードカバレッジを測定する。判断部１６は、コードカバレッジ測定部１５により測定された修正後関数のコードカバレッジから、修正後関数のテストが実行されたか否かを判断する。出力部１７は、修正関数抽出部１３による抽出結果および判断部１６による判断結果を出力する。【選択図】図１
2017117213.tif 000002
【特許請求の範囲】
【請求項１】
コンピューターによる情報処理を用いて、処理の単位となるソースコード群を複数含んで構成されるプログラムの修正後の論理検証を行う論理検証システムであって、
複数の前記ソースコード群毎の修正前のソースコードと修正後のソースコードとを比較する比較部と、
前記比較部による比較結果により、複数の前記ソースコード群のうち、差分があった前記ソースコード群を修正後ソースコード群として抽出する修正ソースコード群抽出部と、
前記修正ソースコード群抽出部により抽出された前記修正後ソースコード群を含むプログラムに対してテストを実行するテスト実行部と、
前記テスト実行部により実行されたテスト結果から、前記修正後ソースコード群のコードカバレッジを測定するコードカバレッジ測定部と、
前記コードカバレッジ測定部により測定された前記修正後ソースコード群のコードカバレッジから、前記修正後ソースコード群のテストが実行されたか否かを判断する判断部と、
前記修正ソースコード群抽出部による抽出結果および前記判断部による判断結果を出力する出力部とを備える、論理検証システム。
【請求項２】
前記修正ソースコード群抽出部により抽出された差分があった前記ソースコード群の修正前のコードカバレッジを保持するコードカバレッジ保持部をさらに備え、
前記判断部は、前記修正後コードカバレッジが前記修正前コードカバレッジ保持部により保持された修正前コードカバレッジよりも高ければ、問題がないと判断する、請求項１に記載の論理検証システム。
【請求項３】
前記判断部により前記修正後ソースコード群のテストが実行されていないと判断されれば、追加テストの実行を促す旨の報知を行う報知部をさらに備える、請求項１または２に記載の論理検証システム。
【請求項４】
前記ソースコード群は、関数を含む、請求項１〜３のいずれか１項に記載の論理検証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、論理検証システムに関するものである。
【背景技術】
【０００２】
例えば、画像形成装置といった電子機器を作動させて何らかの処理を行う上においては、複数のソフトウェアが実行される。ソフトウェアの実行に先立って、ソフトウェアを構成するプログラムを記述したソースコードが適切か否かを、テストデータを用いたテストによって検証する場合がある。ソフトウェアの論理検証に関する技術が、特開２０１０−１４６０３７号公報（特許文献１）、および特開２０１３−２００６６２号公報（特許文献２）に開示されている。
【０００３】
特許文献１によると、論理検証システムは、乱数テストデータ生成部と、ソフトウェアカバレッジ情報出力部と、ハードウェアカバレッジ情報出力部とを備える構成である。そして、論理検証実行時のカバレッジ出力情報の変化から、テストデータの有効性を評価し、有効なテストデータのみを選別して蓄積している。また、テスト再実行時は、有効なテストデータのみ再実行することにより検証効率を向上し、論理検証期間を短縮することとしている。
【０００４】
特許文献２によると、論理検証システムは、乱数テストデータ生成部と、論理シミュレータと、カバレッジ判定部と、追加テスト条件生成判定部とを有する構成である。乱数テストデータ生成部は、テスト条件情報に基づき乱数テストデータを生成する処理を行う。論理シミュレータは、乱数テストデータを入力データとして対象論理の論理シミュレーション処理を実行しカバレッジ情報を出力する。カバレッジ判定部は、カバレッジ情報の出力と、カバレッジの網羅率を示すカバレッジ蓄積情報とを用いて、テスト時のカバレッジの変化の判定処理を行い、カバレッジが向上した部分に対応する乱数テストデータまたはそのテスト条件情報をテスト条件蓄積情報として蓄積する処理を行う。追加テスト条件生成判定部は、カバレッジ蓄積情報とテスト条件蓄積情報とをもとに作成されたテスト条件生成判定情報を用いて、追加テスト条件を生成するか判定処理し、その結果、追加テスト条件情報を生成して格納する処理を行う。また、追加テスト条件生成判定部は、テスト条件生成判定情報を参照し、前回のテスト時のカバレッジ情報と、今回のテスト時のカバレッジ情報とを比較し、前回のテスト時にはカバーできていたが今回のテスト時にはカバーできていないテストケースを抜き出し、追加テスト条件として生成する処理を行う。そして、乱数テストデータ生成部により、追加テスト条件を用いたテストを可能としている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−１４６０３７号公報
【特許文献２】特開２０１３−２００６６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
プログラムを検証する論理検証システムにおいて、プログラムの検証の際に用いられるカバレッジテストは、いわゆる実行網羅率を定量的に測定するものである。
【０００７】
ここで、一旦作成されたソフトウェアの不具合を修正する際には、プログラムを構成する複数のソースコード群としての関数のうち、一部の関数におけるソースコードの修正を伴うことが多い。そうすると、修正後のカバレッジテストにおいて、ソースコードの修正がなされた関数がテストを実行されたか否かが不明となるおそれがある。修正がなされた関数のテストが実行されていなかった場合、その関数の修正に起因した不具合が顕在化するおそれがある。その結果、複数の関数から構成されるプログラムについて、デグレードを引き起こすおそれが高くなる。このような場合に、上記した特許文献１、および特許文献２に開示の技術では、対応することは困難である。
【０００８】
この発明の目的は、デグレードを引き起こすおそれを低減させた論理検証システムを提供することである。
【課題を解決するための手段】
【０００９】
この発明の論理検証システムは、コンピューターによる情報処理を用いて、処理の単位となるソースコード群を複数含んで構成されるプログラムの修正後の論理検証を行う。論理検証システムは、比較部と、修正ソースコード群抽出部と、テスト実行部と、コードカバレッジ測定部と、判断部と、出力部とを備える。比較部は、複数のソースコード群毎の修正前のソースコードと修正後のソースコードとを比較する。修正ソースコード群抽出部は、比較部による比較結果により、複数のソースコード群のうち、差分があったソースコード群を修正後ソースコード群として抽出する。テスト実行部は、修正ソースコード群抽出部により抽出された修正後ソースコード群を含むプログラムに対してテストを実行する。コードカバレッジ測定部は、テスト実行部により実行されたテスト結果から、修正後ソースコード群のコードカバレッジを測定する。判断部は、コードカバレッジ測定部により測定された修正後ソースコード群のコードカバレッジから、修正後ソースコード群のテストが実行されたか否かを判断する。出力部は、修正ソースコード群抽出部による抽出結果および判断部による判断結果を出力する。
【発明の効果】
【００１０】
このような論理検証システムによれば、プログラムを構成する複数のソースコード群のうち、修正後のソースコード群において、判断部により修正後ソースコード群のテストが実行されたか否かが判断される。そして、出力部により、修正ソースコード群抽出部によって抽出された抽出結果および判断結果が出力される。そうすると、テストが実行されていない修正後ソースコード群を出力により把握することが容易となる。したがって、例えば、修正後のソースコード群でテストが実行されていないものに対し、追加テストの実行を促進することができる。その結果、その修正後ソースコード群に起因した不具合の発生を低減することができる。以上より、このような構成の論理検証システムによれば、デグレードを引き起こすおそれを低減することができる。
【図面の簡単な説明】
【００１１】
【図１】この発明の一実施形態に係る論理検証システムの構成を示すブロック図である。
【図２】図１に示す論理検証システムを用いて不具合の発生したプログラムＰの修正後の論理検証を行う際の処理の流れを示すフローチャートである。
【図３】修正前コードカバレッジと修正後コードカバレッジとを示す図である。
【図４】判断結果の出力を示す図である。
【発明を実施するための形態】
【００１２】
以下、この発明の実施の形態を説明する。図１は、この発明の一実施形態に係る論理検証システム１１の構成を示すブロック図である。なお、図１中の矢印は、制御信号や制御、データの流れを示している。
【００１３】
図１を参照して、論理検証システム１１は、ハードウェアとしてのコンピューターによる情報処理を用いて、処理の単位となるソースコード群を複数含んで構成されるプログラムの修正後の論理検証を行う。なお、ここでは、処理の単位となるソースコード群として、関数が用いられる。論理検証システム１１は、比較部１２と、修正ソースコード群抽出部としての修正関数抽出部１３と、テスト実行部１４と、コードカバレッジ測定部１５と、判断部１６と、出力部１７と、コードカバレッジ保持部１８とを備える。
【００１４】
比較部１２は、複数の関数毎の修正前のソースコードと修正後のソースコードとを比較する。修正関数抽出部１３は、比較部１２による比較結果により、複数の関数のうち、差分があった関数を修正後関数として抽出する。テスト実行部１４は、修正関数抽出部１３により抽出された修正後関数を含むプログラムに対してテストを実行する。コードカバレッジ測定部１５は、テスト実行部１４により実行されたテスト結果から、修正後関数のコードカバレッジを測定する。判断部１６は、コードカバレッジ測定部１５により測定された修正後関数のコードカバレッジから、修正後関数のテストが実行されたか否かを判断する。出力部１７は、修正関数抽出部１３による抽出結果および判断部１６による判断結果を出力する。
【００１５】
コードカバレッジ保持部１８は、修正関数抽出部１３により抽出された差分があった関数の修正前のコードカバレッジを保持する。また、判断部１６は、修正後コードカバレッジがコードカバレッジ保持部１８により保持された修正前コードカバレッジよりも高ければ、問題がないと判断する。
【００１６】
次に、このような構成の論理検証システム１１を用いて、不具合の発生したプログラムＰの修正後の論理検証を行う際の処理の流れについて説明する。図２は、図１に示す論理検証システム１１を用いて不具合の発生したプログラムＰの修正後の論理検証を行う際の処理の流れを示すフローチャートである。なお、このプログラムＰは、複数の関数から構成されているものとする。具体的には、プログラムＰは、関数ａ（ｘ）、関数ｂ（ｘ）、関数ｃ（ｘ）、関数ｄ（ｘ）、関数ｅ（ｘ）、および関数ｆ（ｘ）という六つの関数から構成されている。
【００１７】
なお、コードカバレッジ保持部１８には、プログラムＰを構成する関数ａ（ｘ）〜関数ｆ（ｘ）の修正前ソースコード２２を用いてテスト実行部１４によりテストが実行され、コードカバレッジ測定部１５により測定された修正前コードカバレッジ２４が、関数ａ（ｘ）〜関数ｆ（ｘ）毎に保持されている。
【００１８】
図１および図２を参照して、プログラムＰを実行した際に、不具合が発生したとする。そうすると、ユーザーは、プログラムＰにおける修正個所を探し出し、修正を行う。ここで、プログラムＰを構成する六つの関数ａ（ｘ）〜関数ｆ（ｘ）のうち、関数ｂ（ｘ）、関数ｄ（ｘ）、および関数ｅ（ｘ）に修正を行ったとする。その後、テスト実行部１４により修正後関数を含むプログラムＰに対してテストを実行する。
【００１９】
ここで、テストの実行に先立ち、比較部１２は、関数ａ（ｘ）〜関数ｆ（ｘ）の修正前のソースコードと修正後のソースコードとを比較する（図２において、ステップＳ１１、以下、「ステップ」を省略する）。ソースコードの比較においては、修正前ソースコード２２と修正後ソースコード２３とを比較して行われる。
【００２０】
その後、修正関数抽出部１３は、比較部１２による比較結果により、複数の関数ａ（ｘ）〜関数ｆ（ｘ）のうち、差分があった関数を抽出する（Ｓ１２）。この場合、差分があった関数が修正後関数であり、関数ｂ（ｘ）、関数ｄ（ｘ）、および関数ｅ（ｘ）の三つが抽出される。
【００２１】
その後、修正後関数である関数ｂ（ｘ）、関数ｄ（ｘ）、および関数ｅ（ｘ）を含むプログラムＰに対して、テスト実行部１４により、テストデータ２１を用いてテストが実行される（Ｓ１３）。そうすると、コードカバレッジ測定部１５は、テスト実行部１４により実行されたテスト結果から、修正関数抽出部１３により抽出された関数ｂ（ｘ）、関数ｄ（ｘ）、および関数ｅ（ｘ）の修正後のコードカバレッジを測定する（Ｓ１４）。
【００２２】
次に、修正前のコードカバレッジと修正後のコードカバレッジとを比較する（Ｓ１５）。この場合、修正前コードカバレッジ２４および修正後コードカバレッジ２５から得られたそれぞれのコードカバレッジを比較する。具体的には、修正がなされた修正後関数である関数ｂ（ｘ）、関数ｄ（ｘ）、および関数ｅ（ｘ）の三つについて比較する。
【００２３】
そして、判断部１６は、修正がなされた関数ｂ（ｘ）、関数ｄ（ｘ）、および関数ｅ（ｘ）の三つのそれぞれについて、コードカバレッジ測定部１５により測定された修正後関数のコードカバレッジから、修正後関数のテストが実行されたか否かを判断する（Ｓ１６）。この場合、修正がなされた修正後関数である関数ｂ（ｘ）、関数ｄ（ｘ）、および関数ｅ（ｘ）のそれぞれの修正後コードカバレッジ２５が、０％であるか否かを判断する。
【００２４】
また、判断部１６は、修正後コードカバレッジ２５が修正前コードカバレッジ保持部１８により保持された修正前コードカバレッジ２４よりも高いか否かを検討し、高ければ、問題がないと判断する。この場合、関数ｂ（ｘ）、関数ｄ（ｘ）、および関数ｅ（ｘ）のそれぞれの修正後コードカバレッジ２５が、それぞれの修正前コードカバレッジ２４よりも高いか否かをチェックする。そして、それぞれの関数ｂ（ｘ）、関数ｄ（ｘ）、および関数ｅ（ｘ）について、修正後コードカバレッジ２５が修正前コードカバレッジ２４よりも高ければ、問題がないと判断する。
【００２５】
図３は、修正前コードカバレッジ２４と修正後コードカバレッジ２５とを示す図である。図３を参照して、修正のなされた関数ｂ（ｘ）のデータ２６ａを見てみると、修正前のコードカバレッジが５０％であったのに対し、修正後のコードカバレッジは、０％である。すなわち、関数ｂ（ｘ）については、修正後コードカバレッジ２５が０％であるため、関数ｂ（ｘ）については、修正後のソースコードについて、テストがなされていない状態と把握できる。ここで、判断部１６は、関数ｂ（ｘ）について、問題があると判断する。
【００２６】
一方、修正のなされた関数ｄ（ｘ）のデータ２６ｂを見てみると、修正前コードカバレッジ２４が６０％であったのに対し、修正後コードカバレッジ２５は、９０％である。すなわち、関数ｄ（ｘ）については、修正後コードカバレッジ２５が０％ではなく、かつ、修正前コードカバレッジ２４よりも高くなっている。つまり、関数ｄ（ｘ）については、修正後のソースコードについて、修正前のソースコードの方が、テストが実行されている状態である。ここで、判断部１６は、関数ｄ（ｘ）について、問題がないと判断する。
【００２７】
また、修正のなされた関数ｅ（ｘ）のデータ２６ｃを見てみると、修正前コードカバレッジ２４が６０％であったのに対し、修正後コードカバレッジ２５は、８０％である。すなわち、関数ｄ（ｘ）については、修正後コードカバレッジ２５が０％ではなく、修正前コードカバレッジ２４よりも高くなっている。つまり、関数ｅ（ｘ）についても、修正後のソースコードについて、修正前のソースコードの方が、テストが実行されている状態である。ここで、判断部１６は、関数ｅ（ｘ）について、問題がないと判断する。
【００２８】
その後、判断結果を出力する（Ｓ１７）。図４は、判断結果の出力を示す図である。図４を参照して、出力２７については、修正後のプログラムＰを構成する関数ａ（ｘ）〜関数ｆ（ｘ）毎のデータ２８ａ、２８ｂ、２８ｃ、２８ｄ、２８ｅ、２８ｆから構成されている。データ２８ａ、２８ｃ、２８ｆにおいて、それぞれ関数ａ（ｘ）、関数ｃ（ｘ）、および関数ｆ（ｘ）について、ソースコードの修正がなく、関数ａ（ｘ）、関数ｃ（ｘ）、および関数ｆ（ｘ）に問題がない旨が出力結果として示されている。データ２８ｄ、２８ｅにおいては、それぞれ関数ｄ（ｘ）、および関数ｅ（ｘ）について、ソースコードの修正があったが、それぞれの修正後コードカバレッジ２５が０％ではなく、かつ、修正前コードカバレッジ２４よりも高く、各関数ｄ（ｘ）、および関数ｅ（ｘ）に問題がない旨が出力結果として示されている。
【００２９】
一方、データ２８ｂにおいては、関数ｂ（ｘ）について、ソースコードの修正があり、修正後コードカバレッジ２５が０％であるため、関数ｂ（ｘ）に問題がある旨が出力結果として示されている。
【００３０】
このような論理検証システム１１によれば、プログラムを構成する複数の関数のうち、修正後の関数において、判断部１６により修正後関数のテストが実行されたか否かが判断される。そして、出力部１７により、修正関数抽出部１３によって抽出された抽出結果および判断結果が出力される。そうすると、テストが実行されていない修正後関数を出力により把握することが容易となる。したがって、例えば、修正後関数でテストが実行されていないものに対し、追加テストの実行を促進することができる。その結果、その修正後関数に起因した不具合の発生を低減することができる。以上より、このような構成の論理検証システム１１によれば、デグレードを引き起こすおそれを低減することができる。
【００３１】
この場合、判断部１６は、修正後コードカバレッジ２５が修正前コードカバレッジ保持部１８により保持された修正前コードカバレッジ２４よりも高いか否かを検討し、高ければ、問題がないと判断しているため、修正後関数に対しての問題の有無を容易に把握することができる。
【００３２】
なお、上記の実施の形態において、判断部１６により修正後関数のテストが実行されていないと判断されれば、追加テストの実行を促す旨の報知を行う報知部をさらに備える構成としてもよい。こうすることにより、より追加テストの実行の促進を図ることができる。
【００３３】
また、判断部１６は、修正後コードカバレッジがコードカバレッジ保持部１８により保持された修正前コードカバレッジよりも高ければ、問題がないと判断することとしたが、判断部１６は、他の基準、例えば、修正後コードカバレッジ２５が所定の値以上であれば、問題がないと判断することとしてもよい。また、修正後コードカバレッジ２５が所定の値未満であるか、または、修正後コードカバレッジ２５が修正前コードカバレッジよりも低ければ、問題があると判断することとしてもよい。
【００３４】
なお、上記の実施の形態において、ソースコード群として関数を用いることとしたが、ソースコード群としては、関数に限られない。
【００３５】
今回開示された実施の形態はすべての点で例示であって、どのような面からも制限的なものではないと理解されるべきである。本発明の範囲は上記した説明ではなく、特許請求の範囲によって規定され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【産業上の利用可能性】
【００３６】
この発明に係る論理検証システムは、デグレードを引き起こすおそれの低減が要求される場合に、特に有効に利用される。
【符号の説明】
【００３７】
１１  論理検証システム、１２  比較部、１３  修正関数抽出部、１４  テスト実行部、１５  コードカバレッジ測定部、１６  判断部、１７  出力部、１８  コードカバレッジ保持部、２１  テストデータ、２２  修正前ソースコード、２３  修正後ソースコード、２４  修正前コードカバレッジ、２５  修正後コードカバレッジ、２６ａ，２６ｂ，２６ｃ，２８ａ，２８ｂ，２８ｃ，２８ｄ，２８ｅ，２８ｆ  データ、２７  出力。
【図１】
2017117213.tif 000003
【図２】
2017117213.tif 000004
【図３】
2017117213.tif 000005
【図４】
2017117213.tif 000006