JP2023124531A - 不具合解析装置及び不具合解析方法 - Google Patents

不具合解析装置及び不具合解析方法 Download PDF

Info

Publication number
JP2023124531A
JP2023124531A JP2022028340A JP2022028340A JP2023124531A JP 2023124531 A JP2023124531 A JP 2023124531A JP 2022028340 A JP2022028340 A JP 2022028340A JP 2022028340 A JP2022028340 A JP 2022028340A JP 2023124531 A JP2023124531 A JP 2023124531A
Authority
JP
Japan
Prior art keywords
analysis
execution
loop
program
path
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022028340A
Other languages
English (en)
Inventor
康文 鈴木
Yasufumi Suzuki
真澄 川上
Masumi Kawakami
秀人 野口
Hideto Noguchi
和矢 安田
Kazuya Yasuda
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2022028340A priority Critical patent/JP2023124531A/ja
Publication of JP2023124531A publication Critical patent/JP2023124531A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】ループ構造を含むソフトウェアの解析において、状態爆発を起こすことなく不具合への到達パスを効率的に特定可能とする。【解決手段】不具合解析装置100において、不具合解析対象となるプログラムの実行ログを取得し、例外事象が発生したステートメントを解析開始点として取得し、解析開始点を含む関数を呼び出す関数を解析終了点として取得し、解析開始点から解析終了点へ逆向き記号実行を行って実行パスを出力し、ループに対して記号実行を行い、予め指定されたループ回数以内で不具合が発生し得るか判定する。【選択図】図1

Description

