(57)【要約】【課題】検証を行うテストの順位を精度よく決める。【解決手段】実施形態の検証順決定プログラムは、コンピュータに、論理検証にかかるモジュールごとに障害が生じる度合いを予測した予測情報と、論理検証のテストを実施した場合の、モジュールに対するテストの網羅性とをもとに、テストごとに、論理検証を行う優先度合いを示す優先度を算出する処理を実行させる。また、検証順決定プログラムは、コンピュータに、テストごとに算出された優先度をもとに、テストの検証を行う検証順を出力する処理を実行させる。【選択図】図２
2016091062.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
論理検証にかかるモジュールごとに障害が生じる度合いを予測した予測情報と、論理検証のテストを実施した場合の、前記モジュールに対する前記テストの網羅性とをもとに、前記テストごとに、論理検証を行う優先度合いを示す優先度を算出し、
前記テストごとに算出された優先度をもとに、前記テストの検証を行う検証順を出力する
処理を実行させることを特徴とする検証順決定プログラム。
【請求項２】
前記算出する処理は、前記テストごとの、当該テストが障害を検出した実績をもとに、前記優先度を算出する
ことを特徴とする請求項１に記載の検証順決定プログラム。
【請求項３】
前記算出する処理は、前記モジュールごとに、前記テストごとの優先度を算出し、
前記出力する処理は、前記モジュールごとに算出された前記テストごとの優先度を前記テストごとに合算した優先度をもとに、前記検証順を出力する
ことを特徴とする請求項１又は２に記載の検証順決定プログラム。
【請求項４】
コンピュータが、
論理検証にかかるモジュールごとに障害が生じる度合いを予測した予測情報と、論理検証のテストを実施した場合の、前記モジュールに対する前記テストの網羅性とをもとに、前記テストごとに、論理検証を行う優先度合いを示す優先度を算出し、
前記テストごとに算出された優先度をもとに、前記テストの検証を行う検証順を出力する
処理を実行することを特徴とする検証順決定方法。
【請求項５】
論理検証にかかるモジュールごとに障害が生じる度合いを予測した予測情報と、論理検証のテストを実施した場合の、前記モジュールに対する前記テストの網羅性とをもとに、前記テストごとに、論理検証を行う優先度合いを示す優先度を算出する算出部と、
前記テストごとに算出された優先度をもとに、前記テストの検証を行う検証順を決定する決定部と
を有することを特徴とする検証順決定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、検証順決定プログラム、検証順決定方法および検証順決定装置に関する。
【背景技術】
【０００２】
近年、設計技術の進歩により、ソフトウエアやハードウエアの開発対象が大規模化している。設計開発時には、開発対象に対する動作検証を行い、開発対象の動作を確認しつつ、設計を進めることが行われている。例えば、ＬＳＩ（Large  Scale  Integrated  Circuit）では、複数のＲｅｇｒｅｓｓｉｏｎテストによりシステム論理検証を行う。そして、検証によって何らかの障害が見つけ出された場合は、その障害を修正して動作の再確認を行う。
【０００３】
この検証のためのテストは、規模によって数週間かかる場合があり、多くのコストがかかる。また、時間短縮のために並列化して行われるが、並列化にもコスト的に限界がある。したがって、設計開発においては、複数のテストの中から障害を検出する可能性のあるテストを早い段階で行い、そのテストにより障害を見つけ出すことで、設計期間を短縮でき、コストを削減できる。この設計開発におけるコスト削減のため、プログラムモジュールの不具合検出工数を予測し、テストの優先度を導出する技術が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−２５６２０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、テストの優先度を精度よく決めることができず、障害を検出する可能性のあるテストを早い段階で行うことができないことから、コストを削減できない場合がある。例えば、障害にかかる特定のモジュールが分かっていても、そのモジュールにかかる複数のテストの中での順位付けを行うことができず、障害を検出する可能性のあるテストを、他のテストと比べて高い優先度とすることができない。
【０００６】
１つの側面では、検証を行うテストの順位を精度よく決めることができる検証順決定プログラム、検証順決定方法および検証順決定装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
第１の案では、検証順決定プログラムは、コンピュータに、論理検証にかかるモジュールごとに障害が生じる度合いを予測した予測情報と、論理検証のテストを実施した場合の、モジュールに対するテストの網羅性とをもとに、テストごとに、論理検証を行う優先度合いを示す優先度を算出する処理を実行させる。また、検証順決定プログラムは、コンピュータに、テストごとに算出された優先度をもとに、テストの検証を行う検証順を出力する処理を実行させる。
【発明の効果】
【０００８】
本発明の１実施態様によれば、検証を行うテストの順位を精度よく決めることができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施形態にかかる検証順決定装置の構成を示す図である。
【図２】図２は、実施形態にかかる検証順決定装置の機能ブロックを示す図である。
【図３】図３は、検証順決定の処理手順を例示するフローチャートである。
【図４】図４は、実施形態にかかる検証順決定装置のハードウエア構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、実施形態にかかる検証順決定プログラム、検証順決定方法および検証順決定装置を説明する。実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略する。なお、以下の実施形態で説明する検証順決定プログラム、検証順決定方法および検証順決定装置は、一例を示すに過ぎず、実施形態を限定するものではない。また、以下の各実施形態は、矛盾しない範囲内で適宜組みあわせてもよい。
【００１１】
図１は、実施形態にかかる検証順決定装置１の構成を示す図である。図１に示すように、検証順決定装置１は、設計開発において、論理検証にかかるテストの順位を決めるためのＰＣ（Personal  Computer）やＷＳ（Work  Station）等の情報処理装置であり、制御部１０ａと、記憶部１０ｂとを有する。制御部１０ａは、優先度算出部１０３および出力部１０４を有し、ＣＰＵ（Central  Processing  Unit）がプログラムを順次実行することで検証順決定装置１の動作を制御する。記憶部１０ｂは、例えば、ＨＤＤ（Hard  Disk  Drive）などであり、バグ予測テーブルＴ１および網羅率／バグテーブルＴ２を記憶する。
【００１２】
図２は、実施形態にかかる検証順決定装置１の機能ブロックを示す図である。図２に示すように、制御部１０ａは、優先度算出部１０３および出力部１０４の他、予測取得部１０１およびテスト選択部１０２を有する。予測取得部１０１は、記憶部１０ｂに記憶されたバグ予測テーブルＴ１を取得する。
【００１３】
バグ予測テーブルＴ１は、設計開発時において論理検証の対象となるモジュール（図示例では、ｍｏｄ＿１〜ｍｏｄ＿１５）ごとに、障害（バグ）が生じる度合いを予測し、その順位を格納したデータテーブルである。このモジュール単位のバグ予測は、Ahmed  E.  Hassan.  2009.  Predicting  faults  using  the  complexity  of  code  changes.  In  Proceedings  of  the  31st  International  Conference  on  Software  Engineering(ICSE  '09)などに記載の公知技術によって実現できる。
【００１４】
具体的には、上記の公知技術では、設計開発時におけるソースコードの変更のパターンによって各モジュールにおけるｅｎｔｒｏｐｙ値を出力する。このｅｎｔｒｏｐｙ値は、障害の生じやすさの目安となるものであり、ｅｎｔｒｏｐｙ値が高いほど、モジュールに障害が出る可能性が高くなることを示す。したがって、得られたｅｎｔｒｏｐｙ値をソートすることで、バグ予測テーブルＴ１を得ることができる。記憶部１０ｂには、このようにして得られたバグ予測テーブルＴ１が記憶されている。予測取得部１０１は、バグ予測テーブルＴ１を記憶部１０ｂより取得し、モジュールごとに、障害（バグ）が生じる度合いを予測した情報（例えば、順位）をテスト選択部１０２へ出力する。
【００１５】
テスト選択部１０２は、予測取得部１０１より出力されたモジュールの各々について、論理検証のテストを順次選択する。そして、テスト選択部１０２は、論理検証のテストを実施した場合の、モジュールに対するそのテストのカバレッジ（coverage：網羅性）等の情報を網羅率／バグテーブルＴ２を参照して取得する。
【００１６】
網羅率／バグテーブルＴ２は、モジュールの各々について（図示例では、ｍｏｄ＿１〜ｍｏｄ＿１５）、テストごと（図示例では、ｔ＿１〜ｔ＿ｎ）のカバレッジ（ｍ％）、バグ検出数（ｘ）の情報を格納したテーブルデータである。
【００１７】
このモジュールにおけるテストのカバレッジ（ｍ％）は、各システムレベルのテストによる論理のソースコードのカバレッジをソースコード全体に対する割合で示したものである。一例として、カバレッジは、モジュールに対するテストの寄与度に対応したものであり、ソースコードにおける記述（ｌｉｎｅ，ｃｏｎｄｉｔｉｏｎ，ｂｒａｎｃｈ…）をもとに、公知の技術を用いて計算される。
【００１８】
バグ検出数（ｘ）は、モジュールに対してテストを実施した時に検出されたバグの検出数を示すものであり、モジュールに対するテストのバグ検出実績である。これらのカバレッジ、バグ検出数は、予め得られたものが網羅率／バグテーブルＴ２に格納されている。
【００１９】
優先度算出部１０３は、モジュールごとに障害が生じる度合いを予測したバグ予測テーブルＴ１と、テストを実施した場合の、モジュールに対するテストのカバレッジとをもとに、テストごとに、論理検証を行う優先度合いを示す優先度を算出する。
【００２０】
出力部１０４は、優先度算出部１０３により算出された優先度を高い順にソートし、テストの検証順を決定した検証リストＬ１を出力する。論理検証２では、出力された検証リストＬ１に従って、論理検証のテストが実施される。この検証リストＬ１の出力は、ディスプレイへの検証リストＬ１の表示や、論理検証２を行う情報処理装置への検証リストＬ１の通知であってよい。また、検証順決定装置１のＣＰＵが論理検証プログラムを実行することで、検証順決定装置１自身が検証リストＬ１に従って論理検証２を行ってもよい。
【００２１】
次に、制御部１０ａにおいて実行される検証順決定の処理の詳細を説明する。図３は、検証順決定の処理手順を例示するフローチャートである。
【００２２】
図３に示すように、処理が開始されると、予測取得部１０１は、バグ予測テーブルＴ１を取得し（Ｓ１）、バグ予測テーブルＴ１のリストにあるモジュールを取得する（Ｓ２）。例えば、予測取得部１０１は、図２に例示したバグ予測テーブルＴ１の上から順に、ｍｏｄ＿１などのモジュールを取得する。
【００２３】
次いで、テスト選択部１０２は、取得したモジュールに関するテストの情報を網羅率／バグテーブルＴ２より取得する（Ｓ３）。例えば、テスト選択部１０２は、図２に例示した網羅率／バグテーブルＴ２の上から順に、ｔ＿１などのテストの情報を取得する。
【００２４】
次いで、優先度算出部１０３は、検証リストＬ１に取得したテストが存在するか否かを判定する（Ｓ４）。検証リストＬ１は処理の開始時には初期化されているため、例えば、最初のループ処理では検証リストＬ１にはテストが存在しない。したがって、最初のループ処理では検証リストＬ１にテストが存在しないものと判定される（Ｓ４：ＮＯ）。また、ループ処理が繰り返されたところでも、Ｓ３で取得したテストが検証リストＬ１に存在しない場合もある。この場合も、検証リストＬ１にテストが存在しないものと判定される（Ｓ４：ＮＯ）。
【００２５】
このように、検証リストＬ１にテストが存在しない場合（Ｓ４：ＮＯ）には、優先度算出部１０３は検証リストＬ１にテストを追加する（Ｓ５）。なお、検証リストＬ１にテストが存在する場合（Ｓ４：ＹＥＳ）は、検証リストＬ１にテストを追加する必要がないことから、Ｓ５の処理をスキップする。
【００２６】
次いで、優先度算出部１０３は、取得したモジュールにおけるテストの優先度を、次の式（１）をもとに計算し（Ｓ６）、計算した優先度を検証リストＬ１に記述する。
【００２７】
【数１】
2016091062.tif 000003
【００２８】
ここで、式（１）におけるｐは、テストにおける優先度を示し、右辺のｐの項は以前のループ処理で計算済みである優先度を示す。これにより、テストの優先度（ｐ）はループ処理（Ｓ２〜Ｓ８）を行う度に以前の値に合算して計算される。したがって、ループ処理（Ｓ２〜Ｓ８）を行った後のｐをソートすることで、全てのモジュールに対して優先度の高いテストを選び出すことができる。
【００２９】
ｃｖｅｒａｇｅ／１００の項は、カバレッジ（ｍ％）を正規化し掛け合わせるものである。また、ｍｏｄｕｌｅ  ｌｏｃはモジュールの行数（loc：line  of  code）であり、ｍａｘ  ｍｏｌｕｌｅ  ｌｏｃは最大モジュールの行数である。ｍｏｄｕｌｅ  ｌｏｃ／ｍａｘ  ｍｏｌｕｌｅ  ｌｏｃの項は、モジュールの規模を掛け合わせるものである。
【００３０】
また、ｎｂ  ｏｆ  ｂｕｇ  ｆｏｕｎｄｓはテストのバグ検出数（ｘ）、ｔｏｔａｌ  ｂｕｇ  ｆｏｕｎｄはモジュールについて全テストで見つかったバグ検出数（ｔ＿１〜ｔ＿ｎのｘの合計）である。ｎｂ  ｏｆ  ｂｕｇ  ｆｏｕｎｄｓ／ｔｏｔａｌ  ｂｕｇ  ｆｏｕｎｄの項は、モジュールにおいて、すべてテストの中でのテストの実績を示す指標を掛け合わせるものである。
【００３１】
また、ｒｉｓｋ  ｒａｎｋｉｎｇは検証の対象となる全てのモジュールにおけるモジュールの障害が生じる順位、ｍａｘ  ｒａｎｋｉｎｇはその最高順位である。ｒｉｓｋ  ｒａｎｋｉｎｇ／ｍａｘ  ｒａｎｋｉｎｇの項は、バグ予測テーブルＴ１に格納された検証の対象となるモジュールの中で、モジュールに障害が生じるリスク（リスク）掛け合わせるものである。なお、図２におけるバグ予測テーブルＴ１の例では、最もリスクの高いモジュールの順位を１位とし、最低順位を１５位としていることから、リスクの高い順位をより高くするように、逆数を掛けあわせるようにしてもよい。
【００３２】
上述した式（１）によりテストの優先度を計算することで、優先度算出部１０３は、障害が生じる順位が高く予測されたモジュールにおいて、カバレッジの高いテストの優先度をより高く計算する。このため、制御部１０ａは、例えば、障害にかかる特定のモジュールが分かっている場合には、テストのカバレッジによって、そのモジュールにかかる複数のテストの中での順位付けを行うことができる。また、優先度算出部１０３は、テストがバグを検出した実績をもとに、優先度を算出している。したがって、制御部１０ａは、実績のよいテストを優先的に選び出すことができる。
【００３３】
次いで、優先度算出部１０３は、取得されたモジュールに関して、優先度が未算出のテストが網羅率／バグテーブルＴ２にまだあるか否かを判定する（Ｓ７）。まだある場合（Ｓ７：ＹＥＳ）には、優先度の計算を行うためＳ３へ処理を戻す。優先度が未算出のテストが網羅率／バグテーブルＴ２にない場合（Ｓ７：ＮＯ）、取得されたモジュールに関して全てのテストの優先度を算出したことから、優先度算出部１０３は、ループ処理（Ｓ２〜Ｓ７）において未処理のモジュールがバグ予測テーブルＴ１にあるか否かを判定する（Ｓ８）。
【００３４】
ループ処理において未処理のモジュールがある場合（Ｓ８：ＹＥＳ）、優先度算出部１０３は、バグ予測テーブルＴ１にある次のモジュールについてのループ処理を行うためにＳ２へ処理を戻す。ループ処理において未処理のモジュールがない場合（Ｓ８：ＮＯ）、バグ予測テーブルＴ１の全てのモジュールについて各テストの優先度を算出し、各テストの優先度が検証リストＬ１に記述されていることから、優先度算出部１０３は、Ｓ９へ処理を進めてループ処理（Ｓ２〜Ｓ８）を抜ける。Ｓ９において、出力部１０４は、検証リストＬ１を各テストの優先度順にソートし（Ｓ９）、出力する。
【００３５】
以上のように、検証順決定装置１は、論理検証にかかるモジュールごとに障害が生じる度合いを予測したバグ予測テーブルＴ１と、網羅率／バグテーブルＴ２における、論理検証のテストを実施した場合の、モジュールに対するテストの網羅性とをもとに、テストごとに、論理検証を行う優先度合いを示す優先度を算出する。そして、検証順決定装置１は、テストごとに算出された優先度をもとに、テストの検証を行う検証順を出力する。したがって、検証順決定装置１は、例えば、モジュールが分かっている場合には、テストの網羅性によって、そのモジュールにかかる複数のテストの中での順位付けを行うことができることから、検証を行うテストの順位を精度よく決めることができる。このため、検証順決定装置１により決定された検証順で論理検証２を行うことで、障害を検出する可能性のあるテストを早い段階で行うことができ、コストを削減できる。
【００３６】
図４は、実施形態にかかる検証順決定装置１のハードウエア構成の一例を示すブロック図である。図４に示すように、検証順決定装置１は、ＣＰＵ１１、ＲＯＭ１２（ROM：Read  Only  Memory）、ＲＡＭ１３（RAM：Random  Access  Memory）および記憶装置１４を有する。また、検証順決定装置１は、ディスプレイ１５、Ｉ／Ｆ１６、キーボード１７、マウス１８、スキャナ１９およびプリンタ２０を有する。検証順決定装置１における上記の各構成（１１〜２０）は、バス２１によってそれぞれ接続されている。
【００３７】
ＣＰＵ１１は、検証順決定装置１の全体の制御を司る演算処理装置である。ＲＯＭ１２は、検証順決定装置１のプログラムを記憶する不揮発性メモリである。ＲＡＭ１３は、ＣＰＵ１１による演算処理実行時のワークエリアとして使用される揮発性メモリである。記憶装置１４は、例えば、ＨＤＤなどであり、検証順決定プログラム１４ａおよび各種情報を記憶する。記憶装置１４が記憶する各種情報には前述したバグ予測テーブルＴ１および網羅率／バグテーブルＴ２が含まれてもよく、記憶装置１４は、記憶部１０ｂとしての機能を提供する。
【００３８】
ディスプレイ１５は、ソフトウエアやハードウエアの開発設計時における論理検証処理のための設定画面や検証結果について、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などをデータ表示する装置である。ディスプレイ１５には、例えば、Ｔｈｉｎ  Ｆｉｌｍ  Ｔｒａｎｓｉｓｔｏｒ（ＴＦＴ）液晶ディスプレイ、プラズマディスプレイ、有機ＥＬディスプレイなどを採用することができる。
【００３９】
Ｉ／Ｆ１６は、ＮＥＴ２２と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。具体的に、Ｉ／Ｆ１６は、通信回線を通じてＮＥＴ２２となるＬｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）、Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＷＡＮ）、インターネットなどに接続され、ＮＥＴ２２を介して他の装置に接続される。Ｉ／Ｆ１６には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００４０】
上述した図１〜図３を用いて説明した検証順決定の機能は、ＣＰＵ１１が記憶装置１４に格納された検証順決定プログラム１４ａを実行処理して得ることができる。
【００４１】
なお、上記の検証順決定プログラム１４ａについては、必ずしも最初から記憶装置１４に記憶させておく必要はない。例えば、検証順決定装置１に挿入されるフレキシブルディスク、いわゆるＦＤ、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、検証順決定装置１がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどのＮＥＴ２２を介して検証順決定装置１に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、検証順決定装置１がこれらから各プログラムを取得して実行するようにしてもよい。
【符号の説明】
【００４２】
１…検証順決定装置
２…論理検証
１０ａ…制御部
１０ｂ…記憶部
１１…ＣＰＵ
１２…ＲＯＭ
１３…ＲＡＭ
１４…記憶装置
１４ａ…検証順決定プログラム
１５…ディスプレイ
１６…Ｉ／Ｆ
１７…キーボード
１８…マウス
１９…スキャナ
２０…プリンタ
２１…バス
２２…ＮＥＴ
１０１…予測取得部
１０２…テスト選択部
１０３…優先度算出部
１０４…出力部
Ｔ１…バグ予測テーブル
Ｔ２…網羅率／バグテーブル
Ｌ１…検証リスト
【図１】
2016091062.tif 000004
【図２】
2016091062.tif 000005
【図３】
2016091062.tif 000006
【図４】
2016091062.tif 000007