JP6003699B2 - テストデータ生成プログラム、方法及び装置 - Google Patents

テストデータ生成プログラム、方法及び装置 Download PDF

Info

Publication number
JP6003699B2
JP6003699B2 JP2013022950A JP2013022950A JP6003699B2 JP 6003699 B2 JP6003699 B2 JP 6003699B2 JP 2013022950 A JP2013022950 A JP 2013022950A JP 2013022950 A JP2013022950 A JP 2013022950A JP 6003699 B2 JP6003699 B2 JP 6003699B2
Authority
JP
Japan
Prior art keywords
path condition
path
simplified
condition
symbol variable
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.)
Active
Application number
JP2013022950A
Other languages
English (en)
Other versions
JP2014153908A (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.)
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 JP2013022950A priority Critical patent/JP6003699B2/ja
Priority to US14/089,215 priority patent/US9639454B2/en
Publication of JP2014153908A publication Critical patent/JP2014153908A/ja
Application granted granted Critical
Publication of JP6003699B2 publication Critical patent/JP6003699B2/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

Description

本発明は、プログラムのテストに利用するテストデータの生成技術に関する。
プログラムのテストを実行する際には、確認すべき観点を網羅するように、テスト入力及び期待される結果等を含むテストケースのセットを用意する。テストケースを用意する作業の中でも特にテスト入力の作成は、人手で行うことが多い、多大な労力を要する作業である。
この労力を減らすための技術として、シンボリック実行によりテスト入力を生成する技術が知られている。シンボリック実行は、プログラム中の変数を具体化せず、シンボル値という特殊な値を持たせたままプログラムを実行する技術である。このシンボル値を保持する変数のことをシンボル変数と呼ぶ。シンボリック実行においては、シンボル変数が分岐等の判定条件に利用された場合、判定条件が成立する場合のパス及び成立しない場合のパスの各々を網羅的に実行する。このとき、パスを実行するために(すなわち、判定条件を成立させるために又は成立させないために)シンボル値が満たすべき条件が保持される。この条件はパス条件と呼ばれ、シンボリック実行によって実行されたパス毎に保持される。特定のパス条件を充足するような値(以下、充足値と呼ぶ)が存在しない場合には、そのパス条件についてのパスを実行できないので、そのパスをテストの対象から除外する。パス条件の充足値が存在する場合には、充足解をテスト入力とする。
シンボリック実行の問題点として、いわゆるパス爆発が発生することにより、シンボリック実行を実用的な時間及び計算量で行えなくなることが指摘されている。
パス爆発を防ぐための方法として、シンボル化する変数を切り替えながらシンボリック実行を繰り返し行う技術が知られている。この技術について、図1乃至図3を用いて説明する。
例えば図1に示したような制御構造を有するプログラムに対してシンボリック実行を行うことを考える。このプログラムにおける変数はx及びyである。このプログラムにおいては、分岐151において「x*(y+1)>10」が成立するか判定される。成立する場合には処理はルート152に進み、成立しない場合には処理はルート153に進む。また、分岐161において「y>5」が成立するか判定される。成立する場合には処理はルート162に進み、成立しない場合には処理はルート163に進む。
まず、図2を用いて、xをシンボル変数とし且つyをデフォルト値(図2の例では1)としてシンボリック実行を行った場合について説明する。この場合、分岐151における判定条件は「x*2>10」になる。ルート152に進む場合のテストケースとして、例えばテスト入力(x、y)=(6,1)を含むテストケース1が生成される。また、分岐161における判定条件は「1>5」になる。この判定条件は成立しないので、ルート163に進む。そして、例えばテスト入力(x,y)=(0,1)を含むテストケース2が生成される。
図3を用いて、xをデフォルト値(図3の例では0)とし且つyをシンボル変数としてシンボリック実行を行った場合について説明する。この場合、分岐151における判定条件は「0>10」になる。この判定条件は成立しないので、ルート153に進む。また、分岐161における判定条件は「y>5」のままである。ルート162に進む場合のテストケースとして、例えばテスト入力(x,y)=(0,6)を含むテストケース3が生成される。また、ルート163に進む場合のテストケースとして、例えばテスト入力(x,y)=(0,0)を含むテストケース4が生成される。
このようにすれば、同時に扱うシンボル変数の数を減らせるので、パス爆発を防ぐことができる。但し、この技術を利用するとテストケースが冗長になる場合がある。例えば図1乃至図3を用いて説明した例においては、テストケース2とテストケース4とは同じパスについてのテストケースであるため、どちらかのテストケースは不要である。シンボリック実行に関する従来の技術によっては、このような余分なテストケースを除去することができない。
特開2009−87355号公報 特開2012−068869号公報
玉井哲雄、福永光一、「記号実行システム」、情報処理、情報処理学会、1982年1月、Vol.23 No.1, p.18-28 Kazuki Munakata et al. "Test Case Selection based on Path Condtions of Symbolic Execution", 19th Asia-Pacific Software Engineering Conference, 2012, IEEE computer society, p.318-321
従って、本発明の目的は、1つの側面では、余分なテストケースを除去するための技術を提供することである。
本発明に係るテストデータ生成方法は、シンボリック実行を繰り返し行うことにより得られる複数のパス条件の各々について、当該パス条件に含まれるシンボル変数の一部に固定値を代入することにより当該パス条件を簡約化した簡約化パス条件を生成し、生成された複数の簡約化パス条件の各々について、当該簡約化パス条件を満たすシンボル変数の値を算出すると共に、算出された当該値と固定値と簡約化する前のパス条件とを含むテストデータを生成し、生成された前記テストデータおいて同じパス条件を含むテストデータが重複しないように削除する処理を含む。
余分なテストケースを除去できるようになる。
図1は、従来技術について説明するための図である。 図2は、従来技術について説明するための図である。 図3は、従来技術について説明するための図である。 図4は、テストケース生成装置の機能ブロック図である。 図5は、プログラム格納部に格納されるプログラムの一例を示す図である。 図6は、プログラムの制御構造の一例を示す図である。 図7は、ドライバ格納部に格納されるドライバの一例を示す図である。 図8は、本実施の形態の概要について説明するための図である。 図9は、メインの処理フローを示す図である。 図10は、処理の開始時点における第1テストケース格納部の状態及び第2テストケースの状態を示す図である。 図11は、抽出処理の処理フローを示す図である。 図12は、変数格納部に格納されるデータの一例を示す図である。 図13は、組合せ生成処理の処理フローを示す図である。 図14は、実行制御部により生成される組合せの一例を示す図である。 図15は、固定データ格納部に格納されるデータの一例を示す図である。 図16は、シンボリック実行の処理フローを示す図である。 図17は、実行エンジンが管理するデータの一例を示す図である。 図18は、簡約化処理の処理フローを示す図である。 図19は、簡約化処理の具体例を示す図である。 図20は、簡約化処理の具体例を示す図である。 図21は、原子論理式が簡約化手順に従って簡約化される様子を示す図である。 図22は、原子論理式が簡約化手順に従って簡約化される様子を示す図である。 図23は、テストケース生成処理の処理フローを示す図である。 図24は、テストケース生成処理について説明するための図である。 図25は、テストケース生成処理について説明するための図である。 図26は、第1テストケース格納部に格納されるデータの一例を示す図である。 図27は、絞り込み処理の処理フローを示す図である。 図28は、第2テストケース格納部に格納されるデータの一例を示す図である。 図29は、コンピュータの機能ブロック図である。
図4に、本実施の形態に係るテストケース生成装置1の機能ブロック図を示す。テストケース生成装置1は、プログラム格納部101と、ドライバ格納部102と、変数格納部103と、固定データ計算部105及び実行制御部106を含む制御部104と、固定データ格納部107と、代入部109及び簡約化部110を含む変換部108と、簡約化データ格納部111と、実行エンジン113、パス条件計算部114、テスト入力生成部115及びテストケース生成部116を含むシンボリック実行部112と、第1テストケース格納部117と、除去部118と、第2テストケース格納部119とを含む。
実行制御部106は、ドライバ格納部102に格納されているデータを用いて、シンボル変数の候補を抽出し、変数格納部103に格納する。また、実行制御部106は、プログラム格納部101に格納されているプログラム及びシンボル変数の情報を実行エンジン113に出力する。固定データ計算部105は、固定シンボル変数のデータを生成し、固定データ格納部107に格納する。
代入部109は、パス条件計算部114から受け取ったパス条件に、固定データ格納部107に格納されている固定値を代入する。簡約化部110は、代入部109から受け取ったパス条件を簡約化することにより簡約化パス条件を生成し、簡約化データ格納部111に格納する。
実行エンジン113は、実行制御部106からの要求に応じ、シンボリック実行を行う。なお、実行エンジン113は、シンボリック実行を行うモジュールであり、例えばJava(登録商標) PathFinderである。パス条件計算部114は、パス条件を生成し、変換部108に出力する。テスト入力生成部115は、簡約化データ格納部111に格納されている簡約化パス条件を満たす充足値を求め、当該充足値と固定値とを含むテスト入力をテストケース生成部116に出力する。テストケース生成部116は、テスト入力とパス条件とを含むテストケースを生成し、第1テストケース格納部117に格納する。
除去部118は、第1テストケース格納部117に格納されているデータを用いて処理を行い、処理結果を第2テストケース格納部119に格納する。
図5に、プログラム格納部101に格納されるデータの一例を示す。図5の例では、シンボリック実行の対象になるプログラムが格納される。
図6に、図5に示したプログラムの制御構造を示す。この制御構造には、条件が「!p3.startsWith(”ZZ01”)」である分岐601と、条件が「mode.equals(”00”)>」である分岐602と、条件が「mode.equals(”01”)>」である分岐603と、条件が「diff>0」である分岐604と、条件が「diff==0」である分岐605とが含まれる。
図7に、ドライバ格納部102に格納されるデータの一例を示す。図7の例では、シンボリック実行を開始するためのドライバが格納される。ドライバには、シンボル変数を宣言する部分(図7における、@Symbolic(”true”)という命令及びpublic staticで始まる命令)と、シンボリック実行の対象になるプログラムを呼び出す部分(図7における、int code=target.method1(param1,param2,param3);という命令)とが含まれる。
次に、テストケース生成装置1の動作の概要について説明する。本実施の形態においては、自由シンボル変数及び固定シンボル変数という2種類のシンボル変数を導入する。自由シンボル変数は通常のシンボル変数であり、固定シンボル変数はその値として固定値を持つシンボル変数である。
シンボリック実行によってパス条件を求めるにあたっては、自由シンボル変数及び固定シンボル変数のいずれについても通常のシンボル変数と同様に取り扱う。但し、求められたパス条件を用いてテスト入力を計算する際には、自由シンボル変数だけを通常のシンボル変数と同様に取り扱う一方、固定シンボル変数には固定値を代入することで、簡約化パス条件を生成する。そして、この簡約化パス条件の充足値を求めることで、テスト入力を生成する。
これについて、図1乃至3に示したプログラムを例にして具体的に説明する。図8は、図1乃至3に示したプログラムに対して本実施の形態の処理を実行した場合を示している。図8における左側は、変数xを自由シンボル変数とし且つ変数yを固定シンボル変数としてシンボリック実行を行った場合の例であり、右側は、変数yを自由シンボル変数とし且つ変数xを固定シンボル変数としてシンボリック実行を行った場合の例である。いずれの場合も、まずプログラムにおけるパス801乃至803についてパス条件を生成する。
ここで、左側の例においては、固定シンボル変数yに対し固定値1を代入することにより各パス条件を簡約化する。パス801については「x*2>10」という簡約化パス条件が得られ、パス802については「(x*2<=10)&&(1<=5)」という簡約化パス条件が得られ、パス803については「(x*2<=10)&&(1>5)」という簡約化パス条件が得られる。この簡約化パス条件の充足値を求めることにより、パス801についてテストケース1を生成し、パス802についてテストケース2を生成する。パス803についての簡約化パス条件を満たすxの値は存在しないので、パス803についてはテストケースが生成されない。
一方、右側の例においては、固定シンボル変数xに対し固定値0を代入することにより各パス条件を簡約化する。パス801については「0>10」という簡約化パス条件が得られ、パス802については「(0<=10)&&(y<=5)」という簡約化パス条件が得られ、パス803については「(0<=10)&&(y>5)」という簡約化パス条件が得られる。この簡約化パス条件の充足値を求めることにより、パス803についてテストケース803を生成し、パス802についてテストケース4を生成する。パス801についての簡約化パス条件を満たすyの値は存在しないので、パス801についてはテストケースが生成されない。
この時点においてはテストケース2とテストケース4とが重複することになるが、本実施の形態においては、簡約化する前のパス条件を比較することにより重複を排除する。上で述べた例の場合、テストケース1のパス条件は「x*(y+1)>10」であり、テストケース2のパス条件は「x*(y+1)<=10&&y<=5」であり、テストケース3のパス条件は「x*(y+1)<=10&&y>5」であり、テストケース4のパス条件は「x*(y+1)=<10&&y<=5」である。テストケース2のパス条件とテストケース4のパス条件は同じであるので、テストケース2とテストケース4とが重複していると判断できる。よって、テストケース2又はテストケース4のいずれかを削除することにより、余分なテストデータを除去できる。
次に、図9乃至図28を用いて、テストケース生成装置1の動作を詳細に説明する。制御部104における実行制御部106は、例えば操作者からテストケースの生成指示を受け付けると、抽出処理を実行する(図9:ステップS1)。抽出処理については、図11及び図12を用いて説明する。なお、処理の開始時点においては、例えば図10に示すように、第1テストケース格納部117及び第2テストケース119は空の状態である。
まず、実行制御部106は、ドライバ格納部102に格納されているドライバにおけるシンボル変数の宣言文を抽出する(図11:ステップS21)。シンボル変数の宣言文は、例えば、図7において@Symbolic(”true”)という命令及びpublic staticで始まる命令である。また、実行制御部106は、変数名と変数の型とを対応付けて変数格納部103に格納する。
図12に、変数格納部103に格納されるデータの一例を示す。図12の例では、変数名と、変数の型とが格納される。
実行制御部106は、未処理の宣言文が有るか判断する(ステップS23)。未処理の宣言文が無い場合(ステップS23:Noルート)、元の処理に戻る。一方、未処理の宣言文が有る場合(ステップS23:Yesルート)、実行制御部106は、未処理の宣言文を1つ特定する(ステップS25)。
実行制御部106は、初期値が宣言されているか判断する(ステップS27)。初期値が宣言されている場合(ステップS27:Yesルート)、実行制御部106は、宣言文におけるシンボル変数の固定値に当該初期値を設定する(ステップS29)。初期値とは、例えば、図7において「param1=」の後に続く値である。一方、初期値が宣言されていない場合(ステップS27:Noルート)、実行制御部106は、宣言文におけるシンボル変数の型に応じた初期値を生成し、シンボル変数の固定値に設定する(ステップS31)。シンボル変数の型に応じた初期値とはシンボル変数の型に従う具体値のことであり、例えば整数型であれば「1」である。なお、ステップS29及びS31において設定されたシンボル変数及び固定値は、関連付けられてメインメモリ等の記憶装置に格納される。
以上のような処理を実行すれば、固定シンボル変数の固定値として適切な値を抽出できるようになる。
図9の説明に戻り、実行制御部106は、組合せ生成処理を実行する(ステップS3)。組合せ生成処理については、図13乃至図15を用いて説明する。
まず、実行制御部106は、シンボル変数の候補についてのデータ(ここでは、変数名及び変数の型)を変数格納部103から取得する(図13:ステップS41)。
実行制御部106は、自由シンボル変数と固定シンボル変数との組合せを生成し(ステップS43)、ステップS41において取得されたデータと、ステップS29及びS31において設定された固定値とを固定データ計算部105に出力する。
図14に、実行制御部106により生成される組合せの一例を示す。図14の例では、生成された組合せには、自由シンボル変数を変数SDriver.param1とし且つ固定シンボル変数を変数SDriver.param2及び変数SDriver.param3とする組合せ、自由シンボル変数を変数SDriver.param2とし且つ固定シンボル変数を変数SDriver.param3及び変数SDriver.param1とする組合せ、及び自由シンボル変数を変数SDriver.param3とし且つ固定シンボル変数を変数SDriver.param1及び変数SDriver.param2とする組合せとが含まれる。
固定データ計算部105は、実行制御部106から受け取ったデータを含む、固定シンボル変数のデータを生成(ステップS45)し、固定データ格納部107に格納する。そして処理を終了する。
図15に、固定データ格納部107に格納されるデータの一例を示す。図15の例では、固定データ格納部107には、固定シンボル変数名と、変数の型と、固定値とが格納される。固定値は、ステップS29及びS31において設定された初期値である。このように、固定データ格納部107には、各組合せについて固定シンボル変数に関する情報が格納される。
以上のようにして生成された各組合せについてシンボリック実行を行えば、シンボリック実行を繰り返し行うことが可能になる。
図9の説明に戻り、実行制御部106は、未処理の組合せが有るか判断する(ステップS5)。未処理の組合せが有る場合(ステップS5:Yesルート)、実行制御部106は、未処理の組合せを1つ特定する(ステップS7)。
実行制御部106は、ステップS7において特定された組合せについてシンボリック実行を行うことをシンボリック実行部112に要求する。これに応じ、実行エンジン113は、シンボリック実行を実施する(ステップS9)。シンボリック実行については、図16乃至図26を用いて説明する。なお、実行エンジン113は、シンボリック実行の実行中に図15に示すようなデータを管理する。図17の例では、実行エンジン113は、シンボル変数と、シンボル変数の型と、シンボル値とを管理する。シンボル値とは、実際にパス条件に出現する値のことである。すなわち、シンボル変数は、パス条件の中においては「SDriver・・」の形で出現するわけではなく「param・・」の形で出現する。なお、上で述べたように、パス条件の生成までは自由シンボル変数と固定シンボル変数との区別無くシンボリック実行が行われる。
まず、実行エンジン113は、シンボリック実行の初期化を実行する(図16:ステップS51)。具体的には、実行エンジン113は、実行位置をプログラムの先頭に移動し、またメモリ内容をクリアする。
実行エンジン113は、プログラムに次の命令が有るか判断する(ステップS53)。次の命令が有る場合(ステップS53:Yesルート)、実行エンジン113は、その命令(以下、処理対象の命令と呼ぶ)を解析する(ステップS57)。例えば、命令の内容及び関係する変数等について解析を行う。
実行エンジン113は、処理対象の命令が分岐命令であるか判断する(ステップS59)。分岐命令である場合(ステップS59:Yesルート)、実行エンジン113は、分岐命令において未選択の分岐を1つ選択する(ステップS61)。そしてステップS63の処理に移行する。
一方、処理対象の命令が分岐命令ではない場合(ステップS59:Noルート)、実行エンジン113は、パス条件計算部114に処理を要求する。これに応じ、パス条件計算部114は、パス条件を計算する(ステップS63)。パス条件計算部114は、計算されたパス条件を変換部108に出力する。
これに応じ、変換部108は、簡約化処理を実行する(ステップS65)。簡約化処理については、図18乃至図22を用いて説明する。
まず、代入部109は、パス条件計算部114から受け取ったパス条件のコピーを生成することにより、簡約化パス条件を生成する(図18:ステップS81)。ステップS81において生成される簡約化パス条件はまだ簡約化されていない。ステップS81の処理により、例えば”param3”.startsWith(”ZZ01”)∧(”param3”.subString(4).equals(”00”))∧(param1−param2+100)>0というような簡約化パス条件が生成される。
代入部109は、ステップS81において生成された簡約化パス条件に含まれるシンボル変数に対応する固定値を固定データ格納部107から抽出し、抽出された固定値をシンボル変数に代入する(ステップS83)。また、代入部109は、処理後の簡約化パス条件を簡約化部110に出力する。ステップS83の処理により、例えば”ZZ0100”.startsWith(”ZZ01”)∧(”ZZ0100”.subString(4).equals(”00”))∧(param1−100+100)>0というような簡約化パス条件が生成される。
なお、固定データ格納部107には、各組合せについての固定シンボル変数に関するデータが格納されているので、代入部109は、現在処理を行っている組合せについてのデータから固定値を抽出する。
簡約化部110は、簡約化パス条件に未処理の原子論理式が有るか判断する(ステップS85)。ここで、原子論理式とは、「且つ」で接続されている要素のことである。例えば簡約化パス条件が、”ZZ0100”.startsWith(”ZZ01”)∧(”ZZ0100”.subString(4).equals(”00”))∧(param1−100+100)>0である場合、「”ZZ0100”.startsWith(”ZZ01”)」、「(”ZZ0100”.subString(4).equals(”00”))」及び「(param1−100+100)>0」が原子論理式である。
未処理の原子論理式が無い場合(ステップS85:Noルート)、簡約化処理が完了したので、簡約化部110は、簡約化処理をする前のパス条件と簡約化パス条件とを対応付けて簡約化データ格納部111に格納する。そして元の処理に戻る。
一方、未処理の原子論理式が有る場合(ステップS85:Yesルート)、簡約化部110は、未処理の原子論理式を1つ特定する(ステップS87)。ステップS87において特定された原子論理式を、以下では「処理対象の原子論理式」と呼ぶ。
簡約化部110は、処理対象の原子論理式に含まれる部分式を計算する(ステップS89)。ここで、計算可能な部分式は、例えば自由シンボル値が関係しない部分式又は特定の簡約化ルールが与えられている部分式である。例えば原子論理式(param1−100+100)における部分式「100−100」を計算すると0になる。
簡約化部110は、計算前後において処理対象の原子論理式に変化が有るか判断する(ステップS91)。処理対象の原子論理式に変化が有る場合(ステップS91:Yesルート)、ステップS89の処理に戻る。一方、処理対象の原子論理式に変化が無い場合(ステップS91:Noルート)、簡約化部110は、処理対象の原子論理式が「false」である(すなわち、成立しない原子論理式である)か判断する(ステップS93)。処理対象の原子論理式が「false」である場合(ステップS93:Yesルート)、処理対象の原子論理式は成立しないので、簡約化部110は、「false」を簡約化パス条件に設定する(ステップS95)。簡約化部110は、簡約化処理をする前のパス条件と簡約化パス条件(false)とを対応付けて簡約化データ格納部111に格納する。そして元の処理に戻る。
一方、処理対象の原子論理式が「false」ではない場合(ステップS93:Noルート)、簡約化部110は、処理対象の原子論理式が「true」である(すなわち、成立する原子論理式である)か判断する(ステップS97)。処理対象の原子論理式が「true」である場合(ステップS97:Yesルート)、簡約化部110は、処理対象の原子論理式を簡約化パス条件から削除する(ステップS99)。一方、処理対象の原子論理式が「true」ではない場合(ステップS97:Noルート)、簡約化部110は、ステップS87において特定された原子論理式を、計算後の原子論理式で置換する(ステップS101)。ステップS99及びステップS101の処理の後、ステップS85の処理に戻る。
以上のような処理を実行すれば、自由シンボル変数及び固定シンボル変数を含むパス条件を簡約化し、自由シンボル変数のみを含む簡約化パス条件を生成できるようになる。
図19及び図20に、簡約化処理の具体例を示す。例えば図19におけるパス条件1901において、固定シンボル変数がp3であるとする。代入部109によってp3に対して固定値「”ZZ0100”」が代入されると、簡約化パス条件1902になる。さらに、簡約化部110によって簡約化パス条件1902が成立するか判断されるが、この簡約化パス条件は成立しないので、最終的に簡約化パス条件1903になる。
また、例えば図20におけるパス条件2001において、自由シンボル変数がparam1であり、固定シンボル変数がparam2及びparam3であるとする。代入部109によってparam2に対して固定値「100」が代入され、param3に対して固定値「”ZZ0100”」が代入されると、簡約化パス条件2002になる。さらに、簡約化部110によって各原子論理式が簡約化されると共に、その原子論理式が成立するか判断される。最終的に、簡約化パス条件2003の形まで簡約化される。
なお、固定値代入後の簡約手順をまとめると、以下のようになる。
(1)各原子論理式に対し、適用できるところが無くなるまで変換ルール(1a)を適用する。
(1a)シンボル変数が関係しない部分式の値を、当該部分式を計算した結果に変換する。
(2)(1)を実施後falseに変換された原子論理式があれば、簡約化パス条件をfalseとする。
(3)(1)及び(2)を実施後falseにならなかった簡約化パス条件については、trueに変換された原子論理式を除去したものを簡約化パス条件とする。
上述のような簡約手順に従って原子論理式が簡約化される様子を図21及び図22の例を用いて説明する。
図21の例においては、パス条件2101の簡約化を行う。まず、手順(1)において変換ルール(1a)を適用すると、簡約化パス条件2102が生成される。この簡約化パス条件に対しさらに変換ルール(1a)を適用すると、簡約化パス条件2103が生成される。そして、簡約化パス条件2103を手順(2)で簡約化することにより、最終的に簡約化パス条件2104を得ることができる。
図22の例においては、パス条件2202の簡約化を行う。まず、手順(1)において変換ルール(1a)を各原子論理式に適用すると、簡約化パス条件2202が生成される。この簡約化パス条件における2番目及び3番目の原子論理式に対しさらに変換ルール(1a)を適用すると、簡約化パス条件2203が生成される。そして、簡約化パス条件2203を手順(3)で簡約化することにより、最終的に簡約化パス条件2204を得ることができる。
図16の説明に戻り、テスト入力生成部115は、簡約化データ格納部111に新たに格納された簡約化パス条件の充足値が有るか判断する(ステップS67)。簡約化パス条件の充足値が有る場合(ステップS67:Yesルート)、処理対象の命令を実際に実行できるので、テスト入力生成部115は、処理対象の命令を実行することを実行エンジン113に要求する。これに応じ、実行エンジン113は、処理対象の命令を実行する(ステップS69)。そしてステップS53の処理に戻る。簡約化パス条件の充足値が無い場合(ステップS67:Noルート)、ステップS73の処理に移行する。
一方、ステップS53において、次の命令が無いと判断された場合(ステップS53:Noルート)、実行エンジン113は、テスト入力生成部115に、テストケース生成処理の実行を要求する。これに応じ、テスト入力生成部115及びテストケース生成部116は、テストケース生成処理を実行する(ステップS71)。テストケース生成処理については、図23を用いて説明する。
まず、テスト入力生成部115は、簡約化データ格納部111に格納されている簡約化パス条件の充足値を算出することにより、自由シンボル変数に関するテスト入力を生成し、メインメモリ等の記憶装置に格納する(図23:ステップS111)。例えば簡約化データ格納部111に「param1>0」という簡約化パス条件が格納されている場合には、「param1=1」というテスト入力を生成する。なお、充足値は、従来よりよく知られている制約ソルバ等を使って算出することができる。
テスト入力生成部115は、固定シンボル変数の固定値を含むテスト入力を生成し、メインメモリ等の記憶装置に格納する(ステップS113)。例えば固定シンボル変数がSDriver.param2及びSDriver.param3である場合には、テスト入力生成部115は、SDriver.param2及びSDriver.param3についての固定値を固定データ格納部107から読み出す。そして、テスト入力生成部115は、例えば「param2=100」及び「param3=”ZZ0100”」というテスト入力を生成する。
テスト入力生成部115は、ステップS111において生成されたテスト入力及びステップS113において生成されたテスト入力をテストケース生成部116に出力する。これに応じ、テストケース生成部116は、テスト入力生成部115から受け取ったテスト入力及び簡約化する前のパス条件を含むテストケースを生成し(ステップS115)、第1テストケース格納部117に格納する。簡約化する前のパス条件は、簡約化データ格納部111において簡約化パス条件に対応付けられているパス条件である。そして処理を終了する。
以上のような処理を実行すれば、簡約化パス条件を満たす充足値と固定値とを含むテスト入力に、簡約化される前のパス条件を対応付けておくことができるようになる。
図16の説明に戻り、実行エンジン113は、処理対象の命令までのパスに分岐命令が有るか判断する(ステップS73)。分岐命令が無い場合(ステップS73:Noルート)、到達可能なパスを実行し尽くしたので、元の処理に戻る。一方、分岐命令が有る場合(ステップS73:Yesルート)、実行エンジン113は、直前の分岐命令にバックトラックする(ステップS75)。
実行エンジン113は、直前の分岐命令に未選択の分岐が有るか(すなわち、未実行のパスが有るか)判断する(ステップS77)。未選択の分岐が無い場合(ステップS77:Noルート)、他の分岐命令を探索するため、ステップS73の処理に戻る。一方、未選択の分岐が有る場合(ステップS77:Yesルート)、実行エンジン113は、未選択の分岐を1つ選択する(ステップS79)。そしてステップS63の処理に移行する。
以上のように、パス条件の生成までは自由シンボル変数と固定シンボル変数との区別無くいずれの変数についてもシンボル化され、シンボリック実行が行われる。これにより、シンボル変数全体に関するパス条件を生成することができるようになる。
従来の方法によってシンボリック実行を繰り返し行った場合、デフォルト値が代入されないシンボル変数のみが関係するパス条件を生成するため、同じパスを通過するテストケースについて異なるパス条件が得られることがある。そのため、テストケースが重複しているか判断することができない。一方、本実施の形態に示した方法の場合、シンボル変数が同じであれば、同じパスを通過するテストケースについて生成されるパス条件は同じになる。これにより、自由シンボル変数及び固定シンボル変数を切り替えつつシンボリック実行を繰り返し行う場合であっても、簡約化する前のパス条件をもとにテストケースの重複を判断できるようになる。
一方で、簡約化パス条件は、自由シンボル変数のみが関係するパス条件であるため、これを充足可能性の判定及びテスト入力の生成に用いることによって、パス爆発による弊害の発生を防ぐことができるようになる。
図24及び図25を用いて、シンボリック実行によるテストケースの生成について説明する。図24の例は、図6に示したプログラムにおける分岐601において条件が成立すると判定された場合である。この例においては、最終的にパス条件2450が生成される。このパス条件を簡約化した簡約化パス条件を満たす充足値が無いと判断されると、このパス条件についてはテストケースを生成しない。
図25の例は、図6に示したプログラムにおける分岐601において条件が成立しないと判定され、分岐602において条件が成立すると判定され、分岐604において条件が成立すると判定された場合である。この例においては、最終的にパス条件2550が生成される。このパス条件を簡約化した簡約化パス条件を満たす充足値が有ると判断されたとすると、例えば、図25におけるテストケース2551が生成される。
図26に、第1テストケース格納部117に格納されるデータの一例を示す。図26の例では、テストケースの識別番号と、テスト入力と、パス条件とが格納される。
図9の説明に戻り、シンボリック実行が完了するとステップS5の処理に戻る。ステップS5において、未処理の組合せが無いと判断された場合(ステップS5:Noルート)、実行制御部106は、除去部118に処理を要求する。これに応じ、除去部118は、絞り込み処理を実行し(ステップS11)、処理を終了する。絞り込み処理については、図27及び図28を用いて説明する。
まず、除去部118は、第1テストケース格納部117に格納されているテストケースのうち未処理のテストケースが有るか判断する(図27:ステップS121)。未処理のテストケースが無い場合(ステップS121:Noルート)、元の処理に戻る。未処理のテストケースが有る場合(ステップS121:Yesルート)、除去部118は、未処理のテストケースを1つ特定する(ステップS123)。
除去部118は、ステップS123において特定されたテストケースに含まれるパス条件と同じパス条件を含むテストケースが第2テストケース格納部119に格納されているか判断する(ステップS125)。同じパス条件を含むテストケースが第2テストケース格納部119に格納されている場合(ステップS125:Yesルート)、重複するテストケースが存在するということなので、ステップS121の処理に戻る。
一方、同じパス条件を含むテストケースが第2テストケース格納部119に格納されていない場合(ステップS125:Noルート)、除去部118は、ステップS123において特定されたテストケースを第2テストケース格納部119に追加する(ステップS127)。そしてステップS121の処理に戻る。
以上のような処理を実行すれば、第1テストケース格納部117に格納されている余分なテストケースを除去できるようになる。
図28に、第2テストケース格納部119に格納されるデータの一例を示す。図28の例では、テストケースの識別番号と、テスト入力と、パス条件とが格納される。図28に示したテストケースは、図26に示したテストケースから一部のテストケースを除去したものである。図26に示したテストケースと比較すると、テストケース4乃至6及びテストケース8が除去されている。これは、テストケース4のパス条件はテストケース1のパス条件と同じであり、テストケース5のパス条件はテストケース2のパス条件と同じであり、テストケース6のパス条件はテストケース3のパス条件と同じであり、テストケース8のパス条件はテストケース1又は4のパス条件と同じであるからである。
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明したテストケース生成装置1の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
なお、上では自由シンボル変数が1つである組合せだけを示したが、自由シンボル変数の数は1つずつには限られない。自由シンボル変数の数は2以上であってもよい。
また、第2テストケース格納部119を設けなくてもよい。この場合には、除去部118が、第1テストケース格納部117に格納されているテストケースの一部を除去すればよい。
なお、上で述べたテストケース生成装置1は、コンピュータ装置であって、図29に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態に係るテストデータ生成方法は、(A)シンボリック実行を繰り返し行うことにより得られる複数のパス条件の各々について、当該パス条件に含まれるシンボル変数の一部に固定値を代入することにより当該パス条件を簡約化した簡約化パス条件を生成し、(B)生成された複数の簡約化パス条件の各々について、当該簡約化パス条件を満たすシンボル変数の値を算出すると共に、算出された当該値と固定値と簡約化する前のパス条件とを含むテストデータを生成し、データ格納部に格納し、(C)データ格納部において同じパス条件を含むテストデータが重複しないように、データ格納部に格納されているテストデータの一部を削除する処理を含む。
このようにすれば、同じパスについて生成されるテストデータは、たとえ簡約化パス条件を満たすシンボル変数の値と固定値との組合せが異なっていたとしても、簡約化する前のパス条件が同じになる。よって、上で述べたようにすれば、余分なテストデータを除去できるようになる。また、簡約化したパス条件を満たすシンボル変数の値を求める処理を行うので、計算量を抑制できるようになる。
また、本テストデータ生成方法が、(D)固定値が代入されない第1のシンボル変数と固定値が代入される第2のシンボル変数との組合せを複数生成する処理をさらに含むようにしてもよい。そして、上で述べた簡約化パス条件を生成する処理において、(a1)当該複数の組合せの各々についてシンボリック実行を行うようにしてもよい。このようにすれば、プログラムにおけるパスを網羅するように繰り返しシンボリック実行を行えるようになる。
また、上で述べた簡約化パス条件を生成する処理において、(a2)パス条件に含まれる第2のシンボル変数に固定値を代入し、パス条件に含まれる少なくともいずれかの論理式が成立しないか判定し、(a3)パス条件に含まれる少なくともいずれかの論理式が成立しないと判定された場合に、充足値が存在しない簡約化パス条件を生成し、(a4)パス条件に含まれる論理式がいずれも成立すると判定された場合に、パス条件に含まれる第2のシンボル変数に固定値を代入することにより簡約化した簡約化パス条件を生成するようにしてもよい。このようにすれば、到達することができるパスについてのみテストデータを生成できるようになる。
また、上で述べた固定値は、シンボリック実行の対象になるプログラムにおいて宣言されているシンボル変数の型に従う値であってもよい。このようにすれば、シンボリック実行を問題なく行うことができるようになる。
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
シンボリック実行を繰り返し行うことにより得られる複数のパス条件の各々について、当該パス条件に含まれるシンボル変数の一部に固定値を代入することにより当該パス条件を簡約化した簡約化パス条件を生成し、
生成された複数の簡約化パス条件の各々について、当該簡約化パス条件を満たすシンボル変数の値を算出すると共に、算出された当該値と前記固定値と簡約化する前のパス条件とを含むテストデータを生成し
生成された前記テストデータの一部において同じパス条件を含むテストデータが重複しないように削除する
処理をコンピュータに実行させるためのテストデータ生成プログラム。
(付記2)
固定値が代入されない第1のシンボル変数と固定値が代入される第2のシンボル変数との組合せを複数生成する
処理をさらに前記コンピュータに実行させ、
前記簡約化パス条件を生成する処理において、
当該複数の組合せの各々についてシンボリック実行を行う
ことを特徴とする付記1記載のテストデータ生成プログラム。
(付記3)
前記簡約化パス条件を生成する処理において、
前記パス条件に含まれる前記第2のシンボル変数について、前記パス条件に含まれる少なくともいずれかの論理式が成立しないか判定し、
前記パス条件に含まれる論理式がいずれも成立すると判定された場合に、前記パス条件に含まれる前記第2のシンボル変数に固定値を代入することにより簡約化した簡約化パス条件を生成する
ことを特徴とする付記2記載のテストデータ生成プログラム。
(付記4)
前記固定値は、シンボリック実行の対象になるプログラムにおいて宣言されているシンボル変数の型に従う値である
ことを特徴とする付記1乃至3のいずれか1つ記載のテストデータ生成プログラム。
(付記5)
シンボリック実行を繰り返し行うことにより得られる複数のパス条件の各々について、当該パス条件に含まれるシンボル変数の一部に固定値を代入することにより当該パス条件を簡約化した簡約化パス条件を生成し、
生成された複数の簡約化パス条件の各々について、当該簡約化パス条件を満たすシンボル変数の値を算出すると共に、算出された当該値と前記固定値と簡約化する前のパス条件とを含むテストデータを生成し
生成された前記テストデータにおいて同じパス条件を含むテストデータが重複しないように削除する
処理をコンピュータが実行するテストデータ生成方法。
(付記6)
シンボリック実行を繰り返し行うことにより得られる複数のパス条件の各々について、当該パス条件に含まれるシンボル変数の一部に固定値を代入することにより当該パス条件を簡約化した簡約化パス条件を生成する第1処理部と、
生成された複数の簡約化パス条件の各々について、当該簡約化パス条件を満たすシンボル変数の値を算出すると共に、算出された当該値と前記固定値と簡約化する前のパス条件とを含むテストデータを生成する第2処理部と、
生成された前記テストデータにおいて同じパス条件を含むテストデータが重複しないように削除する第3処理部と
を有するテストデータ生成装置。
1 テストケース生成装置 101 プログラム格納部
102 ドライバ格納部 103 変数格納部
104 制御部 105 固定データ計算部
106 実行制御部 107 固定データ格納部
108 変換部 109 代入部
110 簡約化部 111 簡約化データ格納部
112 シンボリック実行部 113 実行エンジン
114 パス条件計算部 115 テスト入力生成部
116 テストケース生成部 117 第1テストケース格納部
118 除去部 119 第2テストケース格納部

