JP2014021982A - オブジェクト指向言語のための記号テストドライバの反復生成 - Google Patents

オブジェクト指向言語のための記号テストドライバの反復生成 Download PDF

Info

Publication number
JP2014021982A
JP2014021982A JP2013146221A JP2013146221A JP2014021982A JP 2014021982 A JP2014021982 A JP 2014021982A JP 2013146221 A JP2013146221 A JP 2013146221A JP 2013146221 A JP2013146221 A JP 2013146221A JP 2014021982 A JP2014021982 A JP 2014021982A
Authority
JP
Japan
Prior art keywords
symbol
test
instructions
oriented programming
test driver
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
JP2013146221A
Other languages
English (en)
Other versions
JP6142705B2 (ja
Inventor
Wiggers Maarten
ウィガーズ・マールテン
Ghosh Indradeep
ゴーシュ・インドラディープ
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2014021982A publication Critical patent/JP2014021982A/ja
Application granted granted Critical
Publication of JP6142705B2 publication Critical patent/JP6142705B2/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/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

Landscapes

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

Abstract

【課題】 本発明は、記号テストドライバを反復生成する方法及びシステムを提供する。
【解決手段】 1又は複数のコンピューティング装置により、評価されるべきコンピューティング装置に対する命令を決定するステップ、評価されるべき1又は複数の前記命令及び該命令の一部に対応する記号変数の指示を有する第1の記号テストドライバを生成するステップ、前記記号変数に関して前記命令を記号実行するステップ、前記記号実行の結果から、前記記号変数の所与の値で前記命令を実行する1又は複数のコマンドを有するテストケースを決定するステップ、前記コマンド内のオブジェクト指向プログラミングコンポーネントの1又は複数の呼び出しを決定するステップ、前記の決定した呼び出しに基づき前記呼び出しを有する新しい記号テストドライバを生成するステップ、次に、前記新しい記号テストドライバを記号実行するステップ、を有する方法。
【選択図】 図1

Description

本発明は、概してソフトウェア検証に関し、より詳細には、オブジェクト指向言語のための記号(symbolic)テストドライバの反復生成に関する。
ソフトウェアアプリケーションは、任意の数のモジュール(例えば、クラス、関数、プロシジャ、サブルーチン、又はコードブロック)を有し、各モジュールは個別にテスト又は検証され得る。ソフトウェアモジュールは、手動で又は自動的にテスト又は検証され得る。前者の場合、人(例えば、ソフトウェア検査技術者)が、モジュールの設計仕様に基づき、ソフトウェアモジュールのテストケースを手動で設計し、テストケースの下でモジュールを実行し、テストケースと一致しないモジュールの動作又は出力を調べる。後者の場合、コンピュータソフトウェア又はハードウェアとして実装されたソフトウェア検査ツールが、被検査ソフトウェアモジュールのテストケースを生成し、テストケースをシミュレートしながら被検査モジュールを実行し、テストケースと一致しないモジュールの動作又は出力を調べる。近年のソフトウェアの純粋な複雑性は、テストケースの手動生成又は設計を、ソフトウェアを完全に検査するのに不適切にしてしまう場合が多い。
本発明は、記号テストドライバを反復生成する方法及びシステムを提供する。
1又は複数のコンピューティング装置により、評価されるべきコンピューティング装置に対する命令を決定するステップ、評価されるべき1又は複数の前記命令及び該命令の一部に対応する記号変数の指示を有する第1の記号テストドライバを生成するステップ、前記記号変数に関して前記命令を記号実行するステップ、前記記号実行の結果から、前記記号変数の所与の値で前記命令を実行する1又は複数のコマンドを有するテストケースを決定するステップ、前記コマンド内のオブジェクト指向プログラミングコンポーネントの1又は複数の呼び出しを決定するステップ、前記の決定した呼び出しに基づき前記呼び出しを有する新しい記号テストドライバを生成するステップ、次に、前記新しい記号テストドライバを記号実行するステップ、を有する方法。
別の実施形態では、システムは、コンピュータ実行可能命令を含むコンピュータ可読媒体、前記コンピュータ可読媒体に結合され前記命令を読み出し実行するよう動作する1又は複数のプロセッサ、を有する。1又は複数のプロセッサは、前記命令を実行すると、評価されるべきコンピューティング装置に対する命令を決定するステップ、評価されるべき1又は複数の前記命令及び該命令の一部に対応する記号変数の指示を有する第1の記号テストドライバを生成するステップ、前記記号変数に関して前記命令を記号実行するステップ、前記記号実行の結果から、前記記号変数の所与の値で前記命令を実行する1又は複数のコマンドを有するテストケースを決定するステップ、前記コマンド内のオブジェクト指向プログラミングコンポーネントの1又は複数の呼び出しを決定するステップ、前記の決定した呼び出しに基づき前記呼び出しを有する新しい記号テストドライバを生成するステップ、次に、前記新しい記号テストドライバを記号実行するステップ、を実行する。
更に別の実施形態では、製品は、コンピュータ可読媒体、前記コンピュータ可読媒体に保持されたコンピュータ実行可能命令を有する。前記命令はプロセッサにより読み出し可能である。前記命令は、読み出され実行されると、プロセッサに、評価されるべきコンピューティング装置に対する命令を決定するステップ、評価されるべき1又は複数の前記命令及び該命令の一部に対応する記号変数の指示を有する第1の記号テストドライバを生成するステップ、前記記号変数に関して前記命令を記号実行するステップ、前記記号実行の結果から、前記記号変数の所与の値で前記命令を実行する1又は複数のコマンドを有するテストケースを決定するステップ、前記コマンド内のオブジェクト指向プログラミングコンポーネントの1又は複数の呼び出しを決定するステップ、前記の決定した呼び出しに基づき前記呼び出しを有する新しい記号テストドライバを生成するステップ、次に、前記新しい記号テストドライバを記号実行するステップ、を実行させる。
本発明並びにその特徴及び利点のより完全な理解のため、添付の図と共に以下の説明を参照する。
オブジェクト指向言語のための記号テストドライバの反復生成のためのシステムの例示的な実施形態である。 例示的な実施形態及びテストモジュールの生成の更に詳細な図である。 新しいテストドライバが生成されるオブジェクト、クラス、データ構造又は関数の呼び出し又はインスタンスの説明である。 記号テストドライバを反復生成させる被検査コードの例である。 システムの動作例の説明である。 新しい記号テストドライバを生成するためのシステムの更なる動作例を示す。 オブジェクト指向言語のための記号テストドライバの反復生成のための例示的な方法の説明である。
図1は、オブジェクト指向言語のための記号テストドライバの反復生成のためのシステム100の例示的な実施形態である。システム100は、被検査コード104を検証し、有効化し又は検査し、該検査からの結果108を生成するよう構成されても良い。検査中、システム100は、被検査コード104を検査するために記号テストドライバを反復生成するよう構成されても良い。一実施形態では、このような記号テストドライバは、システム100又は別のエンティティにより用いられ、被検査コード104の検査の一部として被検査コード104を記号実行しても良い。別の実施形態では、システム100は、被検査コード104のオブジェクト指向プログラミングの特徴に基づき、記号テストドライバを反復生成するよう構成されても良い。このような特徴は、例えば、オブジェクト、クラス、データ構造又はオブジェクト内の関数の呼び出し又はインスタンスを含み得る。
システム100は、被検査コード104のために記号テストドライバを反復生成するよう構成される電子装置102を有しても良い。電子装置102は、このような記号テストドライバを用いて被検査コード104を記号実行し、又は被検査コード104を検査するよう更に構成されても良い。一実施形態では、電子装置102は、被検査コード104のオブジェクト指向プログラミングの特徴に基づく記号テストドライバの反復生成に基づいても良い。電子装置102は、被検査コード104の検査結果を反映する結果108を生成するよう構成されても良い。
電子装置102は、任意の適切な方法で、例えばネットワークを介して、ユーザによるロード若しくは入力を通じて、又はローカル若しくはリモート記憶装置にアクセスして電子的に、被検査コード104を受信するよう構成されても良い。電子装置102は、任意の適切な方法で、例えばネットワークを介して結果108を送信し、ユーザに表示し、又はローカル若しくはリモート記憶装置に格納して、結果108を提供するよう構成されても良い。
電子装置102は、被検査コード104のために記号テストドライバを反復生成するよう構成されるテストモジュール106を有しても良い。さらに、テストモジュール106は、電子装置102又はシステム100のために任意の態様の被検査コード104実行するよう構成されても良い。テストモジュール106は、プログラム、ソフトウェア、サービスとしてのソフトウェア、アナログ若しくはデジタル回路、又はこれらの任意の組合せのような任意の適切なメカニズムにより実装されても良い。テストモジュール106は、電子装置102に常駐しても良い。テストモジュール106は、完全なモジュールとして、又はより大きなシステムの一部のようなサブモジュールとして実装されても良い。ソフトウェア形式では、テストモジュール106の一部又は全部は、例えば、ロジック、命令、バイナリ、オブジェクトコード、ライブラリ、関数、プログラム、アプリケーション、スクリプト、実行ファイル、又は他の適切なデジタルエンティティにより実装されても良い。
電子装置102は、プログラム命令を解釈し及び/又は実行し、及び/又はデータを処理するよう構成可能な、コンピュータ、デスクトップ、サーバ、ラップトップ、パーソナルデータアシスタント又はスマートフォンを含むがこれらに限定されない任意の装置を有しても良い。電子装置102は、メモリ112に結合されるプロセッサ110を有しても良い。テストモジュール106の一部又は全部は、プロセッサ110による実行のために、メモリ112内に常駐するロジック若しくは命令で実施されても良い。プロセッサ110は、例えば、マイクロプロセッサ、マイクロコントローラ、デジタ・シグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、又はプログラム命令を解釈し及び/若しくは実行し並びに/又はデータを処理するよう構成された任意の他のデジタル若しくはアナログ回路を有してもよいが、これらに限定されない。プロセッサ110は、プログラム命令を解釈及び/又は実行し、及び/又はメモリ112格納されたデータを処理しても良い。メモリ112は、プログラム命令及び/又はデータをある期間の間保持するよう構成される任意のシステム、装置又は機器を有してもよい(例えば、コンピュータ可読媒体)。
被検査コード104は、例えば、ソフトウェア、ソフトウェアコード、ライブラリ、アプリケーション、スクリプト、アクティブ若しくはパッシブウェブコンテンツ、又は電子装置で実行される他のロジック若しくは命令を有しても良い。一実施形態では、被検査コード104は、このようなソフトウェアの完全なインスタンスを有しても良い。別の実施形態では、被検査コード104は、このようなソフトウェアの一部を有しても良い。
結果108は、データ、ファイル、又はテストモジュール106の動作結果を表現し、格納し若しくは示す任意の他の適切なメカニズムにより実施されても良い。結果108は、例えば、テストモジュール106により反復生成される記号テストドライバ、又は記号実行を通じて決定された被検査コード104内のエラーの指標を有しても良い。
実際に、テストモジュール106は、電子装置102で実行中であっても良い。テストモジュール106は、ローカル又はリモートユーザからアクセス可能であっても良い。被検査コード104は、電子装置102及びテストモジュール106に供給されても良い。テストモジュール106は、被検査コード104を分析し、被検査コード104がエラーを含むか否かを決定しても良い。テストモジュール106は、任意の適切なプロセスを通じて被検査コード104を分析しても良い。一実施形態では、テストモジュール106は、被検査コード104のために記号テストドライバを反復生成しても良い。更なる実施形態では、テストモジュール106は、被検査コード104のオブジェクト指向プログラミングの特徴に基づき、このような生成を行っても良い。別の実施形態では、テストモジュール106は、被検査コード104を記号実行しても良い。このような記号実行は、反復生成した記号テストドライバを用いて行われても良い。テストモジュール106は、例えば、反復生成された記号テストドライバ又は生成された記号テストドライバで被検査コード104を記号実行した結果を含む結果108を生成しても良い。結果108は、ユーザに供給され、格納され、又は被検査コード104を評価するために用いられても良い。
図2は、例示的な実施形態及びテストモジュール200の生成の更に詳細な図である。テストモジュール200は、図1のテストモジュール106の全部又は一部を実施しても良い。
テストモジュール200は、テストドライバ生成部204、記号テストドライバ生成部106、記号実行エンジン208、及びテストエンジン210を有しても良い。テストドライバ204は、ソースファイル202、記号テストドライバ生成部206、及び記号実行エンジン208に通信可能に結合されても良い。記号テストドライバ生成部206は、記号実行エンジン208に更に通信可能に結合されても良い。記号実行エンジン208は、結果214を生成するよう構成されても良いテストエンジン210に更に通信可能に結合されても良い。
ソースファイル202は、評価され、テストされ又は有効化されるコードを有しても良い。ソースファイル202は、例えば、ファイル、レコード、データベース又は任意の他の適切なエンティティで実装されても良い。ソースファイル202は、図1の被検査コード104を有し、格納し又は実施しても良い。結果214は、任意の適切な方法で実装されても良く、図1の結果108を有しても良い。
テストドライバ生成部204、記号テストドライバ生成部206、記号実行エンジン208及びテストエンジン210の各々は、プログラム、ソフトウェア、ライブラリ、関数、モジュール、アプリケーション、スクリプト、サービスとしてのソフトウェア、アナログ若しくはデジタル回路、又はこれらの任意の組合せのような任意の適切な方法で実装されても良い。テストドライバ生成部204、記号テストドライバ生成部206、記号実行エンジン208及びテストエンジン210の各々は別個のコンポーネントとして示されるが、これらのうちのいずれも、図示された若しくは図示されない別のコンポーネントと組み合わせられ、依然として本願明細書に記載した機能を実行しても良い。テストドライバ生成部204、記号テストドライバ生成部206、記号実行エンジン208、及びテストエンジン210の各々は、図1のテストモジュール106の一部又は全部を実施しても良い。テストドライバ生成部204、記号テストドライバ生成部206、記号実行エンジン208及びテストエンジン210の各々は、共通若しくは別個のモジュール内に実装されても良く、このようなモジュールは、完全なモジュールとして又はより大きなシステムの一部としてのサブモジュールとして実装されても良い。ソフトウェア形式では、テストドライバ生成部204、記号テストドライバ生成部206、記号実行エンジン208、及びテストエンジン210の一部又は全部は、例えば、ロジック、命令、バイナリ、オブジェクトコード、ライブラリ、関数、プログラム、アプリケーション、スクリプト、実行ファイル、又は他の適切なデジタルエンティティにより実装されても良い。
テストドライバ生成部204は、ソースファイル202から被検査コードを受信するよう構成されても良い。このような被検査コードは、テストモジュール200により分析中のより大きなエンティティの一部を反映しても良い。さらに、テストドライバ生成部204は、記号実行エンジン208から被検査コードの特定部分を受信するよう構成されても良い。特定部分は、オブジェクト、クラス、データ構造又はオブジェクト内の関数の呼び出しのような被検査コードのオブジェクト指向プログミングに関連する特徴の確認された呼び出し又はインスタンスを有しても良い。テストドライバ生成部204は、例えば、ソースファイル202又は記号実行エンジン208から受信した特定部分により定められる被検査コードの一部を反映する一連の命令を生成するよう構成されても良い。
テストドライバ生成部204は、生成した一連の命令をテストドライバとして記号テストドライバ生成部206に渡すよう構成されても良い。記号テストドライバ生成部206は、被検査コード内の変数に対応する、テストドライバ内の所与の変数を変更し、ドライバが所与の変数に関して記号実行されるべきであることを示すよう構成されても良い。結果は、記号テストドライバを有しても良い。記号テストドライバ生成部206は、記号テストドライバを記号実行エンジン208に渡すよう構成されても良い。
記号実行エンジン208は、記号テストドライバを記号実行するよう構成されても良い。記号実行は、プログラム内の異なるパスを体系的に探索するプログラム検証技術を有しても良い。このような体系的探索には、所与のパスを形成する特定の関数呼び出しのシーケンスが含まれ得る。記号実行エンジン208は、記号テストドライバを記号実行するよう構成されても良い。記号テストドライバは、命令シーケンス内の条件分岐点を分析することを含む任意の適切な方法で被検査コードの部分を反映する。記号テストドライバを記号実行した結果は、テストエンジン210により実行されるべきテストケースを有しても良い。テストケースは、特定の入力変数と共に、被検査コードを並列化する命令シーケンスを有しても良い。テストケースは、特定のパスを形成する、関数呼び出し及び入力ベクトルのシーケンス、又は変数の値を有しても良い。
複数のこのようなテストケースは、条件分岐点を前提に生成されても良い。あるテストケースは、条件分岐の1つの可能な出力を仮定した実行を示し、別のテストケースは、条件分岐の異なる可能な出力を仮定した実行を示す。条件分岐演算は、例えば、if-then-else文又は条件ループを有しても良い。
さらに、複数のこのようなテストケースは、変数の異なる可能な値を用いて生成されても良い。変数は、例えば、被検査コードの設計により特定された又は記号実行を通じて得られた制約により制限されても良い。制約は、式又は論理条件を有しても良い。テストケースの実行は、このような制約下で可能であっても可能でなくても良い。制約は、テストケースに含まれ、テストエンジン210に供給されても良い。
テストエンジン210は、テストケースを実行し、制約の観点から、結果が被検査コード内のエラーを示すか否かを評価するよう構成されても良い。テストケースの実行結果が制約に違反する場合、テストエンジン210は、テストケースにより提示された被検査コード内にエラーが存在すると決定するよう構成されても良い。テストケースの実行結果が制約に違反しない場合、テストエンジン210は、少なくとも存在する制約の下で、テストケースにより提示された被検査コード有効化するよう構成されても良い。テストエンジン210は、新しい制約が例えば記号実行エンジン208により決定されるとき、新しい制約の観点で被検査コードを提示するテストケースを再検査するよう構成されても良い。テストケースを評価した後、テストエンジン210は、被検査コードの記号実行を継続するか否かを、記号実行エンジン208に通知するよう構成されても良い。テストエンジン210は、特定量の検査範囲が実行されたか又は特定限度のリソース(反復又は時間のような)が消費されているか否かを決定するような任意の適切なメカニズムを通じて、このような決定を行うよう構成されても良い。テスト又はリソース境界が満たされるか否かを決定した後、テストエンジン210は、被検査コードの評価を停止するか又は継続するかを、記号実行エンジン208に通知するよう構成されても良い。テストエンジン210は、結果214を生成するよう構成されても良い。
幾つかの例では、テストエンジン210は、任意の所与の関数呼び出しが、初期化又は無認可エンティティによるクラスの使用のようなソフトウェア設計原則に違反するか否かを決定するために、関数呼び出しのシーケンスを評価するよう構成されても良い。他の例では、テストエンジン210は、マルウェア攻撃を示し得る関数呼び出しシーケンスを評価するよう構成されても良い。更に別の例では、テストエンジン210は、関数呼び出しが決して実行できないような、関数呼び出しシーケンスが実行中に達し得ないか否かを評価するよう構成されても良い。
記号実行は、記号実行エンジン208により、記号実行ドライバ内で被検査コード中の変数に適用されても良い。所与の変数、分岐又は記号実行されるべき他の点に達するために、特定の命令シーケンスが実行される必要があっても良い。記号実行エンジン208は、このような命令シーケンス内の基本データ型に対して効率的且つ効果的に記号実行を実行しても良い。基本データ型は、整数、文字、浮動小数点、又はブールのような固有の及びプログラミング言語により定められたデータ型を有しても良い。
しかしながら、幾つかの例では、記号実行エンジン208は、このような命令シーケンス内のオブジェクト指向プログラミングコンポーネントの呼び出し又はインスタンスに対して容易又は効率的に記号実行を実行することができない。コンポーネントは、ユーザ定義オブジェクト、構造、クラス、又は該オブジェクト、構造若しくはクラスの関数を有しても良い。このようなコンポーネントは、プログラマにより定義され、固有ではなく、任意の数のサブコンポーネント若しくは隠れ分岐演算を含んでも良い。さらに、命令シーケンス内のオブジェクト指向プログラミングコンポーネントの可能な実行範囲の完全な理解は、その実際のデータ型がオブジェクト、クラス又は構造内で不明確な場合、直ちに明らかにならなくても良い。これは、例えば、記号実行エンジン208に直ちに明らかなブール又は整数の範囲又はデータ型と対照的である。
したがって、このようなコンポーネントの直接的な記号実行は予測できない。オブジェクトの呼び出し又はインスタンスに適用されるテストケース内の所定値の選択は、命令シーケンスを完全に探索しなくても良い。さらに、オブジェクト指向プログラミングコンポーネントの全ての可能な値のための完全の範囲のテストケースを単に生成することは、記号実行エンジンがオブジェクト指向プログラミングコンポーネントの内部動作を評価するメカニズムを有しないために、不可能であり得る。さらに、全ての可能な値について完全な範囲のテストケースを生成することは、プログラムの適法な実行の範囲内で不可能なオブジェクト値を探索する可能性がある。つまり、幾つかの値は、プログラムが生成され得る実際のケースを表現しない。このような値の探索は、検査技術者により結果として生じたテストスーツから手動で除去されなければならない偽陽性バグをトリガし得る。
したがって、記号実行エンジン208は、例えば、記号テストドライバ又はテストケースの内容を分析することにより、追加テストドライバを生成するか否かを決定するよう構成されても良い。一実施形態では、記号実行エンジン208は、出力されるテストケースを分析して、テストケースが、オブジェクト指向プログラミングコンポーネントの呼び出し又はインスタンスを有するシーケンスを含むか否かを決定するよう構成されても良い。含む場合、記号実行エンジン208は、テストドライバ生成部204により生成される新しいテストドライバのためのテストケース内のシーケンスを識別するよう構成されても良い。新しいテストドライバは、オブジェクト指向プログラミングコンポーネントの呼び出し又はインスタンスを含む命令シーケンスを記号実行するよう構成される。記号実行エンジン208は、例えばクラス又は関数呼び出しを含むこのような検出したシーケンスを、テストドライバ生成部204に伝達しても良い。
記号テストドライバ内の所与の分岐点に対し、記号実行エンジン208は、各分岐の実行を反映する2以上のテストケースを生成するよう構成されても良い。記号実行エンジン208は、新しいテストドライバを生成するのに可能な候補として、各々の結果として生じたテストケース内の演算シーケンスを評価しても良い。
オブジェクト指向プログラミングコンポーネントの呼び出し又はインスタンスに用いられる記号テストドライバ内の所与の変数に対して、テストケースは、該変数に割り当てられた値を有しても良い。記号実行エンジン208は、記号テストドライバ内のこのような変数又はテストケース内の割り当てられた値を識別するよう構成されても良い。このような識別に基づき、記号実行エンジン208は、テストドライバ生成部204に、変数が新しいテストドライバ内で記号実行されるべきであると指示するよう構成されても良い。一実施形態では、テストドライバ生成部204は、記号実行エンジン208から受信したテストケースに基づいて分析を実行しても良い。
オブジェクト指向プログラミングコンポーネントの呼び出し又はインスタンスのシーケンスに対して追加テストドライバを生成することにより、記号実行エンジン208は、該オブジェクト指向プログラミングコンポーネントの実行を完全に探索しても良い。
テストドライバ生成部204は、記号実行エンジン208により送信された決定に基づき又は自身の同様の分析に基づき、追加テストドライバを生成するよう構成されても良い。記号テストドライバ生成部206は、テストドライバを記号テストドライバに変換し、それらを記号実行エンジン208に送信するよう構成されても良い。記号実行エンジン208は、新しい記号テストドライバを順々に記号実行しても良い。
図3は、新しいテストドライバが生成されるオブジェクト、クラス、データ構造又は関数の呼び出し又はインスタンスの説明である。コードシーケンス302は、オブジェクト指向プログラミングコンポーネント304の任意の数又は種類の呼び出し又はインスタンスを有しても良い。一実施形態では、コードシーケンス302は、オブジェクトに含まれても良い。別の実施形態では、コンポーネント304は、オブジェクトにより実施されても良い。したがって、呼び出しは、オブジェクト間で行われても良い。コードシーケンス302及びコンポーネント304を含むオブジェクトは、例えば、ソフトウェアモジュールの異なる部分に又は異なるソフトウェアモジュールに含まれても良い。
オブジェクト指向プログラミングコンポーネントの任意の適切な種類又は数の呼び出し又はインスタンスが、新しいテストドライバを生成するために用いられても良い。例えば、コードシーケンス302は、Bがクラスwidgetのオブジェクトの新しく生成されるインスタンスであるとすると「B=new widget()」のような命令で、コンポーネント304のインスタンスを生成する演算を有しても良い。別の例では、コードシーケンス302は、「function1()」がクラスwidgetの関数であり、Bがクラスwidgetのインスタンスであるとすると「B.function1())」のような命令で、コンポーネント304の関数にアクセスする演算を有しても良い。更に別の例では、コードシーケンス302は、「dynamic_structure」がクラスwidgetの整数配列であり、Bがインスタンスであり、配列が集合[0,1,2]を有するとすると、「x=B.dynamic_structure[0]」のような命令で、コンポーネント304のデータ構造にアクセスする演算を有しても良い。
任意のこのような呼び出しは、コンポーネント304に属すると識別されると、コンポーネント304を記号実行するためにテストドライバを生成するために用いられても良い。このようなテストドライバは、他の命令と共に、コードシーケンス304からの命令を有しても良い。他の命令は、例えば、固有型演算、コンポーネント304の他の呼び出し、又は他のオブジェクト指向プログラミングコンポーネントの呼び出しを有しても良い。
図4は、システム200内で記号テストドライバを反復生成させる被検査コードの一例である。NetworkSetupと称されるクラス402、及びRouterと称される構造404は、被検査コードと共に含まれても良い。クラス402及び構造404は、両方ともオブジェクト指向プログラミングコンポーネントであっても良い。クラス402は、(「if(b)」のような)固有データ型演算、(「Routerr1()」、「r1.addConnection(con1)」又は「“r1.addConnection(con2)”」のような)構造404の呼び出し、及び(「Router r1()」のような)Routerのインスタンスの生成を含む種々の命令を有しても良い。クラス402は、構造404のこのような複数の呼び出しを有しても良い。
図5は、システム200の動作例の説明である。例示目的のために、システム200は、図4のクラス402を用いても良い。
クラス402は、テストドライバ生成部204により受信されても良い。クラス402を評価するために、テストドライバ生成部204は、初期テストドライバ516を生成しても良い。テストドライバ516は、クラス402のNetworkSetupを呼び出すインスタンス及びNetworkSetupに渡すべきブール変数を生成するインスタンスを有しても良い。テストドライバ生成部402は、テストドライバ516を記号テストドライバ生成部206へ送信しても良い。
記号テストドライバ生成部206は、テストドライバ516を記号テストドライバ518に変換しても良い。記号テストドライバ518は、変数xが記号テストされるべきであると示す命令「make_symbolic(x)」を有しても良い。記号テストドライバ生成部206は、記号テストドライバ518を記号実行エンジン208へ送信しても良い。
記号実行エンジン208は、記号テストドライバ518を記号実行しても良い。このような記号実行は、記号テストドライバ518内で指定された変数xに基づき実行されても良い。
記号実行エンジン208は、NetworkSetup関数の呼び出しを通じて、クラス402のインスタンスの生成を評価しても良い。NetworkSetupのコードでは、「if(b)」は条件付き演算である。ここで、bは、ブールであり、記号実行されるべき変数xに対応する。次に、記号実行エンジン208は、ブールから、1つはbが真であり、1つはbが偽である2つの可能な分岐が存在すると決定しても良い。したがって、記号実行エンジン208は、可能な分岐の各々を反映する2つの命令シーケンスを生成しても良い。記号実行エンジン208は、「偽」命令シーケンスをテストケース520に置き、「真」命令シーケンスをテストケース522に置いても良い。さらに、記号実行エンジン208は、命令シーケンスのパラメータにテスト変数値を設けても良い。例えば、2つのテストケース520、522の中で「Router r1」の呼び出しは、1のパラメータを有しても良い。記号実行エンジン208は、テストケース520、522を実行のためにテストエンジン210へ送信しても良い。
記号実行エンジン208は、テストケース520、522を評価し、その中に含まれる命令シーケンスに基づきテストドライバを生成するか否かを決定しても良い。テストケース520、522のこのような評価は、直列に又は別個に行われても良い。記号実行エンジン208は、各テストケース520、522の中で、クラス402から構造404への呼び出しが行われていると決定しても良い。さらに、記号実行エンジン208は、各テストケース520、522の中で、関数呼び出し「Router r1(1)」に対して1の変数値が設定されたと決定しても良い。したがって、記号実行エンジン208は、テストケース520、522を実行のためにテストドライバ生成部204へ送信させても良い。さらに、「Router r1()」のパラメータのための変数は、記号実行されるよう設計されても良い。
図6は、新しいシンボルテストドライバを生成するためのシステム200の更なる動作例を示す。テストドライバ生成部204及び記号テスト生成部206は、テストケース520、522に基づき、新しいテストドライバ及び記号テストドライバを生成しても良い。
テストドライバ生成部204は、テストケース520、522、クラス402及び構造404を用いて、記号テストドライバ生成部206へ送信されるべきテストドライバを生成しても良い。記号を生成すべき変数を決定するために、記号テストドライバ生成部206は、例えば、記号実行エンジン208により監視される情報を当てにして、アクセスされた構造404内の分岐を決定し、又はテストケース520、522内で用いる変数を決定しても良い。記号テストドライバ生成部206は、1又は複数の変数を記号実行し及び(テストケース520に基づき)記号テストドライバ624を生成し(テストケース520に基づき)記号テストドライバ626を生成するようテストドライバを変更しても良い。記号テストドライバ624、626の各々は、テストケース520、522の各々に含まれる命令シーケンスに加えて、可変整数のインスタンス及び該可変整数記号を生成する命令を有しても良い。
記号実行エンジン208は、記号テストドライバ624、626の各々を記号実行しても良い。記号実行エンジン208は、記号テストドライバ624、626の各々について1又は複数のテストケースを生成しても良い。このようなテストケースは、例えば、記号変数のために選択された可能な値を反映しても良い。例えば、記号実行エンジン208は、テストドライバ626に基づきテストケース628、630を生成しても良い。テストケース628は、記号実行される整数変数が1に等しいと仮定する命令シーケンスを有しても良い。テストケース630は、記号実行される整数変数が2に等しいと仮定する命令シーケンスを有しても良い。同様に、記号実行エンジン208は、記号テストドライバ624に基づきテストケース(図示しない)を生成しても良い。
テストケース628、630は、実行及び評価のためにテストエンジン210へ送信されても良い。境界条件に達しない場合、記号実行エンジン208は、テストケース628、630のような新たに生成したテストケースを検査し、それらの内容が記号テストドライバの追加生成の基礎を提供するか否かを決定しても良い。追加生成の基礎を提供する場合、テストケースは、テストドライバ生成部204へ送信されても良い。
システム200は、被検査コード104が完全に記号実行されるまで、又は実行境界条件が検出されるまで、この処理を繰り返しても良い。
図7は、オブジェクト指向言語のためのシンボルテストドライバの反復生成のための例示的な方法700の説明である。ステップ705で、被検査コードが決定されても良い。被検査コードは、評価されるべきソフトウェアの全部又は一部を有しても良い。さらに、被検査コードは、オブジェクトのインスタンスの初期化として生成されても良い。被検査コードは、方法700の別のインスタンスの実行から受信される命令シーケンスを有しても良い。
ステップ710で、テストドライバが、被検査コードから生成されても良い。テストドライバは、被検査コードにより実行されるべき及び評価されるべきシーケンス又は演算を有しても良い。テストドライバは、評価のために被検査コードを初期化しても良い。
ステップ715で、記号テストドライバは、テストドライバから生成されても良い。記号テストドライバは、被検査コードが記号実行されるべき変数の指標を有しても良い。ステップ720で、被検査コードは、識別された変数に関して記号実行されても良い。記号実行は、被検査コードの制約、分岐点、又は他の抽象概念を識別しても良い。ステップ725で、記号実行の結果は、1又は複数のテストケースの生成を有しても良い。テストケースの数は、例えば、被検査コード内の分岐数、又は識別した変数の値の決定した可能な範囲を有しても良い。テストケースは、このような分岐の各々及びこのような可能な値の各々について生成されても良い。
ステップ730で、テストケースが実行されても良く、テストケースは任意の制約に違反するか否かが決定されても良い。違反する場合、ステップ740で、被検査コードは、エラーを有すると決定されても良い。違反しない場合、ステップ735で、被検査コードは、少なくともここまではテストケースに関して、有効化されても良い。
ステップ745で、境界条件に達したか否かが決定されても良い。このような境界条件は、例えば、テストケースの範囲又は数及び検査範囲、反復数、記号実行の深さ、又は時間により定められても良い。境界条件に達した場合、ステップ750で、方法は終了しても良い。
境界条件に達しない場合、ステップ755で、テストケースは別のオブジェクト又は同様のコンポーネントの呼び出しのシーケンスを有するか否かが決定されても良い。このようは呼び出しは、オブジェクトのインスタンス、オブジェクトの関数のアクセス、又はオブジェクトのデータ構造へのアクセスを有しても良い。有する場合、該呼び出しに基づき、追加テストドライバが生成されても良い。追加テストドライバは、オブジェクトを呼び出す命令シーケンスを有しても良い。次に、方法700は、ステップ715で開始する繰り返しに進み、テストドライバを評価する。有しない場合、方法700はステップ730に戻り、記号テストドライバの記号実行を継続しても良い。
図7は、例示的な方法700に関して行われる特定数のステップを示すが、方法700は、図7に示したステップより多くの又は少ないステップで実行されても良い。さらに、図7は、方法700に関して行われる特定順序のステップを示すが、方法700を構成するステップは、任意の適切な順序で達成されても良い。さらに、700の種々のステップは、互いに並列に実行されても良い。例えば、ステップ755でテストケースはオブジェクトの呼び出しシーケンスを有すると決定した後、方法700は、ステップ760に進み、並行してステップ720の実行に戻っても良い。
方法700は、図1−6のシステム又は任意の他のシステム、ネットワーク又は方法700を実施するよう動作可能な装置を用いて実装されても良い。特定の実施形態では、方法700は、部分的に又は全部をコンピュータ可読媒体に具現化されるソフトウェアで実施されてもよい。本開示の目的のために、コンピュータ可読媒体は、データ及び/又は命令をある期間の間保持し得る任意の手段又は手段の集合を包含する。コンピュータ可読媒体は、直接アクセス記憶装置(例えば、ハードディスクドライブ又はフロッピー(登録商標)ディスク)、順次アクセス記憶装置(例えば、テープディスクドライブ)、コンパクトディスク、CD−ROM、DVD、RAM(random access memory)、ROM(read-only memory)、EEPROM(electrically erasable programmable read-only memory)、及び/又はフラッシュメモリのような記憶媒体、並びに有線、光ファイバ及び他の有形、非一時的媒体のような通信媒体、及び/又はこれらの任意の組合せを有してもよいが、これらに限定されない。
本開示は詳細に記載されたが、種々の変更、置換及び修正が本開示の精神及び範囲から逸脱することなく行われうることが理解されるべきである。
100 システム
102 電子装置
104 被検査コード
106 テストモジュール
108 結果
110 プロセッサ
112 メモリ
200 テストモジュール
202 ソースファイル
204 テストドライバ生成部
206 記号テストドライバ生成部
208 記号実行エンジン
210 テストエンジン
214 結果
520、522 テストケース