本発明は、不具合解析装置及び不具合解析方法に関するものである。
ソフトウェアに含まれる不具合は、完全に事前排除する事が難しい。そのため、そうしたソフトウェアから如何に効率的に、また的確に不具合を特定し、これを取り除いて修正するか、様々な検討が進められている。
そうした不具合の検出手法としては、テストケースを用いるものが存在する。このテストケースは、仕様書で定めた或いは開発者が期待する入力及び出力(期待値)を記述したものである。
不具合の検出に際しては、対象となるソフトウェアにテストケースを適用し、入力に対して正しい期待値を返すか確認する。ここで、入力に対して出力が期待値と異なる、或いはソフトウェア自体が動作停止するといった場合、当該ソフトウェアに不具合が含まれると判定される。
また他にも、不具合発生時の実行ログを入手し、当該実行ログの情報をもとに不具合分析を実行することで、原因箇所を特定する手法も存在する。この場合、開発者が想定した仕様と異なる動作を行っている場所と条件を特定することになる。当該開発者は、こうした不具合の原因箇所と条件に基づき、修正方法を検討し、プログラムを修正する。
いずれにせよ、開発者は上述の不具合の存在を認識すれば、当該不具合の存在箇所を解析し、適切な入出力を行うように当該ソフトウェアのロジックを修正する。しかしながら、そうした不具合存在箇所の解析に伴う作業工数が大きくなりがちであり、解析の自動化が望まれていた。
そこで、こうした不具合修正の自動化を指向する技術として、例えば、検査対象のプログラムを2つのプログラムに変換し、変換した2つのプログラムに基づき、検査対象のプログラムの事前条件を推定する装置(特許文献1参照)が提案されている。
この技術は、与えられたプログラムに含まれるループ処理または再帰処理と同一の処理を、前記ループ処理または前記再帰処理の実行条件を満たす限り、与えられた指定数まで繰り返し実行し、前記同一の処理が前記指定数まで繰り返し実行された後も前記実行条件を満たすときは、エラーを発生させる第1変換プログラムと、前記ループ処理または前記再帰処理と同一の処理を、前記実行条件を満たす限り、前記指定数まで繰り返し実行し、前記同一の処理が前記指定数まで繰り返し実行された場合は、前記実行条件が満たされないとみなす前記第2変換プログラムとを生成するプログラム変換部と、前記プログラムの事後条件および前記第1変換プログラムに基づき、前記第1変換プログラムの事前条件に関する情報である第1事前条件情報を生成し、前記事後条件および前記第2変換プログラムに基づき、前記第2変換プログラムの事前条件に関する情報である第2事前条件情報を生成する事前条件情報生成部と、前記第1事前条件情報と前記第2事前条件情報との差分の有無について第1判定を行う差分判定部と、前記第1判定の結果が差分なしの場合は、前記第1事前条件情報または前記第2事前条件情報に基づき、前記プログラムの事前条件を推定する事前条件推定部を備えるプログラム仕様推定装置である。
特開2017-41085号公報
組込みソフトウェアに多く含まれるループ構造において、多数の繰返しを経て初めて出現する不具合が隠れているケースがある。より具体的には、例えば、特定のセンサ入力が繰返し発生し続けることで、初めて出現する不具合が該当する。
こうした不具合は、そもそも出現頻度の低さ故に検知が難しいことに加えて、当該不具合事象を再現する記号実行等の実行時に状態爆発の状況に至り、現実的な時間内に解析を終えることが難しいケースもある。
そこで本発明の目的は、ループ構造を含むソフトウェアの解析において、状態爆発を起こすことなく不具合への到達パスを効率的に特定可能とする技術を提供することにある。
上記課題を解決する本発明の不具合解析装置は、不具合解析対象となるプログラムの実行ログを取得するログ取得部と、前記実行ログに基づき、前記プログラムにおいて例外事象が発生したステートメントを解析開始点として取得する解析開始点取得部と、前記解析開始点を含む関数を直接または間接に呼び出す関数を解析終了点として取得する解析終了点取得部と、前記プログラムにおける前記解析開始点から前記解析終了点へ逆向き記号実行を行い、実行パスを出力する記号実行エンジンと、前記プログラムに含まれるループに対して記号実行を行い、予め指定されたループ回数以内で不具合が発生し得るか判定するループ展開解析部と、を備える。
また、本発明の不具合解析方法は、情報処理装置が、プログラムの実行ログを取得し、前記実行ログに基づき、前記プログラムにおいて例外事象が発生したステートメントを解析開始点として取得し、前記解析開始点を含む関数を直接または間接に呼び出す関数を解析終了点として取得し、前記プログラムにおける前記解析開始点から前記解析終了点へ逆向き記号実行を行い、実行パスを出力し、前記プログラムに含まれるループに対して記号実行を行い、予め指定されたループ回数以内で不具合が発生し得るか判定することを特徴とする。
本発明によれば、ソフトウェアの不具合自動修正に必要なテストケースの効率的な確保及び修正支援が可能となる。
本実施形態に係る不具合解析装置の入力、出力、および全体構成を示す図である。 本実施形態におけるソースコードの例を示す図である。 本実施形態における不具合解析方法の処理フロー例を示す図である。 本実施形態におけるループ解析結果情報の例を示す図である。 本実施形態における不具合解析方法の処理フロー例を示す図である。 本実施形態におけるループ解析結果情報の例を示す図である。 本実施形態における不具合解析方法の処理フロー例を示す図である。 本実施形態における出力例を示す図である。
以下に、本発明を実施するための形態(実施形態)における不具合解析装置について説明する。図1にて例示するように、不具合解析装置100の入力には、プログラムのソースコード210、プログラムの実行ログ220、及び関数呼出仕様230が含まれる。
実行ログ220には、実行中に呼び出された関数(メソッド)が含まれている。実行中に例外(例えば0徐算)が発生すると、実行ログ220は例外が発生した関数の呼び出しで終わっている(プログラム停止を記録している)。
不具合解析装置100は、実行ログ220から例外が発生した関数のなかの徐算演算を含むプログラムのステートメント(ソースコードの行/ステップ)を解析開始点と設定する。また、利用者(開発者)に問い合わせて、解析開始点を含む関数を直接または間接に呼び出す関数を、解析終了点と設定する。
不具合解析装置100は、解析開始点から解析終了点まで、通常のプログラム実行とは逆方向の逆向き記号実行を行う。逆向き記号実行の間、不具合解析装置100は、実行パスとパス条件を記録する。実行パスは、解析終了点と解析開始点とを結ぶプログラム中のパス(ステートメント/行/ステップの並び)であり、実行パスに沿って処理が進む。
実行パスは、関数の呼び出しも含む。パス条件は、例外(例えば0徐算)が発生する変数の条件である。変数には、関数内のローカル変数や関数の入力パラメータが含まれる。
実行パスやパス条件を参照することで、利用者は、どのようにして例外(不具合)が発生するかを理解することができ、不具合の修正方法を検討する材料にすることができる。結果として、不具合解析装置100は、利用者の不具合の解析(分析)を支援することができる。
不具合解析装置100は、SMTソルバ115(Satisfiability Modulo Theories Solver)を用いてパス条件を満足する解析終了点である関数の入力パラメータ値を算出する
。この値を入力とするテストを行うことで、利用者は修正したプログラムが正しく動作するかを確認できるようになる。
≪不具合解析装置の構成≫
図1は、本実施形態に係る不具合解析装置100の入力、出力、および全体構成を示す図である。不具合解析装置100は、制御部101、記憶部120、および入出力部140を備える。
入出力部140は、ディスプレイやキーボード、マウスなどのユーザインターフェイスを備える。入出力部140は、さらに、通信インターフェイスや記録媒体の読み書きデバイスを備えてもよい。
記憶部120は、RAM(Random Access Memory)やROM(Read Only Memory)、SSD(Solid State Drive)などから構成される。記憶部120には、プログラム121
や関数呼出仕様122、解析開始点情報123、関数呼出関係124、解析終了点125、不具合実行パス・変数値126、不具合関数呼出値127、及びループ解析結果情報128が記憶される。
プログラム121は、コンピュータを不具合解析装置100として機能させるためのプログラムであって、本実施形態の不具合解析処理の処理手順の記述を含む。関数呼出仕様122には、どの関数がどの関数を呼び出すかの関係、換言すれば、呼び出し関係グラフ(関数間の呼び出し関係を表現する制御フローのグラフ)を示すデータが記憶される。この関数呼出仕様122は、例えば、ユーザの端末等から入力される関数呼出仕様230を格納したものとなる。
制御部101を説明する前に、不具合解析装置100の入力と出力とを説明する。
≪不具合解析装置の入力≫
不具合解析装置100の入力には、ソースコード210、実行ログ220、および関数呼出仕様230が含まれる。ソースコード210は、解析対象であるソフトウェアプログラムを構成する関数(メソッド)のソースコードである。関数呼出仕様230には、関数の名前、および、関数の入力パラメータ値と返り値(戻り値)の名前と型と範囲とが記述されている。
プログラムの実行ログ220は、プログラム実行中の関数呼び出しの記録を含む。実行ログ220には、呼び出された関数の名前(識別情報)の他に呼び出し時の入力パラメータ値や、呼び出しから戻るときの返り値を含んでもよい。
実行ログ220は、さらにプログラム実行中に発生した例外を含んでもよい。例外としては、0徐算や関数呼出仕様230に記述された入力パラメータ値または返り値の違反(仕様の範囲外の値)がある。
≪不具合解析装置の出力≫
不具合解析装置100の出力には、実行パス240、および入力パラメータ値250が含まれる。実行パス240は、不具合が発生するプログラム中のパス(ソースコード210のなかで順次処理される一連のステートメント/行/ステップ)である。実行パス240の一端は、不具合に係る例外(故障)が発生するステートメント/行/ステップであり、解析開始点、または単に開始点と記す。解析開始点は、例えば0徐算が発生する徐算演算を含むステートメントである。実行パス240の他端は、解析開始点を含む関数を直接または間接に呼び出す関数であり、解析終了点、またはエントリポイントと記す。解析終了点は、開始点を含む関数であってもよい。
入力パラメータ値250は、エントリポイントとなる関数の、不具合が発生するときの入力パラメータ値である。
≪不具合解析装置の制御部の構成≫
制御部101は、CPU(Central Processing Unit)から構成され、ログ取得部11
0、関数呼出関係分析部111、解析開始点取得部112、解析終了点取得部113、記号実行エンジン114、SMTソルバ115、ループ展開解析部116、及びループ内パス選択部116を備える。
ログ取得部110は、ユーザが端末等で入力した実行ログ220を取得し、これを処理対象として保持するものとなる。
関数呼出関係分析部111は、ソースコード210から関数の呼び出し関係、すなわち関数呼出仕様を取得して、或いは、ユーザが端末等で入力した関数呼出仕様230を、記憶部120の関数呼出仕様122に格納する。
解析開始点取得部112は、実行ログ220を解析して解析開始点を取得する。解析開始点の取得手順の詳細は後記する。
解析終了点取得部113(エントリポイント取得部)は、解析開始点を含む関数を呼び出す関数を関数呼出仕様122から取得して、エントリポイントの候補として入出力部140に備わるディスプレイに表示する。利用者(開発者)は、候補のなかから1つまたは複数のエントリポイントを選択する。解析終了点取得部113は、利用者によって選択された関数を解析終了点(エントリポイント)として設定する。
記号実行エンジン114は、実行パス240およびパス条件を生成する。パス条件は、解析対象のプログラムの実行が実行パス240を通るための変数(ローカル変数や入力パラメータ)の条件である。実行パス240やパス条件の詳細は後記する。
なお、以下の文献に記号実行エンジンン114の詳細が記述されている: Peter Dinges
and Gul Agha, "Targeted Test Input Generation Using Symbolic Concrete Backward Execution"。
SMTソルバ115(ソルバ)は、パス条件を満たす入力パラメータ値250を生成する。以下の文献にSMTソルバが記述されている: Leonardo de Moura and Nikolaj Bjorner, "Z3: An Efficient SMT Solver"。
ループ展開解析部116は、対象プログラムに含まれるループに対して記号実行エンジン114を用いて記号実行を行い、予め指定されたループ回数以内で不具合が発生し得るか判定する。
ループ内パス選択部117は、上述のループ内のプログラムコードを記号実行した結果を用いて、当該ループ内の一部の実行パスを通る解析のみを実行する。この場合、ループ内パス選択部117は、ループ内の実行パスから、解析対象とするパスを選択する際、当該ループに対する記号実行後に不具合に関連した変数の取り得る値の値域が最も広くなるパスを選択する。
≪ソースコードの例≫
図2は本実施形態におけるソースコード210の例を示す図である。図2にて示すソースコード210は、あるセンサ入力の値a(0≦a≦255)に応じて、変数s(初期値=0)を算定する処理に対応したものであり、aが正の値である場合、変数sの値を当該aの値だけ加算する(行8)が、aが0以下の値である場合、変数sの値を0にリセットする(行10)。ところが、センサ入力の値aによって更新されていった変数sの値によっては、いわゆるゼロ割が発生する(行12)。つまり、不具合が発生しうるソースコードである。以後は、このソースコード210を例に説明を行うものとする。
≪実行パスとパス条件≫
続いて、本実施形態に係る実行パスおよびパス条件に関して説明する。図2で示したソースコード210において、行4の関数は、センサ入力の値aを呼び出し、行6、7の条件下で行8の関数s_newを呼び出し、行12の関数rは関数s_newを呼び出す。この関数rで0徐算の例外が発生し、エントリポイントとして関数s_newが指定された
という前提で、説明を続ける。この場合、実行ログ220は、関数s_newの呼び出し
の記録、関数rの呼び出しの記録、関数foo.cの呼び出しの記録を含み、0徐算発生の記録で終わる。
実行ログ220を解析することで、解析開始点取得部112は、関数foo.cのなかで0徐算の例外が発生したことを検出する。関数foo.cの行12が、徐算演算を含む唯一のステートメント/行であるから、解析開始点取得部112は、開始点を関数foo.cの行12に設定する。
パス条件は、例外が発生する条件/制約である。解析開始点である関数foo.cの行12におけるパス条件32は「s≦-1」である。
記号実行エンジン114は、開始点から始めて、通常の(前向き)実行とは反対の方向にプログラム(ソースコード210)のなかを、エントリポイントに到達するまで探索(逆向き記号実行とも記す)する。エントリポイントが複数ある場合には、記号実行エンジン114は、何れか1つのエントリポイントに到達するまで探索する。こうしたパス条件に関する具体的な処理は、本出願人による出願(特願2020-143591)にて開示したとおりである。
≪不具合解析処理:ループ展開解析部のフロー1≫
図3は、本実施形態に係る不具合解析処理のフローチャートであり、具体的には、ループ展開解析部116における処理フローを示すものである。この場合、ループ展開解析部116は、ループ部のプログラムコードに対し、記号実行エンジン114を用いた記号実行を行う(s10)。
また、ループ展開解析部116は、ループ1回分の各パスのパス制約と変数関係をルー
プ解析結果情報128として、記憶部120に格納する(s11)。そうしたループ解析結果情報128の例を図4にて示す。
続いて、ループ展開解析部116は、ループ展開数nを1とする(s12)。また、ループ展開解析部116は、ループn回で不具合到達制約を充足可能かを、SMTソルバ115により判定する(s13)。
この判定の結果、不具合到達制約を充足可能である場合(s14:Yes)、ループ展開解析部116は、不具合到達条件(不具合到達制約式)とその時のパス制約、および充足可否の各値をループ解析結果情報128に記録して(s15)フローを終了する。
一方、上述の判定の結果、不具合到達制約を充足可能ではない場合(s14:No)、ループ展開解析部116は、ループ回数nは指定されたループ展開の最大値を超えているか判定する(s16)。
この判定の結果、ループ回数が最大値を超えている場合(s16:Yes)、ループ展開解析部116は、不具合箇所到達条件を見つけられず終了と判断し(s17)、処理を終了する。
一方、判定の結果、ループ回数が最大値を超えていない場合(s16:No)、ループ展開解析部116は、不具合到達制約にループ1回分のパス制約と変数関係を追加し、n
←n+1とし(s18)、処理をs13に戻す。
こうした一連の処理の結果、ループ展開数をインクリメントした各レコードが格納されていき、図4で示すループ解析結果情報128が生成されることとなる。
≪不具合解析処理:ループ内パス選択部のフロー≫
図5は、本実施形態におけるループ内パス選択部のフローを示す図である。ここでは、上述の図3のフローのうち、s18以降の処理が異なるケースについて示す。ここで、s20~s27の各ステップは、図3のフローと共通するため説明は省略する。
この場合、ループ内パス選択部117は、ループ1回分の各パスに対して当該パスのパ
ス制約と変数関係を不具合到達条件に追加する(s28)。
また、ループ内パス選択部117は、各パスに対応する不具合到達制約に対して不具合関連変数の値域を求めて、ループ解析結果情報128に格納する(s29)。
また、ループ内パス選択部117は、値域の範囲がもっとも広いパスを当該ループ回におけるパスとして選択し、他のパスを削除し(s30)、処理をs23に戻す。ここまでの一連の処理の結果、図6で示すループ解析結果情報128のように、「不具合関連変数(s)の値域」欄および選択パス欄の各値が追加された構成となる。
≪不具合解析処理:ループ展開解析部のフロー2≫
図7は、本実施形態に係る不具合解析処理のフローチャートであり、具体的には、ループ展開解析部116における処理フローを示すものである。ここで、図5で示したフローにおけるs20~s28までは共通するため、それ以降の処理(図7におけるs49以降
)についてのみ説明することとする。
この場合、ループ内パス選択部117は、各パスに対応する不具合到達制約に対して不具合関連変数の値域を求め、ユーザに表示する(s49)。ここでユーザに表示した画面G10の例を図8に示す。
図8で示す画面G10は、各パスの選択可否を受け付けるインターフェイスG101、G110と、当該ループを含むソースコードG102、G112、及び不具合関連変数のループ回数nに応じた値域を示すグラフG103、G113から構成される。
ループ内パス選択部117は、ユーザが上述のインターフェイスG101、G110にて選択した、ひとつまたは複数のパスを当該ループ回におけるパスとして認識する一方、他のパスを削除し(s50)、処理をs43に戻す。
以上、本発明を実施するための最良の形態などについて具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
こうした本実施形態によれば、ループ構造を含むソフトウェアの解析において、状態爆発を起こすことなく不具合への到達パスを効率的に特定可能となる。
本明細書の記載により、少なくとも次のことが明らかにされる。すなわち、本実施形態の不具合解析装置において、前記ループ展開解析部は、前記ループ内のプログラムコードを記号実行した結果を用いて、前記ループ内の一部の実行パスを通る解析のみを実行するものである、としてもよい。
これによれば、解析対象が絞り込まれることになり、全体として処理効率が向上する。ひいては、ループ構造を含むソフトウェアの解析において、状態爆発を起こすことなく不具合への到達パスをより効率的に特定可能となる。
また、本実施形態の不具合解析装置において、前記ループ展開解析部は、前記ループ内の実行パスから、解析対象とするパスを選択する際、当該ループに対する記号実行後に不具合に関連した変数の取り得る値の値域が最も広くなるパスを選択するものである、としてもよい。
これによれば、解析対象の適宜な絞り込みを精度よく行えることとなり、全体として処理効率が向上する。ひいては、ループ構造を含むソフトウェアの解析において、状態爆発を起こすことなく不具合への到達パスをより効率的に特定可能となる。
また、本実施形態の不具合解析方法において、前記情報処理装置が、前記判定に際し、前記ループ内のプログラムコードを記号実行した結果を用いて、前記ループ内の一部の実行パスを通る解析のみを実行する、としてもよい。
また、本実施形態の不具合解析方法において、前記情報処理装置が、前記判定に際し、前記ループ内の実行パスから、解析対象とするパスを選択する際、当該ループに対する記号実行後に不具合に関連した変数の取り得る値の値域が最も広くなるパスを選択する、としてもよい。
10 テスト環境
100 不具合解析装置
101 制御部
110 ログ取得部
111 関数呼出関係分析部
112 解析開始点取得部
113 解析終了点取得部
114 記号実行エンジン
115 不具合箇所検出部(SMTソルバ)
116 ループ展開解析部
117 ループ内パス選択部
120 記憶部
121 プログラム
122 関数呼出仕様
123 解析開始点情報
124 関数呼出関係
125 解析終了点情報
126 不具合実行パス・変数値
127 不具合関数呼出値
128 ループ解析結果情報
140 入出力部
150 内部バス
210 ソースコード(プログラム)
220 実行ログ
230 関数呼出仕様

