JP2010267266A - Test support device and test support method - Google Patents
Test support device and test support method Download PDFInfo
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
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.
アプリケーション開発の一連の工程において、アプリケーションのソースコードのプログラマは、自身で作成したアプリケーションの単体試験用の試験電文を作成することがある。その一方で、結合試験工程においてペネトレーションテストが実施される場合は、ペネトレーションテスト用の試験電文を試験担当者が一から作成する必要があり、試験コストの増大要因となっていたと本発明者は考えた。 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の実施の形態(以下、「第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
本明細書のブロック図において示される各ブロックは、ハードウェア的には、コンピュータの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
記憶部10:
記憶部10は、原本プログラム保持部12と、ノード定義保持部14と、ロギング命令保持部16と、試験用プログラム保持部18と、入力データ保持部20と、出力データ保持部22とを有する。原本プログラム保持部12は、原本プログラムのソースコードを保持する。原本プログラムを記述するプログラミング言語には制限はなく、例えばPHP・JAVA(登録商標)等であってもよい。
Storage unit 10:
The
ノード定義保持部14は、制御命令ノードの定義情報を保持する。具体的には、PHPやJAVA等、互いに異なる複数のプログラミング言語のそれぞれで記述された原本プログラムから生成される抽象構造木について、各抽象構文木において存在しうる制御命令ノードの定義情報を保持する。この定義情報の具体例は、図2において後述する。
The node
ロギング命令保持部16は、試験用プログラムにおいて、複数の制御命令のそれぞれに対応づけて設定される複数のロギング命令について、各ロギング命令の属性情報をロギング命令一覧情報として保持する。ロギング命令一覧情報の具体例は、図3において後述する。試験用プログラム保持部18は、原本プログラムが改変された試験用プログラムを保持する。
The logging
入力データ保持部20は、原本プログラムに対してペネトレーションテストを実行するための試験データを保持する。この試験データは、典型的には、プログラムの脆弱性の有無を確認するための既知の攻撃パターンが設定されたデータである。例えば、クロスサイトスクリプティングに対する脆弱性の有無を検証するための、スクリプト言語で記述されたプログラムコードを含む試験データでもよい。また、SQL(Structured Query Language)インジェクションに対する脆弱性の有無を検証するための文字列を含む試験データでもよい。出力データ保持部22は、ペネトレーションテストにおいて試験用プログラムから出力された出力データを保持する。
The input
UI部30:
UI部30は、指示受付部32と、実行フロー表示部34と、網羅状況表示部36とを有する。指示受付部32は、各種入力装置を介して、ユーザにより入力された各種指示を受け付ける。実行フロー表示部34は、ペネトレーションテストにおける試験用プログラムからの出力データをディスプレイに表示させる。
UI unit 30:
The
網羅状況表示部36は、原本プログラムのプログラムコード全体に占める、ペネトレーションテストにおいて原本プログラムのプログラムコードが実行された割合(以下、適宜「網羅率」と呼ぶ。)をディスプレイに表示させる。また網羅状況表示部36は、試験用プログラムに設定されたロギング命令の一覧を表示する。その際に、ペネトレーションテストにおいて未実行のロギング命令については、実行済のロギング命令よりもユーザから視認されやすい態様でディスプレイ上に表示する。例えば、未実行のロギング命令を、実行済のロギング命令よりも大きな文字サイズや、より視認させやすい表示色等で表示させてもよい。
The coverage
データ処理部40:
データ処理部40は、原本プログラムを試験用プログラムへと改変する改変部50と、試験用プログラムに対してペネトレーションテストを実行する試験部60とを有する。改変部50は、原本プログラム取得部52と、構文木生成部54と、構文木改変部56と、試験用プログラム出力部58とを含む。また試験部60は、試験用プログラム取得部62と、試験実行部64と、網羅状況特定部66とを含む。
Data processing unit 40:
The
原本プログラム取得部52は、原本プログラム保持部12から原本プログラムのデータをメモリに読み込む。構文木生成部54は、原本プログラムに記述されたプログラムコードに対して、使用されているプログラミング言語の文法規則にしたがってあらかじめ定められた方法により字句解析および構文解析を実行する。そして、原本プログラムに基づく抽象構文木(以下、適宜「原本構文木」と呼ぶ。)のデータをメモリに生成する。
The original
構文木生成部54は、LR構文解析法等の既知の手法により原本構文木を作成してもよく、公知の構文解析関数を呼び出すことにより原本構文木を作成してもよい。後者の例として、Eclipse(登録商標)が提供するJDT(Java Development Tools)のライブラリ関数に対して、JAVAで記述された原本プログラムのデータを渡すことにより、その原本プログラムに対応する抽象構文木を生成してもよい。同様に、Eclipseが提供するPDT(PHP Development Tools)のライブラリ関数を呼び出すことにより、PHPで記述された原本プログラムに対応する抽象構文木を生成してもよい。
The syntax
構文木改変部56は、ノード定義保持部14に記憶された制御命令ノードの定義情報を参照して、原本構文木のノードのうち原本プログラムのプログラミング言語に対応した制御命令ノードを識別する。この制御命令ノードには、例えば、メソッド宣言、メソッド呼び出し命令、if・else・switch等の条件分岐命令、for・while等の繰り返し命令、try・catch等の例外処理命令を示すノードが含まれる。
The syntax
構文木改変部56は、制御命令ノードに対応づけて、典型的には原本構文木における制御命令ノード直下のノードとして、ロギング命令ノードを設定することにより、原本構文木を改変した抽象構文木(以下、適宜「改変構文木」と呼ぶ。)のデータを設定する。構文木改変部56は、改変構文木を設定する際に、原本構文木における制御命令ノードの識別情報と、改変構文木におけるロギング命令ノードの識別情報とを対応づけてロギング命令保持部16に記憶させる。
The syntax
なお構文木生成部54は、原本構文木のデータとして、原本構文木の各ノードをルートノード配下の子ノードとして有するDOM(Document Object Model)ツリーのオブジェクトをメモリ上に生成してもよい。このとき、それぞれの子ノードはその属性(例えばクラス型等)として制御命令の種類を示す情報を有してもよい。構文木改変部56は、原本構文木を示すDOMツリーをトラバースして制御命令ノードを検出し、検出した制御命令ノードに対応づけるべきロギング命令ノードを新たな子ノードとしてこのDOMツリーに設定してもよい。この場合、ロギング命令ノードが付加されたDOMツリーが改変構文木のデータとなる。
The syntax
試験用プログラム出力部58は、改変構文木のデータおよびロギング命令保持部16に記憶されたロギング命令一覧情報にしたがって、試験用プログラムを生成して試験用プログラム保持部18に記憶させる。この試験用プログラムは、原本プログラムにおける複数の制御命令それぞれに対応づけてロギング命令が設定されたソースコードであってもよく、そのソースコードに対応する実行可能形式のバイナリコードであってもよい。
The test
ここで試験用プログラム出力部58における試験用プログラムの設定処理を具体的に説明する。まず、試験用プログラム出力部58は、ロギング命令一覧情報として記憶された制御命令ノードとロギング命令ノードとの対応関係にしたがって、ロギング命令で出力させるべき実行フローメッセージを決定する。具体的には、実行フローメッセージとして、ロギング命令が対応する制御命令の識別情報、例えば原本プログラムにおける制御命令の識別名称や位置情報等を設定する。
Here, the test program setting process in the test
次に、試験用プログラム出力部58は、その実行フローメッセージを所定の変換関数に入力することで、その実行フローメッセージとは異なり、その実行フローメッセージを一意に特定するための変換後データ(以下、適宜「メッセージ識別データ」とも呼ぶ。)を取得する。例えば、実行フローメッセージを所定のハッシュ関数に入力して、その実行フローメッセージから一意に生成されるハッシュ値をメッセージ識別データとして取得してもよい。試験用プログラム出力部58は、実行フローメッセージと、その実行フローメッセージに対応するメッセージ識別データとを対応づけて、ロギング命令保持部16にさらに記憶させる。
Next, the test
次に、試験用プログラム出力部58は、原本プログラムのプログラミング言語に対応したロギング命令を決定する。このロギング命令は、標準出力や所定のログファイルに引数データを出力する命令であってもよく、所定のデータベースに引数データを記録する命令であってもよい。例えば、原本プログラムがPHPで記述されている場合には「echo」命令をロギング命令としてもよい。試験用プログラム出力部58は、実行コード通知メッセージそのものではなく、実行フローメッセージに対応するメッセージ識別データをロギング命令により出力させるために、ロギング命令の引数としてメッセージ識別データを設定する。
Next, the test
最後に、試験用プログラム出力部58は、改変構文木を参照して、原本プログラムのプログラムコードに対してロギング命令が適宜挿入された試験用プログラムを生成する。試験用プログラムのソースコードを生成する場合には、改変構文木の各ノードに対応する所定のプログラムコードを逐次設定することにより、改変構文木に対応するソースコードを生成してもよい。また、構文木生成部54と同様に、既知のライブラリ関数を呼び出すことで、抽象構文木のデータからソースコードを生成してもよい。実行形式のバイナリコードを生成する場合には、通常のコンパイル処理と同様に、改変構文木に対して意味解析やリンク処理等を順次実行してバイナリコードを出力すればよい。
Finally, the test
試験用プログラム取得部62は、試験用プログラム保持部18から試験用プログラムのデータをメモリに読み込む。試験実行部64は、試験用プログラムに対するペネトレーションテストを実行する。具体的には、入力データ保持部20に記憶された試験データを取得して試験用プログラムに入力することで試験用プログラムを動作させ、試験用プログラムからの出力データを出力データ保持部22に記憶させる。この出力データには、試験用プログラムによる試験データの処理結果や、制御命令に対応づけて設定されたロギング命令からのメッセージ識別データが含まれる。
The test
網羅状況特定部66は、ロギング命令保持部16に記録されたロギング命令一覧情報と、出力データ保持部22に記録されたメッセージ識別データとを参照して、ペネトレーションテストにおいて実行されたロギング命令を特定する。網羅状況特定部66は、ロギング命令一覧情報におけるロギング命令の総数に占める、出力されたメッセージ識別データ数の割合を、原本プログラムに対するペネトレーションテストの網羅率として算出する。なお、出力されたメッセージ識別データ数を算出する際、同一のメッセージ識別データについては、複数回出力されている場合にも1とカウントする。
The coverage
図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
図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
構文木生成部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
構文木改変部56は、原本構文木に存在する制御命令ノードを検出して、その制御命令ノードにロギング命令ノードを対応づけて設定することにより、原本構文木が改変された改変構文木を設定する(S14)。そして、構文木改変部56は、原本構文木における制御命令ノードの識別情報と、改変構文木においてその制御命令ノードに対し設定したロギング命令ノードの識別情報とを対応づけてロギング命令保持部16に記憶させる(S16)。ここでは、ロギング命令一覧情報のロギング命令ID欄と、ロギング命令ノード欄と、制御命令ノード欄とを設定する。
The syntax
図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
図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
試験用プログラム出力部58は、ロギング命令一覧情報の各レコードを参照して、ロギング命令にて出力させる実行フローメッセージを決定し、その実行フローメッセージに対応するメッセージ識別データを決定する。そして、実行フローメッセージおよびメッセージ識別データをロギング命令一覧情報の各レコードに追加して記録する(S18)。試験用プログラム出力部58は、改変構文木とロギング命令一覧情報とにしたがって、メッセージ識別データを出力するロギング命令が追加され、原本プログラムが改変された試験用プログラムを試験用プログラム保持部18に記憶させる(S20)。
The test
図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
試験用プログラム出力部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
第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
続いて、試験実行部64は、試験用プログラムの動作に伴う試験用プログラムからの出力データを出力データ保持部22に記憶させる(S34)。この出力データには、ロギング命令により出力されたメッセージ識別データが含まれる。試験実行部64は、試験用プログラムからの出力データを、構造化文書のファイル内の文字データとして記憶させてもよく、データベースにおける所定テーブルのレコードとして記憶させてもよい。
Subsequently, the
指示受付部32は、試験用プログラムからの出力データの表示要求をユーザから受け付ける(S36)。実行フローメッセージの参照権限がないユーザからの表示要求であれば(S38のN)、実行フロー表示部34は、試験用プログラムからの出力データをそのまま表示させる。図10は、HTMLファイルに出力された試験用プログラムの出力データを示す。同図は、ペネトレーションテストにおいて、図8(b)の制御命令102hが示す「theMethod」メソッドが呼び出されたときの出力データを示している。同図では、メッセージ識別データがそのまま表示されているため、ペネトレーションテストにおける原本プログラムの実行フローを把握することは困難である。図9に戻る。
The
実行フローメッセージの参照権限を有するユーザからの表示要求であれば(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
図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
図13は、網羅状況表示部36による網羅状況の表示イメージを示す。なお、同図の網羅状況は、図5(a)の原本プログラムに対するテストの網羅状況を示している。この例では、ロギング命令の総数が7、実行済のロギング命令数が5であるため、コード網羅率が71%と表示されている。また、実行フローメッセージの一覧表示においては、未実行のロギング命令において出力されるメッセージが、ボールド書体かつ他のメッセージよりも大きな文字サイズで強調表示されている。この結果を確認したユーザは、網羅率を向上させるために、図5(a)の原本プログラムにおける15行目の条件判定がtrueとなるように、試験データ等を調整すべきことを認識できる。
FIG. 13 shows a display image of the coverage status by the coverage
第1実施形態の試験支援装置100によれば、原本プログラムに対するペネトレーションテストを実行すべき際に、制御命令に対応づけてロギング命令を設定した試験用プログラムに対してペネトレーションテストが実行される。これにより、ペネトレーションテスト実行時の原本プログラムの実行フローをユーザが確認可能になる。ペネトレーションテストにおいて問題が検出された場合には、原本プログラムの実行フロー該当箇所を参照することで問題箇所を迅速に特定できる。また、ロギング命令では、試験用プログラムにおける制御命令の記述位置ではなく、原本プログラムにおける制御命令の記述位置が出力される。これにより、原本プログラムに存在する問題箇所を容易に特定しやすくなる。ユーザによる改修対象となるのは原本プログラムであるため、ユーザによる改修作業を一層支援できることになる。また、原本プログラムに記載されたプログラムコードそのものではなく、原本プログラムに対応する抽象構文木が改変されて試験用プログラムが生成される。これにより、原本プログラムの記述スタイルに依存することなく、制御命令を容易かつ正確に検出可能となり、ロギング命令の設定を容易かつ正確に実現できる。
According to the
また試験支援装置100によれば、複数のプログラミング言語のそれぞれについて制御命令ノードの定義を記録したテーブルを参照して、その定義に合致する制御命令ノードが検出される。原本プログラムを記述したプログラミング言語に応じた定義を参照することにより、プログラミング言語に依存しない共通のロジックにて制御命令ノードを検出でき、その制御命令ノードに対応づけてロギング命令ノードを設定できる。
Further, according to the
さらに試験支援装置100によれば、ペネトレーションテストにおける試験用プログラムの処理結果は構造化文書のデータとして出力され、ロギング命令による出力データはその構造化文書におけるコメント文として出力される。言い換えれば、構造化文書の閲覧用プログラムにおいて、通常非表示とされる態様で出力される。これにより、ロギング命令による出力データによって、試験用プログラムの処理結果の閲覧が困難になることを回避できる。例えば、試験用プログラムの処理結果がHTMLファイルのデータとして出力される場合、ロギング命令による出力データをそのまま表示させると、ウェブブラウザでの表示上問題になる場合がある。しかし、コメント文として出力されるため、ウェブブラウザでは試験用プログラムの処理結果を問題なく表示させることができる。かつ、HTMLファイルのソースデータを参照すればロギング命令によるメッセージも参照でき、実行フローを容易に特定できる。
Further, according to the
さらにまた試験支援装置100によれば、ロギング命令による出力データとして、実行フローメッセージそのものに代えてメッセージ識別データが出力される。そして、ロギング命令による出力データを権限のあるユーザが参照する際には、メッセージ識別データが実行フローメッセージに変換されて表示される。これにより、権限のないユーザからは実行フローメッセージを隠蔽することができ、原本プログラムの内部構造等の情報漏洩を防止できる。
Furthermore, according to the
さらにまた試験支援装置100によれば、ペネトレーションテストにおけるプログラムコードの実行割合を示す網羅率をユーザに提供できる。試験支援装置100では、抽象構文木を介して、複数の制御命令のそれぞれに対応づけてロギング命令が設定されるため、原本プログラムの規模や、原本プログラムの書式に依存することなく、高い精度の網羅率を容易に算出できる。
Furthermore, according to the
以上、本発明を第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
また、試験支援装置100の各機能ブロックを実現するプログラムモジュールは、IDE(Integrated Development Environment)等、他のソフトウェアプログラムに対するプラグインとして実装されてもよい。例えば、Eclipseに対するプラグインとして実装され、ユーザはこのプラグインをEclipseにアドオンすることで、試験用プログラムの生成およびペネトレーションテストを実行してもよい。これにより、ユーザはEclipseにおいてプログラムコードをコーディングした後、そのプログラムコードに対するペネトレーションテストをシームレスに実行できる。
Moreover, the program module which implement | achieves each functional block of the
上述した第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
例えば、メッセージ出力部は、処理結果の出力先が構造化文書である場合、その文書が整形式であることや、その文書が妥当性を有することに影響を与えないフィールドへメッセージ識別データを追加する。より具体的に処理結果の出力先が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
(第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
開発用PC200で総称される開発用PC200a、開発用PC200b、開発用PC200cは、ウェブAPのソースコードを作成する複数のプログラマのそれぞれにより操作されるPC端末である。ウェブAPに対するプログラマによる単体試験のために、開発用PC200のそれぞれにはウェブアプリケーションサーバソフトウェア(以下、「ウェブAPサーバ」と呼ぶ。)がインストールされている。また開発用PC200には、ウェブAPの単体試験においてローカルのウェブAPサーバへ送信されたUT用試験電文を随時取得し、試験支援装置300へ通知するキャプチャツールがインストールされている。
The
SCM(Source Code Management)装置202は、開発用PC200のそれぞれにおいて作成されたウェブAPのソースファイルについて、その変更履歴を所定のリポジトリにより一元管理する。言い換えれば、バージョン管理装置でもある。例えば、開発用PC200からのソースファイルのチェックインや、開発用PC200へのソースファイルのチェックアウトを制御する。試験サーバ204は、ウェブAPサーバがインストールされており、ウェブAPに対するペネトレーションテストの試験環境を提供する。運用サーバ206は、ウェブAPサーバがインストールされており、インターネットを介して、ウェブAPによるサービスを顧客PC208へ提供する。
An SCM (Source Code Management)
試験支援装置300は、ウェブAPに対するペネトレーションテストの実施を支援する情報処理装置である。試験支援装置300は、試験電文設定部302と、試験電文保持部304と、実行フロー可視化部306とを備える。
The
試験電文設定部302は、SCM装置202から取得したウェブAPのソースコードと、開発用PC200から取得したUT用試験電文とに基づいて、IT用試験電文を自動設定する。試験電文設定部302の詳細な構成は後述する。試験電文保持部304は、試験電文設定部302により設定されたIT用試験電文が格納される記憶領域である。実行フロー可視化部306は、試験電文保持部304に格納されたIT用試験電文を使用してウェブAPに対するペネトレーションテストを実行する。その際に、ウェブAPの実行フローを可視化するために、第1実施形態の技術によりウェブAPのソースコードを改変する。実行フロー可視化部306は、図1に記載した各種機能ブロックを含む。
The test
図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
環境情報保持部312は、ペネトレーションテストの試験環境に関する情報を保持する。この情報には、試験サーバ204のウェブAPサーバにデプロイされたウェブAPへアクセスするためのウェブAPサーバの設定値が含まれる。第2実施形態の環境情報保持部312は、試験サーバ204のIPアドレス「192.168.1.100」と、試験サーバ204におけるウェブAPサーバのポート番号「3000」と、ウェブAPにアクセスするためのディレクトリパス「/it/」を対応づけて保持する。
The environment
パラメータ保持部314は、ペネトレーションテストのためにIT用試験電文に設定すべきIT用パラメータ値を保持する。このパラメータ値は、ウェブAPの脆弱性を検出するためのデータ列であり、既知のセキュリティ脅威に対するウェブAPの動作を確認するための文字列であってもよい。例えば、ウェブAPに対してクロスサイトスクリプティングやSQLインジェクションを試行するための不正な入力データであってもよい。後者の例として、ユーザID等のログイン情報が不正であっても、そのログイン情報を正しいと判定させるように構成された文字列であってもよい。
The
ソースコード取得部322は、SCM装置202を定期的に監視し、SCM装置202に対してチェックインされたソースファイルをSCM装置202から取得する。ソースコード解析部324は、ソースコード取得部322により取得されたソースファイルに記述されたウェブAPについて、その機能(ウェブAPの関数)を呼び出すための要素(以下、「コール要素」とも呼ぶ。)をソースコードから抽出する。例えば、ソースコードの記述言語がPHPである場合、ソースコード解析部324は、PHPソースファイル名をアプリケーション名として抽出し、GETメソッドやPOSTメソッドの引数を参照するための所定文字列を検出して入力変数名を抽出する。以下具体例を示す。
The source
図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
図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
なお、キーワード「$_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
また、ソースコードの記述言語がRubyonRailsである場合、ソースコード解析部324は、コントローラ名、アクション名、入力変数名をソースコードから抽出する。例えば、「class」や「ApplicationController」等のキーワードによりコントローラ名の設定フィールドを特定してコントローラ名を取得してもよい。また「def」等のキーワードによりアクション名および入力変数名の設定フィールドを特定して、それぞれのコール要素を抽出してもよい。図17のID「003」のレコードは、RubyOnRailsのソースコードから抽出されたコール要素を示している。
If the description language of the source code is Rubyon Rails, the source
図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
試験電文解析部328は、ソースコード解析部324により抽出されたウェブAPのコール要素と、そのコール要素が設定されたUT用試験電文とを対応づける。例えば、図18(a)のUT用試験電文には図17のID「001」のコール要素が設定されているため、これらを対応づける。同様に、図18(b)のUT用試験電文と、図17のID「002」のコール要素とを対応づける。
The test
試験電文解析部328は、コール要素のアプリケーション名(またはコントローラ名+アクション名)にしたがって、UT用試験電文における環境依存フィールドとAP依存フィールドとを特定する。具体的には、UT用試験電文においてアプリケーション名の前までのデータフィールドを環境依存フィールドとして特定し、アプリケーション名以降のデータフィールドをAP依存フィールドとして特定する。
The test
例えば、図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
図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
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
以上の構成による動作を以下説明する。
図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
ウェブ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
試験支援装置300の試験電文解析部328は、IT用試験電文を作成すべき所定のトリガを検出すると(S110のY)、所定の記憶領域に格納されたUT用試験電文と、ウェブAPのコール要素とを対応づける(S112)。このトリガは、ユーザからIT用試験電文の作成指示を受け付けたことでもよく、所定の日時への到達を検出したことでもよい。試験電文解析部328は、コール要素の名称に基づき、UT用試験電文における環境依存フィールドとAP依存フィールドとを特定する(S114)。
When the test
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
試験支援装置300の実行フロー可視化部306における原本プログラム取得部52は、試験電文設定部302のソースコード取得部322と同様に、ウェブAPのソースコードを原本プログラムとして取得する。以降、第1実施形態に記載の方法により、ペネトレーションテストにおける実行フローを可視化するための試験用プログラムが設定される。試験用プログラム取得部62は、その試験用プログラムを試験サーバ204へデプロイする。試験実行部64は、試験電文保持部304に格納されたIT用試験電文を使用して、試験用プログラムに対するペネトレーションテストを実行する。例えば、IT用試験電文からペネトレーションテストのためのHTTPリクエストを設定し、そのデータを試験サーバ204のウェブAPサーバへ送信する。これにより、ウェブAPのペネトレーションテストにおける実行フローを示すメッセージを所定のログファイルへ出力させる。試験支援装置300は、ペネトレーションテストが完了したウェブAPのプログラム、典型的にはペネトレーションテストで問題がなかった(もしくはバグが修正された)プログラムを運用サーバ206へデプロイすることにより実運用を開始させる。
Similar to the source
第2実施形態の試験支援装置300によれば、試験サーバ204において実施されるべきウェブAPの結合試験(実施の形態ではペネトレーションテスト)用の試験電文を、プログラマ個別の開発用PC200におけるウェブAPの単体試験で用いられた試験電文に基づいて自動設定できる。これにより、ペネトレーションテストのための試験電文を一から作成することが不要になる。また、開発用PC200におけるウェブAPの単体試験後、そのウェブAPが運用サーバ206へデプロイされるまでが全自動化される。このように試験支援装置300によれば、アプリケーションに対する効率的な試験を実現し、その試験に要する時間や人件費等のコストを低減できる。
According to the
また一般的に、結合試験はウェブ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
また、試験支援装置300によれば、UT用試験電文に対応しないウェブAPのコール要素が存在する場合、そのコール要素を設定したIT用試験電文が追加的に作成される。単体試験で用いられたUT用試験電文はソースコードに実装されたコール要素の部分集合であり、単体試験が未実施のコール要素に対応する機能には脆弱性が潜む可能性がある。試験支援装置300によれば、単体試験が未実施であっても、ソースコードから検出された全コール要素に対してIT用試験電文が設定されるため、ペネトレーションテストの網羅性を向上させ、またウェブAPにおける脆弱性を漏れなく検出できる。
Also, according to the
以上、本発明を第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
この変形例によれば、ウェブ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
また、試験電文設定部302の試験電文解析部328は、ログファイルに出力された実行フローメッセージを参照して、UT用試験電文により呼び出されたウェブAPのコール要素を特定してもよい。例えば、実行フローメッセージの行番号により特定されるソースコードのコード行に記述されたアプリケーション名や入力変数名をコール要素として特定してもよい。試験電文解析部328は、そのコール要素を、ソースコード解析部324により抽出されたウェブAPのコール要素と照合してもよい。すなわち、ソースコード解析部324により抽出されたウェブAPのコール要素のうち、UT用試験電文により呼び出されたウェブAPのコール要素と合致するものを、そのUT用試験電文と対応づけてもよい。
Further, the test
また、実行フロー可視化部306の試験部60は、変更検出部340と試験電文選択部342とをさらに備えてもよい。図21は、変形例における試験部60の機能ブロックを示すブロック図である。変更検出部340は、SCM装置202に対して新たにチェックインされたソースコード(更新されたソースコード)に関する情報をSCM装置202から取得する。試験電文選択部342は、更新されたソースコードに対応するウェブAPの単体試験における実行フローを参照して、UT用試験電文により呼び出されたウェブAPのコール要素を試験対象のコール要素として特定する。試験電文選択部342は、試験電文保持部304に格納されたIT用試験電文のうち、試験対象のコール要素に対応する試験電文を、ソースコードの変更に伴うペネトレーションテストで使用すべきIT用試験電文として選択する。試験対象のコール要素に対応する試験電文は、言い換えれば試験対象のコール要素に基づき設定された試験電文であり、さらに言い換えれば試験対象のコール要素が設定された試験電文である。
Further, the
試験実行部64は、試験電文選択部342により選択されたIT用試験電文を用いてウェブAPの更新に伴うペネトレーションテストを実行する。この変形例によれば、ソースコードの変更に伴うペネトレーションテストにおいて使用すべきIT用試験電文が自動で選択され、効率的な試験を実現できる。また、ウェブAPの実行フローが特定されることにより、ソースコードの一部の変更であっても、その変更箇所から呼び出される一連のコール要素が特定される。すなわちソースコードの変更が影響を与えうるコール要素が特定されて、それらのコール要素に対応するIT用試験電文を用いたペネトレーションテストが実施される。これにより、ソースコードの変更に伴い実施すべきリグレッションテストを漏れなく実行できる。また、ソースコード変更の影響を受けないコール要素、言い換えれば、再度のペネトレーションテストが不要なコール要素に関するIT用試験電文は選択されないため、ソースコードの変更に伴う試験コストを低減できる。
The
上記第2実施形態では、試験電文設定部302のUT用試験電文取得部326は、UT用試験電文を開発用PC200から直接取得することとした。変形例では、開発用PC200における単体試験では、所定のプロキシサーバを経由してUT用試験電文をウェブAPへ送信することとしてもよい。この場合、UT用試験電文取得部326はその所定のプロキシサーバからUT用試験電文を取得してもよい。
In the second embodiment, the UT test
上記第2実施形態では特に言及していないが、開発用PC200とSCM装置202と試験サーバ204と運用サーバ206はユーザ企業側に設置され、試験支援装置300はサービスプロバイダ側に設置されてもよい。この場合、試験支援装置300は、インターネット等の通信網を介してソースコードおよびUT用試験電文を収集してIT用試験電文を設定し、通信網を介してIT用試験電文を用いたペネトレーションテストを実行してもよい。すなわち、ウェブAPに対するIT用試験電文の自動作成サービスや、ペネトレーションテスト自動化のサービスを、ASP・SaaSの形態で提供してもよい。
Although not specifically mentioned in the second embodiment, the
上述した実施の形態および変形例の任意の組み合わせもまた本発明の実施の形態として有用である。組み合わせによって生じる新たな実施の形態は、組み合わされる実施の形態および変形例それぞれの効果をあわせもつ。 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:
前記構文木において、前記アプリケーションの実行フローを制御する制御命令のノードに対して、当該制御命令により実行フローが制御されたことを示すメッセージを出力するロギング命令のノードを対応づけて設定する構文木改変部と、
前記第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.
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)
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 |
-
2010
- 2010-05-14 JP JP2010112475A patent/JP2010267266A/en active Pending
Cited By (12)
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 |