(57)【要約】      （修正有）【課題】機械学習によって作成した任意のプログラムのバグを、効率的に検出可能な技術を提供する。【解決手段】カバレッジテスト支援装置１００は、外部記憶装置１０１、メモリ１０３、ＣＰＵ１０４、入力装置１０５、出力装置１０６、外部媒体入出力装置１０７を備える。記憶装置は、テストケース１１１１と複数のカバレッジ指標各々の規定内容１１７１等を保持する。ＣＰＵは、ニューラルネットワーク由来のプログラム１１０１に対し、テストケースにおける各ペアのテスト入力値を順次与えて所定件数のテストを実行し、テスト結果及びテスト実行時におけるニューロン情報を取得し、ニューロン情報を複数のカバレッジ指標それぞれの規定内容に適用し、各カバレッジ指標の値を算定し、テストの実行件数又はテスト結果におけるバグ件数のいずれかが所定基準を超えた場合、カバレッジ指標のうち値の伸び率が所定の傾向を示すものを優先カバレッジ指標と特定する。【選択図】図２
2019114158.tif 000002
【特許請求の範囲】
【請求項１】
テスト入力値および期待出力値の複数ペアからなるテストケースと、ニューラルネットワーク由来のプログラムに関する複数のカバレッジ指標各々の規定内容とを保持する記憶装置と、
ニューラルネットワーク由来のプログラムに対し、前記テストケースにおける各ペアのテスト入力値を順次与えて所定件数のテストを実行し、そのテスト結果およびテスト実行時におけるニューロン情報を取得する処理と、前記取得したニューロン情報を、前記複数のカバレッジ指標それぞれの規定内容に適用し、各カバレッジ指標の値を算定する処理と、前記テストの実行件数または前記テスト結果におけるバグ件数のいずれかが所定基準を超えた場合、前記カバレッジ指標のうち、前記算定した値の伸び率が所定の傾向を示すものを、優先的に用いるべき優先カバレッジ指標と特定する処理と、を実行する演算装置と、
を備えることを特徴とするカバレッジテスト支援装置。
【請求項２】
前記演算装置は、
前記優先カバレッジ指標の値を向上させるニューロン情報を前記規定内容で特定し、当該ニューロン情報に関して誤差逆伝播法を適用し、前記プログラムにおける入力層の値たるテスト入力値を算定し、当該テスト入力値を前記テストケースに反映させる処理を更に実行するものである、
ことを特徴とする請求項１に記載のカバレッジテスト支援装置。
【請求項３】
前記記憶装置は、
前記カバレッジ指標の規定内容として、前記プログラムにおいて活性化された中間層ニューロンの数と中間層ニューロンの総和数との比率を示す総和カバレッジと、前記プログラムにおける中間層ごとに活性化されたニューロンの数とニューロンの総和数との比率のうち最も小さい値であるレイヤカバレッジと、前記プログラムにおける同層のニューロンと出力値とを比較した場合に最も大きな値を出力したことがある中間層ニューロンの数と中間層ニューロンの総和数との比率を示す順序カバレッジと、テストケース実行ごとの所定定数と活性化された中間層ニューロンの数との比率に基づく中間層ニューロンごとにカバー濃度が所定の閾値を超えた中間層ニューロンの数と中間層ニューロンの総和数との比率を示す濃度カバレッジと、前記プログラムにおけるニューロンのペアごとの活性化共起率と中間層におけるニューロンのペア総数との比率を示す共起組合せカバレッジと、の少なくともいずれか複数の規定内容を保持し、
前記演算装置は、
前記各カバレッジ指標の値を算定するに際し、前記総和カバレッジ、前記レイヤカバレッジ、前記順序カバレッジ、前記濃度カバレッジ、および、前記共起組合せカバレッジ、のうち記憶装置で規定内容を保持するカバレッジ指標について、その値を算定するものである、
ことを特徴とする請求項１に記載のカバレッジテスト支援装置。
【請求項４】
前記演算装置は、
前記テストの実行件数、前記テスト結果が示すバグ件数、および、各カバレッジ指標の算定結果、を表示する所定の描画オブジェクトを生成し、当該描画オブジェクトを出力装置にて表示させる処理を更に実行するものである、
ことを特徴とする請求項１に記載のカバレッジテスト支援装置。
【請求項５】
テスト入力値および期待出力値の複数ペアからなるテストケースと、ニューラルネットワーク由来のプログラムに関する複数のカバレッジ指標各々の規定内容とを保持する記憶装置を備えた情報処理装置が、
ニューラルネットワーク由来のプログラムに対し、前記テストケースにおける各ペアのテスト入力値を順次与えて所定件数のテストを実行し、そのテスト結果およびテスト実行時におけるニューロン情報を取得する処理と、前記取得したニューロン情報を、前記複数のカバレッジ指標それぞれの規定内容に適用し、各カバレッジ指標の値を算定する処理と、前記テストの実行件数または前記テスト結果におけるバグ件数のいずれかが所定基準を超えた場合、前記カバレッジ指標のうち、前記算定した値の伸び率が所定の傾向を示すものを、優先的に用いるべき優先カバレッジ指標と特定する処理と、
を実行することを特徴とするカバレッジテスト支援方法。
【請求項６】
前記情報処理装置が、
前記優先カバレッジ指標の値を向上させるニューロン情報を前記規定内容で特定し、当該ニューロン情報に関して誤差逆伝播法を適用し、前記プログラムにおける入力層の値たるテスト入力値を算定し、当該テスト入力値を前記テストケースに反映させる処理を更に実行する、
ことを特徴とする請求項５に記載のカバレッジテスト支援方法。
【請求項７】
前記情報処理装置が、
前記記憶装置において、前記カバレッジ指標の規定内容として、前記プログラムにおいて活性化された中間層ニューロンの数と中間層ニューロンの総和数との比率を示す総和カバレッジと、前記プログラムにおける中間層ごとに活性化されたニューロンの数とニューロンの総和数との比率のうち最も小さい値であるレイヤカバレッジと、前記プログラムにおける同層のニューロンと出力値とを比較した場合に最も大きな値を出力したことがある中間層ニューロンの数と中間層ニューロンの総和数との比率を示す順序カバレッジと、テストケース実行ごとの所定定数と活性化された中間層ニューロンの数との比率に基づく中間層ニューロンごとにカバー濃度が所定の閾値を超えた中間層ニューロンの数と中間層ニューロンの総和数との比率を示す濃度カバレッジと、前記プログラムにおけるニューロンのペアごとの活性化共起率と中間層におけるニューロンのペア総数との比率を示す共起組合せカバレッジと、の少なくともいずれか複数の規定内容を保持し、
前記各カバレッジ指標の値を算定するに際し、前記総和カバレッジ、前記レイヤカバレッジ、前記順序カバレッジ、前記濃度カバレッジ、および、前記共起組合せカバレッジ、のうち記憶装置で規定内容を保持するカバレッジ指標について、その値を算定する、
ことを特徴とする請求項５に記載のカバレッジテスト支援方法。
【請求項８】
前記情報処理装置が、
前記テストの実行件数、前記テスト結果が示すバグ件数、および、各カバレッジ指標の算定結果、を表示する所定の描画オブジェクトを生成し、当該描画オブジェクトを出力装置にて表示させる処理を更に実行する、
ことを特徴とする請求項５に記載のカバレッジテスト支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カバレッジテスト支援装置およびカバレッジテスト支援方法に関するものであり、具体的には、機械学習によって作成した任意のプログラムのバグを、効率的に検出可能とする技術に関する。
【背景技術】
【０００２】
従来、プログラムのテストにおいては、発見しにくいバグ（ある入力に対して、期待する出力が得られないこと）を検出するための手段として、カバレッジテストが用いられている。
【０００３】
カバレッジテストでは、テスト対象となるプログラムの実行パターンを、カバレッジと呼ばれる指標（以後、カバレッジ指標）で定量的に定義する。そして、そのカバレッジ指標の値が向上するようテストを重ねることで、上記実行パターンの確認をできる限り網羅的なものとする。
【０００４】
そうしたテスト対象となるプログラムのうち、従来の手続き型のプログラムにおいては、ＩＦ文等の条件分岐に基づくカバレッジ指標が、バグ検出に有効であると知られている。また、カバレッジテストにあたっては、カバレッジ率１００％の達成に必要なテストケース数を、テスト対象プログラムの制御フローから予め決定できる。さらに、例えば、ｃ０⊂ｃ１⊂ｃ２と、カバレッジ指標の間は（概ね）包含関係にある。そしてテストケース数の増加に比例して、バグ検出可能性も向上する。つまり、従来の手続型のプログラムに関しては、各カバレッジ指標の有効性はカバレッジテスト実施前に明白であった。
【０００５】
しかし、ニューラルネットワーク等の機械学習によって作成されたプログラムに関して、従来のカバレッジテストを行った場合、上記条件分岐に基づくカバレッジ指標の値は、常に１００％になってしまう。よって、機械学習によって作成されたプログラムにおいては、従来のカバレッジ指標に基づくカバレッジテストは有効ではない。
【０００６】
そこで、ニューラルネットワークで作成したプログラム向けのカバレッジ指標や、そのカバレッジ指標を向上するためのテスト入力値の自動生成方法が提案されている（非特許文献１参照）。
【０００７】
また他にも、カバレッジテストに関する従来技術として、例えば、ハードウェア及びソフトウェアを協調させて論理検証を行う論理検証システムであって、乱数テストデータ生成部と、ソフトウェアカバレッジ情報出力部と、ハードウェアカバレッジ情報出力部とを備え、論理検証実行時のカバレッジ出力情報の変化から、テストデータの有効性を評価し、有効なテストデータのみを選別して蓄積し、テスト再実行時は、有効なテストデータのみ再実行することにより検証効率を向上し、論理検証期間を短縮することを特徴とする論理検証システム（特許文献１参照）などが提案されている。
【０００８】
また、対象プログラムの仕様情報に基づいて入力条件を生成する入力条件生成手段と、該入力条件に基づいて、前記対象プログラムに適用するテスト技法を決定するテスト技法決定手段と、前記決定したテスト技法による前記対象プログラムのテストパターンを生成するテストパターン生成手段と、を有することを特徴とするソフトウェア試験支援システム（特許文献２参照）なども提案されている。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】ＤｅｅｐＸｐｌｏｒｅ：Ａｕｔｏｍａｔｅｄ  Ｗｈｉｔｅｂｏｘ  Ｔｅｓｔｉｎｇ  ｏｆ  Ｄｅｅｐ  Ｌｅａｒｎｉｎｇ  Ｓｙｓｔｅｍｓ、ＳＯＳＰ’１７、コロンビア大
【特許文献】
【００１０】
【特許文献１】特開２０１０−１４６０３７号公報
【特許文献２】特開２０１５−２００９８４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ところが、上述の従来技術が提案する、ニューラルネットワークで作成したプログラム向けのカバレッジテスト手法は、ニューラルネットワークで作成した任意のプログラムに有効であるかは不明なままである。つまり、そうしたカバレッジテストを採用しても、効率的にバグを検出できない可能性が残されている。
そこで本発明の目的は、機械学習によって作成した任意のプログラムのバグを、効率的に検出可能とする技術を提供することにある。
【課題を解決するための手段】
【００１２】
上記課題を解決する本発明のカバレッジテスト支援装置は、テスト入力値および期待出力値の複数ペアからなるテストケースと、ニューラルネットワーク由来のプログラムに関する複数のカバレッジ指標各々の規定内容とを保持する記憶装置と、ニューラルネットワーク由来のプログラムに対し、前記テストケースにおける各ペアのテスト入力値を順次与えて所定件数のテストを実行し、そのテスト結果およびテスト実行時におけるニューロン情報を取得する処理と、前記取得したニューロン情報を、前記複数のカバレッジ指標それぞれの規定内容に適用し、各カバレッジ指標の値を算定する処理と、前記テストの実行件数または前記テスト結果におけるバグ件数のいずれかが所定基準を超えた場合、前記カバレッジ指標のうち、前記算定した値の伸び率が所定の傾向を示すものを、優先的に用いるべき優先カバレッジ指標と特定する処理と、を実行する演算装置と、を備えることを特徴とする。
【００１３】
また、本発明のカバレッジテスト支援方法は、テスト入力値および期待出力値の複数ペアからなるテストケースと、ニューラルネットワーク由来のプログラムに関する複数のカバレッジ指標各々の規定内容とを保持する記憶装置を備えた情報処理装置が、ニューラルネットワーク由来のプログラムに対し、前記テストケースにおける各ペアのテスト入力値を順次与えて所定件数のテストを実行し、そのテスト結果およびテスト実行時におけるニューロン情報を取得する処理と、前記取得したニューロン情報を、前記複数のカバレッジ指標それぞれの規定内容に適用し、各カバレッジ指標の値を算定する処理と、前記テストの実行件数または前記テスト結果におけるバグ件数のいずれかが所定基準を超えた場合、前記カバレッジ指標のうち、前記算定した値の伸び率が所定の傾向を示すものを、優先的に用いるべき優先カバレッジ指標と特定する処理と、を実行することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、機械学習によって作成した任意のプログラムのバグを、効率的に検出する可能性を高めうる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態のカバレッジテスト支援装置の構成例を示す図である。
【図２】本実施形態におけるカバレッジテスト支援装置のハードウェア構成例を示す図である。
【図３】本実施形態のテストケースのデータ構成例を示す図である。
【図４】本実施形態のテスト結果のデータ構成例を示す図である。
【図５】本実施形態のテスト評価結果のデータ構成例を示す図である。
【図６】本実施形態のニューロン情報のデータ構成例を示す図である。
【図７】本実施形態のカバレッジ指標のデータ構成例を示す図である。
【図８】本実施形態のカバレッジテスト支援方法のフロー例１を示す図である。
【図９】本実施形態のカバレッジ計算結果のデータ構成例を示す図である。
【図１０Ａ】本実施形態における画面例１を示す図である。
【図１０Ｂ】本実施形態における画面例２を示す図である。
【図１１】本実施形態のカバレッジテスト支援方法のフロー例２を示す図である。
【発明を実施するための形態】
【００１６】
−−−カバレッジテスト支援装置の機能構成−−−
【００１７】
以下に本発明の実施形態について図面を用いて詳細に説明する。図１は、本実施形態のカバレッジテスト支援装置１００の構成例を示す図である。図１に示すカバレッジテスト支援装置１００は、機械学習によって作成した任意のプログラムのバグを、効率的に検出可能とするコンピュータ装置である。
【００１８】
このカバレッジテスト支援装置１００は、図１に示すように、テスト対象プログラム保持部１１０、テストケース保持部１１１、期待出力値編集部１１２、スト入力値生成部１１３、テスト実行部１１４、ニューロン情報保持部１１５、複数カバレッジ計測部１１６、カバレッジ指標保持部１１７、テスト結果保持部１１８、テスト結果評価部１１９、テスト評価結果保持部１２０、カバレッジ計算結果保持部１２１、優先カバレッジ指標選択部１２２、および、優先カバレッジ指標保持部１２３、を備えている。これらは、カバレッジテスト支援装置１００が備えるプログラムおよびハードウェアを協働させ実装される機能部である。
【００１９】
このうちテスト対象プログラム保持部１１０は、テスト対象プログラム１１０１を保持している。このテスト対象プログラム１１０１は、ニューラルネットワークにより生成されたプログラムである。本実施形態では、このテスト対象プログラム１１０１の一例として、画像認識プログラムを想定する。
【００２０】
また、テストケース保持部１１１は、テストケース１１１１を保持している。このテストケース１１１１は、テスト入力値および期待出力値の複数ペアから構成されている。本実施形態で一例として想定するテストケースは、数字を表示している画像データをテスト入力値とし、これを上述の画像認識プログラムに与えた場合に認識される数字として、期待している数字を期待出力値とする。テスト対象プログラムたる画像認識プログラムにバグが含まれている場合、テスト入力値を与えても、その出力値が期待出力値とは異なる数字となってしまう。
また、期待出力値編集部１１２は、上述のテストケース１１１１の期待出力値に対し、その編集をユーザから受け付け、当該テストケース１１１１を更新する。
【００２１】
また、テスト入力値生成部１１３は、上述のテストケース１１１１のテスト入力値を、詳細は後述する優先カバレッジ指標の値を向上させるべく算定し、これをテストケース１１１１に反映させる。
【００２２】
また、テスト実行部１１４は、上述のテスト対象プログラム１１０１に、テストケース１１１１のテスト入力値を入力として与えて実行させ、その出力値をテスト結果として取得する。また、テスト実行部１１４は、このテスト実行に際し、当該テスト対象プログラ
ム１１０１における各層の各ニューロンの情報（ニューロン情報）も取得する。
【００２３】
また、ニューロン情報保持部１１５は、上述のテスト実行部１１４によるテスト実行で得たニューロン情報１１５１を保持している。このニューロン情報１１５１の詳細は後述する。
【００２４】
また、複数カバレッジ計測部１１６は、上述のニューロン情報１１５１に基づいて、複数のカバレッジ指標の値を算定する。このカバレッジ指標の値を算定するための算定式など、カバレッジ指標の規定内容は、カバレッジ指標保持部１１７が保持している。
【００２５】
また、カバレッジ指標保持部１１７は、上述の複数のカバレッジ指標それぞれの規定内容を保持している。以降、説明の簡便のため、各カバレッジ指標の規定内容を、カバレッジ指標１１７１と読み替えて説明する。このカバレッジ指標１１７１の詳細は後述する。
【００２６】
また、テスト結果保持部１１８は、上述のテスト実行部１１４によるテスト実行で得たテスト結果１１８１を保持している。このテスト結果１１１８１の詳細は後述する。
【００２７】
また、テスト結果評価部１１９は、上述のテストケース１１１１と、これに対応するテスト結果１１８１とを照合し、テスト結果が示す出力値が期待出力値と異なる、すなわちバグが発生しているテストケースを特定し、テスト評価結果１２０１を生成する。このテスト評価結果１２０１の詳細は後述する。
また、テスト評価結果保持部１２０は、上述のテスト評価結果１２０１を保持している。
また、カバレッジ計算結果保持部１２１は、上述の複数カバレッジ計測部１１６で算定されたカバレッジ計算結果１２１１を保持している。
【００２８】
また、優先カバレッジ指標選択部１２２は、上述のカバレッジ計算結果１２１１に基づき、上述のテストの実行件数またはテスト結果１１８１におけるバグ件数のいずれかが所定基準を超えた場合、カバレッジ指標１１７１のうち、カバレッジ指標値の伸び率が所定の傾向を示すものを、優先的に用いるべき優先カバレッジ指標と特定する。この処理の詳細は後述する。
【００２９】
また、優先カバレッジ指標保持部１２３は、上述の優先カバレッジ指標１２３１の情報を保持している。この優先カバレッジ指標１２３１の情報は、上述のテスト入力値生成部１１３において、テスト入力値の算定に利用される。
−−−ハードウェア構成−−−
【００３０】
また、本実施形態のカバレッジテスト支援装置１００のハードウェア構成は以下の如くとなる。図２に、本実施形態のカバレッジテスト支援装置１００のハードウェア構成例を示す。
【００３１】
本実施形態のカバレッジテスト支援装置１００は、外部記憶装置１０１、メモリ１０３、ＣＰＵ１０４（演算装置）、入力装置１０５、出力装置１０６、および、外部媒体入出力装置１０７、を備える。
【００３２】
このうち外部記憶装置１０１は、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）やハードディスクドライブなど適宜な不揮発性記憶素子で構成される記憶手段である。
また、メモリ１０３は、ＲＡＭなど揮発性記憶素子で構成される記憶手段である。
【００３３】
また、ＣＰＵ１０４は、記憶装置１０１に保持されるプログラム１０２をメモリ１０３に読み出すなどして実行し装置自体の統括制御を行なうとともに各種判定、演算及び制御処理を行なう演算装置である。
また、入力装置１０５は、カバレッジテストの担当者など適宜なユーザからのキー入力や音声入力を受け付ける入力デバイスである。
また、出力装置１０６は、処理データの表示を行うディスプレイ等の表示デバイスである。
【００３４】
また、外部媒体入出力装置１０７は、可搬型メモリや磁気記憶媒体など、各種の記憶媒体と接続可能なインターフェイスを備え、当該記憶媒体との間でデータ授受を行う装置である。外部媒体入出力装置１０７が、上述の記憶媒体から読み取る情報としては、例えば、テスト対象プログラム１１０１、テストケース１１１１、および、カバレッジ指標１１７１、といった情報になる。
【００３５】
なお、外部記憶装置１０１内には、本実施形態のカバレッジテスト支援装置１００として必要な機能を実装する為のプログラム１０２に加えて、テスト対象プログラム１１０１、テストケース１１１１、ニューロン情報１１５１、カバレッジ指標１１７１、テスト結果１１８１、テスト評価結果１２０１、カバレッジ計算結果１２１１、および、優先カバレッジ指標１２３１、が少なくとも記憶されている。これら情報の詳細については後述する。
−−−データ構造例−−−
【００３６】
続いて、本実施形態のカバレッジテスト支援装置１００が用いる各種情報について説明する。図３に、本実施形態におけるテストケース１１１１のデータ構成例を示す。
【００３７】
本実施形態におけるテストケース１１１１は、上述の外部媒体入出力装置１０７が敵銀外部媒体から読み取ってテストケース保持部１１１に格納したデータである。
【００３８】
そのデータ構造は、各テストケースごとに、テスト入力値および期待出力値を対応付けて格納したレコードの集合体である。図３で示すテストケース１１１１では、ある画像をテスト入力値として、この画像で描画される数字の「１」を期待出力値としたテストケースの例を示している。
【００３９】
なお、上述のテストケース１１１１におけるテスト入力値は、テスト入力値生成部１１３がチューニングを行って更新されるものである。この場合、テスト入力値生成部１１３は、後述する優先カバレッジ指標１２３１の値を向上させる中間層ニューロン（ニューロン情報１１５１で各層のニューロンは規定済）を、カバレッジ指標１１７１におけるカバレッジ計算方法で特定し、当該中間層ニューロンに関して誤差逆伝播法を適用し、テスト対象プログラム１１０１における入力層の値たるテスト入力値を算定し、これをテストケース１１１１のテスト入力値とする。誤差逆伝播法の取扱い等については既知の手法を適宜に適用すればよい。
【００４０】
続いて図４に、本実施形態におけるテスト結果１１８１のデータ構成例を示す。本実施形態におけるテスト結果１１８１は、上述のテストケース１１１１のテスト入力値を入力として与えられたテスト対象プログラム１１０１による出力値、を格納したものである。
【００４１】
そのデータ構造は、テストケースごとに、テスト入力値および出力値を対応付けたレコードの集合体である。図４で示すテスト結果１１８１では、上述のテストケース１１１１のうち、テストケース「２」において、その出力値が期待出力値の「１」とは異なる「７」となった結果例を示している。
【００４２】
なお、こうしたテスト結果１１８１は、カバレッジテスト支援装置１００のテスト実行部１１４が、テスト対象プログラム１１０１に対し、テストケース１１１１における各ペアのテスト入力値を順次与えて所定件数のテストを実行した結果に該当する。
【００４３】
続いて図５に、本実施形態におけるテスト評価結果１２０１のデータ構成例を示す。本実施形態におけるテスト評価結果１２０１は、テスト結果評価部１１９が、上述のテスト結果１１８１において、その出力値が該当テストケースにおける期待出力値と異なるもの、つまりバグを生じたテストケースを特定した結果を格納した情報となる。そのデータ構造は、テストケースごとに、評価結果を対応付けたレコードの集合体である。図５の例では、テストケース「２」に関して「バグあり」との評価結果がでている。
【００４４】
続いて図６に、本実施形態におけるニューロン情報１１５１のデータ構成例を示す。本実施形態におけるニューロン情報１１５１は、テスト実行部１１４が、上述のテストケースにおけるテスト入力値を与えられたテスト対象プログラム１１０１における、中間層それぞれのニューロンにおける値を取得し、格納した情報となる。
【００４５】
そのデータ構造は、中間層を一意に特定する層番号をキーに、その中間層におけるニューロンを一意に特定するニューロン番号、および、該当ニューロンにおける出力データ、を対応付けたレコードの集合体である。この出力データが「０」の場合、該当ニューロンは不活性状態であることを示し、「０」以外の値である場合、該当ニューロンは活性化状態であることを示している。そして、この出力データの値が大きいほど活性化していると言える。
【００４６】
続いて図７に、本実施形態におけるカバレッジ指標１１７１のデータ構成例を示す。本実施形態におけるカバレッジ指標１１７１は、ニューラルネットワークで生成されたテスト対象プログラム１１０１の評価に用いるものであり、一例として、総和カバレッジ、レイヤカバレッジ、順序カバレッジ、濃度カバレッジ、および、共起組合せカバレッジ、の計５種のカバレッジ指標を想定している。
【００４７】
こうしたカバレッジ指標１１７１は、図７に示すように、カバレッジ指標名と、その規定内容であるカバレッジ計算方法とが対応付けたレコードの集合体である。
【００４８】
また、上述の５種のカバレッジ指標のうち、総和カバレッジは、テスト対象プログラム１１０１における全中間層のニューロンのうち活性化された（例えば出力データが０より大きい）ニューロンの数“Ｘ”を、全中間層におけるニューロンの総数“Ｙ”で除算して求めるカバレッジ指標である。
【００４９】
また、レイヤカバレッジは、中間層ｎごとに、活性化されたニューロンの数“Ｘ＿ｎ”をその中間層ｎにおけるニューロンの総数“Ｙ＿ｎ”で除算した値を、中間層の間で比較し、そのうち最も小さい値である。
【００５０】
また、順序カバレッジは、中間層ｎにおけるニューロンのうち最も大きい値を出力したことがあるニューロンの数“Ｘ＿ｎ”を全中間層について合算した値“ΣＸ＿ｎ”を、中間層ｎのニューロンの総数“Ｙ＿ｎ”を全中間層について合算した値“ΣＹ＿ｎ”で除算して求めるカバレッジ指標である。
【００５１】
また、濃度カバレッジは、テストケースを１つ実行するごとに、このテスト実行により活性化された中間層ニューロンの数で、所定の濃度定数を除算したてカバー濃度を算定し、このカバー濃度の値を中間層ニューロンごとに加算し、このカバー濃度が所定の閾値を
超えた中間層ニューロンの数を、中間層ニューロンの総数で除算して求めるカバレッジ指標である。
【００５２】
なお、上述のテストケースｔの実行によって活性化された中間層ニューロン数を“Ａ＿ｔ”、濃度定数を“Ｃ”、テストケースｔの実行によって中間層ニューロンｓに加算されるカバー濃度を“Ｄ＿ｔ＝（ｓが活性化された）？Ｃ／Ａ＿ｔ：０”、こうした加算を受ける中間層ニューロンのカバー濃度を“Ｅ＿ｓ＝Σ（Ｄ＿ｔ）”、カバー濃度が所定の閾値を超えた中間層ニューロンの数を“Ｘ”、中間層ニューロンの総数を“Ｙ”とすれば、この濃度カバレッジは、“Ｘ／Ｙ”と求められる。
【００５３】
また、共起組合せカバレッジは、中間層ニューロンのペアごとに、ニューロンｓとｔが同時に活性化するテストケース数を、ニューロンｓが活性化するテストケース数とニューロンｔが活性化するテストケース数の合計からニューロンｓとｔが同時に活性化するテストケース数を減算した値で除算し、活性化共起率を計算して、これを、１／（１＋Σ（各ニューロンペアの活性化共起率−１／２）２）の式に適用することで求めるカバレッジ指標である。
【００５４】
なお、上述の中間層ニューロンの任意のペアを“ｐ＝（ｓ，ｔ）”、ニューロンｓとｔが同時に活性化するテストケース数を“Ａ”、ニューロンｓが活性化するテストケース数を“Ｂ”、ニューロンｔが活性化するテストケース数を“Ｃ”、とした時、ペア“ｐ”の活性化共起率は“Ｄ＿ｐ＝Ａ／Ｂ＋Ｃ−Ａ”となり、共起組合せカバレッジは、“１／（１＋Σ（Ｄ＿ｐ−（１／２））２）”となる。
−−−フロー例１−−−
【００５５】
以下、本実施形態におけるカバレッジテスト支援方法の実際手順について図に基づき説明する。以下で説明するカバレッジテスト支援方法に対応する各種動作は、カバレッジテスト支援装置１００がメモリ等に読み出して実行するプログラム１０２によって実現される。そして、このプログラム１０２は、以下に説明される各種の動作を行うためのコードから構成されている。
【００５６】
図８は、本実施形態におけるカバレッジテスト支援方法のフロー例１を示す図である。この場合、カバレッジテスト支援装置１００の複数カバレッジ計測部１１６は、カバレッジ計算結果保持部１２１にアクセスして、カバレッジ計算結果１２１１を取得する（ｓ１００）。
【００５７】
図９に本実施形態のカバレッジ計算結果１２１１のデータ構成例を示す。この図９の例では、通算「１０６」件のテスト件数を行った結果、バグ検出数が「３」であり、また、カバレッジ指標名欄に記載の計５種のカバレッジ指標それぞれについて、カバレッジ計算結果の値が設定されている。つまり、このレコードの状態は、５種全てのカバレッジ指標に関して計算が完了している状態である。
【００５８】
続いて、複数カバレッジ計測部１１６は、ｓ１００で得たカバレッジ計算結果１２１１を参照し、計５種のカバレッジ指標それぞれのカバレッジ計算結果欄に値が設定されているか判定することで、全てのカバレッジ指標を計算済みか判定する（ｓ１０１）。
上述の判定の結果、全てのカバレッジ指標を計算済みであった場合（ｓ１０１：ｙ）、複数カバレッジ計測部１１６は当該フローを終了する。
【００５９】
他方、上述の判定の結果、全てのカバレッジ指標を計算済みの状態ではなかった場合（ｓ１０１：ｎ）、複数カバレッジ計測部１１６は、カバレッジ指標保持部１１７にアクセスしてカバレッジ指標１１７１を参照し、未計算のカバレッジ指標の計算方法の情報を取
得する（ｓ１０２）。
【００６０】
次に、複数カバレッジ計測部１１６は、ニューロン情報保持部１１５にアクセスしてニューロン情報１１５１を取得し、これをｓ１０２で得ている計算方法に適用することで、カバレッジ指標の値を算定し、これをカバレッジ計算結果１２１１に格納する（ｓ１０３）。
【００６１】
複数カバレッジ計測部１１６は、ｓ１０３の処理を実行後、ｓ１０１に処理を遷移させ、カバレッジ指標１１７１で規定する全種類のカバレッジ指標の計算が完了するまで（ｓ１０１：ｙ）、ｓ１０２〜ｓ１０３を繰り返し実行する。その結果、図９で例示したカバレッジ計算結果１２１１のように、計５種類のカバレッジ指標それぞれについて、カバレッジ計算結果欄の値が設定されることとなる。
【００６２】
なお、複数カバレッジ計測部１１６は、上述のカバレッジ計算結果１２１１の内容を、図１０Ａ、図１０Ｂにそれぞれ示すグラフ１０００、１１００のごとき描画オブジェクトに反映させ、これを表示装置１０６に出力するとしてもよい。
【００６３】
この場合、複数カバレッジ計測部１１６は、カバレッジ計算結果１２１１のテスト件数を横軸に、そのテスト件数時のカバレッジ計算結果の値を縦軸に、各種類のカバレッジ指標の曲線を適宜なグラフソフトウェア等で描画し、グラフ１０００を生成する。
【００６４】
同様に、複数カバレッジ計測部１１６は、カバレッジ計算結果１２１１のバグ検出件数を横軸に、そのテスト件数時のカバレッジ計算結果の値を縦軸に、各種類のカバレッジ指標の曲線を適宜なグラフソフトウェア等で描画し、グラフ１１００を生成する。
−−−フロー例２−−−
【００６５】
続いて、優先カバレッジ指標選択部１２２によるフローについて説明する。図１１は、本実施形態におけるカバレッジテスト支援方法のフロー例２を示す図である。
【００６６】
この場合、優先カバレッジ指標選択部１２２は、入力装置１０５を介して、テスト担当者等の適宜なユーザからのカバレッジ指標選択方針の指定を受け付ける（ｓ２００）。
【００６７】
このカバレッジ指標選択方針は、以下の概念に基づくものとなる。例えば、テスト対象プログラム１１０１に対して、ある件数のテストケースを適用してテスト実行した際、所定件数以上のバグが検出されたとする。その場合、算定したカバレッジ指標の値が、前回のテスト実行時の値より所定基準以上の伸びを示したならば、そのカバレッジ指標はバグを検出する観点として優れている、と言える。従って、伸びの良いカバレッジ指標をさらに伸ばすようにテストを実施することで、より多くのバグを検出できることとなる。
【００６８】
一方、ある件数のテストケースを適用してテスト実行した際、算定したカバレッジ指標の値が、前回のテスト実行時の値より所定基準以下の伸びしか示さなかったならば、そのカバレッジ指標においては、同じ箇所ばかりをテストしていて、仮にバグを検出できていても同じようなバグばかり検出している、と言える。従って、伸びの悪いカバレッジ指標を伸ばすようにテストを実施することで、異なる箇所もテストできることとなる。
【００６９】
そこで上述のユーザは、上述のカバレッジ指標選択方針として、異なる種類のバグ検出優先、または、バグ検出件数の増加優先、のいずれかを指定するものとする。
次に、優先カバレッジ指標選択部１２２は、カバレッジ計算結果保持部１２１にアクセスし、カバレッジ計算結果１２１１を取得する（ｓ２０１）。
【００７０】
続いて、優先カバレッジ指標選択部１２２は、ｓ２００で指定を受けたカバレッジ指標選択方針が、異なる種類のバグ検出優先、または、バグ検出件数の増加優先、のいずれであるか判定する（ｓ２０２）。
【００７１】
上述の判定の結果、ユーザから受け付けたカバレッジ指標選択方針が、異なる種類のバグ検出優先であった場合（ｓ２０２：異なる種類のバグ検出優先）、優先カバレッジ指標選択部１２２は、前回、優先カバレッジ指標を選択してから一定件数のテストを実施したか判定する（ｓ２０３）。
【００７２】
この判定に際し、優先カバレッジ指標選択部１２２は、例えば、優先カバレッジ指標保持部１２３にアクセスして優先カバレッジ指標１２３１の格納日時を特定し、この格納日時以降に実施したテスト件数を、カバレッジ計算結果１２１１のテスト件数欄を参照して特定する（カバレッジ計算結果１２１１の各レコードには、格納日時が付与されているとする）。
【００７３】
上述の判定の結果、一定件数のテストが実施されていた場合（ｓ２０３：ｙ）、優先カバレッジ指標選択部１２２は、前回、優先カバレッジ指標を選択してから、最も増加量の低いカバレッジ指標を、カバレッジ計算結果１２１１のカバレッジ指標名およびカバレッジ計算結果の各欄の値に基づいて選択して、これを優先カバレッジ指標１２３１に格納し（ｓ２０４）、処理を終了する。
【００７４】
他方、ｓ２０３における判定の結果、一定件数のテストが実施されていない場合（ｓ２０３：ｎ）、優先カバレッジ指標選択部１２２は、処理をｓ２０１に戻す。
【００７５】
他方、ｓ２０２における判定の結果、ｓ２００で指定を受けたカバレッジ指標選択方針が、バグ検出件数の増加優先であった場合（ｓ２０２：バグ検出件数増加優先）、優先カバレッジ指標選択部１２２は、前回、優先カバレッジ指標を選択してから一定件数のバグを検出したか判定する（ｓ２０５）。
【００７６】
この判定に際し、優先カバレッジ指標選択部１２２は、例えば、優先カバレッジ指標保持部１２３にアクセスして優先カバレッジ指標１２３１の格納日時を特定し、この格納日時以降に検出したバグ件数を、カバレッジ計算結果１２１１のバグ検出件数欄を参照して特定する（カバレッジ計算結果１２１１の各レコードには、格納日時が付与されているとする）。
上述の判定の結果、一定件数のバグを検出していない場合（ｓ２０５：ｎ）、優先カバレッジ指標選択部１２２は、処理をｓ２０１に戻す。
【００７７】
他方、上述の判定の結果、一定件数のバグを検出している場合（ｓ２０５：ｙ）、優先カバレッジ指標選択部１２２は、前回、優先カバレッジ指標を選択してから、最も増加量の多いカバレッジ指標を、カバレッジ計算結果１２１１のカバレッジ指標名およびカバレッジ計算結果の各欄の値に基づいて選択して、これを優先カバレッジ指標１２３１に格納し（ｓ２０６）、処理を終了する。
【００７８】
以上、本発明を実施するための最良の形態などについて具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
こうした本実施形態によれば、機械学習によって作成した任意のプログラムのバグを、効率的に検出可能となる。
【００７９】
本明細書の記載により、少なくとも次のことが明らかにされる。すなわち、本実施形態のカバレッジテスト支援装置において、前記演算装置は、前記優先カバレッジ指標の値を
向上させるニューロン情報を前記規定内容で特定し、当該ニューロン情報に関して誤差逆伝播法を適用し、前記プログラムにおける入力層の値たるテスト入力値を算定し、当該テスト入力値を前記テストケースに反映させる処理を更に実行するものである、としてもよい。
【００８０】
これによれば、好適なカバレッジ指標たる優先カバレッジ指標を向上させるテスト入力値を次回のテストに反映させることが可能となる。ひいては、機械学習によって作成した任意のプログラムのバグを、より効率的に検出可能となる。
【００８１】
また、本実施形態のカバレッジテスト支援装置において、前記記憶装置は、前記カバレッジ指標の規定内容として、前記プログラムにおいて活性化された中間層ニューロンの数と中間層ニューロンの総和数との比率を示す総和カバレッジと、前記プログラムにおける中間層ごとに活性化されたニューロンの数とニューロンの総和数との比率のうち最も小さい値であるレイヤカバレッジと、前記プログラムにおける同層のニューロンと出力値とを比較した場合に最も大きな値を出力したことがある中間層ニューロンの数と中間層ニューロンの総和数との比率を示す順序カバレッジと、テストケース実行ごとの所定定数と活性化された中間層ニューロンの数との比率に基づく中間層ニューロンごとにカバー濃度が所定の閾値を超えた中間層ニューロンの数と中間層ニューロンの総和数との比率を示す濃度カバレッジと、前記プログラムにおけるニューロンのペアごとの活性化共起率と中間層におけるニューロンのペア総数との比率を示す共起組合せカバレッジと、の少なくともいずれか複数の規定内容を保持し、前記演算装置は、前記各カバレッジ指標の値を算定するに際し、前記総和カバレッジ、前記レイヤカバレッジ、前記順序カバレッジ、前記濃度カバレッジ、および、前記共起組合せカバレッジ、のうち記憶装置で規定内容を保持するカバレッジ指標について、その値を算定するものである、としてもよい。
【００８２】
これによれば、ニューラルネットワーク由来のプログラムの関して好適なカバレッジ指標を、当該プログラムの特性にフィットしたカバレッジ指標中から選択できることとなる。ひいては、機械学習によって作成した任意のプログラムのバグを、より効率的に検出可能となる。
【００８３】
また、本実施形態のカバレッジテスト支援装置において、前記演算装置は、前記テストの実行件数、前記テスト結果が示すバグ件数、および、各カバレッジ指標の算定結果、を表示する所定の描画オブジェクトを生成し、当該描画オブジェクトを出力装置にて表示させる処理を更に実行するものである、としてもよい。
【００８４】
これによれば、カバレッジテストの担当者等にとって、優先カバレッジ指標の選択を行う際の好適な参考情報を分かりやすく提示することが可能となる。ひいては、機械学習によって作成した任意のプログラムのバグを、より効率的に検出可能となる。
【００８５】
また、本実施形態のカバレッジテスト支援方法において、前記情報処理装置が、前記優先カバレッジ指標の値を向上させるニューロン情報を前記規定内容で特定し、当該ニューロン情報に関して誤差逆伝播法を適用し、前記プログラムにおける入力層の値たるテスト入力値を算定し、当該テスト入力値を前記テストケースに反映させる処理を更に実行する、としてもよい。
【００８６】
また、本実施形態のカバレッジテスト支援方法において、前記情報処理装置が、前記記憶装置において、前記カバレッジ指標の規定内容として、前記プログラムにおいて活性化された中間層ニューロンの数と中間層ニューロンの総和数との比率を示す総和カバレッジと、前記プログラムにおける中間層ごとに活性化されたニューロンの数とニューロンの総和数との比率のうち最も小さい値であるレイヤカバレッジと、前記プログラムにおける同
層のニューロンと出力値とを比較した場合に最も大きな値を出力したことがある中間層ニューロンの数と中間層ニューロンの総和数との比率を示す順序カバレッジと、テストケース実行ごとの所定定数と活性化された中間層ニューロンの数との比率に基づく中間層ニューロンごとにカバー濃度が所定の閾値を超えた中間層ニューロンの数と中間層ニューロンの総和数との比率を示す濃度カバレッジと、前記プログラムにおけるニューロンのペアごとの活性化共起率と中間層におけるニューロンのペア総数との比率を示す共起組合せカバレッジと、の少なくともいずれか複数の規定内容を保持し、前記各カバレッジ指標の値を算定するに際し、前記総和カバレッジ、前記レイヤカバレッジ、前記順序カバレッジ、前記濃度カバレッジ、および、前記共起組合せカバレッジ、のうち記憶装置で規定内容を保持するカバレッジ指標について、その値を算定する、としてもよい。
【００８７】
また、本実施形態のカバレッジテスト支援方法において、前記情報処理装置が、前記テストの実行件数、前記テスト結果が示すバグ件数、および、各カバレッジ指標の算定結果、を表示する所定の描画オブジェクトを生成し、当該描画オブジェクトを出力装置にて表示させる処理を更に実行する、としてもよい。
【符号の説明】
【００８８】
１００  カバレッジテスト支援装置
１０１  外部記憶装置
１０２  プログラム
１０３  メモリ
１０４  ＣＰＵ（演算装置）
１０５  入力装置
１０６  表示装置
１０７  外部媒体入出力装置
１１０  テスト対象プログラム保持部
１１０１  テスト対象プログラム
１１１  テストケース保持部
１１１１  テストケース
１１２  期待出力値編集部
１１３  テスト入力値生成部
１１４  テスト実行部
１１５  ニューロン情報保持部
１１５１  ニューロン情報
１１６  複数カバレッジ計測部
１１７  カバレッジ指標保持部
１１７１  カバレッジ指標
１１８  テスト結果保持部
１１８１  テスト結果
１１９  テスト結果評価部
１２０  テスト評価結果保持部
１２０１  テスト評価結果
１２１  カバレッジ計算結果保持部
１２１１  カバレッジ計算結果
１２２  優先カバレッジ指標選択部
１２３  優先カバレッジ指標保持部
１２３１  優先カバレッジ指標
【図１】
2019114158.tif 000003
【図２】
2019114158.tif 000004
【図３】
2019114158.tif 000005
【図４】
2019114158.tif 000006
【図５】
2019114158.tif 000007
【図６】
2019114158.tif 000008
【図７】
2019114158.tif 000009
【図８】
2019114158.tif 000010
【図９】
2019114158.tif 000011
【図１０Ａ】
2019114158.tif 000012
【図１０Ｂ】
2019114158.tif 000013
【図１１】
2019114158.tif 000014