JPWO2020157795A1 - 試験装置、試験方法および試験プログラム - Google Patents

試験装置、試験方法および試験プログラム Download PDF

Info

Publication number
JPWO2020157795A1
JPWO2020157795A1 JP2020568832A JP2020568832A JPWO2020157795A1 JP WO2020157795 A1 JPWO2020157795 A1 JP WO2020157795A1 JP 2020568832 A JP2020568832 A JP 2020568832A JP 2020568832 A JP2020568832 A JP 2020568832A JP WO2020157795 A1 JPWO2020157795 A1 JP WO2020157795A1
Authority
JP
Japan
Prior art keywords
log
program
trace
function call
series
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.)
Granted
Application number
JP2020568832A
Other languages
English (en)
Other versions
JP6878707B2 (ja
Inventor
優也 小野
優也 小野
寛隆 茂田井
寛隆 茂田井
水口 武尚
武尚 水口
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2020157795A1 publication Critical patent/JPWO2020157795A1/ja
Application granted granted Critical
Publication of JP6878707B2 publication Critical patent/JP6878707B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

試験装置(100)は、ソフトウェアプラットフォーム(106)を利用して一連の関数呼び出し処理を行うアプリケーションプログラム(111)を実行し、ソフトウェアプラットフォーム(106)の試験を行う。ログ取得部(201)は、アプリケーションプログラム(111)を複数回繰り返し実行し、一連の関数呼び出し処理をトレースしたトレース結果を複数含むトレースログ(113)を取得する。ログ解析部(202)は、トレースログ(113)を解析することにより、一連の関数呼び出し処理により呼び出される関数の引数と返り値との各々の属性を変数属性として推定する。プログラム生成部(203)は、変数属性を用いて、一連の関数呼び出し処理を再現する再現プログラム(303)を生成する。

Description

本発明は、試験装置、試験方法および試験プログラムに関する。
従来のソフトウェアプラットフォームは、アプリケーションプログラムに提供するAPI(Application Programming Interface)の単体テストあるいはシステムテストによって品質が保証されていた。ソフトウェアプラットフォームの具体例は、OS(Operating System)あるいはライブラリである。これらのソフトウェアプラットフォームは、アプリケーションプログラムからの呼び出しを想定したテストケースを基にテストされる。
特許文献1あるいは特許文献3では、プラットフォームが改修されると、改修前と改修後のアプリケーションプログラムのトレースログを比較することで、アプリケーションプログラムのデグレーション箇所の予測を容易化する技術が提案されている。
特許文献2では、テストケースをユーザから見た処理単位にまで拡大し、処理の履歴を記憶し、テストが再実行できるようにすることで、ユーザ側でのプラットフォームの不具合検証を容易にする技術が提案されている。
特許文献4では、ユーザ操作を取得し、複数回再生することでプラットフォームの回帰試験を高速に実行する技術が提案されている。
特許文献5では、障害発生時にハードウェア情報をトレースし、トレースデータをシミュレータに関連付けられたフォーマットに変換し、シミュレータで再生することで、デバッグ、検証、あるいは最適化を可能とする技術が提案されている。ハードウェア情報とは、命令デコーダ、キャッシュ、およびレジスタといった情報である。
特許文献6では、上位アプリケーションと他依存ライブラリが、デバッグ対象のライブラリの関数呼び出しを解析することで、デバッグを容易にする技術が提案されている。
特開平10−320234号公報 特開平11−119956号公報 国際公開第2012/127729号 特開2015−169975号公報 特表2013−531292号公報 特開2007−080036号公報
従来技術では、アプリケーションプログラムが、ライブラリのAPIをどの順序で呼び出すかについて全て網羅することは困難である。そのため、従来技術では、複数ライブラリの組み合わせテストを行う場合、アプリケーションプログラムの実際の呼び出し順序を特定できず、試験漏れが発生する。また、マルチスレッドあるいはマルチコア環境では、APIの呼び出し順序が実行する度に変わるため、実行順序が複雑となり、静的解析ができないことからより試験が困難となる。また、実際の呼び出し順序を想定できたとしても、アプリケーションが頻繁に更新される場合があり、試験追従のための再現試験プログラムの生成に時間がかかる。そのため、保守コストが高くなるといった課題がある。
本発明は、アプリケーションプログラムの使用範囲に即した再現プログラムを効率的かつ高精度に生成することを目的とする。
本発明に係る試験装置は、ソフトウェアプラットフォームを利用して一連の関数呼び出し処理を行うアプリケーションプログラムを実行し、前記ソフトウェアプラットフォームの試験を行う試験装置において、
前記アプリケーションプログラムを複数回繰り返し実行し、前記一連の関数呼び出し処理をトレースしたトレース結果であって前記一連の関数呼び出し処理により呼び出された関数の引数と返り値とを含むトレース結果を複数含むトレースログを取得するログ取得部と、
前記トレースログを解析することにより、前記一連の関数呼び出し処理により呼び出される関数の引数と返り値との各々の属性を変数属性として推定するログ解析部と、
前記変数属性を用いて、前記一連の関数呼び出し処理を再現する再現プログラムを生成するプログラム生成部とを備えた。
本発明に係る試験装置では、ログ取得部が、アプリケーションプログラムを複数回繰り返し実行し、一連の関数呼び出し処理をトレースしたトレース結果を複数含むトレースログを取得する。ログ解析部は、トレースログを解析することにより、一連の関数呼び出し処理により呼び出される関数の引数と返り値との各々の変数属性を推定する。プログラム生成部は、変数属性を用いて、一連の関数呼び出し処理を再現する再現プログラムを生成する。よって、本発明に係る試験装置によれば、アプリケーションプログラムの使用範囲に即した再現プログラムを効率的かつ高精度に生成することができる。
実施の形態1に係る試験装置のハードウェア構成図。 実施の形態1に係る試験装置の機能構成図。 実施の形態1の比較例のソフトウェア試験処理のフロー図。 実施の形態1に係るログ取得部の動作を示すフロー図。 実施の形態1に係るトレースログの例。 実施の形態1に係るログ解析部の動作を示すフロー図。 実施の形態1に係る変数属性タグの例。 実施の形態1に係る関数呼び出しテーブルの例。 実施の形態1に係るプログラム生成部の動作を示すフロー図。 実施の形態1に係る結果判定部の動作を示すフロー図。 実施の形態1に係る関数呼び出し試験表の例。 実施の形態2に係る関数呼び出しテーブルの例。 実施の形態2に係るログ解析部の動作を示すフロー図。 実施の形態2に係るプログラム生成部の動作を示すフロー図。 実施の形態2に係る結果判定部の動作を示すフロー図。 実施の形態3に係るログ取得部の動作を示すフロー図。 実施の形態3に係るログ解析部の動作を示すフロー図。 実施の形態4に係るログ取得部の動作を示すフロー図。
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。
実施の形態1.
***構成の説明***
図1は、本実施の形態に係る試験装置100のハードウェア構成を示す図である。
図2は、本実施の形態に係る試験装置100の機能構成を示す図である。
試験装置100は、コンピュータである。試験装置100は、プロセッサ910を備えるとともに、メモリ921、補助記憶装置922、入出力インタフェース930、および通信装置950といった他のハードウェアを備える。
プロセッサ910は、信号線940を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
試験装置100は、機能要素として、ログ取得部201、ログ解析部202、プログラム生成部203、コンパイル部204、プログラム実行部205、および結果判定部206を備える。
ログ取得部201、ログ解析部202、プログラム生成部203、コンパイル部204、プログラム実行部205、および結果判定部206の機能は、ソフトウェアにより実現される。
プロセッサ910は、試験プログラムを実行する装置である。試験プログラムは、ログ取得部201、ログ解析部202、プログラム生成部203、コンパイル部204、プログラム実行部205、および結果判定部206の機能を実現するプログラムである。
プロセッサ910は、演算処理を行うIC(Integrated Circuit)である。プロセッサ910の具体例は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)である。
メモリ921は、データを一時的に記憶する記憶装置である。メモリ921の具体例は、SRAM(Static Random Access Memory)、あるいはDRAM(Dynamic Random Access Memory)である。
補助記憶装置922は、データを保管する記憶装置である。補助記憶装置922の具体例は、HDDである。また、補助記憶装置922は、SD(登録商標)メモリカード、CF、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVDといった可搬記録媒体であってもよい。なお、HDDは、Hard Disk Driveの略語である。SD(登録商標)は、Secure Digitalの略語である。CFは、CompactFlash(登録商標)の略語である。DVDは、Digital Versatile Diskの略語である。
入出力インタフェース930は、マウス、キーボード、あるいはタッチパネルといった入力装置と接続されるポートを入力インタフェースとして備える。入力インタフェースは、具体的には、USB(Universal Serial Bus)端子である。なお、入力インタフェースは、LAN(Local Area Network)と接続されるポートであってもよい。
また、入出力インタフェース930は、ディスプレイといった出力機器のケーブルが接続されるポートを出力インタフェースとして備える。出力インタフェースは、具体的には、USB端子またはHDMI(登録商標)(High Definition Multimedia Interface)端子である。ディスプレイは、具体的には、LCD(Liquid Crystal Display)である。
通信装置950は、ネットワークを介して他の装置と通信する。通信装置950は、レシーバとトランスミッタを有する。通信装置950は、無線で、LAN、インターネット、あるいは電話回線といった通信網に接続している。通信装置950は、具体的には、通信チップまたはNIC(Network Interface Card)である。
試験プログラムは、プロセッサ910に読み込まれ、プロセッサ910によって実行される。メモリ921には、試験プログラムだけでなく、OS(Operating System)も記憶されている。プロセッサ910は、OSを実行しながら、試験プログラムを実行する。試験プログラムおよびOSは、補助記憶装置922に記憶されていてもよい。補助記憶装置922に記憶されている試験プログラムおよびOSは、メモリ921にロードされ、プロセッサ910によって実行される。なお、試験プログラムの一部または全部がOSに組み込まれていてもよい。
試験装置100は、プロセッサ910を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、試験プログラムの実行を分担する。それぞれのプロセッサは、プロセッサ910と同じように、試験プログラムを実行する装置である。
試験プログラムにより利用、処理または出力されるデータ、情報、信号値および変数値は、メモリ921、補助記憶装置922、または、プロセッサ910内のレジスタあるいはキャッシュメモリに記憶される。
ログ取得部201、ログ解析部202、プログラム生成部203、コンパイル部204、プログラム実行部205、および結果判定部206の各部の「部」を「処理」、「手順」あるいは「工程」に読み替えてもよい。
試験プログラムは、ログ取得処理、ログ解析処理、プログラム生成処理、コンパイル処理、プログラム実行処理、および結果判定処理をコンピュータに実行させる。また、試験方法は、試験装置100が試験プログラムを実行することにより行われる方法である。
試験プログラムは、コンピュータ読取可能な記憶媒体に格納されて提供されてもよい。また、試験プログラムは、プログラムプロダクトとして提供されてもよい。
***機能概要の説明***
試験装置100は、ソフトウェアプラットフォーム106を利用して一連の関数呼び出し処理を行うアプリケーションプログラム111を実行し、ソフトウェアプラットフォーム106の試験を行う。
図2に示すように、試験装置100において、オペレーティングシステム108が動作しており、その上で動的ライブラリ109が動作している。ソフトウェアプラットフォーム106は、具体的には、動的ライブラリ109である。動的ライブラリは複数であってもよい。また、その上でアプリケーションプログラム111が動作している。アプリケーションプログラム111は、表示処理、音声処理、データベース処理、WEBアプリケーション処理、あるいは計算処理といった情報処理である。トレースプログラム112はアプリケーションプログラム111が動的ライブラリ109の関数呼び出しをフックし、トレースログ113に出力するプログラムである。トレースログ113は、メモリ921あるいは補助記憶装置922に出力される。
ログ取得部201は、アプリケーションプログラム111を実行し、また、トレースプログラム112を実行する。そして、ログ取得部201は、トレースプログラム112を用いて、アプリケーションプログラム111における動的ライブラリ109の関数呼び出しをトレースログ113に出力させる。
ログ解析部202は、トレースログ113を統計的に解析し、再実行できるようにトレースログ113の値を補正し、関数呼び出しテーブル301に出力する。「トレースログ113の値を補正する」とは、後述するように、関数の引数および返り値に変数属性タグをタグ付けする処理のことを指す。
関数呼び出しテーブル301において、関数の引数には、例えば、乱数、時刻、システム変数、あるいはアドレスといった変数種別のタグが記憶される。また、返り値には、例えば、他関数において流用されている流用箇所が記憶される。
プログラム生成部203は、関数呼び出しテーブル301を読み込み、再現プログラムソースコード302を生成する。
コンパイル部204は、再現プログラムソースコード302をコンパイルし、実行可能な再現プログラム303を生成する。
プログラム実行部205は、再現プログラム303を実行する。再現プログラム303は、動的ライブラリ109を呼び出し、その再現結果26を出力する。出力先は、メモリ921あるいは補助記憶装置922である。
結果判定部206は、プログラム実行部205に対して再現プログラム303の実行を要求し、再現プログラム303の再現結果26と関数呼び出しテーブル301を比較し、関数呼び出し試験表304に出力する。
関数呼び出し試験表304には、再現プログラム303において期待される出力の期待値と、判定結果とが記憶される。期待値は、関数呼び出しテーブル301の変数種別あるいは流用箇所に基づいて予め定められる。開発者110は、関数呼び出し試験表304を確認し、動的ライブラリ109が期待される動作を行ったかを判断する。
***動作の説明***
まず、図3を用いて、本実施の形態と比較するための比較例のソフトウェア試験処理の流れを説明する。
ステップS101において、再現試験プログラムが開発される。
ステップS102において、再現試験プログラムが実行される。
ステップS103において、実行の成否が判定され、実行が成功すれば、処理は終了する。
実行が失敗すると、ステップS104において、開発者により、ログ解析あるいは再現性試験が行われ、失敗箇所が特定される。また、開発者により、修正方法が検討される。
ステップS105において、プラットフォームが改修される。
次に、図4から図11を用いて、本実施の形態に係る試験処理S100の動作について説明する。
<ログ取得処理>
図4は、本実施の形態に係るログ取得部201の動作を示すフロー図である。
ログ取得処理において、ログ取得部201は、アプリケーションプログラム111を複数回繰り返し実行し、トレース結果13を複数含むトレースログ113を取得する。トレース結果13は、一連の関数呼び出し処理333をトレースした結果である。トレース結果13は、一連の関数呼び出し処理333により呼び出された関数の引数と返り値とを含む。
ステップS201において、ログ取得部201は、ログ取得回数iを初期化する。
ステップS202において、ログ取得部201は、実行環境を初期化する。実行環境の初期化とは、設定ファイルあるいは共有メモリの削除といった前処理である。
ステップS203において、ログ取得部201は、トレースログ113を取得する対象となるアプリケーションプログラム111を実行する。
ステップS204において、ログ取得部201は、トレースプログラム112を実行し、ステップS203で実行したアプリケーションプログラム111を指定して、図5のトレースログ113を出力する。
図5は、本実施の形態に係るトレースログ113の一例を示す図である。
ログ取得部201は、トレースプログラム112により、アプリケーションプログラム111の動的ライブラリの呼び出しをフックし、実行開始時刻、関数名、引数、および返り値を出力する。ログ取得部201は、引数として、引数1から引数maxまで取得する。取得した数以上の引数は、“−”で表す。引数maxは、予め決まっている。また、システムコールの呼び出しといった、前述のもの以外のデータがトレースログ113に付随しても構わないが、動的ライブラリの呼び出しと区別できるフォーマットである必要がある。実行開始時刻は、互いに比較演算でき、絶対時刻が分かるものであれば、どの形式でも構わない。例えば、実行開始時刻は、UNIX(登録商標) timeといった形式でよい。引数および返り値の各々は、型名と値である。型名は、例えば、アドレス、文字列、整数、小数、NULL、あるいはvoidである。また、引数および返り値には、アプリケーション実行に関係するメモリマップを参照できるものを含めてもよい。メモリマップを参照できるものは、例えば、構造体のポインタであれば、構造体のメンバ変数名とその値、配列であれば、全配列データといったデータである。
ステップS205において、ログ取得部201は、ログ取得回数iを1増加する。
ステップS206において、ログ取得部201は、ログ取得回数iがm以上であれば終了し、iがm未満であればステップS202に戻る。mは予め決めておく。mは1以上であれば、どの値でも構わない。
<ログ解析処理>
図6は、本実施の形態に係るログ解析部202の動作を示すフロー図である。
ログ解析部202は、トレースログ113を解析することにより、一連の関数呼び出し処理333により呼び出される関数の引数と返り値との各々の属性を変数属性21として推定する。ログ解析部202は、一連の関数呼び出し処理333により呼び出される関数の引数と返り値との各々に、変数属性21を表す変数属性タグ208をタグ付けした関数呼び出しテーブル301を生成する。
ステップS301において、ログ解析部202は、メモリ921あるいは補助記憶装置922から、トレースログ113を取得する。
ステップS302において、ログ解析部202は、トレースログ113から関数シーケンスを一連の関数呼び出し処理333として作成する。具体的に図5のトレースログ113であれば、ログ解析部202は、No1からNoxまでの関数シーケンス(funcA,funcB,funcA,・・・,funcF)を作成する。
ステップS303において、ログ解析部202は、トレースログ113を統計的に解析することにより、変数属性21を推定する。ログ解析部202は、トレースログ113を統計的に解析することにより、変数属性21として、一連の関数呼び出し処理333により呼び出される関数の引数と返り値との各々の種別を表す変数種別211を推定する。また、ログ解析部202は、トレースログ113を統計的に解析することにより、変数属性21として、一連の関数呼び出し処理333により呼び出される関数の引数と返り値との各々が流用される流用箇所を推定する。
具体的には、ログ解析部202は、m個のトレース結果13の関数シーケンスと、それに対応する引数および返り値を、統計的に解析する。ログ解析部202は、同一シーケンスの関数内の、変数がm個全てで異なる場合は乱数であると推定する。また、ログ解析部202は、前後のトレースログの同一関数での実行時刻の差と類似した変数は時刻であると推定する。このように、ログ解析部202は、m個のトレース結果13から同一関数の変数の変化といった情報から変数属性21を推定し、変数属性21をそれぞれの引数と返り値にタグ付する。
図7は、本実施の形態に係る変数属性タグ208の例である。
変数属性タグ208は、変数および返り値のタグである。変数属性タグ208は、予めメモリ921あるいは補助記憶装置922に記憶されている。
ログ解析部202は、m個の通信シーケンスを統計的に解析し、それぞれの引数および返り値の変数属性が図7のうちのいずれであるかを推定し、それぞれの引数および返り値にタグ付する。変数属性のTypeがシステムとなるものは、システムライブラリの関数名と引数の型を予め保存しておき、関数シーケンスの関数名と一致すれば、その関数の引数と判別する。例えば、関数名がgetpidであれば返り値がPIDであると判別する。システムライブラリは、オペレーティングシステムのシステムコールのラッパー関数であればどのライブラリでも構わない。例えば、システムライブラリは、標準CライブラリのglibcあるいはNewlibといった関数である。
図8は、本実施の形態に係る関数呼び出しテーブル301の例である。
関数呼び出しテーブル301は、トレースログ113における全ての引数および返り値に、統計的に解析した変数属性21をタグ付したテーブルである。
アドレスが構造体の場合は、ログ解析部202は、図8の変数属性T301のように、メンバ変数とその値をタグ付する。メンバ1とメンバ2は変数属性T302のstructAの構造体のメンバを意味している。メンバ1とメンバ2には、ログ取得部201で取得されたデータがそのままタグ付されている。
変数種別T401は、Typeが「固定値」の例である。変数種別T501は、Typeが「システム」の例である。
ステップS304において、ログ解析部202は、引数および返り値が、以降の関数でも流用されているか否かを判定する。流用されていた場合は、ログ解析部202は、タグ付に追記する。例えば、図8に示すように、関数funcBの返り値0xbbbbが次の関数funcAの引数の値と一致し、それが全てのトレースログでも見られる場合には、関数funcBの返り値0xbbbbが流用されていると判定される。
ステップS305において、ログ解析部202は、ステップS304までの解析結果を関数呼び出しテーブル301に出力する。
<プログラム生成処理>
図9は、本実施の形態に係るプログラム生成部203の動作を示すフロー図である。
プログラム生成処理において、プログラム生成部203は、変数属性21を用いて、一連の関数呼び出し処理333を再現する再現プログラム303を生成する。プログラム生成部203は、関数呼び出しテーブル301を用いて、再現プログラム303を生成する。
ステップS311において、プログラム生成部203は、関数呼び出しテーブル301を取得する。
ステップS312において、プログラム生成部203は、アプリケーションプログラム111とリンクされた動的ライブラリ情報を読み込む。例えば、アプリケーションプログラム111には動的ライブラリの関数名が含まれており、アプリケーションプログラム111から呼び出される関数の情報が動的ライブラリ情報としてメモリに記憶されている。
動的ライブラリ情報は、変数名と型を特定できるものであればいかなる情報でも構わない。動的ライブラリ情報は、例えば、ヘッダファイルといった情報でもよい。ヘッダファイルとは、動的ライブラリをリンクするために必要なヘッダファイルを指す。例えばC言語でlibcライブラリを使う場合ソースコードの先頭に#include<stdio.h>を付けるが、stdio.hがそのヘッダファイルとなる。そのヘッダファイルのみで変数名と型(具体的にはバイト数)が特定できない場合は、ヘッダファイルが参照しているファイルを検索するといった方法で特定する。
ステップS313において、プログラム生成部203は、ステップS312で読み込んだ動的ライブラリ情報を用いて、引数と返り値を確保するデータ構造および変数を定義する。
ステップS314において、プログラム生成部203は、ステップS312で定義した変数を用いて、関数呼び出し、また、それぞれの関数呼び出しのログを出力するように再現プログラムソースコード302を生成する。ログには、関数呼び出し時刻、関数名、引数の型、および返り値の値を出力する。ログは、関数の呼び出し順序を一意に特定できるものであれば、どのような形式でも構わない。
コンパイル部204は、再現プログラムソースコード302をコンパイルし、再現プログラム303を生成する。また、別環境で実行させる目的で、クロスコンパイルクロスコンパイルし、以降の実行を試験装置100とは別の装置で行っても構わない。
プログラム実行部205は、結果判定部206から命令を受けて、再現プログラム303を実行させる。
なお、ここでは、プログラム生成部203が再現プログラムソースコード302を作成し、コンパイル部204が再現プログラムソースコード302から再現プログラム303を作成している。しかし、プログラム生成部203が再現プログラムソースコード302から再現プログラム303を作成する機能を有していてもよい。
<結果判定処理>
図10は、本実施の形態に係る結果判定部206の動作を示すフロー図である。結果判定部206は、再現プログラム303の出力結果を判定する再現プログラム出力結果判定部ともいう。
結果判定部206は、再現プログラム303を実行し、一連の関数呼び出し処理333により呼び出された関数の引数と返り値との各々を再現結果26として取得し、再現結果26の属性が期待値を満たしているかを判定する。
ステップS401において、結果判定部206は、関数呼び出しテーブル301を取得する。
ステップS402において、結果判定部206は、プログラム実行部205に再現プログラム303の実行を要求する。プログラム実行部205は、再現プログラム303を実行する。
ステップS403において、結果判定部206は、再現プログラム303の出力を再現結果26として取得する。
ステップS404において、結果判定部206は、再現プログラム303の再現結果26と関数呼び出しテーブル301の同等の関数における出力結果とを比較し、関数呼び出し試験表304に出力する。
図11は、本実施の形態に係る関数呼び出し試験表304の例である。
関数呼び出し試験表304には、トレースログ113の項目に、返り値の期待値と結果の項目が加えられている。返り値の期待値は、関数呼び出しテーブル301にタグ付された変数属性21に基づいて求められる。具体的には、試験装置100が、ステップS303で返り値に付与したタグを基に返り値の期待値を自動的に設定する。例えば、変数種別がPIDであれば、返り値の期待値には、1以上、システムのPIDのMAX値以下の値が設定される。また、変数種別がアドレスであれば、返り値の期待値には、システムの有効なアドレス範囲内といった値が設定される。結果判定部206は、返り値と期待値を比較し、返り値が期待値の範囲であれば結果に範囲内と設定する。結果判定部206は、返り値が期待値の範囲外であれば結果に範囲外と設定する。結果判定部206は、返り値の種別がその他であるといった特定できない場合は、結果に判断不可を設定する。また、結果判定部206は、引数についても、タグ付された変数属性を基に結果を判定する。
***他の構成***
本実施の形態では、ログ取得部201、ログ解析部202、プログラム生成部203、コンパイル部204、プログラム実行部205、および結果判定部206の機能がハードウェアで実現されてもよい。
試験装置100は、プロセッサ910に替えて、電子回路を備える。
電子回路は、ログ取得部201、ログ解析部202、プログラム生成部203、コンパイル部204、プログラム実行部205、および結果判定部206の機能を実現する専用の電子回路である。
電子回路は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、または、FPGAである。GAは、Gate Arrayの略語である。ASICは、Application Specific Integrated Circuitの略語である。FPGAは、Field−Programmable Gate Arrayの略語である。
ログ取得部201、ログ解析部202、プログラム生成部203、コンパイル部204、プログラム実行部205、および結果判定部206の機能は、1つの電子回路で実現されてもよいし、複数の電子回路に分散して実現されてもよい。
別の変形例として、ログ取得部201、ログ解析部202、プログラム生成部203、コンパイル部204、プログラム実行部205、および結果判定部206の一部の機能が電子回路で実現され、残りの機能がソフトウェアで実現されてもよい。また、ログ取得部201、ログ解析部202、プログラム生成部203、コンパイル部204、プログラム実行部205、および結果判定部206の一部またはすべての機能がファームウェアで実現されてもよい。
プロセッサと電子回路の各々は、プロセッシングサーキットリとも呼ばれる。つまり、試験装置100において、ログ取得部201、ログ解析部202、プログラム生成部203、コンパイル部204、プログラム実行部205、および結果判定部206の機能は、プロセッシングサーキットリにより実現される。
***本実施の形態の効果の説明***
以上のように、本実施の形態に係る試験装置100によれば、実行可能な再現プログラムを自動生成することにより、アプリケーションプログラムの使用範囲に即したライブラリの試験が可能となる。よって、本実施の形態に係る試験装置100によれば、ソフトウェアプラットフォームの品質が向上する。
また、本実施の形態に係る試験装置100によれば、アプリケーションプログラムの使用範囲で複数回実行したトレースログから再現プログラムを作成する。よって、本実施の形態に係る試験装置100によれば、自動的に最適な再現プログラムが生成でき、開発者が試験の結果を見て再現プログラムをメンテナンスするといった作業が不要となる。よって、再現プログラムの保守コストを削減することができる。
また、本実施の形態に係る試験装置100によれば、アプリケーションプログラムのライブラリ呼び出しのみ再現することから、アプリケーションプログラムのブラックボックステストが実現できる。よって、本実施の形態に係る試験装置100によれば、アプリケーションプログラムの実行に必要な設定ファイルといった環境整備が不要となる。これにより、テスト実行の準備の手間が削減されテスト効率が向上する。
また、本実施の形態に係る試験装置100によれば、アプリケーションプログラムがライブラリのAPIを呼び出す様子を複数回トレースし、トレースした内容を統計的に解析する。よって、本実施の形態に係る試験装置100によれば、毎実行変わるような処理、変数の種別、あるいは流用されている変数を特定することにより、再実行可能な再現プログラムを自動生成できる。よって、再現プログラムの保守コストを削減でき、アプリケーションプログラムの使用範囲に即した試験を複数回繰り返し実施可能とすることで、プラットフォームの品質を向上させることができる。
実施の形態2.
本実施の形態では、実施の形態1と異なる点について説明する。なお、実施の形態1と同様の構成については同一の符号を付し、その説明を省略する。
実施の形態1の試験装置100は、アプリケーションプログラムのライブラリ呼び出しを複数回トレースしたログから、実行可能な再現プログラムを自動生成していた。本実施の形態の試験装置100は、アプリケーションプログラムの処理フローがトレース毎に異なる場合に、トレースログの関数シーケンスの類似度から処理フローを分類する。そして、試験装置100は、分類された処理フロー毎に再現プログラムを生成する。
***構成の説明***
本実施の形態では、試験装置100のハードウェア構成および機能構成は、実施の形態1と同様である。ただし、本実施の形態では、再現プログラムソースコード302、再現プログラム303、および関数呼び出し試験表107が複数になる。
ログ取得部201は、トレースログ113に含まれる複数のトレース結果13を、複数のトレース結果の各々に含まれる関数呼び出しの順序、すなわち処理フローに基づいて類似トレースログ132として分類する。ログ解析部202は、類似トレースログ132毎に、変数属性を推定する。プログラム生成部203は、類似トレースログ132ごとに、再現プログラム303を生成する。
***動作の説明***
図12は、本実施の形態に係る関数呼び出しテーブル301aの例である。
関数呼び出しテーブル301aには、図8の関数呼び出しテーブル301の各トレース結果13に、処理フローを分類する処理フローの項目が追加されている。また、1つのトレース結果13は、1,2,・・・,nまでの処理フローのいずれかに分類される。nは1以上m以下の値を取る。
本実施の形態に係る試験装置100の動作は、基本的に実施の形態1と同様である。異なる点は、以下の通りである。
(1)ログ解析部202が、トレースログ113の複数のトレース結果13を処理フロー毎に分類し、類似トレースログ132から成る関数呼び出しテーブル301aを生成する点。
(2)プログラム生成部203が、関数呼び出しテーブル301aの類似トレースログ132毎に、再現プログラムソースコード302を生成する点。
(3)コンパイル部204が、複数の再現プログラムソースコード302をコンパイルし、複数の再現プログラム303を生成する点。
(4)結果判定部206が、類似トレースログ132毎に生成された再現プログラム303を実行し、関数呼び出し試験表304を類似トレースログ132毎に複数出力する点。
図13は、本実施の形態に係るログ解析部202の動作を示すフロー図である。
図13のステップS301、ステップS302、およびステップS305は、実施の形態1の図6と同様である。
ステップS501において、ログ解析部202は、トレース結果13の関数シーケンスの類似度を算出し、トレース結果13の関数シーケンスをn個に分類する。複数のトレース結果13は、類似トレースログ132に分類される。
ステップS502において、ログ解析部202は、分類した類似トレースログ132毎に、ステップS303と同様の処理を行う。
ステップS503において、ログ解析部202は、分類した類似トレースログ132毎に、ステップS304と同様の処理を行う。
図14は、本実施の形態に係るプログラム生成部203の動作を示すフロー図である。
図14のステップS311、ステップS312、およびステップS313は、実施の形態1の図9と同様である。
ステップS601において、プログラム生成部203は、処理フローnを設定する。
ステップS602において、プログラム生成部203は、処理フローの番号を付与した再現プログラムソースコードiを生成する。
ステップS603において、プログラム生成部203は、iを次の処理フロー番号に設定する。
ステップS604において、プログラム生成部203は、処理フロー番号iが処理フローn未満であれば、ステップS313に分岐し、処理フロー番号iが処理フローn以上であれば、処理を終了する。
図15は、本実施の形態に係る結果判定部206の動作を示すフロー図である。
図15のステップS401は、実施の形態1の図10と同様である。
ステップS701において、結果判定部206は、処理フローnを設定する。
ステップS702において、結果判定部206は、処理フロー番号iに対応した再現プログラムiを実行し呼び出し結果を取得する。
ステップS703において、結果判定部206は、処理フロー番号iに対応した関数呼び出し試験表iを出力する。
ステップS704において、結果判定部206は、iを次の処理フロー番号に設定する。
ステップS705において、結果判定部206は、処理フロー番号iが処理フローn未満であれば、ステップS702に分岐し、処理フロー番号iが処理フローn以上であれば、処理を終了する。
***本実施の形態の効果の説明***
以上のように、本実施の形態に係る試験装置100によれば、アプリケーションプログラムの異なる処理フロー毎にライブラリのテストを実施できる。よって、複数パターンのライブラリのテストにより、発見しづらいバグおよび脆弱性を効率的に検証でき、ソフトウェアのプラットフォームの品質が向上する。
実施の形態3.
本実施の形態では、実施の形態1および2と異なる点について説明する。なお、実施の形態1および2と同様の構成については同一の符号を付し、その説明を省略する。
実施の形態2の試験装置100は、アプリケーションプログラムのライブラリ呼び出しを複数回トレースしたログから、実行可能な再現プログラムを自動生成していた。しかし、実施の形態2では、アプリケーションプログラムの前回トレースとの時間間隔を定めていなかった。トレースログを統計的に解析するにあたって、絶対時刻を基になんらかの処理が開始するといった時刻に依存した処理が行われる場合がある。本実施の形態では、アプリケーションプログラムの実行開始時刻の定周期性を用いることで、処理フローの分類を効果的に行う。
***構成の説明***
本実施の形態では、試験装置100のハードウェア構成および機能構成は、実施の形態1と同様である。
ログ取得部201は、アプリケーションプログラムを実行する間隔を表す実行規定間隔で、アプリケーションプログラム111を複数回繰り返し実行する。
***動作の説明***
図16は、本実施の形態に係るログ取得部201の動作を示すフロー図である。
図16のステップS201、ステップS202、ステップS204、ステップS205、およびステップS206は、実施の形態1の図4と同様である。
ステップS801において、ログ取得部201は、実行規定間隔Tを設定する。実行規定間隔Tは0以上であれば、いかなる値でも構わない。
ステップS802において、ログ取得部201は、前回実行時刻に現在時刻を設定する。
ステップS803において、ログ取得部201は、前回実行時刻から実行規定間隔Tを加算した時刻まで待機する。
ステップS804において、ログ取得部201は、起床した現在時刻を前回実行時刻に保存し、アプリケーションプログラム111を実行する。
以上により、ログ取得部201は、ステップS801で設定した実行規定間隔Tでの、アプリケーションプログラム111の実行が可能となる。
図17は、本実施の形態に係るログ解析部202の動作を示すフロー図である。
図17のステップS301、ステップS302、ステップS502、ステップS503、およびステップS305は、実施の形態2の図13と同様である。
ステップS511において、ログ解析部202は、実行規定間隔Tを考慮し処理フローを分類する。具体的には、ログ解析部202は、関数シーケンスでは類似しているが、実行規定間隔Tと相違した関数実行時刻であれば、異なる処理フローと判定し、別シーケンスとして解釈するといった処理を行う。
***本実施の形態の効果の説明***
本実施の形態に係る試験装置100によれば、処理フローの分類精度を向上させることができ、再現プログラムの実行可能性を高めることができる。
実施の形態4.
本実施の形態では、実施の形態1から3と異なる点について説明する。なお、実施の形態1から3と同様の構成については同一の符号を付し、その説明を省略する。
実施の形態1の試験装置は、アプリケーションプログラムのライブラリ呼び出しを複数回トレースしたログから、実行可能な再現プログラムを自動生成していた。アプリケーションプログラムの実行により、プラットフォームの状態が変わる可能性があるため、トレースの環境条件が異なる場合がある。そこで、本実施の形態の試験装置100は、トレース毎にプラットフォームを再起動させることで、環境条件を同一にし、トレースログの解析を容易にする。
***構成の説明***
本実施の形態では、試験装置100のハードウェア構成および機能構成は、実施の形態1と同様である。
ログ取得部201は、アプリケーションプログラム111を実行する毎に、ソフトウェアプラットフォームを初期化する。
図18は、本実施の形態に係るログ取得部201の動作を示すフロー図である。
図18のステップS202、ステップS203、ステップS204、ステップS205、およびステップS206は、実施の形態1の図4と同様である。
ステップS901において、ログ取得部201は、再起動回数を初期化する。
ステップS902において、ログ取得部201は、再起動回数がトレースログ取得回数よりも少なければ、再起動する。ログ取得部201は、再起動をオペレーティングシステム108に指示する。
再起動回数がトレースログ取得回数以上になったら、ログ取得部201は、終了する。これら実行状態の管理は、再起動によって保持される方法であれば、いかなる方法でもよい。
***本実施の形態の効果の説明***
本実施の形態に係る試験装置によれば、アプリケーションプログラムの動作環境を同一にすることが可能となり、複数のトレースログの類似性が高まり、解析精度が向上する。
以上の実施の形態1から4では、試験装置の各部を独立した機能ブロックとして説明した。しかし、試験装置の構成は、上述した実施の形態のような構成でなくてもよい。試験装置の機能ブロックは、上述した実施の形態で説明した機能を実現することができれば、どのような構成でもよい。
以上の実施の形態1から4のうち、複数の部分を組み合わせて実施しても構わない。あるいは、これらの実施の形態のうち、1つの部分を実施しても構わない。その他、これらの実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
なお、上述した実施の形態は、本質的に好ましい例示であって、本発明の範囲、本発明の適用物の範囲、および本発明の用途の範囲を制限することを意図するものではない。上述した実施の形態は、必要に応じて種々の変更が可能である。
100 試験装置、13 トレース結果、21 変数属性、26 再現結果、106 ソフトウェアプラットフォーム、108 オペレーティングシステム、109 動的ライブラリ、110 開発者、111 アプリケーションプログラム、112 トレースプログラム、113 トレースログ、132 類似トレースログ、201 ログ取得部、202 ログ解析部、203 プログラム生成部、204 コンパイル部、205 プログラム実行部、206 結果判定部、208 変数属性タグ、301,301a 関数呼び出しテーブル、302 再現プログラムソースコード、303 再現プログラム、304 関数呼び出し試験表、333 一連の関数呼び出し処理、910 プロセッサ、921 メモリ、922 補助記憶装置、930 入出力インタフェース、940 信号線、950 通信装置。