Claims (6)

  1. 不具合解析対象となるプログラムの実行ログを取得するログ取得部と、
    前記実行ログに基づき、前記プログラムにおいて例外事象が発生したステートメントを解析開始点として取得する解析開始点取得部と、
    前記解析開始点を含む関数を直接または間接に呼び出す関数を解析終了点として取得する解析終了点取得部と、
    前記プログラムにおける前記解析開始点から前記解析終了点へ逆向き記号実行を行い、実行パスを出力する記号実行エンジンと、
    前記プログラムに含まれるループに対して記号実行を行い、予め指定されたループ回数以内で不具合が発生し得るか判定するループ展開解析部と、
    を備える不具合解析装置。
  2. 前記ループ展開解析部は、
    前記ループ内のプログラムコードを記号実行した結果を用いて、前記ループ内の一部の実行パスを通る解析のみを実行するものである、
    ことを特徴とする請求項1に記載の不具合解析装置。
  3. 前記ループ展開解析部は、
    前記ループ内の実行パスから、解析対象とするパスを選択する際、当該ループに対する記号実行後に不具合に関連した変数の取り得る値の値域が最も広くなるパスを選択するものである、
    ことを特徴とする請求項2に記載の不具合解析装置。
  4. 情報処理装置が、
    プログラムの実行ログを取得し、
    前記実行ログに基づき、前記プログラムにおいて例外事象が発生したステートメントを解析開始点として取得し、
    前記解析開始点を含む関数を直接または間接に呼び出す関数を解析終了点として取得し、
    前記プログラムにおける前記解析開始点から前記解析終了点へ逆向き記号実行を行い、実行パスを出力し、
    前記プログラムに含まれるループに対して記号実行を行い、予め指定されたループ回数以内で不具合が発生し得るか判定する、
    ことを特徴とする不具合解析方法。
  5. 前記情報処理装置が、
    前記判定に際し、前記ループ内のプログラムコードを記号実行した結果を用いて、前記ループ内の一部の実行パスを通る解析のみを実行する、
    ことを特徴とする請求項4に記載の不具合解析方法。
  6. 前記情報処理装置が、
    前記判定に際し、前記ループ内の実行パスから、解析対象とするパスを選択する際、当該ループに対する記号実行後に不具合に関連した変数の取り得る値の値域が最も広くなるパスを選択する、
    ことを特徴とする請求項5に記載の不具合解析方法。
