JP2004362000A - ウェブアプリケーション開発支援装置、コンポーネント呼び出し監視装置、データ処理方法及びプログラム - Google Patents
ウェブアプリケーション開発支援装置、コンポーネント呼び出し監視装置、データ処理方法及びプログラム Download PDFInfo
- Publication number
- JP2004362000A JP2004362000A JP2003156042A JP2003156042A JP2004362000A JP 2004362000 A JP2004362000 A JP 2004362000A JP 2003156042 A JP2003156042 A JP 2003156042A JP 2003156042 A JP2003156042 A JP 2003156042A JP 2004362000 A JP2004362000 A JP 2004362000A
- Authority
- JP
- Japan
- Prior art keywords
- component call
- component
- information
- call
- monitor
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/972—Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
【解決手段】動的にコンテンツが生成されるウェブページにおけるコンポーネント呼び出しの実行を監視して、このコンポーネント呼び出しに関する情報を抽出するモニタ20と、このモニタ20により抽出されたコンポーネント呼び出しに関する情報に基づいて、このコンポーネント呼び出しとその対象であるコンポーネントとの整合性を検証する整合性検証部30とを備える。
【選択図】 図4
Description
【発明の属する技術分野】
本発明は、ウェブアプリケーション等に用いられるJSPのコンポーネント呼び出しとコンポーネントとの整合性を検証する方法及びシステムに関する。
【0002】
【従来の技術】
インターネット等のネットワークを介してサービスを提供するウェブアプリケーションで用いられる技術に、ウェブサーバにおいてスクリプト言語(サーバサイドスクリプト言語)を用いて動的にウェブページを生成し、クライアントに送信する技術がある。JSP(JavaServer Pages:米国サン・マイクロシステムズ社の商標)は、この種のサーバサイドスクリプト言語のひとつであり、Java(米国サン・マイクロシステムズ社の商標)言語を利用してこの機能を実現する(例えば、特許文献1、非特許文献1参照)。具体的には、JSPでは、HTML(HyperText Markup Language)ファイルの中にスクリプト(Javaプログラム)で処理を記述しておき、クライアントの要求に応じてスクリプトを実行し、処理結果のみをクライアントに送信する。
【0003】
したがって、JSPによる動的なコンテンツを含むウェブページ(以下、JSPページ)のファイルには、当該動的コンテンツを表現する言語に関して、JSPによる記述部分やHTMLによる記述部分など、多くの言語が同時に存在している。HTMLの記述は、ウェブページをブラウザに表示した際のレイアウトや制御を実現する。一方、JSPの記述は、所定の処理を記述したスクリプトであり、実行時にサーブレットとして動作する。そして、当該スクリプトの設計に沿ってアクセス可能な他のコンポーネントに対して必要な操作を行い、この操作の結果をレスポンスとしてブラウザに送信する。
【0004】
ここで、コンポーネントとは、オブジェクトを意味しており、JSPに関連するコンポーネントとは、Javaビーンやメッセージリソース、JSPページが依存する他のJSPページやウェブページなどを指す。
図25は、JSPページに関連する主要なコンポーネント群を示す図である。
【0005】
【特許文献1】
特開2002?366514号公報
【非特許文献1】
“JavaServer PagesTM DYNAMICALLY GENERATED WEB CONTENT”、[online]、[平成15年5月21日検索]、インターネット<URL: HYPERLINK ”http://www.cs.hut.fi/ ̄ctl/3dm/” http://java.sun.com/j2ee/ja/jsp/>
【0006】
【発明が解決しようとする課題】
上記のように、ウェブアプリケーション等に用いられるJSPは、実行時、所定のコンポーネントに対してアクセスして必要な操作を行う。しかし、実際のウェブアプリケーション開発における結合テストや稼動テストでは、JSPの記述内容に関する仕様が開発前に予め定められていないために、JSPページのコンポーネント呼び出し部分と他の開発者によって開発されたコンポーネントとの間で不整合が発生する場合が多い。
そこで従来、ウェブアプリケーション開発時には、開発者の手作業によってJSPページの記述の整合性を確認したり、実際にアプリケーションサーバー上での結合テストを行って不整合を1つ1つ検出したりすることが行われている。
【0007】
しかし、ウェブアプリケーション内に膨大な数のコンポーネント呼び出し記述が存在する場合、JSPページのコンポーネント呼び出しとコンポーネントとの間の不整合を完全に検出することは容易ではない。
かかる不整合を完全に除去できないと、ウェブアプリケーション稼動後にも、当該ウェブアプリケーション内に潜在していた不整合のために、システムに障害が発生することも起こりうる。そして、障害が発生すれば、開発全体では余分なコストが発生することになる。
【0008】
また、Javaスクリプトレットのプログラムロジックや、JSPタグライブラリのように利用者が自由に作成したタグ記述表現を許していることが、JSPページとコンポーネント間の整合性を解析し自動的に検証することを困難にしていた。
【0009】
そこで本発明は、上記の問題に鑑み、JSPページとその関連するコンポーネントとの間の整合・不整合を解析し、自動的に検証する方法およびツールを提供することを目的とする。
また本発明は、上記の目的に加えて、JSPページとその関連するコンポーネントとの間の不整合を自動的に検証することにより、JSPページの開発作業を支援し、JSPページの品質向上および開発コストの削減に寄与することを目的とする。
【0010】
【課題を解決するための手段】
上記の目的を達成する本発明は、次のように構成されたウェブアプリケーション開発支援装置として実現される。このウェブアプリケーション開発支援装置は、動的にコンテンツが生成されるウェブページにおけるコンポーネント呼び出しの実行を監視し、このコンポーネント呼び出しに関する情報を抽出するモニタと、このモニタにより抽出されたコンポーネント呼び出しに関する情報に基づいて、このコンポーネント呼び出しとその対象であるコンポーネントとの整合性を検証する整合性検証部とを備えることを特徴とする。
【0011】
ここで、さらに好ましくは、このモニタは、所定のコンポーネント呼び出しが実際に実行されるかどうかが実行時まで決まらない場合に、コンポーネント呼び出しの実行の有無に関わらずに、コンポーネント呼び出しに関する情報を抽出する。また、整合性検証部は、ウェブページごとに予め設定されたコンポーネント呼び出しに関する情報をまとめた仕様情報とモニタにて抽出された情報とを照合することにより、コンポーネント呼び出しとコンポーネントとの整合性を検証する。
【0012】
さらに、このウェブアプリケーション開発支援装置は、整合性検証部による検証結果に基づいて仕様情報を更新する仕様更新部や、コンポーネント呼び出しの記述に用いられるライブラリに関する情報を解析してコンポーネント呼び出しに対応するモニタを生成するモニタ生成部を、さらに備える構成とすることができる。
【0013】
また本発明は、次のように構成されたコンポーネント呼び出し監視装置としても実現することができる。すなわち、このコンポーネント呼び出し監視装置は、動的にコンテンツが生成されるウェブページに対するHTTPリクエストを発行するリクエスト制御部と、このウェブページにおけるコンテンツを生成するためのコンポーネント呼び出しの実行を監視し、このコンポーネント呼び出しに関する情報を抽出するモニタとを備えることを特徴とする。そしてさらに、このコンポーネント呼び出し監視装置は、コンポーネント呼び出しの記述に用いられるライブラリに関する情報を解析してコンポーネント呼び出しに対応するモニタを生成するモニタ生成部をさらに備える構成とすることができる。
【0014】
ここで、さらに好ましくは、モニタ生成部は、ライブラリに関する情報の解析結果に基づき、所定の記憶手段に格納されているライブラリの定義ファイルを、コンポーネント呼び出しの実行に際して当該コンポーネント呼び出しに関する情報を抽出する機能を含んだライブラリ定義ファイルに置き換えることにより、モニタを自装置に実装させる。
【0015】
また、上記の目的を達成する他の本発明は、コンピュータを用いた次のようなデータ処理方法として実現される。このデータ処理方法は、動的にコンテンツが生成されるウェブページにおける当該コンテンツを生成するためのコンポーネント呼び出しに関して、このコンポーネント呼び出しの記述に用いられるライブラリに関する情報を解析する第1のステップと、第1のステップによる解析結果に基づき、所定の記憶手段に格納されているライブラリの定義ファイルを、コンポーネント呼び出しの実行に際して当該コンポーネント呼び出しに関する情報を抽出する機能を含んだライブラリ定義ファイルに置き換える第2のステップと、第2のステップにより置き換えられたライブラリ定義ファイルを用いてコンポーネント呼び出しを実行し、実行されたコンポーネント呼び出しに関する情報を抽出する第3のステップとを含むことを特徴とする。
【0016】
また、このデータ処理方法は、ウェブページごとに予め設定されて所定の記憶手段に格納されたコンポーネント呼び出しに関する情報をまとめた仕様情報と、第3のステップで抽出された情報とを照合することにより、コンポーネント呼び出しとその対象であるコンポーネントとの整合性を検証する第4のステップを含むことができる。さらに、第4のステップによる検証結果に基づいて、所定の記憶手段に格納されている仕様情報を更新する第5のステップを含むことも可能である。
【0017】
さらにまた、本発明は、コンピュータを制御して上述したウェブアプリケーション開発支援装置やコンポーネント呼び出し監視装置として機能させるプログラム、あるいはコンピュータに上記データ処理方法の各ステップに対応する処理を実行させるプログラムとしても実現される。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより、提供することができる。
【0018】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいて、この発明を詳細に説明する。
本発明は、開発されたJSPページの検証方法として、検証対象とするJSPページをテスト実行させることによって正しく開発されているかどうかを動的に検証する方法を用いる。JSP記述表現に関しては、JSPタグライブラリ記述による表現を検証の対象とする。JSPタグライブラリは、JSPページの記述にはタグベースの記述を行う。
【0019】
本実施の形態では、開発対象のJSPページに関して、検証のための仕様にあたるコンポーネント呼び出し情報を定義する。
図1は、本実施の形態で定義されるコンポーネント呼び出し情報の構成を示す図である。
図1(A)に示すように、コンポーネント呼び出し情報は、呼び出す対象であるコンポーネントに関する、コンポーネント名、コンポーネント種別、コンポーネントの属性、スコープの各情報からなる。コンポーネント名は、JSPタグ記述の属性を用いてコンポーネント呼び出しを行う際の名前である。コンポーネント種別は、呼び出すコンポーネントの種類であり、JSPビーン、メッセージリソース、他のJSPページなどである。コンポーネントの属性は、コンポーネントが入れ子の時など、コンポーネント呼び出しに属性が必要な時に用いられる情報である。スコープは、セッションスコープや、リクエストスコープなどを指定するときに用いる情報である。
【0020】
本実施の形態では、JSPページにおけるJSPタグ記述に対して、図1(A)に示したようなコンポーネント呼び出し情報テーブルを生成して当該コンポーネント呼び出し情報を管理する。例えば、
<bean:message key=”title.welcome”/>
というJSPタグ記述に対しては、図1(B)のようなコンポーネント呼び出し情報テーブルが生成される。また、
<bean:write name=”user” property=”username” scope=”session” filter=”true”/>
というJSPタグ記述に対しては、図1(C)のようなコンポーネント呼び出し情報テーブルが生成される。
【0021】
ところで、1つのJSPページにはJSPタグ記述が複数存在し得る。したがって、上記のコンポーネント呼び出し情報は、JSPページ単位でまとめて管理される。JSPページごとのコンポーネント呼び出し情報テーブルの集合をJSPページ仕様記述と呼ぶ。
図2は、JSP仕様記述の例を示す図である。
図示のように、JSPページの各コンポーネント呼び出し情報に対しては、当該JSPページでの記述が必須かどうかを示す「必然性」の情報(必須であればtrue、必須でなければfalse)を持つ。
【0022】
本実施の形態は、上記のように定義されたコンポーネント呼び出し情報を用いて、JSPページの記述と呼び出し先のコンポーネントとの整合性を検証する。上述したJSP仕様記述は、本実施の形態による検証の実行前に、予め作成しておく。なお、コンポーネント呼び出し情報およびJSP仕様記述は、JSPページとその関連するコンポーネントとの間の整合性を検証するのに有効な情報を一定の様式で含んでいれば良く、必ずしも図1、2に示した構成に限定するものではない。
【0023】
図3は、本実施の形態によるウェブアプリケーション開発支援装置を実現するコンピュータ装置のハードウェア構成の例を模式的に示した図である。
図3に示すコンピュータ装置は、演算手段であるCPU(Central Processing Unit:中央処理装置)101と、M/B(マザーボード)チップセット102及びCPUバスを介してCPU101に接続されたメインメモリ103と、同じくM/Bチップセット102及びAGP(Accelerated Graphics Port)を介してCPU101に接続されたビデオカード104と、PCI(Peripheral Component Interconnect)バスを介してM/Bチップセット102に接続されたハードディスク105、ネットワークインターフェイス106と、さらにこのPCIバスからブリッジ回路107及びISA(Industry Standard Architecture)バスなどの低速なバスを介してM/Bチップセット102に接続されたフロッピーディスクドライブ108及びキーボード/マウス109とを備える。
なお、図3は本実施の形態を実現するコンピュータ装置のハードウェア構成を例示するに過ぎず、本実施の形態を適用可能であれば、他の種々の構成を取ることができる。例えば、ビデオカード104を設ける代わりに、ビデオメモリのみを搭載し、CPU101にてイメージデータを処理する構成としても良いし、外部記憶装置として、ATA(AT Attachment)やSCSI(Small Computer System Interface)などのインターフェイスを介してCD−R(Compact Disc Recordable)やDVD−RAM(Digital Versatile Disc Random Access Memory)のドライブを設けても良い。
【0024】
図4は、本実施の形態によるウェブアプリケーション開発支援装置の機能構成を示す図である。
図4を参照すると、本実施の形態のウェブアプリケーション開発支援装置は、HTTP(HyperText Transfer Protocol)リクエストを行ってJSPページをテスト実行させるためのリクエスト制御部10と、実行されたJSPページによるコンポーネントの呼び出しを監視するモニタ20と、モニタ20による監視結果に基づいてJSPページの記述と呼び出し先のコンポーネントとの整合性を検証する整合性検証部30と、検証対象であるJSPページのJSP仕様記述を格納したJSP仕様記述格納部40と、モニタ20を生成するモニタ生成部50とを備える。
【0025】
図4に示すリクエスト制御部10、モニタ20、整合性検証部30及びモニタ生成部50は、例えば図3のプログラム制御されたCPU101にて実現されるソフトウェアブロックである。CPU101を制御してこれらの機能を実現するプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供することができる。また、JSP仕様記述格納部40は、例えば図3のメインメモリ103やハードディスク105にて実現される。本実施の形態では、検証対象であるJSPページをテスト実行するためのJSP単体テスト用ウェブアプリケーションを用意し、リクエスト制御部10からのHTTPリクエストに応じてJSPページを実行する。そして図4に示すように、上記構成要素のうち、モニタ20及び整合性検証部30は、検証対象であるJSPページをテスト実行するためのJSP単体テスト用ウェブアプリケーションの機能として実現される。
【0026】
本実施の形態では、JSPタグライブラリ記述による表現を検証対象としている。JSPタグライブラリは、ライブラリとして公開されているものも存在するが、利用者によって自由に開発することも可能である。そのため、全てのJSPタグライブラリへの呼び出しを抽出するためには、未対応のJSPタグライブラリに対してコンポーネント呼び出しを監視することができるモニタ20を生成することが必要である。本実施の形態では、モニタ生成部50を用意して、JSPの検証に先立って、必要なモニタ20を自動生成する。
【0027】
図5は、モニタ生成部50の機能を説明する図、図6、7は、モニタ生成部50の動作を説明するフローチャートである。
図5を参照すると、モニタ生成部50は、所定の記憶手段(例えば図3のメインメモリ103やハードディスク105)からタグライブラリ定義ファイル及びタグハンドラクラスのソースコードというJSPタグライブラリ関連リソースを入力し、呼び出し対象であるコンポーネント及び入力パラメータの解析を行う。そして、モニタ20を実装したタグライブラリ定義ファイル及び関連するコンポーネントを操作する入力パラメータの抽出機能を持ったタグハンドラクラスのソースコードというモニタ20に関連したリソースを出力する。すなわち、JSPページにおけるコンポーネント呼び出しの記述に用いられているJSPタグライブラリ関連リソースを、コンポーネント呼び出しの実行に際して当該コンポーネント呼び出しに関する情報を抽出するモニタ20の機能を含んだJSPタグライブラリ関連リソースに置き換える。
【0028】
図6を参照して、コンポーネント呼び出しの種別判断と関連する属性とを求めるための、モニタ生成部50によるタグライブラリの解析処理を説明する。
図6に示すように、モニタ生成部50は、まずモニタ20による監視を行おうとするタグライブラリを含めたウェブアプリケーションパスを指定する(ステップ601)。そして、指定されたウェブアプリケーションパスからWEB−INF/web.xmlファイルを入力し(ステップ602)、全てのタグライブラリ定義ファイルのパスを読み込んでリストを作成する(ステップ603)。図8(A)に、作成されるパスのリストの例を示す。
【0029】
次に、モニタ生成部50は、所定のタグライブラリ定義ファイルを入力し(ステップ604)、入力したタグライブラリ定義ファイル中の所定のタグハンドラ定義を読み込む(ステップ605)。読み取ったタグハンドラ定義の例を図8(B)に示す。
次に、モニタ生成部50は、当該タグハンドラクラスのソースファイルを、ステップ604で入力したタグライブラリ定義ファイルから読み込む(ステップ606)。そして、コンポーネント呼び出しの種別判断と関連する属性の解析処理を行う(ステップ607)。この処理については図7を参照して後述する。
【0030】
ステップ607の解析処理の後、モニタ生成部50は、当該処理の結果に基づいて、モニタ機能を実装したタグハンドラクラスのソースファイルを生成する(ステップ608)。以上のステップ605〜608の処理は、ステップ604で入力されたタグライブラリ定義ファイルに含まれる全てのタグハンドラ定義に対して実行される(ループ2)。
【0031】
次にモニタ生成部50は、全てのタグハンドラ定義に対して上記の処理がなされたタグライブラリ定義ファイルに基づき、モニタ機能タグライブラリを呼び出すタグライブラリ定義ファイルを生成する(ステップ609)。以上のステップ604〜609の処理は、ステップ603で作成されたリストに含まれる全てのタグライブラリ定義ファイルに対して実行される(ループ1)。
【0032】
次に図7を参照して、ステップ607におけるJSPのタグハンドラクラスのソースコード解析について説明する。この解析処理では、タグライブラリ定義ファイルから取得した属性に基づき、どの属性がコンポーネント呼び出しに関連しているかを解析する。
モニタ生成部50は、まず、解析対象のタグハンドラにおける全ての属性を取得する(ステップ701)。図8(B)に示した例では、属性{filter, ignore, name, property, scope}が取得される。
【0033】
次に、モニタ生成部50は、ステップ701で取得した全ての属性に対するローカル変数名を取得する(ステップ702)。このローカル変数名は、通常は属性名と同じである。ローカル変数名と属性名とが一致していない場合は、getterメソッドから推測することができる。
次にモニタ生成部50は、取得したローカル変数名に基づいて、public int doStartTag()メソッドを検索し(ステップ703)、さらにpublic int doEndTag()メソッドを検索する(ステップ704)。
【0034】
JSPでは通常、PageContextオブジェクトのメソッドとして、getAttribute(name、pageContext.APPLICATION_SCOPE)メソッド、pageContext.findAttribute(name)メソッドを呼び出すことによって、各種スコープに存在するコンポーネント操作が行われる。そこで、次にモニタ生成部50は、これらのメソッド呼び出しを探索する。そして、これらのメソッド呼び出しが存在しない場合、当該タグハンドラクラスは、モニタ機能を実装したタグハンドラクラスの生成対象とせず、解析処理を終了する(ステップ705、709)。
【0035】
一方、getAttribute(name、pageContext.APPLICATION_SCOPE)メソッド、pageContext.findAttribute(name)メソッドのメソッド呼び出しがタグハンドラに存在する場合は、次にモニタ生成部50は、データフロー解析におけるUSE―DEFチェーンアルゴリズムを用い、属性を表す変数の定義参照関係により、メソッドの引数であるname変数部分にはタグハンドラのどの属性に当たる変数が引数に用いられているかを解析する(ステップ705、706)。所定の属性が導き出せれば、例えばJSPタグ記述の当該属性の値を用いて、コンポーネントにアクセスする可能性が発見できる。
【0036】
次に、モニタ生成部50は、コンポーネント種別を判断する(ステップ707)。コンポーネント種別の判断は、上記のメソッドの返り値であるオブジェクトが、どの型を持っているかで判断される。返り値のオブジェクトの型とコンポーネント種別との対応は、コンポーネント種別判断テーブルで表される。
図9は、コンポーネント種別判断テーブルの構成例を示す図である。
図9に示すコンポーネント種別判断テーブルでは、getAttribute()/findAttribute()の返り値の型と、コンポーネント種別、属性変数の場所、及びTldファイルで定義された属性名とが対応付けられている。図示の例では、例えば、メソッドの返り値の型がメッセージリソースの型であった場合、コンポーネントは、メッセージコンポーネントと判断される。具体的な例を挙げると、次の記述の場合、コンポーネント種別はJSPビーンと判断される。
Object object = pageContext.findAttribute(name);
また、次の記述の場合、コンポーネント種別はメッセージリソースと判断される。
MessageResources resource =
(MessageResources)pageContext.getAttribute(bundle, pageContext.APPLICATION_SCOPE);
String messageValue = resource.getMessage(key);
なお、コンポーネント種別判断テーブルにて示される、オブジェクトの型とコンポーネント種別との対応は、対象とするJSPタグライブラリによって決まる。そこで、この対応関係は、解析処理の実行に先立って与えられる必要がある。
【0037】
また、タグハンドラ中に、コンポーネント呼び出しが実際に行われるかが解析不能な分岐ロジックが存在している場合がある。この場合は、当該タグハンドラを実行してみなければコンポーネントが実際に呼ばれるかどうかは判断できない。そこで、コンポーネント呼び出し部分の直後にコンポーネント呼び出し情報を抽出させるロジックを追加しておく。これにより、タグハンドラの実行時に、呼ばれたコンポーネント呼び出し情報を伝えることができる。
図10は、タグハンドラにおける分岐ロジックのコードにコンポーネント呼び出し情報のロジックを追加した例を示す図である。
【0038】
以上の解析の後、モニタ生成部50は、この解析で得られた属性名と、コンポーネント種別に基づいて、モニタ機能を実装したタグハンドラを生成する(ステップ708)。そして、上述したように、この解析結果であるタグハンドラからクラスのソースファイルが生成され、モニタ機能タグライブラリを呼び出すタグライブラリ定義ファイルが生成される(図6、ステップ608、609参照)。図11は、モニタ機能を実装したタグハンドラクラスのソースコードの例を示す図、図12は、モニタ機能タグライブラリを呼び出すタグライブラリ定義ファイルの例を示す図である。
【0039】
図13は、通常のタグハンドラ呼び出しとモニタ20の呼び出しとの違いをタグライブラリ定義ファイルの関係で説明する図である。
図13の例において、JSPページ中の宣言しているタグライブラリを呼び出すURLの
<bean:write name=”username” …/>
という記述から、web.xml(ウェブアプリケーション)中で記述しているURLとタグライブラリ定義ファイルとのマッピングを行うと、通常の呼び出しの場合は、タグリブの記述から
/WEB−INF/struts−bean.tld
によって「struts−bean.tld」が呼ばれ、タグライブラリ定義ファイル中で記述されているタグハンドラ定義から、「WriteTag」が呼び出される。
これに対し、モニタ機能が実装された後では、web.xml中で記述しているURLとタグライブラリ定義ファイルとのマッピングを行うと、タグリブの記述から
/WEB−INF/monitor.tld
によって「monitor.tld」が呼ばれ、タグライブラリ定義ファイル中で記述されているタグハンドラ定義から、「MonitorWriteTag」が呼び出されることとなる。
以上のように、JSPページの記述は一切変更することなく、ウェブアプリケーションの動作環境(タグライブラリ定義ファイル及びweb.xml)を変更することによって、モニタ20の機能が呼ばれることとなる。
【0040】
ところで、モニタ生成部50は、モニタ20を生成するために、タグハンドラから受け取った属性とコンポーネント呼び出しとを関連付けるが、上述した通常の解析ではコンポーネント呼び出し自体が確実に実行されるかどうかを保証できない場合がある。そのようなケースを以下にまとめる。
【0041】
1.コンポーネント呼び出し種別の出現が、分岐ロジックによって決定されるとき。
タグハンドラクラスは、Javaのロジックとして多様な条件で分岐ロジックを記述可能である。例えば、日付や時間によってコンポーネントを呼び出したり、ビジネスロジックを伴うオブジェクトの振る舞いによってコンポーネントを呼び出したりすることができる。また、Strutsというフレームワークのタグライブラリには、セッションスコープにコンポーネントが存在していなければ、メッセージリソースとしてコンポーネントを取り出すというロジックがある。このロジックでは、セッションスコープのコンポーネントを取る場合と、メッセージリソースからコンポーネントを取る場合とでは、取得されるコンポーネント種別が変わる。
このようなロジックの判断には、分岐ロジックを実施できるリソースがテスト環境によって個々に用意されているテストアプリケーション上で、動作させる必要がある。
【0042】
2.PageContextオブジェクトに対する操作が検出できなかったタグハンドラが使用されるとき。
タグハンドラにおいて、属性値がPageContextオブジェクトの操作に使用されていない場合や、PageContextオブジェクトの記述が解析できない場合がある。そのようなタグハンドラは、コンポーネント呼び出しを行わない場合が多いが、ネストしているタグハンドラのコンポーネント呼び出しに影響を受ける場合がある。例えば、Strutsのタグライブラリでは、logicタグハンドラがあり、logicを用いるJSPタグ記述の属性の値によって、ネストしているタグハンドラの呼び出しを行わないことがある。
【0043】
上記2つのケースでは、JSP仕様記述のコンポーネント呼び出し情報に対する「必然性」がtrueの場合であっても、当該JSPページの実行の際に必ず呼び出されるかは静的な解析で保障できるものではない。したがって、当該JSPページを動的に実行させてコンポーネント呼び出しを行わせる必要がある。
【0044】
以上説明したモニタ生成部50の機能により、図4に示したように、JSP単体テスト用ウェブアプリケーションに、必要なモニタ20が実装される。上述したように、モニタ生成部50によるモニタ20の生成は、JSPページの検証に先立って行われる。JSPページの検証自体は、リクエスト制御部10、生成されたモニタ20及び整合性検証部30にて実行される。また、JSPページを検証するには、予め検証対象であるJSPページに関して図2に示したJSP仕様記述を作成し、JSP仕様記述格納部40に格納しておく。
【0045】
リクエスト制御部10は、JSPページを実行するためのURL(Uniform Resource Locators)リストを取得し、componentInvoke=trueというパラメータを付加して、JSP単体テスト用ウェブアプリケーションに送信する。URLリストは、テストしようとするJSPページ群のURLを集めたものであり、JSPページ(ウェブアプリケーション)の開発者によって予め用意される。また、JSPページの集合を編集可能なツールを用いて検証対象のJSPページ群を選択させてURLリストを自動生成することもできる。
【0046】
図14は、リクエスト制御部10の動作を説明するフローチャートである。
図14を参照すると、リクエスト制御部10は、上記のようにして用意されたURLリストを読み込んで(ステップ1401)、当該URLリスト中の所定のURLに対してHTTPリクエストを送信する(ステップ1402)。このとき、このHTTPリクエストには、componentInvoke=trueというパラメータが付加される。このHTTPリクエストに対する応答であるHTTPレスポンスを受信すると、リクエスト制御部10は、当該HTTPレスポンスにおいてJSPコンパイルエラーか否かを調べる(ステップ1403、1404)。JSPコンパイルエラーが発生しなかった場合は、当該URLに対する処理が終了する。
【0047】
一方、このURLリストを用いたHTTPリクエストの結果、JSPコンパイルエラーが発生し、HTTPレスポンスとしてエラー結果が返ってきた場合、リクエスト制御部10は、componentInvoke=falseというパラメータを付加して再度HTTPリクエストを送信する(ステップ1405)。JSPコンパイルエラーは、JSPタグ記述とコンポーネントとの関連に不整合が発生している可能性が高い。そこで、再度の送信によって、コンポーネント呼び出しは実行せず呼び出し部分にダミーの結果を与えるダミー実行を、JSP単体テスト用アプリケーションに行わせ、HTTPレスポンスを受信する(ステップ1406)。ダミー実行については後述する。
以上のステップ1402〜1406は、ステップ1401で読み込まれたURLリストの全てのURLに対して実行される(ループ)。
【0048】
JSP単体テスト用ウェブアプリケーションには、開発者が開発したJSPページとテストで実行可能なコンポーネントが用意されており、タグライブラリ定義ファイルとプログラムロジックによって、リクエスト制御部10から発行されたHTTPリクエストに対応したJSPページをHTTPサーブレット経由で呼び出すことができる。また、モニタ生成部50によって生成されたモニタ20と、JSPページとコンポーネントとの整合性の検証を行う整合性検証部30とが実装されている。また、図13に示したように、JSPページのJSPタグ記述において、JSPタグハンドラ呼び出しがモニタ20への呼び出しに置き換えられている。
【0049】
モニタ20は、JSPページのテスト実行に伴って呼び出され、当該JSPによるコンポーネント呼び出しを監視する。
図15は、モニタ20の動作を説明するフローチャートである。
図15を参照すると、モニタ20は、まずHTTPリクエストの対象であるJSPページ中のコンポーネント呼び出し情報を抽出する(ステップ1501)。そして、整合性検証部30を呼び出し、ステップ1501で抽出されたコンポーネント呼び出し情報を、HTTPリクエスト名から取得できるJSPページ名と共に、整合性検証部30に渡す(ステップ1502)。
【0050】
次に、モニタ20は、リクエスト制御部10からのHTTPリクエストにおけるパラメータcomponentInvokeを参照し(ステップ1503)、その値がtrueの時は、本来のJSPタグ記述におけるJSPタグハンドラ(モニタ20への呼び出しに置き換えられる前のJSPタグハンドラ)に対して、実際にコンポーネント呼び出しを実行させる(ステップ1504)。そして、当該コンポーネント呼び出しにおけるコンポーネント呼び出し情報を整合性検証部30へ送る。また、コンポーネント呼び出しの結果を、後述のように、JSPページへ返す。
【0051】
一方、パラメータcomponentInvokeの値がfalseの時は、モニタ20は、コンポーネント呼び出しを行わずにダミー実行を行い、ダミーの結果をコンポーネント呼び出しの結果としてJSPページへ返す(ステップ1505)。この場合、JSPタグ記述部分における実際の処理結果としては、“dummy”という文字列が返される。また、実際にタグハンドラを実行しなければ判断できない分岐処理がコンポーネント呼び出しに関わっている場合は、モニタ生成部50にてコンポーネント呼び出し部分の直後に追加されたロジックにより、全てのコンポーネントに関して呼び出し情報のみが抽出され、整合性検証部30へ送られる。
【0052】
図16は、コンポーネント呼び出しに対するモニタ20の動作を説明する図である。この図の例では、コンポーネントA、Bが呼び出されるものとする。
図16において、JSPページの実行に伴ってモニタ20が実装されたクラス(以下、モニタ実装クラス)が呼び出されると、componentInvokeの値がtrueの場合は、モニタ実装クラスからタグハンドラクラスへ親クラスのdoStart()メソッド呼び出しが返される。そして、タグハンドラクラスの実行時におけるメソッド呼び出しの動作により、対応するコンポーネントA、Bが呼び出される。一方、componentInvokeの値がfalseの場合は、コンポーネントA、Bの呼び出しは行われず、コンポーネント呼び出し情報のみが抽出され、モニタ実装クラスからタグハンドラクラスへはメソッド呼び出しの代わりに“dummy”という文字列が返される。
【0053】
整合性検証部30は、上述したモニタ20によって得られたコンポーネント呼び出し情報に基づいて、当該コンポーネント呼び出しとコンポーネントとの整合性を検証する。
図17は、整合性検証部30の構成を示す図である。
図17を参照すると、整合性検証部30は、コンポーネント呼び出し情報を検証する呼び出し情報検証部31と、JSPページにおけるコンポーネント呼び出しの検証結果を所定の記述形式で作成する結果記述作成部32と、結果記述作成部32にて作成された検証結果のログを出力する検証結果ログ出力部33と、必要に応じてJSPページ仕様記述を更新する仕様更新部34とを備える。
【0054】
呼び出し情報検証部31は、モニタ20により抽出されたコンポーネント呼び出し情報を入力し、JSP仕様記述格納部40に格納されている当該JSPページの仕様記述を参照し比較して、整合性を検証する。
図18、19は、呼び出し情報検証部31による処理の流れを説明するフローチャートである。
図18に示すように、呼び出し情報検証部31は、テスト実行されたJSPページからモニタ20により抽出されたJSPページ名とコンポーネント呼び出し情報とを取得すると(ステップ1801)、まず、JSP仕様記述格納部40を調べ、取得したJSP名に対応するJSP仕様記述が存在するかどうかを調べる(ステップ1802)。対応するJSP仕様記述が存在しない場合は、当該JSPページにおけるコンポーネント呼び出しとその呼び出し対象であるコンポーネントとが不整合であるため、呼び出し情報検証部31は、不整合という検証結果を結果記述作成部32に通知する(ステップ1803)。
【0055】
取得したJSP名に対応するJSP仕様記述がJSP仕様記述格納部40に格納されていた場合、呼び出し情報検証部31は、次に、JSP仕様記述格納部40から、当該JSP仕様記述に登録されているコンポーネント呼び出し情報のリスト(コンポーネント名)を取得する(図19、ステップ1804)。そして、モニタ20により抽出されたコンポーネント呼び出し情報のコンポーネント名が当該リスト中に存在するかどうかを調べる(ステップ1805)。同一のコンポーネント名が存在しない場合、当該JSPページにおけるコンポーネント呼び出しとその呼び出し対象であるコンポーネントとが不整合であるため、呼び出し情報検証部31は、不整合という検証結果を結果記述作成部32に通知する(ステップ1803)。
【0056】
JSP仕様記述のコンポーネント呼び出し情報に、モニタ20により抽出されたコンポーネント呼び出し情報と同一のコンポーネント名のものが存在した場合、次に呼び出し情報検証部31は、JSP仕様記述格納部40から、当該JSP仕様記述における当該コンポーネント呼び出し情報を取得する(ステップ1806)。そして、取得したコンポーネント呼び出し情報とモニタ20により抽出されたコンポーネント呼び出し情報とに関して、コンポーネント種別が同一かどうか(ステップ1807)、コンポーネントの属性が記述されている場合はその属性値が同一かどうか(ステップ1808、1809)、スコープの情報が記述されている場合はそのスコープが同一かどうか(ステップ1810、1811)を、それぞれ調べる。コンポーネント種別、属性値、スコープのいずれかが異なっている場合、当該JSPページにおけるコンポーネント呼び出しとその呼び出し対象であるコンポーネントとが不整合であるため、呼び出し情報検証部31は、不整合という検証結果を結果記述作成部32に通知する(ステップ1803)。
【0057】
一方、コンポーネント種別、属性またはスコープ情報が記述されている場合の属性値またはスコープがいずれも同一である場合、呼び出し情報検証部31は、当該コンポーネント呼び出しを後述する記述漏れ抽出用のリストに登録する(ステップ1812)。そして、整合という検証結果を結果記述作成部32に通知する(ステップ1813)。
【0058】
また、呼び出し情報検証部31は、モニタ20においてJSPページ単位でコンポーネント呼び出し抽出が終了した際に、記述漏れのエラー項目をチェックする。
図20は、呼び出し情報検証部31による記述漏れのエラー項目の検出処理の流れを説明するフローチャートである。
図20を参照すると、呼び出し情報検証部31は、まず、JSP仕様記述格納部40からJSP仕様記述を読み込み、図19のステップ1812で作成された記述漏れ抽出用リストを読み込む(ステップ2001、2002)。そして、検証対象である(すなわちリストに対応する)JSPページのJSP仕様記述における各コンポーネント呼び出し情報に順次着目し(ステップ2003)、当該コンポーネント呼び出し情報に対応する検証結果が記述漏れ抽出用リストに存在するかどうかを調べる(ステップ2004)。
【0059】
このステップ2003、2004の処理を、検証対象であるJSPページのJSP仕様記述における全てのコンポーネント呼び出し情報に対して行う(ループ)。そして、1つでも記述漏れ抽出用リストに存在しないコンポーネント呼び出し情報があったならば、その時点で、当該検証対象であるJSPページに記述漏れのエラーがあったことを結果記述作成部32に通知して処理を終了する(ステップ2005)。
【0060】
結果記述作成部32は、呼び出し情報検証部31の検証結果に基づいて呼び出し結果記述を作成する。呼び出し結果記述は、JSPページ単位で検証の結果得られたコンポーネント呼び出し情報をまとめたものであり、整合・不整合の別と不整合の理由(JSPページが存在しない、属性が不明など)、記述漏れ等の情報が含まれる。図21は、呼び出し結果記述の例を示す図である。図21に示す例では、呼び出し結果記述には、モニタ20にて抽出されたコンポーネント呼び出し情報と、呼び出し情報検証部31による検証結果とが記述されている。また、この検証結果に対する識別番号が付される。
【0061】
検証結果ログ出力部33は、結果記述作成部32により作成された呼び出し結果記述に基づいて検証結果のログ情報を出力し、例えば所定のディスプレイ装置に当該ログ情報を表示して、JSPページ(ウェブアプリケーション)の開発者に通知する。図22は、検証結果のログ情報の表示出力例を示す図である。図22において、右端のチェックボックスは、後述する仕様更新処理において、どのJSPページ(JSPファイル)を更新するかを指定するために用いられる。
【0062】
開発者は、出力された検証結果を確認し、不整合箇所に関して、当該検証結果に基づいてJSPページのJSPタグ記述を修正することができる。さらに本実施の形態では、検証結果により得られた不整合箇所を正しいJSPタグ記述としてJSPページ仕様記述に反映させることができる。この場合、開発者は、不整合であるJSPページの検証結果の識別番号と必然性の情報(trueまたはfalse)を指定して、仕様更新部34にJSP仕様記述の更新をリクエストする。
【0063】
仕様更新部34は、上記の更新リクエストを受け付け、当該リクエストの対象であるJSPページのJSP仕様記述を更新する。
図23は、仕様更新部34の動作を説明するフローチャートである。
図23を参照すると、仕様更新部34は、更新リクエストを受け付けると(ステップ2301)、当該更新リクエストに含まれる識別番号に基づいて、更新すべきコンポーネント呼び出し情報を特定する(ステップ2302)。そして、JSP仕様記述格納部40から対応するJSPページのJSP仕様記述を読み出す(ステップ2303)。
【0064】
次に、仕様更新部34は、更新リクエストの内容に応じて、JSP仕様記述における所望の項目の記述を削除もしくは追加する(ステップ2304、2305、2306)。そして、記述内容が変更されたJSP仕様記述をJSP仕様記述格納部40に格納する(ステップ2307)。
以上のようにして、モニタ20により抽出されたコンポーネント呼び出し情報の内容が、対応するJSPページのJSP仕様記述に反映されることとなる。
【0065】
次に、以上のように構成された本実施の形態のウェブアプリケーション開発支援装置によるJSPページの検証処理を説明する。
図24は、本実施の形態のウェブアプリケーション開発支援装置によるJSPページの検証処理の全体的な流れを説明するフローチャートである。
図24に示すように、まず、予め用意されたURLを用いて、リクエスト制御部10によりHTTPリクエストが発行される(ステップ2401)。このHTTPリクエストは、JSP単体テスト用ウェブアプリケーションにおいて、タグライブラリ定義ファイル及びプログラムロジックによって処理され、HTTPリクエストに対応したJSPページが呼び出される(ステップ2402)。そして、このJSPページにより動的に生成されたコンテンツが、HTTPレスポンスとしてリクエスト制御部10に返される。
【0066】
一方、JSPページが呼び出された際、モニタ20により、当該JSPページのタグ記述に基づいて、タグハンドラにより実行されるコンポーネント呼び出しに関するコンポーネント呼び出し情報が抽出される(ステップ2403)。そして、抽出されたコンポーネント呼び出し情報が、整合性検証部30により、予め設定されてJSP仕様記述格納部40に格納されているJSP仕様記述と照合されることにより、当該コンポーネント呼び出しとその対象であるコンポーネントとの整合性が検証される(ステップ2404)。
【0067】
JSPページ(ウェブアプリケーション)の開発者は、この検証結果を参照し、対応措置として、検証対象であったJSPページの不整合箇所を修正するか、JSP仕様記述の方を更新するかを選択できる。JSP仕様記述を更新する場合は、更新リクエストの入力を条件として、整合性検証部30の仕様更新部34により、JSP仕様記述の記述内容がモニタ20にて抽出されたコンポーネント呼び出し情報の内容に更新される(ステップ2405、2406)。
【0068】
【発明の効果】
以上説明したように、本発明によれば、JSPページとその関連するコンポーネントとの間の整合・不整合を解析し、自動的に検証することが可能となる。
また本発明によれば、JSPページとその関連するコンポーネントとの間の整合・不整合の検証を行うことにより、JSPページの開発作業を支援し、JSPページの品質向上および開発コストの削減に寄与することができる。
【図面の簡単な説明】
【図1】本実施の形態で定義されるコンポーネント呼び出し情報の構成を示す図である。
【図2】本実施の形態で用いられるJSP仕様記述の例を示す図である。
【図3】本実施の形態によるウェブアプリケーション開発支援装置を実現するコンピュータ装置のハードウェア構成の例を模式的に示した図である。
【図4】本実施の形態によるウェブアプリケーション開発支援装置の機能構成を示す図である。
【図5】本実施の形態におけるモニタ生成部の機能を説明する図である。
【図6】本実施の形態におけるモニタ生成部の動作を説明するフローチャートである。
【図7】本実施の形態におけるモニタ生成部の動作を説明するフローチャートであり、コンポーネント呼び出しの種別判断と関連する属性とを求めるためのタグライブラリの解析処理を説明するフローチャートである。
【図8】図7の処理において用いられる情報を示す図であり、図8(A)はタグライブラリ定義ファイルのパスのリストを示す図、図8(B)はタグハンドラの定義を示す図である。
【図9】本実施の形態で用いられるコンポーネント種別判断テーブルの構成例を示す図である。
【図10】タグハンドラにおける分岐ロジックのコードにコンポーネント呼び出し情報のロジックを追加した例を示す図である。
【図11】モニタ機能を実装したタグハンドラクラスのソースコードの例を示す図である。
【図12】モニタ機能タグライブラリを呼び出すタグライブラリ定義ファイルの例を示す図である。
【図13】通常のタグハンドラ呼び出しとモニタの呼び出しとの違いをタグライブラリ定義ファイルの関係で説明する図である。
【図14】本実施の形態におけるリクエスト制御部の動作を説明するフローチャートである。
【図15】本実施の形態におけるモニタの動作を説明するフローチャートである。
【図16】コンポーネント呼び出しに対するモニタの動作を説明する図である。
【図17】本実施の形態における整合性検証部の構成を示す図である。
【図18】本実施の形態における呼び出し情報検証部による処理の流れを説明するフローチャートである。
【図19】本実施の形態における呼び出し情報検証部による処理の流れを説明するフローチャートである。
【図20】本実施の形態における呼び出し情報検証部による記述漏れのエラー項目の検出処理の流れを説明するフローチャートである。
【図21】呼び出し情報検証部の結果記述作成部により生成される呼び出し結果記述の例を示す図である。
【図22】呼び出し情報検証部の検証結果ログ出力部による検証結果のログ情報の表示出力例を示す図である。
【図23】本実施の形態における仕様更新部の動作を説明するフローチャートである。
【図24】本実施の形態のウェブアプリケーション開発支援装置によるJSPページの検証処理の全体的な流れを説明するフローチャートである。
【図25】JSPページに関連する主要なコンポーネント群を示す図である。
【符号の説明】
10…リクエスト制御部、20…モニタ、30…整合性検証部、31…呼び出し情報検証部、32…結果記述作成部、33…検証結果ログ出力部、34…仕様更新部、40…JSP仕様記述格納部、50…モニタ生成部、101…CPU、103…メインメモリ、105…ハードディスク
Claims (17)
- 動的にコンテンツが生成されるウェブページにおける当該コンテンツを生成するためのコンポーネント呼び出しの実行を監視し、当該コンポーネント呼び出しに関する情報を抽出するモニタと、
前記モニタにより抽出された前記コンポーネント呼び出しに関する情報に基づいて、当該コンポーネント呼び出しと当該コンポーネント呼び出しの対象であるコンポーネントとの整合性を検証する整合性検証部と
を備えることを特徴とするウェブアプリケーション開発支援装置。 - 前記モニタは、所定のコンポーネント呼び出しが実際に実行されるかどうかが実行時まで決まらない場合に、当該コンポーネント呼び出しの実行の有無に関わらずに、前記コンポーネント呼び出しに関する情報を抽出することを特徴とする請求項1に記載のウェブアプリケーション開発支援装置。
- 前記整合性検証部は、前記ウェブページごとに予め設定された前記コンポーネント呼び出しに関する情報をまとめた仕様情報と前記モニタにて抽出された情報とを照合することにより、当該コンポーネント呼び出しと前記コンポーネントとの整合性を検証することを特徴とする請求項1に記載のウェブアプリケーション開発支援装置。
- 前記整合性検証部による検証結果に基づいて、前記仕様情報を更新する仕様更新部をさらに備えることを特徴とする請求項1に記載のウェブアプリケーション開発支援装置。
- 前記コンポーネント呼び出しの記述に用いられるライブラリに関する情報を解析して、当該コンポーネント呼び出しに対応する前記モニタを生成するモニタ生成部をさらに備えることを特徴とする請求項1に記載のウェブアプリケーション開発支援装置。
- 動的にコンテンツが生成されるウェブページに対するHTTPリクエストを発行するリクエスト制御部と、
前記ウェブページにおける前記コンテンツを生成するためのコンポーネント呼び出しの実行を監視し、当該コンポーネント呼び出しに関する情報を抽出するモニタと
を備えることを特徴とするコンポーネント呼び出し監視装置。 - 前記コンポーネント呼び出しの記述に用いられるライブラリに関する情報を解析して、当該コンポーネント呼び出しに対応する前記モニタを生成するモニタ生成部をさらに備えることを特徴とする請求項6に記載のコンポーネント呼び出し監視装置。
- 前記モニタ生成部は、前記ライブラリに関する情報の解析結果に基づき、所定の記憶手段に格納されている当該ライブラリの定義ファイルを、前記コンポーネント呼び出しの実行に際して当該コンポーネント呼び出しに関する情報を抽出する機能を含んだライブラリ定義ファイルに置き換えることにより、前記モニタを自装置に実装させることを特徴とする請求項7に記載のコンポーネント呼び出し監視装置。
- コンピュータを用いて、所定のデータ処理を行うデータ処理方法であって、
動的にコンテンツが生成されるウェブページにおける当該コンテンツを生成するためのコンポーネント呼び出しに関して、当該コンポーネント呼び出しの記述に用いられるライブラリに関する情報を解析する第1のステップと、
解析結果に基づき、所定の記憶手段に格納されている当該ライブラリの定義ファイルを、前記コンポーネント呼び出しの実行に際して当該コンポーネント呼び出しに関する情報を抽出する機能を含んだライブラリ定義ファイルに置き換える第2のステップと、
置き換えられた前記ライブラリ定義ファイルを用いて前記コンポーネント呼び出しを実行し、実行された当該コンポーネント呼び出しに関する情報を抽出する第3のステップと
を含むことを特徴とするデータ処理方法。 - 前記ウェブページごとに予め設定されて所定の記憶手段に格納された前記コンポーネント呼び出しに関する情報をまとめた仕様情報と、前記第3のステップで抽出された情報とを照合することにより、当該コンポーネント呼び出しと当該コンポーネント呼び出しの対象であるコンポーネントとの整合性を検証する第4のステップをさらに含むことを特徴とする請求項9に記載のデータ処理方法。
- 前記第4のステップによる検証結果に基づいて、前記所定の記憶手段に格納されている前記仕様情報を更新する第5のステップをさらに含むことを特徴とする請求項10に記載のデータ処理方法。
- コンピュータを制御して、動的にコンテンツが生成されるウェブページにおける当該コンテンツを生成するためのコンポーネント呼び出しを監視するプログラムであって、
前記コンポーネント呼び出しの記述に用いられるライブラリに関する情報を解析する第1の処理と、
解析結果に基づき、所定の記憶手段に格納されている当該ライブラリの定義ファイルを、前記コンポーネント呼び出しの実行に際して当該コンポーネント呼び出しに関する情報を抽出する機能を含んだライブラリ定義ファイルに置き換える第2の処理と、
置き換えられた前記ライブラリ定義ファイルを用いて前記コンポーネント呼び出しを実行し、実行された当該コンポーネント呼び出しに関する情報を抽出する第3の処理と
を前記コンピュータに実行させることを特徴とするプログラム。 - 前記第3の処理では、所定のコンポーネント呼び出しが実際に実行されるかどうかが実行時まで決まらない場合に、当該コンポーネント呼び出しの実行の有無に関わらずに、前記コンポーネント呼び出しに関する情報を抽出する処理を前記コンピュータに実行させることを特徴とする請求項12に記載のプログラム。
- コンピュータを制御して、ウェブアプリケーションの開発を支援するプログラムであって、
動的にコンテンツが生成されるウェブページにおける当該コンテンツを生成するためのコンポーネント呼び出しを実行する手段と、
前記コンポーネント呼び出しの実行を監視し、当該コンポーネント呼び出しに関する情報を抽出する手段と、
抽出された前記コンポーネント呼び出しに関する情報に基づいて、当該コンポーネント呼び出しと当該コンポーネント呼び出しの対象であるコンポーネントとの整合性を検証する手段として、
前記コンピュータを機能させることを特徴とするプログラム。 - 前記コンポーネント呼び出しと前記コンポーネントとの整合性を検証する手段は、前記ウェブページごとに予め設定され所定の記憶手段に格納された前記コンポーネント呼び出しに関する情報をまとめた仕様情報と前記モニタにて抽出された情報とを照合することにより、当該コンポーネント呼び出しと前記コンポーネントとの整合性を検証することを特徴とする請求項14に記載のプログラム。
- 前記コンポーネント呼び出しと前記コンポーネントとの整合性を検証する手段による検証結果に基づいて、前記仕様情報を更新する手段として、前記コンピュータをさらに機能させることを特徴とする請求項15に記載のプログラム。
- 請求項12から請求項16のいずれかに記載のプログラムを、コンピュータが読み取り可能に記録した記録媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003156042A JP4023803B2 (ja) | 2003-05-30 | 2003-05-30 | ウェブアプリケーション開発支援装置、データ処理方法及びプログラム |
US10/850,147 US20040268312A1 (en) | 2003-05-30 | 2004-05-20 | Application development support, component invocation monitoring, and data processing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003156042A JP4023803B2 (ja) | 2003-05-30 | 2003-05-30 | ウェブアプリケーション開発支援装置、データ処理方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004362000A true JP2004362000A (ja) | 2004-12-24 |
JP4023803B2 JP4023803B2 (ja) | 2007-12-19 |
Family
ID=33534552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003156042A Expired - Fee Related JP4023803B2 (ja) | 2003-05-30 | 2003-05-30 | ウェブアプリケーション開発支援装置、データ処理方法及びプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20040268312A1 (ja) |
JP (1) | JP4023803B2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006318203A (ja) * | 2005-05-12 | 2006-11-24 | Nippon Telegr & Teleph Corp <Ntt> | JavaサーブレットによるWebサーバシステム |
JP2008015709A (ja) * | 2006-07-04 | 2008-01-24 | Fujitsu Ltd | テスト支援プログラム、テスト支援装置、およびテスト支援方法 |
CN111240962A (zh) * | 2019-12-31 | 2020-06-05 | 中移(杭州)信息技术有限公司 | 测试方法、装置、计算机设备及计算机存储介质 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2874440B1 (fr) * | 2004-08-17 | 2008-04-25 | Oberthur Card Syst Sa | Procede et dispositif de traitement de donnees |
US7634721B1 (en) * | 2004-08-23 | 2009-12-15 | Sun Microsystems Inc. | Composite component architecture using javaserver pages (JSP) tags |
US7849459B2 (en) * | 2004-11-04 | 2010-12-07 | International Business Machines Corporation | Deploying java applications in resource constrained environments |
US20070089052A1 (en) * | 2005-10-13 | 2007-04-19 | Karle Christopher J | Systems, methods, and media for enforcing accessible content development |
US8015547B2 (en) * | 2006-06-29 | 2011-09-06 | Augusta Systems, Inc. | Reconfigurable, hierarchical component-based architecture and framework and methods for rapidly developing sensor device-enabling software applications |
US20080005721A1 (en) * | 2006-06-29 | 2008-01-03 | Augusta Systems, Inc. | Method and System for Rapidly Developing Sensor-Enabled Software Applications |
US8095923B2 (en) * | 2006-06-29 | 2012-01-10 | Augusta Systems, Inc. | System and method for deploying and managing intelligent nodes in a distributed network |
US7735060B2 (en) * | 2006-06-29 | 2010-06-08 | Augusta Systems, Inc. | Method and system for rapidly developing and deploying sensor-enabled software applications |
JP4899971B2 (ja) * | 2007-03-27 | 2012-03-21 | 富士通株式会社 | テスト仕様書作成プログラム、テスト仕様書作成装置、およびテスト仕様書作成方法 |
US7822853B2 (en) * | 2008-09-30 | 2010-10-26 | Microsoft Corporation | Stabilization of distributed systems |
US9058429B2 (en) * | 2009-11-06 | 2015-06-16 | Toby Biddle | Usability testing tool |
JP5669433B2 (ja) | 2010-05-06 | 2015-02-12 | キヤノン株式会社 | 部品結合装置及び部品結合方法 |
US9361131B1 (en) * | 2011-06-24 | 2016-06-07 | Amazon Technologies, Inc. | Network resource access via a mobile shell |
US9104795B2 (en) * | 2011-06-28 | 2015-08-11 | International Business Machines Corporation | Integrating compiler warnings into a debug session |
US9384020B2 (en) * | 2013-01-18 | 2016-07-05 | Unisys Corporation | Domain scripting language framework for service and system integration |
US9229694B2 (en) | 2013-03-15 | 2016-01-05 | Gamesys Ltd. | Systems and methods for facilitating application development utilizing plugins |
US10936477B2 (en) * | 2018-01-31 | 2021-03-02 | Salesforce.Com, Inc. | End-to-end user interface component testing |
US11055417B2 (en) * | 2018-04-17 | 2021-07-06 | Oracle International Corporation | High granularity application and data security in cloud environments |
CN111124553B (zh) * | 2019-12-06 | 2024-04-26 | 北京小米移动软件有限公司 | 一种程序执行方法、装置、终端及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6620204B1 (en) * | 1997-11-25 | 2003-09-16 | International Business Machines Corporation | Automated HTML test page and test data generation for javascript objects |
CA2255023C (en) * | 1998-11-30 | 2004-04-13 | Siu Chung Yuen | A method and system for monitoring the execution of hybrid source code |
US6604209B1 (en) * | 2000-09-29 | 2003-08-05 | Sun Microsystems, Inc. | Distributed component testing in an enterprise computer system |
US7047522B1 (en) * | 2001-04-30 | 2006-05-16 | General Electric Capital Corporation | Method and system for verifying a computer program |
US6826716B2 (en) * | 2001-09-26 | 2004-11-30 | International Business Machines Corporation | Test programs for enterprise web applications |
US6792460B2 (en) * | 2002-10-02 | 2004-09-14 | Mercury Interactive Corporation | System and methods for monitoring application server performance |
US7650592B2 (en) * | 2003-03-01 | 2010-01-19 | Bea Systems, Inc. | Systems and methods for multi-view debugging environment |
-
2003
- 2003-05-30 JP JP2003156042A patent/JP4023803B2/ja not_active Expired - Fee Related
-
2004
- 2004-05-20 US US10/850,147 patent/US20040268312A1/en not_active Abandoned
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006318203A (ja) * | 2005-05-12 | 2006-11-24 | Nippon Telegr & Teleph Corp <Ntt> | JavaサーブレットによるWebサーバシステム |
JP4489634B2 (ja) * | 2005-05-12 | 2010-06-23 | 日本電信電話株式会社 | JavaサーブレットによるWebサーバシステム |
JP2008015709A (ja) * | 2006-07-04 | 2008-01-24 | Fujitsu Ltd | テスト支援プログラム、テスト支援装置、およびテスト支援方法 |
CN111240962A (zh) * | 2019-12-31 | 2020-06-05 | 中移(杭州)信息技术有限公司 | 测试方法、装置、计算机设备及计算机存储介质 |
CN111240962B (zh) * | 2019-12-31 | 2023-09-05 | 中移(杭州)信息技术有限公司 | 测试方法、装置、计算机设备及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20040268312A1 (en) | 2004-12-30 |
JP4023803B2 (ja) | 2007-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4023803B2 (ja) | ウェブアプリケーション開発支援装置、データ処理方法及びプログラム | |
JP4140916B2 (ja) | Webページにおける状態遷移を解析する方法 | |
US9465725B2 (en) | Software defect reporting | |
US8959483B2 (en) | Test framework of visual components in a multitenant database environment | |
US7877681B2 (en) | Automatic context management for web applications with client side code execution | |
Martin-Lopez et al. | Specification and automated analysis of inter-parameter dependencies in web APIs | |
US8615750B1 (en) | Optimizing application compiling | |
US20080126931A1 (en) | System and method for recording and reproducing user operation | |
US8645916B2 (en) | Crunching dynamically generated script files | |
US8661416B2 (en) | Method and apparatus for defining and instrumenting reusable Java server page code snippets for website testing and production | |
US8621613B1 (en) | Detecting malware in content items | |
JP2003256202A (ja) | 整合性検査支援プログラム、整合性検査支援方法および整合性検査支援装置 | |
US10705949B2 (en) | Evaluation of library test suites using mutation testing | |
JP2004178263A (ja) | Webサーバ、Javaサーブレットの機能を有するWebサーバ、およびコンピュータプログラム | |
GB2511329A (en) | Web service black box testing | |
JP6692289B2 (ja) | 画面情報生成装置、画面情報生成方法、及びプログラム | |
US11237889B1 (en) | Application infrastructure configuration based on annotated API schemas | |
US9348977B1 (en) | Detecting malware in content items | |
JP2010237841A (ja) | 動作検証装置および動作検証プログラム | |
JP4681673B1 (ja) | 動作検証装置、動作検証方法および動作検証プログラム | |
JP6426535B2 (ja) | テスト支援装置、及びテスト支援方法 | |
US11960560B1 (en) | Methods for analyzing recurring accessibility issues with dynamic web site behavior and devices thereof | |
JP7488976B1 (ja) | セキュリティテストシステム | |
US12001324B2 (en) | Operation pattern generation apparatus, operation pattern generation method and program | |
Salama | “Down With Regression!”–Generating Test Suites for the Web |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061201 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070206 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070501 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070529 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070828 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070925 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20070926 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071001 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101012 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |