JP2017041196A - スタブ化対象判定装置、方法、及びプログラム - Google Patents

スタブ化対象判定装置、方法、及びプログラム Download PDF

Info

Publication number
JP2017041196A
JP2017041196A JP2015164051A JP2015164051A JP2017041196A JP 2017041196 A JP2017041196 A JP 2017041196A JP 2015164051 A JP2015164051 A JP 2015164051A JP 2015164051 A JP2015164051 A JP 2015164051A JP 2017041196 A JP2017041196 A JP 2017041196A
Authority
JP
Japan
Prior art keywords
function
test target
target program
program
pair
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
JP2015164051A
Other languages
English (en)
Other versions
JP6512032B2 (ja
Inventor
スッパシット モンプラターンチャイ
Monpratarnchai Supasit
スッパシット モンプラターンチャイ
忠弘 上原
Tadahiro Uehara
忠弘 上原
英生 谷田
Hideo Tanida
英生 谷田
朝子 片山
Asako Katayama
朝子 片山
裕介 佐々木
Yusuke Sasaki
裕介 佐々木
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
Priority to JP2015164051A priority Critical patent/JP6512032B2/ja
Priority to US15/172,334 priority patent/US10055341B2/en
Publication of JP2017041196A publication Critical patent/JP2017041196A/ja
Application granted granted Critical
Publication of JP6512032B2 publication Critical patent/JP6512032B2/ja
Expired - Fee Related 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

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

【課題】テストケースの網羅性を低下させることなく、効率的にテストケースを生成することができるように、スタブ化対象の関数を判定する。【解決手段】抽出部11が、テスト対象のプログラムと、該テスト対象のプログラムから呼び出される関数との関係を示す関係情報を抽出し、判定部12が、抽出部11により抽出された関係情報に基づいて、テスト対象のプログラムから呼び出される関数のうち、テスト対象のプログラム内でアクセスされるユーザ定義型のインスタンスを返却する関数、及びテスト対象のプログラム内の条件分岐の条件として使用される値を返却する関数を、スタブ化の対象から除外する関数として判定する。【選択図】図1

Description

開示の技術は、スタブ化対象判定装置、スタブ化対象判定方法、及びスタブ化対象判定プログラムに関する。
シンボリック実行技術によるプログラムのテスト技術において、テストケースの生成の際に、テスト環境の構築及び設定を行うドライバ、及びテスト対象のプログラムが呼び出すプログラム部品のダミー実装であるスタブを準備することが行われている。
例えば、テスト対象となっているモジュールと、該モジュールから呼び出される依存モジュールと、該依存モジュールが行う手続きの振る舞いを代行するスタブとを、それぞれの記述内容に従って実行するモジュール実行手段を備えたシステムが提案されている。このモジュール実行手段は、テスト対象モジュールから依存モジュールへの呼び出しを検出し、呼び出しの処理を実行するモジュールとして依存モジュールかスタブかを所定の条件に従って決定し、決定に応じて当該呼び出しの処理を実行させる処理委譲手段を含む。
また、テストパタン表示機能と、テストパタンより関数の呼び出し関係を抽出する機能と、スタブと実関数の使い分け既決定関数をチェックする機能とを有するシステムが提案されている。このシステムは、さらに、実関数に呼び出された関数でスタブと実関数の使い分け未決定関数を提示し、テスト環境の設定者が決定した内容を保存する機能を有する。また、スタブと実関数の使い分けに基づき、テスト実行可能な状態にするのに必要な情報を作成するための機能を有する。
また、対象プログラムと対象プログラム上のパスの情報とを入力し、対象プログラムから呼び出される外部プログラムによって更新される変数値のパス情報に即した変化を表したスタブプログラムを生成する情報処理装置が提案されている。この装置では、前記対象プログラムにおける外部プログラムへの呼出しを前記スタブプログラムへの呼出しに置換したテスト用対象プログラムを生成し、パス情報の初期値を用いてテスト用対象プログラムを呼び出すドライバプログラムを生成する。
特開2009−129133号公報 特開平09−265414号公報 特開2012−181666号公報
シンボリック実行技術によるプログラムのテスト技術において、テストケースを生成するためのドライバは、テスト対象のプログラムから直接生成することができる。一方、スタブについては、テスト対象のプログラムから呼び出される関数の各々について、スタブ化の対象の関数か否かを判定する必要がある。しかし、テスト対象のプログラムから呼び出される関数には、その構造を解析することが困難な関数もあり、スタブ化対象の関数か否かを適切に判定できない場合がある。このようなスタブ化対象の関数か否かの判定の困難性に鑑みて、単純に、呼び出される関数のスタブ化を行わないとすることもできるが、この場合、テストケース生成の際に、パスが爆発的に増加する可能性がある。逆に、呼び出される関数を全てスタブ化の対象とすると、生成されるテストケースの網羅性が低下する可能性がある。
開示の技術は、一つの側面として、テストケースの網羅性を低下させることなく、効率的にテストケースを生成することができるように、スタブ化対象の関数を判定することを目的とする。
開示の技術は、一つの態様として、テスト対象のプログラムと、該テスト対象のプログラムから呼び出される関数との関係を示す関係情報を抽出する抽出部を備える。また、開示の技術は、前記抽出部により抽出された前記関係情報に基づいて、前記テスト対象のプログラムから呼び出される関数のうち、スタブ化の対象から除外する関数を判定する判定部を備える。判定部は、前記テスト対象のプログラム内でアクセスされるユーザ定義型のインスタンスを返却する関数、及び前記テスト対象のプログラム内の条件分岐の条件として使用される値を返却する関数を、スタブ化の対象から除外する関数として判定する。
開示の技術は、一つの側面として、テストケースの網羅性を低下させることなく、効率的にテストケースを生成することができるように、スタブ化対象の関数を判定することができる、という効果を有する。
本実施形態に係るスタブ化対象判定装置の概略構成を示す機能ブロック図である。 シンボリック実行におけるシンボリックドライバ及びスタブの作成を説明するための図である。 テスト対象プログラムと、シンボリックドライバと、スタブとの呼び出し関係の一例を示す図である。 関数の呼び出しを含む場合における実行パスを説明するための図である。 テスト対象プログラムから直接呼び出される関数を全てスタブ化する方針を説明するための図である。 テスト対象プログラムから直接呼び出される関数を全てスタブ化する方針の問題点を説明するための図である。 本実施形態に係るスタブ化対象判定装置として機能するコンピュータの概略構成を示すブロック図である。 本実施形態におけるスタブ化対象判定処理の一例を示すフローチャートである。 テスト対象メソッド及びテスト対象メソッドから呼び出されるメソッドの一例を示す図である。 テスト対象メソッドの一例を示す図である。 VML集合に追加するペアの一例を示す図である。 探索された接続ペアの系列の一例を示す図である。 探索された接続ペアの系列をグラフで表現した一例を示す図である。 エッジで接続されたノードを順次辿った場合のノードに対応する要素を羅列した一例を示す図である。 探索された接続ペアの系列を表現したグラフにおいて、探索された接続ペアの系列を辿った一例を示す図である。 新たに設定されたテスト対象メソッドの一例を示す図である。 新たに設定されたテスト対象メソッドについて、VML集合に追加するペアの一例を示す図である。 新たに設定されたテスト対象メソッドについて探索された接続ペアの系列の一例を示す図である。 新たに設定されたテスト対象メソッドについて探索された接続ペアの系列をグラフで表現した一例を示す図である。
まず、実施形態の詳細を説明する前に、シンボリック実行技術を用いたプログラムの単体テストの手順について説明する。
図2に示すように、まず、シンボリックドライバ及びスタブを作成する(S100)。シンボリックドライバとは、テスト対象プログラムの実行環境を構築及び設定し、テスト対象プログラムを起動するプログラムである。また、スタブとは、テスト対象プログラムが呼び出すプログラム部品のダミー実装である。テスト対象プログラムから呼び出されるプログラム部品は、テスト対象プログラムのテスト段階では、実装途中であったり、そのプログラム部品のテストが未実施であったりする場合がある。また、プログラム部品が、ファイルやデータベースなどへの外部アクセスを実行するものである場合もある。このような理由で、テスト対象プログラムから呼び出されるプログラム部品を利用できない場合には、実際のプログラム部品の代わりにスタブを用いる。
次に、作成したシンボリックドライバ及びスタブと、テスト対象プログラム群とをシンボリック実行エンジン200に入力し、シンボリック実行エンジン200でテストケースが生成される(S101)。そして、生成されたテストケースを使って、単体テストツール201によりテストを実行することにより、テスト対象プログラムについてのテスト結果が得られる(S103)。
図3に、テスト対象プログラムと、シンボリックドライバと、スタブとの呼び出し関係の一例を示す。図3に示すように、シンボリックドライバによりテスト対象プログラムが実行される。そして、テスト対象プログラムからの関数の呼び出しでは、作成されたスタブが呼び出され、スタブからテスト対象プログラムに値が返却される。例えば、テスト対象プログラムにおける条件分岐の分岐先が、スタブからの返却値によって異なる場合には、あらゆる分岐パターンに対応したテストケースを生成可能にするため、作成するスタブにバリエーションを持たせる場合がある。しかし、このようなスタブの作成は人手により行われるため、大きな作業コストを要する。
そこで、上記のようなスタブ作成のコスト削減のために、簡単な方法として、テスト対象プログラムから呼び出される関数のいずれもスタブ化しないという方針が考えられる。しかし、この方針では、呼び出される関数が多い場合や、プログラム内の条件分岐が多い場合に、シンボリック実行時にパスが爆発的に増加してしまう可能性がある。パスの爆発的な増加は、シンボリック実行の未終了や実行失敗を招く。
例えば、図4に示すように、関数「subfunc」の呼び出しを含むテスト対象プログラムにおいて、subfuncを呼び出す前の実行にはm通りのパスが存在し、subfuncを呼び出した後の実行にはn通りのパスが存在するとする。また、呼び出されたsubfunc内には、p通りのパスが存在し、subfuncの返却値はテスト対象プログラムの実行に影響を与えないものとする。
subfuncをスタブ化する場合は、subfunc内で実行されるパスを網羅する必要がないため、テスト対象プログラムで呼び出す関数も含めた全体の実行パスは、合計でm×n通りとなる。一方、上述したように、いずれの関数もスタブ化しないという方針に従って、subfuncをスタブ化しない場合は、subfunc内で実行されるパスも網羅する必要があるため、テスト対象プログラムの全体の実行パスは、合計でm×p×n通りとなる。すなわち、subfuncをスタブ化しない場合には、スタブ化する場合のp倍のパスを網羅する必要があり、特に、m、n、及びpの各々が大きい場合には、パスが爆発的に増加してしまう。したがって、効率的にテストを実行するためには、subfuncはスタブ化した方がよい。
いずれの関数もスタブ化しないという方針とは逆に、テスト対象プログラムから直接呼び出される関数が外部関数であると考え、図5に示すように、テスト対象プログラムから直接呼び出される関数を全てスタブ化する方針が考えられる。また、図5に示すように、テスト対象プログラムから直接呼び出される関数をスタブ化することにより、テスト対象プログラムから間接的に呼び出される関数については、スタブ化はされないが、テストの際に実行されなくなる。なお、テスト対象プログラムから間接的に呼び出される関数とは、スタブ化対象の関数から呼び出される関数、及びその関数から呼び出されるそれ以降の関数である。
呼び出される関数の全てをスタブ化する方針では、以下のような問題がある。例えば、図6に示すように、JavaScript(登録商標)で記述されたメソッドを、テスト対象メソッドとする場合を考える。図6の例では、テスト対象メソッドは、行2で、method1を呼び出し、method1が、ユーザ定義オブジェクトを返却値として返し、行3で、その返却値を利用するメソッドとなっている。
ここで、メソッドの返却値がユーザ定義オブジェクトタイプとなる場合に、そのオブジェクトタイプの動的解析は困難であるため、このメソッドをスタブ化する場合には、スタブのバリエーションを作成せずに、nullを返却するスタブを作成する。したがって、図6のテスト対象メソッドで呼び出されるmethod1をスタブ化した場合、行2で返却される値は「null」となる。この場合、スタブから返却された値を行3で利用しようとしても、nullで返却されたオブジェクトのメンバーや内部メソッドにアクセスすることができず、行3でテストの実行にエラーが発生する。したがって、テスト対象メソッドの全8行のうち、2行(1行目及び2行目)だけ実行されて、それ以降の6行が実行されない結果となるため、テスト網羅性(コードカバレッジ)は、2/8*100=25%と、低いものとなってしまう。
上記のような、全ての関数をスタブ化しない方針、及び全ての関数をスタブ化する方針の各々の課題を考慮して、以下で詳述する実施形態では、テスト対象プログラム内の処理に影響を与えるような関数を探索及び特定する。そして、特定した関数を除外した残りの関数をスタブ化対象の関数として判定する。テスト対象プログラム内の処理に影響を与える関数としては、テスト対象プログラム内でアクセスされるユーザ定義型のインスタンスを返却する関数、及びテスト対象プログラム内の条件分岐の条件として使われる値を返却する関数を特定する。
以下、図面を参照して、開示の技術に関する実施形態の一例を詳細に説明する。なお、本実施形態では、テスト対象プログラムを、JavaScript(登録商標)で記述されたメソッドとする場合を例に説明する。
図1に示すように、本実施形態に係るスタブ化対象判定装置10は、テスト対象メソッド31を入力として受け付ける。そして、スタブ化対象判定装置10は、テスト対象メソッド31から呼び出されるメソッドのスタブ化の可否を判定し、スタブ化対象のメソッド群を、スタブ化メソッドリスト35として出力する。
スタブ化対象判定装置10は、図1に示すように、機能的には、抽出部11と、判定部12とを含む。
抽出部11は、テスト対象メソッド31と、テスト対象メソッド31から呼び出されるメソッドとの関係を示す関係情報を抽出する。具体的には、抽出部11は、テスト対象メソッド31に含まれる変数を抽出して、変数の集合であるV集合21に追加する。抽出する変数は、テスト対象メソッド31のパラメータ、グローバル変数などのシンボル化対象変数、及びテスト対象メソッド31内の全てのローカル変数である。また、抽出部11は、テスト対象メソッド31から直接呼び出されるメソッドを抽出して、メソッドの集合であるM集合22に追加する。また、抽出部11は、テスト対象メソッド31のステートメントに条件分岐の実行が含まれる行の行番号を抽出して、行番号の集合であるL集合23に追加する。また、抽出部11は、テスト対象メソッド31のステートメントに、M集合22に含まれるメソッドから返却されたユーザ定義オブジェクトへのアクセスが含まれる行の行番号を抽出して、L集合23に追加する。
また、抽出部11は、V集合21に含まれる変数の各々、M集合22に含まれるメソッドの各々、及びL集合23に含まれる行番号の各々から、予め定めたルールに基づいて、関連する要素同士のペアを抽出し、VML集合24に追加する。なお、VML集合24に追加される情報は、開示の技術の関係情報の一例である。また、関連する要素同士のペアとは、互いに関連する変数と変数とのペア、メソッドとメソッドとのペア、変数とメソッドとのペア、行番号と変数とのペア、及び行番号とメソッドとのペアである。各ペアを抽出するためのルールとしては、例えば、以下のようなものを定めておくことができる。
(1)変数vが変数wを処理した結果の場合、ペア[v,w]をVML集合24に追加
(2)メソッドmがメソッドnの引数として呼び出される場合、ペア[m,n]をVML集合24に追加
(3)変数vがメソッドmに引数として渡される場合、ペア[m,v]をVML集合24に追加
(4)メソッドmが変数vに値を返却する場合、ペア[v,m]をVML集合24に追加
(5)i行目で変数vへアクセス又は変数vが利用される場合、ペア[i,v]をVML集合24に追加
(6)i行目のステートメントにメソッドmの呼び出しが含まれる場合、ペア[i,m]をVML集合24に追加
なお、抽出部11の処理は、例えば、ASMなどの解析エンジンにより実現することができる。
判定部12は、VML集合24に含まれる情報に基づいて、テスト対象メソッド31から呼び出されるメソッドのうち、スタブ化対象のメソッドを判定する。具体的には、判定部12は、テスト対象メソッド31内でアクセスされるユーザ定義オブジェクトを返却するメソッド、及びテスト対象メソッド31内の条件分岐の条件として使用される値を返却するメソッドを、スタブ化対象外のメソッドとして判定する。より具体的には、判定部12は、テスト対象メソッド31において、ユーザ定義オブジェクトへのアクセス又は条件分岐の実行を含む行のステートメントに含まれる変数、又はそのステートメントで呼び出されるメソッドを特定する。そして、判定部12は、特定した変数又はメソッドを、VML集合24に含まれる情報に基づいて順次辿った中に含まれるメソッドを、スタブ化対象外のメソッドとして判定する。
例えば、判定部12は、VML集合24に含まれる各ペアから、L集合23に含まれる行番号aを1つ目の要素とするペア[a,b]を探索する。また、判定部12は、VML集合24に含まれる各ペアから、ペア[a,b]の2つ目の要素bを1つ目の要素とするペア[b,c]を探索する。以下では、一方のペアの2つ目の要素を1つ目の要素とする他方のペアを、一方のペアの「接続ペア」という。以下同様に、接続ペアが存在しなくなるまで順次接続ペアを探索する。そして、判定部12は、探索したペアの各々に要素として含まれるメソッドを、スタブ化対象外のメソッドとして判定する。判定部12は、M集合22に含まれるメソッドのうち、スタブ化対象外であると判定したメソッドをスタブ化対象外集合25へ移し、残りのメソッドをスタブ化対象集合26へ移す。
また、判定部12は、スタブ化対象外集合25に含まれるメソッドのうち、そのメソッド内から更に他のメソッドを呼び出すメソッドを新たなテスト対象メソッドに設定する。そして、判定部12は、スタブ化対象集合26以外の各集合を全て空にして、テスト対象メソッドから呼び出されるメソッドのスタブ化の可否を判定する処理を再帰的に繰り返す。判定部12は、最終的にスタブ化対象集合26に含まれる全てのメソッドをスタブ化対象のメソッドとして判定し、スタブ化対象のメソッドの識別情報を羅列したスタブ化メソッドリスト35を作成して出力する。
スタブ化対象判定装置10は、例えば、図7に示すコンピュータ40で実現することができる。コンピュータ40はCPU41、一時記憶領域としてのメモリ42、及び不揮発性の記憶部43を備える。また、コンピュータ40は、表示装置及び入力装置等の入出力装置44、記録媒体49に対するデータの読み込みと書き込みとを制御するread/write(R/W)部45、及びインターネット等のネットワークに接続されるネットワークI/F46を備える。CPU41、メモリ42、記憶部43、入出力装置44、R/W部45、及びネットワークI/F46は、バス47を介して互いに接続される。
記憶部43は、HDD(Hard Disk Drive)、SSD(solid state drive)、フラッシュメモリ等によって実現できる。記憶媒体としての記憶部43には、コンピュータ40をスタブ化対象判定装置10として機能させるためのスタブ化対象判定プログラム50が記憶される。
CPU41は、スタブ化対象判定プログラム50を記憶部43から読み出してメモリ42に展開し、スタブ化対象判定プログラム50が有するプロセスを順次実行する。スタブ化対象判定プログラム50は、抽出プロセス51と、判定プロセス52とを有する。CPU41は、抽出プロセス51を実行することで、図1に示す抽出部11として動作する。また、CPU41は、判定プロセス52を実行することで、図1に示す判定部12として動作する。これにより、スタブ化対象判定プログラム50を実行したコンピュータ40が、スタブ化対象判定装置10として機能することになる。
なお、スタブ化対象判定プログラム50により実現される機能は、例えば半導体集積回路、より詳しくはASIC(Application Specific Integrated Circuit)等で実現することも可能である。
次に、本実施形態に係るスタブ化対象判定装置10の作用について説明する。スタブ化対象判定装置10にテスト対象メソッド31が入力されると、スタブ化対象判定装置10において、図8に示すスタブ化対象判定処理が実行される。なお、ここでは、図9に示すようなテスト対象メソッド31が入力されるものとする。テスト対象メソッド31から直接呼び出されるメソッドは、メソッド321(method1)、メソッド322(method2)、メソッド323(method3)、及びメソッド324(method4)である。また、メソッド322から呼び出されるメソッド33A(methodA)と、メソッド323から呼び出されるメソッド33B(methodB)及びメソッド33C(methodC)とが含まれる。また、method1から返却されるユーザ定義オブジェクトのインスタンス34を含む。また、図10に、テスト対象メソッド31に行番号を併記した例を示す。テスト対象メソッド31のパラメータs及びxをシンボル変数とする。
図8に示すスタブ化対象判定処理のステップS11で、抽出部11が、V集合21、M集合22、L集合23、VML集合24、スタブ化対象外集合25、及びスタブ化対象集合26の各々を初期化(空に)する。
次に、ステップS12で、抽出部11が、テスト対象メソッド31に含まれる変数を抽出して、V集合21に追加する。ここでは、シンボル変数であるs及びx、並びにローカル変数であるa、b、c、及びnumがV集合21に追加される。また、抽出部11が、テスト対象メソッド31から直接呼び出されるメソッドを抽出して、M集合22に追加する。ここでは、method1、method2、method3、及びmethod4がM集合22に追加される。さらに、抽出部11が、テスト対象メソッド31のステートメントに条件分岐、又はM集合22に含まれるメソッドから返却されたユーザ定義オブジェクトへのアクセスが含まれる行の行番号を抽出して、L集合23に追加する。ここでは、ユーザ定義オブジェクトへのアクセスを含む行3、並びに条件分岐を含む行6、行8、及び行10がL集合23に追加される。
次に、ステップS13で、抽出部11が、V集合21に含まれる変数の各々、M集合22に含まれるメソッドの各々、及びL集合23に含まれる行番号の各々から、上述したルールに従って、関連する要素同士のペアを抽出し、VML集合24に追加する。ここでは、図11に示すような各ペアがVML集合24に追加される。例えば、テスト対象メソッド31の2行目のステートメントに含まれる「method1(s)」の記述は、変数sがmethod1に引数として渡されることを表している。したがって、この記述は、上記ルールの(3)に合致し、ペア[method1,s]が抽出され、VML集合24に追加される。
次に、ステップS14で、判定部12が、VML集合24に含まれる各ペアから、L集合23に含まれる行番号aを1つ目の要素とするペア[a,b]を探索する。そして、判定部12は、VML集合24に含まれる各ペアから、ペア[a,b]以降の接続ペアを順次探索する。
ここでは、L集合23に含まれる行番号aを1つ目の要素とするペア[a,b]として、[行3,num]、[行6,c]、[行8,s]、及び[行10,a]の各ペアが探索される。そして、ペア[行3,num]の接続ペアとして、ペア[num,method1]が探索され、さらに、ペア[num,method1]の接続ペアとして、ペア[method1,s]が探索される。図12に示すように、[行6,c]、[行8,s]、及び[行10,a]の各ペアについても同様に接続ペアが探索される。
上記ステップS14で探索された、L集合23に含まれる行番号aを1つ目の要素とするペア[a,b]から開始する接続ペアの系列は、例えば、図13に示すように、各ペアに含まれる要素をノードとするグラフで表すことができる。図13の例では、ノード間を、各ノードに対応する要素間の関係を表す情報を保持したエッジで接続している。要素間の関係を表す情報とは、上記ステップS13で各ペアを抽出する際に適用されたルールに相当する。例えば、ノード「method1」とノード「s」との間は、ペア[method1,s]が、上記のルール(3)に合致して抽出されたことに基づいて、メソッドに対する変数の入出力関係を示すエッジで接続されている。また、エッジに併記している行番号は、エッジで接続された各ノードに対応するペアが抽出された行番号を示す。
図13に示すグラフにおいて、行番号に対応するノードから、エッジで接続されたノードを順次辿った場合のノードに対応する要素を羅列した例を図14に示す。また、これらの要素の羅列に従って、図13に示すグラフの各ノードを辿った例を図15に示す。このように、L集合23に含まれる行番号から順次関連するメソッド又は要素を辿った中にメソッドが含まれる場合には、そのメソッドは、テスト対象メソッド31の処理に影響を与えるメソッドであるといえる。すなわち、スタブ化対象外のメソッドである、テスト対象メソッド31内でアクセスされるユーザ定義オブジェクト、又は条件分岐の条件となる値を返却するメソッドである。
上述したように、図13に示すグラフは、図12に示すような、L集合23に含まれる行番号aを1つ目の要素とするペア[a,b]から開始する接続ペアの系列をグラフで表現したものである。従って、図12に示すように、上記ステップS14で探索された接続ペアの系列の各々に含まれるメソッドは、テスト対象メソッド31の処理に影響を与えるメソッドといえるため、スタブ化対象外のメソッドと判定することができる。
そこで、次のステップS15で、判定部12が、上記ステップS14で探索された接続ペアの系列の各々に含まれるメソッド、ここでは、method1、method3、及びmethod4を、M集合22からスタブ化対象外集合25へ移す。また、判定部12は、M集合22に残ったメソッド、ここでは、method2をスタブ化対象集合26へ移す。
次に、判定部12が、スタブ化対象外集合25に含まれるメソッドのうち、そのメソッドから他のメソッドを呼び出すメソッドを、テスト対象メソッド集合(図示省略)へ追加する。ここでは、method3がテスト対象メソッド集合に追加される。
次に、ステップS17で、判定部12が、テスト対象メソッド集合にメソッドが存在するか否かを判定する。メソッドが存在する場合には、処理はステップS18へ移行し、判定部12が、テスト対象メソッド集合に含まれるメソッドから1つを選択して、新たなテスト対象メソッドに設定する。ここでは、method3が新たなテスト対象メソッドに設定される。図16に、method3(メソッド323)に行番号を併記した例を示す。次に、ステップS19で、判定部12が、スタブ化対象集合26以外の各集合を初期化(空に)し、処理はステップS12に戻る。
method3をテスト対象メソッド31として実行されるステップS12では、抽出部11が、メソッド323に含まれるシンボル変数であるs及びx、並びにローカル変数であるis Trueを抽出して、V集合21に追加する。また、method3から呼び出されるmethodCからは、ユーザ定義オブジェクトタイプではなく、値が直接返却されるため、抽出部11は、この値に対応するダミー変数としてμを設定し、V集合21に追加する。また、抽出部11が、method3から直接呼び出されるメソッドであるmethodB及びmethodCを、M集合22に追加する。さらに、抽出部11が、テスト対象メソッド31のステートメントに条件分岐、又はM集合22に含まれるメソッドから返却されたユーザ定義オブジェクトへのアクセスが含まれる行の行番号である行2を、L集合23に追加する。
次に、ステップS13で、抽出部11が、図17に示す各ペアを、VML集合24に追加する。次に、ステップS14で、判定部12が、VML集合24に含まれる各ペアから、L集合23に含まれる行番号aを1つ目の要素とするペア[a,b]から接続ペアを順次探索する。ここでは、図18に示すような、接続ペアの系列が探索される。この接続ペアの系列をグラフで表現した例を、図19に示す。
次に、ステップS15で、判定部12が、上記ステップS14で探索された接続ペアの系列に含まれるメソッド、ここでは、methodBを、M集合22からスタブ化対象外集合25へ移し、残りのmethodCをスタブ化対象集合26へ移す。
スタブ化対象外集合25に含まれるmethodBは、さらに他のメソッドを呼び出さないため、テスト対象メソッド集合には追加されず、ステップS17が否定判定となり、処理はステップS20へ移行する。ステップS20では、判定部12が、スタブ化対象集合26に含まれるメソッドの各々の識別情報を羅列したスタブ化メソッドリスト35を作成して出力する。ここでは、method2及びmethodCがスタブ化メソッドリスト35として出力される。そして、スタブ化対象判定処理は終了する。
以上説明したように、本実施形態に係るスタブ化対象判定装置によれば、テスト対象プログラム内でアクセスされるユーザ定義オブジェクト又は条件分岐の条件となる値を返却する関数を、スタブ化対象関数から除外する。これにより、テスト対象プログラムに影響する関数はスタブ化の対象外と判定され、他の関数についてはスタブ化の対象と判定される。したがって、テストケースの網羅性を低下させることなく、効率的にテストケースを生成することができるように、スタブ化対象の関数を判定することができる。
また、本実施形態により、スタブ化の対象となる関数の判定を自動化することで、プログラムのテスト全体の作業コストも削減することができる。
具体的に、上述した、全ての関数をスタブ化する方針を比較例として、本実施形態の効果について述べる。例えば、図9に示すテスト対象プログラム(テスト対象メソッド31)の場合、比較例では、テスト対象メソッド31から直接呼び出されるメソッドがスタブ化対象となる。具体的には、メソッド321(method1)、メソッド322(method2)、メソッド323(method3)、及びメソッド324(method4)がスタブ化対象となる。一方、本実施形態に係るスタブ化対象判定装置では、上述したように、スタブ化対象のメソッドを、メソッド322(method2)及びメソッド33C(methodC)と判定する。
比較例に対し、本実施形態では、method1をスタブ化しないことにより、変数sをシンボル化したシンボリック実行により、行2において、method1がnullとユーザ定義オブジェクトとを両方返却する。このため、行3において、ユーザ定義オブジェクトである変数numにアクセスでき、テスト実行はここで失敗しないため、テスト網羅性が向上する。
また、比較例の場合と同様に、本実施形態においても、スタブ化されるメソッドから呼び出されるメソッドについては、スタブ化はされないが、テスト実行時には実行されない。ここでは、スタブ化されるmethod2から呼び出されるmethodAも実行されなくなる。これにより、テスト対象メソッド全体の実行パス数が削減され、パスの爆発的増加を抑制することができる。
なお、上記実施形態では、JavaScript(登録商標)で記述されたメソッドを、テスト対象のプログラムとする場合について説明したが、これに限定されない。開示の技術は、他の言語で記述されたプログラム、特に、オブジェクト指向言語で記述されたプログラムに適用可能である。
また、スタブ化対象外の関数の判定方法は、テスト対象プログラムと、そのテスト対象プログラムから呼び出される関数との関係に基づいて、テスト対象プログラムに影響を与える関数を判定できるものであれば、上記実施形態の例に限定されない。テスト対象プログラムと、そのテスト対象プログラムから呼び出される関数との関係とは、例えば、図13に示すグラフで表現されるような関係である。
また、上記では、スタブ化対象判定プログラム50が記憶部43に予め記憶(インストール)されている態様を説明したが、これに限定されない。開示の技術に係るプログラムは、CD−ROM、DVD−ROM、USBメモリ等の記録媒体に記録された形態で提供することも可能である。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
テスト対象のプログラムと、該テスト対象のプログラムから呼び出される関数との関係を示す関係情報を抽出する抽出部と、
前記抽出部により抽出された前記関係情報に基づいて、前記テスト対象のプログラムから呼び出される関数のうち、前記テスト対象のプログラム内でアクセスされるユーザ定義型のインスタンスを返却する関数、及び前記テスト対象のプログラム内の条件分岐の条件として使用される値を返却する関数を、スタブ化の対象から除外する関数として判定する判定部と、
を含むスタブ化対象判定装置。
(付記2)
前記判定部は、前記テスト対象のプログラムにおいて、ユーザ定義型のインスタンスへのアクセス又は条件分岐の実行を示す行に記述された変数又は関数と関係する変数又は関数を、前記抽出部により抽出された関係情報に基づいて順次辿った中に含まれる関数を、前記スタブ化の対象から除外する関数として判定する付記1記載のスタブ化対象判定装置。
(付記3)
前記抽出部は、前記テスト対象のプログラムに含まれる変数、及び該テスト対象のプログラムから呼び出される関数から、互いに関連する変数と変数とのペア、関数と関数とのペア、及び変数と関数とのペアと、ユーザ定義型のインスタンスへのアクセス又は条件分岐の実行を示す行の識別情報と該行に記述された変数又は関数とのペアとを、前記関係情報として抽出し、
前記判定部は、前記抽出部により前記関係情報として抽出された各ペアから、前記行の識別情報を含むペアを抽出し、抽出したペアに含まれる変数又は関数を含むペアを抽出することを繰り返し、抽出された各ペアに含まれる関数を、前記スタブ化の対象から除外する関数として判定する
付記2記載のスタブ化対象判定装置。
(付記4)
前記抽出部は、前記テスト対象のプログラムに含まれる変数と、該テスト対象のプログラムから呼び出される関数と、ユーザ定義型のインスタンスへのアクセス又は条件分岐の実行を示す行の識別情報とを抽出し、予め定めたルールに基づいて、前記ペアの各々を抽出する付記3記載のスタブ化対象判定装置。
(付記5)
前記抽出部は、前記判定部によりスタブ化の対象から除外されていない関数を、新たなテスト対象のプログラムに設定し、該新たなテスト対象のプログラムから前記関係情報を抽出し、
前記判定部は、前記抽出部により抽出された前記関係情報に基づいて、前記新たなテスト対象のプログラムに含まれる関数のうち、前記新たなテスト対象のプログラム内でアクセスされるユーザ定義型のインスタンスを返却する関数、及び前記新たなテスト対象のプログラム内の条件分岐の条件として使用される値を返却する関数を、スタブ化の対象から除外する関数として判定する
付記1〜付記4のいずれか1項記載のスタブ化対象判定装置。
(付記6)
コンピュータに、
テスト対象のプログラムと、該テスト対象のプログラムから呼び出される関数との関係を示す関係情報を抽出し、
抽出された前記関係情報に基づいて、前記テスト対象のプログラムから呼び出される関数のうち、前記テスト対象のプログラム内でアクセスされるユーザ定義型のインスタンスを返却する関数、及び前記テスト対象のプログラム内の条件分岐の条件として使用される値を返却する関数を、スタブ化の対象から除外する関数として判定する
ことを含む処理を実行させるスタブ化対象判定方法。
(付記7)
前記判定する処理において、前記テスト対象のプログラムにおいて、ユーザ定義型のインスタンスへのアクセス又は条件分岐の実行を示す行に記述された変数又は関数と関係する変数又は関数を、抽出された関係情報に基づいて順次辿った中に含まれる関数を、前記スタブ化の対象から除外する関数として判定する付記6記載のスタブ化対象判定方法。
(付記8)
前記抽出する処理において、前記テスト対象のプログラムに含まれる変数、及び該テスト対象のプログラムから呼び出される関数から、互いに関連する変数と変数とのペア、関数と関数とのペア、及び変数と関数とのペアと、ユーザ定義型のインスタンスへのアクセス又は条件分岐の実行を示す行の識別情報と該行に記述された変数又は関数とのペアとを、前記関係情報として抽出し、
前記判定する処理において、前記関係情報として抽出された各ペアから、前記行の識別情報を含むペアを抽出し、抽出したペアに含まれる変数又は関数を含むペアを抽出することを繰り返し、抽出された各ペアに含まれる関数を、前記スタブ化の対象から除外する関数として判定する
付記7記載のスタブ化対象判定方法。
(付記9)
前記抽出する処理において、前記テスト対象のプログラムに含まれる変数と、該テスト対象のプログラムから呼び出される関数と、ユーザ定義型のインスタンスへのアクセス又は条件分岐の実行を示す行の識別情報とを抽出し、予め定めたルールに基づいて、前記ペアの各々を抽出する付記8記載のスタブ化対象判定方法。
(付記10)
前記抽出する処理において、前記判定する処理においてスタブ化の対象から除外されていない関数を、新たなテスト対象のプログラムに設定し、該新たなテスト対象のプログラムから前記関係情報を抽出し、
前記判定する処理において、抽出された前記関係情報に基づいて、前記新たなテスト対象のプログラムに含まれる関数のうち、前記新たなテスト対象のプログラム内でアクセスされるユーザ定義型のインスタンスを返却する関数、及び前記新たなテスト対象のプログラム内の条件分岐の条件として使用される値を返却する関数を、スタブ化の対象から除外する関数として判定する
付記6〜付記9のいずれか1項記載のスタブ化対象判定方法。
(付記11)
コンピュータに、
テスト対象のプログラムと、該テスト対象のプログラムから呼び出される関数との関係を示す関係情報を抽出し、
抽出された前記関係情報に基づいて、前記テスト対象のプログラムから呼び出される関数のうち、前記テスト対象のプログラム内でアクセスされるユーザ定義型のインスタンスを返却する関数、及び前記テスト対象のプログラム内の条件分岐の条件として使用される値を返却する関数を、スタブ化の対象から除外する関数として判定する
ことを含む処理を実行させるスタブ化対象判定プログラム。
(付記12)
前記判定する処理において、前記テスト対象のプログラムにおいて、ユーザ定義型のインスタンスへのアクセス又は条件分岐の実行を示す行に記述された変数又は関数と関係する変数又は関数を、抽出された関係情報に基づいて順次辿った中に含まれる関数を、前記スタブ化の対象から除外する関数として判定する付記11記載のスタブ化対象判定プログラム。
(付記13)
前記抽出する処理において、前記テスト対象のプログラムに含まれる変数、及び該テスト対象のプログラムから呼び出される関数から、互いに関連する変数と変数とのペア、関数と関数とのペア、及び変数と関数とのペアと、ユーザ定義型のインスタンスへのアクセス又は条件分岐の実行を示す行の識別情報と該行に記述された変数又は関数とのペアとを、前記関係情報として抽出し、
前記判定する処理において、前記関係情報として抽出された各ペアから、前記行の識別情報を含むペアを抽出し、抽出したペアに含まれる変数又は関数を含むペアを抽出することを繰り返し、抽出された各ペアに含まれる関数を、前記スタブ化の対象から除外する関数として判定する
付記12記載のスタブ化対象判定プログラム。
(付記14)
前記抽出する処理において、前記テスト対象のプログラムに含まれる変数と、該テスト対象のプログラムから呼び出される関数と、ユーザ定義型のインスタンスへのアクセス又は条件分岐の実行を示す行の識別情報とを抽出し、予め定めたルールに基づいて、前記ペアの各々を抽出する付記13記載のスタブ化対象判定プログラム。
(付記15)
前記抽出する処理において、前記判定する処理においてスタブ化の対象から除外されていない関数を、新たなテスト対象のプログラムに設定し、該新たなテスト対象のプログラムから前記関係情報を抽出し、
前記判定する処理において、抽出された前記関係情報に基づいて、前記新たなテスト対象のプログラムに含まれる関数のうち、前記新たなテスト対象のプログラム内でアクセスされるユーザ定義型のインスタンスを返却する関数、及び前記新たなテスト対象のプログラム内の条件分岐の条件として使用される値を返却する関数を、スタブ化の対象から除外する関数として判定する
付記11〜付記14のいずれか1項記載のスタブ化対象判定プログラム。
(付記16)
コンピュータに、
テスト対象のプログラムと、該テスト対象のプログラムから呼び出される関数との関係を示す関係情報を抽出し、
抽出された前記関係情報に基づいて、前記テスト対象のプログラムから呼び出される関数のうち、前記テスト対象のプログラム内でアクセスされるユーザ定義型のインスタンスを返却する関数、及び前記テスト対象のプログラム内の条件分岐の条件として使用される値を返却する関数を、スタブ化の対象から除外する関数として判定する
ことを含む処理を実行させるスタブ化対象判定プログラムを記憶した記憶媒体。
10 スタブ化対象判定装置
11 抽出部
12 判定部
21 V集合
22 M集合
23 L集合
24 VML集合
25 スタブ化対象外集合
26 スタブ化対象集合
31 テスト対象メソッド
40 コンピュータ
41 CPU
42 メモリ
43 記憶部
49 記録媒体
50 スタブ化対象判定プログラム

Claims (7)

  1. テスト対象のプログラムと、該テスト対象のプログラムから呼び出される関数との関係を示す関係情報を抽出する抽出部と、
    前記抽出部により抽出された前記関係情報に基づいて、前記テスト対象のプログラムから呼び出される関数のうち、前記テスト対象のプログラム内でアクセスされるユーザ定義型のインスタンスを返却する関数、及び前記テスト対象のプログラム内の条件分岐の条件として使用される値を返却する関数を、スタブ化の対象から除外する関数として判定する判定部と、
    を含むスタブ化対象判定装置。
  2. 前記判定部は、前記テスト対象のプログラムにおいて、ユーザ定義型のインスタンスへのアクセス又は条件分岐の実行を示す行に記述された変数又は関数と関係する変数又は関数を、前記抽出部により抽出された関係情報に基づいて順次辿った中に含まれる関数を、前記スタブ化の対象から除外する関数として判定する請求項1記載のスタブ化対象判定装置。
  3. 前記抽出部は、前記テスト対象のプログラムに含まれる変数、及び該テスト対象のプログラムから呼び出される関数から、互いに関連する変数と変数とのペア、関数と関数とのペア、及び変数と関数とのペアと、ユーザ定義型のインスタンスへのアクセス又は条件分岐の実行を示す行の識別情報と該行に記述された変数又は関数とのペアとを、前記関係情報として抽出し、
    前記判定部は、前記抽出部により前記関係情報として抽出された各ペアから、前記行の識別情報を含むペアを抽出し、抽出したペアに含まれる変数又は関数を含むペアを抽出することを繰り返し、抽出された各ペアに含まれる関数を、前記スタブ化の対象から除外する関数として判定する
    請求項2記載のスタブ化対象判定装置。
  4. 前記抽出部は、前記テスト対象のプログラムに含まれる変数と、該テスト対象のプログラムから呼び出される関数と、ユーザ定義型のインスタンスへのアクセス又は条件分岐の実行を示す行の識別情報とを抽出し、予め定めたルールに基づいて、前記ペアの各々を抽出する請求項3記載のスタブ化対象判定装置。
  5. 前記抽出部は、前記判定部によりスタブ化の対象から除外されていない関数を、新たなテスト対象のプログラムに設定し、該新たなテスト対象のプログラムから前記関係情報を抽出し、
    前記判定部は、前記抽出部により抽出された前記関係情報に基づいて、前記新たなテスト対象のプログラムに含まれる関数のうち、前記新たなテスト対象のプログラム内でアクセスされるユーザ定義型のインスタンスを返却する関数、及び前記新たなテスト対象のプログラム内の条件分岐の条件として使用される値を返却する関数を、スタブ化の対象から除外する関数として判定する
    請求項1〜請求項4のいずれか1項記載のスタブ化対象判定装置。
  6. コンピュータに、
    テスト対象のプログラムと、該テスト対象のプログラムから呼び出される関数との関係を示す関係情報を抽出し、
    抽出された前記関係情報に基づいて、前記テスト対象のプログラムから呼び出される関数のうち、前記テスト対象のプログラム内でアクセスされるユーザ定義型のインスタンスを返却する関数、及び前記テスト対象のプログラム内の条件分岐の条件として使用される値を返却する関数を、スタブ化の対象から除外する関数として判定する
    ことを含む処理を実行させるスタブ化対象判定方法。
  7. コンピュータに、
    テスト対象のプログラムと、該テスト対象のプログラムから呼び出される関数との関係を示す関係情報を抽出し、
    抽出された前記関係情報に基づいて、前記テスト対象のプログラムから呼び出される関数のうち、前記テスト対象のプログラム内でアクセスされるユーザ定義型のインスタンスを返却する関数、及び前記テスト対象のプログラム内の条件分岐の条件として使用される値を返却する関数を、スタブ化の対象から除外する関数として判定する
    ことを含む処理を実行させるスタブ化対象判定プログラム。
JP2015164051A 2015-08-21 2015-08-21 スタブ化対象判定装置、方法、及びプログラム Expired - Fee Related JP6512032B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015164051A JP6512032B2 (ja) 2015-08-21 2015-08-21 スタブ化対象判定装置、方法、及びプログラム
US15/172,334 US10055341B2 (en) 2015-08-21 2016-06-03 To-be-stubbed target determining apparatus, to-be-stubbed target determining method and non-transitory recording medium storing to-be-stubbed target determining program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015164051A JP6512032B2 (ja) 2015-08-21 2015-08-21 スタブ化対象判定装置、方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2017041196A true JP2017041196A (ja) 2017-02-23
JP6512032B2 JP6512032B2 (ja) 2019-05-15

Family

ID=58157114

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015164051A Expired - Fee Related JP6512032B2 (ja) 2015-08-21 2015-08-21 スタブ化対象判定装置、方法、及びプログラム

Country Status (2)

Country Link
US (1) US10055341B2 (ja)
JP (1) JP6512032B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020136880A1 (ja) * 2018-12-28 2020-07-02 三菱電機株式会社 テスト実行装置、テスト実行方法及びテスト実行プログラム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6879046B2 (ja) * 2017-05-15 2021-06-02 トヨタ自動車株式会社 テスト方法及びプログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09265414A (ja) * 1996-03-28 1997-10-07 Hitachi Ltd テスト環境構築支援システム
US6895578B1 (en) * 1999-01-06 2005-05-17 Parasoft Corporation Modularizing a computer program for testing and debugging
JP2007179488A (ja) * 2005-12-28 2007-07-12 Fujitsu Ltd ソースコード問題予測プログラム
JP2009129133A (ja) * 2007-11-22 2009-06-11 Nec Corp ソフトウェア部分テストシステム、ソフトウェア部分テスト方法およびソフトウェア部分テスト用プログラム
WO2013161195A1 (ja) * 2012-04-26 2013-10-31 日本電気株式会社 プログラム単体テスト支援装置
JP2015146179A (ja) * 2014-01-31 2015-08-13 富士通株式会社 テストダブルの生成

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3779665B2 (ja) * 2002-09-25 2006-05-31 富士通株式会社 テスト支援プログラム
JP2012181666A (ja) 2011-03-01 2012-09-20 Nec Corp 情報処理装置、情報処理方法及び情報処理プログラム
US9038028B1 (en) * 2012-03-15 2015-05-19 Sprint Communications Company L.P. Dynamic creation and use of software testing stubs
US9720925B1 (en) * 2012-04-12 2017-08-01 Orchard Valley Management Llc Software similarity searching

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09265414A (ja) * 1996-03-28 1997-10-07 Hitachi Ltd テスト環境構築支援システム
US6895578B1 (en) * 1999-01-06 2005-05-17 Parasoft Corporation Modularizing a computer program for testing and debugging
JP2007179488A (ja) * 2005-12-28 2007-07-12 Fujitsu Ltd ソースコード問題予測プログラム
JP2009129133A (ja) * 2007-11-22 2009-06-11 Nec Corp ソフトウェア部分テストシステム、ソフトウェア部分テスト方法およびソフトウェア部分テスト用プログラム
WO2013161195A1 (ja) * 2012-04-26 2013-10-31 日本電気株式会社 プログラム単体テスト支援装置
JP2015146179A (ja) * 2014-01-31 2015-08-13 富士通株式会社 テストダブルの生成

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020136880A1 (ja) * 2018-12-28 2020-07-02 三菱電機株式会社 テスト実行装置、テスト実行方法及びテスト実行プログラム

Also Published As

Publication number Publication date
US20170052887A1 (en) 2017-02-23
JP6512032B2 (ja) 2019-05-15
US10055341B2 (en) 2018-08-21

Similar Documents

Publication Publication Date Title
US9983984B2 (en) Automated modularization of graphical user interface test cases
US9898387B2 (en) Development tools for logging and analyzing software bugs
US9569345B2 (en) Architectural failure analysis
US8997065B2 (en) Automatic modularization of source code
US7506211B2 (en) Automated atomic system testing
US10078502B2 (en) Verification of a model of a GUI-based application
US10049031B2 (en) Correlation of violating change sets in regression testing of computer software
US9384117B2 (en) Machine and methods for evaluating failing software programs
US20100274520A1 (en) Creation of test plans
US20110055777A1 (en) Verification of Soft Error Resilience
CN104182335A (zh) 软件测试方法和装置
US20110145799A1 (en) Path-sensitive dataflow analysis including path refinement
WO2019055378A1 (en) METHOD AND APPARATUS FOR FINDING LONG PROCESSES IN A CODE
US9733782B2 (en) Extracting a deterministic finite-state machine model of a GUI based application
US20150286355A1 (en) Crawling for extracting a model of a gui-based application
JP6512032B2 (ja) スタブ化対象判定装置、方法、及びプログラム
US7996798B2 (en) Representing binary code as a circuit
US10546080B1 (en) Method and system for identifying potential causes of failure in simulation runs using machine learning
CN109002723B (zh) 一种分段式符号执行方法
CN105912467A (zh) 一种性能测试方法及装置
CN111240987A (zh) 移植程序检测方法、装置、电子设备及计算机可读存储介质
JP2007122207A (ja) プログラム分析プログラム、プログラム分析装置、プログラム分析方法
JP5163172B2 (ja) ソフトウェアテスト項目編集支援装置およびソフトウェアテスト項目編集支援方法
JP7380851B2 (ja) テストスクリプト生成装置、テストスクリプト生成方法及びプログラム
Saifullah et al. Exploring type inference techniques of dynamically typed languages

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180514

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190225

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190325

R150 Certificate of patent or registration of utility model

Ref document number: 6512032

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees