(57)【要約】      （修正有）【課題】プログラムのソースコードのデバッグを効率よく行うデバッグ支援方法、及びデバッグ支援システムを提供する。【解決手段】デバッグ支援システム１が、ソースコードに基づくプログラムの実行の結果生成された、ソースコードの各処理の実行の有無を示すカバレッジ情報をプログラムのテスト結果情報と共にプログラムテスト装置５から取得する。デバッグ支援システムは、ソースコードの各処理の実行の有無を入力値として、プログラムの実行結果を予測する学習モデル１１６を生成し、学習モデルにソースコードにおける指定された各処理の実行の有無を入力することにより、各処理の実行の有無がプログラムの実行結果に与える影響を算出し、影響の情報を出力する。【選択図】図１
2020201600.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ及びメモリを有するデバッグ支援システムが、
複数の処理を記述してなる所定のソースコードに基づくプログラムの実行の結果生成された、前記ソースコードの各処理の実行の有無を示すカバレッジ情報を、前記プログラムの実行の結果を示す情報であるテスト結果情報と共に所定の情報処理装置から取得するカバレッジ情報取得処理と、
前記取得したカバレッジ情報及びテスト結果情報に基づく所定の学習データを機械学習することにより、前記ソースコードの各処理の実行の有無を入力値として、前記各処理に基づき実行される前記プログラムの実行結果を予測する、所定の学習モデルを生成する機械学習処理と、
前記生成した学習モデルに、前記ソースコードにおける各処理の実行の有無を示す所定のパラメータを入力することにより、その各処理の実行による前記プログラムの実行結果を予測し、前記入力されたパラメータが示す各処理の実行の有無と、前記予測したプログラムの実行結果との関係を特定することにより前記各処理の実行の有無が前記プログラムの実行結果の予測に与える影響を算出する障害スコア算出処理と、
前記算出した、プログラムの実行結果の予測に与える影響の情報を出力する出力処理と、
を実行する、デバッグ支援方法。
【請求項２】
前記デバッグ支援システムは、
前記障害スコア算出処理において、前記各処理の実行の有無が前記プログラムの実行結果の予測に与える影響の大きさを表すパラメータである障害スコアを前記各処理について算出し、
前記出力処理において、前記算出した各障害スコアを、前記各処理を示す情報と共に出力する、
請求項１に記載のデバッグ支援方法。
【請求項３】
前記デバッグ支援システムは、
前記障害スコア算出処理において、前記入力されたパラメータが示す各処理の実行の有無と、前記予測したプログラムの実行結果との関係を特定するための所定の近似式を算出し、算出した近似式に基づき前記各処理の障害スコアを算出する、
請求項２に記載のデバッグ支援方法。
【請求項４】
前記デバッグ支援システムは、
前記カバレッジ情報取得処理において、設定値を異ならせた複数パターンのテストケースにより前記プログラムを複数回実行した場合の、カバレッジ情報及びテスト結果情報を取得し、
前記障害スコア算出処理において、各位置の障害スコアを、前記複数パターンのテストケースにおける前記各位置の障害スコアの平均によって算出する、
請求項２に記載のデバッグ支援方法。
【請求項５】
前記デバッグ支援システムは、前記障害スコア算出処理において、前記プログラムの実行の結果が失敗となる確率が高いテストケースを特定し、特定したテストケースにおける前記各位置の障害スコアの平均によって、当該各位置の障害スコアを算出する、
請求項４に記載のデバッグ支援方法。
【請求項６】
前記デバッグ支援システムは、前記出力処理において、
前記ソースコードの各処理と当該各処理の障害スコアとを、当該障害スコアの値に応じた順序で表示し、
前記ソースコードの処理のいずれかの指定をユーザから受け付け、指定を受け付けた処理に係るソースコードの部分を、当該処理の障害スコアと共に表示し、
前記表示されたソースコードの各処理の部分を、当該各処理の障害スコアに応じた表示形式で表示する、
請求項２に記載のデバッグ支援方法。
【請求項７】
プロセッサ及びメモリを有し、
複数の処理を記述してなる所定のソースコードに基づくプログラムの実行の結果生成された、前記ソースコードの各処理の実行の有無を示すカバレッジ情報を、前記プログラムの実行の結果を示す情報であるテスト結果情報と共に所定の情報処理装置から取得するカバレッジ情報取得処理部と、
前記取得したカバレッジ情報及びテスト結果情報に基づく所定の学習データを機械学習することにより、前記ソースコードの各処理の実行の有無を入力値として、前記各処理に基づき実行される前記プログラムの実行結果を予測する、所定の学習モデルを生成する機械学習処理部と、
前記生成した学習モデルに、前記ソースコードにおける各処理の実行の有無を示す所定のパラメータを入力することにより、その各処理の実行による前記プログラムの実行結果を予測し、前記入力されたパラメータが示す各処理の実行の有無と、前記予測したプログラムの実行結果との関係を特定することにより前記各処理の実行の有無が前記プログラムの実行結果の予測に与える影響を算出する障害スコア算出処理部と、
前記算出した、プログラムの実行結果の予測に与える影響の情報を出力する出力処理部と、
を備える、デバッグ支援システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッグ支援方法、及びデバッグ支援システムに関する。
【背景技術】
【０００２】
プログラムのデバッグ作業は、多くの時間と労力を要する。例えば、プログラムのテストに失敗した場合、そのテスト結果に基づき、開発者はソースコードで障害がある位置を特定する必要があるが、近年のプログラムの大規模化・複雑化によって、その作業はより多くの時間と労力を要するようになっている。
【０００３】
これらの負荷を軽減するため、例えば非特許文献１では、プログラムに対して複数のテストを実行した際に、各テストにおいてプログラムがソースコード中の各処理を実行したか、あるいは実行しなかったかを表す、いわゆるカバレッジ情報を収集して得られたデータと、テストの成功又は失敗を表すデータで構成される学習データとを生成する。学習データは、行ラベルがテストID、列ラベルがソースコード中の位置に対応した行列と、テスト結果列で構成されており、次のようにしてソースコードの各処理位置に対するスコアを算出する。
【０００４】
スコアの算出方法は、まず、スコアを求める処理位置において、成功したテスト件数に対する、テストが成功した場合に当該処理を実行した件数の比率pと、失敗したテスト件
数に対する、テストが失敗した場合に当該処理を実行した比率qとを求める。そして、q/(p+q)を当該処理位置の障害スコアとして算出する。各行に対して算出した障害スコアを、スコアの高い順に開発者に提示することで、開発者は、テストの失敗の原因となった可能性が高い位置から順に検査を行うことができ、デバッグ作業を行うことができる。
【０００５】
これらの処理は、プログラム言語を解析することなく、テストのカバレッジ情報とテスト結果を利用するため、言語非依存である。したがって、多くの開発プロジェクトに適用できる。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】J.A.Jones, and M.J.Harrold: Empirical evaluation of the tarantula automatic fault-localization technique: 20th IEEE/ACM International Conference on Automated Software Engineering, ASE 2005, pp.273-282 (2005).
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、非特許文献１に記載された手法を用いた場合、個々のソースコード中の処理に対して、テスト成功時又は失敗時における当該処理位置の実行比率のみによって障害スコアを算出しており、その処理の前後の処理状況については考慮されていない。
【０００８】
また、非特許文献１では、プログラムの異常終了によってカバレッジ情報の収集ができなかった場合、プログラムにバグがあることは確定しているにも関わらず、テスト成功時のデータを抽出して障害スコアの算出ができないという問題があった。
【０００９】
本発明はこのような状況に鑑みてなされたものであり、プログラムのソースコードのデバッグを効率よく行うことが可能なデバッグ支援方法、及びデバッグ支援システムを提供することにある。
【課題を解決するための手段】
【００１０】
以上の課題を解決するための本発明の一つは、プロセッサ及びメモリを有するデバッグ支援システムが、複数の処理を記述してなる所定のソースコードに基づくプログラムの実行の結果生成された、前記ソースコードの各処理の実行の有無を示すカバレッジ情報を、前記プログラムの実行の結果を示す情報であるテスト結果情報と共に所定の情報処理装置から取得するカバレッジ情報取得処理と、前記取得したカバレッジ情報及びテスト結果情報に基づく所定の学習データを機械学習することにより、前記ソースコードの各処理の実行の有無を入力値として、前記各処理に基づき実行される前記プログラムの実行結果を予測する、所定の学習モデルを生成する機械学習処理と、前記生成した学習モデルに、前記ソースコードにおける各処理の実行の有無を示す所定のパラメータを入力することにより、その各処理の実行による前記プログラムの実行結果を予測し、前記入力されたパラメータが示す各処理の実行の有無と、前記予測したプログラムの実行結果との関係を特定することにより前記各処理の実行の有無が前記プログラムの実行結果の予測に与える影響を算出する障害スコア算出処理と、前記算出した、プログラムの実行結果の予測に与える影響の情報を出力する出力処理と、を実行する。
【発明の効果】
【００１１】
本発明によれば、プログラムのソースコードのデバッグを効率よく行うことができる。
なお、上述した以外の課題、構成及び効果は、以下の本発明を実施するための形態及び添付図面によって明らかになる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本実施形態に係るデバッグ支援システム１の構成の一例を示す図である。
【図２】図２は、デバッグ支援装置１００のハードウェア構成の一例を説明する図である。
【図３】図３は、デバッグ支援装置１００が備える機能の一例を説明する図である。
【図４】図４は、位置情報テーブル１１２の一例を示す図である。
【図５】図５は、学習データテ−ブル１１３の一例を示す図である。
【図６】図６は、障害スコアテーブル１１４の一例を示す図である。
【図７】図７は、ランキングテーブル１１５の一例を示す図である。
【図８】図８は、カバレッジファイル４００の一例を示す図である。
【図９】図９は、デバッグ支援処理の一例を示すフロー図である。
【図１０】図１０は、学習データ生成処理の詳細を説明するフロー図である。
【図１１】図１１は、障害スコア算出処理の詳細を説明するフロー図である。
【図１２】図１２は、出力処理の詳細を説明するフロー図である。
【図１３】図１３は、ソースコード抽出画面の一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本実施形態のデバッグ支援システムについて図面を参照しつつ説明する。
【００１４】
＜デバッグ支援システム１の構成＞
図１は、本実施形態に係るデバッグ支援システム１の構成の一例を示す図である。デバッグ支援システム１は、複数の処理が記述された所定のソースコード（デバッグ対象のソースコード）に基づくプログラムの実行を行うプログラムテスト装置５と、プログラムテスト装置５で実行されたプログラムのソースコードの障害位置を特定するデバッグ支援装置１００とを含んで構成されている。なお、プログラムテスト装置５とデバッグ支援装置１００の間は、例えば、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）
、インターネット、専用線等の有線又は無線の通信ネットワーク又は通信線３によって通
信可能に接続されている。
【００１５】
プログラムテスト装置５は、デバッグ対象のソースコードに基づくプログラムに複数パターンの設定値（入力パラメータ）を入力してそのプログラム実行する、所定のテストツールを記憶している。プログラムテスト装置５は、複数のテストケースでプログラムを実行する。そして、プログラムテスト装置５は、ソースコード上の各処理が実行されたか否かを示すカバレッジ情報を記憶したカバレッジファイル４００を、各テストケースにつき生成する。
【００１６】
デバッグ支援装置１００は、プログラムテスト装置５からカバレッジ情報及びテスト結果情報を受信し、受信したこれらの情報に基づき所定の学習データを生成し、この学習データにより、学習モデル１１６を生成する（機械学習を行う）。なお、機械学習の手法は公知の技術（例えば、ニューラルネットワーク、ディープラーニング）を用いることができる。
【００１７】
なお、本実施形態では、学習データは、カバレッジファイル４００が示すソースコードのｎ箇所の位置（例えば、１行目〜ｎ行目）における各処理状況（当該処理を実行したか否か）を表した、ｎ次元ベクトル形式のデータであるものとする。そして、この学習データにより生成された学習モデル１１６は、学習データと同様の形式の、ソースコードに関する入力データに基づき、そのソースコードに基づくプログラムの実行結果（テスト）に関する情報（例えば、実行が失敗する確率）を予測して出力する。
【００１８】
なお、図２は、デバッグ支援装置１００のハードウェア構成の一例を説明する図である。デバッグ支援装置１００は、ＣＰＵ（Central Processing Unit）などの処理装置１０
４と、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive）等の記憶装置１１１と、キーボード、マウス、タッチパネルなどからなる入力装置１０１と、モニタ（ディスプレイ）、プリンタ等からなる、画面表示又は情報の出力を行う出力装置１０２と、他の装置と通信を行う通信装置１０５とを備える。
【００１９】
＜＜デバッグ支援装置１００の機能＞＞
図３は、デバッグ支援装置１００が備える機能の一例を説明する図である。デバッグ支援装置１００は、カバレッジ情報取得処理部１０６１、学習データ生成処理部１０６、機械学習処理部１０７、テスト結果予測処理部１０８、障害スコア算出処理部１０９、及び出力処理部１１０の各機能を有する。
【００２０】
カバレッジ情報取得処理部１０６１は、複数の処理を記述してなる所定のソースコードに基づくプログラムの実行の結果生成された、ソースコードの各処理の実行の有無（処理状況）を示すカバレッジ情報（カバレッジファイル４００）を、プログラムの実行の結果を示す情報であるテスト結果情報と共に所定の情報処理装置（プログラムテスト装置５）から取得する。
【００２１】
例えば、カバレッジ情報取得処理部１０６１は、設定値を異ならせた複数パターンによりプログラムを複数回実行した場合のカバレッジ情報（カバレッジファイル４００）を取得する。
【００２２】
学習データ生成処理部１０６は、学習モデル１１６の生成に使用される学習データを生成する。なお、学習データは、学習データテーブル１１３に記憶される。
【００２３】
また、学習データ生成処理部１０６は、ソースコードの各処理を全て実行せずにプログ
ラムの実行が成功した旨を示す学習データ（仮想学習データ）を生成する。
【００２４】
機械学習処理部１０７は、カバレッジ情報取得処理部１０６１が取得したカバレッジ情報（カバレッジファイル４００）及びテスト結果情報に基づく所定の学習データを機械学習することにより、ソースコードの各処理の実行の有無を入力値として、各処理に基づき実行されるプログラムの実行結果（例えば、プログラムの実行の失敗の確率）を予測する、所定の学習モデル１１６を生成する。なお、テスト結果予測処理部１０８は、学習モデル１１６に基づき、プログラムの実行結果を予測する処理を行う。
【００２５】
障害スコア算出処理部１０９は、機械学習処理部１０７が生成した学習モデル１１６に、ソースコードにおける各処理の実行の有無を示す所定のパラメータ（例えば、実行されたプログラムのソースコードの各処理に対してランダムな処理状況の値が設定された、又は、実行されたプログラムのソースコードの各処理に対して、その処理状況に近い処理状況の値が設定されたパラメータ。以下、近傍データという。）を入力することにより、その各処理の実行によるプログラムの実行結果を予測する。そして、機械学習処理部１０７は、入力されたパラメータ（近傍データ）が示す各処理の実行の有無（なお、実行されたプログラムのソースコードにおける各処理の実行の有無（処理状況）を含めてもよい。以下同様。）と、予測したプログラムの実行結果との関係を特定することにより各処理の実行の有無がプログラムの実行結果の予測に与える影響を算出する。
【００２６】
具体的には、障害スコア算出処理部１０９は、各処理の実行の有無がプログラムの実行結果の予測に与える影響の大きさを表すパラメータである障害スコアをその各処理について算出する。なお、障害スコアは、障害スコアテーブル１１４に記憶される。
【００２７】
例えば、障害スコア算出処理部１０９は、入力されたパラメータ（近傍データ）が示す各処理の実行の有無と、予測したプログラムの実行結果との関係を特定するための所定の近似式（例えば、線形モデル）を算出し、算出した近似式に基づき各処理の障害スコアを算出する。
【００２８】
なお、障害スコア算出処理部１０９は、各位置の障害スコアを、複数パターンのテストケースにおける各位置の障害スコアの平均によって算出する。
【００２９】
具体的には、障害スコア算出処理部１０９は、プログラムの実行の結果が失敗となる確率が高いパターンを特定し、特定したパターンにおける障害スコアの平均によって、各位置の障害スコアを算出する。
【００３０】
出力処理部１１０は、障害スコア算出処理部１０９が算出した、プログラムの実行結果の予測に与える影響の情報を出力する。
【００３１】
例えば、出力処理部１１０は、障害スコア算出処理部１０９が算出した各障害スコアを、各処理を示す情報と共に出力する。
【００３２】
また、例えば、出力処理部１１０は、ソースコードの各処理と当該各処理の障害スコアとを、当該障害スコアの値に応じた順序で表示し、ソースコードの処理のいずれかの指定をユーザから受け付け、指定を受け付けた処理に係るソースコードの部分を、当該処理の障害スコアと共に表示し、表示されたソースコードの各処理の部分を、当該各処理の障害スコアに応じた表示形式で表示する。
【００３３】
次に、デバッグ支援装置１００は、位置情報テーブル１１２、学習データテ−ブル１１３、障害スコアテーブル１１４、ランキングテーブル１１５、学習モデル１１６、及びカ
バレッジファイル４００を記憶している。以下、これらの情報の詳細を説明する。
【００３４】
＜位置情報テーブル＞
図４は、位置情報テーブル１１２の一例を示す図である。位置情報テーブル１１２は、ソースコードを記憶しているファイルを特定する情報（ファイル名）が設定されるファイル名２０２と、ファイル名２０２に係るソースコード中の位置を特定する情報（ここでは、列番号とする）が設定される位置ＩＤ２０１と、ファイル名２０２に係るソースコードの先頭からの行数（行番号）が設定される行番号２０３とを有するレコードを備える。ファイル名２０２と行番号２０３の組み合わせによって、ソースコード中に記述された処理コードの位置が特定される。
【００３５】
＜学習データテ−ブル＞
図５は、学習データテ−ブル１１３の一例を示す図である。学習データテ−ブル１１３は、学習モデル１１６における入出力データを格納したテーブルである。学習データテ−ブル１１３は、テストケースの識別子が設定されるテストＩＤ２０４と、テストＩＤ２０４に係るテストケースにおけるプログラムに係るソースコードにおける各行の処理が実行されたか否かを示す情報（以下、処理状況情報という）が設定される処理状況ベクトル２０５と、テストＩＤ２０４に係るテストケースにおけるプログラムの実行結果（以下、テスト結果という）を示す情報が設定されるテスト結果２０６と、学習モデル１１６により推定された、テストＩＤ２０４に係るテストケースにおけるプログラムの実行結果の予測（ここでは、プログラムの実行の失敗確率）が設定される予測結果２０７とを含む各項目を有するレコードを備える。なお、テストケースの識別子は、本実施形態では、プログラムテスト装置５が管理しているものとする。
【００３６】
処理状況情報は、ソースコードにおける各行の処理が実行されたか否か（実行状況）を各テストケースｔごとに記録した情報である。したがって、処理状況情報は、テストケースの合計件数がＴの場合は、Ｔ×ｎ行列（以下、実行状況行列ともいう）のデータによって表される。例えば、テストケースｔにおける、ソースコードのｎ箇所（１行目〜ｎ行目）の処理の処理状況のデータは、
【００３７】
処理状況１｜処理状況２｜・・・処理状況ｎ｜
【００３８】
といったように、所定の区切り記号等によって区切られたデータの集合（例えば、処理状況の値が１の場合は実行あり、０の場合は実行なし）によって表されるｎ次元ベクトルである。
【００３９】
テスト結果２０６には、テストＩＤ２０４が示すテストケースにおけるプログラムの実行の結果が成功であった場合は０が設定され、失敗であった場合は１が設定される。なお、予測結果２０７の内容は、テスト結果予測処理部１０８により設定される。
【００４０】
＜障害スコアテーブル＞
図６は、障害スコアテーブル１１４の一例を示す図である。障害スコアテーブル１１４は、学習データテーブル１１３のテストＩＤ２０４に対応するテストＩＤ２０８と、位置情報テーブル１１２の位置ＩＤ２０１に対応する位置ＩＤ２０９と、テストＩＤ２０８に係るテストケースでプログラムが実行された場合の、対応するソースコード上の、位置ＩＤ２０９に係る位置の障害スコアが設定される障害スコア２１０とを含む各項目を有するレコードを備える。
【００４１】
＜ランキングテーブル＞
図７は、ランキングテーブル１１５の一例を示す図である。ランキングテーブル１１５
は、ソースコードの各位置の障害スコアを、その障害スコアの高い順にソートして得られた順位（ランキング）の情報である。
【００４２】
ランキングテーブル１１５は、ソースコードの各位置の順位が設定されるランク２１１と、ランク２１１に係るランクが設定された位置（位置情報テーブル１１２の位置ＩＤ２０１に対応）が設定される位置ＩＤ２１２と、ランク２１１に係るランクの障害スコアが設定される障害スコア２１３とを含む各項目を有するレコードを備える。なお、デバッグ支援装置１００は、位置ＩＤ２１２を利用して位置情報テーブル１１２を参照することで、対応する位置ＩＤ２１２に係るソースコードが記録されているファイルのファイル名と行番号とを特定することができる。
【００４３】
なお、複数の位置の障害スコアが同値であった場合は、ランク２１１には、順位の最大値を設定してもよい。例えば、３か所の位置の障害スコアが同値で、順位がそれぞれ３，４，５であった場合には、当該３か所の位置に係るランク２１１は、全て５と設定してよい。
【００４４】
また、選択されたテストケースが複数であった場合には、その場合のソースコードの位置に関しては、選択された全テストケースにおける障害スコアの平均値が当該位置の障害スコアとして障害スコア２１３の項目に格納される。
【００４５】
＜カバレッジファイル＞
図８は、カバレッジファイル４００の一例を示す図である。カバレッジファイル４００は、プログラムを実行した場合における、対応するソースコードの各処理の処理状況を、テキスト形式で出力した情報（カバレッジ情報）である。なお、このカバレッジファイル４００は、テスト実行装置５がコンパイラgccに対応したカバレッジツールgcovを備えて
いる場合の一例であるが、カバレッジツールを限定する趣旨ではない。
【００４６】
カバレッジファイル４００は、行番号４０１、実行回数４０２、及びソースコード４０３の各テキスト情報を備え、これらは、空白文字で桁揃えされた状態で登録されている。なお、カバレッジファイル４００は、本実施形態では、プログラムに係るソースコードごとに（ソースファイルごとに）生成される。
【００４７】
行番号４０１には、ソースコード４０３の各行に付与された行番号が格納される。この行番号は、位置情報テーブル１１２の行番号２０３に対応する。なお、プログラムテスト装置５が出力するカバレッジファイル４００にコメント行が挿入されている場合は、デバッグ支援装置１００が利用するカバレッジファイル４００の行番号４０１には、そのコメント行を削除した場合の行番号が設定されるものとしてもよい。
【００４８】
実行回数４０２には、プログラムを実行した場合に、行番号４０１に係る行番号の処理が実行された回数が格納される。なお、行番号４０１に係る行番号に実行可能な処理が記述されていない場合（例えば、コメント又は空欄）には、実行回数４０２にはハイフン’-‘が設定される。また、行番号４０１に係る行番号における処理が一度も実行されなか
った場合は、実行回数４０２には’####’が設定される。
【００４９】
なお、前記の位置情報テーブル１１２には、カバレッジファイル４００の実行回数４０２に’####’が設定された行（位置）についてのレコードは作成されるが、ハイフン（’-’）が設定された行（位置）についてのレコードは作成されない。また、学習データテ
ーブル１１３の処理状況ベクトル２０５に設定されているソースコードの各行（行）の処理状況のうち、カバレッジファイル４００の実行回数４０２に’####’が設定されている行（位置）の処理状況には、「０」が設定され、実行回数４０２に１以上の数値が設定さ
れている行（位置）に係る処理状況には「１」が設定される。
【００５０】
このカバレッジファイル４００は、gcovに基づくカバレッジファイルの形式を備えた、単純なフォーマットのテキストデータであるため、これを利用することで、デバッグ支援装置１００は、学習データ（学習モデル１１６の入力データ）の生成に必要な情報（例えば、行番号と実行回数）の抽出を容易に行うことができる。なお、その他の環境に基づくカバレッジファイル４００の形式についても、行番号と実行回数の抽出を行うことができる。
【００５１】
以上に説明したデバッグ支援装置１００の機能は、デバッグ支援装置１００のハードウェアによって、もしくは、デバッグ支援装置１００の処理装置１０４が、記憶装置１１１に記憶されている各プログラムを読み出して実行することにより実現される。また、これらのプログラムは、例えば、二次記憶デバイスや不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤなどの記憶デバイス、又は、ＩＣカード、ＳＤカード、ＤＶＤなどの、情報処理装置で読み取り可能な非一時的データ記憶媒体に格納される。
【００５２】
＜＜デバッグ支援処理＞＞
次に、デバッグ支援システム１が行う、プログラムのソースコードのデバッグを行うデバッグ支援処理について説明する。
図９は、デバッグ支援処理の一例を示すフロー図である。なお、デバッグ支援処理は、例えば、デバッグ支援装置１００にユーザから所定の入力がなされたことを契機に開始される。
【００５３】
まず、デバッグ支援装置１００は、学習モデル１１６の生成に用いる学習データを生成する学習データ生成処理を実行する（ｓ４０１）。この処理の詳細は後述する。次に、デバッグ支援装置１００は、学習データ生成処理で生成した学習データテーブル１１３に基づき機械学習を行うことにより学習モデル１１６を生成する機械学習処理を実行する（ｓ４０２）。
【００５４】
具体的には、例えば、機械学習処理部１０７は、学習データテーブル１１２の処理状況ベクトル２０５及びテスト結果２０６を学習データとして、ニューラルネットワーク等の機械学習手法によって、学習モデル１１６を生成する。学習モデル１１６は、テストケース１件の処理状況ベクトル（ｎ次元ベクトル）を入力データとして与えると、そのテストケースにおけるプログラムの実行の結果を予測する（具体的には、プログラムの実行の失敗確率を予測する）。
【００５５】
次に、デバッグ支援装置１００は、障害スコアを算出する障害スコア算出処理を実行する（ｓ４０３）。この処理の詳細は後述する。そして、デバッグ支援装置１００は、障害スコアに関する情報を表示する出力処理を実行し（ｓ４０４）、デバッグ支援処理を終了する。出力処理の詳細は後述する。
【００５６】
以下、デバッグ支援処理における各処理の詳細を説明する。
＜学習データ生成処理＞
図１０は、学習データ生成処理の詳細を説明するフロー図である。学習データ生成処理部１０６は、プログラムテスト装置５から受信したカバレッジファイル４００から、位置情報テーブル１１２及び学習データテーブル１１３を主記憶上に生成する（ｓ５０１−ｓ５１８）。
【００５７】
具体的には、まず、学習データ生成処理部１０６は、位置情報テーブル１１２及び学習データテーブル１１３を初期化する（ｓ５０１）。これらのテーブルは、一時的に主記憶
上に格納され、その後、後述するようにハードディスク等の記憶装置に記録される。
【００５８】
そして、学習データ生成処理部１０６は、プログラムに対する各テストケースｔについて、学習データを生成する（ｓ５０２−ｓ５１６）。なお、テストケースの総件数は、プログラムテスト装置５から取得可能とする。
【００５９】
具体的には、まず、学習データ生成処理部１０６は、テストケースｔにおける実行状況行列及びカバレッジファイル４００を初期化する（ｓ５０３）。これは、カバレッジファイル４００はテストケースごとに生成されるためである。また、実行状況行列はデータ要素を追加可能な可変長配列である。
【００６０】
学習データ生成処理部１０６は、テストケースｔでプログラムを実行するよう、プログラムテスト装置５に所定の指示を送信する。そして、学習データ生成処理部１０６は、プログラムテスト装置５から、そのテストケースのプログラムの実行により出力されたカバレッジファイル４００（ソースコードの各処理の処理状況）、及び、プログラムの実行結果を表す結果情報を受信する（ｓ５０４）。なお、受信する結果情報の内容は、プログラムテスト装置５のテストツールに依存する。例えば、テストツールが、所定の結果情報と予め設定された値との比較により成功又は失敗（'Success'、'Failed'）を設定し、又は
、ユーザから結果情報の入力を受け付けることにより成功又は失敗を設定する。
【００６１】
学習データ生成処理部１０６は、ｓ５０４で受信したカバレッジファイル４００が指定する各ソースコードのファイルｆについて、後述するｓ５１３までの処理を繰り返し実行する（ｓ５０６−ｓ５１３）。なお、学習データ生成処理部１０６は、テストケースｔについて、テストツールにおけるプログラムの異常終了によりカバレッジファイル４００を受信できなかった場合は、次のテストケースｔについてｓ５０２以降の処理を繰り返す。
【００６２】
具体的には、まず、学習データ生成処理部１０６は、カバレッジファイル４００が示す、ファイルｆに係るソースコードの各行の文字列（行番号４０１、実行回数４０２、及びソースコード４０３）を読み込む（ｓ５０６）。
【００６３】
学習データ生成処理部１０６は、読み込んだソースコードの文字列から、そのソースコードの各行の行番号及びその実行回数を抽出する（ｓ５０７）。具体的には、例えば、学習データ生成処理部１０６は、カバレッジファイル４００の各行の行番号４０１及び実行回数４０２をそれぞれ取得する。
【００６４】
学習データ生成処理部１０６は、ｓ５０７で抽出した各行の実行回数を判定する（ｓ５０８−ｓ５１２）。具体的には、例えば、学習データ生成処理部１０６は、カバレッジファイル４００の実行回数４０２の値を判定する。
【００６５】
すなわち、まず、ある行の実行回数が数値でない場合は（ｓ５０８：Ｎｏ）、ｓ５１０の処理が行われる。他方、ある行の実行回数が数値の場合は（ｓ５０８：Ｙｅｓ）、学習データ生成処理部１０６は、当該行が実行された旨を記憶する（ｓ５０９、ｓ５１２）。具体的には、例えば、学習データ生成処理部１０６は、主記憶上の学習データテーブル１１３の処理状況ベクトル２０５の当該行に係る配列（実行状況行列）の処理状況の値に「１」を設定し（ｓ５０９）、また、主記憶上の位置情報テーブル１１２のファイル名２０２に、ソースコードのファイルｆに係るファイル名（現在処理中のファイル名）を設定し、行番号２０３に当該行番号を設定する（ｓ５１２）。その後はｓ５１３の処理が行われる。なお、位置情報テーブル１１２に、すでに同一のファイル名と行番号が登録されている場合は、ｓ５１２の処理は行わない。
【００６６】
ｓ５１０において、ある行の実行回数が’####’でない場合は（ｓ５１０：Ｎｏ）、ｓ５１３の処理が行われる。他方、ある行の実行回数が’####’である場合は（ｓ５１０：Ｙｅｓ）、学習データ生成処理部１０６は、当該行が実行されなかった旨を記憶する（ｓ５１１、ｓ５１２）。具体的には、例えば、学習データ生成処理部１０６は、主記憶上の学習データテーブル１１３の処理状況ベクトル２０５の当該行に係る配列（実行状況行列）の処理状況の値に「０」を設定し（ｓ５１１）、また、主記憶上の位置情報テーブル１１２のファイル名２０２にソースコードのファイルｆに係るファイル名（現在処理中のファイル名）を設定し、行番号２０３に当該行番号を設定する（ｓ５１２）。なお、位置情報テーブル１１２に、すでに同一のファイル名と行番号が登録されている場合は、ｓ５１２の処理は行われない。
【００６７】
学習データ生成処理部１０６は、以上のｓ５０７からｓ５１２までの処理を、ソースコードのファイルｆの全行について行う（ｓ５０５−ｓ５１３）。また、学習データ生成処理部１０６は、以上のｓ５０７からｓ５１３までの処理を、全てのソースコードに係るカバレッジファイル４００について行う（ｓ５０６−ｓ５１４）。
【００６８】
このように、学習データ生成処理部１０６は、以上のｓ５０５からｓ５１４までの処理により、カバレッジファイル４００が示す、テストケースｔにおける、ソースコードの全ての行の実行状況行列及びテスト結果情報Ｒを、主記憶上の学習データテーブル１１３に登録する（ｓ５１５）。なお、テスト結果情報Ｒには、プログラムの実行が成功していた場合（'Success'）には０、失敗していた場合（'Failed'）には１が設定される。その後
はｓ５１３の処理が行われる。
【００６９】
学習データ生成処理部１０６は、ｓ５０３からｓ５１５までの処理を、ソースコードの全てのテストケースについて実行する（ｓ５１６）。
【００７０】
さらに、学習データ生成処理部１０６は、仮想学習データを登録する（ｓ５１７）。仮想学習データとは、プログラムを実行した場合において、全ての処理が実行されずにテストが成功したことを表す架空のデータである。例えば、仮想学習データは、主記憶上の学習データテーブル１１３と同様のフォーマットを有し、実行状況行列の全ての要素が０であるデータである。学習データ生成処理部１０６は、この仮想学習データを、所定の件数（例えば、指定された件数、又は比率（例えば、テスト件数の総数の５０％等））だけ登録する。なお、この場合、学習データ生成処理部１０６は、主記憶上の学習データテーブル１１３のテストＩＤ２０４に、マイナス値等の特殊な識別子を設定してもよい。これにより、仮想学習データが、仮想的なデータであることが容易に判別される。このような仮想学習データの追加は、特にニューラルネットワークやディープラーニングといった機械学習において、データ空間上の学習データが不足している領域での予測精度を向上させることができる。ただし、この仮想学習データの追加は任意である。
【００７１】
学習データ生成処理部１０６は、ｓ５１８までの処理で主記憶上に記憶した位置情報テーブル１１２及び学習データテーブル１１３の内容を、ハードディスク等の記憶装置に格納する（ｓ５１８）。そして、学習データ生成処理部１０６は、学習データテーブル１１３の内容に基づき所定の機械学習を行い、学習モデル１１６を生成する。以上で、学習データ生成処理を終了する。
【００７２】
次に、障害スコア算出処理の詳細を説明する。なお、障害スコア算出処理の実行時には、学習モデル１１６が生成されている。
＜障害スコア算出処理＞
図１１は、障害スコア算出処理の詳細を説明するフロー図である。まず、テスト結果予測処理部１０８は、学習データテーブル１１３に登録されている全てのテストケースでの
プログラムの実行結果を予測する（ｓ６０１）。
【００７３】
具体的には、例えば、テスト結果予測処理部１０８は、学習データ生成処理で生成した学習モデル１１６に、学習データテーブル１１３の各レコードの処理状況ベクトル２０５を入力することにより、それぞれのレコードに係る失敗確率を出力させ、出力された失敗確率を、学習データテーブル１１３の予測結果２０７に格納する。
【００７４】
次に、障害スコア算出処理部１０９は、障害スコアを算出する対象とするテストケース、具体的には、プログラムの実行の結果が失敗となる確率が高いテストケースを特定する（ｓ６０２）。例えば、障害スコア算出処理部１０９は、学習データテーブル１１３の各レコードのうち、予測結果２０７に係る失敗確率が所定の閾値以上であるレコードを特定する。
【００７５】
なお、障害スコア算出処理部１０９は、レコードが特定できなかった場合は、閾値を徐々に下げる等してもよい。また、失敗確率が全て０の場合は、そのうちから所定の条件を満たすもののみを特定してもよい。
【００７６】
そして、障害スコア算出処理部１０９は、ｓ６０２で特定した各テストケースｖについて、後述するｓ６０４からｓ６０５までの処理を繰り返す（ｓ６０３−ｓ６０６）。
【００７７】
すなわち、まず、障害スコア算出処理部１０９は、テストケースｖでのプログラムの実行において、ソースコードの指定位置（指定行）における任意の処理状況を示す所定データ（近傍データ。ｎ次元ベクトルのデータ。）を所定数生成する（ｓ６０４）。すなわち、障害スコア算出処理部１０９は、学習データ生成処理部１０６で機械学習の対象にされなかった（学習データテーブル１１３の処理状況ベクトル２０５に登録されていない）、テストケースｖにおける各位置の処理状況のデータを生成する。なお、生成する近傍データの数は予め設定されているものとする。
【００７８】
近傍データの内容、すなわち指定位置とその処理状況の内容は、特に限定されるものではない。例えば、障害スコア算出処理部１０９は、位置情報テーブル１１２の位置ＩＤ２０１に係る各位置における処理状況を０以上１以下の乱数で設定し、これを近傍データとしてもよい。また、障害スコア算出処理部１０９は、位置情報テーブル１１２の位置ＩＤ２０１に係る各処理の処理状況の比率（０又は１が出現する確率）に従って生成される乱数に基づき、０又は１のどちらかを設定し、これを近傍データとしてもよい。また、障害スコア算出処理部１０９は、ユーザから、近傍データの入力を受け付けてもよい。
【００７９】
そして、障害スコア算出処理部１０９は、ｓ６０４で生成した近傍データを学習モデル１１６に入力することで、各近傍データの予測結果を出力する。
【００８０】
次に、障害スコア算出処理部１０９は、近傍データ及びテストケースｖの実行状況ベクトルと、これらに対する予測結果に基づき、ソースコードの各処理の処理状況とプログラムの実行結果の予測との関係を表す近似式である数値モデル（以下、局所モデルという）を生成する局所モデル推定処理を実行する（ｓ６０５）。
【００８１】
2020201600.tif 000003
【００８２】
2020201600.tif 000004
【００８３】
2020201600.tif 000005
【００８４】
障害スコア算出処理部１０９は、局所モデル及びその結果を主記憶上に記憶する。具体的には、例えば、障害スコア算出処理部１０９は、主記憶上の障害スコアテーブル１１４のテストＩＤ２０８にテストケースｖを設定し、位置ＩＤ２０９に推定パラメータSiに係る位置を設定し、障害スコア２１０に推定パラメータSiを設定する。
【００８５】
障害スコア算出処理部１０９は、以上のｓ６０４からｓ６０５までの処理を、ｓ６０３で選択した全てのテストケースｖについて実行する（ｓ６０３−ｓ６０６）。
【００８６】
次に、障害スコア算出処理部１０９は、障害スコアテーブル１１４に基づき、ソースコード上の各位置について、障害スコアの平均値（選択された全テストケースにおける平均値）を算出する（ｓ６０７）。なお、障害スコア算出処理部１０９は、算出した障害スコアを、ランキングテーブル１１５と同様の形式で主記憶上に登録する。
【００８７】
次に、障害スコア算出処理部１０９は、ｓ６０７で算出した、ソースコードの各位置の障害スコアの平均値を降順に並び替えることで、障害スコアの順位付けを行う（ｓ６０８）。なお、障害スコア算出処理部１０９は、各障害スコアの順位を、ランキングテーブル１１５と同様の形式で主記憶上に格納する（ランキングテーブル１１５のランク２１１に設定を行う）。
【００８８】
障害スコア算出処理部１０９は、主記憶上のランキングテーブル１１５を記憶装置に格納する（ｓ６０９）。以上で障害スコア算出処理は終了する。
【００８９】
次に、出力処理について説明する。
＜出力処理＞
図１２は、出力処理の詳細を説明するフロー図である。
まず、出力処理部１１０は、ソースコードの各位置を障害スコア（の平均値）の降順に表示したランキング画面を表示する（ｓ６０１）。具体的には、例えば、出力処理部１１０は、ランキングテーブル１１５の各レコードの内容を、ランク２１１に係る順位の順にソートして表示する。なお、ランキング画面は、例えば、ランキングテーブル１１５の内容を表形式で表した画面であり、ソースコードの各位置と、その位置のランキングと、その位置の障害スコアとが表示される（不図示）。
【００９０】
ここで、出力処理部１１０は、ランキング画面に対する、ソースコードの位置（行）に関する入力をユーザから受け付ける（ｓ７０２）。出力処理部１１０は、ユーザからソースコードの位置（行）の入力を受け付けると、受け付けた位置及びその前後の所定範囲（例えば、受け付けた位置の前後の所定行）を含む所定範囲（表示範囲）のソースコードを表示したソースコード抽出画面を表示する（ｓ７０３）。
【００９１】
ここで、ソースコード抽出画面の詳細を説明する。
（ソースコード抽出画面）
図１３は、ソースコード抽出画面の一例を示す図である。ソースコード抽出画面８００は、表示範囲における各行のソースコードが表示されるソースコード欄８０３と、ソースコード欄８０３の各行の障害スコアが表示される障害スコア欄８０２と、ソースコード欄８０３の各行の順位が表示されるランク欄８０１とを有する。
【００９２】
ソースコード欄８０３は、ユーザからソースコードの変更の入力を受け付ける。これにより、例えば、ユーザは、表示範囲のソースコードにバグを発見した場合は、該当するソースコードの部分を編集することができる。そして、ユーザは、編集したソースコードに対して所定の処理を行ってプログラムを生成することで、プログラムのテストを再度実行することができる（デバッグ支援装置１００が、全体処理を実行する）。例えば、プログラムのビルドが必要な言語の場合は、所定のコンパイラがソースコードを再ビルド（再コンパイル）してプログラムを生成する。
【００９３】
なお、ソースコード欄８０３に表示されているソースコードのうち、位置情報テーブル１１２に登録されていない位置（行）に係る障害スコア欄８０２及びランク欄８０１には、それぞれハイフン（’-‘）が表示されるようにしてもよい。
【００９４】
また、ソースコード欄８０３の各行のソースコードの表示領域に対しては、その障害スコアに応じてその背景色８０４を変更するようにしてもよい。例えば、グレイスケールによる背景色の変更、色別による背景色の変更（例えば、障害スコアが０の場合は緑であり、マイナスに進むと青に変化し、プラスに進むと赤に変化する）を設けてもよい。
【００９５】
なお、以上のランキング画面及びソースコード抽出画面８００は、それぞれを並列したウィンドウによって表示されてもよい。また、出力処理部１１０は、これらの画面を、プログラムの統合開発環境の拡張機能として提供することも可能である。
【００９６】
以上のように、本実施形態のデバッグ支援システム１は、ソースコードの各処理の実行の有無（カバレッジファイル４００）及び、プログラムの実行結果情報を利用することで（学習データテーブル１１３）、ソースコードの各処理の実行の有無を入力値としてそのソースコードに基づき実行されるプログラムの実行結果を予測する学習モデル１１６を生成する。そして、デバッグ支援システム１は、ソースコードの各処理の実行の有無（近傍データ）を学習モデル１１６に入力してその各処理の実行によるプログラムの実行結果を予測し、その近傍データとプログラムの実行結果の予測との間の関係を特定する（例えば、簡易な線形モデルによって推定する）ことで、ソースコードの各処理の実行の有無がプログラムの実行結果の予測に与える影響を予測し（例えば、影響度を算出し）、これを出力する。
【００９７】
すなわち、本実施形態のデバッグ支援システム１は、学習モデル１１６を利用することで得られた、ソースコードの近傍データとこれに対応するプログラムの実行結果の予測とに基づいて、ソースコードの各処理の実行の有無とプログラムの実行結果の予測（例えば、実行の失敗確率）との関係を推定することができる。これにより、ユーザは、ソースコードの各処理とプログラムの実行結果との関係を推定し、ソースコードのデバッグを効率よく行うことができる。これにより、デバッグ支援装置１００がプログラムの実行が成功した場合のみのカバレッジファイル４００しか収集できなかったような場合でも、ユーザは、ソースコードにおける各処理のデバッグを行うことができる。
【００９８】
以上の実施形態の説明は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明はその趣旨を逸脱することなく、変更、改良され得ると共に本発明にはその等価物が含まれる。
【００９９】
例えば、デバッグ支援装置１００のうち機械学習処理部１０７、テスト結果予測処理部１０８、及び障害スコア算出処理部１０９の各機能を備えるサーバ装置を構成することにより、webサービスを行うようにしてもよい。この場合、例えば、クライアント装置は、
まず、学習データテーブル１１３をサーバ装置に送信した後、サーバ装置は、ランキングテーブル１１５及び必要に応じて障害スコアテーブル１１４をクライアント装置に返信する。
【０１００】
また、本実施形態では、ソースプログラムの各処理の実行状況の情報は、その処理が実行されたか否かを示す情報であるものとしたが（例えば、学習データテーブル１１３の処理状況ベクトル２０５）、その他の情報であってもよい。例えば、実行状況の情報は、その処理が所定の条件で実行されたか否かを示す情報、所定の順序で実行されたか否かを示す情報等であってもよい。
【０１０１】
また、本実施形態では、プログラムの実行結果は、その実行が成功又は失敗であるかによって判定されるが（例えば、学習データテーブル１１３のテスト結果２０６）、それ以外の実行結果を用いてもよい。例えば、所定の種類のエラーによりプログラムが終了したか、所定の返値をプログラムが返して終了したか、といった実行結果であってもよい。
【０１０２】
以上の本明細書の記載により、少なくとも次のことが明らかにされる。すなわち、本実施形態のデバッグ支援方法においては、前記デバッグ支援システムは、前記障害スコア算出処理において、前記各処理の実行の有無が前記プログラムの実行結果の予測に与える影響の大きさを表すパラメータである障害スコアを前記各処理について算出し、前記出力処理において、前記算出した各障害スコアを、前記各処理を示す情報と共に出力する、としてもよい。
【０１０３】
このように、各処理の実行の有無がプログラムの実行結果の予測に与える影響の大きさを表すパラメータである障害スコアを、近傍データに基づき算出し、この情報と各処理の情報とを共に出力することで、ユーザは、プログラムの実行において重要なソースコードの処理を特定することができ、ソースコードのデバッグ作業を効率化することができる。
【０１０４】
また、本実施形態のデバッグ支援方法においては、前記デバッグ支援システムは、前記障害スコア算出処理において、前記指定された各処理の実行の有無と、前記予測したプログラムの実行結果との関係を特定するための所定の近似式を算出し、算出した近似式に基づき前記各処理の障害スコアを算出する、としてもよい。
【０１０５】
このように、ソースコードの各処理の実行有無とプログラムの実行結果の予測との関係を示す近似式から各処理の障害スコアを算出することで、例えば、プログラムテスト装置５が実際に実行していないプログラムのソースコードに対しても、その実行結果を予測することができる。
【０１０６】
また、本実施形態のデバッグ支援方法においては、前記デバッグ支援システムは、前記機械学習処理において、前記ソースコードの各処理を全て実行せずに前記プログラムの実行が成功した旨を示す学習データを生成する、としてもよい。
【０１０７】
このように、ソースコードの各処理を全て実行せずにプログラムの実行が成功した旨を示す所定の学習データを生成することで、学習データが不足している場合であっても、プログラムの実行結果の予測精度を向上させることができる。
【０１０８】
また、本実施形態のデバッグ支援方法においては、前記デバッグ支援システムは、前記
カバレッジ情報取得処理において、設定値を異ならせた複数パターンのテストケースにより前記プログラムを複数回実行した場合の、カバレッジ情報及びテスト結果情報を取得し、前記障害スコア算出処理において、各位置の障害スコアを、前記複数パターンのテストケースにおける前記各位置の障害スコアの平均によって算出する、としてもよい。
【０１０９】
このように、複数パターンのカバレッジファイル４００を取得し、各位置の障害スコアを、その複数パターンのテストケースにおける障害スコアの平均によって算出することで、プログラムの平均的な実行内容に基づく障害スコアを算出することができる。これにより、ユーザは、プログラムのデバッグ作業を効率化することができる。
【０１１０】
また、本実施形態のデバッグ支援方法においては、前記デバッグ支援システムは、前記障害スコア算出処理において、前記プログラムの実行の結果が失敗となる確率が高いテストケースを特定し、特定したテストケースにおける前記各位置の障害スコアの平均によって、当該各位置の障害スコアを算出する、としてもよい。
【０１１１】
このように、デバッグ支援システム１が、プログラムの実行の結果が失敗となる確率が高いパターンでの、各位置の障害スコアの平均値を算出することで、ユーザは、プログラムのバグの原因をより効率良く発見することができるようになる。
【０１１２】
また、本実施形態のデバッグ支援方法においては、前記デバッグ支援システムは、前記出力処理において、前記ソースコードの各処理と当該各処理の障害スコアとを、当該障害スコアの値に応じた順序で表示し、前記ソースコードの処理のいずれかの指定をユーザから受け付け、指定を受け付けた処理に係るソースコードの部分を、当該処理の障害スコアと共に表示し、前記表示されたソースコードの各処理の部分を、当該各処理の障害スコアに応じた表示形式で表示する、してもよい。
【０１１３】
このように、ソースコードの各処理、その障害スコア、及びそのランキングを表示し、ユーザから指示に従って、指定された処理位置を含むソースコードとそれらの障害スコアとを表示し、障害スコアの値に応じた表示形式でソースコードの処理を表示することで、ユーザは、障害スコアの値によるランキングの順にソースコードを検査することができ、ソースコード中のバグの位置を効率よく特定することができる。
【符号の説明】
【０１１４】
１  デバッグ支援システム、プログラムテスト装置、１００  デバッグ支援装置、１１６
学習モデル、４００  カバレッジファイル
【図１】
2020201600.tif 000006
【図２】
2020201600.tif 000007
【図３】
2020201600.tif 000008
【図４】
2020201600.tif 000009
【図５】
2020201600.tif 000010
【図６】
2020201600.tif 000011
【図７】
2020201600.tif 000012
【図８】
2020201600.tif 000013
【図９】
2020201600.tif 000014
【図１０】
2020201600.tif 000015
【図１１】
2020201600.tif 000016
【図１２】
2020201600.tif 000017
【図１３】
2020201600.tif 000018