JP5505227B2 - Repetitive symbolic execution method, program, and apparatus - Google Patents

Repetitive symbolic execution method, program, and apparatus Download PDF

Info

Publication number
JP5505227B2
JP5505227B2 JP2010212679A JP2010212679A JP5505227B2 JP 5505227 B2 JP5505227 B2 JP 5505227B2 JP 2010212679 A JP2010212679 A JP 2010212679A JP 2010212679 A JP2010212679 A JP 2010212679A JP 5505227 B2 JP5505227 B2 JP 5505227B2
Authority
JP
Japan
Prior art keywords
execution
storage unit
unit
symbolic
symbolic execution
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.)
Expired - Fee Related
Application number
JP2010212679A
Other languages
Japanese (ja)
Other versions
JP2012068869A (en
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 JP2010212679A priority Critical patent/JP5505227B2/en
Publication of JP2012068869A publication Critical patent/JP2012068869A/en
Application granted granted Critical
Publication of JP5505227B2 publication Critical patent/JP5505227B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本技術は、シンボリック実行技術に関する。   The present technology relates to a symbolic execution technology.

コードカバレッジ(code coverage)とは、プログラムの内部構造に対してどれだけ網羅的にテストを行ったかを示す指標である。コードカバレッジには、ステートメントカバレッジ(statement coverage)やブランチカバレッジ(branch coverage)、コンディションカバレッジ(condition coverage)、パスカバレッジ(path coverage)等の種類がある。プログラムのテストを行う際には、このような指標が基準値(例えば100%)に達するようにテストデータやシナリオを設計する。   The code coverage is an index indicating how exhaustively the test is performed on the internal structure of the program. Code coverage includes types such as statement coverage, branch coverage, condition coverage, and path coverage. When testing a program, test data and scenarios are designed so that such an index reaches a reference value (for example, 100%).

例として、図1に示すような制御構造を有するプログラムのテストを行い、ブランチカバレッジを100%にすることを考える。まず、テストデータ{a=11,b=1}を用いてテスト実行を行う。すると、分岐B1、B3及びB4を実行することができる。さらに、テストデータ{a=10,b=1}を用いてテスト実行を行えば、分岐B1、B3及びB5を実行することができる。そして、残りの分岐B2及びB6を実行するために、テストデータ{a=0,b=0}を用いてテスト実行を行う。このようにすれば、(実行した分岐の数)/(全分岐の数)*100=100となり、ブランチカバレッジは100%である。但し、このようなテストデータのセットは、人間がプログラムの内部構造を把握した上で作成するのが一般的であり、非常に手間がかかる。 As an example, consider that a program having a control structure as shown in FIG. 1 is tested and branch coverage is set to 100%. First, test execution is performed using test data {a = 11, b = 1}. The branches B 1 , B 3 and B 4 can then be executed. Further, if the test execution is performed using the test data {a = 10, b = 1}, the branches B 1 , B 3 and B 5 can be executed. Then, in order to execute the remaining branches B 2 and B 6 , test execution is performed using the test data {a = 0, b = 0}. In this way, (the number of branches executed) / (the number of all branches) * 100 = 100, and the branch coverage is 100%. However, such a test data set is generally created by humans after understanding the internal structure of the program, which is very time-consuming.

一方で、シンボリック実行(symbolic execution)という技術を利用してプログラムのテストを行うことが知られている。シンボリック実行は、プログラム内の変数をシンボル化し、シンボルのまま実行を行う技術である。なお、シンボリック実行についての基礎的な事項は、例えば、玉井哲雄、福永光一、「記号実行システム」、情報処理、pp18-28、1982/01/15などに詳しく述べられているので、そちらを参照されたい。   On the other hand, it is known to test a program using a technique called symbolic execution. Symbolic execution is a technique in which variables in a program are converted into symbols and execution is performed with the symbols as they are. The basic matters regarding symbolic execution are described in detail in, for example, Tetsuo Tamai, Koichi Fukunaga, "Symbol Execution System", Information Processing, pp18-28, 1982/01/15, etc. I want to be.

ここで、図1に示すような制御構造を有するプログラムに対してシンボリック実行を行うことを考える。このプログラムには変数a及び変数bが存在するため、変数a及び変数bをシンボル化してシンボリック実行を行う。このプログラムに対してシンボリック実行を行う場合における制御フローを図2に示す。図2に示すように、シンボリック実行では、シンボル化した変数が関わる分岐では、分岐における全てのケースについて実行を行う。これにより、プログラムにおける6つの経路(パス)全てを実行することができるようになっている。すなわち、パスカバレッジは100%である。   Here, consider performing symbolic execution on a program having a control structure as shown in FIG. Since the variable a and variable b exist in this program, the variable a and variable b are symbolized and symbolic execution is performed. FIG. 2 shows a control flow when symbolic execution is performed on this program. As shown in FIG. 2, in symbolic execution, execution is performed for all cases in a branch in a branch involving a symbolized variable. As a result, all six paths in the program can be executed. That is, the path coverage is 100%.

このように、従来のシンボリック実行は、原理的には、全ての経路を実行するようになっている(但し、無限ループを有する等、プログラムの構造によっては全ての経路を実行することができない場合がある)。一方、全ての分岐を実行できればよいのであれば、必ずしも全ての経路を実行しなくてもよい場合が多い。例えば図1の例であれば、「B1→B3→B4」、「B1→B3→B5」及び「B2→B6」という3経路を実行すれば、全ての分岐を網羅することができる。 In this way, in the conventional symbolic execution, in principle, all paths are executed (however, if all paths cannot be executed depending on the structure of the program, such as having an infinite loop) There). On the other hand, as long as all branches can be executed, it is not always necessary to execute all paths. For example, in the example of FIG. 1, if three paths “B 1 → B 3 → B 4 ”, “B 1 → B 3 → B 5 ”, and “B 2 → B 6 ” are executed, all branches are taken. Can be covered.

従って、ブランチカバレッジ等について基準値を達成できればよいという場合において、従来のようにシンボリック実行を行うと、本来は行わなくてもよいテスト実行を行うことになる。これは、図1の例のような単純なプログラムであれば問題は無い。しかし、一般的なサイズのプログラムの場合、プログラム内の分岐構造に起因する組合せ爆発を起こし、膨大な数のテスト実行を行わなければならないため、テスト完了までの時間が非常に長くなる。従って、実質的にはテストが完了しているのに長時間テスト実行を続けることになるため、効率的ではない。   Therefore, when it is sufficient to achieve the reference value for branch coverage or the like, if symbolic execution is performed as in the past, test execution that is not originally performed is performed. If this is a simple program like the example of FIG. 1, there is no problem. However, in the case of a program of a general size, a combination explosion caused by a branch structure in the program occurs, and a huge number of test executions must be performed. Therefore, the time until completion of the test becomes very long. Therefore, since the test execution is continued for a long time even though the test is substantially completed, it is not efficient.

特開2009−87355号公報JP 2009-87355 A

従って、本技術の目的は、一側面によれば、シンボリック実行を用いてより効率的にプログラムのテストを行うための技術を提供することである。   Therefore, the objective of this technique is to provide the technique for testing a program more efficiently using symbolic execution according to one side surface.

本繰返しシンボリック実行方法は、シンボリック実行を実施するシンボリック実行部に対して、分析対象プログラムに定義されている全ての変数をカバーするようにシンボル化対象の変数を変化させつつ繰り返しシンボリック実行を行わせる第1実行ステップと、分析対象プログラムのコード網羅率をシンボリック実行部から取得し、実行結果格納部に格納する取得ステップと、実行結果格納部に格納されているコード網羅率が所定の基準を満たすか判断するステップと、コード網羅率が所定の基準を満たすと判断された場合、分析対象プログラムのテストが完了したことを表すデータを出力データ格納部に格納するステップとを含む。   In this iterative symbolic execution method, the symbolic execution unit that executes symbolic execution repeatedly performs symbolic execution while changing the variables to be symbolized so as to cover all variables defined in the analysis target program. The first execution step, the acquisition step of acquiring the code coverage of the analysis target program from the symbolic execution unit and storing it in the execution result storage unit, and the code coverage rate stored in the execution result storage unit satisfy a predetermined standard And a step of storing, in the output data storage unit, data indicating that the test of the analysis target program is completed when it is determined that the code coverage rate satisfies a predetermined criterion.

シンボリック実行を用いてより効率的にプログラムのテストを行うことができるようになる。   It becomes possible to test the program more efficiently by using symbolic execution.

図1は、テストプログラムの制御構造の一例を示す図である。FIG. 1 is a diagram illustrating an example of a control structure of a test program. 図2は、テストプログラムの制御フローの一例を示す図である。FIG. 2 is a diagram illustrating an example of a control flow of the test program. 図3は、本実施の形態に係るシステム概要図である。FIG. 3 is a system outline diagram according to the present embodiment. 図4は、既定値格納部に格納されているデータの一例を示す図である。FIG. 4 is a diagram illustrating an example of data stored in the default value storage unit. 図5は、分析対象のプログラムを示す図である。FIG. 5 is a diagram showing a program to be analyzed. 図6は、本実施の形態におけるメインの処理フローを示す図である。FIG. 6 is a diagram showing a main processing flow in the present embodiment. 図7は、実行データ格納部に格納されるデータの一例を示す図である。FIG. 7 is a diagram illustrating an example of data stored in the execution data storage unit. 図8は、実行データ格納部に格納されるデータの一例を示す図である。FIG. 8 is a diagram illustrating an example of data stored in the execution data storage unit. 図9は、ドライバ格納部に格納されるデータの一例を示す図である。FIG. 9 is a diagram illustrating an example of data stored in the driver storage unit. 図10は、ドライバ格納部に格納されるデータの一例を示す図である。FIG. 10 is a diagram illustrating an example of data stored in the driver storage unit. 図11は、ドライバコードの一例を示す図である。FIG. 11 is a diagram illustrating an example of the driver code. 図12は、網羅率算出処理の処理フローを示す図である。FIG. 12 is a diagram illustrating a processing flow of the coverage rate calculation processing. 図13は、実行データ格納部に格納されるデータの一例を示す図である。FIG. 13 is a diagram illustrating an example of data stored in the execution data storage unit. 図14は、解析処理の処理フローを示す図である。FIG. 14 is a diagram illustrating a processing flow of analysis processing. 図15は、実行データ格納部に格納されるデータの一例を示す図である。FIG. 15 is a diagram illustrating an example of data stored in the execution data storage unit. 図16は、具体値設定処理の処理フローを示す図である。FIG. 16 is a diagram illustrating a process flow of the specific value setting process. 図17は、充足値格納部に格納されるデータの一例を示す図である。FIG. 17 is a diagram illustrating an example of data stored in the sufficiency value storage unit. 図18は、実行データ格納部に格納されるデータの一例を示す図である。FIG. 18 is a diagram illustrating an example of data stored in the execution data storage unit. 図19は、ドライバ格納部に格納されるデータの一例を示す図である。FIG. 19 is a diagram illustrating an example of data stored in the driver storage unit. 図20は、ドライバ格納部に格納されるデータの一例を示す図である。FIG. 20 is a diagram illustrating an example of data stored in the driver storage unit. 図21は、ドライバコードの一例を示す図である。FIG. 21 is a diagram illustrating an example of the driver code. 図22は、コンピュータの機能ブロック図である。FIG. 22 is a functional block diagram of a computer.

図3に、本実施の形態に係るシステム概要図を示す。図3の例では、例えばLAN(Local Area Network)等のネットワークを介して繰返し実行支援装置1と、シンボリック実行装置3と、判定装置5とを含む。   FIG. 3 shows a system outline diagram according to the present embodiment. The example of FIG. 3 includes a repeated execution support device 1, a symbolic execution device 3, and a determination device 5 via a network such as a LAN (Local Area Network).

繰返し実行支援装置1は、プログラム格納部101と、既定値格納部102と、抽出部103と、実行データ格納部104と、実行パターン生成部105と、ドライバ生成部106と、ドライバ格納部107と、実行要求部108と、網羅率格納部109と、解析部110と、判定要求部111と、充足値格納部112と、出力部113と、出力データ格納部114とを含む。   The repeated execution support apparatus 1 includes a program storage unit 101, a default value storage unit 102, an extraction unit 103, an execution data storage unit 104, an execution pattern generation unit 105, a driver generation unit 106, and a driver storage unit 107. The execution request unit 108, the coverage rate storage unit 109, the analysis unit 110, the determination request unit 111, the sufficiency value storage unit 112, the output unit 113, and the output data storage unit 114.

抽出部103は、プログラム格納部101に格納されている分析対象のプログラム及び既定値格納部102に格納されているデータを用いて処理を行い、処理結果を実行データ格納部104に格納する。実行パターン生成部105は、実行データ格納部104に格納されているデータを用いて処理を行い実行パターンを生成してドライバ格納部107に格納したり、ドライバ生成部106にドライバの生成を指示する処理を行う。ドライバ生成部106は、ドライバ格納部107に格納されている実行パターンに対応するドライバコードを生成し、ドライバ格納部107に格納する。実行要求部108は、ドライバ格納部107に格納されているデータを用いてシンボリック実行装置3にシンボリック実行の実行要求を送信する処理等を行い、処理結果を実行データ格納部104及び網羅率格納部109に格納する。解析部110は、網羅率格納部109及び実行データ格納部104に格納されているデータを用いて処理を行い、処理結果を判定要求部111に通知したり、処理結果を出力データ格納部113に格納する処理等を行う。判定要求部111は、判定装置5に充足値の生成指示を送信したり、実行データ格納部104に格納されているデータを更新する処理等を行う。出力部114は、出力データ格納部113に格納されているデータを表示装置等に表示する処理を行う。   The extraction unit 103 performs processing using the analysis target program stored in the program storage unit 101 and the data stored in the default value storage unit 102, and stores the processing result in the execution data storage unit 104. The execution pattern generation unit 105 performs processing using the data stored in the execution data storage unit 104 to generate an execution pattern and store it in the driver storage unit 107, or instructs the driver generation unit 106 to generate a driver. Process. The driver generation unit 106 generates a driver code corresponding to the execution pattern stored in the driver storage unit 107 and stores it in the driver storage unit 107. The execution request unit 108 performs a process of transmitting a symbolic execution request to the symbolic execution device 3 using the data stored in the driver storage unit 107, and executes the processing result as an execution data storage unit 104 and a coverage rate storage unit. 109 is stored. The analysis unit 110 performs processing using the data stored in the coverage rate storage unit 109 and the execution data storage unit 104, notifies the determination request unit 111 of the processing result, and sends the processing result to the output data storage unit 113. Processing to store is performed. The determination request unit 111 transmits a satisfaction value generation instruction to the determination device 5, or performs a process of updating data stored in the execution data storage unit 104. The output unit 114 performs processing for displaying data stored in the output data storage unit 113 on a display device or the like.

シンボリック実行装置3は、実行部31と、網羅率算出部32とを含む。実行部31は、既存のシンボリック実行を行うモジュールであり、例えばJava(登録商標) PathFinderの拡張であるSymbolic PathFinderなどであってもよい。網羅率算出部32は、実行部31によるシンボリック実行の実行結果を用いて、コード網羅率(例えばブランチカバレッジ)を算出する。網羅率算出部32は、例えばEclEmma(http://www.eclemma.org/)を用いればよい。なお、シンボリック実行部31及び網羅率算出部32は、例えばeclipse(http://www.eclipse.org/)上で実現するようにしてもよい。   The symbolic execution device 3 includes an execution unit 31 and a coverage rate calculation unit 32. The execution unit 31 is a module that performs existing symbolic execution, and may be, for example, a Symbolic PathFinder that is an extension of Java (registered trademark) PathFinder. The coverage rate calculation unit 32 calculates a code coverage rate (for example, branch coverage) using the execution result of the symbolic execution by the execution unit 31. The coverage rate calculation unit 32 may use EclEmma (http://www.eclemma.org/), for example. Note that the symbolic execution unit 31 and the coverage rate calculation unit 32 may be realized on Eclipse (http://www.eclipse.org/), for example.

判定装置5は、充足可能性判定を行う装置(例えばSAT(SATisfiability)ソルバやSMT(Satisfiability Modulo Theory)ソルバ等)であり、繰返し実行支援装置1における判定要求部111からの要求に応じてパスコンディション(論理制約とも呼ばれる)を満たす充足値を生成する。例えば「(10≧x)and(5≦x)」というパスコンディションを充足する充足値の生成を要求された場合、充足値として例えば「7」を生成する。   The determination device 5 is a device that performs satisfiability determination (for example, SAT (SATisfiability) solver, SMT (Satisfiability Modulo Theory) solver, etc.), and a path condition according to a request from the determination request unit 111 in the repeated execution support device 1. Generate a sufficiency value that satisfies (also called a logical constraint). For example, when generation of a sufficiency value that satisfies the path condition “(10 ≧ x) and (5 ≦ x)” is requested, for example, “7” is generated as the sufficiency value.

図4に、既定値格納部102に格納されているデータの一例を示す。図4の例では、変数の型の列と、既定値の列とが含まれる。   FIG. 4 shows an example of data stored in the default value storage unit 102. The example of FIG. 4 includes a variable type column and a default value column.

なお、本実施の形態の処理の対象となる分析対象プログラムは、図5に示したプログラムであるとする。このプログラムの制御構造及び制御フローは、図1及び図2に示したものである。本実施の形態では、図5に示したプログラムのブランチカバレッジが所定基準(例えば100%)に達するようにシンボリック実行を行う。   Assume that the analysis target program to be processed in this embodiment is the program shown in FIG. The control structure and control flow of this program are those shown in FIGS. In the present embodiment, symbolic execution is performed so that the branch coverage of the program shown in FIG. 5 reaches a predetermined standard (for example, 100%).

次に、図6乃至図21を用いて、図3に示したシステムの処理内容について説明する。まず、抽出部103は、プログラム格納部101に格納されている分析対象のプログラム(図5)から、当該分析対象のプログラムに定義されている変数及び当該変数の型を抽出し、実行データ格納部104に格納する(図6:ステップS1)。   Next, processing contents of the system shown in FIG. 3 will be described with reference to FIGS. First, the extraction unit 103 extracts a variable defined in the analysis target program and the type of the variable from the analysis target program (FIG. 5) stored in the program storage unit 101, and executes the execution data storage unit. 104 (FIG. 6: step S1).

図7に、ステップS1が行われた時点で実行データ格納部104に格納されているデータの一例を示す。図7の例では、変数と、変数の型とが格納されるようになっている。   FIG. 7 shows an example of data stored in the execution data storage unit 104 when Step S1 is performed. In the example of FIG. 7, variables and variable types are stored.

また、抽出部103は、ステップS1において抽出された変数の型に対応する具体値を既定値格納部102(図4)から特定し、実行データ格納部104に格納する(ステップS3)。   Further, the extraction unit 103 identifies a specific value corresponding to the variable type extracted in step S1 from the default value storage unit 102 (FIG. 4), and stores it in the execution data storage unit 104 (step S3).

図8に、ステップS3が行われた時点で実行データ格納部104に格納されているデータの一例を示す。図8の例では、変数と、変数の型と、具体値とが格納されるようになっている。   FIG. 8 shows an example of data stored in the execution data storage unit 104 when Step S3 is performed. In the example of FIG. 8, variables, variable types, and specific values are stored.

そして、実行パターン生成部105は、実行データ格納部104(図8)に格納されている変数の各々について実行パターンを生成し、ドライバ格納部107に格納する(ステップS5)。   Then, the execution pattern generation unit 105 generates an execution pattern for each of the variables stored in the execution data storage unit 104 (FIG. 8) and stores it in the driver storage unit 107 (step S5).

図9に、ステップS5が行われた時点でドライバ格納部107に格納されているデータの一例を示す。図9の例に示したように、本実施の形態では、分析対象のプログラムに定義されている変数のうち1つをシンボル化し、残りの変数にはステップS3において特定した具体値を設定する。1行目の実行パターンは、変数aがシンボル化され、変数bには具体値「0」が設定された実行パターンである。2行目の実行パターンは、変数bがシンボル化され、変数aには具体値「0」が設定された実行パターンである。   FIG. 9 shows an example of data stored in the driver storage unit 107 when Step S5 is performed. As shown in the example of FIG. 9, in the present embodiment, one of the variables defined in the analysis target program is symbolized, and the specific values specified in step S3 are set for the remaining variables. The execution pattern in the first line is an execution pattern in which the variable a is symbolized and the specific value “0” is set in the variable b. The execution pattern on the second line is an execution pattern in which the variable b is symbolized and a specific value “0” is set in the variable a.

そして、ドライバ生成部106は、ドライバ格納部107(図9)に格納されている実行パターンの各々に対応するドライバコードを生成し、ドライバ格納部107に格納する(ステップS7)。   Then, the driver generation unit 106 generates a driver code corresponding to each execution pattern stored in the driver storage unit 107 (FIG. 9), and stores it in the driver storage unit 107 (step S7).

図10に、ステップS7が行われた時点でドライバ格納部107に格納されているデータの一例を示す。図10の例では、実行パターンと、ドライバコードとが格納されるようになっている。ここでは、「int a=$,int b=0」という実行パターンに対してはドライバコード1が生成され、「int a=0,int b=$」という実行パターンに対してはドライバコード2が生成されている。   FIG. 10 shows an example of data stored in the driver storage unit 107 when step S7 is performed. In the example of FIG. 10, an execution pattern and a driver code are stored. Here, driver code 1 is generated for the execution pattern “int a = $, int b = 0”, and driver code 2 is generated for the execution pattern “int a = 0, int b = $”. Has been generated.

図11に、ドライバコード1及びドライバコード2の一例を示す。本実施の形態では、図11に示したようなドライバコードと、分析対象のプログラムとを用いて、シンボリック実行装置3においてシンボリック実行を行う。   FIG. 11 shows an example of the driver code 1 and the driver code 2. In the present embodiment, the symbolic execution device 3 performs symbolic execution using the driver code as shown in FIG. 11 and the analysis target program.

図6の説明に戻り、実行要求部108は、網羅率算出処理を実施する(ステップS9)。網羅率算出処理については、図12乃至図14を用いて説明する。   Returning to the description of FIG. 6, the execution requesting unit 108 performs a coverage rate calculation process (step S <b> 9). The coverage rate calculation process will be described with reference to FIGS.

まず、実行要求部108は、ドライバ格納部107に格納されているドライバコードのうち未処理のドライバコードと、プログラム格納部101に格納されている分析対象のプログラムとを含む実行要求をシンボリック実行装置3に送信する(図12:ステップS21)。   First, the execution request unit 108 symbolizes an execution request including an unprocessed driver code among the driver codes stored in the driver storage unit 107 and the analysis target program stored in the program storage unit 101. 3 (FIG. 12: step S21).

これに応じ、シンボリック実行装置3における実行部31は、シンボリック実行を実施する。シンボリック実行では、プログラム内に定義されているパスコンディションのうちシンボル化変数が関連するパスコンディションを通過する毎に当該パスコンディションを蓄積するようになっている。例えば図11に示したドライバコード1と分析対象プログラムとを用いてシンボリック実行を行った場合、「a>0」及び「a≦0」というパスコンディションを蓄積する。そして、実行部31は、蓄積されたパスコンディションを含む実行結果を繰返し実行支援装置1に送信する。   In response to this, the execution unit 31 in the symbolic execution device 3 performs symbolic execution. In the symbolic execution, the path condition is accumulated every time the symbolized variable passes through the associated path condition among the path conditions defined in the program. For example, when symbolic execution is performed using the driver code 1 and the analysis target program shown in FIG. 11, path conditions “a> 0” and “a ≦ 0” are accumulated. Then, the execution unit 31 repeatedly transmits the execution result including the accumulated path condition to the execution support device 1.

また、実行部31によりシンボリック実行が行われると、網羅率算出部32は、ブランチカバレッジを算出する。シンボリック実行装置3では、シンボリック実行時に通過したパスコンディションを実行部31が管理テーブル(図示せず)にて管理しており、当該管理テーブルを用いて分析対象のプログラムの制御フローを把握できるようになっている。網羅率算出部32は、この管理テーブルを用いて分析対象のプログラムの全分岐の数を取得する。図5のプログラムの場合には、全分岐の数は6となる。一方で、図5に示した分析対象プログラムに対してドライバコード1を用いてシンボリック実行を行うと、分岐B1、B2及びB6という3つの分岐を実行することができる。従って、ブランチカバレッジは3/6*100≒50(%)となる。 Further, when symbolic execution is performed by the execution unit 31, the coverage rate calculation unit 32 calculates branch coverage. In the symbolic execution device 3, the execution unit 31 manages the path condition passed at the time of symbolic execution using a management table (not shown) so that the control flow of the analysis target program can be grasped using the management table. It has become. The coverage rate calculation unit 32 acquires the number of all branches of the analysis target program using this management table. In the case of the program of FIG. 5, the total number of branches is 6. On the other hand, when the symbolic execution using driver code 1 for analyte program shown in FIG. 5, it is possible to perform the three branches of the branch B 1, B 2 and B 6. Therefore, the branch coverage is 3/6 * 100≈50 (%).

そして、ドライバコード1を用いてシンボリック実行を行った後、さらにドライバコード2を用いてシンボリック実行を行った場合には、さらに分岐B2、B3、B5及びB6を実行することができる。この場合、ドライバコード1を用いたシンボリック実行の結果と併せると、分岐B1、B2、B3、B5及びB6を実行することができたので、ブランチカバレッジは5/6*100≒83(%)となる。網羅率算出部32は、このようにして算出したブランチカバレッジを繰返し実行支援装置1に送信する。なお、網羅率算出部32は、実行した分岐のデータをメインメモリ等の記憶装置に格納しておき、後に再度ブランチカバレッジを算出する際に用いる。 When symbolic execution is performed using the driver code 1 and then symbolic execution is performed using the driver code 2, further branches B 2 , B 3 , B 5 and B 6 can be executed. . In this case, when combined with the result of the symbolic execution using the driver code 1, the branches B 1 , B 2 , B 3 , B 5 and B 6 can be executed, so that the branch coverage is 5/6 * 100≈ 83 (%). The coverage rate calculation unit 32 repeatedly transmits the branch coverage calculated in this way to the execution support device 1. The coverage rate calculation unit 32 stores the executed branch data in a storage device such as a main memory, and uses it later when calculating branch coverage again.

一方、繰返し実行支援装置1の実行要求部108は、パスコンディションをシンボリック実行装置3から受信し、実行データ格納部104に格納すると共に、ブランチカバレッジをシンボリック実行装置3から受信し、網羅率格納部109に格納する(ステップS23)。なお、網羅率格納部109には、既に受信したブランチカバレッジを更新するように新たに受信したブランチカバレッジを格納する。   On the other hand, the execution request unit 108 of the repeated execution support device 1 receives the path condition from the symbolic execution device 3 and stores it in the execution data storage unit 104, and also receives the branch coverage from the symbolic execution device 3, and the coverage rate storage unit 109 (step S23). The coverage rate storage unit 109 stores the newly received branch coverage so as to update the already received branch coverage.

図13に、ステップS23が行われた時点で実行データ格納部104に格納されているデータの一例を示す。図13の例では、変数と、型と、具体値と、パスコンディションとが格納されるようになっている。   FIG. 13 shows an example of data stored in the execution data storage unit 104 when Step S23 is performed. In the example of FIG. 13, variables, types, specific values, and path conditions are stored.

そして、実行要求部108は、ドライバ格納部107に未処理のドライバコードが有るか判断する(ステップS25)。未処理のドライバコードがあると判断された場合(ステップS25:Yesルート)、未処理のドライバコードについて処理するため、ステップS21に戻る。一方、ドライバ格納部107に未処理のドライバコードが無いと判断された場合(ステップS25:Noルート)、元の処理に戻る。   Then, the execution request unit 108 determines whether there is an unprocessed driver code in the driver storage unit 107 (step S25). If it is determined that there is an unprocessed driver code (step S25: Yes route), the process returns to step S21 to process the unprocessed driver code. On the other hand, when it is determined that there is no unprocessed driver code in the driver storage unit 107 (step S25: No route), the process returns to the original process.

以上のようにしてブランチカバレッジを取得することにより、分析対象のプログラムのテストを完了するか判断できるようになる。また、シンボル化する変数が1つであるので、例えば乗算等の非線形演算を含むプログラムであってもシンボリック実行によるプログラムテストを行うことができるようになる。   By acquiring the branch coverage as described above, it is possible to determine whether or not the test of the analysis target program is completed. In addition, since there is one variable to be symbolized, a program test by symbolic execution can be performed even for a program including a nonlinear operation such as multiplication.

図6の説明に戻り、解析部110は、網羅率格納部109に格納されているブランチカバレッジが100%であるか判断する(ステップS11)。なお、100%ではなく、予め定められた所定の基準値以上であるか判断するようにしてもよい。   Returning to the description of FIG. 6, the analysis unit 110 determines whether the branch coverage stored in the coverage rate storage unit 109 is 100% (step S <b> 11). It may be determined whether it is not 100% or more than a predetermined reference value.

そして、ブランチカバレッジが100%である場合(ステップS11:Yesルート)、解析部110は、プログラムテストが完了したことを表すテスト完了メッセージを生成し、出力データ格納部113に格納する(ステップS17)。そして、出力部114は、出力データ格納部113に格納されているテスト完了メッセージを表示装置に表示する。そして処理を終了する。   When the branch coverage is 100% (step S11: Yes route), the analysis unit 110 generates a test completion message indicating that the program test is completed, and stores it in the output data storage unit 113 (step S17). . Then, the output unit 114 displays the test completion message stored in the output data storage unit 113 on the display device. Then, the process ends.

一方、ブランチカバレッジが100%ではない場合(ステップS11:Noルート)、解析部110は、解析処理を実施する(ステップS13)。解析処理については、図14及び図15を用いて説明する。   On the other hand, when the branch coverage is not 100% (step S11: No route), the analysis unit 110 performs an analysis process (step S13). The analysis process will be described with reference to FIGS.

まず、解析部110は、実行データ格納部104に格納されている変数のうち未処理の変数(以下、処理対象の変数と呼ぶ)を1つ特定する(図14:ステップS41)。そして、解析部110は、実行データ格納部104に、処理対象の変数に対応するパスコンディションが格納されているか判断する(ステップS43)。処理対象の変数に対応するパスコンディションが格納されていないと判断された場合(ステップS43:Noルート)、解析部110は、処理対象の変数に対応付けて判定フラグ「−1」を実行データ格納部104に格納する(ステップS45)。   First, the analysis unit 110 identifies one unprocessed variable (hereinafter referred to as a variable to be processed) among the variables stored in the execution data storage unit 104 (FIG. 14: step S41). Then, the analysis unit 110 determines whether or not a path condition corresponding to the variable to be processed is stored in the execution data storage unit 104 (step S43). When it is determined that the path condition corresponding to the variable to be processed is not stored (step S43: No route), the analysis unit 110 stores the determination flag “−1” in association with the variable to be processed in the execution data. The data is stored in the unit 104 (step S45).

一方、処理対象の変数に対応するパスコンディションが格納されていると判断された場合(ステップS43:Yesルート)、解析部110は、処理対象の変数に対応するパスコンディションのうち未処理のパスコンディション(以下、処理対象のパスコンディションと呼ぶ)を1つ特定する(ステップS47)。   On the other hand, when it is determined that a path condition corresponding to the variable to be processed is stored (step S43: Yes route), the analysis unit 110 performs an unprocessed path condition among the path conditions corresponding to the variable to be processed. One (hereinafter referred to as a path condition to be processed) is identified (step S47).

そして、解析部110は、処理対象の変数に設定した具体値を実行データ格納部104から特定し、当該具体値が処理対象のパスコンディションを充足するか判断する(ステップS49)。処理対象の変数に設定した具体値が処理対象のパスコンディションを充足すると判断された場合(ステップS49:Yesルート)、解析部110は、処理対象のパスコンディションに対応付けて判定フラグ「true」を実行データ格納部104に格納する(ステップS51)。一方、処理対象の変数に設定した具体値が処理対象のパスコンディションを充足しないと判断された場合(ステップS49:Noルート)、解析部110は、処理対象のパスコンディションに対応付けて判定フラグ「false」を実行データ格納部104に格納する(ステップS53)。   Then, the analysis unit 110 identifies the specific value set for the processing target variable from the execution data storage unit 104, and determines whether the specific value satisfies the processing target path condition (step S49). When it is determined that the specific value set in the processing target variable satisfies the processing target path condition (step S49: Yes route), the analysis unit 110 sets the determination flag “true” in association with the processing target path condition. The data is stored in the execution data storage unit 104 (step S51). On the other hand, when it is determined that the specific value set in the processing target variable does not satisfy the processing target path condition (step S49: No route), the analysis unit 110 associates the determination flag “ "false" is stored in the execution data storage unit 104 (step S53).

図15に、ステップS53が行われた時点で実行データ格納部104に格納されているデータの一例を示す。図15の例では、変数と、型と、具体値と、パスコンディションと、判定フラグとが格納されるようになっている。   FIG. 15 shows an example of data stored in the execution data storage unit 104 when step S53 is performed. In the example of FIG. 15, a variable, a type, a specific value, a path condition, and a determination flag are stored.

そして、解析部110は、処理対象の変数について未処理のパスコンディションが有るか判断する(ステップS55)。未処理のパスコンディションが有ると判断された場合(ステップS55:Yesルート)、未処理のパスコンディションについて処理するため、ステップS47の処理に戻る。   Then, the analysis unit 110 determines whether there is an unprocessed path condition for the variable to be processed (step S55). When it is determined that there is an unprocessed path condition (step S55: Yes route), the process returns to the process of step S47 in order to process the unprocessed path condition.

一方、未処理のパスコンディションが無いと判断された場合(ステップS55:Noルート)、解析部110は、実行データ格納部104に未処理の変数が有るか判断する(ステップS57)。未処理の変数が有ると判断された場合(ステップS57:Yesルート)、未処理の変数について処理するため、ステップS41の処理に戻る。   On the other hand, when it is determined that there is no unprocessed path condition (step S55: No route), the analysis unit 110 determines whether there is an unprocessed variable in the execution data storage unit 104 (step S57). If it is determined that there is an unprocessed variable (step S57: Yes route), the process returns to step S41 to process the unprocessed variable.

一方、未処理の変数が無いと判断された場合(ステップS57:Noルート)、解析部110は、判定フラグ「false」が対応付けられているパスコンディションが実行データ格納部104に格納されているか判断する(ステップS59)。判定フラグ「false」が対応付けられているパスコンディションが実行データ格納部104に格納されていないと判断された場合(ステップS59:Noルート)、後で説明する具体値設定処理を行うことはできないため、処理は端子Aを介して終了する。一方、判定フラグ「false」が対応付けられているパスコンディションが実行データ格納部104に格納されていると判断された場合(ステップS59:Yesルート)、元の処理に戻る。   On the other hand, if it is determined that there is no unprocessed variable (step S57: No route), the analysis unit 110 stores in the execution data storage unit 104 the path condition associated with the determination flag “false”. Judgment is made (step S59). When it is determined that the path condition associated with the determination flag “false” is not stored in the execution data storage unit 104 (step S59: No route), the specific value setting process described later cannot be performed. Therefore, the process ends via the terminal A. On the other hand, when it is determined that the path condition associated with the determination flag “false” is stored in the execution data storage unit 104 (step S59: Yes route), the process returns to the original process.

以上のような処理を実施することにより、既に行われたシンボリック実行において設定されていた具体値によっては充足できないパスコンディションを特定することができるようになる。   By performing the processing as described above, it becomes possible to specify a path condition that cannot be satisfied by the specific value set in the symbolic execution that has already been performed.

図6の説明に戻り、判定要求部111は、具体値設定処理を実施する(ステップS15)。具体値設定処理については、図16乃至図18を用いて説明する。   Returning to the description of FIG. 6, the determination requesting unit 111 performs a specific value setting process (step S <b> 15). The specific value setting process will be described with reference to FIGS.

まず、判定要求部111は、実行データ格納部104から未処理の変数(以下、処理対象の変数と呼ぶ)を1つ特定する(図16:ステップS71)。そして、判定要求部111は、処理対象の変数に判定フラグ「−1」が設定されているか判断する(ステップS73)。すなわち、処理対象の変数に関連するパスコンディションが存在するか判断する。処理対象の変数に判定フラグ「−1」が設定されていると判断された場合(ステップS73:Yesルート)、ステップS77の処理に移行する。   First, the determination request unit 111 specifies one unprocessed variable (hereinafter referred to as a variable to be processed) from the execution data storage unit 104 (FIG. 16: step S71). Then, the determination request unit 111 determines whether or not the determination flag “−1” is set in the variable to be processed (step S73). That is, it is determined whether there is a path condition related to the variable to be processed. When it is determined that the determination flag “−1” is set in the variable to be processed (step S73: Yes route), the process proceeds to step S77.

一方、処理対象の変数に判定フラグ「−1」が設定されていないと判断された場合(ステップS73:Noルート)、判定要求部111は、処理対象の変数に関連するパスコンディションに判定フラグ「false」が設定されているか判断する(ステップS75)。処理対象の変数に関連するパスコンディションに判定フラグ「false」が設定されていないと判断された場合(ステップS75:Noルート)、判定要求部111は、元の具体値(ステップS3において特定した具体値)を処理対象の変数に対応付けて充足値格納部112に格納する(ステップS77)。   On the other hand, when it is determined that the determination flag “−1” is not set for the variable to be processed (step S <b> 73: No route), the determination request unit 111 determines that the determination flag “ It is determined whether “false” is set (step S75). When it is determined that the determination flag “false” is not set in the path condition related to the variable to be processed (step S75: No route), the determination request unit 111 determines the original specific value (the specific specified in step S3). Value) is stored in the satisfaction value storage unit 112 in association with the variable to be processed (step S77).

一方、処理対象の変数に関連するパスコンディションに判定フラグ「false」が設定されていると判断された場合(ステップS75:Yesルート)、判定要求部111は、処理対象の変数、当該変数の型及び判定フラグが「false」であるパスコンディションを含む判定要求を判定装置5に送信する(ステップS79)。   On the other hand, when it is determined that the determination flag “false” is set in the path condition related to the variable to be processed (step S75: Yes route), the determination request unit 111 displays the variable to be processed and the type of the variable And the determination request | requirement containing the path condition whose determination flag is "false" is transmitted to the determination apparatus 5 (step S79).

なお、ステップS79の処理に応じ、判定装置5は、受信したパスコンディションを充足する具体値を生成する処理を行う。例えば型が「int」(整数)である変数aについてパスコンディション「a>0」を充足する具体値を生成する場合、判定装置5は例えば「1」を生成する。そして、判定装置5は、生成した具体値を含む判定結果を繰返し実行支援装置1に送信する。   In addition, according to the process of step S79, the determination apparatus 5 performs the process which produces | generates the specific value which satisfies the received path condition. For example, when generating a specific value that satisfies the path condition “a> 0” for the variable a whose type is “int” (integer), the determination device 5 generates, for example, “1”. Then, the determination device 5 transmits the determination result including the generated specific value to the repeated execution support device 1.

一方、繰返し実行支援装置1の判定要求部111は、生成された具体値を含む判定結果を判定装置5から受信し(ステップS81)、充足値格納部112に格納する(ステップS83)。   On the other hand, the determination request unit 111 of the repeated execution support device 1 receives the determination result including the generated specific value from the determination device 5 (step S81) and stores it in the sufficiency value storage unit 112 (step S83).

図17に、ステップS83が行われた時点で充足値格納部112に格納されているデータの一例を示す。図17の例では、変数と、変数の型と、パスコンディションと、具体値とが格納されるようになっている。なお、ステップS77の処理が行われた変数については、パスコンディションの列にはデータは格納されない。   FIG. 17 shows an example of data stored in the sufficiency value storage unit 112 when step S83 is performed. In the example of FIG. 17, variables, variable types, path conditions, and specific values are stored. Note that no data is stored in the path condition column for the variable for which the process of step S77 has been performed.

そして、判定要求部111は、実行データ格納部104に未処理の変数が有るか判断する(ステップS85)。未処理の変数が有ると判断された場合(ステップS85:Yesルート)、未処理の変数について処理を実施するため、ステップS71の処理に戻る。一方、未処理の変数が無いと判断された場合(ステップS85:Noルート)、判定要求部111は、充足値格納部112に格納されている変数、型及び具体値で実行データ格納部104を更新する(ステップS87)。そして、元の処理に戻る。   Then, the determination request unit 111 determines whether there is an unprocessed variable in the execution data storage unit 104 (step S85). When it is determined that there is an unprocessed variable (step S85: Yes route), the process returns to the process of step S71 in order to perform the process on the unprocessed variable. On the other hand, when it is determined that there is no unprocessed variable (step S85: No route), the determination request unit 111 sets the execution data storage unit 104 with the variables, types, and specific values stored in the satisfaction value storage unit 112. Update (step S87). Then, the process returns to the original process.

図18に、ステップS87が行われた時点で実行データ格納部104に格納されているデータの一例を示す。図18の例では、変数と、変数の型と、具体値とが格納されるようになっている。   FIG. 18 shows an example of data stored in the execution data storage unit 104 when step S87 is performed. In the example of FIG. 18, variables, variable types, and specific values are stored.

以上のようにして生成された具体値を用いて再度シンボリック実行を行えば、既に行われたシンボリック実行によっては実行できなかったパスを実行できるようになり、コード網羅率を高くすることができるようになる。   If symbolic execution is performed again using the specific values generated as described above, a path that could not be executed by symbolic execution already performed can be executed, and the code coverage rate can be increased. become.

具体値設定処理(S15)が行われると、処理はステップS5に戻り、新たに設定した具体値を用いて再び上で述べたような処理が行われる。以下では、処理がステップS5に戻った後、ステップS11において「ブランチカバレッジが100%」であると判断されるまでに行われる処理を簡単に説明する。   When the specific value setting process (S15) is performed, the process returns to step S5, and the process as described above is performed again using the newly set specific value. In the following, the process performed after the process returns to step S5 and before it is determined in step S11 that “branch coverage is 100%” will be briefly described.

まず、実行パターン生成部105は、実行データ格納部104(図18)に格納されている変数の各々について実行パターンを生成し、ドライバ格納部107に格納する(ステップS5)。   First, the execution pattern generation unit 105 generates an execution pattern for each variable stored in the execution data storage unit 104 (FIG. 18) and stores it in the driver storage unit 107 (step S5).

図19に、ステップS5の処理が行われた時点でドライバ格納部107に格納されているデータの一例を示す。1行目の実行パターンは、変数aがシンボル化され、変数bには具体値「1」(ステップS15において生成された具体値)が設定された実行パターンである。2行目の実行パターンは、変数bがシンボル化され、変数aには具体値「1」(ステップS15において生成された具体値)が設定された実行パターンである。   FIG. 19 shows an example of data stored in the driver storage unit 107 when the process of step S5 is performed. The execution pattern in the first line is an execution pattern in which variable a is symbolized and specific value “1” (the specific value generated in step S15) is set in variable b. The execution pattern on the second line is an execution pattern in which the variable b is symbolized and a specific value “1” (the specific value generated in step S15) is set in the variable a.

そして、ドライバ生成部106は、ドライバ格納部107(図19)に格納されている実行パターンの各々に対応するドライバコードを生成し、ドライバ格納部107に格納する(ステップS7)。   Then, the driver generation unit 106 generates a driver code corresponding to each execution pattern stored in the driver storage unit 107 (FIG. 19), and stores it in the driver storage unit 107 (step S7).

図20に、ステップS7が行われた時点でドライバ格納部107に格納されているデータの一例を示す。図20の例では、実行パターンと、ドライバコードとが格納されるようになっている。ここでは、「int a=$,int b=1」という実行パターンにはドライバコード3が生成され、「int a=1,int b=$」という実行パターンにはドライバコード4が生成されている。なお、図21は、ドライバコード3及びドライバコード4の一例を示す図である。   FIG. 20 shows an example of data stored in the driver storage unit 107 when step S7 is performed. In the example of FIG. 20, an execution pattern and a driver code are stored. Here, the driver code 3 is generated for the execution pattern “int a = $, int b = 1”, and the driver code 4 is generated for the execution pattern “int a = 1, int b = $”. . FIG. 21 is a diagram illustrating an example of the driver code 3 and the driver code 4.

そして、実行要求部108は、網羅率算出処理を実施する(ステップS9)。網羅率算出処理については、図12乃至図14を用いて説明したとおりである。ここでは、ドライバコード3を用いてシンボリック実行を行うと、分岐B1、B2、B3、B4及びB5を実行することができる。また、ドライバコード4を用いてシンボリック実行を行うと、分岐B1、B3、B4及びB6を実行することができる。そして、再度網羅率を算出する際には、上で述べたように、既に行ったシンボリック実行の実行結果と今回行ったシンボリック実行の実行結果とを用いる。既に行ったシンボリック実行では分岐B1、B2、B3、B5及びB6を実行しており、今回行ったシンボリック実行ではB4を新たに実行している。従って、ブランチカバレッジは6/6*100=100(%)となる。 Then, the execution request unit 108 performs a coverage rate calculation process (step S9). The coverage rate calculation process is as described with reference to FIGS. Here, when symbolic execution is performed using the driver code 3, the branches B 1 , B 2 , B 3 , B 4 and B 5 can be executed. If symbolic execution is performed using the driver code 4, branches B 1 , B 3 , B 4 and B 6 can be executed. When calculating the coverage rate again, as described above, the execution result of the symbolic execution already performed and the execution result of the symbolic execution performed this time are used. In the already executed symbolic execution, the branches B 1 , B 2 , B 3 , B 5 and B 6 are executed, and in the symbolic execution executed this time, B 4 is newly executed. Therefore, the branch coverage is 6/6 * 100 = 100 (%).

そして、解析部110は、ブランチカバレッジが100%であるか判断する(ステップS11)。ここでは、ブランチカバレッジが100%であると判断されるので(ステップS11:Yesルート)、処理はステップS17を経て終了する。   Then, the analysis unit 110 determines whether the branch coverage is 100% (step S11). Here, since it is determined that the branch coverage is 100% (step S11: Yes route), the process ends through step S17.

以上のような処理を実施することにより、ブランチカバレッジが基準値を満たすようなテストをシンボリック実行を用いて効率的に行うことができるようになる。   By performing the processing as described above, it is possible to efficiently perform a test such that the branch coverage satisfies the reference value using symbolic execution.

以上本技術の一実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、上で説明した繰返し実行支援装置1及びシンボリック実行装置3の機能ブロック図は必ずしも実際のプログラムモジュール構成に対応するものではない。また、1台ではなく複数台のコンピュータで機能を分担するようにしてもよい。   Although one embodiment of the present technology has been described above, the present technology is not limited to this. For example, the functional block diagrams of the repeated execution support device 1 and the symbolic execution device 3 described above do not necessarily correspond to an actual program module configuration. The functions may be shared by a plurality of computers instead of one.