Claims (11)

  1. ソフトウェアプラットフォームを利用して一連の関数呼び出し処理を行うアプリケーションプログラムを実行し、前記ソフトウェアプラットフォームの試験を行う試験装置において、
    前記アプリケーションプログラムを複数回繰り返し実行し、前記一連の関数呼び出し処理をトレースしたトレース結果であって前記一連の関数呼び出し処理により呼び出された関数の引数と返り値とを含むトレース結果を複数含むトレースログを取得するログ取得部と、
    前記トレースログを解析することにより、前記一連の関数呼び出し処理により呼び出される関数の引数と返り値との各々の属性を変数属性として推定するログ解析部と、
    前記変数属性を用いて、前記一連の関数呼び出し処理を再現する再現プログラムを生成するプログラム生成部と
    を備えた試験装置。
  2. 前記試験装置は、
    前記再現プログラムを実行し、前記一連の関数呼び出し処理により呼び出された関数の引数と返り値との各々を再現結果として取得し、前記再現結果の属性が期待値を満たしているかを判定する結果判定部を備えた請求項1に記載の試験装置。
  3. 前記ログ解析部は、
    前記トレースログを統計的に解析することにより、前記変数属性を推定する請求項1または請求項2に記載の試験装置。
  4. 前記ログ解析部は、
    前記一連の関数呼び出し処理により呼び出される関数の引数と返り値との各々に、前記変数属性を表す変数属性タグをタグ付けした関数呼び出しテーブルを生成し、
    前記プログラム生成部は、
    前記関数呼び出しテーブルを用いて、前記再現プログラムを生成する請求項1から請求項3のいずれか1項に記載の試験装置。
  5. 前記ログ解析部は、
    前記トレースログを統計的に解析することにより、前記変数属性として、前記一連の関数呼び出し処理により呼び出される関数の引数と返り値との各々の種別を表す変数種別を推定する請求項1から請求項4のいずれか1項に記載の試験装置。
  6. 前記ログ解析部は、
    前記トレースログを統計的に解析することにより、前記変数属性として、前記一連の関数呼び出し処理により呼び出される関数の引数と返り値との各々が流用される流用箇所を推定する請求項1から請求項5のいずれか1項に記載の試験装置。
  7. 前記ログ取得部は、
    前記トレースログに含まれる複数のトレース結果を、前記複数のトレース結果の各々に含まれる関数呼び出しの順序に基づいて類似トレースログとして分類し、
    前記ログ解析部は、
    前記類似トレースログごとに、前記変数属性を推定し、
    前記プログラム生成部は、
    前記類似トレースログごとに、前記再現プログラムを生成する請求項1から請求項6のいずれか1項に記載の試験装置。
  8. 前記ログ取得部は、
    前記アプリケーションプログラムを実行する間隔を表す実行規定間隔で、前記アプリケーションプログラムを複数回繰り返し実行する請求項1から請求項7のいずれか1項に記載の試験装置。
  9. 前記ログ取得部は、
    前記アプリケーションプログラムを実行する毎に、前記ソフトウェアプラットフォームを初期化する請求項1から請求項8のいずれか1項に記載の試験装置。
  10. ソフトウェアプラットフォームを利用して一連の関数呼び出し処理を行うアプリケーションプログラムを実行し、前記ソフトウェアプラットフォームの試験を行う試験装置の試験方法において、
    ログ取得部が、前記アプリケーションプログラムを複数回繰り返し実行し、前記一連の関数呼び出し処理をトレースしたトレース結果であって前記一連の関数呼び出し処理により呼び出された関数の引数と返り値とを含むトレース結果を複数含むトレースログを取得し、
    ログ解析部が、前記トレースログを解析することにより、前記一連の関数呼び出し処理により呼び出される関数の引数と返り値との各々の属性を変数属性として推定し、
    プログラム生成部が、前記一連の関数呼び出し処理により呼び出される関数の引数と返り値との前記変数属性を用いて、前記一連の関数呼び出し処理を再現する再現プログラムを生成する試験方法。
  11. ソフトウェアプラットフォームを利用して一連の関数呼び出し処理を行うアプリケーションプログラムを実行し、前記ソフトウェアプラットフォームの試験を行う試験装置の試験プログラムにおいて、
    前記アプリケーションプログラムを複数回繰り返し実行し、前記一連の関数呼び出し処理をトレースしたトレース結果であって前記一連の関数呼び出し処理により呼び出された関数の引数と返り値とを含むトレース結果を複数含むトレースログを取得するログ取得処理と、
    前記トレースログを解析することにより、前記一連の関数呼び出し処理により呼び出される関数の引数と返り値との各々の属性を変数属性として推定するログ解析処理と、
    前記一連の関数呼び出し処理により呼び出される関数の引数と返り値との前記変数属性を用いて、前記一連の関数呼び出し処理を再現する再現プログラムを生成するプログラム生成処理と
    をコンピュータである試験装置に実行させる試験プログラム。