Claims (20)

  1. 1又は複数のコンピューティング装置により、
    評価されるべきコンピューティング装置に対する命令を決定するステップ、
    評価されるべき1又は複数の前記命令及び該命令の一部に対応する記号変数の指示を有する第1の記号テストドライバを生成するステップ、
    前記記号変数に関して前記命令を記号実行するステップ、
    前記記号実行の結果から、前記記号変数の所与の値で前記命令を実行する1又は複数のコマンドを有するテストケースを決定するステップ、
    前記コマンド内のオブジェクト指向プログラミングコンポーネントの1又は複数の呼び出しを決定するステップ、
    前記の決定した呼び出しに基づき、前記決定した呼び出しを有する新しい記号テストドライバを生成するステップ、
    次に、前記新しい記号テストドライバを記号実行するステップ、
    を有する方法。
  2. 境界条件が決定されるまで、前に生成した記号テストドライバの記号実行に基づき、新しい記号テストドライバの生成を繰り返すステップ、
    を更に有する請求項1に記載の方法。
  3. 評価されるべきコンピューティング装置に対する命令を決定するステップは、オブジェクト指向プログラミングクラスのインスタンスを生成するステップであって、評価されるべき前記命令は前記クラスに含まれる、ステップを有する、請求項1に記載の方法。
  4. 前記テストケース内で指定された値に基づき、新しい記号変数を選択するステップ、
    を更に有する請求項1に記載の方法。
  5. 前記オブジェクト指向プログラミングコンポーネントの1又は複数の呼び出しは、前記オブジェクト指向プログラミングコンポーネントのインスタンスの生成を有する、請求項1に記載の方法。
  6. 前記オブジェクト指向プログラミングコンポーネントの1又は複数の呼び出しは、前記オブジェクト指向プログラミングコンポーネントの関数の呼び出しを有する、請求項1に記載の方法。
  7. 前記オブジェクト指向プログラミングコンポーネントの1又は複数の呼び出しは、前記オブジェクト指向プログラミングコンポーネントのデータ構造のアクセスを有する、請求項1に記載の方法。
  8. コンピュータ実行可能命令を有するコンピュータ可読媒体、
    前記コンピュータ可読媒体に結合され、前記命令を読み出し実行するよう動作する1又は複数のプロセッサ、
    を有し、前記1又は複数のプロセッサは、前記命令を実行すると、
    評価されるべきコンピューティング装置に対する命令を決定するステップ、
    評価されるべき1又は複数の前記命令及び該命令の一部に対応する記号変数の指示を有する第1の記号テストドライバを生成するステップ、
    前記記号変数に関して前記命令を記号実行するステップ、
    前記記号実行の結果から、前記記号変数の所与の値で前記命令を実行する1又は複数のコマンドを有するテストケースを決定するステップ、
    前記コマンド内のオブジェクト指向プログラミングコンポーネントの1又は複数の呼び出しを決定するステップ、
    前記の決定した呼び出しに基づき、前記決定した呼び出しを有する新しい記号テストドライバを生成するステップ、
    次に、前記新しい記号テストドライバを記号実行するステップ、
    を実行する、システム。
  9. 前記1又は複数のプロセッサは、境界条件が決定されるまで、前に生成した記号テストドライバの記号実行に基づき、新しい記号テストドライバの生成を繰り返すステップ、
    を更に実行する、請求項8に記載のシステム。
  10. 評価されるべきコンピューティング装置に対する命令を決定するステップは、オブジェクト指向プログラミングクラスのインスタンスを生成するステップであって、評価されるべき前記命令は前記クラスに含まれる、ステップを有する、請求項8に記載のシステム。
  11. 前記1又は複数のプロセッサは、前記テストケース内で指定された値に基づき、新しい記号変数を選択するステップ、を更に実行する、請求項8に記載のシステム。
  12. 前記オブジェクト指向プログラミングコンポーネントの1又は複数の呼び出しは、前記オブジェクト指向プログラミングコンポーネントのインスタンスの生成を有する、請求項8に記載のシステム。
  13. 前記オブジェクト指向プログラミングコンポーネントの1又は複数の呼び出しは、前記オブジェクト指向プログラミングコンポーネントの関数の呼び出しを有する、請求項8に記載のシステム。
  14. 前記オブジェクト指向プログラミングコンポーネントの1又は複数の呼び出しは、前記オブジェクト指向プログラミングコンポーネントのデータ構造のアクセスを有する、請求項8に記載のシステム。
  15. コンピュータ可読媒体、
    前記コンピュータ可読媒体に保持されるコンピュータ実行可能命令、
    を有し、前記命令はプロセッサにより読み出し可能であり、前記命令は読み出され実行されると、前記プロセッサに、
    評価されるべきコンピューティング装置に対する命令を決定するステップ、
    評価されるべき1又は複数の前記命令及び該命令の一部に対応する記号変数の指示を有する第1の記号テストドライバを生成するステップ、
    前記記号変数に関して前記命令を記号実行するステップ、
    前記記号実行の結果から、前記記号変数の所与の値で前記命令を実行する1又は複数のコマンドを有するテストケースを決定するステップ、
    前記コマンド内のオブジェクト指向プログラミングコンポーネントの1又は複数の呼び出しを決定するステップ、
    前記の決定した呼び出しに基づき、前記決定した呼び出しを有する新しい記号テストドライバを生成するステップ、
    次に、前記新しい記号テストドライバを記号実行するステップ、
    を実行させる、製品。
  16. 前記プロセッサに、境界条件が決定されるまで、前に生成した記号テストドライバの記号実行に基づき、新しい記号テストドライバの生成を繰り返すステップ、
    を更に実行させる、請求項15に記載の製品。
  17. 評価されるべきコンピューティング装置に対する命令を決定するステップは、オブジェクト指向プログラミングクラスのインスタンスを生成するステップであって、評価されるべき前記命令は前記クラスに含まれる、ステップを有する、請求項15に記載の製品。
  18. 前記プロセッサに、前記テストケース内で指定された値に基づき、新しい記号変数を選択するステップ、を更に実行させる、請求項15に記載の製品。
  19. 前記オブジェクト指向プログラミングコンポーネントの1又は複数の呼び出しは、前記オブジェクト指向プログラミングコンポーネントのインスタンスの生成を有する、請求項15に記載の製品。
  20. 前記オブジェクト指向プログラミングコンポーネントの1又は複数の呼び出しは、前記オブジェクト指向プログラミングコンポーネントの関数の呼び出しを有する、請求項15に記載の製品。
