JP2015069400A - Software test system - Google Patents

Software test system Download PDF

Info

Publication number
JP2015069400A
JP2015069400A JP2013202958A JP2013202958A JP2015069400A JP 2015069400 A JP2015069400 A JP 2015069400A JP 2013202958 A JP2013202958 A JP 2013202958A JP 2013202958 A JP2013202958 A JP 2013202958A JP 2015069400 A JP2015069400 A JP 2015069400A
Authority
JP
Japan
Prior art keywords
test
execution
test case
source code
input 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.)
Pending
Application number
JP2013202958A
Other languages
Japanese (ja)
Inventor
正裕 松原
Masahiro Matsubara
正裕 松原
櫻井 康平
Kohei Sakurai
康平 櫻井
成沢 文雄
Fumio Narisawa
文雄 成沢
久光 山中
Hisamitsu Yamanaka
久光 山中
守 根本
Mamoru Nemoto
守 根本
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.)
Hitachi Astemo Ltd
Original Assignee
Hitachi Automotive Systems 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 Hitachi Automotive Systems Ltd filed Critical Hitachi Automotive Systems Ltd
Priority to JP2013202958A priority Critical patent/JP2015069400A/en
Publication of JP2015069400A publication Critical patent/JP2015069400A/en
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

PROBLEM TO BE SOLVED: To provide a software test system capable of efficiently conducting a regression test for failure prevention on source-code-changed software.SOLUTION: The software test system includes: dependency analysis means analyzing a structure of a source code for specifying a control flow to determine a dependent relation among variables; changed-portion extraction means determining a changed portion from source codes before and after the change; execution-range determination means determining a test execution range so that the control flow for which the source code is changed includes the changed portion; input-variable determination means determining input variables for the test from among variables having the dependent relation on the variables included in the changed portion; test-basis setting means setting a basis for a coverage of the test; test-case generation means generating the test case on the basis of the execution range, the input variables, and the test basis; and test-case output means outputting the test case.

Description

本発明はソフトウェアのテストを行うシステムに係り、特にテスト用データを生成する技術に関する。   The present invention relates to a system for testing software, and more particularly to a technique for generating test data.

ソフトウェア開発では、仕様変更やそれに伴う実装(ソースコード)の変更時に、回帰テストが行われる。回帰テストは、変更前のソフトウェアに対して実施したテストケースを用いて再度検査し、仕様または実装変更により機能が損なわれていないかを確認するものである。ここでテストケースとは、入力値、実行事前条件、期待結果、実行事後条件の組からなるテスト用データ、またそのデータを用いて実施するテスト1件のことである。また「テストケース」は、入力値のみなど、上記データセットの一部を指して用いられる場合もある。この場合、期待結果などは未記述のテストケースと見ることができる。本明細書でもこちらの意味で「テストケース」を用いる場合がある。   In software development, a regression test is performed when the specification is changed or the implementation (source code) is changed. The regression test is performed again by using a test case performed on the software before the change, and it is confirmed whether the function is not impaired by the specification or the implementation change. Here, the test case refers to test data composed of a set of input values, execution preconditions, expected results, and post-execution conditions, and one test performed using the data. A “test case” may be used to refer to a part of the data set, such as only an input value. In this case, the expected result can be regarded as an undescribed test case. In this specification, a “test case” may be used in this sense.

限られた時間の中で回帰テストを効率的に行うには、全てのテストケースを実施するのではなく、ソフトウェアの変更点に関係するテストケースに限定して実施することが望ましい。これを実現しようとする公知技術として、特許文献1では、ソフトウェアの変更点を実行パスに含むテストケースのみを既存テストケースから抽出する。特許文献2では、ソフトウェアの変更によるソースコード上の影響範囲を解析し、外部から与えられるテストケースの実施必要性を、そのテストケースが影響範囲に関与するかを見て判定する。   In order to perform the regression test efficiently in a limited time, it is desirable not to execute all the test cases but only to the test cases related to the software changes. As a publicly known technique for realizing this, in Patent Document 1, only a test case including a software change point in an execution path is extracted from an existing test case. In Patent Literature 2, the influence range on the source code due to the software change is analyzed, and the necessity of executing the test case given from the outside is determined by checking whether the test case is involved in the influence range.

特開2008−003985号公報JP 2008-003985 A 特開2010−067188号公報JP 2010-067188 A

ソフトウェアの変更内容によっては、既存のテストケースだけでは不十分であり、新規にテストケースを作成する必要がある。特許文献1・2はこの点に対応していない。   Depending on the changes to the software, existing test cases are not sufficient, and new test cases need to be created. Patent documents 1 and 2 do not correspond to this point.

新規のテストケースを自動的に作成する技術としては、ソースコードを解析してテストケースを生成する手法がある。テストケースが所定のテストカバレッジ基準(C0,C1など)を満たすように生成する方法もある。ソフトウェアの仕様変更前に適用したテストケース生成方法のカバレッジ基準をCb、仕様変更後に適用したテストケース生成方法のカバレッジ基準をCaとすると、Cb≦Caであれば、仕様変更後のテストは、カバレッジ基準Cbで回帰テストを実施したことと同等であると言える。また、直行表やPairwise法を用いて網羅性をもった入力値の決定を行うテストケース生成手法(入力値決定方法)があるが、このような手法を仕様変更前後に適用していれば、仕様変更後のテストは回帰テストを実施したことと同等であると言える。以上のことから、テストケース生成技術は、回帰テストにも対応していると言える。   As a technique for automatically creating a new test case, there is a method of generating a test case by analyzing a source code. There is also a method of generating a test case so as to satisfy a predetermined test coverage standard (C0, C1, etc.). If the coverage standard of the test case generation method applied before the software specification change is Cb, and the coverage standard of the test case generation method applied after the specification change is Ca, if Cb ≦ Ca, the test after the specification change is the coverage It can be said that this is equivalent to performing a regression test with the reference Cb. In addition, there is a test case generation method (input value determination method) for determining input values with completeness using an orthogonal table or the Pairwise method. If such a method is applied before and after the specification change, It can be said that the test after the specification change is equivalent to the regression test. From the above, it can be said that the test case generation technology also supports regression testing.

テストケースを生成する他の方法の一つとして、モデル検査を応用したテストケース生成がある。これは、あらゆる入力条件や実行タイミングを考慮して網羅的なテストケースを生成するため、極めて高いカバレッジのテストケースを得ることができる。   As another method for generating a test case, there is a test case generation applying model checking. This generates a comprehensive test case in consideration of all input conditions and execution timing, so that a test case with extremely high coverage can be obtained.

ただし、テストケース生成の課題として、求めるカバレッジの基準が高くなるほど、生成されるテストケース数が多くなり、テスト実施に掛かる工数が増大する点が挙げられる。例えば、モデル検査を用いたテストケース生成を、ソフトウェア全体に適用することは現実的に困難である。   However, the problem of test case generation is that the higher the required coverage standard, the greater the number of test cases that are generated and the greater the number of man-hours required for test execution. For example, it is practically difficult to apply test case generation using model checking to the entire software.

そこで、本発明は、ソースコードが変更されたソフトウェアに対して、不具合防止のための回帰テストを効率的に実施することができるソフトウェアテストシステムを提供することを目的とする。   Therefore, an object of the present invention is to provide a software test system capable of efficiently performing a regression test for preventing defects on software whose source code has been changed.

上記課題を解決するため本発明は、制御フローを規定するソースコードの構造を解析して変数間の依存関係を求める依存関係解析手段と、前記変更前後のソースコードから変更箇所を求める変更箇所抽出手段と、前記ソースコードが変更された制御フローに対して前記変更箇所を含むようにテストの実行範囲を決定する実行範囲決定手段と、前記変更箇所に含まれる変数と依存関係を有する変数の中から前記テストの入力変数を決める入力変数決定手段と、前記テストの網羅範囲の基準を設定するテスト基準設定手段と、前記実行範囲と前記入力変数と前記テスト基準に基づいて前記テストケースを生成するテストケース生成手段と、前記テストケースを出力するテストケース出力手段と、を有することを特徴とする。   In order to solve the above problems, the present invention provides a dependency analysis unit that analyzes a structure of a source code that defines a control flow to obtain a dependency relationship between variables, and a change location extraction that obtains a change location from the source code before and after the change. Means for determining a test execution range so as to include the changed portion with respect to the control flow in which the source code has been changed, and among variables having dependency relations with variables included in the changed portion. The test variable is generated based on the input variable determination means for determining the input variable of the test, the test reference setting means for setting the reference of the coverage range of the test, the execution range, the input variable, and the test reference. Test case generating means and test case output means for outputting the test case.

本発明によれば、ソフトウェアのソースコードが変更されたソフトウェアに対して、不具合防止のための回帰テストを効率的に実施することができる。   According to the present invention, it is possible to efficiently carry out a regression test for preventing problems on software whose software source code has been changed.

本発明に係るソフトウェアテストシステムの実施例1の機能構成図。The function block diagram of Example 1 of the software test system which concerns on this invention. 実施例1のシステム構成図。1 is a system configuration diagram of Embodiment 1. FIG. 実施例1のテストケース生成の処理フロー。9 is a processing flow for generating a test case according to the first embodiment. 実施例1において用いられるサンプルソースコード。Sample source code used in the first embodiment. 実施例1において用いられるサンプルソースコードのプログラム依存グラフ。2 is a program dependence graph of sample source code used in the first embodiment. 実施例1において生成されたテストケースの例。3 is an example of a test case generated in the first embodiment. 実施例2において用いられるサンプルソースコード。Sample source code used in Example 2. 実施例2において生成されたテストケースの例。10 is an example of a test case generated in the second embodiment. 実施例3において用いられる実行開始点テーブル。10 is an execution start point table used in the third embodiment. 実施例4において用いられる入力変数テーブル。12 is an input variable table used in the fourth embodiment. 実施例4において用いられる入力変数テーブル。12 is an input variable table used in the fourth embodiment. 実施例5において生成されたテストケースの例。10 is an example of a test case generated in the fifth embodiment.

以下、本発明の実施形態について説明を行う。   Hereinafter, embodiments of the present invention will be described.

図1は、本発明の実施例1に係るソフトウェアテストシステム20を実現する基本的な機能構成図であり、本明細書における全ての実施例で共通である。このソフトウェアテストシステム20はソフトウェアツールとして実現されている。各機能はソフトウェアとして実装されており、表示画面、主演算装置、主記憶装置(メインメモリ)、ハードディスク等の記憶媒体、キーボードやポインティングデバイス等の入力装置を備えるコンピュータ上で実行される。   FIG. 1 is a basic functional configuration diagram for realizing the software test system 20 according to the first embodiment of the present invention, and is common to all the embodiments in this specification. The software test system 20 is realized as a software tool. Each function is implemented as software, and is executed on a computer including a display screen, a main arithmetic device, a main storage device (main memory), a storage medium such as a hard disk, and an input device such as a keyboard and a pointing device.

ソースファイル入力部10は、テスト対象とするソフトウェアの変更前後のソースコードファイルをコンピュータの記憶媒体から読み込む。ソースコードは変更前後それぞれで「プロジェクト」などとしてグループ化されている。   The source file input unit 10 reads a source code file before and after the change of the software to be tested from a computer storage medium. Source code is grouped as a “project” before and after the change.

構文解析部11は、ソースファイル入力部10から入力されたソースコードファイルの構文を解析し、構文木(Abstract Syntax Tree)データを生成する。なお、本明細書の実施例では、C言語で記述されているソースコードを扱う。   The syntax analysis unit 11 analyzes the syntax of the source code file input from the source file input unit 10 and generates syntax tree (Abstract Syntax Tree) data. In the embodiment of the present specification, source code written in C language is handled.

依存関係解析部12は、構文解析11による構文木データから、テスト対象とするソースコードにおける制御フローと依存関係のデータを解析し生成する。具体的には双方のデータを含むプログラム依存グラフ(PDG; Program Dependence Graph)を解析する。   The dependency relationship analysis unit 12 analyzes and generates control flow and dependency relationship data in the source code to be tested from the syntax tree data obtained by the syntax analysis 11. Specifically, a program dependency graph (PDG) including both data is analyzed.

変更箇所抽出部13は、ソースファイル入力部10から入力されたソースコードファイルの変更前後における差分(即ち、変更箇所)を抽出する。   The change location extraction unit 13 extracts a difference (that is, a change location) before and after the change of the source code file input from the source file input unit 10.

変更箇所依存関係抽出部14は、依存関係解析部12が解析した制御フローから、変更箇所を通過する制御フローを抽出する。また、依存関係解析部12が解析した依存関係上にて、変更箇所抽出部13が発見した変更箇所に該当する部分を特定し、さらにその部分から依存関係がつながる部分を求めて、変更箇所に関係する依存関係として抽出する。   The change location dependency extraction unit 14 extracts a control flow that passes through the change location from the control flow analyzed by the dependency analysis unit 12. Further, on the dependency relationship analyzed by the dependency relationship analyzing unit 12, a portion corresponding to the changed portion discovered by the changed portion extracting unit 13 is specified, and further, a portion to which the dependency relationship is connected is obtained from the portion, and the changed portion is determined. Extract as related dependencies.

実行範囲決定部15は、変更箇所依存関係抽出部14が抽出した変更箇所に関係する制御フローから、テストケースの実行範囲、すなわちソースコードにおけるテストの実行開始点と実行終了点を決定する。   The execution range determination unit 15 determines a test case execution range, that is, a test execution start point and an execution end point in the source code, from the control flow related to the change part extracted by the change part dependency relationship extraction unit 14.

入力変数決定部16は、変更箇所依存関係抽出部14が抽出した変更箇所に関係する依存関係から、テストケースの実行範囲に対して入力となる変数を決める。   The input variable determination unit 16 determines a variable to be input to the execution range of the test case from the dependency relationship related to the changed part extracted by the changed part dependency relationship extracting unit 14.

テストケース生成部17は、テスト基準設定部18に設定されたテストのテストの網羅範囲の基準(即ち、カバレッジ基準)と、実行範囲決定部15が決めたテストケースの実行範囲と、入力変数決定部16が決めた入力変数とから、テストケースのデータを生成する。   The test case generation unit 17 determines the coverage of the test of the test set in the test criterion setting unit 18 (that is, the coverage criterion), the test case execution range determined by the execution range determination unit 15, and the input variable determination. Test case data is generated from the input variables determined by the unit 16.

テストケース出力部19は、テストケース生成部17によるテストケースのデータを、ファイルや画面表示として出力する。   The test case output unit 19 outputs the test case data from the test case generation unit 17 as a file or a screen display.

図2は、本ソフトウェアテストシステム20を実現した場合のシステム構成である。図1で説明したソフトウェアは、テストケース生成プログラム2131として、例えばコンピュータ21上のROM213に格納されており、CPU211によって読み出され、RAM212を一時記憶領域として実行される。コンピュータ21はテストケース生成プログラム2131によって規定された処理、すなわち図1で説明した各部の処理を実行する。テスト対象とするソースコードファイルは、コンピュータ21上のハードディスク214に格納されている。解析実行指示などのユーザ操作は、キーボードなどの入力装置22から行うことができる。   FIG. 2 shows a system configuration when the software test system 20 is realized. The software described in FIG. 1 is stored as a test case generation program 2131 in, for example, the ROM 213 on the computer 21, read by the CPU 211, and executed using the RAM 212 as a temporary storage area. The computer 21 executes the process defined by the test case generation program 2131, that is, the process of each unit described in FIG. A source code file to be tested is stored in the hard disk 214 on the computer 21. User operations such as analysis execution instructions can be performed from the input device 22 such as a keyboard.

なお、テストケース出力部19による出力は、例えばディスプレイなどの表示装置23やハードディスク214になされるが、図示しない外部コンピュータへのネットワークを介した出力や、フラッシュメモリなどの外部記憶媒体へのデータファイル形式での書き込みによる出力であってもよい。   The output from the test case output unit 19 is output to the display device 23 such as a display or the hard disk 214, for example, but is output via an external network (not shown) or a data file to an external storage medium such as a flash memory. It may be output by writing in a format.

図3は図1の機能構成により実行される処理のフローである。処理開始後、ステップ31にて、ソースファイル入力部10はテスト対象とするソフトウェアの変更前後のソースコードファイルを読み込み、構文解析部11がソースコードファイルを解析して構文木データを生成する。   FIG. 3 is a flow of processing executed by the functional configuration of FIG. After starting the processing, in step 31, the source file input unit 10 reads the source code file before and after the change of the software to be tested, and the syntax analysis unit 11 analyzes the source code file and generates syntax tree data.

ステップ32にて、依存関係解析部12は構文木データから入力されたソースコードの制御フローと依存関係を解析する。   In step 32, the dependency relationship analysis unit 12 analyzes the control flow and dependency relationship of the source code input from the syntax tree data.

ステップ33にて、変更箇所抽出部13は入力されたソースコードの変更前後における差分(即ち、変更箇所)を抽出する。差分を取る方法としては、テキストや依存関係の比較を行う方法がある。   In step 33, the changed part extracting unit 13 extracts a difference (that is, a changed part) before and after the input source code is changed. As a method of taking the difference, there is a method of comparing texts and dependencies.

ステップ34にて、変更箇所依存関係抽出部14はテスト対象のソースコードにおける制御フローと依存関係のうち、ソースコードの変更前後における変更箇所を含む部分を抽出する。   In step 34, the changed part dependency relationship extracting unit 14 extracts a part including the changed part before and after the change of the source code from the control flow and the dependency relation in the source code to be tested.

ステップ35にて、実行範囲決定部15は変更箇所に関係する制御フロー上から実行開始点と実行終了点を選択することでテストケースの実行範囲を決定する。また、入力変数決定部16は変更箇所に関係する依存関係上にて、テストケースの入力となる変数を決める。   In step 35, the execution range determination unit 15 determines the execution range of the test case by selecting the execution start point and the execution end point from the control flow related to the changed portion. Further, the input variable determination unit 16 determines a variable to be an input of the test case on the dependency relationship related to the changed part.

ステップ36にて、テストケース生成部17は、入力値の組合せや処理の実行タイミングを決めることで、テストケースのデータを生成する。   In step 36, the test case generation unit 17 generates test case data by determining combinations of input values and processing execution timing.

ステップ37にて、テストケース出力部19は、テストケースを出力する。以上により処理を終了する。   In step 37, the test case output unit 19 outputs a test case. The process ends as described above.

図4は、テスト対象となるソフトウェアのソースコードの一例である。ソースコード41は、テスト対象となるソースコードのうち一部である。左端の数字は行番号である。またソースコード42は、ソースコード41のうち、一部が変更されており、変更箇所として15行目の定数「2」が「3」に置き換わっていることが示されている。これらのソースコード41,42は、ソースファイル入力部10に読み込まれる。   FIG. 4 is an example of source code of software to be tested. The source code 41 is a part of the source code to be tested. The leftmost number is the line number. Further, the source code 42 is shown in which a part of the source code 41 is changed, and the constant “2” on the 15th line is replaced with “3” as the changed part. These source codes 41 and 42 are read into the source file input unit 10.

図5は、図4のソースコード42について、依存関係解析部12により生成されるプログラム依存グラフのうち、変更箇所依存関係抽出部14によりコード変更箇所に関係する(制御フローまたは依存関係でつながっている)部分だけが抽出されたものである。このようなグラフを抽出する方法は、コード変更箇所に対応するノードを、コード変更箇所の記述位置に関する情報からプログラム依存グラフ上で探索し、そのノードから前方及び後方に制御フローと依存関係をぞれぞれ辿る。   FIG. 5 shows the source code 42 shown in FIG. 4 in the program dependence graph generated by the dependency analysis unit 12 and related to the code change part by the change part dependency relation extraction part 14 (connected by the control flow or the dependency relation). Only) are extracted. In such a method of extracting a graph, a node corresponding to a code change location is searched on the program dependency graph from information on the description position of the code change location, and the control flow and the dependency relationship are searched forward and backward from that node. Follow each one.

なお図5は見易さのために、制御フローグラフ51と依存関係グラフ52とに分けて表記している。変更箇所抽出部13が抽出したコード変更前後の差分は、制御フローグラフ51と依存関係グラフ52とに紐付けられている。   FIG. 5 shows a control flow graph 51 and a dependency relationship graph 52 separately for easy viewing. The difference before and after the code change extracted by the change location extraction unit 13 is linked to the control flow graph 51 and the dependency relationship graph 52.

以下では、変更後のソースコード42に対するテストケース生成の具体例を示す。   Hereinafter, a specific example of test case generation for the changed source code 42 will be described.

実行範囲決定部15は制御フローグラフ上にて、実行開始点を決定するために、1つのコード変更点(15行目)から後方にフローを探索する。ある関数Aが関数Bから呼び出しされる制御フローにおいて、関数B内の制御フロー探索中にコード変更箇所に遭遇しないときに探索を打ち切り、関数Aの始点を実行開始点とする。この実行開始点の決定には、制御フローではなく関数コールツリーを用いても良い。   The execution range determination unit 15 searches the flow backward from one code change point (15th line) in order to determine the execution start point on the control flow graph. In a control flow in which a certain function A is called from the function B, the search is terminated when no code change portion is encountered during the control flow search in the function B, and the start point of the function A is set as the execution start point. For the determination of the execution start point, a function call tree may be used instead of the control flow.

制御フローグラフ51では、関数f11にコード変更箇所が無いので、関数f12の始点(13行目)が実行開始点とされる。実行終了点は、実行開始点とされた関数の終点、または実行範囲の制御フローで最後に通過するコード変更点が含まれる関数の終点とする。ここでは、関数f12の終点(24行目)が実行終了点とされる。但し、これ以外にも、実行終了点をテスト基準設定部18で設定可能とし、テスト基準設定部18から実行範囲決定部15に指示されるものであってもよい。   In the control flow graph 51, since there is no code change part in the function f11, the start point (13th line) of the function f12 is set as the execution start point. The execution end point is the end point of the function that is set as the execution start point, or the end point of the function that includes the code change point that passes last in the control flow of the execution range. Here, the end point (24th line) of the function f12 is set as the execution end point. However, other than this, the execution end point may be set by the test reference setting unit 18 and may be instructed from the test reference setting unit 18 to the execution range determination unit 15.

次に入力変数決定部16は依存関係グラフ52上にて、変更点(15行目)から後方と前方とに依存関係を探索する。探索範囲は、実行範囲決定部15が同じ変更点(15行目)に対して決定した実行開始点から実行終了点までの制御フロー内とし、この制御フローに含まれないステートメントに遭遇した時点で探索を打ち切る。   Next, the input variable determination unit 16 searches the dependency relationship graph 52 for the dependency relationship from the change point (15th line) to the rear and the front. The search range is within the control flow from the execution start point to the execution end point determined by the execution range determination unit 15 for the same change point (line 15), and when a statement not included in this control flow is encountered. Abandon the search.

本実施例では、依存関係グラフ上で未定義の(すなわち代入されていない)変数をテストケースの入力変数として扱う。依存関係グラフ52で探索した範囲では変数cとvが未定義であるので、この2つを入力変数とする。   In the present embodiment, an undefined variable (that is, an unassigned variable) on the dependency relationship graph is handled as an input variable of the test case. Since the variables c and v are undefined in the range searched in the dependency graph 52, these two are input variables.

次にテストケース生成部17は、テストケースのデータを生成する。テストケースの実行範囲と入力変数は既に決定されており、ここでは入力変数の値が決定される。本実施例では、テスト基準設定部18にカバレッジ基準としてC1(分岐網羅)が設定されているものとする。制御フローグラフ51から、分岐条件にて真と偽がそれぞれ選択されるための値が計算される。c>0(17行目)が分岐条件であるため、C1を満たすために変数c={0,1}とされる。また本実施例では、分岐条件に関係しない変数は、ランダムに2つの値を取るとする。例えば変数v={1,2}と決定される。テストケースの入力変数値は、変数c={0,1}、変数v={1,2}の組合せとなる。   Next, the test case generation unit 17 generates test case data. The test case execution range and input variables have already been determined, and here the values of the input variables are determined. In this embodiment, it is assumed that C1 (branch coverage) is set as a coverage reference in the test reference setting unit 18. From the control flow graph 51, values for selecting true and false in the branch condition are calculated. Since c> 0 (17th line) is the branch condition, the variable c = {0, 1} is set to satisfy C1. In this embodiment, it is assumed that a variable not related to the branch condition takes two values at random. For example, the variable v = {1, 2} is determined. The input variable value of the test case is a combination of variable c = {0, 1} and variable v = {1, 2}.

図6は、テストケース出力部19が出力するテストケースのデータである。テーブル61の各行が1つのテストケースに相当し、実行開始点、実行終了点、入力変数とその値が含まれる。テスト実行のためには、期待結果などを別途追加することが必要である。   FIG. 6 shows test case data output by the test case output unit 19. Each row of the table 61 corresponds to one test case, and includes an execution start point, an execution end point, an input variable, and its value. For test execution, it is necessary to add expected results separately.

以上によりソースコードの変更点とその影響範囲についてテストケースを生成することができ、ソースコードの変更に対応した回帰テストを容易に実行できる。テストケース生成部17はプログラムの制御フローや依存関係を辿ってテストケースを生成しているため、ソースコードの変更点だけでなく、その影響範囲もテスト対象とすることができる。   As described above, a test case can be generated for the change in the source code and the affected range, and the regression test corresponding to the change in the source code can be easily executed. Since the test case generation unit 17 generates a test case by tracing the control flow and the dependency relationship of the program, not only the change of the source code but also the influence range can be set as the test target.

即ち、本実施形態のソフトウェアテストシステム20は、ソフトウェアの仕様または実装(ソースコード)の変更点とその変更が影響を及ぼす範囲、つまり変更が処理内容や処理結果に差異をもたらし得る仕様・実装に限定してテストケース生成を適用できるため、テストケース数の限定と、ソフトウェアの仕様・実装変更に伴う不具合発生の防止の両方に効果的である。また、仕様変更は実装変更につながるため、仕様変更時も実装の変更点とその影響範囲についてテストケース生成を行えばよい。   That is, the software test system 20 according to the present embodiment has a specification / implementation in which changes in the software specification or implementation (source code) and the range affected by the change, that is, the change may cause a difference in processing contents and processing results. Since test case generation can be applied in a limited manner, it is effective for both the limitation of the number of test cases and the prevention of problems caused by changes in software specifications and implementation. In addition, since a specification change leads to a mounting change, it is only necessary to generate a test case for the mounting change point and its influence range even when the specification is changed.

以下では、テスト基準設定部18にテストケース生成手法(即ち、テスト基準の入力値生成方法)として「モデル検査器を利用」が設定されているときのテストケース生成例を示す。他の条件は実施例1と同じとする。   Hereinafter, an example of test case generation when “use model checker” is set as the test case generation method (that is, the test reference input value generation method) in the test reference setting unit 18 will be described. Other conditions are the same as those in the first embodiment.

図7は、図4のソフトウェアと同じプロジェクトに含まれるソースコードの一部である。このソースコードには変更がないとする。関数intrは割込みで実行されることが、ソースコード内にコンパイラ指令(pragma)を用いて設定されている。またこの設定情報は、依存関係解析部12による制御フローデータに付与される。   FIG. 7 is a part of source code included in the same project as the software of FIG. Assume that this source code has not changed. The function intr is set to be executed by an interrupt using a compiler directive (pragma) in the source code. This setting information is given to the control flow data by the dependency analysis unit 12.

変更箇所依存関係抽出部14は、割込みに指定されている関数のプログラム依存グラフも抽出する。このため、関数intrのプログラム依存グラフもコード変更点に関係するとして抽出される。実行範囲決定部15と入力変数決定部16の処理内容は、実施例1と同じである。   The change location dependency extraction unit 14 also extracts a program dependency graph of a function designated as an interrupt. For this reason, the program dependence graph of the function intr is also extracted as related to the code change point. The processing contents of the execution range determination unit 15 and the input variable determination unit 16 are the same as those in the first embodiment.

テストケース生成部17はモデル検査器を用いてテストケース生成を行う。ソースコードは、モデル検査器(SPINなど)の仕様記述言語(SPINではPromela)にAST経由で所定のルールを用いて変換される。さらに、実行開始点である関数f12と、割込みで実行される関数intrに相当する箇所が、モデル検査でも実行開始点に指定される。例えばSPINを用いる場合、関数f12に相当する箇所を実行するプロセスと、関数intrに相当する箇所を実行するプロセスが、Promelaコードとして付与される。入力変数については、実施例1のように取りうる値を求め、その中から1つの値が非決定的に選択されるコードを、関数f12に相当する箇所の実行前に記述する。仕様記述言語にて変数がその型で取りうる値をすべて取りうることを指定できるのであれば、そのように指定してもよい。ここでは前者の方法を取る。   The test case generation unit 17 generates a test case using a model checker. The source code is converted into a specification description language (Promel in SPIN) of a model checker (SPIN or the like) using a predetermined rule via AST. Further, the function f12 that is the execution start point and the location corresponding to the function intr that is executed by the interrupt are also designated as the execution start point in the model check. For example, when SPIN is used, a process for executing a portion corresponding to the function f12 and a process for executing a portion corresponding to the function intr are assigned as the Promela code. As for the input variables, possible values are obtained as in the first embodiment, and a code in which one value is selected nondeterministically is described before execution of the portion corresponding to the function f12. If a specification description language can specify that a variable can take all possible values of its type, it may be specified as such. Here we take the former method.

以上のようにして作成された仕様記述について、実行トレースが反例として生成されるようにプロパティを指定した上で、モデル検査が実行される。生成された反例から、入力変数値やプロセスの実行タイミングが抽出される。   For the specification description created as described above, a model check is executed after specifying properties so that an execution trace is generated as a counterexample. Input variable values and process execution timings are extracted from the generated counterexample.

図8は、テストケース出力部19が出力するテストケースの例である。ただし、モデル検査器が生成した反例のうち、実行トレースとして冗長なものは除外してある。テーブル81には、割込みで実行される関数と、その実行タイミングに関するデータが記載されている。例えばテストケース5では、関数f12の17行目を実行しているときに、関数intrが割込みとして実行されることが記載されている。   FIG. 8 shows an example of a test case output from the test case output unit 19. However, of the counter examples generated by the model checker, redundant ones are excluded as execution traces. The table 81 describes a function executed by an interrupt and data related to the execution timing. For example, Test Case 5 describes that the function intr is executed as an interrupt when the 17th line of the function f12 is executed.

以上により、複数のプロセス(タスクや割り込み)を含むソフトウェアのソースコードに対し、変更点とその影響範囲についてテストケースを生成することができ、ソースコードの変更に対応した回帰テストを容易に実行できる。   With the above, it is possible to generate test cases for changes and their impact on software source code including multiple processes (tasks and interrupts), and to easily execute regression tests corresponding to source code changes. .

以下では、実行範囲決定部15によるテストケースの実行範囲決定について、実施例1とは異なる方法を示す。テストケース生成の条件は実施例1と同じとする。   In the following, a method different from that of the first embodiment will be described for the test case execution range determination by the execution range determination unit 15. The conditions for test case generation are the same as in the first embodiment.

図9は、図4のソースコードについて、テストにおいてプログラムの実行開始点となる関数の候補が設定された実行開始点テーブル91である。実行開始点テーブル91は、実行範囲決定部15に付与されている。   FIG. 9 is an execution start point table 91 in which function candidates that become program execution start points in the test are set for the source code of FIG. The execution start point table 91 is given to the execution range determination unit 15.

実行範囲決定部15は実行範囲を決定するために次の処理を行う。図5の制御フローグラフ51において、コード変更箇所(15行目)から後方を探索する。制御フローグラフ51の各ステートメントにて、実行開始点テーブル91との合致を判定する。すると、関数f12が合致し、実行開始点として抽出される。実行開始点が抽出されたところで、制御フローグラフ51の探索を終了する。もし、実行開始点テーブル91と合致するステートメントがない場合には、制御フローの始点の関数を実行開始点とする。   The execution range determination unit 15 performs the following process to determine the execution range. In the control flow graph 51 of FIG. 5, the backward search is performed from the code change portion (15th line). A match with the execution start point table 91 is determined for each statement in the control flow graph 51. Then, the function f12 matches and is extracted as an execution start point. When the execution start point is extracted, the search for the control flow graph 51 is terminated. If there is no statement that matches the execution start point table 91, the function at the start point of the control flow is set as the execution start point.

他の処理は実施例1と同様であり、結果として図6のテストケースが生成される。   Other processes are the same as those in the first embodiment, and as a result, the test case of FIG. 6 is generated.

以上により、ソースコードの変更点とその影響範囲についてテストケースを生成することができ、その生成は次の特徴を持つ。実行開始点テーブル91を用いることで、実行開始点を特定のステートメントに限定できる。これにより、例えば実行開始点をプログラムの実際の動作と同じ、周期タスクや割込み処理が開始する関数の先頭にすることができ、テストの事前条件を整えやすくなる、プログラムの実際の動作に近いテストが可能になる、などの利点がある。また、テストの実行開始点をコード変更前後で同じにすることで、コード変更前後のテスト結果を比較しやすくなる。   As described above, it is possible to generate test cases for changes in the source code and the range of influence thereof, and the generation has the following characteristics. By using the execution start point table 91, the execution start point can be limited to a specific statement. This allows, for example, the execution start point to be the same as the actual operation of the program, the beginning of a function that starts a periodic task or interrupt processing, and makes it easier to prepare the test preconditions. There are advantages such as being possible. Also, by making the test execution start point the same before and after the code change, it becomes easier to compare the test results before and after the code change.

以下では、入力変数決定部16による入力変数の決定について、実施例1とは異なる方法を示す。テストケース生成の条件は実施例1と同じとする。   In the following, a method different from that of the first embodiment will be described for the input variable determination by the input variable determination unit 16. The conditions for test case generation are the same as in the first embodiment.

図10は、図4のソースコードについて、テストにおいてプログラムの一部または全部を実行するときに入力となる変数の候補と、その値の選択肢や範囲が設定されている入力変数テーブル101である。入力変数テーブル101は、入力変数決定部16に付与されている。   FIG. 10 is an input variable table 101 in which variable candidates that are input when a part or all of the program is executed in the test and the choices and ranges of the values are set for the source code of FIG. The input variable table 101 is given to the input variable determination unit 16.

入力変数決定部16は入力変数を決定するために次の処理を行う。図5の依存関係グラフ52において、コード変更箇所(15行目)から後方を探索する。探索中は、依存関係グラフ52の各ステートメントにて、そのステートメントに記載された変数と、入力変数テーブル101の変数との合致を判定する。すると変数vが合致し、入力変数として抽出される。またその値の範囲は[1,2]に限定されることがわかる。   The input variable determination unit 16 performs the following processing to determine the input variable. In the dependency relationship graph 52 of FIG. 5, the backward search is performed from the code change portion (15th line). During the search, in each statement of the dependency relationship graph 52, a match between the variable described in the statement and the variable in the input variable table 101 is determined. Then, the variable v matches and is extracted as an input variable. It can also be seen that the range of values is limited to [1,2].

依存関係グラフ52上のあるパスにおける探索は、探索位置におけるステートメントで利用される変数が入力変数テーブル101の変数と合致しているか、探索位置が実行範囲決定部15が決定した実行範囲を超えた(対象ステートメントが制御フロー上にない)ところで、終了する。依存関係グラフ52の探索終了後に、依存関係グラフ52上で探索中に発見され、かつ未定義である変数cは、実施例1と同様に入力変数として抽出される。   In the search in a certain path on the dependency relationship graph 52, the variable used in the statement at the search position matches the variable in the input variable table 101, or the search position exceeds the execution range determined by the execution range determination unit 15. By the way, the process ends. After the search of the dependency relationship graph 52, the variable c that is found during the search on the dependency relationship graph 52 and is undefined is extracted as an input variable in the same manner as in the first embodiment.

テストケース生成部17は入力変数の値を決める際、入力変数決定部16により指定された変数vの範囲で取りうる値を選択する。選択方法としては、全て選択しても良いし、例えばテスト基準設定部18に「Pairwise法を利用」などと設定されていれば、指定の方法で組合せを選択してもよい。   When determining the value of the input variable, the test case generation unit 17 selects a value that can be taken within the range of the variable v designated by the input variable determination unit 16. As the selection method, all may be selected, or, for example, if “Use Pairwise method” is set in the test reference setting unit 18, a combination may be selected by a designated method.

他の処理は実施例1と同様であり、結果として図6のテストケースが生成される。   Other processes are the same as those in the first embodiment, and as a result, the test case of FIG. 6 is generated.

以上により、ソースコードの変更点とその影響範囲についてテストケースを生成することができ、その生成は次の特徴を持つ。入力変数テーブル101を用いることで、入力変数の取りうる値(仕様範囲外の値を含む)を規定し、その取りうる値の範囲で網羅的なテストケースを生成することができる。また逆に、入力変数が取らない値で不要なテストケースを生成することを防ぎ、テストに掛かる時間の短縮などの利を得ることができる。   As described above, it is possible to generate test cases for changes in the source code and the range of influence thereof, and the generation has the following characteristics. By using the input variable table 101, it is possible to define the values that can be taken by the input variables (including values outside the specification range) and generate a comprehensive test case within the range of the values that can be taken. Conversely, it is possible to prevent unnecessary test cases from being generated with values that the input variables do not take, and to gain benefits such as shortening the time required for testing.

以下では、実行範囲決定部15によるテストケースの実行範囲決定と、入力変数決定部16による入力変数の決定について、実施例1とは異なる方法を示す。テストケース生成の条件は実施例1と同じとする。   Hereinafter, a method different from that of the first embodiment will be described with respect to determination of the test case execution range by the execution range determination unit 15 and input variable determination by the input variable determination unit 16. The conditions for test case generation are the same as in the first embodiment.

本実施例では、実施例1〜4と異なり、入力変数決定部16による入力変数の決定を、実行範囲決定部15によるテストケースの実行範囲決定より先に行う。入力変数決定部16は入力変数を決定するため、図5の依存関係グラフ52を探索する。この処理は実施例4と同様であるが、探索範囲が実行範囲決定部15の決めたテストケースの実行範囲に限定されない点が異なる。   In the present embodiment, unlike the first to fourth embodiments, the input variable determination unit 16 determines the input variable before the execution range determination unit 15 determines the test case execution range. The input variable determination unit 16 searches the dependency graph 52 of FIG. 5 in order to determine the input variable. This process is the same as in the fourth embodiment, except that the search range is not limited to the test case execution range determined by the execution range determination unit 15.

次に実行範囲決定部15は実行範囲を決定するために次の処理を行う。図5の制御フローグラフ51において、コード変更箇所(15行目)から後方を探索する。探索は、実行範囲決定部16により決定された入力変数が利用されている箇所を、各入力変数について1回でも通過した時点で打ち切り、そのときのステートメントが含まれる関数の始点を実行開始点とする。実行終了点は、実施例1と同様に決定する。   Next, the execution range determination unit 15 performs the following processing to determine the execution range. In the control flow graph 51 of FIG. 5, the backward search is performed from the code change portion (15th line). The search is terminated at the point where the input variable determined by the execution range determination unit 16 is used even once for each input variable, and the start point of the function including the statement at that time is defined as the execution start point. To do. The execution end point is determined in the same manner as in the first embodiment.

次に入力変数決定部16は、依存関係グラフ52上の探索中に発見され、かつ未定義のままである変数cを、実施例1と同様に入力変数として抽出する。   Next, the input variable determination unit 16 extracts the variable c, which is found during the search on the dependency relationship graph 52 and remains undefined, as an input variable as in the first embodiment.

図11は、本実施例にて入力変数決定部16に付与される入力変数テーブル111を示している。入力変数決定部16は依存関係グラフ52を探索し、変数reg1を入力変数として抽出し、その値の候補を{1,3}とする。依存関係グラフ52の探索終了時に、未定義な変数として残っているのは、変数cである。   FIG. 11 shows an input variable table 111 given to the input variable determination unit 16 in the present embodiment. The input variable determination unit 16 searches the dependency graph 52, extracts the variable reg1 as an input variable, and sets the value candidate as {1, 3}. At the end of the search of the dependency graph 52, the variable c remains as an undefined variable.

次に実行範囲決定部15は、制御フローグラフ51を探索し、変数reg1が利用されている9行目のステートメントにて探索を打ち切り、このステートメントが含まれる関数f11を実行開始点とする。次に入力変数決定部16は、変数cを利用するステートメントが実行範囲に含まれることを確認し、変数cを入力変数に追加する。変数cの値の決め方は、実施例1と同様に、テスト基準設定部18に設定されているカバレッジ基準やテストケース生成方法による。   Next, the execution range determination unit 15 searches the control flow graph 51, aborts the search at the statement on the ninth line where the variable reg1 is used, and sets the function f11 including this statement as the execution start point. Next, the input variable determination unit 16 confirms that the statement that uses the variable c is included in the execution range, and adds the variable c to the input variable. The method of determining the value of the variable c depends on the coverage standard and test case generation method set in the test standard setting unit 18 as in the first embodiment.

以上の処理により、テストケース出力部19は、図12に示されたテストケースのデータを出力する。テーブル121の各行が1つのテストケースに相当し、その入力値は変数reg1の値{1,3}と、変数cの値{0,1}の組合せとなっている。   Through the above processing, the test case output unit 19 outputs the test case data shown in FIG. Each row of the table 121 corresponds to one test case, and the input value is a combination of the value {1, 3} of the variable reg1 and the value {0, 1} of the variable c.

以上により、ソースコードの変更点とその影響範囲についてテストケースを生成することができ、その生成が持つ特徴は実施例4と同様である。ただし実施例4と比較して、入力変数のうち取りうる値が規定されたものの割合が、同等か増加する。これにより、テストの網羅性向上と不要なテストケースの減少を図ることができる。   As described above, it is possible to generate test cases for changes in the source code and the range of influence thereof, and the characteristics of the generation are the same as in the fourth embodiment. However, as compared with the fourth embodiment, the ratio of the input variables for which possible values are defined is equal or increased. As a result, it is possible to improve the completeness of the test and reduce unnecessary test cases.

以上の各実施例では、ソフトウェアの変更点とその影響範囲に関してテストケースを生成することが可能となり、コード変更により新規に必要となるテストケースを補った上での回帰テストを実現できる。また本ソフトウェアテストシステム20では、ソフトウェアのソースコードの変更点とその影響範囲を特定し、その範囲に限定してテストケースを生成する方法を取っているため、ソフトウェア全体のようにより広範囲についてテストケース生成する方法よりも、テストケース生成に掛かる時間とテスト実施に掛かる時間を小さくすることができる。   In each of the embodiments described above, it is possible to generate test cases regarding software changes and their influence ranges, and it is possible to realize a regression test after supplementing the newly required test cases by code changes. In the software test system 20, since the method of generating test cases limited to the change point of the software source code and the influence range is defined and the test case is generated in a limited range, the test case for a wider range as in the entire software is taken. Compared to the generation method, the time required for test case generation and the time required for test execution can be reduced.

本ソフトウェアテストシステム20と同様に、ソフトウェアの変更点とその影響範囲に限定してテストケースを得る他の方法として、より広い範囲、例えばソフトウェア全体に対してテストケースを生成し、そのテストケースの中から、ソースコードの変更点とその影響範囲に関係するものだけを抽出する方法が考えられる。この方法では、生成されるテストケース数が本ソフトウェアテストシステム20より大幅に増え、またその多数のテストケースから必要なものをより分ける作業が必要なことから、計算機のリソース(処理時間・メモリ消費量など)が本ソフトウェアテストシステム20より多く必要になると考えられる。本ソフトウェアテストシステム20はこの点を改善している。   Similar to the software test system 20, as another method for obtaining a test case by limiting to the software change point and its influence range, a test case is generated for a wider range, for example, the entire software, and the test case A method for extracting only the changes related to the change of the source code and the influence range thereof can be considered. In this method, the number of test cases to be generated is significantly larger than that of the software test system 20, and it is necessary to separate the necessary ones from the many test cases. It is considered that a larger amount) is required than the software test system 20. The software test system 20 improves this point.

10…ソースファイル入力部、11…構文解析部、12…依存関係解析部、13…変更箇所抽出部、14…変更箇所依存関係抽出部、15…実行範囲決定部、16…入力変数決定部、17…テストケース生成部、18…テスト基準設定部、19…テストケース出力部、20…ソフトウェアテストシステム   DESCRIPTION OF SYMBOLS 10 ... Source file input part, 11 ... Syntax analysis part, 12 ... Dependency analysis part, 13 ... Change location extraction part, 14 ... Change location dependency extraction part, 15 ... Execution range determination part, 16 ... Input variable determination part, DESCRIPTION OF SYMBOLS 17 ... Test case production | generation part, 18 ... Test reference | standard setting part, 19 ... Test case output part, 20 ... Software test system

Claims (4)

制御フローを規定するソースコードの構造を解析して変数間の依存関係を求める依存関係解析手段と、
前記変更前後のソースコードから変更箇所を求める変更箇所抽出手段と、
前記ソースコードが変更された制御フローに対して前記変更箇所を含むようにテストの実行範囲を決定する実行範囲決定手段と、
前記変更箇所に含まれる変数と依存関係を有する変数の中から前記テストの入力変数を決める入力変数決定手段と、
前記テストの網羅範囲の基準を設定するテスト基準設定手段と、
前記実行範囲と前記入力変数と前記テスト基準に基づいて前記テストケースを生成するテストケース生成手段と、前記テストケースを出力するテストケース出力手段と、を有することを特徴とする、ソフトウェアテストシステム。
Dependency analysis means for analyzing the structure of the source code that defines the control flow and obtaining the dependency relationship between variables,
Change location extraction means for obtaining a change location from the source code before and after the change,
Execution range determination means for determining an execution range of a test so as to include the changed portion with respect to the control flow in which the source code is changed;
An input variable determining means for determining an input variable of the test from variables having a dependency relationship with a variable included in the changed portion;
Test standard setting means for setting a standard for the coverage of the test;
A software test system comprising: a test case generation unit that generates the test case based on the execution range, the input variable, and the test criterion; and a test case output unit that outputs the test case.
請求項1のソフトウェアテストシステムにおいて、
前記実行範囲決定手段は、前記ソースコードにおける実行開始点の候補を実行開始点データとして有し、
前記変更箇所を含む制御フローから前記実行開始点データに含まれる実行開始点を探索して前記実行範囲を決定することを特徴とする、ソフトウェアテストシステム。
The software test system of claim 1,
The execution range determining means has execution start point candidates in the source code as execution start point data,
A software test system, wherein an execution start point included in the execution start point data is searched from a control flow including the changed part to determine the execution range.
請求項1のソフトウェアテストシステムにおいて、
前記入力変数決定手段は、前記ソースコードにおける入力変数の候補を入力変数データとして有し、
前記変更箇所に含まれる変数と依存関係を有する変数から前記入力変数データに含まれる変数を探索することで前記入力変数を決定することを特徴とする、ソフトウェアテストシステム。
The software test system of claim 1,
The input variable determination means has input variable candidates in the source code as input variable data,
A software test system, wherein the input variable is determined by searching for a variable included in the input variable data from a variable having a dependency relationship with a variable included in the change portion.
請求項3のソフトウェアテストシステムにおいて、
前記実行範囲決定手段は、前記入力変数が前記制御フロー上に出現するように前記実行範囲を決定することを特徴とする、ソフトウェアテストシステム。
The software test system of claim 3,
The execution range determination means determines the execution range so that the input variable appears on the control flow.
JP2013202958A 2013-09-30 2013-09-30 Software test system Pending JP2015069400A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013202958A JP2015069400A (en) 2013-09-30 2013-09-30 Software test system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013202958A JP2015069400A (en) 2013-09-30 2013-09-30 Software test system

Publications (1)

Publication Number Publication Date
JP2015069400A true JP2015069400A (en) 2015-04-13

Family

ID=52836001

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013202958A Pending JP2015069400A (en) 2013-09-30 2013-09-30 Software test system

Country Status (1)

Country Link
JP (1) JP2015069400A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111566625A (en) * 2018-01-17 2020-08-21 三菱电机株式会社 Test case generation device, test case generation method, and test case generation program

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111566625A (en) * 2018-01-17 2020-08-21 三菱电机株式会社 Test case generation device, test case generation method, and test case generation program
CN111566625B (en) * 2018-01-17 2024-01-09 三菱电机株式会社 Test case generating device, test case generating method, and computer-readable recording medium

Similar Documents

Publication Publication Date Title
US9389849B2 (en) Test case pattern matching
US10296447B2 (en) Automated software program repair
CN104899147B (en) A kind of code Static Analysis Method towards safety inspection
JP6316120B2 (en) Test case generation system and recording medium recording test case
US9081586B2 (en) Systems and methods for customizing optimization/transformation/ processing strategies
US20170010957A1 (en) Method for Multithreaded Program Output Uniqueness Testing and Proof-Generation, Based on Program Constraint Construction
US20110145799A1 (en) Path-sensitive dataflow analysis including path refinement
JP6904043B2 (en) Input discovery for unknown program binaries
JP5450840B2 (en) Test data generation method for program execution performance evaluation
JP2008191963A (en) Source code verification system, source code verification method and source code verification program
US9274925B2 (en) Programmable symbolic execution based dynamic checker
JP2015146179A (en) Generation for test double
Zhou et al. Extracting configuration knowledge from build files with symbolic analysis
US8683494B1 (en) Constructing event sequences in event-driven programs
CN108874656A (en) Code test method, device, readable storage medium storing program for executing and computer equipment
JP6476777B2 (en) Generate test context
JP2015069400A (en) Software test system
JP6723483B2 (en) Test case generation device, test case generation method, and test case generation program
JP2017041196A (en) Stub object determination device, method, and program
JP7059827B2 (en) Source code generator
CN114115763B (en) Configuration device and configuration method for printer platform product
US9519567B2 (en) Device, method of generating performance evaluation program, and recording medium
Singhal et al. Profiling minisat based on user defined execution time--GPROF
Mubarak-Ali et al. Enhancing Generic Pipeline Model for Code Clone Detection using Divide and Conquer Approach.
JP2018124710A (en) Parallelization method, parallelization tool and on-vehicle control device