また、上で説明した各テーブルの構成は一例であって、必ずしも上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。   Further, the configuration of each table described above is an example, and the configuration as described above is not necessarily required. Further, in the processing flow, the processing order can be changed if the processing result does not change. Further, it may be executed in parallel.

また、上で述べた例では、ブランチカバレッジを100%にするための処理について説明したが、ステートメントカバレッジやコンディションカバレッジ等についても同様の処理にて対応することができる。   In the example described above, the processing for setting the branch coverage to 100% has been described. However, the same processing can be applied to statement coverage, condition coverage, and the like.

また、繰返し実行支援装置1、シンボリック実行装置3及び判定装置5は一体であってもよい。   Further, the repeated execution support device 1, the symbolic execution device 3, and the determination device 5 may be integrated.

なお、上で述べた繰返し実行支援装置1、シンボリック実行装置3及び判定装置5は、コンピュータ装置であって、図22に示すように、メモリ2501とCPU2503とハードディスク・ドライブ(HDD)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及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。   The repetitive execution support device 1, symbolic execution device 3, and determination device 5 described above are computer devices, and as shown in FIG. 22, a memory 2501, a CPU 2503, a hard disk drive (HDD) 2505, and a display device. A display control unit 2507 connected to 2509, a drive device 2513 for the removable disk 2511, an input device 2515, and a communication control unit 2517 for connecting to a network are connected by a bus 2519. An operating system (OS) and an application program for executing the processing in this embodiment are stored in the HDD 2505, and are read from the HDD 2505 to the memory 2501 when executed by the CPU 2503. The CPU 2503 controls the display control unit 2507, the communication control unit 2517, and the drive device 2513 according to the processing content of the application program, and performs a predetermined operation. Further, data in the middle of processing is mainly stored in the memory 2501, but may be stored in the HDD 2505. In an embodiment of the present technology, an application program for performing the above-described processing is stored in a computer-readable removable disk 2511 and distributed, and installed from the drive device 2513 to the HDD 2505. In some cases, the HDD 2505 may be installed via a network such as the Internet and the communication control unit 2517. Such a computer apparatus realizes various functions as described above by organically cooperating hardware such as the CPU 2503 and the memory 2501 described above and programs such as the OS and application programs. .

なお、図3に示した抽出部103及び実行パターン生成部105等の各処理部は、CPU2503及びプログラムの組み合わせ、すなわち、CPU2503がプログラムを実行することにより実現してもよい。より具体的には、CPU2503は、HDD2505又はメモリ2501に記憶されたプログラムに従った動作を行うことで、上で述べたような処理部として機能してもよい。   Note that the processing units such as the extraction unit 103 and the execution pattern generation unit 105 illustrated in FIG. 3 may be realized by a combination of the CPU 2503 and the program, that is, the CPU 2503 executing the program. More specifically, the CPU 2503 may function as a processing unit as described above by performing an operation according to a program stored in the HDD 2505 or the memory 2501.

また、図3に示したプログラム格納部101及び既定値格納部102等の各データ格納部は、図22におけるメモリ2501やHDD2505等として実現してもよい。   Each data storage unit such as the program storage unit 101 and the default value storage unit 102 illustrated in FIG. 3 may be realized as the memory 2501 or the HDD 2505 in FIG.

以上述べた本技術の実施の形態をまとめると以下のようになる。   The embodiments of the present technology described above are summarized as follows.

本繰返しシンボリック実行方法は、(A)シンボリック実行を実施するシンボリック実行部に対して、分析対象プログラムに定義されている全ての変数をカバーするようにシンボル化対象の変数を変化させつつ繰り返しシンボリック実行を行わせる第1実行ステップと、(B)分析対象プログラムのコード網羅率(例えばブランチカバレッジやステートメントカバレッジ等)をシンボリック実行部から取得し、実行結果格納部に格納する取得ステップと、(C)実行結果格納部に格納されているコード網羅率が所定の基準を満たすか判断するステップと、(D)コード網羅率が所定の基準を満たすと判断された場合、分析対象プログラムのテストが完了したことを表すデータを出力データ格納部に格納するステップとを含む。   This repetitive symbolic execution method is (A) Symbolic execution unit that executes symbolic execution Iterative symbolic execution while changing variables to be symbolized so as to cover all variables defined in the analysis target program (B) an acquisition step of acquiring a code coverage rate (for example, branch coverage or statement coverage) of the analysis target program from the symbolic execution unit and storing it in the execution result storage unit; A step of determining whether or not the code coverage rate stored in the execution result storage unit satisfies a predetermined criterion; and (D) when it is determined that the code coverage rate satisfies a predetermined criterion, the test of the analysis target program is completed Storing data representing this in the output data storage unit.

上で述べた方法では、従来のように全ての変数をシンボル化して一度にシンボリック実行を実施するのではなく、カバレッジは低いが高速に処理可能な個別のシンボリック実行を繰り返し実行するようになっている。但し、個別のシンボリック実行のカバレッジを累積した結果であるコード網羅率が所定の基準を満たせばテストとして十分であり、全ての変数をシンボル化して一度にシンボリック実行を行う場合のように、当該シンボリック実行内において余分なテストを行ってしまうというような事態が抑制されることが期待される。従って、プログラムのテストが効率化される。   In the method described above, instead of symbolizing all variables and executing symbolic execution at once as in the past, individual symbolic execution that has low coverage but can be processed at high speed is executed repeatedly. Yes. However, if the code coverage rate, which is the result of accumulating the coverage of individual symbolic executions, meets the predetermined criteria, it is sufficient as a test, and the symbolic execution is performed as if all variables were symbolized and executed at once. It is expected that the situation where an excessive test is performed in the execution is suppressed. Therefore, the test of the program is made efficient.

また、上で述べた取得ステップが、第1実行ステップにおけるシンボリック実行により得られるパスコンディションのデータをシンボリック実行部から取得し、実行結果格納部に格納するステップを含むようにしてもよい。そして、上で述べた本方法は、(E)実行結果格納部に格納されているパスコンディションの各々について、分析対象プログラムに定義されている変数毎に当該変数に設定した具体値が格納されているデータ格納部から、当該パスコンディションに関連する変数に設定した具体値を特定し、特定された当該具体値が当該パスコンディションを充足するという条件を満たすか判断する判断ステップと、(F)判断ステップにおいて条件を満たさないと判断されたパスコンディションを充足する具体値を生成する生成ステップと、(G)シンボリック実行部に対して、分析対象プログラムに定義されている全ての変数をカバーするようにシンボル化対象の変数を変化させつつ条件を満たさないと判断されたパスコンディションに関連する変数に具体値を設定する場合には生成ステップにおいて生成された具体値を設定して繰り返しシンボリック実行を行わせる第2実行ステップと、(H)第1実行ステップの実行結果と第2実行ステップの実行結果とを用いて算出されたコード網羅率である累積コード網羅率をシンボリック実行部から取得し、実行結果格納部に格納するステップと、(I)実行結果格納部に格納されている累積コード網羅率が所定の基準を満たすか判断するステップと、(J)累積コード網羅率が所定の基準を満たすと判断された場合、分析対象プログラムのテストが完了したことを表すデータを出力データ格納部に格納するステップとをさらに含むようにしてもよい。このようにすれば、既に行ったシンボリック実行によっては実行できていないパスを実行できるようになるので、累積コード網羅率を高くすることができる。   Further, the acquisition step described above may include a step of acquiring path condition data obtained by symbolic execution in the first execution step from the symbolic execution unit and storing the data in the execution result storage unit. In the method described above, (E) for each path condition stored in the execution result storage unit, a specific value set in the variable is stored for each variable defined in the analysis target program. A determination step of identifying a specific value set in a variable related to the path condition from a data storage unit and determining whether the specified specific value satisfies a condition that the path condition is satisfied; (F) determination A generation step for generating a specific value that satisfies the path condition determined not to satisfy the condition in the step, and (G) a symbolic execution unit that covers all variables defined in the analysis target program Variables related to path conditions that are determined not to satisfy the conditions while changing the variables to be symbolized In the case of setting a value, a second execution step in which the specific value generated in the generation step is set and symbolic execution is repeatedly performed; (H) the execution result of the first execution step and the execution result of the second execution step; A cumulative code coverage rate that is a code coverage rate calculated by using the symbolic execution unit and storing it in the execution result storage unit; and (I) a cumulative code coverage rate stored in the execution result storage unit is A step of determining whether or not a predetermined standard is satisfied; and (J) when it is determined that the accumulated code coverage rate satisfies the predetermined standard, data indicating that the test of the analysis target program is completed is stored in the output data storage unit A step may be further included. In this way, a path that cannot be executed by the symbolic execution that has already been performed can be executed, so that the cumulative code coverage rate can be increased.

また、上で述べた第1実行ステップ及び第2実行ステップにおいて、シンボル化対象の変数を1つとし、分析対象プログラムに定義されている全ての変数をカバーするように当該シンボル化対象の変数を変化させるようにしてもよい。このように、シンボル化対象の変数を1つとすれば、非線形演算(例えば変数同士の乗算等)を含むプログラムであってもシンボリック実行を行うことができるようになる。   Further, in the first execution step and the second execution step described above, one variable to be symbolized is set, and the variable to be symbolized is covered so as to cover all variables defined in the analysis target program. It may be changed. In this way, if there is one variable to be symbolized, it is possible to perform symbolic execution even for a program that includes a non-linear operation (for example, multiplication of variables).

なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。   A program for causing a computer to perform the processing according to the above method can be created. The program can be a computer-readable storage medium such as a flexible disk, a CD-ROM, a magneto-optical disk, a semiconductor memory, a hard disk, or the like. It is stored in a storage device. The intermediate processing result is temporarily stored in a storage device such as a main memory.