Claims (5)

  1. シンボリック実行を繰り返し行うことにより得られる複数のパス条件の各々について、当該パス条件に含まれるシンボル変数の一部に固定値を代入することにより当該パス条件を簡約化した簡約化パス条件を生成し、
    生成された複数の簡約化パス条件の各々について、当該簡約化パス条件を満たすシンボル変数の値を算出すると共に、算出された当該値と前記固定値と簡約化する前のパス条件とを含むテストデータを生成し
    生成された前記テストデータの一部において同じパス条件を含むテストデータが重複しないように削除する
    処理をコンピュータに実行させるためのテストデータ生成プログラム。
  2. 固定値が代入されない第1のシンボル変数と固定値が代入される第2のシンボル変数との組合せを複数生成する
    処理をさらに前記コンピュータに実行させ、
    前記簡約化パス条件を生成する処理において、
    当該複数の組合せの各々についてシンボリック実行を行う
    ことを特徴とする請求項1記載のテストデータ生成プログラム。
  3. 前記簡約化パス条件を生成する処理において、
    前記パス条件に含まれる前記第2のシンボル変数について、前記パス条件に含まれる少なくともいずれかの論理式が成立しないか判定し、
    前記パス条件に含まれる論理式がいずれも成立すると判定された場合に、前記パス条件に含まれる前記第2のシンボル変数に固定値を代入することにより簡約化した簡約化パス条件を生成する
    ことを特徴とする請求項2記載のテストデータ生成プログラム。
  4. シンボリック実行を繰り返し行うことにより得られる複数のパス条件の各々について、当該パス条件に含まれるシンボル変数の一部に固定値を代入することにより当該パス条件を簡約化した簡約化パス条件を生成し、
    生成された複数の簡約化パス条件の各々について、当該簡約化パス条件を満たすシンボル変数の値を算出すると共に、算出された当該値と前記固定値と簡約化する前のパス条件とを含むテストデータを生成し
    生成された前記テストデータにおいて同じパス条件を含むテストデータが重複しないように削除する
    処理をコンピュータが実行するテストデータ生成方法。
  5. シンボリック実行を繰り返し行うことにより得られる複数のパス条件の各々について、当該パス条件に含まれるシンボル変数の一部に固定値を代入することにより当該パス条件を簡約化した簡約化パス条件を生成する第1処理部と、
    生成された複数の簡約化パス条件の各々について、当該簡約化パス条件を満たすシンボル変数の値を算出すると共に、算出された当該値と前記固定値と簡約化する前のパス条件とを含むテストデータを生成する第2処理部と、
    生成された前記テストデータにおいて同じパス条件を含むテストデータが重複しないように削除する第3処理部と
    を有するテストデータ生成装置。