JP2022028340A 2022-02-25 2022-02-25 不具合解析装置及び不具合解析方法 Pending JP2023124531A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022028340A JP2023124531A (ja) 2022-02-25 2022-02-25 不具合解析装置及び不具合解析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022028340A JP2023124531A (ja) 2022-02-25 2022-02-25 不具合解析装置及び不具合解析方法

Publications (1)

Publication Number Publication Date
JP2023124531A true JP2023124531A (ja) 2023-09-06

Family

ID=87886194

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022028340A Pending JP2023124531A (ja) 2022-02-25 2022-02-25 不具合解析装置及び不具合解析方法

Country Status (1)

Country Link
JP (1) JP2023124531A (ja)

Similar Documents

Publication Publication Date Title
CN108388514B (zh) 接口自动化测试方法、装置、设备及计算机可读存储介质
US6173440B1 (en) Method and apparatus for debugging, verifying and validating computer software
EP3144816A1 (en) Static analysis based efficient elimination of false positives
US7353505B2 (en) Tracing the execution path of a computer program
JP5213671B2 (ja) テストケースの選択方法及び選択システム
EP3734460B1 (en) Probabilistic software testing via dynamic graphs
CN113377650B (zh) 自动化测试用例运行方法、装置、测试设备及存储介质
JPH10320234A (ja) ソフトウェアの自動テスト方法
JP2009104252A (ja) デバッグ支援装置およびデバッグ支援方法
JP2023124531A (ja) 不具合解析装置及び不具合解析方法
KR101940486B1 (ko) 저비용 오류 기반 프로그램 테스트 장치 및 그 방법
US20080195906A1 (en) Test pattern generation apparatus and test pattern generation method
US11520689B2 (en) System and method for automatic program repair using fast-result test cases
WO2023058611A1 (ja) ソフトウェア不具合分析装置及びソフトウェア不具合分析方法
WO2023058609A1 (ja) 不具合解析装置及び不具合解析方法
CN114138669A (zh) 一种基于函数级选择符号化混合执行的软件自动测试方法
WO2022044376A1 (ja) 不具合解析装置、プログラムおよび不具合解析方法
WO2004068347A1 (en) Method and apparatus for categorising test scripts
WO2022196219A1 (ja) プログラム分析装置、プログラム分析方法およびトレース処理追加装置
Zhyhulin et al. Combined method of prioritization and automation of software regression testing
JP2009129132A (ja) ソフトウェア部分テストシステム、それに用いる方法およびプログラム
WO2019142266A1 (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
CN116860628A (zh) 静态分析器测试方法及装置
JPH11282722A (ja) プログラム検証方法
JPH10289124A (ja) データフロー異常検査装置