JP2020568832A 2019-01-28 2019-01-28 試験装置、試験方法および試験プログラム Active JP6878707B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/002721 WO2020157795A1 (ja) 2019-01-28 2019-01-28 試験装置、試験方法および試験プログラム

Publications (2)

Publication Number Publication Date
JPWO2020157795A1 true JPWO2020157795A1 (ja) 2021-04-30
JP6878707B2 JP6878707B2 (ja) 2021-06-02

Family

ID=71842420

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020568832A Active JP6878707B2 (ja) 2019-01-28 2019-01-28 試験装置、試験方法および試験プログラム

Country Status (3)

Country Link
US (1) US20210286715A1 (ja)
JP (1) JP6878707B2 (ja)
WO (1) WO2020157795A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113722020B (zh) * 2020-05-26 2024-06-11 腾讯科技(深圳)有限公司 接口调用方法、装置和计算机可读存储介质
KR102614650B1 (ko) * 2022-11-28 2023-12-19 쿠팡 주식회사 전자 장치 및 그의 api 관리 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009217664A (ja) * 2008-03-12 2009-09-24 Hitachi Software Eng Co Ltd 自動テスト実行システム
JP2010226617A (ja) * 2009-03-25 2010-10-07 Seiko Epson Corp テストプログラム生成方法、プログラム
JP2016177659A (ja) * 2015-03-20 2016-10-06 ヤフー株式会社 検証プログラム、検証装置及び検証方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8762781B2 (en) * 2010-11-16 2014-06-24 International Business Machines Corporation Method and apparatus useful in manufacturing test case operations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009217664A (ja) * 2008-03-12 2009-09-24 Hitachi Software Eng Co Ltd 自動テスト実行システム
JP2010226617A (ja) * 2009-03-25 2010-10-07 Seiko Epson Corp テストプログラム生成方法、プログラム
JP2016177659A (ja) * 2015-03-20 2016-10-06 ヤフー株式会社 検証プログラム、検証装置及び検証方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
藤原 貴之 他: "大規模組込み機器向けテスト自動化拡大方式 Expanding Automated Testing for Large Embedded System", 情報処理学会論文誌 コンシューマ・デバイス&システム(CDS) VOL.4 NO.4 [ONLINE, vol. 第4巻 第4号, JPN6021003867, 10 December 2014 (2014-12-10), JP, pages 1 - 10, ISSN: 0004439715 *

Also Published As

Publication number Publication date
WO2020157795A1 (ja) 2020-08-06
JP6878707B2 (ja) 2021-06-02
US20210286715A1 (en) 2021-09-16

Similar Documents

Publication Publication Date Title
JP4148527B2 (ja) 機能テスト・スクリプト生成装置
US9152731B2 (en) Detecting a broken point in a web application automatic test case
US9208057B2 (en) Efficient model checking technique for finding software defects
US8621441B2 (en) System and method for software immunization based on static and dynamic analysis
US11675575B2 (en) Checking source code validity at time of code update
US8832125B2 (en) Extensible event-driven log analysis framework
US10664383B2 (en) Automated software program repair of similar code snippets
US20130145347A1 (en) Automatic modularization of source code
JP2006185211A (ja) プログラム解析装置、テスト実行装置、その解析方法及びプログラム
US11132282B2 (en) Managing cloud-based hardware accelerators
EP3682324A1 (en) Method and apparatus for finding long methods in code
US20130179867A1 (en) Program Code Analysis System
US8898649B2 (en) Application program analysis method, analysis system and recording medium for identifying a contributing factor for an invalid operation of an application program
US9117020B2 (en) Determining control flow divergence due to variable value difference
JP6878707B2 (ja) 試験装置、試験方法および試験プログラム
US8762781B2 (en) Method and apparatus useful in manufacturing test case operations
US10380313B1 (en) Implementation and evaluation of designs for heterogeneous computing platforms with hardware acceleration
US10839124B1 (en) Interactive compilation of software to a hardware language to satisfy formal verification constraints
US10318403B2 (en) Code update based on detection of change in runtime code during debugging
US11947966B2 (en) Identifying computer instructions enclosed by macros and conflicting macros at build time
US20220318005A1 (en) Generation of software program repair explanations
CN108255802B (zh) 通用文本解析架构及基于所述架构解析文本的方法和装置
WO2023145165A1 (ja) プログラム検査装置、及びプログラム検査方法
JP2007219893A (ja) ファームウェア評価システムおよびファームウェア評価方法
CN117616387A (zh) 增量编译处理方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201210

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201210

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20201210

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20210128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210302

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210406

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210428

R150 Certificate of patent or registration of utility model

Ref document number: 6878707

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150