JP2013146221A 2012-07-16 2013-07-12 オブジェクト指向言語のための記号テストドライバの反復生成 Active JP6142705B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/549,785 US9058427B2 (en) 2012-07-16 2012-07-16 Iterative generation of symbolic test drivers for object-oriented languages
US13/549,785 2012-07-16

Publications (2)

Publication Number Publication Date
JP2014021982A true JP2014021982A (ja) 2014-02-03
JP6142705B2 JP6142705B2 (ja) 2017-06-07

Family

ID=49915137

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013146221A Active JP6142705B2 (ja) 2012-07-16 2013-07-12 オブジェクト指向言語のための記号テストドライバの反復生成

Country Status (2)

Country Link
US (1) US9058427B2 (ja)
JP (1) JP6142705B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015219906A (ja) * 2014-05-15 2015-12-07 富士通株式会社 ソフトウェア確認方法およびプロセッサ

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9134961B1 (en) * 2011-05-08 2015-09-15 Panaya Ltd. Selecting a test based on connections between clusters of configuration changes and clusters of test scenario runs
US9081892B2 (en) * 2013-03-14 2015-07-14 Fujitsu Limited Software verification
US20140310690A1 (en) * 2013-04-15 2014-10-16 Futurewei Technologies, Inc. System and Method for Generating Automated Test Cases for Command Line Based Applications
US10176086B2 (en) * 2016-10-03 2019-01-08 Fujitsu Limited Event-driven software test sequence determination
CN111611152B (zh) * 2019-02-25 2023-08-04 北京嘀嘀无限科技发展有限公司 测试用例生成方法、装置、电子设备及可读存储介质
US11115137B2 (en) * 2019-08-02 2021-09-07 Samsung Electronics Co., Ltd. Method and electronic testing device for determining optimal test case for testing user equipment

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100242029A1 (en) * 2009-03-19 2010-09-23 Fujitsu Limited Environment Data Refinement Based on Static Analysis and Symbolic Execution
JP2011248887A (ja) * 2010-05-24 2011-12-08 Fujitsu Ltd ソフトウェアモジュールのテスト方法及びシステム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784553A (en) * 1996-01-16 1998-07-21 Parasoft Corporation Method and system for generating a computer program test suite using dynamic symbolic execution of JAVA programs
GB0100676D0 (en) * 2001-01-11 2001-02-21 Ibm A method of testing a computer program translated into a national language
US7266808B2 (en) * 2001-08-10 2007-09-04 Parasoft Corporation Method and system for dynamically invoking and/or checking conditions of a computer test program
US20060253739A1 (en) * 2005-05-03 2006-11-09 Godefroid Patrice I Method and apparatus for performing unit testing of software modules with use of directed automated random testing
US8046746B2 (en) * 2005-08-04 2011-10-25 Microsoft Corporation Symbolic execution of object oriented programs with axiomatic summaries
US8281286B2 (en) * 2006-03-31 2012-10-02 Cisco Technology, Inc. Methods and systems for automated testing of applications using an application independent GUI map
US20090089759A1 (en) * 2007-10-02 2009-04-02 Fujitsu Limited System and Method for Providing Symbolic Execution Engine for Validating Web Applications
US8423879B2 (en) * 2008-05-14 2013-04-16 Honeywell International Inc. Method and apparatus for test generation from hybrid diagrams with combined data flow and statechart notation
US8359576B2 (en) * 2008-11-14 2013-01-22 Fujitsu Limited Using symbolic execution to check global temporal requirements in an application
US8776026B2 (en) * 2010-10-01 2014-07-08 Ecole Polytechnique Federale De Lausanne System and method for in-vivo multi-path analysis of binary software
US8595701B2 (en) * 2011-02-04 2013-11-26 Fujitsu Limited Symbolic execution and test generation for GPU programs
US8666723B2 (en) * 2011-08-31 2014-03-04 Oregon State Board Of Higher Education On Behalf Of Portland State University System and methods for generating and managing a virtual device
US20130091495A1 (en) * 2011-10-06 2013-04-11 Nec Laboratories America, Inc. Feedback-directed random class unit test generation using symbolic execution
GB2502099A (en) * 2012-05-16 2013-11-20 Ibm Performance testing of web components using symbolic identities
US9038032B2 (en) * 2012-05-25 2015-05-19 Fujitsu Limited Symbolic execution and automatic test case generation for JavaScript programs

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100242029A1 (en) * 2009-03-19 2010-09-23 Fujitsu Limited Environment Data Refinement Based on Static Analysis and Symbolic Execution
JP2011248887A (ja) * 2010-05-24 2011-12-08 Fujitsu Ltd ソフトウェアモジュールのテスト方法及びシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015219906A (ja) * 2014-05-15 2015-12-07 富士通株式会社 ソフトウェア確認方法およびプロセッサ

Also Published As

Publication number Publication date
US20140019939A1 (en) 2014-01-16
US9058427B2 (en) 2015-06-16
JP6142705B2 (ja) 2017-06-07

Similar Documents

Publication Publication Date Title
JP6142705B2 (ja) オブジェクト指向言語のための記号テストドライバの反復生成
US8561021B2 (en) Test code qualitative evaluation
US8756460B2 (en) Test selection based on an N-wise combinations coverage
US9645800B2 (en) System and method for facilitating static analysis of software applications
CN105389262B (zh) 一种针对界面测试生成测试建议的方法和装置
JP6904043B2 (ja) 未知のプログラムバイナリのための入力発見
US9405906B1 (en) System and method for enhancing static analysis of software applications
WO2015130675A2 (en) Apparatus and method for testing computer program implementation against a design model
US20140298297A1 (en) Automatic feature-driven testing and quality checking of applications
US20180032735A1 (en) System and method for enhancing static analysis of software applications
Usman et al. TEGDroid: Test case generation approach for android apps considering context and GUI events
KR20210045122A (ko) 기호 실행을 사용하는 소프트웨어 테스트 입력 생성 장치 및 방법
US11561888B2 (en) Initialization sequences for automatic software test generation
Paydar et al. An experimental study on flakiness and fragility of randoop regression test suites
US10169217B2 (en) System and method for test generation from software specification models that contain nonlinear arithmetic constraints over real number ranges
JP2012181666A (ja) 情報処理装置、情報処理方法及び情報処理プログラム
US9710360B2 (en) Optimizing error parsing in an integrated development environment
US9489284B2 (en) Debugging method and computer program product
US10776255B1 (en) Automatic verification of optimization of high level constructs using test vectors
US8639490B2 (en) Concretization of abstracted traces
US20170123959A1 (en) Optimized instrumentation based on functional coverage
Rajarathinam et al. Test suite prioritisation using trace events technique
Padmanabhuni et al. Light-Weight rule-based test case generation for detecting buffer overflow vulnerabilities
US20220261337A1 (en) Validating inter-partition communication in microservice decomposition
CN111566625A (zh) 测试用例生成装置、测试用例生成方法和测试用例生成程序

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160405

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170221

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170316

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: 20170411

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170424

R150 Certificate of patent or registration of utility model

Ref document number: 6142705

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150