以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。   The following supplementary notes are further disclosed with respect to the embodiments including the above examples.

(付記1)
シンボリック実行を実施するシンボリック実行部に対して、分析対象プログラムに定義されている全ての変数をカバーするようにシンボル化対象の変数を変化させつつ繰り返しシンボリック実行を行わせる第1実行ステップと、
前記分析対象プログラムのコード網羅率を前記シンボリック実行部から取得し、実行結果格納部に格納する取得ステップと、
前記実行結果格納部に格納されている前記コード網羅率が所定の基準を満たすか判断するステップと、
前記コード網羅率が前記所定の基準を満たすと判断された場合、前記分析対象プログラムのテストが完了したことを表すデータを出力データ格納部に格納するステップと、
を含み、コンピュータにより実行される繰返しシンボリック実行方法。
(Appendix 1)
A first execution step in which a symbolic execution unit that performs symbolic execution repeatedly performs symbolic execution while changing variables to be symbolized so as to cover all variables defined in the analysis target program;
An acquisition step of acquiring the code coverage of the analysis target program from the symbolic execution unit and storing it in the execution result storage unit;
Determining whether the code coverage rate stored in the execution result storage unit satisfies a predetermined criterion;
When it is determined that the code coverage rate satisfies the predetermined criterion, storing data indicating that the test of the analysis target program is completed in an output data storage unit;
A symbolic execution method that is executed by a computer.

(付記2)
前記取得ステップが、
前記第1実行ステップにおけるシンボリック実行により得られるパスコンディションのデータを前記シンボリック実行部から取得し、前記実行結果格納部に格納するステップ
を含み、
前記実行結果格納部に格納されているパスコンディションの各々について、前記分析対象プログラムに定義されている変数毎に当該変数に設定した具体値が格納されているデータ格納部から、当該パスコンディションに関連する変数に設定した具体値を特定し、特定された当該具体値が当該パスコンディションを充足するという条件を満たすか判断する判断ステップと、
前記判断ステップにおいて前記条件を満たさないと判断されたパスコンディションを充足する具体値を生成する生成ステップと、
前記シンボリック実行部に対して、前記分析対象プログラムに定義されている全ての変数をカバーするようにシンボル化対象の変数を変化させ、前記条件を満たさないと判断されたパスコンディションに関連する変数に具体値を設定する場合には前記生成ステップにおいて生成された具体値を設定して繰り返しシンボリック実行を行わせる第2実行ステップと、
前記第1実行ステップの実行結果と前記第2実行ステップの実行結果とを用いて算出されたコード網羅率である累積コード網羅率を前記シンボリック実行部から取得し、前記実行結果格納部に格納するステップと、
前記実行結果格納部に格納されている前記累積コード網羅率が前記所定の基準を満たすか判断するステップと、
前記累積コード網羅率が前記所定の基準を満たすと判断された場合、前記分析対象プログラムのテストが完了したことを表すデータを前記出力データ格納部に格納するステップと、
をさらに含む付記1記載の繰返しシンボリック実行方法。
(Appendix 2)
The obtaining step comprises
Including acquiring path condition data obtained by symbolic execution in the first execution step from the symbolic execution unit and storing the data in the execution result storage unit;
For each of the path conditions stored in the execution result storage unit, from the data storage unit storing the specific value set for the variable for each variable defined in the analysis target program, related to the path condition Determining a specific value set in the variable to be determined, and determining whether the specified specific value satisfies a condition that the path condition is satisfied;
A generating step for generating a specific value satisfying the path condition determined not to satisfy the condition in the determining step;
For the symbolic execution unit, the variable to be symbolized is changed so as to cover all variables defined in the analysis target program, and the variable related to the path condition determined not to satisfy the condition is set. A second execution step for setting a specific value and setting the specific value generated in the generation step to perform symbolic execution repeatedly;
The cumulative code coverage, which is the code coverage calculated using the execution result of the first execution step and the execution result of the second execution step, is acquired from the symbolic execution unit and stored in the execution result storage unit. Steps,
Determining whether the cumulative code coverage rate stored in the execution result storage unit satisfies the predetermined criterion;
When it is determined that the cumulative code coverage rate satisfies the predetermined criterion, storing data indicating that the test of the analysis target program is completed in the output data storage unit;
The repetitive symbolic execution method according to appendix 1, further comprising:

(付記3)
前記第1実行ステップ及び前記第2実行ステップにおいて、シンボル化対象の変数を1つとし、前記分析対象プログラムに定義されている全ての変数をカバーするように当該シンボル化対象の変数を変化させる
ことを特徴とする付記2記載の繰返しシンボリック実行方法。
(Appendix 3)
In the first execution step and the second execution step, there is one variable to be symbolized, and the variable to be symbolized is changed so as to cover all variables defined in the analysis target program. The iterative symbolic execution method according to supplementary note 2, characterized by:

(付記4)
シンボリック実行を実施するシンボリック実行部に対して、分析対象プログラムに定義されている全ての変数をカバーするようにシンボル化対象の変数を変化させつつ繰り返しシンボリック実行を行わせる実行部と、
前記分析対象プログラムのコード網羅率を前記シンボリック実行部から取得し、実行結果格納部に格納する取得部と、
前記実行結果格納部に格納されている前記コード網羅率が所定の基準を満たすか判断し、前記コード網羅率が前記所定の基準を満たすと判断された場合に、前記分析対象プログラムのテストが完了したことを表すデータを出力データ格納部に格納する判断部と、
を有する繰返しシンボリック実行装置。
(Appendix 4)
An execution unit that repeatedly performs symbolic execution while changing the variables to be symbolized so as to cover all the variables defined in the analysis target program with respect to the symbolic execution unit that performs symbolic execution,
An acquisition unit that acquires the code coverage of the analysis target program from the symbolic execution unit and stores the code coverage rate in an execution result storage unit;
It is determined whether the code coverage rate stored in the execution result storage unit satisfies a predetermined criterion, and when it is determined that the code coverage rate satisfies the predetermined criterion, the test of the analysis target program is completed A determination unit that stores data representing that in the output data storage unit;
A recursive symbolic execution device.

(付記5)
シンボリック実行を実施するシンボリック実行部に対して、分析対象プログラムに定義されている全ての変数をカバーするようにシンボル化対象の変数を変化させつつ繰り返しシンボリック実行を行わせる第1実行ステップと、
前記分析対象プログラムのコード網羅率を前記シンボリック実行部から取得し、実行結果格納部に格納する取得ステップと、
前記実行結果格納部に格納されている前記コード網羅率が所定の基準を満たすか判断するステップと、
前記コード網羅率が前記所定の基準を満たすと判断された場合、前記分析対象プログラムのテストが完了したことを表すデータを出力データ格納部に格納するステップと、
を、コンピュータに実行させるための繰返しシンボリック実行プログラム。
(Appendix 5)
A first execution step in which a symbolic execution unit that performs symbolic execution repeatedly performs symbolic execution while changing variables to be symbolized so as to cover all variables defined in the analysis target program;
An acquisition step of acquiring the code coverage of the analysis target program from the symbolic execution unit and storing it in the execution result storage unit;
Determining whether the code coverage rate stored in the execution result storage unit satisfies a predetermined criterion;
When it is determined that the code coverage rate satisfies the predetermined criterion, storing data indicating that the test of the analysis target program is completed in an output data storage unit;
Is a repeated symbolic execution program for causing a computer to execute.

1 繰返し実行支援装置 101 プログラム格納部
102 既定値格納部 103 抽出部
104 実行データ格納部 105 実行パターン生成部
106 ドライバ生成部 107 ドライバ格納部
108 実行要求部 109 網羅率格納部
110 解析部 111 判定要求部
112 充足値格納部 113 出力データ格納部
114 出力部 3 シンボリック実行装置
31 実行部 32 網羅率算出部
5 判定装置
DESCRIPTION OF SYMBOLS 1 Repetitive execution support apparatus 101 Program storage part 102 Default value storage part 103 Extraction part 104 Execution data storage part 105 Execution pattern generation part 106 Driver generation part 107 Driver storage part 108 Execution request part 109 Coverage rate storage part 110 Analysis part 111 Determination request Unit 112 Satisfaction value storage unit 113 Output data storage unit 114 Output unit 3 Symbolic execution device 31 Execution unit 32 Coverage rate calculation unit 5 Determination device

Claims (5)

シンボリック実行を実施するシンボリック実行部に対して、分析対象プログラムに定義されている全ての変数をカバーするようにシンボル化対象の変数を変化させつつ繰り返しシンボリック実行を行わせる第1実行ステップと、
前記分析対象プログラムのコード網羅率を前記シンボリック実行部から取得し、実行結果格納部に格納する取得ステップと、
前記実行結果格納部に格納されている前記コード網羅率が所定の基準を満たすか判断するステップと、
前記コード網羅率が前記所定の基準を満たすと判断された場合、前記分析対象プログラムのテストが完了したことを表すデータを出力データ格納部に格納するステップと、
を含み、コンピュータにより実行される繰返しシンボリック実行方法。
A first execution step in which a symbolic execution unit that performs symbolic execution repeatedly performs symbolic execution while changing variables to be symbolized so as to cover all variables defined in the analysis target program;
An acquisition step of acquiring the code coverage of the analysis target program from the symbolic execution unit and storing it in the execution result storage unit;
Determining whether the code coverage rate stored in the execution result storage unit satisfies a predetermined criterion;
When it is determined that the code coverage rate satisfies the predetermined criterion, storing data indicating that the test of the analysis target program is completed in an output data storage unit;
A symbolic execution method that is executed by a computer.
前記取得ステップが、
前記第1実行ステップにおけるシンボリック実行により得られるパスコンディションのデータを前記シンボリック実行部から取得し、前記実行結果格納部に格納するステップ
を含み、
前記実行結果格納部に格納されているパスコンディションの各々について、前記分析対象プログラムに定義されている変数毎に当該変数に設定した具体値が格納されているデータ格納部から、当該パスコンディションに関連する変数に設定した具体値を特定し、特定された当該具体値が当該パスコンディションを充足するという条件を満たすか判断する判断ステップと、
前記判断ステップにおいて前記条件を満たさないと判断されたパスコンディションを充足する具体値を生成する生成ステップと、
前記シンボリック実行部に対して、前記分析対象プログラムに定義されている全ての変数をカバーするようにシンボル化対象の変数を変化させ、前記条件を満たさないと判断されたパスコンディションに関連する変数に具体値を設定する場合には前記生成ステップにおいて生成された具体値を設定して繰り返しシンボリック実行を行わせる第2実行ステップと、
前記第1実行ステップの実行結果と前記第2実行ステップの実行結果とを用いて算出されたコード網羅率である累積コード網羅率を前記シンボリック実行部から取得し、前記実行結果格納部に格納するステップと、
前記実行結果格納部に格納されている前記累積コード網羅率が前記所定の基準を満たすか判断するステップと、
前記累積コード網羅率が前記所定の基準を満たすと判断された場合、前記分析対象プログラムのテストが完了したことを表すデータを前記出力データ格納部に格納するステップと、
をさらに含む請求項1記載の繰返しシンボリック実行方法。
The obtaining step comprises
Including acquiring path condition data obtained by symbolic execution in the first execution step from the symbolic execution unit and storing the data in the execution result storage unit;
For each of the path conditions stored in the execution result storage unit, from the data storage unit storing the specific value set for the variable for each variable defined in the analysis target program, related to the path condition Determining a specific value set in the variable to be determined, and determining whether the specified specific value satisfies a condition that the path condition is satisfied;
A generating step for generating a specific value satisfying the path condition determined not to satisfy the condition in the determining step;
For the symbolic execution unit, the variable to be symbolized is changed so as to cover all variables defined in the analysis target program, and the variable related to the path condition determined not to satisfy the condition is set. A second execution step for setting a specific value and setting the specific value generated in the generation step to perform symbolic execution repeatedly;
The cumulative code coverage, which is the code coverage calculated using the execution result of the first execution step and the execution result of the second execution step, is acquired from the symbolic execution unit and stored in the execution result storage unit. Steps,
Determining whether the cumulative code coverage rate stored in the execution result storage unit satisfies the predetermined criterion;
When it is determined that the cumulative code coverage rate satisfies the predetermined criterion, storing data indicating that the test of the analysis target program is completed in the output data storage unit;
The repetitive symbolic execution method according to claim 1, further comprising:
前記第1実行ステップ及び前記第2実行ステップにおいて、シンボル化対象の変数を1つとし、前記分析対象プログラムに定義されている全ての変数をカバーするように当該シンボル化対象の変数を変化させる
ことを特徴とする請求項2記載の繰返しシンボリック実行方法。
In the first execution step and the second execution step, there is one variable to be symbolized, and the variable to be symbolized is changed so as to cover all variables defined in the analysis target program. The iterative symbolic execution method according to claim 2.
シンボリック実行を実施するシンボリック実行部に対して、分析対象プログラムに定義されている全ての変数をカバーするようにシンボル化対象の変数を変化させつつ繰り返しシンボリック実行を行わせる実行部と、
前記分析対象プログラムのコード網羅率を前記シンボリック実行部から取得し、実行結果格納部に格納する取得部と、
前記実行結果格納部に格納されている前記コード網羅率が所定の基準を満たすか判断し、前記コード網羅率が前記所定の基準を満たすと判断された場合に、前記分析対象プログラムのテストが完了したことを表すデータを出力データ格納部に格納する判断部と、
を有する繰返しシンボリック実行装置。
An execution unit that repeatedly performs symbolic execution while changing the variables to be symbolized so as to cover all the variables defined in the analysis target program with respect to the symbolic execution unit that performs symbolic execution,
An acquisition unit that acquires the code coverage of the analysis target program from the symbolic execution unit and stores the code coverage rate in an execution result storage unit;
It is determined whether the code coverage rate stored in the execution result storage unit satisfies a predetermined criterion, and when it is determined that the code coverage rate satisfies the predetermined criterion, the test of the analysis target program is completed A determination unit that stores data representing that in the output data storage unit;
A recursive symbolic execution device.
シンボリック実行を実施するシンボリック実行部に対して、分析対象プログラムに定義されている全ての変数をカバーするようにシンボル化対象の変数を変化させつつ繰り返しシンボリック実行を行わせる第1実行ステップと、
前記分析対象プログラムのコード網羅率を前記シンボリック実行部から取得し、実行結果格納部に格納する取得ステップと、
前記実行結果格納部に格納されている前記コード網羅率が所定の基準を満たすか判断するステップと、
前記コード網羅率が前記所定の基準を満たすと判断された場合、前記分析対象プログラムのテストが完了したことを表すデータを出力データ格納部に格納するステップと、
を、コンピュータに実行させるための繰返しシンボリック実行プログラム。
A first execution step in which a symbolic execution unit that performs symbolic execution repeatedly performs symbolic execution while changing variables to be symbolized so as to cover all variables defined in the analysis target program;
An acquisition step of acquiring the code coverage of the analysis target program from the symbolic execution unit and storing it in the execution result storage unit;
Determining whether the code coverage rate stored in the execution result storage unit satisfies a predetermined criterion;
When it is determined that the code coverage rate satisfies the predetermined criterion, storing data indicating that the test of the analysis target program is completed in an output data storage unit;
Is a repeated symbolic execution program for causing a computer to execute.
JP2010212679A 2010-09-22 2010-09-22 Repetitive symbolic execution method, program, and apparatus Expired - Fee Related JP5505227B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010212679A JP5505227B2 (en) 2010-09-22 2010-09-22 Repetitive symbolic execution method, program, and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010212679A JP5505227B2 (en) 2010-09-22 2010-09-22 Repetitive symbolic execution method, program, and apparatus

Publications (2)

Publication Number Publication Date
JP2012068869A JP2012068869A (en) 2012-04-05
JP5505227B2 true JP5505227B2 (en) 2014-05-28

Family

ID=46166086

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010212679A Expired - Fee Related JP5505227B2 (en) 2010-09-22 2010-09-22 Repetitive symbolic execution method, program, and apparatus

Country Status (1)

Country Link
JP (1) JP5505227B2 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5971116B2 (en) * 2012-12-27 2016-08-17 富士通株式会社 Test data generation method, program, and apparatus
JP6003699B2 (en) 2013-02-08 2016-10-05 富士通株式会社 Test data generation program, method and apparatus
US9317405B2 (en) * 2014-01-31 2016-04-19 Fujitsu Limited Test double generation
JP6497271B2 (en) * 2015-08-21 2019-04-10 富士通株式会社 Test data generation apparatus, method, and program

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3418544B2 (en) * 1998-03-24 2003-06-23 日立ソフトウエアエンジニアリング株式会社 Automatic test data generator for programs
JP2000259401A (en) * 1999-03-05 2000-09-22 Ntt Communicationware Corp Source program standardizing device and method for standardizing source program
US20090089759A1 (en) * 2007-10-02 2009-04-02 Fujitsu Limited System and Method for Providing Symbolic Execution Engine for Validating Web Applications

Also Published As

Publication number Publication date
JP2012068869A (en) 2012-04-05

Similar Documents

Publication Publication Date Title
CN107423048B (en) Data collection method, device, medium and computing equipment
US9015685B2 (en) Code analysis for simulation efficiency improvement
US20070255979A1 (en) Event trace conditional logging
CN112765023B (en) Test case generation method and device
US8930447B2 (en) Method, apparatus, and program for usability analysis of web applications
CN111538659B (en) Interface testing method, system, electronic equipment and storage medium of business scene
US20130081002A1 (en) Selective data flow analysis of bounded regions of computer software applications
CN110781091B (en) Application program testing method and device, electronic equipment and storage medium
JP6003699B2 (en) Test data generation program, method and apparatus
JP5505227B2 (en) Repetitive symbolic execution method, program, and apparatus
CN111563257A (en) Data detection method and device, computer readable medium and terminal equipment
CN113590454A (en) Test method, test device, computer equipment and storage medium
US9442818B1 (en) System and method for dynamic data collection
JP2019101582A (en) Software quality determination device, software quality determination method, and software quality determination program
JP5440287B2 (en) Symbolic execution support program, method and apparatus
US9996619B2 (en) Optimizing web crawling through web page pruning
JP2016018233A (en) Script caching method and information processing device utilizing the same
JP2019074966A (en) Sql sentence extraction device, sql sentence extraction method, and program
CN113141407B (en) Page resource loading method and device and electronic equipment
CN113626301B (en) Method and device for generating test script
CN113139184A (en) Method for detecting Binder communication overload vulnerability based on static analysis
JP6142724B2 (en) Test data generation program, method and apparatus
JP6710716B2 (en) Threat information evaluation device, threat information evaluation method and program
US9092723B2 (en) Using a heuristically-generated policy to dynamically select string analysis algorithms for client queries
JP2015090616A (en) Test case extraction program, method and device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130702

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140303

R150 Certificate of patent or registration of utility model

Ref document number: 5505227

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees