JP2010267266A - Test support device and test support method - Google Patents

Test support device and test support method Download PDF

Info

Publication number
JP2010267266A
JP2010267266A JP2010112475A JP2010112475A JP2010267266A JP 2010267266 A JP2010267266 A JP 2010267266A JP 2010112475 A JP2010112475 A JP 2010112475A JP 2010112475 A JP2010112475 A JP 2010112475A JP 2010267266 A JP2010267266 A JP 2010267266A
Authority
JP
Japan
Prior art keywords
test
message
unit
program
application
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
JP2010112475A
Other languages
Japanese (ja)
Inventor
Masayuki Hisada
雅之 久田
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.)
NST Co Ltd
Original Assignee
NST Co 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
Priority claimed from PCT/JP2009/002189 external-priority patent/WO2010134123A1/en
Application filed by NST Co Ltd filed Critical NST Co Ltd
Priority to JP2010112475A priority Critical patent/JP2010267266A/en
Publication of JP2010267266A publication Critical patent/JP2010267266A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To efficiently test a computer program. <P>SOLUTION: The test support apparatus 300 has a test telegraphic message setting unit 302. The test telegraphic message setting unit 302 includes a means for acquiring a source code of an application; a means for extracting the name of an element for calling a function of the application, from the source code; a means for acquiring a first test telegraphic message, used by a creator of the source code in testing the application; a means for specifying a field with the element set thereto, to call the application function in the first test telegraphic message, on the basis of the name of the element; and a means for setting a second test telegraphic message to be used for new test with respect to the application, by setting a value of the element determined, in advance, with respect to the field specified. <P>COPYRIGHT: (C)2011,JPO&INPIT

Description

この発明は、データ処理技術に関し、特に、コンピュータプログラムに対する試験を支援する技術に関する。   The present invention relates to a data processing technique, and more particularly to a technique for supporting a test for a computer program.

アプリケーションにおけるセキュリティの脆弱性を検出するためのペネトレーションテストが知られている。ペネトレーションテストでは、例えば、既知の攻撃パターンが設定された試験電文を試験対象のアプリケーションへ発行し、そのアプリケーションからの出力データを検証することにより、脆弱性の有無が判断されることがある。   There are known penetration tests for detecting security vulnerabilities in applications. In the penetration test, for example, a test message in which a known attack pattern is set may be issued to a test target application, and the presence or absence of a vulnerability may be determined by verifying output data from the application.

特開2005−228177号公報JP 2005-228177 A

アプリケーション開発の一連の工程において、アプリケーションのソースコードのプログラマは、自身で作成したアプリケーションの単体試験用の試験電文を作成することがある。その一方で、結合試験工程においてペネトレーションテストが実施される場合は、ペネトレーションテスト用の試験電文を試験担当者が一から作成する必要があり、試験コストの増大要因となっていたと本発明者は考えた。   In a series of application development steps, a programmer of an application source code may create a test message for a unit test of an application created by the programmer. On the other hand, when a penetration test is carried out in the integration test process, the inventor believes that the tester must create a test message for the penetration test from scratch, which has been a factor in increasing the test cost. It was.

本発明は、本発明者の上記課題認識に基づいて完成された発明であり、その主たる目的は、コンピュータプログラムに対する効率的な試験の実現を支援する技術を提供することである。   The present invention has been completed based on the above-mentioned problem recognition of the present inventor, and its main object is to provide a technique for supporting the realization of an efficient test for a computer program.

上記課題を解決するために、本発明のある態様の試験支援装置は、アプリケーションのソースコードを取得するソースコード取得部と、ソースコードから、アプリケーションの機能を呼び出すための要素の名称を抽出する要素名抽出部と、ソースコードの作成者によるアプリケーションの試験においてアプリケーションに対して送信された第1の試験電文を取得する試験電文取得部と、要素名抽出部により抽出された要素の名称にしたがって、第1の試験電文においてアプリケーションの機能を呼び出すための要素が設定されたフィールドを特定する試験電文解析部と、特定されたフィールドに対して予め定められた要素の値を設定することにより、アプリケーションに対する新たな試験においてアプリケーションに対して送信すべき第2の試験電文を設定する試験電文設定部と、を備える。   In order to solve the above problems, a test support apparatus according to an aspect of the present invention includes a source code acquisition unit that acquires a source code of an application, and an element that extracts a name of an element for calling an application function from the source code According to the name extraction unit, the test message acquisition unit that acquires the first test message transmitted to the application in the application test by the creator of the source code, and the element name extracted by the element name extraction unit, A test message analysis unit that identifies a field in which an element for calling an application function in the first test message is set, and a value of a predetermined element for the specified field is set, thereby The second to send to the application in a new trial Comprising a test message setting section for setting a test message, a.

本発明の別の態様は、試験支援方法である。この方法は、アプリケーションのソースコードを取得するステップと、ソースコードから、アプリケーションの機能を呼び出すための要素の名称を抽出するステップと、ソースコードの作成者によるアプリケーションの試験においてアプリケーションに対して送信された第1の試験電文を取得するステップと、抽出するステップにおいて抽出された要素の名称にしたがって、第1の試験電文においてアプリケーションの機能を呼び出すための要素が設定されたフィールドを特定するステップと、特定されたフィールドに対して予め定められた要素の値を設定することにより、アプリケーションに対する新たな試験においてアプリケーションに対して送信すべき第2の試験電文を設定するステップと、をコンピュータに実行させる。   Another aspect of the present invention is a test support method. This method is transmitted to the application in the steps of obtaining the source code of the application, extracting the name of the element for calling the function of the application from the source code, and testing the application by the source code creator. Obtaining a first test message, identifying a field in which an element for calling an application function is set in the first test message according to the name of the element extracted in the extracting step; Setting a value of a predetermined element for the specified field causes the computer to execute a step of setting a second test message to be transmitted to the application in a new test for the application.

なお、以上の構成要素の任意の組合せ、本発明の表現を装置、方法、システム、プログラム、プログラムを格納した記録媒体などの間で変換したものもまた、本発明の態様として有効である。   It should be noted that any combination of the above-described constituent elements and a representation of the present invention converted between an apparatus, a method, a system, a program, a recording medium storing the program, and the like are also effective as an aspect of the present invention.

本発明によれば、コンピュータプログラムに対する効率的な試験の実現を支援できる。   According to the present invention, implementation of an efficient test for a computer program can be supported.

第1実施形態における試験支援装置の機能構成を示すブロック図である。It is a block diagram which shows the function structure of the test assistance apparatus in 1st Embodiment. 制御命令ノードの定義情報の構造を示す図である。It is a figure which shows the structure of the definition information of a control command node. ロギング命令一覧情報の構造を示す図である。It is a figure which shows the structure of logging command list information. ロギング命令一覧情報の構造を示す図である。It is a figure which shows the structure of logging command list information. 試験支援装置の動作を示すフローチャートである。It is a flowchart which shows operation | movement of a test assistance apparatus. 原本プログラムのプログラムコードの例を示す図である。It is a figure which shows the example of the program code of an original program. 原本プログラムのプログラムコードの例を示す図である。It is a figure which shows the example of the program code of an original program. 図5(a)の原本プログラムから生成された原本構文木の一例を示す図である。It is a figure which shows an example of the original syntax tree produced | generated from the original program of Fig.5 (a). 図5(b)の原本プログラムから生成された原本構文木の一例を示す図である。It is a figure which shows an example of the original syntax tree produced | generated from the original program of FIG.5 (b). 図6(a)の原本構文木が改変された改変構文木を示す図である。FIG. 7 is a diagram illustrating a modified syntax tree obtained by modifying the original syntax tree of FIG. 図6(b)の原本構文木が改変された改変構文木を示す図である。FIG. 7 is a diagram illustrating a modified syntax tree obtained by modifying the original syntax tree of FIG. 試験用プログラムのプログラムコードの例を示す図である。It is a figure which shows the example of the program code of the program for a test. 試験用プログラムのプログラムコードの例を示す図である。It is a figure which shows the example of the program code of the program for a test. 第1実施形態の試験支援装置の動作を示すフローチャートである。It is a flowchart which shows operation | movement of the test assistance apparatus of 1st Embodiment. HTMLファイルに出力された試験用プログラムの出力データを示す図である。It is a figure which shows the output data of the program for a test output to the HTML file. HTMLファイルに出力された試験用プログラムの出力データを示す図である。It is a figure which shows the output data of the program for a test output to the HTML file. 第1実施形態の試験支援装置の動作を示すフローチャートである。It is a flowchart which shows operation | movement of the test assistance apparatus of 1st Embodiment. 網羅状況表示部による網羅状況の表示イメージを示す図である。It is a figure which shows the display image of the coverage status by a coverage status display part. 第2実施形態の企業システムの構成を示す図である。It is a figure which shows the structure of the enterprise system of 2nd Embodiment. 図14の試験電文設定部の詳細構成を示すブロック図である。It is a block diagram which shows the detailed structure of the test message | telegram setting part of FIG. ソースファイルの一例を示す図である。It is a figure which shows an example of a source file. ソースファイルの一例を示す図である。It is a figure which shows an example of a source file. ソースファイルから抽出されたコール要素の例を示す図である。It is a figure which shows the example of the call element extracted from the source file. UT用試験電文の例を示す図である。It is a figure which shows the example of the test message for UT. UT用試験電文の例を示す図である。It is a figure which shows the example of the test message for UT. IT用試験電文の例を示す図である。It is a figure which shows the example of the test message for IT. IT用試験電文の例を示す図である。It is a figure which shows the example of the test message for IT. IT用試験電文の例を示す図である。It is a figure which shows the example of the test message for IT. 第2実施形態の試験支援装置の動作を示すフローチャートである。It is a flowchart which shows operation | movement of the test assistance apparatus of 2nd Embodiment. 変形例における試験部の機能ブロックを示すブロック図である。It is a block diagram which shows the functional block of the test part in a modification.

実施の形態においては、まず、ペネトレーションテストにおけるプログラムコードの実行フローを可視化する技術を第1の実施の形態(以下、「第1実施形態」と呼ぶ。)として説明する。次に、ペネトレーションテストのための試験電文を自動設定する技術を第2の実施の形態(以下、「第2実施形態」と呼ぶ。)として説明する。   In the embodiment, first, a technique for visualizing an execution flow of a program code in a penetration test will be described as a first embodiment (hereinafter referred to as “first embodiment”). Next, a technique for automatically setting a test message for a penetration test will be described as a second embodiment (hereinafter referred to as “second embodiment”).

(第1実施形態)
ペネトレーションテストは、コンピュータプログラムの内部構造は考慮せずに、そのコンピュータプログラムからの出力データに着目するブラックボックステストである。したがって、試験対象のコンピュータプログラムにセキュリティ上の脆弱性が存在することは検出できるものの、内部構造はブラックボックスであるため、そのコンピュータプログラムに存在する問題の解決には時間を要することがあった。
(First embodiment)
The penetration test is a black box test that focuses on output data from a computer program without considering the internal structure of the computer program. Therefore, although it can be detected that there is a security vulnerability in the computer program to be tested, since the internal structure is a black box, it may take time to solve the problem existing in the computer program.

第1実施形態として、ペネトレーションテストの対象となるオリジナルのプログラム(以下、適宜「原本プログラム」とも呼ぶ。)について、ペネトレーションテストにおけるプログラムコードの実行フローを可視化する試験支援装置を提案する。この試験支援装置は、原本プログラムにおけるプログラムコードに記述された命令のうち、原本プログラムの実行フローを制御する制御命令の実行に伴って、その実行フローをユーザに通知するためのメッセージを出力させるよう原本プログラムを改変する。このメッセージを、以下、「実行フローメッセージ」と呼ぶこととする。   As a first embodiment, a test support apparatus for visualizing an execution flow of a program code in a penetration test is proposed for an original program (hereinafter also referred to as “original program” as appropriate) to be a penetration test target. The test support apparatus is configured to output a message for notifying the user of the execution flow in accordance with the execution of the control instruction for controlling the execution flow of the original program among the instructions described in the program code in the original program. Modify the original program. This message is hereinafter referred to as an “execution flow message”.

具体的には、第1実施形態の試験支援装置は、原本プログラムに記述されたプログラムコードの各要素をノードとする抽象構文木を生成する。そして、抽象構文木において、制御命令を示すノード(以下、適宜「制御命令ノード」とも呼ぶ。)に対して、その制御命令を特定可能な実行フローメッセージを出力するロギング命令を示すノード(以下、適宜「ロギング命令ノード」とも呼ぶ。)を対応づけて設定する。そして、試験支援装置は、ロギング命令ノードを追加した抽象構文木から、原本プログラムが改変されたプログラム(以下、適宜「試験用プログラム」とも呼ぶ。)を生成する。この試験用プログラムでは、制御命令にロギング命令が対応づけられることになる。   Specifically, the test support apparatus of the first embodiment generates an abstract syntax tree having each element of the program code described in the original program as a node. In the abstract syntax tree, for a node indicating a control instruction (hereinafter also referred to as a “control instruction node” as appropriate), a node indicating a logging instruction that outputs an execution flow message that can identify the control instruction (hereinafter referred to as “control instruction node”) (Also referred to as “logging command node” as appropriate). Then, the test support apparatus generates a program in which the original program is modified (hereinafter also referred to as “test program” as appropriate) from the abstract syntax tree to which the logging command node is added. In this test program, a logging command is associated with a control command.

第1実施形態の試験支援装置のように、原本プログラムの改変のために、そのプログラムコードそのものを解析するのではなく、原本プログラムに対応する抽象構文木を解析することにより、制御命令に対応づけてロギング命令を設定することが容易になる。例えば、同じ条件分岐処理であっても、以下の3例のように、プログラムコードとしては様々な記述パターンが存在する。
第1の記述パターン:
If(status)operation;
第2の記述パターン:
If(status){
operation;

第3の記述パターン:
If(status)

operation;
As in the test support apparatus of the first embodiment, in order to modify the original program, the program code itself is not analyzed, but the abstract syntax tree corresponding to the original program is analyzed, thereby associating with the control instruction. This makes it easy to set logging commands. For example, even in the same conditional branch process, there are various description patterns as program codes as in the following three examples.
First description pattern:
If (status) operation;
Second description pattern:
If (status) {
operation;
}
Third description pattern:
If (status)
{
operation;
}

プログラムコードそのものを解析する場合には、上記3例それぞれのパターンに対応する解析処理が必要である。これに対し、抽象構文木においてはプログラムコードの書式レベルの差異は吸収されて同じノード構成となるため、制御命令ノードに対してロギング命令ノードを追加する処理を共通化できる。言い換えれば、プログラムコードの記述パターンに依存しない共通ロジックでの処理が可能となる。その結果、試験支援装置を実現するためのプログラムコードについて、そのコード量を低減できるとともに容易なメンテナンスを実現できる。   When analyzing the program code itself, an analysis process corresponding to each pattern of the above three examples is required. On the other hand, in the abstract syntax tree, the difference in the format level of the program code is absorbed and becomes the same node configuration, so that the process of adding the logging command node to the control command node can be made common. In other words, it is possible to perform processing with a common logic independent of the program code description pattern. As a result, the program code for realizing the test support apparatus can be reduced in code amount and easy maintenance can be realized.

さらに、第1実施形態の試験支援装置は、生成した試験用プログラムに対してペネトレーションテストを実行する。そして、このペネトレーションテストにおいて実行されたロギング命令により、実行フローを制御した制御命令を特定可能な実行フローメッセージを出力させる。第1実施形態の試験支援装置によれば、原本プログラムに対するペネトレーションテスト実行時の実行フローが可視化され、原本プログラムに存在する問題箇所の特定が容易になり、問題の迅速な解決を支援できる。   Further, the test support apparatus of the first embodiment executes a penetration test on the generated test program. And the execution flow message which can specify the control command which controlled the execution flow is output by the logging command performed in this penetration test. According to the test support apparatus of the first embodiment, the execution flow at the time of the penetration test execution for the original program is visualized, and it becomes easy to identify the problem location existing in the original program, and can support the quick solution of the problem.

図1は、第1実施形態における試験支援装置100の機能構成を示すブロック図である。試験支援装置100は、記憶部10と、UI部30と、データ処理部40とを備える。記憶部10は、各種データを保持するための記憶領域である。UI部30は、プログラムの開発者や試験担当者等、ユーザに対するユーザインタフェース処理を担当する。データ処理部40は、記憶部10に保持されたデータや、UI部30において取得されたデータに基づいて各種のデータ処理を実行する。データ処理部40は、記憶部10とUI部30との間のインタフェースの役割も果たす。   FIG. 1 is a block diagram illustrating a functional configuration of the test support apparatus 100 according to the first embodiment. The test support apparatus 100 includes a storage unit 10, a UI unit 30, and a data processing unit 40. The storage unit 10 is a storage area for holding various data. The UI unit 30 is responsible for user interface processing for the user, such as a program developer or a tester. The data processing unit 40 executes various types of data processing based on data held in the storage unit 10 and data acquired by the UI unit 30. The data processing unit 40 also serves as an interface between the storage unit 10 and the UI unit 30.

本明細書のブロック図において示される各ブロックは、ハードウェア的には、コンピュータのCPUをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組合せによっていろいろなかたちで実現できることは、当業者には理解されるところである。例えば、メモリや補助記憶装置は、記憶部10の処理を実行してもよい。また、CPUは、UI部30やデータ処理部40それぞれの処理内容が実装されたプログラムモジュールをメモリに読み込み、それぞれのプログラムモジュールにしたがって、UI部30やデータ処理部40の各種処理を実行してもよい。   Each block shown in the block diagram of the present specification can be realized in terms of hardware by an element such as a CPU of a computer or a mechanical device, and in terms of software, it can be realized by a computer program or the like. The functional block realized by those cooperation is drawn. Therefore, those skilled in the art will understand that these functional blocks can be realized in various forms by a combination of hardware and software. For example, the memory or the auxiliary storage device may execute the processing of the storage unit 10. In addition, the CPU reads a program module in which the processing contents of the UI unit 30 and the data processing unit 40 are mounted into the memory, and executes various processes of the UI unit 30 and the data processing unit 40 according to the respective program modules. Also good.

記憶部10:
記憶部10は、原本プログラム保持部12と、ノード定義保持部14と、ロギング命令保持部16と、試験用プログラム保持部18と、入力データ保持部20と、出力データ保持部22とを有する。原本プログラム保持部12は、原本プログラムのソースコードを保持する。原本プログラムを記述するプログラミング言語には制限はなく、例えばPHP・JAVA(登録商標)等であってもよい。
Storage unit 10:
The storage unit 10 includes an original program holding unit 12, a node definition holding unit 14, a logging command holding unit 16, a test program holding unit 18, an input data holding unit 20, and an output data holding unit 22. The original program holding unit 12 holds the source code of the original program. There is no limitation on the programming language for describing the original program, and for example, PHP / JAVA (registered trademark) may be used.

ノード定義保持部14は、制御命令ノードの定義情報を保持する。具体的には、PHPやJAVA等、互いに異なる複数のプログラミング言語のそれぞれで記述された原本プログラムから生成される抽象構造木について、各抽象構文木において存在しうる制御命令ノードの定義情報を保持する。この定義情報の具体例は、図2において後述する。   The node definition holding unit 14 holds control instruction node definition information. Specifically, for abstract structure trees generated from original programs written in different programming languages such as PHP and JAVA, the definition information of control instruction nodes that can exist in each abstract syntax tree is held. . A specific example of this definition information will be described later with reference to FIG.

ロギング命令保持部16は、試験用プログラムにおいて、複数の制御命令のそれぞれに対応づけて設定される複数のロギング命令について、各ロギング命令の属性情報をロギング命令一覧情報として保持する。ロギング命令一覧情報の具体例は、図3において後述する。試験用プログラム保持部18は、原本プログラムが改変された試験用プログラムを保持する。   The logging command holding unit 16 holds attribute information of each logging command as logging command list information for a plurality of logging commands set in association with each of the plurality of control commands in the test program. A specific example of the logging command list information will be described later with reference to FIG. The test program holding unit 18 holds a test program in which the original program is modified.

入力データ保持部20は、原本プログラムに対してペネトレーションテストを実行するための試験データを保持する。この試験データは、典型的には、プログラムの脆弱性の有無を確認するための既知の攻撃パターンが設定されたデータである。例えば、クロスサイトスクリプティングに対する脆弱性の有無を検証するための、スクリプト言語で記述されたプログラムコードを含む試験データでもよい。また、SQL(Structured Query Language)インジェクションに対する脆弱性の有無を検証するための文字列を含む試験データでもよい。出力データ保持部22は、ペネトレーションテストにおいて試験用プログラムから出力された出力データを保持する。   The input data holding unit 20 holds test data for executing a penetration test on the original program. This test data is typically data in which a known attack pattern for confirming the presence or absence of a program vulnerability is set. For example, it may be test data including a program code written in a script language for verifying the presence or absence of vulnerability to cross-site scripting. Further, it may be test data including a character string for verifying the presence or absence of vulnerability to SQL (Structured Query Language) injection. The output data holding unit 22 holds output data output from the test program in the penetration test.

UI部30:
UI部30は、指示受付部32と、実行フロー表示部34と、網羅状況表示部36とを有する。指示受付部32は、各種入力装置を介して、ユーザにより入力された各種指示を受け付ける。実行フロー表示部34は、ペネトレーションテストにおける試験用プログラムからの出力データをディスプレイに表示させる。
UI unit 30:
The UI unit 30 includes an instruction receiving unit 32, an execution flow display unit 34, and an coverage status display unit 36. The instruction receiving unit 32 receives various instructions input by the user via various input devices. The execution flow display unit 34 displays output data from the test program in the penetration test on the display.

網羅状況表示部36は、原本プログラムのプログラムコード全体に占める、ペネトレーションテストにおいて原本プログラムのプログラムコードが実行された割合(以下、適宜「網羅率」と呼ぶ。)をディスプレイに表示させる。また網羅状況表示部36は、試験用プログラムに設定されたロギング命令の一覧を表示する。その際に、ペネトレーションテストにおいて未実行のロギング命令については、実行済のロギング命令よりもユーザから視認されやすい態様でディスプレイ上に表示する。例えば、未実行のロギング命令を、実行済のロギング命令よりも大きな文字サイズや、より視認させやすい表示色等で表示させてもよい。   The coverage status display unit 36 displays on the display the ratio (hereinafter referred to as “coverage rate” as appropriate) that the program code of the original program is executed in the penetration test in the entire program code of the original program. The coverage status display unit 36 displays a list of logging commands set in the test program. At that time, logging commands that have not been executed in the penetration test are displayed on the display in a manner that is easier for the user to see than the executed logging commands. For example, an unexecuted logging command may be displayed in a character size larger than an executed logging command, a display color that is more easily visible, or the like.

データ処理部40:
データ処理部40は、原本プログラムを試験用プログラムへと改変する改変部50と、試験用プログラムに対してペネトレーションテストを実行する試験部60とを有する。改変部50は、原本プログラム取得部52と、構文木生成部54と、構文木改変部56と、試験用プログラム出力部58とを含む。また試験部60は、試験用プログラム取得部62と、試験実行部64と、網羅状況特定部66とを含む。
Data processing unit 40:
The data processing unit 40 includes a modification unit 50 that modifies the original program into a test program, and a test unit 60 that performs a penetration test on the test program. The modification unit 50 includes an original program acquisition unit 52, a syntax tree generation unit 54, a syntax tree modification unit 56, and a test program output unit 58. The test unit 60 includes a test program acquisition unit 62, a test execution unit 64, and an coverage status specifying unit 66.

原本プログラム取得部52は、原本プログラム保持部12から原本プログラムのデータをメモリに読み込む。構文木生成部54は、原本プログラムに記述されたプログラムコードに対して、使用されているプログラミング言語の文法規則にしたがってあらかじめ定められた方法により字句解析および構文解析を実行する。そして、原本プログラムに基づく抽象構文木(以下、適宜「原本構文木」と呼ぶ。)のデータをメモリに生成する。   The original program acquisition unit 52 reads the data of the original program from the original program holding unit 12 into the memory. The syntax tree generation unit 54 performs lexical analysis and syntax analysis on the program code described in the original program by a predetermined method according to the grammar rules of the programming language being used. Then, data of an abstract syntax tree (hereinafter referred to as “original syntax tree” as appropriate) based on the original program is generated in the memory.

構文木生成部54は、LR構文解析法等の既知の手法により原本構文木を作成してもよく、公知の構文解析関数を呼び出すことにより原本構文木を作成してもよい。後者の例として、Eclipse(登録商標)が提供するJDT(Java Development Tools)のライブラリ関数に対して、JAVAで記述された原本プログラムのデータを渡すことにより、その原本プログラムに対応する抽象構文木を生成してもよい。同様に、Eclipseが提供するPDT(PHP Development Tools)のライブラリ関数を呼び出すことにより、PHPで記述された原本プログラムに対応する抽象構文木を生成してもよい。   The syntax tree generation unit 54 may create an original syntax tree by a known method such as an LR syntax analysis method, or may create an original syntax tree by calling a known parsing function. As an example of the latter, by passing data of an original program described in JAVA to a library function of JDT (Java Development Tools) provided by Eclipse (registered trademark), an abstract syntax tree corresponding to the original program is obtained. It may be generated. Similarly, an abstract syntax tree corresponding to the original program described in PHP may be generated by calling a library function of PDT (PHP Development Tools) provided by Eclipse.

構文木改変部56は、ノード定義保持部14に記憶された制御命令ノードの定義情報を参照して、原本構文木のノードのうち原本プログラムのプログラミング言語に対応した制御命令ノードを識別する。この制御命令ノードには、例えば、メソッド宣言、メソッド呼び出し命令、if・else・switch等の条件分岐命令、for・while等の繰り返し命令、try・catch等の例外処理命令を示すノードが含まれる。   The syntax tree modifying unit 56 refers to the control instruction node definition information stored in the node definition holding unit 14 and identifies a control instruction node corresponding to the programming language of the original program among the nodes of the original syntax tree. This control instruction node includes, for example, a node indicating a method declaration, a method call instruction, a conditional branch instruction such as if / else / switch, a repeat instruction such as for / while, and an exception processing instruction such as try / catch.

構文木改変部56は、制御命令ノードに対応づけて、典型的には原本構文木における制御命令ノード直下のノードとして、ロギング命令ノードを設定することにより、原本構文木を改変した抽象構文木(以下、適宜「改変構文木」と呼ぶ。)のデータを設定する。構文木改変部56は、改変構文木を設定する際に、原本構文木における制御命令ノードの識別情報と、改変構文木におけるロギング命令ノードの識別情報とを対応づけてロギング命令保持部16に記憶させる。   The syntax tree modifying unit 56 is associated with the control instruction node, and typically sets a logging instruction node as a node immediately below the control instruction node in the original syntax tree, thereby modifying the original syntax tree ( Hereinafter, the data of “modified syntax tree” is set as appropriate. When setting the modified syntax tree, the syntax tree modifying unit 56 associates the identification information of the control instruction node in the original syntax tree with the identification information of the logging instruction node in the modified syntax tree and stores them in the logging instruction holding unit 16. Let

なお構文木生成部54は、原本構文木のデータとして、原本構文木の各ノードをルートノード配下の子ノードとして有するDOM(Document Object Model)ツリーのオブジェクトをメモリ上に生成してもよい。このとき、それぞれの子ノードはその属性(例えばクラス型等)として制御命令の種類を示す情報を有してもよい。構文木改変部56は、原本構文木を示すDOMツリーをトラバースして制御命令ノードを検出し、検出した制御命令ノードに対応づけるべきロギング命令ノードを新たな子ノードとしてこのDOMツリーに設定してもよい。この場合、ロギング命令ノードが付加されたDOMツリーが改変構文木のデータとなる。   The syntax tree generation unit 54 may generate an object of a DOM (Document Object Model) tree having each node of the original syntax tree as a child node under the root node as data in the original syntax tree. At this time, each child node may have information indicating the type of control instruction as its attribute (for example, class type). The syntax tree modifying unit 56 traverses the DOM tree indicating the original syntax tree to detect a control instruction node, and sets a logging instruction node to be associated with the detected control instruction node as a new child node in the DOM tree. Also good. In this case, the DOM tree to which the logging command node is added becomes the modified syntax tree data.

試験用プログラム出力部58は、改変構文木のデータおよびロギング命令保持部16に記憶されたロギング命令一覧情報にしたがって、試験用プログラムを生成して試験用プログラム保持部18に記憶させる。この試験用プログラムは、原本プログラムにおける複数の制御命令それぞれに対応づけてロギング命令が設定されたソースコードであってもよく、そのソースコードに対応する実行可能形式のバイナリコードであってもよい。   The test program output unit 58 generates a test program according to the modified syntax tree data and the logging command list information stored in the logging command holding unit 16 and stores it in the test program holding unit 18. This test program may be a source code in which a logging instruction is set in association with each of a plurality of control instructions in the original program, or may be an executable binary code corresponding to the source code.

ここで試験用プログラム出力部58における試験用プログラムの設定処理を具体的に説明する。まず、試験用プログラム出力部58は、ロギング命令一覧情報として記憶された制御命令ノードとロギング命令ノードとの対応関係にしたがって、ロギング命令で出力させるべき実行フローメッセージを決定する。具体的には、実行フローメッセージとして、ロギング命令が対応する制御命令の識別情報、例えば原本プログラムにおける制御命令の識別名称や位置情報等を設定する。   Here, the test program setting process in the test program output unit 58 will be described in detail. First, the test program output unit 58 determines an execution flow message to be output by the logging command according to the correspondence relationship between the control command node and the logging command node stored as the logging command list information. Specifically, the identification information of the control command corresponding to the logging command, for example, the identification name and position information of the control command in the original program is set as the execution flow message.

次に、試験用プログラム出力部58は、その実行フローメッセージを所定の変換関数に入力することで、その実行フローメッセージとは異なり、その実行フローメッセージを一意に特定するための変換後データ(以下、適宜「メッセージ識別データ」とも呼ぶ。)を取得する。例えば、実行フローメッセージを所定のハッシュ関数に入力して、その実行フローメッセージから一意に生成されるハッシュ値をメッセージ識別データとして取得してもよい。試験用プログラム出力部58は、実行フローメッセージと、その実行フローメッセージに対応するメッセージ識別データとを対応づけて、ロギング命令保持部16にさらに記憶させる。   Next, the test program output unit 58, by inputting the execution flow message to a predetermined conversion function, differs from the execution flow message, and after-conversion data for uniquely specifying the execution flow message (hereinafter referred to as the execution flow message). As appropriate, also referred to as “message identification data”). For example, an execution flow message may be input to a predetermined hash function, and a hash value uniquely generated from the execution flow message may be acquired as message identification data. The test program output unit 58 further associates the execution flow message with the message identification data corresponding to the execution flow message and causes the logging command holding unit 16 to further store the execution flow message.

次に、試験用プログラム出力部58は、原本プログラムのプログラミング言語に対応したロギング命令を決定する。このロギング命令は、標準出力や所定のログファイルに引数データを出力する命令であってもよく、所定のデータベースに引数データを記録する命令であってもよい。例えば、原本プログラムがPHPで記述されている場合には「echo」命令をロギング命令としてもよい。試験用プログラム出力部58は、実行コード通知メッセージそのものではなく、実行フローメッセージに対応するメッセージ識別データをロギング命令により出力させるために、ロギング命令の引数としてメッセージ識別データを設定する。   Next, the test program output unit 58 determines a logging command corresponding to the programming language of the original program. The logging command may be a command for outputting argument data to a standard output or a predetermined log file, or a command for recording argument data in a predetermined database. For example, when the original program is written in PHP, the “echo” command may be used as the logging command. The test program output unit 58 sets the message identification data as an argument of the logging command so that the message identification data corresponding to the execution flow message is output by the logging command, not the execution code notification message itself.

最後に、試験用プログラム出力部58は、改変構文木を参照して、原本プログラムのプログラムコードに対してロギング命令が適宜挿入された試験用プログラムを生成する。試験用プログラムのソースコードを生成する場合には、改変構文木の各ノードに対応する所定のプログラムコードを逐次設定することにより、改変構文木に対応するソースコードを生成してもよい。また、構文木生成部54と同様に、既知のライブラリ関数を呼び出すことで、抽象構文木のデータからソースコードを生成してもよい。実行形式のバイナリコードを生成する場合には、通常のコンパイル処理と同様に、改変構文木に対して意味解析やリンク処理等を順次実行してバイナリコードを出力すればよい。   Finally, the test program output unit 58 refers to the modified syntax tree and generates a test program in which logging instructions are appropriately inserted into the program code of the original program. When generating the source code of the test program, the source code corresponding to the modified syntax tree may be generated by sequentially setting a predetermined program code corresponding to each node of the modified syntax tree. Similarly to the syntax tree generation unit 54, a source code may be generated from data of an abstract syntax tree by calling a known library function. When generating an executable binary code, it is only necessary to sequentially execute semantic analysis, link processing, and the like on the modified syntax tree and output the binary code, as in normal compilation processing.

試験用プログラム取得部62は、試験用プログラム保持部18から試験用プログラムのデータをメモリに読み込む。試験実行部64は、試験用プログラムに対するペネトレーションテストを実行する。具体的には、入力データ保持部20に記憶された試験データを取得して試験用プログラムに入力することで試験用プログラムを動作させ、試験用プログラムからの出力データを出力データ保持部22に記憶させる。この出力データには、試験用プログラムによる試験データの処理結果や、制御命令に対応づけて設定されたロギング命令からのメッセージ識別データが含まれる。   The test program acquisition unit 62 reads test program data from the test program storage unit 18 into the memory. The test execution unit 64 executes a penetration test for the test program. Specifically, the test data stored in the input data holding unit 20 is acquired and input to the test program to operate the test program, and the output data from the test program is stored in the output data holding unit 22 Let This output data includes the processing result of the test data by the test program and the message identification data from the logging command set in association with the control command.

網羅状況特定部66は、ロギング命令保持部16に記録されたロギング命令一覧情報と、出力データ保持部22に記録されたメッセージ識別データとを参照して、ペネトレーションテストにおいて実行されたロギング命令を特定する。網羅状況特定部66は、ロギング命令一覧情報におけるロギング命令の総数に占める、出力されたメッセージ識別データ数の割合を、原本プログラムに対するペネトレーションテストの網羅率として算出する。なお、出力されたメッセージ識別データ数を算出する際、同一のメッセージ識別データについては、複数回出力されている場合にも1とカウントする。   The coverage status specifying unit 66 refers to the logging command list information recorded in the logging command holding unit 16 and the message identification data recorded in the output data holding unit 22, and specifies the logging command executed in the penetration test. To do. The coverage status specifying unit 66 calculates the ratio of the number of output message identification data to the total number of logging commands in the logging command list information as the coverage rate of the penetration test for the original program. When calculating the number of output message identification data, the same message identification data is counted as 1 even if it is output a plurality of times.

図2は、制御命令ノードの定義情報の構造を示す。言語欄には、プログラミング言語の種類が記録される。制御命令欄には、各プログラミング言語の抽象構文木に存在しうる複数種類のノードのうち制御命令ノードの識別情報が記録される。すなわち、構文木改変部56は、原本プログラムのプログラミング言語に対応する制御命令欄を参照し、その制御命令欄に記録された制御命令ノードを原本構文木において検出すると、その制御命令ノードの直後に所定のロギング命令ノードを挿入する。   FIG. 2 shows the structure of the definition information of the control instruction node. In the language column, the type of programming language is recorded. In the control instruction column, identification information of a control instruction node among a plurality of types of nodes that can exist in the abstract syntax tree of each programming language is recorded. That is, the syntax tree modifying unit 56 refers to the control instruction field corresponding to the programming language of the original program, and when the control instruction node recorded in the control instruction field is detected in the original syntax tree, immediately after the control instruction node. Insert a predetermined logging instruction node.

図3(a)および図3(b)は、ロギング命令一覧情報の構造を示す。ロギング命令ID欄には、試験用プログラムに挿入したロギング命令を一意に特定するための識別情報が記録される。ロギング命令ノード欄には、改変構文木におけるロギング命令ノードの識別情報が記録される。同図においては、「ロギング命令ノードの識別名 : 試験用プログラムでの行番号」の形式で記録されている。制御命令ノード欄には、改変構文木においてロギング命令ノードが設定された制御命令ノードの、原本構文木における識別情報が記録される。同図においては、「制御命令ノードの識別名 : 原本プログラムでの行番号」の形式で記録されている。また、実行フローメッセージ欄には実行フローメッセージが記録され、メッセージ識別データ欄にはメッセージ識別データが記録される。   3A and 3B show the structure of the logging command list information. In the logging command ID column, identification information for uniquely specifying the logging command inserted into the test program is recorded. In the logging command node column, identification information of the logging command node in the modified syntax tree is recorded. In the figure, it is recorded in the format of “identification name of logging command node: line number in test program”. In the control instruction node column, identification information in the original syntax tree of the control instruction node in which the logging instruction node is set in the modified syntax tree is recorded. In the figure, it is recorded in the format of “identification name of control instruction node: line number in original program”. An execution flow message is recorded in the execution flow message column, and message identification data is recorded in the message identification data column.

以上の構成による動作を以下説明する。
図4は、試験支援装置100の動作を示すフローチャートである。指示受付部32が試験用プログラムの作成指示をユーザから受け付けると、原本プログラム取得部52は原本プログラムのデータを原本プログラム保持部12から取得する(S10)。図5(a)および図5(b)は、原本プログラムのプログラムコードの例を示す。図5(a)は、JAVAで記述された原本プログラムを示し、制御命令102a〜102gを含む。また図5(b)は、PHPで記述された原本プログラムを示し、制御命令102h〜102kを含む。図4に戻る。
The operation of the above configuration will be described below.
FIG. 4 is a flowchart showing the operation of the test support apparatus 100. When the instruction receiving unit 32 receives an instruction to create a test program from the user, the original program acquiring unit 52 acquires the data of the original program from the original program holding unit 12 (S10). FIG. 5A and FIG. 5B show examples of the program code of the original program. FIG. 5A shows an original program written in JAVA and includes control instructions 102a to 102g. FIG. 5B shows an original program written in PHP and includes control instructions 102h to 102k. Returning to FIG.

構文木生成部54は、原本プログラムに対応する原本構文木のデータをメモリ内に生成する(S12)。図6(a)は、図5(a)の原本プログラムから生成された原本構文木の一例を示す。図6(a)における制御命令ノード104a〜104gは、図5(a)における制御命令102a〜102gに対応する。同図では、制御命令ノードのそれぞれを、「制御ノードの識別名 : 原本プログラムでの行番号」の形式で示している。以降の抽象構文木における各ノードについても同様の形式で示すこととする。図6(b)は、図5(b)の原本プログラムから生成された原本構文木の一例を示す。図6(b)における制御命令ノード104h〜104kは、図5(b)における制御命令102h〜102kに対応する。図4に戻る。   The syntax tree generator 54 generates data of the original syntax tree corresponding to the original program in the memory (S12). FIG. 6A shows an example of an original syntax tree generated from the original program of FIG. The control instruction nodes 104a to 104g in FIG. 6A correspond to the control instructions 102a to 102g in FIG. In the figure, each control instruction node is shown in the format of “control node identification name: line number in original program”. Each node in the subsequent abstract syntax tree is shown in the same format. FIG. 6B shows an example of an original syntax tree generated from the original program shown in FIG. The control command nodes 104h to 104k in FIG. 6B correspond to the control commands 102h to 102k in FIG. Returning to FIG.

構文木改変部56は、原本構文木に存在する制御命令ノードを検出して、その制御命令ノードにロギング命令ノードを対応づけて設定することにより、原本構文木が改変された改変構文木を設定する(S14)。そして、構文木改変部56は、原本構文木における制御命令ノードの識別情報と、改変構文木においてその制御命令ノードに対し設定したロギング命令ノードの識別情報とを対応づけてロギング命令保持部16に記憶させる(S16)。ここでは、ロギング命令一覧情報のロギング命令ID欄と、ロギング命令ノード欄と、制御命令ノード欄とを設定する。   The syntax tree modifying unit 56 sets a modified syntax tree in which the original syntax tree is modified by detecting a control instruction node existing in the original syntax tree and setting a logging instruction node in association with the control instruction node. (S14). Then, the syntax tree modifying unit 56 associates the identification information of the control instruction node in the original syntax tree with the identification information of the logging instruction node set for the control instruction node in the modified syntax tree to the logging instruction holding unit 16. Store (S16). Here, the logging command ID column, the logging command node column, and the control command node column of the logging command list information are set.

図7(a)は、図6(a)の原本構文木が改変された改変構文木を示す。同図の改変構文木においては、図6(a)における制御命令ノード104a〜104gのそれぞれに対して、ロギング命令ノード106a〜106gのそれぞれが対応づけられている。また、図3(a)におけるロギング命令ID「001」のロギング命令ノード欄、制御命令ノード欄は、制御命令ノード104aに対応づけてロギング命令ノード106aを設定する際に記録されたデータを示している。すなわち、そのロギング命令ノード欄は改変構文木におけるロギング命令ノード106aの識別情報を示し、制御命令ノード欄は原本構文木における制御命令ノード104aの識別情報を示している。同様に、図3(a)におけるロギング命令ID「002」〜「007」の各レコードは、制御命令ノード104b〜104gのそれぞれに対応づけてロギング命令ノード106b〜106gのそれぞれを設定する際に記録されたデータを示している。   FIG. 7A shows a modified syntax tree obtained by modifying the original syntax tree of FIG. In the modified syntax tree of FIG. 6, the logging command nodes 106a to 106g are associated with the control command nodes 104a to 104g in FIG. Also, the logging command node column and the control command node column of the logging command ID “001” in FIG. 3A indicate data recorded when setting the logging command node 106a in association with the control command node 104a. Yes. That is, the logging command node column indicates identification information of the logging command node 106a in the modified syntax tree, and the control command node column indicates identification information of the control command node 104a in the original syntax tree. Similarly, the records of the logging command IDs “002” to “007” in FIG. 3A are recorded when the logging command nodes 106b to 106g are set in association with the control command nodes 104b to 104g, respectively. Data is shown.

図7(b)は、図6(b)の原本構文木が改変された改変構文木を示す。同図の改変構文木においては、図6(b)における制御命令ノード104h〜104kのそれぞれに対して、ロギング命令ノード106h〜106kのそれぞれが対応づけられている。また、図3(b)におけるロギング命令ID「001」のロギング命令ノード欄、制御命令ノード欄は、制御命令ノード104hに対応づけてロギング命令ノード106hを設定する際に記録されたデータを示している。すなわち、そのロギング命令ノード欄は改変構文木におけるロギング命令ノード106hの識別情報を示し、制御命令ノード欄は原本構文木における制御命令ノード104hの識別情報を示している。同様に、図3(b)におけるロギング命令ID「002」〜「004」の各レコードは、制御命令ノード104i〜104kのそれぞれに対応づけてロギング命令ノード106i〜106kのそれぞれを設定する際に記録されたデータを示している。図4に戻る。   FIG. 7B shows a modified syntax tree obtained by modifying the original syntax tree of FIG. In the modified syntax tree of FIG. 6, the logging command nodes 106h to 106k are associated with the control command nodes 104h to 104k in FIG. Further, the logging command node column and the control command node column of the logging command ID “001” in FIG. 3B indicate data recorded when setting the logging command node 106h in association with the control command node 104h. Yes. That is, the logging command node column indicates identification information of the logging command node 106h in the modified syntax tree, and the control command node column indicates identification information of the control command node 104h in the original syntax tree. Similarly, the records of the logging command IDs “002” to “004” in FIG. 3B are recorded when the logging command nodes 106i to 106k are set in association with the control command nodes 104i to 104k, respectively. Data is shown. Returning to FIG.

試験用プログラム出力部58は、ロギング命令一覧情報の各レコードを参照して、ロギング命令にて出力させる実行フローメッセージを決定し、その実行フローメッセージに対応するメッセージ識別データを決定する。そして、実行フローメッセージおよびメッセージ識別データをロギング命令一覧情報の各レコードに追加して記録する(S18)。試験用プログラム出力部58は、改変構文木とロギング命令一覧情報とにしたがって、メッセージ識別データを出力するロギング命令が追加され、原本プログラムが改変された試験用プログラムを試験用プログラム保持部18に記憶させる(S20)。   The test program output unit 58 refers to each record of the logging command list information, determines an execution flow message to be output by the logging command, and determines message identification data corresponding to the execution flow message. Then, the execution flow message and message identification data are added and recorded in each record of the logging command list information (S18). The test program output unit 58 is added with a logging command for outputting message identification data according to the modified syntax tree and the logging command list information, and stores the test program in which the original program is modified in the test program holding unit 18. (S20).

図3(a)および図3(b)における実行フローメッセージ欄は、「テストログの固定文字列 | ロギング命令ID | 原本プログラムファイル名 | 制御命令の識別名 | 原本プログラムにおける制御命令の行番号」の形式の実行フローメッセージを示している。このうち「制御命令の識別名 | 原本プログラムにおける制御命令の行番号」には、制御命令ノード欄の記録データが設定される。また、図3(a)および図3(b)におけるメッセージ識別データ欄は、実行フローメッセージを所定のハッシュ関数に入力して得られたハッシュ値を示している。   The execution flow message column in FIG. 3A and FIG. 3B is “test log fixed character string | logging instruction ID | original program file name | control instruction identification name | control instruction line number in original program” An execution flow message of the form Of these, “control command identification name | control program line number in the original program” is set to the record data of the control command node column. Also, the message identification data column in FIGS. 3A and 3B shows a hash value obtained by inputting the execution flow message into a predetermined hash function.

図8(a)は、図3(a)の原本プログラムに対応する試験用プログラムの例を示す。同図は、図7(a)の改変構文木および図3(a)のロギング命令一覧情報にしたがって生成されたプログラムコードを示している。同図では、原本プログラムに記述された制御命令102a〜102gのそれぞれに対応づけてロギング命令108a〜108gのそれぞれが設定されている。図8(b)は、図3(b)の原本プログラムに対応する試験用プログラムの例を示す。同図は、図7(b)の改変構文木および図3(b)のロギング命令一覧情報にしたがって生成されたプログラムコードを示している。同図では、原本プログラムに記述された制御命令102h〜102kのそれぞれに対応づけてロギング命令108h〜108kのそれぞれが設定されている。   FIG. 8A shows an example of a test program corresponding to the original program shown in FIG. This figure shows the program code generated in accordance with the modified syntax tree of FIG. 7A and the logging instruction list information of FIG. In the figure, each of the logging instructions 108a to 108g is set in association with each of the control instructions 102a to 102g described in the original program. FIG. 8B shows an example of a test program corresponding to the original program shown in FIG. This figure shows the program code generated in accordance with the modified syntax tree of FIG. 7B and the logging instruction list information of FIG. 3B. In the figure, logging commands 108h to 108k are set in association with the control commands 102h to 102k described in the original program.

試験用プログラム出力部58は、ロギング命令一覧情報に設定されたロギング命令ノードを改変構文木にて検出すると、そのメッセージ識別データを所定のロギング命令の引数として設定することで、試験用プログラムを生成する。図8(a)および図8(b)におけるロギング命令「insert」は、ユーザにより定義された関数であり、所定のファイルやデータベースに対して、引数で指定された文字列データを出力する。   When the logging command node set in the logging command list information is detected by the modified syntax tree, the test program output unit 58 generates a test program by setting the message identification data as an argument of a predetermined logging command. To do. The logging instruction “insert” in FIGS. 8A and 8B is a function defined by the user, and outputs character string data specified by an argument to a predetermined file or database.

第1実施形態のロギング命令は、原本プログラムにおける処理結果の出力先に、引数で指定された文字列データを出力する命令である。これにより、原本プログラムの当初記載のプログラムコードにより出力された処理結果と並列して、メッセージ識別データが出力され、処理結果と実行フローとの対応づけが容易になる。また、第1実施形態のロギング命令は、引数で指定されたメッセージ識別データを、原本プログラムにおける処理結果を閲覧するソフトウェアにおいて通常非表示とされる態様で出力する命令である。例えば、原本プログラムにおける処理結果の出力先がHTMLファイルやXMLファイル等の構造化文書である場合、引数で指定された文字列データをその構造化文書におけるコメント文として出力する。   The logging command of the first embodiment is a command for outputting character string data specified by an argument to the output destination of the processing result in the original program. Thus, message identification data is output in parallel with the processing result output by the program code described at the beginning of the original program, and the correspondence between the processing result and the execution flow is facilitated. Further, the logging command of the first embodiment is a command for outputting the message identification data specified by the argument in such a manner that it is normally hidden in software for browsing the processing result in the original program. For example, when the output destination of the processing result in the original program is a structured document such as an HTML file or an XML file, the character string data specified by the argument is output as a comment sentence in the structured document.

図9は、第1実施形態の試験支援装置100の動作を示すフローチャートである。指示受付部32は、試験用プログラムに対するペネトレーションテストの開始指示をユーザから受け付け、試験用プログラム取得部62は、試験用プログラムのデータを試験用プログラム保持部18から読み込む(S30)。試験実行部64は、入力データ保持部20に記憶された試験データを読み込み、試験用プログラムに試験データを入力することにより試験用プログラムを動作させてペネトレーションテストを実行する(S32)。なお、試験用プログラムの実行に際し、試験用プログラムがソースコードである場合には、必要に応じて適宜実行可能形式のバイナリコードに変換する。   FIG. 9 is a flowchart showing the operation of the test support apparatus 100 of the first embodiment. The instruction receiving unit 32 receives from the user an instruction to start a penetration test for the test program, and the test program acquiring unit 62 reads the test program data from the test program holding unit 18 (S30). The test execution unit 64 reads the test data stored in the input data holding unit 20, operates the test program by inputting the test data into the test program, and executes the penetration test (S32). When executing the test program, if the test program is a source code, it is appropriately converted into an executable binary code as necessary.

続いて、試験実行部64は、試験用プログラムの動作に伴う試験用プログラムからの出力データを出力データ保持部22に記憶させる(S34)。この出力データには、ロギング命令により出力されたメッセージ識別データが含まれる。試験実行部64は、試験用プログラムからの出力データを、構造化文書のファイル内の文字データとして記憶させてもよく、データベースにおける所定テーブルのレコードとして記憶させてもよい。   Subsequently, the test execution unit 64 stores the output data from the test program accompanying the operation of the test program in the output data holding unit 22 (S34). This output data includes message identification data output by the logging command. The test execution unit 64 may store the output data from the test program as character data in the structured document file, or may store it as a record of a predetermined table in the database.

指示受付部32は、試験用プログラムからの出力データの表示要求をユーザから受け付ける(S36)。実行フローメッセージの参照権限がないユーザからの表示要求であれば(S38のN)、実行フロー表示部34は、試験用プログラムからの出力データをそのまま表示させる。図10は、HTMLファイルに出力された試験用プログラムの出力データを示す。同図は、ペネトレーションテストにおいて、図8(b)の制御命令102hが示す「theMethod」メソッドが呼び出されたときの出力データを示している。同図では、メッセージ識別データがそのまま表示されているため、ペネトレーションテストにおける原本プログラムの実行フローを把握することは困難である。図9に戻る。   The instruction receiving unit 32 receives a display request for output data from the test program from the user (S36). If it is a display request from a user who does not have the authority to refer to the execution flow message (N in S38), the execution flow display unit 34 displays the output data from the test program as it is. FIG. 10 shows the output data of the test program output to the HTML file. This figure shows output data when the “theMethod” method indicated by the control instruction 102h in FIG. 8B is called in the penetration test. In the figure, since the message identification data is displayed as it is, it is difficult to grasp the execution flow of the original program in the penetration test. Returning to FIG.

実行フローメッセージの参照権限を有するユーザからの表示要求であれば(S38のY)、実行フロー表示部34は、ロギング命令保持部16のロギング命令一覧情報を参照して、試験用プログラムからの出力データであるメッセージ識別データを、そのメッセージ識別データに対応づけられた実行フローメッセージに変換して表示させる(S40)。図11は、HTMLファイルに出力された試験用プログラムの出力データを示す。同図では、図10のメッセージ識別データが、対応する実行フローメッセージに変換されているため、ペネトレーションテストにおける原本プログラムの実行フローを容易に確認できる。なお、ユーザが参照権限を有するか否かは公知のユーザ認証方法により判定されてよく、例えばユーザ端末のIDやログイン時のユーザ入力データにより判定してもよい。   If it is a display request from a user who has the authority to refer to the execution flow message (Y in S38), the execution flow display unit 34 refers to the logging command list information in the logging command holding unit 16 and outputs from the test program. The message identification data, which is data, is converted into an execution flow message associated with the message identification data and displayed (S40). FIG. 11 shows the output data of the test program output to the HTML file. In the figure, since the message identification data of FIG. 10 is converted into a corresponding execution flow message, the execution flow of the original program in the penetration test can be easily confirmed. Whether or not the user has the reference authority may be determined by a known user authentication method, and may be determined by, for example, the ID of the user terminal or user input data at the time of login.

図12は、第1実施形態の試験支援装置100の動作を示すフローチャートである。同図のS30〜S34は、図9のS30〜S34と同様であるため説明を省略する。指示受付部32は、原本プログラムに対するテストの網羅状況の表示要求をユーザから受け付ける。網羅状況特定部66は、出力データ保持部22に記憶されたメッセージ識別データを参照して、テストにより実行済のロギング命令を特定する(S50)。すなわち、出力データ保持部22に記憶されたメッセージ識別データに対応するロギング命令は、テストにより実行されたロギング命令であると特定できる。網羅状況特定部66は、ロギング命令保持部16のロギング命令一覧情報を参照して、ロギング命令の総数に占める実行済のロギング命令数を網羅率として算出する(S52)。網羅状況表示部36は、網羅状況特定部66において算出された網羅率をディスプレイに表示させる(S54)。また網羅状況表示部36は、ロギング命令を一覧表示させる際、テストにおいて未実行のロギング命令については実行済のロギング命令よりも強調表示させる(S56)。   FIG. 12 is a flowchart illustrating the operation of the test support apparatus 100 according to the first embodiment. S30 to S34 in the figure are the same as S30 to S34 in FIG. The instruction receiving unit 32 receives from the user a request to display the test coverage for the original program. The coverage status specifying unit 66 refers to the message identification data stored in the output data holding unit 22 and specifies a logging command executed by the test (S50). In other words, the logging command corresponding to the message identification data stored in the output data holding unit 22 can be specified as the logging command executed by the test. The coverage status specifying unit 66 refers to the logging command list information in the logging command holding unit 16 and calculates the number of executed logging commands in the total number of logging commands as a coverage rate (S52). The coverage status display unit 36 displays the coverage rate calculated by the coverage status specifying unit 66 on the display (S54). Further, when displaying the logging commands in a list, the coverage status display unit 36 highlights the logging commands that have not been executed in the test more than the executed logging commands (S56).

図13は、網羅状況表示部36による網羅状況の表示イメージを示す。なお、同図の網羅状況は、図5(a)の原本プログラムに対するテストの網羅状況を示している。この例では、ロギング命令の総数が7、実行済のロギング命令数が5であるため、コード網羅率が71%と表示されている。また、実行フローメッセージの一覧表示においては、未実行のロギング命令において出力されるメッセージが、ボールド書体かつ他のメッセージよりも大きな文字サイズで強調表示されている。この結果を確認したユーザは、網羅率を向上させるために、図5(a)の原本プログラムにおける15行目の条件判定がtrueとなるように、試験データ等を調整すべきことを認識できる。   FIG. 13 shows a display image of the coverage status by the coverage status display unit 36. Note that the coverage status in FIG. 5 indicates the test coverage status for the original program in FIG. In this example, since the total number of logging instructions is 7 and the number of executed logging instructions is 5, the code coverage is displayed as 71%. In the execution flow message list display, a message output in an unexecuted logging command is highlighted with a bold font and a larger character size than other messages. The user who confirms the result can recognize that the test data or the like should be adjusted so that the condition determination on the 15th line in the original program in FIG. 5A becomes true in order to improve the coverage rate.

第1実施形態の試験支援装置100によれば、原本プログラムに対するペネトレーションテストを実行すべき際に、制御命令に対応づけてロギング命令を設定した試験用プログラムに対してペネトレーションテストが実行される。これにより、ペネトレーションテスト実行時の原本プログラムの実行フローをユーザが確認可能になる。ペネトレーションテストにおいて問題が検出された場合には、原本プログラムの実行フロー該当箇所を参照することで問題箇所を迅速に特定できる。また、ロギング命令では、試験用プログラムにおける制御命令の記述位置ではなく、原本プログラムにおける制御命令の記述位置が出力される。これにより、原本プログラムに存在する問題箇所を容易に特定しやすくなる。ユーザによる改修対象となるのは原本プログラムであるため、ユーザによる改修作業を一層支援できることになる。また、原本プログラムに記載されたプログラムコードそのものではなく、原本プログラムに対応する抽象構文木が改変されて試験用プログラムが生成される。これにより、原本プログラムの記述スタイルに依存することなく、制御命令を容易かつ正確に検出可能となり、ロギング命令の設定を容易かつ正確に実現できる。   According to the test support apparatus 100 of the first embodiment, when the penetration test for the original program is to be executed, the penetration test is executed for the test program in which the logging command is set in association with the control command. Thereby, the user can check the execution flow of the original program when the penetration test is executed. When a problem is detected in the penetration test, the problem part can be quickly identified by referring to the corresponding part of the original program execution flow. In the logging instruction, the description position of the control instruction in the original program is output instead of the description position of the control instruction in the test program. Thereby, it becomes easy to identify the problem location which exists in the original program. Since the original program is to be repaired by the user, the repair work by the user can be further supported. Further, not the program code itself described in the original program but the abstract syntax tree corresponding to the original program is modified to generate a test program. As a result, the control command can be detected easily and accurately without depending on the description style of the original program, and the setting of the logging command can be realized easily and accurately.

また試験支援装置100によれば、複数のプログラミング言語のそれぞれについて制御命令ノードの定義を記録したテーブルを参照して、その定義に合致する制御命令ノードが検出される。原本プログラムを記述したプログラミング言語に応じた定義を参照することにより、プログラミング言語に依存しない共通のロジックにて制御命令ノードを検出でき、その制御命令ノードに対応づけてロギング命令ノードを設定できる。   Further, according to the test support apparatus 100, a control instruction node that matches the definition is detected by referring to a table that records the definition of the control instruction node for each of a plurality of programming languages. By referring to the definition corresponding to the programming language describing the original program, the control instruction node can be detected by common logic independent of the programming language, and the logging instruction node can be set in association with the control instruction node.

さらに試験支援装置100によれば、ペネトレーションテストにおける試験用プログラムの処理結果は構造化文書のデータとして出力され、ロギング命令による出力データはその構造化文書におけるコメント文として出力される。言い換えれば、構造化文書の閲覧用プログラムにおいて、通常非表示とされる態様で出力される。これにより、ロギング命令による出力データによって、試験用プログラムの処理結果の閲覧が困難になることを回避できる。例えば、試験用プログラムの処理結果がHTMLファイルのデータとして出力される場合、ロギング命令による出力データをそのまま表示させると、ウェブブラウザでの表示上問題になる場合がある。しかし、コメント文として出力されるため、ウェブブラウザでは試験用プログラムの処理結果を問題なく表示させることができる。かつ、HTMLファイルのソースデータを参照すればロギング命令によるメッセージも参照でき、実行フローを容易に特定できる。   Further, according to the test support apparatus 100, the processing result of the test program in the penetration test is output as structured document data, and the output data by the logging command is output as a comment sentence in the structured document. In other words, in the structured document browsing program, it is output in a mode that is normally hidden. Thereby, it is possible to avoid difficulty in browsing the processing result of the test program due to the output data by the logging command. For example, when the processing result of the test program is output as HTML file data, if the output data by the logging command is displayed as it is, there may be a problem in display on the web browser. However, since it is output as a comment sentence, the processing result of the test program can be displayed without any problem in the web browser. In addition, if the source data of the HTML file is referred to, a message by a logging command can be referred to, and the execution flow can be easily specified.

さらにまた試験支援装置100によれば、ロギング命令による出力データとして、実行フローメッセージそのものに代えてメッセージ識別データが出力される。そして、ロギング命令による出力データを権限のあるユーザが参照する際には、メッセージ識別データが実行フローメッセージに変換されて表示される。これにより、権限のないユーザからは実行フローメッセージを隠蔽することができ、原本プログラムの内部構造等の情報漏洩を防止できる。   Furthermore, according to the test support apparatus 100, message identification data is output as output data by the logging command instead of the execution flow message itself. When an authorized user refers to the output data from the logging command, the message identification data is converted into an execution flow message and displayed. As a result, the execution flow message can be concealed from unauthorized users, and information leakage such as the internal structure of the original program can be prevented.

さらにまた試験支援装置100によれば、ペネトレーションテストにおけるプログラムコードの実行割合を示す網羅率をユーザに提供できる。試験支援装置100では、抽象構文木を介して、複数の制御命令のそれぞれに対応づけてロギング命令が設定されるため、原本プログラムの規模や、原本プログラムの書式に依存することなく、高い精度の網羅率を容易に算出できる。   Furthermore, according to the test support apparatus 100, it is possible to provide the user with a coverage rate indicating the execution rate of the program code in the penetration test. In the test support apparatus 100, since a logging instruction is set in association with each of a plurality of control instructions via an abstract syntax tree, high accuracy can be achieved without depending on the size of the original program or the format of the original program. The coverage rate can be calculated easily.

以上、本発明を第1の実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。   The present invention has been described based on the first embodiment. This embodiment is an exemplification, and it will be understood by those skilled in the art that various modifications can be made to combinations of the respective constituent elements and processing processes, and such modifications are also within the scope of the present invention. is there.

上述した第1実施形態では、1つの試験支援装置100において、改変部50および試験部60の両方が備えられた。変形例においては、改変部50と試験部60とは、互いに異なる複数の装置に分散して備えられてもよい。言い換えれば、第1の装置において生成された試験用プログラムのデータを第1の装置とは異なる第2の装置が読み込んで、第2の装置においてペネトレーションテスト、およびテスト結果の表示等が行われてもよい。   In the first embodiment described above, both the modification unit 50 and the test unit 60 are provided in one test support apparatus 100. In a modification, the modification unit 50 and the test unit 60 may be distributed and provided in a plurality of different devices. In other words, the second device different from the first device reads the test program data generated in the first device, and the second device performs a penetration test, a test result display, and the like. Also good.

また、試験支援装置100の各機能ブロックを実現するプログラムモジュールは、IDE(Integrated Development Environment)等、他のソフトウェアプログラムに対するプラグインとして実装されてもよい。例えば、Eclipseに対するプラグインとして実装され、ユーザはこのプラグインをEclipseにアドオンすることで、試験用プログラムの生成およびペネトレーションテストを実行してもよい。これにより、ユーザはEclipseにおいてプログラムコードをコーディングした後、そのプログラムコードに対するペネトレーションテストをシームレスに実行できる。   Moreover, the program module which implement | achieves each functional block of the test assistance apparatus 100 may be mounted as a plug-in with respect to other software programs, such as IDE (Integrated Development Environment). For example, it may be implemented as a plug-in for Eclipse, and the user may add this plug-in to Eclipse to execute a test program generation and a penetration test. As a result, the user can seamlessly execute a penetration test for the program code after coding the program code in Eclipse.

上述した第1実施形態では、本発明の技術思想をペネトレーションテストに適用した例を示した。しかし、本発明の技術思想はペネトレーションテストのみならずコンピュータプログラムのテスト全般に適用可能であり、その場合にも、第1実施形態に記載した各効果を奏することは当業者には理解されるところである。   In 1st Embodiment mentioned above, the example which applied the technical idea of this invention to the penetration test was shown. However, the technical idea of the present invention can be applied not only to the penetration test but also to the entire computer program test, and even in this case, those skilled in the art will understand that the effects described in the first embodiment can be achieved. is there.

上述した第1実施形態では特に言及しなかったが、試験用プログラムにおいて実行フローメッセージを出力するロギング命令が実行された場合、その実行フローメッセージは一旦バッファリングされてもよい。そして、試験用プログラムの実行終了後に、処理結果の出力先へ遅延出力されてもよい。試験実行部64は、そのための機能ブロックであるメッセージ出力部を含んでもよい。このメッセージ出力部は、試験用プログラムの実行においてロギング命令が実行されると、そのロギング命令の出力内容であるメッセージ識別データを所定のバッファ領域に一旦格納する。そして、試験用プログラムの実行終了後、バッファ領域に格納されたメッセージ識別データを、処理結果の出力先であるファイル内の、当該ファイルの構造を破壊しないフィールドへ追加する。   Although not specifically mentioned in the first embodiment described above, when a logging instruction that outputs an execution flow message is executed in the test program, the execution flow message may be buffered once. Then, after the execution of the test program is completed, the output may be delayed to the output destination of the processing result. The test execution unit 64 may include a message output unit that is a functional block for that purpose. When a logging command is executed in the execution of the test program, the message output unit temporarily stores message identification data, which is the output content of the logging command, in a predetermined buffer area. After the execution of the test program, the message identification data stored in the buffer area is added to a field in the file that is the output destination of the processing result that does not destroy the structure of the file.

例えば、メッセージ出力部は、処理結果の出力先が構造化文書である場合、その文書が整形式であることや、その文書が妥当性を有することに影響を与えないフィールドへメッセージ識別データを追加する。より具体的に処理結果の出力先がHTMLファイルである場合、メッセージ出力部は、そのHTMLファイルにおける</body>タグの位置を検出し、</body>タグの後にメッセージ識別データを出力してもよい。この場合、図10のメッセージ識別データおよび図11の実行フローメッセージは、それぞれ</body>タグと</html>タグの間に出力されることになる。この変形例によれば、実行フローメッセージ(メッセージ識別データ)の出力により、実行フローメッセージの出力先文書の構造を破壊してしまうことを確実に回避できる。   For example, if the output destination of the processing result is a structured document, the message output unit adds message identification data to a field that does not affect that the document is well-formed or that the document has validity To do. More specifically, when the output destination of the processing result is an HTML file, the message output unit detects the position of the </ body> tag in the HTML file, and outputs message identification data after the </ body> tag. Also good. In this case, the message identification data in FIG. 10 and the execution flow message in FIG. 11 are output between the </ body> tag and the </ html> tag, respectively. According to this modification, it is possible to reliably avoid destruction of the structure of the output destination document of the execution flow message due to the output of the execution flow message (message identification data).

また、試験実行部64は、ウェブブラウザ等の所定のウェブクライアントからHTTPリクエストを受け付けて試験用プログラムを実行し、その結果を示すHTML文書を含むHTTPレスポンスをウェブクライアントへ送信してもよい。この場合、メッセージ出力部は、上記HTTPレスポンスのレスポンスヘッダ内に所定のヘッダを設け、その値としてメッセージ識別データを設定してもよい。ウェブクライアントは、レスポンスヘッダにおいて上記所定のヘッダを検出した場合、その値であるメッセージ識別データを所定のログファイルに出力してもよい。また、ウェブクライアントは実行フロー表示部34と連携し、メッセージ識別データを実行フローメッセージに変換させた上で、その実行フローメッセージをログ出力してもよく、画面表示させてもよい。なお、メッセージ出力部は、HTTPレスポンスのレスポンスボディ内に、HTML文書のデータとは別個にメッセージ識別データを設定してもよい。ウェブクライアントの動作は、レスポンスヘッダ内にメッセージ識別データが設定される場合と同様である。   Further, the test execution unit 64 may receive an HTTP request from a predetermined web client such as a web browser, execute the test program, and send an HTTP response including an HTML document indicating the result to the web client. In this case, the message output unit may provide a predetermined header in the response header of the HTTP response and set the message identification data as the value. When the web client detects the predetermined header in the response header, the web client may output message identification data that is the value to the predetermined log file. Further, the web client may cooperate with the execution flow display unit 34 to convert the message identification data into an execution flow message, and then output the execution flow message in a log or display it on a screen. The message output unit may set message identification data separately from the HTML document data in the response body of the HTTP response. The operation of the web client is the same as when message identification data is set in the response header.

(第2実施形態)
まず第2実施形態の概要を説明する。企業におけるウェブアプリケーション(以下、「ウェブAP」とも呼ぶ。)の開発工程では、ウェブAPのソースコードを作成したプログラマは、自身で作成したウェブAPをローカル端末内のウェブサーバへデプロイして単体試験を行うことがある。その際に、プログラマは単体試験のための試験電文(以下、「UT用試験電文」とも呼ぶ。)をウェブサーバへ送信することで、ウェブAPの機能を呼び出してデバッグ作業を行う。例えば、ウェブAPの機能を呼び出すためのURLをウェブブラウザへ入力することで、ウェブブラウザからウェブサーバへHTTPリクエストが送信され、ウェブサーバにおいてウェブAPが実行される。
(Second Embodiment)
First, the outline of the second embodiment will be described. In the development process of a web application (hereinafter also referred to as “web AP”) in a company, the programmer who created the web AP source code deploys the web AP created by himself / herself to the web server in the local terminal and performs a unit test. May be performed. At this time, the programmer transmits a test message for a unit test (hereinafter also referred to as a “UT test message”) to the web server, thereby calling a function of the web AP and performing debugging work. For example, by inputting a URL for calling a function of the web AP to the web browser, an HTTP request is transmitted from the web browser to the web server, and the web AP is executed in the web server.

ウェブAPの結合試験工程では、試験サーバ内のウェブサーバへデプロイされたウェブAPに対して、試験担当者がペネトレーションテストを行うことがある。その際、試験担当者は、ペネトレーションテストのための試験電文(以下、「IT用試験電文」とも呼ぶ。)、例えばウェブAPの脆弱性を確認するための入力変数値(引数)が設定された試験電文を一から作成する必要があり、試験コストの増大要因となっていた。   In the web AP combination test process, the tester may perform a penetration test on the web AP deployed to the web server in the test server. At that time, the test person set a test message for penetration test (hereinafter also referred to as “IT test message”), for example, an input variable value (argument) for confirming the vulnerability of the Web AP. It was necessary to prepare a test message from scratch, which was a factor in increasing the test cost.

本発明者は、ウェブAPに対する試験電文には、ウェブサーバのアドレス等の試験環境に応じて変化するフィールド(以下、「環境依存フィールド」)と、試験環境には非依存であるもののウェブAPの構成に応じて変化するフィールド(以下、「AP依存フィールド」)とが存在することに着目した。例えば、UT用試験電文のURLが「http://localhost:8080/test/login.php?user=user1&pass=pass1」である場合、「http://localhost:8080/test/」の部分は環境依存フィールドであり、「login.php?user=user1&pass=pass1」の部分はAP依存フィールドとなる。そして、UT用試験電文に基づいてIT用試験電文を自動設定する仕組みに想到した。   The present inventor indicates that a test message for a web AP includes a field that changes according to a test environment such as a web server address (hereinafter referred to as an “environment-dependent field”) and a web AP that is independent of the test environment. It was noted that there are fields that change according to the configuration (hereinafter referred to as “AP-dependent fields”). For example, if the URL of the test message for UT is “http: // localhost: 8080 / test / login.php? User = user1 & pass = pass1”, the part of “http: // localhost: 8080 / test /” This is a dependency field, and the part of “login.php? User = user1 & pass = pass1” is an AP dependency field. Then, they came up with a mechanism for automatically setting an IT test message based on the UT test message.

具体的には、試験支援装置において、UT用試験電文における環境依存フィールドとAP依存フィールドとを識別する。そして、環境依存フィールドには試験サーバの環境情報を設定する一方で、AP依存フィールドにはペネトレーションテスト用の予め定められたパラメータ値(以下、「IT用パラメータ値」とも呼ぶ)を設定する。これにより、UT用試験電文からIT用試験電文の自動生成を実現でき、試験担当者の負担を低減できる。言い換えれば、ウェブAPに対する効率的な試験を実現し、試験コストを低減させることができる。以下、第2実施形態の構成を説明する。   Specifically, the test support apparatus identifies the environment-dependent field and the AP-dependent field in the UT test message. The environment information of the test server is set in the environment dependent field, while a predetermined parameter value for penetration test (hereinafter also referred to as “IT parameter value”) is set in the AP dependent field. Thereby, automatic generation of the IT test message from the UT test message can be realized, and the burden on the person in charge of the test can be reduced. In other words, an efficient test for the web AP can be realized, and the test cost can be reduced. Hereinafter, the configuration of the second embodiment will be described.

図14は、第2実施形態の企業システムの構成を示す。企業システム1000は、顧客にサービスを提供するためのアプリケーションの開発から運用の間に介在する複数の情報処理装置を含む。これらの情報処理装置は、LAN・WAN・インターネット等、公知の通信手段を介して接続される。   FIG. 14 shows the configuration of the enterprise system of the second embodiment. The enterprise system 1000 includes a plurality of information processing apparatuses interposed between the development and operation of an application for providing a service to a customer. These information processing apparatuses are connected via known communication means such as LAN, WAN, and the Internet.

開発用PC200で総称される開発用PC200a、開発用PC200b、開発用PC200cは、ウェブAPのソースコードを作成する複数のプログラマのそれぞれにより操作されるPC端末である。ウェブAPに対するプログラマによる単体試験のために、開発用PC200のそれぞれにはウェブアプリケーションサーバソフトウェア(以下、「ウェブAPサーバ」と呼ぶ。)がインストールされている。また開発用PC200には、ウェブAPの単体試験においてローカルのウェブAPサーバへ送信されたUT用試験電文を随時取得し、試験支援装置300へ通知するキャプチャツールがインストールされている。   The development PC 200a, the development PC 200b, and the development PC 200c, which are collectively referred to as the development PC 200, are PC terminals that are operated by each of a plurality of programmers that create web AP source code. Web application server software (hereinafter referred to as “web AP server”) is installed in each development PC 200 for a unit test by a programmer for the web AP. Further, the development PC 200 is installed with a capture tool that acquires the UT test message transmitted to the local web AP server in the web AP unit test at any time and notifies the test support apparatus 300 of it.

SCM(Source Code Management)装置202は、開発用PC200のそれぞれにおいて作成されたウェブAPのソースファイルについて、その変更履歴を所定のリポジトリにより一元管理する。言い換えれば、バージョン管理装置でもある。例えば、開発用PC200からのソースファイルのチェックインや、開発用PC200へのソースファイルのチェックアウトを制御する。試験サーバ204は、ウェブAPサーバがインストールされており、ウェブAPに対するペネトレーションテストの試験環境を提供する。運用サーバ206は、ウェブAPサーバがインストールされており、インターネットを介して、ウェブAPによるサービスを顧客PC208へ提供する。   An SCM (Source Code Management) device 202 centrally manages the change history of web AP source files created on each development PC 200 using a predetermined repository. In other words, it is also a version management device. For example, the check-in of the source file from the development PC 200 and the check-out of the source file to the development PC 200 are controlled. The test server 204 has a web AP server installed therein, and provides a test environment for a penetration test for the web AP. The operation server 206 is installed with a web AP server, and provides a service by the web AP to the customer PC 208 via the Internet.

試験支援装置300は、ウェブAPに対するペネトレーションテストの実施を支援する情報処理装置である。試験支援装置300は、試験電文設定部302と、試験電文保持部304と、実行フロー可視化部306とを備える。   The test support apparatus 300 is an information processing apparatus that supports the implementation of a penetration test for a web AP. The test support apparatus 300 includes a test message setting unit 302, a test message holding unit 304, and an execution flow visualization unit 306.

試験電文設定部302は、SCM装置202から取得したウェブAPのソースコードと、開発用PC200から取得したUT用試験電文とに基づいて、IT用試験電文を自動設定する。試験電文設定部302の詳細な構成は後述する。試験電文保持部304は、試験電文設定部302により設定されたIT用試験電文が格納される記憶領域である。実行フロー可視化部306は、試験電文保持部304に格納されたIT用試験電文を使用してウェブAPに対するペネトレーションテストを実行する。その際に、ウェブAPの実行フローを可視化するために、第1実施形態の技術によりウェブAPのソースコードを改変する。実行フロー可視化部306は、図1に記載した各種機能ブロックを含む。   The test message setting unit 302 automatically sets the IT test message based on the web AP source code acquired from the SCM device 202 and the UT test message acquired from the development PC 200. The detailed configuration of the test message setting unit 302 will be described later. The test message holding unit 304 is a storage area in which the IT test message set by the test message setting unit 302 is stored. The execution flow visualization unit 306 executes a penetration test for the web AP using the IT test message stored in the test message holding unit 304. At that time, in order to visualize the execution flow of the web AP, the source code of the web AP is modified by the technique of the first embodiment. The execution flow visualization unit 306 includes various functional blocks described in FIG.

図15は、図14の試験電文設定部302の詳細構成を示すブロック図である。試験電文設定部302は、各種データを保持するための記憶領域である記憶部310と、各種データ処理を実行するデータ処理部320とを備える。記憶部310は、環境情報保持部312と、パラメータ保持部314とを含む。データ処理部320は、ソースコード取得部322と、ソースコード解析部324と、UT用試験電文取得部326と、試験電文解析部328と、IT用試験電文設定部330とを含む。   FIG. 15 is a block diagram showing a detailed configuration of the test message setting unit 302 in FIG. The test message setting unit 302 includes a storage unit 310 that is a storage area for holding various data, and a data processing unit 320 that executes various data processing. The storage unit 310 includes an environment information holding unit 312 and a parameter holding unit 314. The data processing unit 320 includes a source code acquisition unit 322, a source code analysis unit 324, a UT test message acquisition unit 326, a test message analysis unit 328, and an IT test message setting unit 330.

環境情報保持部312は、ペネトレーションテストの試験環境に関する情報を保持する。この情報には、試験サーバ204のウェブAPサーバにデプロイされたウェブAPへアクセスするためのウェブAPサーバの設定値が含まれる。第2実施形態の環境情報保持部312は、試験サーバ204のIPアドレス「192.168.1.100」と、試験サーバ204におけるウェブAPサーバのポート番号「3000」と、ウェブAPにアクセスするためのディレクトリパス「/it/」を対応づけて保持する。   The environment information holding unit 312 holds information related to the test environment of the penetration test. This information includes a setting value of the web AP server for accessing the web AP deployed on the web AP server of the test server 204. The environment information holding unit 312 according to the second embodiment includes an IP address “192.168.1.100” of the test server 204, a port number “3000” of the web AP server in the test server 204, and a directory path “for accessing the web AP”. "/ it /" is held in correspondence.

パラメータ保持部314は、ペネトレーションテストのためにIT用試験電文に設定すべきIT用パラメータ値を保持する。このパラメータ値は、ウェブAPの脆弱性を検出するためのデータ列であり、既知のセキュリティ脅威に対するウェブAPの動作を確認するための文字列であってもよい。例えば、ウェブAPに対してクロスサイトスクリプティングやSQLインジェクションを試行するための不正な入力データであってもよい。後者の例として、ユーザID等のログイン情報が不正であっても、そのログイン情報を正しいと判定させるように構成された文字列であってもよい。   The parameter holding unit 314 holds the IT parameter value to be set in the IT test message for the penetration test. This parameter value is a data string for detecting the vulnerability of the web AP, and may be a character string for confirming the operation of the web AP against a known security threat. For example, it may be illegal input data for attempting cross-site scripting or SQL injection for the web AP. As an example of the latter, even if login information such as a user ID is invalid, it may be a character string configured to determine that the login information is correct.

ソースコード取得部322は、SCM装置202を定期的に監視し、SCM装置202に対してチェックインされたソースファイルをSCM装置202から取得する。ソースコード解析部324は、ソースコード取得部322により取得されたソースファイルに記述されたウェブAPについて、その機能(ウェブAPの関数)を呼び出すための要素(以下、「コール要素」とも呼ぶ。)をソースコードから抽出する。例えば、ソースコードの記述言語がPHPである場合、ソースコード解析部324は、PHPソースファイル名をアプリケーション名として抽出し、GETメソッドやPOSTメソッドの引数を参照するための所定文字列を検出して入力変数名を抽出する。以下具体例を示す。   The source code acquisition unit 322 periodically monitors the SCM device 202 and acquires from the SCM device 202 a source file that is checked into the SCM device 202. The source code analysis unit 324 is an element (hereinafter also referred to as “call element”) for calling a function (web AP function) of the web AP described in the source file acquired by the source code acquisition unit 322. Is extracted from the source code. For example, when the description language of the source code is PHP, the source code analysis unit 324 extracts the PHP source file name as the application name, and detects a predetermined character string for referring to the argument of the GET method or the POST method. Extract the input variable name. Specific examples are shown below.

図16(a)および図16(b)は、ソースファイルの一例を示す。図16(a)は、ファイル名が「login.php」であり、コード行400においてGETメソッドの引数「user」と「pass」とを参照している。図16(b)は、ファイル名が「rcvform.php」であり、コード行402においてPOSTメソッドの引数「text1」を参照している。   FIG. 16A and FIG. 16B show an example of a source file. In FIG. 16A, the file name is “login.php”, and the code line 400 refers to the arguments “user” and “pass” of the GET method. In FIG. 16B, the file name is “rcvform.php” and the code line 402 refers to the argument “text1” of the POST method.

図17は、ソースファイルから抽出されたコール要素の例を示す。同図のIDはソースファイルを一意に特定する識別情報であり、ID「001」は図16(a)のソースファイル、ID「002」は図16(b)のソースファイルに対応する。ソースコード解析部324は、図16(a)のソースファイルについて、そのファイル名をアプリケーション名として抽出し、キーワード「$_GET」の直後に設定された文字列「user」および「pass」を入力変数名として抽出する。同様に図16(b)のソースファイルについて、そのファイル名をアプリケーション名として抽出し、キーワード「$_POST」の直後に設定された文字列「text1」を入力変数名として抽出する。   FIG. 17 shows an example of call elements extracted from a source file. ID in the figure is identification information for uniquely identifying the source file. ID “001” corresponds to the source file in FIG. 16A and ID “002” corresponds to the source file in FIG. The source code analysis unit 324 extracts the file name of the source file of FIG. 16A as the application name, and inputs the character strings “user” and “pass” set immediately after the keyword “$ _GET” as input variables. Extract as a name. Similarly, for the source file in FIG. 16B, the file name is extracted as the application name, and the character string “text1” set immediately after the keyword “$ _POST” is extracted as the input variable name.

なお、キーワード「$_GET」や「$_POST」の直後には変数(例えば「$param」)が指定され、その変数が示す内容(例えば上記文字列「user」等)は同じソースファイルの別の場所や、「require」および「include」により参照される別のソースファイルで別途指定される場合がある。そのため、ソースコード解析部324は、キーワードの直後が変数であった場合、その中身を特定するためのエイリアス解析を実行する。このエイリアス解析は、C言語で記述されたソースコードにおけるポインタ解析と同様の処理である。具体的には、キーワード直後の変数(「ターゲット変数」とも呼ぶ。)に対する代入文、および、ターゲット変数に代入された別の変数に対する代入文を、ソースファイル内および参照する別ソースファイル内で順次検索し、最終的にターゲット変数が示すスカラー値(例えば「$」指定のない文字列等の定数値・リテラル値)を入力変数名として特定してもよい。   A variable (for example, “$ param”) is specified immediately after the keywords “$ _GET” and “$ _POST”, and the contents indicated by the variable (for example, the above-mentioned character string “user”, etc.) May be specified separately by location or another source file referenced by "require" and "include". For this reason, the source code analysis unit 324 executes an alias analysis for specifying the contents when a variable immediately follows a keyword. This alias analysis is the same processing as the pointer analysis in the source code described in C language. Specifically, an assignment statement for a variable immediately after a keyword (also called a “target variable”) and an assignment statement for another variable assigned to the target variable are sequentially performed in the source file and in another source file to be referenced. A scalar value (for example, a constant value / literal value such as a character string without “$” designation) finally indicated by the target variable may be specified as an input variable name by searching.

また、ソースコードの記述言語がRubyonRailsである場合、ソースコード解析部324は、コントローラ名、アクション名、入力変数名をソースコードから抽出する。例えば、「class」や「ApplicationController」等のキーワードによりコントローラ名の設定フィールドを特定してコントローラ名を取得してもよい。また「def」等のキーワードによりアクション名および入力変数名の設定フィールドを特定して、それぞれのコール要素を抽出してもよい。図17のID「003」のレコードは、RubyOnRailsのソースコードから抽出されたコール要素を示している。   If the description language of the source code is Rubyon Rails, the source code analysis unit 324 extracts the controller name, action name, and input variable name from the source code. For example, the controller name may be specified by specifying a controller name setting field using a keyword such as “class” or “ApplicationController”. Alternatively, the call name may be extracted by specifying the action name and input variable name setting fields using a keyword such as “def”. The record of ID “003” in FIG. 17 indicates a call element extracted from the source code of RubyOnRails.

図15に戻り、UT用試験電文取得部326は、開発用PC200においてウェブAPに対して発行されたUT用試験電文を開発用PC200から取得する。図18(a)および図18(b)は、UT用試験電文の例を示す。なお、UT用試験電文はURL形式で取得されてもよい。例えば、図18(a)に対応するURLは、「http://localhost:8080/ut/001/login.php?user=user1&pass=pass1」となり、図18(b)に対応するURLは、「http://localhost:8080/rcvform.php」となる。UT用試験電文取得部326は、リクエストボディが存在する場合(POSTの場合)、リクエストボディの内容も取得する。   Returning to FIG. 15, the UT test message acquisition unit 326 acquires from the development PC 200 the UT test message issued to the web AP in the development PC 200. FIG. 18A and FIG. 18B show examples of UT test messages. The UT test message may be acquired in the URL format. For example, the URL corresponding to FIG. 18A is “http: // localhost: 8080 / ut / 001 / login.php? User = user1 & pass = pass1”, and the URL corresponding to FIG. http: // localhost: 8080 / rcvform.php ". When the request body exists (in the case of POST), the UT test message acquisition unit 326 also acquires the content of the request body.

試験電文解析部328は、ソースコード解析部324により抽出されたウェブAPのコール要素と、そのコール要素が設定されたUT用試験電文とを対応づける。例えば、図18(a)のUT用試験電文には図17のID「001」のコール要素が設定されているため、これらを対応づける。同様に、図18(b)のUT用試験電文と、図17のID「002」のコール要素とを対応づける。   The test message analysis unit 328 associates the call element of the web AP extracted by the source code analysis unit 324 with the UT test message in which the call element is set. For example, since the call element of ID “001” in FIG. 17 is set in the UT test message in FIG. 18A, these are associated with each other. Similarly, the UT test message in FIG. 18B is associated with the call element with ID “002” in FIG.

試験電文解析部328は、コール要素のアプリケーション名(またはコントローラ名+アクション名)にしたがって、UT用試験電文における環境依存フィールドとAP依存フィールドとを特定する。具体的には、UT用試験電文においてアプリケーション名の前までのデータフィールドを環境依存フィールドとして特定し、アプリケーション名以降のデータフィールドをAP依存フィールドとして特定する。   The test message analysis unit 328 specifies the environment-dependent field and the AP-dependent field in the UT test message according to the application name (or controller name + action name) of the call element. Specifically, in the UT test message, the data field before the application name is specified as the environment-dependent field, and the data field after the application name is specified as the AP-dependent field.

例えば、図18の(a)のUT用試験電文については、スキーマ・ホスト名・ポート番号・ディレクトリパスのうち「/ut/001/」を環境依存フィールドとして特定する。URL形式の場合は「http://localhost:8080/ut/001/」を環境依存フィールドとして特定する。その一方で、ディレクトリパスのうち「login.php」・クエリ文字列をAP依存フィールドとして特定する。URL形式の場合は「login.php?user=user1&pass=pass1」をAP依存フィールドとして特定する。   For example, for the UT test message in FIG. 18A, “/ ut / 001 /” is specified as the environment-dependent field among the schema, host name, port number, and directory path. In the case of the URL format, “http: // localhost: 8080 / ut / 001 /” is specified as the environment-dependent field. On the other hand, “login.php” in the directory path and the query character string are specified as the AP-dependent field. In the case of the URL format, “login.php? User = user1 & pass = pass1” is specified as the AP-dependent field.

また図18の(b)のUT用試験電文については、スキーマ・ホスト名・ポート番号・ディレクトリパスのうち「/」を環境依存フィールドとして特定する。URL形式の場合は「http://localhost:8080/」を環境依存フィールドとして特定する。その一方で、ディレクトリパスのうち「rcvform.php」・コンテンツ長・リクエストボディをAP依存フィールドとして特定する。   For the UT test message in FIG. 18B, “/” is specified as an environment-dependent field among the schema, host name, port number, and directory path. In the case of the URL format, “http: // localhost: 8080 /” is specified as the environment-dependent field. On the other hand, “rcvform.php”, content length, and request body in the directory path are specified as AP-dependent fields.

IT用試験電文設定部330は、UT用試験電文の環境依存フィールドとAP依存フィールドとのそれぞれを変換することにより、UT用試験電文からIT用試験電文を生成する。具体的には、UT用試験電文の環境依存フィールドに対して、環境情報保持部312に保持された試験環境を示す情報を設定する。それとともに、AP依存フィールドのクエリ文字列もしくはリクエストボディに設定された入力変数の値として、パラメータ保持部314に保持されたIT用パラメータ値を設定する。IT用試験電文設定部330は、作成したIT用試験電文のデータを試験電文保持部304へ格納する。   The IT test message setting unit 330 generates an IT test message from the UT test message by converting each of the environment-dependent field and the AP-dependent field of the UT test message. Specifically, information indicating the test environment held in the environment information holding unit 312 is set in the environment-dependent field of the UT test message. At the same time, the IT parameter value held in the parameter holding unit 314 is set as the value of the input variable set in the query character string or request body of the AP-dependent field. The IT test message setting unit 330 stores the created IT test message data in the test message holding unit 304.

図19(a)および図19(b)は、IT用試験電文の例を示す。図19(a)のIT用試験電文は図18(a)のUT用試験電文が改変されたものであり、図19(b)のIT用試験電文は図18(b)のUT用試験電文が改変されたものである。それぞれのホスト名・ポート番号・ディレクトリパスには、試験サーバ204の環境情報が設定されている。また、図19(a)のクエリ文字列および図19(b)のリクエストボディには、ペネトレーションテスト用の文字列、例えばSQLインジェクションに対する脆弱性を検出するための文字列が設定される。図19(b)のコンテンツ長欄には、リクエストボディの新たなデータ長が設定される。なお図19(a)のIT用試験電文について、URL形式で作成する場合は、「http://192.168.1.100:3000/it/login.php?user=任意の文字列' OR 1=1--&pass=任意の文字列」を設定する。クエリ文字列として、実際には、URLエンコードした結果の文字列を設定してもよいことはもちろんである。   FIG. 19A and FIG. 19B show examples of IT test messages. The IT test message in FIG. 19A is a modification of the UT test message in FIG. 18A, and the IT test message in FIG. 19B is the UT test message in FIG. 18B. Has been modified. The environment information of the test server 204 is set in each host name, port number, and directory path. Further, in the query character string in FIG. 19A and the request body in FIG. 19B, a character string for penetration test, for example, a character string for detecting vulnerability to SQL injection is set. In the content length column of FIG. 19B, a new data length of the request body is set. When creating the IT test message in FIG. 19A in the URL format, “http://192.168.1.100:3000/it/login.php?user=arbitrary character string 'OR 1 = 1− -& pass = arbitrary character string ”is set. Of course, a URL-encoded result character string may be set as the query character string.

IT用試験電文設定部330は、ソースコードから抽出されたコール要素のうち、対応するUT用試験電文が検出されないコール要素が存在する場合、そのコール要素を設定したIT用試験電文をさらに作成して試験電文保持部304へ格納する。この場合、試験サーバ204の環境情報が設定された環境依存フィールドと、アプリケーション名(コントローラ名およびアクション名)と、IT用パラメータ値が設定された入力変数とが連結されることにより、IT用試験電文が作成されればよい。図19(c)もIT用試験電文の例を示す。同図は、対応するUT用試験電文が検出されない場合に、図17のID「003」のコール要素が設定されたIT用試験電文を示している。   When there is a call element for which a corresponding UT test message is not detected among the call elements extracted from the source code, the IT test message setting unit 330 further creates an IT test message in which the call element is set. And stored in the test message holding unit 304. In this case, the environment-dependent field in which the environment information of the test server 204 is set, the application name (controller name and action name), and the input variable in which the IT parameter value is set are connected, thereby the IT test. A telegram may be created. FIG. 19C also shows an example of an IT test message. This figure shows an IT test message in which the call element of ID “003” in FIG. 17 is set when the corresponding UT test message is not detected.

以上の構成による動作を以下説明する。
図20は、第2実施形態の試験支援装置300の動作を示すフローチャートである。ウェブAPのプログラマは、開発用PC200においてウェブAPのソースコードを作成して、ウェブAPの単体試験を実施する。そして、単体試験が完了したウェブAPのソースコードをSCM装置202へチェックインする。試験支援装置300のUT用試験電文取得部326は、開発用PC200においてウェブAPの単体試験が実行された際(S100のY)、その単体試験で使用されたUT用試験電文を取得して所定の記憶領域に格納する(S102)。開発用PC200においてウェブAPの単体試験が未実行であれば(S100のN)、S102はスキップされる。
The operation of the above configuration will be described below.
FIG. 20 is a flowchart illustrating the operation of the test support apparatus 300 according to the second embodiment. A web AP programmer creates a web AP source code on the development PC 200 and performs a web AP unit test. Then, the web AP source code for which the unit test has been completed is checked into the SCM device 202. When the web AP unit test is executed on the development PC 200 (Y in S100), the UT test message acquisition unit 326 of the test support apparatus 300 acquires the UT test message used in the unit test and performs predetermined processing. (S102). If the web AP unit test is not executed in the development PC 200 (N in S100), S102 is skipped.

ウェブAPのソースコードが更新された場合、第2実施形態ではSCM装置202へ新たなソースコードがチェックインされた際(S104のY)、試験支援装置300のソースコード取得部322は、その新たなソースコードを取得する(S106)。ソースコード解析部324は、ウェブAPのソースコードからウェブAPの機能(関数)を呼び出すためのコール要素(関数名や引数名)を抽出して所定の記憶領域に格納する(S108)。ウェブAPのソースコードが更新されなければ(S104のN)、S106およびS108はスキップされる。   When the source code of the web AP is updated, in the second embodiment, when a new source code is checked into the SCM device 202 (Y in S104), the source code acquisition unit 322 of the test support device 300 uses the new source code. A source code is acquired (S106). The source code analysis unit 324 extracts a call element (function name or argument name) for calling a function (function) of the web AP from the web AP source code, and stores it in a predetermined storage area (S108). If the web AP source code is not updated (N in S104), S106 and S108 are skipped.

試験支援装置300の試験電文解析部328は、IT用試験電文を作成すべき所定のトリガを検出すると(S110のY)、所定の記憶領域に格納されたUT用試験電文と、ウェブAPのコール要素とを対応づける(S112)。このトリガは、ユーザからIT用試験電文の作成指示を受け付けたことでもよく、所定の日時への到達を検出したことでもよい。試験電文解析部328は、コール要素の名称に基づき、UT用試験電文における環境依存フィールドとAP依存フィールドとを特定する(S114)。   When the test message analysis unit 328 of the test support apparatus 300 detects a predetermined trigger for creating an IT test message (Y in S110), the UT test message stored in a predetermined storage area and the web AP call The elements are associated with each other (S112). This trigger may be that an instruction to create an IT test message is received from the user, or that the arrival of a predetermined date and time is detected. The test message analysis unit 328 specifies the environment-dependent field and the AP-dependent field in the UT test message based on the name of the call element (S114).

IT用試験電文設定部330は、ペネトレーションテストの試験環境を示す予め定められた情報を、UT用試験電文における環境依存フィールドへ設定する。それとともに、ペネトレーションテスト用に予め定められたパラメータ値を、UT用試験電文におけるAP依存フィールドへ設定することにより、UT用試験電文からIT用試験電文を生成する(S116)。S112からS116の処理はUT用試験電文ごとに繰り返し実行される。UT用試験電文と未対応のコール要素が残存する場合(S118のY)、IT用試験電文設定部330はそのコール要素に応じたIT用試験電文をさらに設定する(S120)。これにより、全てのコール要素に応じたIT用試験電文が設定される。IT用試験電文設定部330は、生成したIT用試験電文を試験電文保持部304へ格納する。UT用試験電文と未対応のコール要素がなければ(S118のN)、S120はスキップされる。IT用試験電文の作成トリガが未検出であれば(S110のN)、S112以降はスキップされて本図のフローを終了する。   The IT test message setting unit 330 sets predetermined information indicating the test environment of the penetration test in the environment-dependent field in the UT test message. At the same time, an IT test message is generated from the UT test message by setting a parameter value predetermined for the penetration test in the AP-dependent field in the UT test message (S116). The processing from S112 to S116 is repeatedly executed for each UT test message. When a call element that does not correspond to the UT test message remains (Y in S118), the IT test message setting unit 330 further sets an IT test message according to the call element (S120). Thereby, an IT test message corresponding to all the call elements is set. The IT test message setting unit 330 stores the generated IT test message in the test message holding unit 304. If there is no call element not corresponding to the UT test message (N in S118), S120 is skipped. If the IT test message creation trigger has not been detected (N in S110), the flow in FIG.

試験支援装置300の実行フロー可視化部306における原本プログラム取得部52は、試験電文設定部302のソースコード取得部322と同様に、ウェブAPのソースコードを原本プログラムとして取得する。以降、第1実施形態に記載の方法により、ペネトレーションテストにおける実行フローを可視化するための試験用プログラムが設定される。試験用プログラム取得部62は、その試験用プログラムを試験サーバ204へデプロイする。試験実行部64は、試験電文保持部304に格納されたIT用試験電文を使用して、試験用プログラムに対するペネトレーションテストを実行する。例えば、IT用試験電文からペネトレーションテストのためのHTTPリクエストを設定し、そのデータを試験サーバ204のウェブAPサーバへ送信する。これにより、ウェブAPのペネトレーションテストにおける実行フローを示すメッセージを所定のログファイルへ出力させる。試験支援装置300は、ペネトレーションテストが完了したウェブAPのプログラム、典型的にはペネトレーションテストで問題がなかった(もしくはバグが修正された)プログラムを運用サーバ206へデプロイすることにより実運用を開始させる。   Similar to the source code acquisition unit 322 of the test message setting unit 302, the original program acquisition unit 52 in the execution flow visualization unit 306 of the test support apparatus 300 acquires the source code of the web AP as an original program. Thereafter, a test program for visualizing the execution flow in the penetration test is set by the method described in the first embodiment. The test program acquisition unit 62 deploys the test program to the test server 204. The test execution unit 64 uses the IT test message stored in the test message holding unit 304 to execute a penetration test for the test program. For example, an HTTP request for a penetration test is set from the IT test message, and the data is transmitted to the web AP server of the test server 204. As a result, a message indicating an execution flow in the penetration test of the web AP is output to a predetermined log file. The test support apparatus 300 starts the actual operation by deploying a Web AP program for which the penetration test has been completed, typically a program in which there is no problem in the penetration test (or a bug has been corrected) to the operation server 206. .

第2実施形態の試験支援装置300によれば、試験サーバ204において実施されるべきウェブAPの結合試験(実施の形態ではペネトレーションテスト)用の試験電文を、プログラマ個別の開発用PC200におけるウェブAPの単体試験で用いられた試験電文に基づいて自動設定できる。これにより、ペネトレーションテストのための試験電文を一から作成することが不要になる。また、開発用PC200におけるウェブAPの単体試験後、そのウェブAPが運用サーバ206へデプロイされるまでが全自動化される。このように試験支援装置300によれば、アプリケーションに対する効率的な試験を実現し、その試験に要する時間や人件費等のコストを低減できる。   According to the test support apparatus 300 of the second embodiment, a test message for a web AP combination test (a penetration test in the embodiment) to be performed in the test server 204 is transmitted to a web AP in the development PC 200 for each programmer. It can be automatically set based on the test message used in the unit test. This eliminates the need for creating a test message for the penetration test from scratch. Further, after the web AP unit test on the development PC 200, the process until the web AP is deployed to the operation server 206 is fully automated. Thus, according to the test support apparatus 300, an efficient test for an application can be realized, and costs such as time and labor cost required for the test can be reduced.

また一般的に、結合試験はウェブAPの仕様に基づくブラックボックステストである一方で、単体試験はソースコードの記述内容に基づくホワイトボックステストである。ペネトレーションテストは、ウェブAPの脆弱性を検出するためのものであるため可及的に細粒度の試験が実施されることが望ましい。試験支援装置300によれば、IT用試験電文はUT用試験電文の粒度で作成されるため、ウェブAPの脆弱性の検出精度を高めることができる。   In general, the combination test is a black box test based on the specification of the Web AP, while the unit test is a white box test based on the description content of the source code. Since the penetration test is for detecting the vulnerability of the Web AP, it is desirable that the finest granularity test be performed as much as possible. According to the test support apparatus 300, since the IT test message is created with the granularity of the UT test message, the accuracy of detecting the vulnerability of the web AP can be increased.

また、試験支援装置300によれば、UT用試験電文に対応しないウェブAPのコール要素が存在する場合、そのコール要素を設定したIT用試験電文が追加的に作成される。単体試験で用いられたUT用試験電文はソースコードに実装されたコール要素の部分集合であり、単体試験が未実施のコール要素に対応する機能には脆弱性が潜む可能性がある。試験支援装置300によれば、単体試験が未実施であっても、ソースコードから検出された全コール要素に対してIT用試験電文が設定されるため、ペネトレーションテストの網羅性を向上させ、またウェブAPにおける脆弱性を漏れなく検出できる。   Also, according to the test support apparatus 300, when there is a web AP call element that does not correspond to the UT test message, an IT test message in which the call element is set is additionally created. The test message for UT used in the unit test is a subset of the call elements implemented in the source code, and there is a possibility that the function corresponding to the call element for which the unit test has not been performed has a vulnerability. According to the test support apparatus 300, even if the unit test is not performed, since the test message for IT is set for all call elements detected from the source code, the penetration of the penetration test is improved. Vulnerability in web AP can be detected without omission.

以上、本発明を第2の実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。   The present invention has been described based on the second embodiment. This embodiment is an exemplification, and it will be understood by those skilled in the art that various modifications can be made to combinations of the respective constituent elements and processing processes, and such modifications are also within the scope of the present invention. is there.

上記第2実施形態では、試験支援装置300の実行フロー可視化部306は、試験サーバ204におけるペネトレーションテスト時の実行フローを可視化させるための処理を実行することとした。変形例では、実行フロー可視化部306は、開発用PC200におけるウェブAPの単体試験の際に、そのウェブAPのソースコードを改変することにより、UT用試験電文を用いた単体試験におけるウェブAPの実行フローを可視化させてもよい。具体的には、実行フロー可視化部306の改変部50は、単体試験を実行する旨の通知をソースコードとともに開発用PC200から受け付け、改変後の試験用プログラムを開発用PC200へ提供してもよい。これにより、単体試験の結果が出力されるログファイルに、ウェブAPの実行フローを示すメッセージを出力させてもよい。   In the second embodiment, the execution flow visualization unit 306 of the test support apparatus 300 executes the process for visualizing the execution flow at the time of the penetration test in the test server 204. In the modification, the execution flow visualization unit 306 executes the web AP in the unit test using the test message for UT by modifying the source code of the web AP in the unit test of the web AP in the development PC 200. The flow may be visualized. Specifically, the modification unit 50 of the execution flow visualization unit 306 may receive a notification that the unit test is executed from the development PC 200 together with the source code, and provide the modified test program to the development PC 200. . As a result, a message indicating the execution flow of the web AP may be output to the log file in which the result of the unit test is output.

この変形例によれば、ウェブAPのコール要素とUT用試験電文との対応づけが困難となる問題を解決できる。例えば、開発用PC200のウェブAPサーバにおいてデフォルトのディレクトリパスが自動設定される場合や、ディレクトリパスのエイリアスが設定される場合、UT用試験電文(URL)にコール要素が明示されず、両者の対応づけが困難な場合がある。この変形例によれば、単体試験におけるウェブAPの実行フローが可視化されることで、UT用試験電文により呼び出されたウェブAPのコール要素(アプリケーション名やアクション名、入力変数名)が把握容易になり、ウェブAPのコール要素とUT用試験電文との対応づけを容易化できる。   According to this modification, it is possible to solve the problem that it is difficult to associate the call element of the web AP with the UT test message. For example, when the default directory path is automatically set on the Web AP server of the development PC 200 or when a directory path alias is set, the call element is not clearly indicated in the UT test message (URL), and both It may be difficult to attach. According to this modification, the execution flow of the web AP in the unit test is visualized, so that the call elements (application name, action name, input variable name) of the web AP called by the UT test message can be easily grasped. Thus, the association between the call element of the web AP and the test message for UT can be facilitated.

また、試験電文設定部302の試験電文解析部328は、ログファイルに出力された実行フローメッセージを参照して、UT用試験電文により呼び出されたウェブAPのコール要素を特定してもよい。例えば、実行フローメッセージの行番号により特定されるソースコードのコード行に記述されたアプリケーション名や入力変数名をコール要素として特定してもよい。試験電文解析部328は、そのコール要素を、ソースコード解析部324により抽出されたウェブAPのコール要素と照合してもよい。すなわち、ソースコード解析部324により抽出されたウェブAPのコール要素のうち、UT用試験電文により呼び出されたウェブAPのコール要素と合致するものを、そのUT用試験電文と対応づけてもよい。   Further, the test message analysis unit 328 of the test message setting unit 302 may identify the call element of the web AP called by the UT test message with reference to the execution flow message output to the log file. For example, the application name or the input variable name described in the code line of the source code specified by the line number of the execution flow message may be specified as the call element. The test message analysis unit 328 may collate the call element with the call element of the web AP extracted by the source code analysis unit 324. That is, among the call elements of the web AP extracted by the source code analysis unit 324, those that match the call element of the web AP called by the UT test message may be associated with the UT test message.

また、実行フロー可視化部306の試験部60は、変更検出部340と試験電文選択部342とをさらに備えてもよい。図21は、変形例における試験部60の機能ブロックを示すブロック図である。変更検出部340は、SCM装置202に対して新たにチェックインされたソースコード(更新されたソースコード)に関する情報をSCM装置202から取得する。試験電文選択部342は、更新されたソースコードに対応するウェブAPの単体試験における実行フローを参照して、UT用試験電文により呼び出されたウェブAPのコール要素を試験対象のコール要素として特定する。試験電文選択部342は、試験電文保持部304に格納されたIT用試験電文のうち、試験対象のコール要素に対応する試験電文を、ソースコードの変更に伴うペネトレーションテストで使用すべきIT用試験電文として選択する。試験対象のコール要素に対応する試験電文は、言い換えれば試験対象のコール要素に基づき設定された試験電文であり、さらに言い換えれば試験対象のコール要素が設定された試験電文である。   Further, the test unit 60 of the execution flow visualization unit 306 may further include a change detection unit 340 and a test message selection unit 342. FIG. 21 is a block diagram illustrating functional blocks of the test unit 60 according to the modification. The change detection unit 340 acquires information regarding the source code (updated source code) newly checked in with respect to the SCM device 202 from the SCM device 202. The test message selection unit 342 refers to the execution flow in the web AP unit test corresponding to the updated source code, and identifies the call element of the web AP called by the UT test message as the call element to be tested. . The test message selection unit 342 uses the IT test message stored in the test message holding unit 304 to use the test message corresponding to the call element to be tested in the penetration test associated with the source code change. Select as a message. In other words, the test message corresponding to the call element to be tested is a test message set based on the call element to be tested, and in other words, the test message in which the call element to be tested is set.

試験実行部64は、試験電文選択部342により選択されたIT用試験電文を用いてウェブAPの更新に伴うペネトレーションテストを実行する。この変形例によれば、ソースコードの変更に伴うペネトレーションテストにおいて使用すべきIT用試験電文が自動で選択され、効率的な試験を実現できる。また、ウェブAPの実行フローが特定されることにより、ソースコードの一部の変更であっても、その変更箇所から呼び出される一連のコール要素が特定される。すなわちソースコードの変更が影響を与えうるコール要素が特定されて、それらのコール要素に対応するIT用試験電文を用いたペネトレーションテストが実施される。これにより、ソースコードの変更に伴い実施すべきリグレッションテストを漏れなく実行できる。また、ソースコード変更の影響を受けないコール要素、言い換えれば、再度のペネトレーションテストが不要なコール要素に関するIT用試験電文は選択されないため、ソースコードの変更に伴う試験コストを低減できる。   The test execution unit 64 uses the IT test message selected by the test message selection unit 342 to execute a penetration test associated with the update of the web AP. According to this modification, an IT test message to be used in a penetration test accompanying a change in source code is automatically selected, and an efficient test can be realized. Further, by specifying the execution flow of the web AP, even if the source code is partially changed, a series of call elements to be called from the changed portion is specified. That is, call elements that can be affected by changes in the source code are specified, and a penetration test using the test message for IT corresponding to these call elements is performed. As a result, a regression test to be performed in accordance with the change of the source code can be executed without omission. In addition, since a test element for an IT that is not affected by the source code change, in other words, a call element that does not require a second penetration test is not selected, the test cost associated with the change of the source code can be reduced.

上記第2実施形態では、試験電文設定部302のUT用試験電文取得部326は、UT用試験電文を開発用PC200から直接取得することとした。変形例では、開発用PC200における単体試験では、所定のプロキシサーバを経由してUT用試験電文をウェブAPへ送信することとしてもよい。この場合、UT用試験電文取得部326はその所定のプロキシサーバからUT用試験電文を取得してもよい。   In the second embodiment, the UT test message acquisition unit 326 of the test message setting unit 302 directly acquires the UT test message from the development PC 200. In a modification, in the unit test in the development PC 200, a UT test message may be transmitted to the web AP via a predetermined proxy server. In this case, the UT test message acquisition unit 326 may acquire the UT test message from the predetermined proxy server.

上記第2実施形態では特に言及していないが、開発用PC200とSCM装置202と試験サーバ204と運用サーバ206はユーザ企業側に設置され、試験支援装置300はサービスプロバイダ側に設置されてもよい。この場合、試験支援装置300は、インターネット等の通信網を介してソースコードおよびUT用試験電文を収集してIT用試験電文を設定し、通信網を介してIT用試験電文を用いたペネトレーションテストを実行してもよい。すなわち、ウェブAPに対するIT用試験電文の自動作成サービスや、ペネトレーションテスト自動化のサービスを、ASP・SaaSの形態で提供してもよい。   Although not specifically mentioned in the second embodiment, the development PC 200, the SCM device 202, the test server 204, and the operation server 206 may be installed on the user company side, and the test support device 300 may be installed on the service provider side. . In this case, the test support apparatus 300 collects source codes and UT test messages via a communication network such as the Internet, sets an IT test message, and performs a penetration test using the IT test message via the communication network. May be executed. In other words, an IT test message automatic creation service or a penetration test automation service for a web AP may be provided in the form of ASP / SaaS.

上述した実施の形態および変形例の任意の組み合わせもまた本発明の実施の形態として有用である。組み合わせによって生じる新たな実施の形態は、組み合わされる実施の形態および変形例それぞれの効果をあわせもつ。   Any combination of the above-described embodiments and modifications is also useful as an embodiment of the present invention. The new embodiment generated by the combination has the effects of the combined embodiment and the modified examples.

請求項に記載の各構成要件が果たすべき機能は、実施の形態および変形例において示された各構成要素の単体もしくはそれらの連携によって実現されることも当業者には理解されるところである。   It should also be understood by those skilled in the art that the functions to be fulfilled by the constituent elements described in the claims are realized by the individual constituent elements shown in the embodiments and the modification examples or by their cooperation.

12 原本プログラム保持部、 14 ノード定義保持部、 16 ロギング命令保持部、 18 試験用プログラム保持部、 20 入力データ保持部、 22 出力データ保持部、 34 実行フロー表示部、 36 網羅状況表示部、 52 原本プログラム取得部、 54 構文木生成部、 56 構文木改変部、 58 試験用プログラム出力部、 62 試験用プログラム取得部、 64 試験実行部、 66 網羅状況特定部、 100 試験支援装置、 200 開発用PC、 202 SCM装置、 204 試験サーバ、 206 運用サーバ、 300 試験支援装置、 302 試験電文設定部、 304 試験電文保持部、 306 実行フロー可視化部、 322 ソースコード取得部、 324 ソースコード解析部、 326 UT用試験電文取得部、 328 試験電文解析部、 330 IT用試験電文設定部、 340 変更検出部、 342 試験電文選択部、1000 企業システム。   12 original program holding unit, 14 node definition holding unit, 16 logging command holding unit, 18 test program holding unit, 20 input data holding unit, 22 output data holding unit, 34 execution flow display unit, 36 coverage status display unit, 52 Original program acquisition unit, 54 syntax tree generation unit, 56 syntax tree modification unit, 58 test program output unit, 62 test program acquisition unit, 64 test execution unit, 66 coverage status identification unit, 100 test support device, 200 for development PC, 202 SCM device, 204 test server, 206 operation server, 300 test support device, 302 test message setting unit, 304 test message holding unit, 306 execution flow visualization unit, 322 source code acquisition unit, 324 source code analysis unit, 326 Test message for UT Obtaining unit, 328 test message analysis unit, 330 IT test message setting unit, 340 change detection unit, 342 test message selection unit, 1000 enterprise system.

Claims (7)

アプリケーションのソースコードを取得するソースコード取得部と、
前記ソースコードから、前記アプリケーションの機能を呼び出すための要素の名称を抽出する要素名抽出部と、
前記ソースコードの作成者による前記アプリケーションの試験において前記アプリケーションに対して送信された第1の試験電文を取得する試験電文取得部と、
前記要素名抽出部により抽出された要素の名称にしたがって、前記第1の試験電文において前記アプリケーションの機能を呼び出すための要素が設定されたフィールドを特定する試験電文解析部と、
特定されたフィールドに対して予め定められた要素の値を設定することにより、前記アプリケーションに対する新たな試験において前記アプリケーションに対して送信すべき第2の試験電文を設定する試験電文設定部と、
を備えることを特徴とする試験支援装置。
A source code acquisition unit for acquiring application source code;
An element name extraction unit for extracting the name of an element for calling the function of the application from the source code;
A test message acquisition unit that acquires a first test message transmitted to the application in the test of the application by the creator of the source code;
A test message analysis unit that identifies a field in which an element for calling a function of the application is set in the first test message according to the name of the element extracted by the element name extraction unit;
A test message setting unit that sets a second test message to be transmitted to the application in a new test for the application by setting a value of a predetermined element for the identified field;
A test support apparatus comprising:
前記試験電文設定部は、ペネトレーションテストのための試験文字列を前記要素の値として前記特定されたフィールドへ設定することにより、ペネトレーションテストのための第2の試験電文を設定することを特徴とする請求項1に記載の試験支援装置。   The test message setting unit sets a second test message for a penetration test by setting a test character string for a penetration test in the specified field as a value of the element. The test support apparatus according to claim 1. 前記試験電文設定部は、前記要素名抽出部により抽出された要素の名称のうち前記試験電文解析部により特定されたフィールドに未設定のものについて、その未設定の要素を設定した試験電文も前記第2の試験電文として設定することを特徴とする請求項1または2に記載の試験支援装置。   The test message setting unit includes a test message in which an unset element is set for an element that is not set in the field specified by the test message analysis unit among the element names extracted by the element name extraction unit. The test support apparatus according to claim 1, wherein the test support apparatus is set as a second test message. 前記試験電文設定部は、前記要素名抽出部により抽出された関数名のうち前記試験電文解析部により特定されたフィールドに未設定の関数名がある場合、その関数を呼び出すための試験電文も前記第2の試験電文として設定することを特徴とする請求項3に記載の試験支援装置。   If there is an unset function name in the field specified by the test message analysis unit among the function names extracted by the element name extraction unit, the test message setting unit also calls the test message for calling the function. The test support apparatus according to claim 3, wherein the test support apparatus is set as a second test message. 前記ソースコードが準拠するプログラミング言語の文法規則にしたがって、前記ソースコードの各要素をノードとする構文木を生成する構文木生成部と、
前記構文木において、前記アプリケーションの実行フローを制御する制御命令のノードに対して、当該制御命令により実行フローが制御されたことを示すメッセージを出力するロギング命令のノードを対応づけて設定する構文木改変部と、
前記第1の試験電文が発行された際の前記アプリケーションの実行フローについて、その実行フローに含まれる前記アプリケーションの機能を呼び出すための要素を確認可能にするためのプログラムであって、制御命令に対応づけてロギング命令が設定された試験用プログラムを、前記構文木を参照して出力するプログラム出力部と、
をさらに備えることを特徴とする請求項1から4のいずれかに記載の試験支援装置。
A syntax tree generation unit that generates a syntax tree having each element of the source code as a node according to a grammatical rule of a programming language to which the source code conforms;
In the syntax tree, a syntax tree in which a node of a control instruction that controls the execution flow of the application is set in association with a node of a logging instruction that outputs a message indicating that the execution flow is controlled by the control instruction. A modification section;
A program for making it possible to confirm an element for calling a function of the application included in the execution flow of the application when the first test message is issued, and corresponding to a control command A program output unit that outputs a test program in which a logging command is set with reference to the syntax tree;
The test support apparatus according to claim 1, further comprising:
本装置もしくは外部装置において管理された複数のソースコードのうち少なくとも一部のソースコードが変更された旨を検出する変更検出部と、
変更されたソースコードに関するアプリケーションの実行フローを参照して、その実行フローに含まれる前記アプリケーションの機能を呼び出すための要素が設定された第2の試験電文を、ソースコードの変更に伴う試験において発行すべき試験電文として選択する試験電文選択部と、
をさらに備えることを特徴とする請求項5に記載の試験支援装置。
A change detection unit for detecting that at least a part of the source code of a plurality of source codes managed in the device or the external device has been changed;
Referring to the execution flow of the application related to the changed source code, issue a second test message in which an element for calling the function of the application included in the execution flow is set in the test accompanying the change of the source code A test message selector to select as a test message to be
The test support apparatus according to claim 5, further comprising:
アプリケーションのソースコードを取得するステップと、
前記ソースコードから、前記アプリケーションの機能を呼び出すための要素の名称を抽出するステップと、
前記ソースコードの作成者による前記アプリケーションの試験において前記アプリケーションに対して送信された第1の試験電文を取得するステップと、
前記抽出するステップにおいて抽出された要素の名称にしたがって、前記第1の試験電文において前記アプリケーションの機能を呼び出すための要素が設定されたフィールドを特定するステップと、
特定されたフィールドに対して予め定められた要素の値を設定することにより、前記アプリケーションに対する新たな試験において前記アプリケーションに対して送信すべき第2の試験電文を設定するステップと、
をコンピュータに実行させることを特徴とする試験支援方法。
Getting the application source code;
Extracting a name of an element for calling a function of the application from the source code;
Obtaining a first test message sent to the application in a test of the application by the creator of the source code;
Identifying a field in which an element for calling a function of the application is set in the first test message according to the name of the element extracted in the extracting step;
Setting a second test message to be transmitted to the application in a new test for the application by setting a predetermined element value for the identified field;
A test support method characterized by causing a computer to execute.
JP2010112475A 2009-05-18 2010-05-14 Test support device and test support method Pending JP2010267266A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010112475A JP2010267266A (en) 2009-05-18 2010-05-14 Test support device and test support method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/JP2009/002189 WO2010134123A1 (en) 2009-05-18 2009-05-18 Test support device and test support method
JP2010112475A JP2010267266A (en) 2009-05-18 2010-05-14 Test support device and test support method

Publications (1)

Publication Number Publication Date
JP2010267266A true JP2010267266A (en) 2010-11-25

Family

ID=43364133

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010112475A Pending JP2010267266A (en) 2009-05-18 2010-05-14 Test support device and test support method

Country Status (1)

Country Link
JP (1) JP2010267266A (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014517968A (en) * 2011-05-31 2014-07-24 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. Application security inspection
JP2016001494A (en) * 2015-08-26 2016-01-07 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. Application security testing
JP2016184194A (en) * 2015-03-25 2016-10-20 ビッグローブ株式会社 Security diagnosis device, system, method, and program
US9501650B2 (en) 2011-05-31 2016-11-22 Hewlett Packard Enterprise Development Lp Application security testing
WO2021084581A1 (en) * 2019-10-28 2021-05-06 日本電信電話株式会社 Test information extraction device, test information extraction method, and program
JP2021518595A (en) * 2018-03-13 2021-08-02 テクトロニクス・インコーポレイテッドTektronix,Inc. An integrated development environment for protocol design, evaluation, and debugging

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014517968A (en) * 2011-05-31 2014-07-24 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. Application security inspection
US9215247B2 (en) 2011-05-31 2015-12-15 Hewlett Packard Enterprise Development Lp Application security testing
US9501650B2 (en) 2011-05-31 2016-11-22 Hewlett Packard Enterprise Development Lp Application security testing
KR101745758B1 (en) * 2011-05-31 2017-06-09 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 Application security testing
JP2016184194A (en) * 2015-03-25 2016-10-20 ビッグローブ株式会社 Security diagnosis device, system, method, and program
JP2016001494A (en) * 2015-08-26 2016-01-07 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. Application security testing
JP2021518595A (en) * 2018-03-13 2021-08-02 テクトロニクス・インコーポレイテッドTektronix,Inc. An integrated development environment for protocol design, evaluation, and debugging
JP7364580B2 (en) 2018-03-13 2023-10-18 テクトロニクス・インコーポレイテッド Protocol Designer for Test and Measurement Equipment and How to Generate, Debug, and Deploy Protocol Definitions
WO2021084581A1 (en) * 2019-10-28 2021-05-06 日本電信電話株式会社 Test information extraction device, test information extraction method, and program
JPWO2021084581A1 (en) * 2019-10-28 2021-05-06
JP7322964B2 (en) 2019-10-28 2023-08-08 日本電信電話株式会社 Test information extraction device, test information extraction method and program
US11886328B2 (en) 2019-10-28 2024-01-30 Nippon Telegraph And Telephone Corporation Test information extraction apparatus, test information extraction method and program

Similar Documents

Publication Publication Date Title
JP5425699B2 (en) Information processing apparatus, test case generation method, program, and recording medium
US7272822B1 (en) Automatically generating software tests based on metadata
US9195572B2 (en) Systems and methods for identifying user interface (UI) elements
US10185546B2 (en) Service extraction and application composition
Mohammadi et al. Detecting cross-site scripting vulnerabilities through automated unit testing
KR20080053293A (en) Initial server-side content rendering for client-script web pages
JP4023803B2 (en) Web application development support apparatus, data processing method, and program
US20130191814A1 (en) Test scenario generation method, test scenario generation system, and test scenario generation program
US20150317288A1 (en) Method and system to maintain a web page
JP5208635B2 (en) Information processing apparatus, information processing system, programming support method and program for supporting programming
JP2010267266A (en) Test support device and test support method
Okanović et al. Towards performance tooling interoperability: An open format for representing execution traces
CN113296653B (en) Simulation interaction model construction method, interaction method and related equipment
CN109240700B (en) Key code positioning method and system
CN105094921A (en) Method and device for calling peripheral in cross-browser mode
CN109062784B (en) Interface parameter constraint code entry positioning method and system
JP2013030017A (en) Method, device, and program for generating test program
CN116361793A (en) Code detection method, device, electronic equipment and storage medium
KR20200066778A (en) Code coverage measuring apparatus, code coverage measuring method of the code coverage mearusing apparatus, and code coverage measuring system
US12001324B2 (en) Operation pattern generation apparatus, operation pattern generation method and program
CN109062785B (en) Interface parameter constraint code positioning method and system
JP5556480B2 (en) Context Violation Detection Support Method, Context Violation Detection Support Device, and Context Violation Detection Support Program
Elia et al. A Field Perspective on the Interoperability of Web Services
WO2010134123A1 (en) Test support device and test support method
Schulz Integrating performance tests in a generative software development platform