JP2013022950A 2013-02-08 2013-02-08 テストデータ生成プログラム、方法及び装置 Active JP6003699B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013022950A JP6003699B2 (ja) 2013-02-08 2013-02-08 テストデータ生成プログラム、方法及び装置
US14/089,215 US9639454B2 (en) 2013-02-08 2013-11-25 Computer-readable recording medium storing therein test data generating program, test data generating method, test data generating apparatus and information processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013022950A JP6003699B2 (ja) 2013-02-08 2013-02-08 テストデータ生成プログラム、方法及び装置

Publications (2)

Publication Number Publication Date
JP2014153908A JP2014153908A (ja) 2014-08-25
JP6003699B2 true JP6003699B2 (ja) 2016-10-05

Family

ID=51298409

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013022950A Active JP6003699B2 (ja) 2013-02-08 2013-02-08 テストデータ生成プログラム、方法及び装置

Country Status (2)

Country Link
US (1) US9639454B2 (ja)
JP (1) JP6003699B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9983977B2 (en) * 2014-02-26 2018-05-29 Western Michigan University Research Foundation Apparatus and method for testing computer program implementation against a design model
JP6316120B2 (ja) * 2014-06-30 2018-04-25 日立オートモティブシステムズ株式会社 テストケース生成システム及びテストケースを記録した記録媒体
JP6389808B2 (ja) * 2015-07-10 2018-09-12 日本電信電話株式会社 計算式生成装置、計算式生成方法、及びプログラム
US10176086B2 (en) * 2016-10-03 2019-01-08 Fujitsu Limited Event-driven software test sequence determination
CN107133174A (zh) * 2017-05-04 2017-09-05 浙江路港互通信息技术有限公司 测试用例代码自动生成装置与方法
US20190129832A1 (en) * 2017-11-02 2019-05-02 Siemens Aktiengesellschaft System and method for test data generation for use in model based testing using source code test annotations and constraint solving
CN112346960B (zh) * 2019-08-08 2023-09-26 腾讯科技(深圳)有限公司 测试信息存储方法、装置、服务器和存储介质

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6442732B1 (en) * 1999-04-21 2002-08-27 Lucent Technologies, Inc. Virtual logic system for solving satisfiability problems using reconfigurable hardware
US7336713B2 (en) * 2001-11-27 2008-02-26 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding data
AU2003220269A1 (en) * 2002-03-14 2003-09-29 Contentguard Holdings, Inc. Method and apparatus for processing usage rights expressions
JP2007011477A (ja) 2005-06-28 2007-01-18 Toshiba Corp 論理回路動作モデル生成装置及び論理回路動作モデル生成方法
US8046746B2 (en) * 2005-08-04 2011-10-25 Microsoft Corporation Symbolic execution of object oriented programs with axiomatic summaries
US7797687B2 (en) * 2005-08-04 2010-09-14 Microsoft Corporation Parameterized unit tests with behavioral purity axioms
US7587636B2 (en) * 2005-08-04 2009-09-08 Microsoft Corporation Unit test generalization
US8533680B2 (en) * 2005-12-30 2013-09-10 Microsoft Corporation Approximating finite domains in symbolic state exploration
US7844951B2 (en) * 2005-12-30 2010-11-30 Microsoft Corporation Specification generation from implementations
US7735027B2 (en) * 2006-07-07 2010-06-08 Siemens Product Lifecycle Management Software Inc. Alignment of product representations
US8347271B1 (en) * 2007-03-05 2013-01-01 Emc Corporation Software testing
US8230409B2 (en) 2007-09-28 2012-07-24 International Business Machines Corporation Code optimization when using multiple reader locks and a non-reader lock
US20090089759A1 (en) 2007-10-02 2009-04-02 Fujitsu Limited System and Method for Providing Symbolic Execution Engine for Validating Web Applications
US8549486B2 (en) * 2008-04-21 2013-10-01 Microsoft Corporation Active property checking
US8131768B2 (en) * 2008-05-08 2012-03-06 Nec Laboratories America, Inc. Symbolic program analysis using term rewriting and generalization
US8468499B2 (en) * 2009-03-16 2013-06-18 Ntt Docomo, Inc. Directed testing for property violations
JP5207314B2 (ja) * 2009-08-10 2013-06-12 日本電信電話株式会社 テストパタン圧縮方法およびテストパタン圧縮システム
US8694966B2 (en) * 2010-03-04 2014-04-08 Oracle International Corporation Identifying test cases to be run after changes to modules of a software application
US8479171B2 (en) * 2010-05-24 2013-07-02 Fujitsu Limited Generating test sets using intelligent variable selection and test set compaction
JP5505227B2 (ja) * 2010-09-22 2014-05-28 富士通株式会社 繰返しシンボリック実行方法、プログラム及び装置
JP5629239B2 (ja) * 2011-05-23 2014-11-19 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ソフトウェアの動作をテストする装置及び方法
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
US9141354B2 (en) * 2012-04-23 2015-09-22 Ecole polytechnique fédérale de Lausanne (EPFL) Advantageous state merging during symbolic analysis

Also Published As

Publication number Publication date
US9639454B2 (en) 2017-05-02
JP2014153908A (ja) 2014-08-25
US20140229918A1 (en) 2014-08-14

Similar Documents

Publication Publication Date Title
JP6003699B2 (ja) テストデータ生成プログラム、方法及び装置
US9424006B2 (en) Execution optimization of mobile applications
US9983984B2 (en) Automated modularization of graphical user interface test cases
JP5786512B2 (ja) インジェクション攻撃を検出するためのセキュリティ・ソフトウェア・モジュールを検証するためのハイブリッド制約条件の求解
JP5786511B2 (ja) ソフトウェア・モジュールの仕様要件を検証するためのハイブリッド制約条件の求解
US20130179863A1 (en) Bug variant detection using program analysis and pattern identification
JP6996629B2 (ja) 検証自動化装置、検証自動化方法、およびプログラム
US11068463B2 (en) System and method for managing log data
JP5440287B2 (ja) シンボリック実行支援プログラム、方法及び装置
JP2018032082A (ja) プログラム生成プログラム、プログラム生成方法、プログラム生成装置及びコンパイルプログラム
JP6481515B2 (ja) 情報処理装置、コンパイル方法、及びコンパイラプログラム
JP5505227B2 (ja) 繰返しシンボリック実行方法、プログラム及び装置
JP6142724B2 (ja) テストデータ生成プログラム、方法及び装置
JP6135466B2 (ja) テストケース抽出プログラム、方法及び装置
JP6116983B2 (ja) エントリーポイント抽出装置
JP2014127091A (ja) テストデータ生成方法、プログラム及び装置
JP2018147106A (ja) プログラム分析装置、プログラム分析方法及びプログラム分析プログラム
Dhatchayani et al. Test Case Generation and Reusing Test Cases for GUI Designed with HTML.
JP6693898B2 (ja) テストケース生成方法、計算機及びプログラム
JP6390217B2 (ja) ソフトウェア変更プログラム、ソフトウェア変更装置、及びソフトウェア変更方法
JP6453685B2 (ja) 演算制御装置、演算制御方法及び演算制御プログラム
JP7059827B2 (ja) ソースコード生成装置
JP2017142733A (ja) ドライバ生成プログラム、装置、及び方法
JP2015069220A (ja) 性能評価プログラム生成装置、方法、及びプログラム
JP6974707B2 (ja) テストプログラム、テスト装置及びテスト方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151007

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160726

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160822

R150 Certificate of patent or registration of utility model

Ref document number: 6003699

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150