JP4961949B2 - 生成プログラム、検査プログラム、生成装置、および生成方法 - Google Patents

生成プログラム、検査プログラム、生成装置、および生成方法 Download PDF

Info

Publication number
JP4961949B2
JP4961949B2 JP2006294502A JP2006294502A JP4961949B2 JP 4961949 B2 JP4961949 B2 JP 4961949B2 JP 2006294502 A JP2006294502 A JP 2006294502A JP 2006294502 A JP2006294502 A JP 2006294502A JP 4961949 B2 JP4961949 B2 JP 4961949B2
Authority
JP
Japan
Prior art keywords
inspection
web application
output item
response
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006294502A
Other languages
English (en)
Other versions
JP2008112300A (ja
Inventor
敏裕 小高
里枝子 山本
忠弘 上原
朝子 片山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2006294502A priority Critical patent/JP4961949B2/ja
Priority to US11/799,024 priority patent/US7664990B2/en
Publication of JP2008112300A publication Critical patent/JP2008112300A/ja
Application granted granted Critical
Publication of JP4961949B2 publication Critical patent/JP4961949B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

この発明は、Webアプリケーションシステム開発時に実施されるWebアプリケーションの自動検査をおこなうWebアプリケーション検査プログラム、該プログラムを記録した記録媒体、Webアプリケーション検査装置、およびWebアプリケーション検査方法に関する。
従来から、Webアプリケーションのテストは、テスト実施者がWebブラウザを動作させながら出力項目を目視で確認する方法や、テスト用プログラムを記述し、あるリクエストを入力した際の出力をプログラム内で確認する方法によりおこなわれるのが一般的である。
目視で確認する方法では、テスト実施者はテスト仕様書に実行する処理および入力値・期待値を記述し、このテスト仕様書に沿って人手により1件ずつ入力値を入力して処理を実施する。その際に、画面に表示される出力結果値と、テスト仕様書に記述される期待値を目視で比較することにより、テスト実施者が合否の判定をおこなう。このとき、出力結果値が画面上のどこに表示されるかは通常テスト仕様書には記述されないため、テスト実施者がそれぞれ判断して表示場所を特定している。
一方、テスト用プログラムを利用する方法としては、下記非特許文献1および非特許文献2を組み合わせた方法が一般的に知られている。この方法では、各ツールで指定された規約に則り、HTTPのリクエストを作成し、Webアプリケーションが配備されたWebサーバにこのリクエストを送信する。Webアプリケーション内で処理された結果としてHTTPレスポンスがWebサーバより返却され、このHTTPレスポンスをテスト用プログラム内で解析することにより、合否判定をおこなう。
このテスト用プログラムを利用する方法は、一度テスト用プログラムを記述してしまえば、何度でも同じテストを自動的に実行することができるメリットがある。また、一度実行されたテストを再実行するリグレッションテストでは、最初に実行したテストの際に受信したHTTPレスポンスをログなどの形式で記録しておき、再実行時に記録しておいたログとの突合せをおこなうことで、再実行時のテストを自動化する方法も考えられる。
Jakarta Cactus、[online]、[平成18年10月10日検索]、インターネット<URL:http://jakarta.apache.org/cactus> HttpUnit、[online]、[平成18年10月10日検索]、インターネット<URL:http://httpunit.sourceforge.net/>
しかしながら、上述した目視で確認する方法では、テスト仕様書の記述は比較的容易だが、人手が中心となるために出力結果値と期待値が一致していない場合でも、その違いを見落とすリスクが発生してしまうという問題があった。たとえば、出力結果値が画面上のどこに存在するかがすぐに分からないこともあり、場所の特定に時間を要する他、実際の出力場所を見誤る可能性もある。
また、目視で確認する方法では、同一のテストを何度もおこなうリグレッションテスト時にはテストを実行するごとに大きな工数を必要とする。したがって、検査の効率化を損ない、検査期間が長期化してしまうという問題があった。
また、上述したテスト用プログラムを利用する方法では、検査対象の出力項目がHTTPレスポンスのどこに出現するかを特定することが、目視で確認する方法よりもさらに困難であるという問題があった。
一方、目視で確認しやすくするために、テスト用プログラム中でこの位置情報を正確に記述すると、小さなデザインの変更でもテスト用プログラムを書き直す必要が発生し、仕様変更時のコストが大きくなるという問題が生じることとなる。
また、テスト用プログラム自体にバグがある場合には、テスト自体の信頼性が問題視されることになるが、テスト用プログラムにバグがないことを証明する手段は現在提案されていない。
さらに、上述したリグレッションテストなどのようにログなどの記録によるテスト再実行の自動化をおこなう方法の場合、初回のHTTPレスポンスと再実行時のHTTPレスポンスが、ヘッダ部を除いて厳密に一致していないと、完全な自動化が実現できないという問題が生じることとなる。
たとえば、Webアプリケーションの出力項目として、「受付日」のような毎回変化する項目が存在する場合、この項目が変化してしまうために、テスト用プログラムにバグがなくてもログの結果と一致しないこととなり、検査結果が不合格になってしまうという問題が生じることとなる。
この発明は、上述した従来技術による問題点を解消するため、Webアプリケーションの検査処理の効率化と検査結果の確認作業の容易化とを同時に実現することにより、検査の信頼性の向上を図ることができるWebアプリケーション検査プログラム、該プログラムを記録した記録媒体、Webアプリケーション検査装置、およびWebアプリケーション検査方法を提供することを目的とする。
本発明の一観点によれば、Webアプリケーションに与える入力値を含むリクエストを受け付け、受け付けた前記リクエストに含まれる前記入力値を与えて前記Webアプリケーションを実行し、1以上の検査情報を記憶する記憶手段から、前記Webアプリケーションを実行することにより得られた出力項目の検査に用いる検査情報を取得し、取得した前記検査情報を前記出力項目に関連付けた、前記リクエストに対するレスポンスを生成し、生成した前記レスポンスを、前記出力項目の検査を実行する装置に送信する、生成プログラム、生成装置、および生成方法が提案される。
本発明の一観点によれば、前記コンピュータからのリクエストに応じてWebアプリケーションを実行する装置から、前記Webアプリケーションの実行により得られる出力項目に当該出力項目の検査に用いる検査情報を関連付けた前記リクエストに対するレスポンスを受信し、受信された前記レスポンスから前記検査情報と前記出力項目とを抽出して記憶装置に記憶し、前記検査情報に基づいて前記出力項目を検査して、検査結果を前記記憶装置に記憶し、前記検査結果を前記出力項目に関連付けて出力する、検査プログラムが提案される。
本発明の一観点によれば、Webアプリケーションに与える入力値を含むリクエストを受け付け、受け付けた前記リクエストに含まれる前記入力値を与えて前記Webアプリケーションを実行し、前記Webアプリケーションを実行することにより得られた出力項目を記憶装置に記憶し、前記Webアプリケーションの実行内容に関するメタ情報を特定して前記記憶装置に記憶し、前記出力項目に、特定した前記メタ情報を関連付けて埋め込むことにより、前記リクエストに対するレスポンスを生成して、前記記憶装置に記憶し、生成した前記レスポンスを、前記出力項目の検査を実行する装置に送信する、生成プログラム、生成装置、および生成方法が提案される。
本発明の一観点によれば、Webアプリケーションがリクエストに応じて実行された場合、その実行により得られる出力項目に前記Webアプリケーションの実行内容に関するメタ情報を関連付けた前記リクエストに対するレスポンスを受信し、前記Webアプリケーションの各実行内容のメタ情報に関連付けられている1以上の検査情報を記憶する記憶手段から、受信した前記レスポンス内のメタ情報に関連付けられている検査情報を取得し、受信した前記レスポンスから前記検査情報と前記出力項目とを抽出して記憶装置に記憶し、前記検査情報に基づいて前記出力項目を検査して、検査結果を前記記憶装置に記憶し、前記検査結果を前記出力項目に関連付けて出力する、検査プログラムが提案される。
本発明にかかるWebアプリケーション検査プログラム、該プログラムを記録した記録媒体、Webアプリケーション検査装置、およびWebアプリケーション検査方法によれば、Webアプリケーションの検査処理の効率化と検査結果の確認作業の容易化とを同時に実現することにより、検査の信頼性の向上を図ることができるという効果を奏する。
[実施の形態]
以下に添付図面を参照して、この発明にかかるWebアプリケーション検査プログラム、該プログラムを記録した記録媒体、Webアプリケーション検査装置、およびWebアプリケーション検査方法の好適な実施の形態を詳細に説明する。まずは、下記の実施の形態1および実施の形態2において共通する内容について説明する。
(Webアプリケーション検査システムの概略構成)
まず、この発明の実施の形態にかかるWebアプリケーション検査システムの概略構成について説明する。図1は、この発明の実施の形態にかかるWebアプリケーション検査システムの概略構成を示す説明図である。
Webアプリケーション検査システム100は、クライアント101と、Webサーバ102と、プロキシサーバ103と、管理サーバ104とが、インターネットなどのネットワークにより相互に交信可能に接続されている。なお、Webサーバ102、プロキシサーバ103および管理サーバ104は、一台のサーバマシンとして構成することとしてもよく、いずれか2つのサーバを一台のサーバマシンとして構成することとしてもよい。
クライアント101は、テスト実施者が利用するコンピュータ装置である。クライアント101は、Webサーバ102にアクセスすることで、Webサーバ102内のあるWebアプリケーションに与える入力値を含むリクエストをWebサーバ102に送信するとともに、そのレスポンスをWebサーバ102から受信する。そして、そのレスポンスをディスプレイに表示することができる。
Webサーバ102は、検査対象となるWebアプリケーションがインストールされているコンピュータ装置である。Webサーバ102は、Webアプリケーションを実行することにより、クライアント101に対し当該Webアプリケーションに応じたサービスを提供することができる。また、Webサーバ102において、Webアプリケーションの検査を実行することとしてもよい。
プロキシサーバ103は、クライアント101とWebサーバ102間で通信されるデータを中継するコンピュータ装置である。プロキシサーバ103において、Webアプリケーションの検査を実行することとしてもよい。また、プロキシサーバ103にWebアプリケーションの検査機能や後述する管理サーバ104の管理機能や仕様書DBがない場合は、プロキシサーバ103をWebアプリケーション検査システム100から外してもよい。
管理サーバ104は、Webアプリケーションの仕様書の内容を管理するコンピュータ装置である。管理サーバ104は、仕様書DB105を備えている。仕様書DB105は、メタ情報と呼び出し回数と期待値と検査条件とからなる仕様書情報が電子化されたデータベースである。
管理サーバ104は、情報の要求元(たとえば、Webサーバ102、プロキシサーバ103、またはクライアント101)から送信されてくるメタ情報をてがかりとして、該当する期待値や検査条件を仕様書DB105から抽出して、要求元に送信する。この管理サーバ104の管理機能や仕様書DB105は、Webサーバ102やプロキシサーバ103に備えられていてもよい。
(コンピュータ装置のハードウェア構成)
つぎに、図1に示したコンピュータ装置のハードウェア構成について説明する。図2は、図1に示したコンピュータ装置のハードウェア構成を示すブロック図である。図2において、コンピュータ装置は、CPU201と、ROM202と、RAM203と、HDD(ハードディスクドライブ)204と、HD(ハードディスク)205と、FDD(フレキシブルディスクドライブ)206と、着脱可能な記録媒体の一例としてのFD(フレキシブルディスク)207と、ディスプレイ208と、I/F(インターフェース)209と、キーボード210と、マウス211と、スキャナ212と、プリンタ213と、を備えている。また、各構成部はバス200によってそれぞれ接続されている。
ここで、CPU201は、コンピュータ装置の全体の制御を司る。ROM202は、ブートプログラムなどのプログラムを記憶している。RAM203は、CPU201のワークエリアとして使用される。HDD204は、CPU201の制御にしたがってHD205に対するデータのリード/ライトを制御する。HD205は、HDD204の制御で書き込まれたデータを記憶する。
FDD206は、CPU201の制御にしたがってFD207に対するデータのリード/ライトを制御する。FD207は、FDD206の制御で書き込まれたデータを記憶したり、FD207に記憶されたデータをコンピュータ装置に読み取らせたりする。
また、着脱可能な記録媒体として、FD207のほか、CD−ROM(CD−R、CD−RW)、MO、DVD(Digital Versatile Disk)、メモリーカードなどであってもよい。ディスプレイ208は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ208は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
I/F209は、通信回線を通じてインターネットなどのネットワーク214に接続され、このネットワーク214を介して他の装置に接続される。そして、I/F209は、ネットワーク214と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F209には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード210は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス211は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ212は、画像を光学的に読み取り、コンピュータ装置内に画像データを取り込む。なお、スキャナ212は、OCR機能を持たせてもよい。また、プリンタ213は、画像データや文書データを印刷する。プリンタ213には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
(仕様書DB105の記憶内容)
つぎに、この発明の実施の形態にかかる仕様書DB105の記憶内容について説明する。図3は、この発明の実施の形態にかかる仕様書DB105の記憶内容を示す説明図である。この仕様書DB105の記憶内容は、仕様書どおりにあらかじめ作成される。
図3において、仕様書DB105は、メタ情報と呼び出し回数と期待値と検査条件とが関連付けて記憶されている。メタ情報とは、タグクラスとその属性からなる情報である。タグクラスとは、Webアプリケーションのタグが属するクラスである。属性とは、タグクラスの詳細情報であり、タグクラスに属するタグの属性名(name)と属性値(property)とを含む。
また、期待値とは、タグクラス、属性名、および属性値からなるメタ情報により特定されるタグを実行した場合に出力値として期待される値である。また、検査条件とは、タグにより特定される出力値の検査処理を実行する際に参照される条件である。
たとえば、検査条件「unchecked」は、検査処理を実行しないことを意味している。また、検査条件「exists」は、出力項目として何らかの文字列が存在する/しないことだけを検査することを意味している。文字列の詳細については、検査は実行しない。また、検査条件「format」は、出力項目として文字列のフォーマット情報のみを検査することを意味する。また、検査条件「range」は、出力項目としての文字列があらわす数値の範囲を検査することを意味する。また、検査条件「length」は、出力項目の文字列長の範囲を検査する。そのほか、文字の種類(漢字、かな、カナ、アルファベット、全角/半角)などの種類についても検査条件として規定してもよい。
このような検査条件を導入することにより、毎回変化する不定値に対して、検査を行わないようにすることを明示的に記述することが可能となる。また、値の存在検査、フォーマット検査、範囲検査を提供することで、不定値に対しても最低限の検査を行うことができるため、より高品質なテストが可能となる。以降、期待値および/または検査条件を、「検査情報」と称す。なお、仕様書DB105は、具体的には、たとえば、図2に示したROM202,RAM203,HD205などの記録媒体によってその機能を実現する。
(Webアプリケーション検査システム100の機能的構成)
つぎに、この発明の実施の形態にかかるWebアプリケーション検査システム100の機能的構成について説明する。図4は、この発明の実施の形態にかかるWebアプリケーション検査システム100の機能的構成を示すブロック図である。
図4に示したWebアプリケーション検査システム100において、符号400は、Webアプリケーションがインストールされているコンピュータ装置であり、たとえば、Webサーナが該当する。また、符号410は、Webアプリケーションを検査するコンピュータ装置であり、たとえば、Webサーバ102、プロキシサーバ103、管理サーバ104、またはクライアント101が該当する。
まず、コンピュータ装置400は、受付部401と、実行部402と、特定部403と、取得部404と、生成部405と、送信部406と、から構成されている。なお、これらの機能的構成は、図2に示したROM202,RAM203,HD205などの記録媒体に記録されているプログラムを、CPU201に実行させることによって、またはI/F209によって、その機能を実現する。
受付部401は、Webサーバ102にインストールされているWebアプリケーションに与える入力値を含むリクエストを受け付ける機能を有する。具体的には、Webアプリケーションの所在を特定するURLやディレクトリ、Webページの入力欄に入力データなどの入力値を含むリクエストを受け付ける。受け付ける方法としては、コンピュータ装置400のキーボード210などの入力装置を操作することで入力してもよく、また、クライアント101のキーボード210などの入力装置を操作することで、クライアント101から送信されてくるリクエストを受信することとしてもよい。
また、実行部402は、受付部401によって受け付けられたリクエストに含まれている入力値を与えてWebアプリケーションを実行する機能を有する。Webアプリケーションの計算結果を出力項目という。出力項目は、Webアプリケーションが実行されると、その出力位置が自動的に決定されるようにプログラムされている。ここで、出力位置とは、リクエストに対するレスポンスを解釈して画面表示する場合の表示位置である。
また、特定部403は、実行部402によるWebアプリケーションの実行内容に関するメタ情報を特定する機能を有する。具体的には、たとえば、ある処理が実行されたときのその処理に関するタグクラスおよびタグクラス属性を示す記述を、Webアプリケーションの実行内容をソースコード化した情報の中から特定する。
また、取得部404は、特定部403によって特定されたメタ情報をてがかりとして、仕様書DB105の中から検査情報(期待値、検査条件)を取得する機能を有する。コンピュータ装置400内に仕様書DB105がある場合には、仕様書DB105から検査情報を抽出する。一方、コンピュータ装置400内に仕様書DB105がない場合には、仕様書DB105を有する外部サーバ(たとえば、管理サーバ104)に対しメタ情報を含む検査情報のリクエストを送信する。そして、外部サーバから送信されてくる検査情報を受信することで、検査情報を取得することができる。
また、生成部405は、受付部401により受け付けられたリクエストに対するレスポンスを生成する。具体的には、検査情報が取得された場合には、その検査情報を出力項目に関連付けて埋め込むことにより、リクエストに対するレスポンスを生成する。一方、メタ情報が特定され、その検査情報が取得されていない場合には、メタ情報を出力項目に関連付けて埋め込むことにより、リクエストに対するレスポンスを生成する。
具体的には、検査情報やメタ情報が出力項目とともに表示画面に表示できるように、検査情報やメタ情報を出力項目の出力位置に関連付けて埋め込む。たとえば、HTML形式によりレスポンスを生成する場合、出力項目に対して検査情報やメタ情報をHTMLコメントとして記述することで、出力項目とともに表示することができる。なお、特に検査情報を含むレスポンスを「検査情報付きレスポンス」と称し、メタ情報を含むレスポンスを「メタ情報付きレスポンス」と称す。
また、送信部406は、生成部405によって生成されたレスポンスを、出力項目の検査を実行するコンピュータ装置410に送信する。これにより、検査対象となる出力項目とともに、検査に必要な検査情報やメタ情報がコンピュータ装置410に送信されることとなる。
このように、コンピュータ装置400によれば、検査情報付きレスポンスを送信することにより、送信先のコンピュータ装置において、出力項目に対する検査条件を取得することなく、検査を実行することができる。また、メタ情報付きレスポンスを送信することにより、同一の出力項目に対しメタ情報の特定と検査情報の取得を、別のコンピュータ装置により実行することができるため、コンピュータ装置間で処理負荷を分担することができる。
つぎに、コンピュータ装置410の機能的構成について説明する。コンピュータ装置410は、受信部411と、取得部412と、検査部413と、再構成部414と、出力部415と、から構成されている。なお、これらの機能的構成は、図2に示したROM202,RAM203,HD205などの記録媒体に記録されているプログラムを、CPU201に実行させることによって、またはI/F209によって、その機能を実現する。
受信部411は、コンピュータ装置400から送信されてくるレスポンスを受信する機能を有する。具体的には、コンピュータ装置400から送信されてくる検査情報付きレスポンスやメタ情報付きレスポンスを受信する。
また、取得部412は、メタ情報付きレスポンスが受信された場合、そのメタ情報をてがかりとして、仕様書DB105の中から検査情報(期待値、検査条件)を取得する機能を有する。コンピュータ装置410内に仕様書DB105がある場合には、仕様書DB105から検査情報を抽出する。一方、コンピュータ装置410内に仕様書DB105がない場合には、仕様書DB105を有する外部サーバ(たとえば、管理サーバ104)に対しメタ情報を含む検査情報のリクエストを送信する。そして、外部サーバから送信されてくる検査情報を受信することで、検査情報を取得することができる。
また、検査部413は、検査情報に基づいて出力項目の検査を実行する機能を有する。具体的には、たとえば、検査情報が、Webアプリケーションの仕様書に記述された期待値である場合、出力項目と期待値とが一致するか否かを判断する。一致した場合には合格であることを示すメッセージを、不一致である場合には不合格であることを示すメッセージを、検査結果として出力することとなる。
また、検査情報が、Webアプリケーションの仕様書に記述された出力項目が満たすべき検査条件である場合、出力項目が検査条件を遵守しているか否かを判断する。そして、検査条件を遵守している場合には合格メッセージを、違反している場合には不合格メッセージを、検査結果として出力することとなる。
たとえば、検査条件が、出力項目の存在の是非に関する情報「exists」である場合、出力項目が存在していれば、合格メッセージを、出力項目が存在していなければ、不合格メッセージを検査結果として出力する。これとは反対に、出力項目が存在していれば、不合格メッセージを、出力項目が存在していなければ、合格メッセージを検査結果として出力することとしてもよい。
また、検査条件が、出力項目のフォーマットに関する制限情報「format」である場合、検査条件を遵守している場合には合格メッセージを、違反している場合には不合格メッセージを、検査結果として出力することとなる。たとえば、検査条件が『出力項目が4桁以上の不定の数値にはカンマを入れる』である場合、出力項目となる5桁の不定数値が「12345」とすると違反したとして不合格となり、「12,345」とすると遵守したとして合格となる。
また、検査条件が、出力項目が数値である場合に当該数値の数値範囲に関する制限情報「range」である場合、検査条件を遵守している場合には合格メッセージを、違反している場合には不合格メッセージを、検査結果として出力することとなる。たとえば、検査条件が『出力項目は4桁以下の数値』である場合、出力項目となる不定数値が「12345」とすると違反したとして不合格となり、「1234」とすると遵守したとして合格となる。
また、検査条件が、出力項目が文字列である場合に当該文字列の文字列長に関する制限情報「length」である場合、検査条件を遵守している場合には合格メッセージを、違反している場合には不合格メッセージを、検査結果として出力することとなる。たとえば、検査条件が『出力項目は4文字以下の文字列』である場合、出力項目となる文字列が「abcde」とすると違反したとして不合格となり、「abcd」とすると遵守したとして合格となる。
なお、検査条件が、出力項目の検査を実行しないことを意味する情報「unchecked」である場合、検査部413は検査を実行しない。この場合は、その旨のメッセージを検査結果として出力することとなる。
また、再構成部414は、受信されたレスポンスを検査結果に応じて再構成する機能を有する。具体的には、たとえば、検査結果となる合格/不合格メッセージをフレーム情報として付加することでレスポンスの記述内容を再構成する。
また、コンピュータ装置400からメタ情報付きレスポンスを受信した場合には、再構成部414は、メタ情報付きレスポンスに埋め込まれているメタ情報に替えて検査情報を埋め込むこととしてもよい。これにより、再構成されたレスポンスを受信したコンピュータ装置410では、レスポンスのソースを表示することで、検査情報を確認することができる。
また、出力部415は、検査部413によって検査された検査結果を出力項目に関連付けて出力する機能を有する。具体的には、コンピュータ装置410に表示する場合には、再構成部414により再構成されたレスポンスを表示画面に表示する。レスポンスには出力項目が含まれているため、出力項目が表示画面に表示される。また、検査結果となる合格/不合格メッセージをフレーム情報として付加されている場合には、同一または別の表示画面で合格/不合格メッセージが表示される。
また、出力部415は、再構成されたレスポンスを、コンピュータ装置410とは別のコンピュータ装置、たとえば、コンピュータ装置400(たとえば、Webサーバ102)にリクエストを送信したコンピュータ装置(たとえば、クライアント101)に送信することとしてもよい。この場合、クライアント101において、再構成されたレスポンスに含まれている出力項目やその検査結果となる合格/不合格メッセージが表示される。
このように、コンピュータ装置410によれば、出力項目についての検査を自動実行することができる。また、検査結果と出力項目とを関連付けることにより、レスポンスの送信先となるコンピュータ装置において、出力項目とその検査結果とを同時に表示することが可能となり、テスト実施者による確認作業の容易化を実現することができる。また、メタ情報に替えて検査情報を埋め込むことにより、ソースを表示することで出力項目がそのような検査をパスしたかを視覚的に確認することができる。
以下、上述したWebアプリケーション検査プログラム、該プログラムを記録した記録媒体、Webアプリケーション検査装置、およびWebアプリケーション検査方法の実施の形態1および実施の形態2について詳細に説明する。なお、上述した実施の形態と共通部分や同一箇所には同一符号を付し、その説明を省略する。
[実施の形態1]
実施の形態1について説明する。実施の形態1は、Webサーバ102において検査情報取得処理およびアスペクト注入処理をおこない、プロキシサーバ103で検査処理をおこなう構成である。すなわち、実施の形態1では、主に、Webサーバ102が図4に示したコンピュータ装置400となり、プロキシサーバ103がコンピュータ装置410となる。
(各コンピュータ装置の内部構成)
図5は、図1に示した各コンピュータ装置の実施の形態1における内部構成を示すブロック図である。まず、クライアント101の内部構成について説明する。図5において、クライアント101は、Webブラウザ511と実行ナビゲータ512と一覧表示エンジン513とを有する。
Webブラウザ511は、Webサーバ102のWebアプリケーション521に対してHTTPリクエストを生成して送信したり、Webサーバ102またはプロキシサーバ103からのHTML形式のレスポンス(以下、「レスポンスHTML」と称す。)を受信する通信機能と、受信されたレスポンスHTMLを解析する解析機能と、その解析結果をディスプレイに描画する描画機能とを有するプログラムである。描画内容は、検査結果514とWebアプリケーション521の実行結果515とに分割される。
また、実行ナビゲータ512は、つぎに実行すべき操作を管理サーバ104から取得し画面表示するためにインストールされたプログラムである。また、一覧表示エンジン513は、実行ナビゲータ512によって画面表示された出力項目の期待値を画面表示するためにインストールされたプログラムである。
つぎに、Webサーバ102の内部構成について説明する。Webサーバ102は、Webアプリケーション521と検査情報取得エンジン522とプリプロセッサ523とコンパイラ524とAPサーバ525とを有する。APサーバ525は、Webアプリケーション521の実行環境となるプログラムであり、プリプロセッサ523とコンパイラ524を有している。なお、このAPサーバ525は、図4に示した受付部401、生成部405及び送信部406に相当する構成である。
ここで、米国サンマイクロシステムズが規定するJSPおよびJava(登録商標)言語仕様に則る場合、プリプロセッサ523としてJSP展開エンジンを適用することができ、コンパイラ524としてJAVAコンパイラ524を適用することができる。
APサーバ525には、検査対象となるWebアプリケーション521が実装され、ビジネスロジック526とテンプレートファイル527から構成される。ビジネスロジック526とは、ビジネス取引などの動作処理を実行するWebアプリケーション521の論理記述であり、たとえば、『お客様が買い物カゴに品物をいれた時に、在庫確認をするように決めている。』、『送信ボタンを押すと、カード会社に認証をとるようにしている。』といった、各々の業務の流れ方を取り決めた論理記述である。
また、テンプレートファイル527とは、画面デザインと出力項目の表示位置を定義するファイルである。JAVA(登録商標)を用いる場合、テンプレートファイル527としてJSPファイルを適用することができる。
このように、近年のWebアプリケーション521開発においては、デザイン機能とビジネスロジック526機能を分離する手法が一般化しつつある。このため、ビジネスロジック526内で処理された出力項目がJSPファイル527内のカスタムタグで指定された位置に表示されるような構造となる。なお、このWebアプリケーション521、ビジネスロジック526、およびテンプレートファイル(JSPファイル)527は、図4に示した実行部402および特定部403に相当する構成である。
また、検査情報取得エンジン522は、管理サーバ104から検査情報を取得するためにインストールされたプログラムである。具体的には、管理サーバ104に対しタグクラスおよびメタ情報を送信することで、仕様書DB105から抽出された検査情報を取得することができる。検査情報取得エンジン522は、たとえば、AspectJなどのアスペクト指向のプログラミング言語により構成される。なお、この検査情報取得エンジン522は、図4に示した取得部404に相当する構成である。
つぎに、プロキシサーバ103の内部構成について説明する。プロキシサーバ103は、プロキシエンジン531と検査エンジン532とを有する。プロキシエンジン531は、クライアント101およびWebサーバ102間のアクセスを代行する機能を有する。
また、検査エンジン532は、Webサーバ102から送信されてくる検査情報付きレスポンスHTML910に埋め込まれている検査情報および出力値に基づいて、Webアプリケーション521が正常に実行されているか否かを検査する機能を有する。そして、検査結果514をプロキシエンジン531に受け渡す。
たとえば、検査情報に期待値が含まれている場合、当該期待値および出力値の一致判定をおこなう。また、検査情報に検査条件が含まれている場合、出力値が検査条件に合致するか否かを判定する。なお、このプロキシエンジン531は、図4に示した受信部411および出力部415に相当する構成であり、検査エンジン532は、取得部412、検査部413、および再構成部414に相当する構成である。
つぎに、管理サーバ104の内部構成について説明する。管理サーバ104は、テストケース管理部541を有する。テストケース管理部541は、テスト実施者がおこなうテストケースを管理するためにインストールされたプログラムである。具体的には、テストケースごとにWebサーバ102のURLおよび入力値を関連付けており、クライアント101からテストケースが指定されると、対応するWebサーバ102のURLおよび入力値を当該クライアント101に送信する。
また、上述したように、テストケース管理部541は、検査情報の要求元(たとえば、Webサーバ102、プロキシサーバ103、またはクライアント101)から送信されてくるタグクラスおよびメタ情報をてがかりとして、該当する期待値を仕様書DB105から抽出して、要求元に送信する。なお、このテストケース管理部541は、図4に示した取得部404に相当する構成である。
(Webサーバ102の運用時における実行処理)
ここで、実施の形態1にかかるWebサーバ102の運用時の実行処理についてJAVAを適用した場合を例にして説明する。図6は、実施の形態1にかかるWebサーバ102の運用時の実行処理を示すシーケンス図であり、図7は、実施の形態1にかかるWebサーバ102の運用時の実行処理内容を示す説明図である。なお、運用時はクライアント101を操作するのはテスト実施者ではなく一般利用者となる。
図6において、まず、クライアント101はリクエスト生成処理を実行する(ステップS601)。具体的には、クライアント101を操作することで、Webサーバ102のURLと入力値を取得し、Webブラウザ511でHTTPリクエストを生成する。そして、Webブラウザ511がWebサーバ102に対しHTTPリクエストを送信する。
つぎに、Webブラウザ511からのHTTPリクエストを受信すると、Webサーバ102は、受信されたHTTPリクエストのリクエスト解析処理を実行する(ステップS602)。具体的には、APサーバ525が、受信されたHTTPリクエストの内容(リクエスト行やメッセージ・ヘッダ、エンティティ・ボディ)を分析して、検査対象となるビジネスロジック526を呼び出す。ビジネスロジック526は、図7(A)に示したように、HTTPリクエストの内容を分析して画面への出力項目を計算/登録する。
つぎに、Webサーバ102は、出力項目展開処理を実行する(ステップS603)。具体的には、JSP展開エンジン523が、図7(B)に示したように、JSPファイル527内の出力項目の出力位置を決定する。そして、そのJSPファイル527を出力項目の出力位置が指定されたソースコードに変換する。コンパイラ524は、変換されたソースコードをバイナリファイルにコンパイルすることで、画面クラスファイルを生成する。
つぎに、Webサーバ102は、レスポンス生成処理を実行する(ステップS604)。具体的には、APサーバ525は画面クラスファイルを呼び出して実行する。このときにJSPファイル527中に含まれるカスタムタグ(図7(B)のJSPファイル527内の11行目に示したタグ:<bean:write.../>)が画面クラスファイル中で評価され、ビジネスロジック526が計算した出力項目を出力結果に変換する。
この結果、画面クラスファイルは、図7(C)に示したようなレスポンスHTML700に変換され、カスタムタグの位置に出力項目701が埋め込まれる。出力項目701が埋め込まれたレスポンスHTML700は、APサーバ525によりクライアント101のWebブラウザ511に送信される。
また、クライアント101は、Webサーバ102から送信されてくるレスポンスHTML700を受信することによりWebアプリケーション521の実行結果表示処理を実行する(ステップS605)。具体的には、Webブラウザ511が、受信されたレスポンスHTML700を描画することにより、Webアプリケーション521の実行結果515を画面に表示する。利用者は、さらにこの画面中に存在するハイパーリンクを辿ることで、複数の画面から構成される複雑なトランザクションを有するアプリケーションであっても、同様の処理が繰り返し実行されて、処理を完了することができる。
(Webサーバ102の検査時における実行処理内容)
つぎに、実施の形態1にかかるWebサーバ102の検査時の実行処理内容についてJAVAを適用した場合を例にして説明する。図8は、実施の形態1にかかるWebサーバ102の検査時の実行処理を示すシーケンス図であり、図9および図10は、実施の形態1にかかるWebサーバ102の検査時の実行処理内容を示す説明図である。なお、検査時はクライアント101を操作するのは一般利用者ではなくテスト実施者となる。
図8において、まず、クライアント101はリクエスト生成処理を実行する(ステップS801)。具体的には、クライアント101を操作することで、Webサーバ102のURLと入力値を管理サーバ104から要求し、管理サーバ104から送信されてくるURLおよび入力値を受信する。
そして、Webブラウザ511により、運用時と同様、Webブラウザ511でHTTPリクエストを生成する。このあと、Webブラウザ511がHTTPリクエストを送信する。Webブラウザ511から送信されたHTTPリクエストは、プロキシサーバ103によりWebサーバ102に転送される(ステップS802)。そして、プロキシサーバ103から転送されたHTTPリクエストを受信する。
Webサーバ102は、受信されたHTTPリクエストのリクエスト解析処理を実行する(ステップS803)。具体的には、APサーバ525が、受信されたHTTPリクエストの内容(リクエスト行やメッセージ・ヘッダ、エンティティ・ボディ)を分析して、検査対象となるビジネスロジック526を呼び出す。ビジネスロジック526は、図7(A)に示した場合と同様、HTTPリクエストの内容を分析して画面への出力項目701を計算する。
つぎに、Webサーバ102は、出力項目展開処理を実行する(ステップS804)。具体的には、JSP展開エンジン523が、図9(A)に示したように、JSPファイル527内の出力項目701の表示位置を決定する。そして、図9(B)に示したように、そのJSPファイル527を出力項目701の出力位置が指定されたソースコード902に変換する。ソースコード902に変換することで、JSPファイル527のカスタムタグ901は、Javaソース断片903に変換される。Javaソース断片903は、カスタムタグ901に相当するクラスのdoStartTag()メソッドとdoEndTag()メソッドを呼び出すようなコードである。
そして、コンパイラ524は、図9(C)に示したように、変換されたソースコード902をバイナリファイルにコンパイルすることで、画面クラスファイル904を生成する。ここまでのWebサーバ102内における動作は運用時と同様である。
つぎに、Webサーバ102は、アスペクト注入処理を実行する(ステップS805)。具体的には、検査情報取得エンジン522が、管理サーバ104に対し検査情報の要求をおこなう。たとえば、メタ情報を抽出して、検査情報要求として管理サーバ104に送信する。管理サーバ104では、メタ情報をてがかりとして検査情報を抽出する(ステップS806)。そして、抽出された検査情報を検査情報取得エンジン522に返す。
そして、検査情報取得エンジン522は、図9(D)に示したように、画面クラスファイル904中のカスタムタグ901に相当する記述(ここでは、doStartTag()メソッドとdoEndTag()メソッド)に管理サーバ104からの検査情報をHTMLコメントとして埋め込むことで、画面クラスファイル904をアスペクト付きJAVAクラスファイル905に変換する(アスペクトの織り込み)。アスペクトの織り込みとは、不特定多数のソースコード902群における特定の動作に対して、まとめて別の動作に置き換える処理を指す。
この例では、JSPファイル527のカスタムタグ901は、JSP展開エンジン523によりJavaソース断片903に変換されるが、このときJavaソース断片903においては、カスタムタグ901に相当するクラスのdoStartTag()メソッドとdoEndTag()メソッドを呼び出すようなコードが生成される。
このJavaソース断片903を有するJavaソースコード902をJavaコンパイラ524によりコンパイルしても、画面クラスファイル904中には上述のdoStartTag()メソッドとdoEndTag()メソッドとを呼び出すバイトコードが含まれている。この場合、doStartTag()メソッドとdoEndTag()メソッドの呼び出しに相当する部分に対してアスペクトを織り込むことにより、これらの部分に対するWebアプリケーション521の動作を置き換える。
また、カスタムタグ901には、name属性「name="AddForm"」とproperty属性「property="result"」が存在する。これらはJavaソース断片903においてはsetName()メソッドとsetProperty()メソッドに変換される。これらのset系メソッドに対してもアスペクトを織り込むことでアスペクト付きJavaクラスファイル905からname属性「name="AddForm"」とproperty属性「property="result"」にアクセスできるようにしている。
このようにして、検査情報取得エンジン522は、画面クラスファイル904における各メソッド呼び出しに対してアスペクトを織り込み、アスペクト付きJAVAクラスファイル905に変換する。
このあと、Webサーバ102は、レスポンス生成処理を実行する(ステップS807)。具体的には、APサーバ525は、アスペクト付きJAVAクラスファイル905を実行することにより、図9(E)に示したような検査情報付きレスポンスHTML910が生成される。検査情報付きレスポンスHTML910には、運用時と比較するとHTMLコメントが付加されている。
また、図10(A)では、アスペクト付きJAVAクラスファイル905により動作が置き換えられることによって、検査情報付きレスポンスHTML910がどのようにして生成されるかを示している。検査情報取得エンジン522はAspectJなどのアスペクト指向のプログラミング言語により構成されている場合、検査情報取得エンジン522およびAPサーバ525は、つぎの手順(1)〜(6)で検査情報付きレスポンスHTML910を生成する。
(1)Javaソース断片903のsetPageContext()メソッドが属するクラスのクラス名を取得する。この例では、図9(B)および図10(A)に示したJavaソース断片903の145行目に記述されている「org.apache.struts.taglib.bean.WriteTag」が、カスタムタグ901のタグクラス1001として取得される。
(2)タグクラス1001とJavaソース断片903上のsetXxx()メソッドを属性リストとして抽出する。この例では、図9(B)および図10(A)に示したJavaソース断片903の148行目に記述されている「AddForm」がname属性の属性値1002として、149行目に記述されている「result」がproperty属性の属性値1003として、抽出される。
(3)カスタムタグ901を構成するタグクラス1001と属性値1002,1003をテストケース管理部541に送信する。仕様書DB105には図3に示したように、タグクラス、name属性およびproperty属性の属性値をあらわすメタ情報、呼び出し回数、期待値が格納されており、テストケース管理部541は、検査情報取得エンジン522から受信したメタ情報と、同一のタグクラス名および属性値で呼び出された回数に応じた検査情報を検査情報取得エンジン522に返却する。
呼び出し回数を指定するのは、JSPファイル527内で、ループなどの繰り返しがあると、同一のクラス名かつ同一の属性値のカスタムタグ901が複数回呼ばれる可能性があり、呼び出された順序によって期待値が変化することが一般的なためである。
(4)doStartTag()メソッドが呼び出される直前に、検査情報がHTMLとしてコメント化されたHTMLコメント911を出力する。これにより、図9(E)および図10(B)に示したように、「<!--testStart expected=“5”-->」が表示される。
(5)doStartTag()メソッドおよびdoEndTag()メソッドを実行し、Webアプリケーション521を通常通り実行させる。これにより、図9(E)および図10(B)に示したように、実行結果515の出力項目701として出力値「5」が表示される。
(6)doEndTag()が終了した直後に、HTMLコメント912を出力する。これにより、図10(B)に示したように、「<!--testEnd -->」が表示される。
図11は、上記(1)〜(6)によるWebアプリケーション521の実行結果515を示す説明図である。図11に示したように、検査情報付きレスポンスHTML910では、出力項目「5」の出力位置の前後に、期待値がHTMLコメントとして配置されて出力されることとなる。これにより、運用時におけるレスポンスHTML700の替わりに、検査情報付きレスポンスHTML910がプロキシサーバ103に返却されることとなる。
つぎに、図8にもどって、シーケンスの続きを説明する。プロキシサーバ103は、検査処理を実行する(ステップS808)。具体的には、プロキシエンジン531がAPサーバ525から送信されてくる検査情報付きレスポンスHTML910を受信して、検査エンジン532が期待値と出力項目701とを比較することによりWebアプリケーション521の検査を実行する。
すなわち、検査エンジン532は、検査情報付きレスポンスHTML910の内部を走査し、「<!--testStart expected=“XXX”-->」と「<!--testEnd -->」とに囲まれた部分を検索する。なお、XXXには検査情報としての文字列(期待値や検査条件)が記述されていることとする。そして、このタグに囲まれた部分の文字列を、Webアプリケーション521の実行結果515となる出力項目と判断する。
検査エンジン532は、この出力項目701の直前のHTMLコメントにおける検査情報に基づいて、出力項目701の検査を実行する。たとえば、検査情報に期待値が含まれている場合、出力項目701との一致判定を実行する。そして、誤り(不一致)であれば、検査情報付きレスポンスHTML910中における行数、桁数、何番目の出力項目701が期待値と異なるかなどといった位置情報を内部に記憶しておく。
検査エンジン532は、検査情報に検査条件が含まれている場合には、出力項目701の検査の実行に際し、当該検査条件を考慮する。たとえば、含まれている検査条件が「unchecked」である場合は、検査処理を実行しない。
また、含まれている検査条件が「exists」である場合、出力項目701として何らかの文字列が存在する/しないことだけを検査する。文字列の詳細については、検査は実行しない。また、含まれている検査条件が「format」である場合、出力項目701として文字列のフォーマット情報のみを検査する。たとえば、出力項目701について3桁後のカンマの存在の有無や小数桁数などを検査する。
また、含まれている検査条件が「range」である場合、出力項目701としての文字列があらわす数値の範囲を検査する。たとえば、負の数は誤りであるなどを検査する。また、含まれている検査条件が「length」である場合、出力項目701の文字列長の範囲を検査する。
このように、出力項目701には、伝票番号のように、実行するごとに結果がことなるものが存在する。実施例では、仕様書DB105としてすべての出力項目701に対して期待値を記述することを要求するが、これらの毎回変化する出力項目701の期待値は記述できない問題がある。
したがって、このような検査条件により、毎回変化する不定値に対して、検査を行わないようにすることを明示的に記述することが可能となる。また、値の存在検査、フォーマット検査、範囲検査を提供することで、不定値に対しても最低限の検査を実行できるため、より高品質なテストが可能となる。
つぎに、プロキシサーバ103は、再構成処理を実行する(ステップS809)。具体的には、プロキシエンジン531は検査情報付きレスポンスHTML910を再構成し、HTML中にフレーム情報を付加し、Webブラウザ511に返却する。フレーム情報は、画面を上下に分割するフレームをあらわす。
上フレームに表示される情報として、検査情報付きレスポンスHTML910に検査結果514が付加される。また、下フレームに表示される情報として、Webアプリケーション521の実行結果515となる検査情報付きレスポンスHTML910がそのまま付加される。プロキシサーバ103は、このように再構成された検査情報付きレスポンスHTML910をクライアント101に送信する。
このあと、クライアント101は、プロキシサーバ103から送信されてくる再構成後の検査情報付きレスポンスHTML910を受信することにより、Webアプリケーション521の検査結果および実行結果表示処理を実行する(ステップS810)。
具体的には、Webブラウザ511が、受信された検査情報付きレスポンスHTML910を描画することにより、上フレームとして記述された検査結果514と下フレームとして記述された実行結果515とを、ともに画面上に表示する。これにより、Webブラウザ511においては、検査結果514が不合格であった場合、位置情報および不合格となったクラス名、属性値を検査結果514として表示することができる。
図12は、ステップS810におけるWebブラウザ511の画面表示例を示す説明図である。Webブラウザ511では、HTMLコメントは評価されないため、運用時と同一の画面(実行結果515)がWebブラウザ511の下部に表示されることになる。また、実行結果515が複数ある場合、実行結果515ごとに検査結果を表示することとしてもよく、また、所定数の実行結果515についての検査結果514が合格メッセージであれば、単一の合格メッセージを表示することとしてもよい。
この結果、テスト実施者はWebブラウザ511上の画面項目を一つずつ目視で検査しなくても、検査結果514を確認するだけで合否判定をおこなうことができる。また、位置情報を確認することで、どの画面項目に誤りがあったかをすばやく判断することができる効果がある。
また、実施の形態1では、プロキシサーバ103を本来のプロキシ処理とWebアプリケーション521の検査処理とを兼用することにより、サーバの導入台数の低減化を図ることができる。
また、上述したWebサーバ102では、APサーバ525によりアスペクト付きJAVAクラスファイル905(バイナリファイル)を実行することにより、検査情報付きレスポンスHTML910を生成して、プロキシサーバ103に送信することとしたが、CGI(Common Gateway Interface)のようにWebサーバ102上で直接実行される形式でも構わない。
このように、実施の形態1によれば、Webアプリケーション521の検査処理の効率化と検査結果514の確認作業の容易化とを同時に実現することにより、検査の信頼性の向上を図ることができる。
[実施の形態2]
つぎに、実施の形態2について説明する。実施の形態1は、Webサーバ102において検査情報取得処理およびアスペクト注入処理をおこない、プロキシサーバ103で検査処理をおこなう構成としたが、実施の形態2では、Webサーバ102においてメタ情報取得処理およびアスペクト注入処理をおこない、プロキシサーバ103で検査処理をおこなう構成とする。
実施の形態2では、Webサーバ102に検査情報取得エンジン522が実装されていないため、管理サーバ104から期待値の取得処理は実行されず、Webサーバ102は、検査情報付きレスポンスHTML910を生成するのではなく、メタ情報が埋め込まれたメタ情報付きレスポンスHTMLを生成することとなる。以下、実施の形態2について説明する。なお、実施の形態1と同一構成には同一符号を付し、その説明を省略する。
(各コンピュータ装置の内部構成)
図13は、図1に示した各コンピュータ装置の実施の形態2における内部構成を示すブロック図である。実施の形態2では、Webサーバ102において、検査情報取得エンジン522の代わりにメタ情報挿入エンジン528がインストールされている。メタ情報挿入エンジン528は、図10(A)に示したように、Javaソース断片903から、タグクラス1001、name属性の属性値1002、およびproperty属性の属性値1003からなるメタ情報を特定する。そして、出力項目701のコメント文として挿入する。また、Webサーバ102と管理サーバ104とは直接通信する必要はない。
また、プロキシサーバ103には、管理サーバ104のテストケース管理部541と通信可能な検査エンジン533がインストールされている。この検査エンジン533は、テストケース管理部541と通信可能であることのほかは、実施の形態1の検査エンジン532と同様の検査処理を実行する。
(Webサーバ102の検査時における実行処理内容)
つぎに、実施の形態2にかかるWebサーバ102の検査時の実行処理内容についてJAVAを適用した場合を例にして説明する。Webサーバ102の運用時の実行処理内容については、実施の形態1と同一であるため省略する。図14は、実施の形態2にかかるWebサーバ102の検査時の実行処理を示すシーケンス図であり、図15および図16は、実施の形態2にかかるWebサーバ102の検査時の実行処理内容を示す説明図である。なお、検査時はクライアント101を操作するのは一般利用者ではなくテスト実施者となる。
まず、クライアント101のリクエスト生成処理(ステップS1401)、プロキシサーバ103のリクエスト転送(ステップS1402)、Webサーバ102のリクエスト解析処理(ステップS1403)、および出力項目展開処理(ステップS1404)まで、ならびに検査結果および実行結果表示処理(ステップS1410)については、実施の形態1のステップS801〜ステップS804まで、ならびにステップS810と同一である。したがって、図15に示した(A)〜(C)までの処理の流れも、図8に示した(A)〜(C)までの処理の流れと同一である。
図14において、出力項目展開処理(ステップS1404)のあと、Webサーバ102は、アスペクト注入処理を実行する(ステップS1405)。具体的には、メタ情報挿入エンジン528が、画面クラスファイル904にメタ情報を挿入することで、図15(D)に示したように、アスペクト付きJAVAクラスファイル915を得る。
つぎに、Webサーバ102は、レスポンス生成処理を実行する(ステップS1406)。具体的には、APサーバ525が、アスペクト付きJAVAクラスファイル915を実行することで、メタ情報付きレスポンスHTML920を生成する。図15(E)に示したように、メタ情報付きレスポンスHTML920には、運用時と比較すると、HTMLコメント921,922が付加されている。このあと、Webサーバ102は、生成されたメタ情報付きレスポンスHTML920をプロキシサーバ103に送信する。
また、図16では、アスペクト付きJAVAクラスファイル915により動作が置き換えられることによって、どのようにメタ情報付きレスポンスHTML920が生成されるかを示している。メタ情報挿入エンジン528はAspectJなどのアスペクト指向のプログラミング言語により構成されている場合、メタ情報挿入エンジン528およびAPサーバ525は、つぎの手順(1)〜(5)でメタ情報付きレスポンスHTML920を生成する。
(1)Javaソース断片903のsetPageContext()メソッドが属するクラスのクラス名を取得する。この例では、図15(B)および図16(A)に示したJavaソース断片903の145行目に記述されている「org.apache.struts.taglib.bean.WriteTag」が、カスタムタグ901のタグクラス1001として取得される。
(2)タグクラス1001とJavaソース断片903上のsetXxx()メソッドを属性リストとして抽出する。この例では、図15(B)および図16(A)に示したJavaソース断片903の148行目に記述されている「AddForm」がname属性の属性値1002として、149行目に記述されている「result」がproperty属性の属性値1003として、抽出される。
(3)doStartTag()メソッドが呼び出される直前に、メタ情報がHTMLとしてコメント化されたHTMLコメント1601を出力する。これにより、図16(B)に示したように、「<!--testStart class="WriteTag" name="AddForm" property="result" -->」が表示される。
(4)doStartTag()メソッドおよびdoEndTag()メソッドを実行し、Webアプリケーション521を通常通り実行させる。これにより、図16(B)に示したように、実行結果515の出力項目701として出力値「5」が表示される。
(5)doEndTag()が終了した直後に、HTMLコメント1602を出力する。これにより、図16(B)に示したように、「<!--testEnd -->」が表示される。
図17は、上記(1)〜(5)によるWebアプリケーション521の実行結果515を示す説明図である。図17に示したように、メタ情報付きレスポンスHTML920では、出力項目701である出力値「5」の出力位置の前後に、メタ情報を示すHTMLコメント921,922が配置されて出力されることとなる。これにより、運用時におけるレスポンスHTML700の替わりに、メタ情報付きレスポンスHTML920がプロキシサーバ103に返却されることとなる。
つぎに、図14にもどって、シーケンスの続きを説明する。プロキシサーバ103は、検査処理を実行する(ステップS1407)。具体的には、プロキシエンジン531が、Webサーバ102からら送信されているメタ情報付きレスポンスHTML920を受信する。そして、受信されたメタ情報付きレスポンスHTML920を検査エンジン533に受け渡すことにより、検査エンジン533は、メタ情報付きレスポンスHTML920の検査を実行する。
検査エンジン533は、メタ情報付きレスポンスHTML920の内部を走査し、「<!--testStart XXX-->」と「<!--testEnd -->」に囲まれた部分の値を検索する。なお、XXXにはメタ情報としての文字列が記入されている。そして、このタグに囲まれた部分の文字列を、Webアプリケーション521の実行結果515となる出力項目701と判断する。そして、検査エンジン533は、「<!--testStart XXX-->」におけるメタ情報の記述XXXを切り出して、検査情報要求として管理サーバ104に送信する。
このとき、管理サーバ104は、検査情報抽出処理を実行する(ステップS1408)。具体的には、テストケース管理部541が、仕様書DB105を参照し、受信されたメタ情報に関連付けられている検査情報を仕様書DB105から抽出して、検査エンジン533に返却する。
検査エンジン533は、管理サーバ104からの検査情報に基づいて、出力項目701の検査を実行する。たとえば、検査情報に期待値が含まれている場合、出力項目701との一致判定を実行する。そして、誤り(不一致)であれば、検査情報付きレスポンスHTML910中における行数、桁数、何番目の出力項目701が期待値と異なるかなどといった位置情報を内部に記憶しておく。
検査エンジン533は、検査情報に検査条件が含まれている場合には、出力項目701の検査の実行に際し、当該検査条件を考慮する。たとえば、含まれている検査条件が「unchecked」である場合は、検査処理を実行しない。
また、含まれている検査条件が「exists」である場合、出力項目701として何らかの文字列が存在する/しないことだけを検査する。文字列の詳細については、検査は実行しない。また、含まれている検査条件が「format」である場合、出力項目701として文字列のフォーマット情報のみを検査する。たとえば、出力項目701について3桁後のカンマの存在の有無や小数桁数などを検査する。
また、含まれている検査条件が「range」である場合、出力項目701としての文字列があらわす数値の範囲を検査する。たとえば、負の数は誤りであるなどを検査する。また、含まれている検査条件が「length」である場合、出力項目701の文字列長の範囲を検査する。
このように、出力項目701には、伝票番号のように、実行するごとに結果が異なるものが存在する。実施例では、仕様書DB105としてすべての出力項目701に対して期待値を記述することを要求するが、これらの毎回変化する出力項目701の期待値は記述できない問題がある。
したがって、このような検査条件により、毎回変化する不定値に対して、検査を行わないようにすることを明示的に記述することが可能となる。また、値の存在検査、フォーマット検査、範囲検査を提供することで、不定値に対しても最低限の検査を実行できるため、より高品質なテストが可能となる。
つぎに、プロキシサーバ103は、再構成処理を実行する(ステップS1409)。具体的には、プロキシエンジン531はメタ情報付きレスポンスHTML920中のメタ情報のHTMLコメント921に替えて、検査情報のHTMLコメント911を挿入する。また、フレーム情報も追加する。フレーム情報は、画面を上下に分割するフレームをあらわす。
上フレームに表示される情報として、検査結果514(合否結果と、不合格時には不合格の出力項目701の位置情報)が付加される。また、下フレームに表示される情報として、検査情報のHTMLコメント911が挿入された検査情報付きレスポンスHTML910がそのまま付加される。プロキシサーバ103は、このように再構成された検査情報付きレスポンスHTML910をクライアント101に送信する。
このあと、クライアント101は、プロキシサーバ103から送信されてくる再構成後の検査情報付きレスポンスHTML910を受信することにより、Webアプリケーション521の検査結果および実行結果表示処理を実行する(ステップS1410)。
このように、メタ情報付きレスポンスHTML920を解析し自動検査した結果をテスト実施者に通知するプロセスでも、実施の形態1と同様の効果を得ることができる。また、実施の形態2では、レスポンスの中に障害検出箇所のタグの詳細を取得できるため、より詳細な障害情報をテスト実行者に通知することができる。また、アスペクト内で通信を行う必要がなくなることで、Webアプリケーション521の動作が簡素化し、動作が安定するとともに高速化を実現することができる。
このように、実施の形態2によれば、Webアプリケーション521の検査処理の効率化と検査結果514の確認作業の容易化とを同時に実現することにより、検査の信頼性の向上を図ることができる。
[その他の変形例]
以下、上述した実施の形態1および実施の形態2の変形例について説明する。実施の形態1および実施の形態2では、検査エンジン533をWebサーバ102外のサーバ(たとえば、プロキシサーバ103)に実装させていたが、検査エンジン533をWebサーバ102に実装することとしてもよい。
たとえば、Servletにおけるフィルタ機能を利用し、APサーバ525が送出するHTMLデータを監視したり、ApacheモジュールなどによりWebサーバ102の拡張機能を利用し、Webサーバ102が送出するHTMLデータを監視することにより実現化可能である。この場合、検査処理用のサーバをあらたに導入する必要がないため、サーバの導入台数の低減化を図ることができるとともに、検査工程も簡略化することができる。
また、Webブラウザ511とともに検査エンジン533が実装された専用ブラウザをクライアント101に実装することとしてもよい。この場合、検査結果514の通知方法を柔軟にカスタマイズすることが可能となる。たとえば、ブラウザ画面とは別に検査結果通知画面を持たせることができ、テスト実施者に対するユーザインターフェースの改善を図ることができる。
また、検査エンジン533をクライアント101内のWebブラウザ511に実装することとしてもよい。たとえば、Webブラウザ511にプラグイン機能を実装することで、Webブラウザ511のような汎用ブラウザを用いて検査処理を実行することができる。
この場合も、検査結果514の通知方法を柔軟にカスタマイズすることが可能となる。たとえば、ブラウザ画面とは別に検査結果通知画面を持たせることができ、テスト実施者に対するユーザインターフェースの改善を図ることができる。また、専用ブラウザとした場合に比べ、検査エンジン533の開発を容易におこなうことができる。
また、クライアント101に検査エンジン533を汎用ブラウザ(Webブラウザ511内)に実装した場合、検査エンジン533は、汎用ブラウザの出力ファイルやキャッシュファイルを検査する構成としてもよい。汎用ブラウザは受信されたレスポンスHTML700をファイルとして出力する機能を持たせる。これにより、検査エンジン533の開発が容易で、どのようなブラウザでも適用することができる。
また、実施の形態1および実施の形態2では、運用実行環境と検査実行環境を分離するために、検査情報取得エンジン522やメタ情報挿入エンジン528が出力するアスペクト付きJAVAクラスファイル905,915を、JAVAコンパイラ524が出力する画面クラスファイル904と置き換える方法を取ったが、他に以下1)〜3)のような方法が可能である。
1)JAVA仮想マシンによる動的アスペクト織り込み処理を利用する方法。
2)JAVAクラスローダへの拡張をおこなう方法。
3)常にアスペクト付きJAVAクラスファイル905,915を利用し、アスペクト内で外部の定義ファイルなどを読み出し、検査情報やメタ情報を挿入するか否かを決定する方法。
以上説明したように、本発明にかかるWebアプリケーション検査プログラム、該プログラムを記録した記録媒体、Webアプリケーション検査装置、およびWebアプリケーション検査方法によれば、Webアプリケーションの検査処理の効率化と検査結果の確認作業の容易化とを同時に実現することにより、検査の信頼性の向上を図ることができる。
なお、本実施の形態で説明したWebアプリケーション検査方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
(付記1)WebサーバにインストールされているWebアプリケーションに与える入力値を含むリクエストを受け付けさせる受付工程と、
前記受付工程によって受け付けられたリクエストに含まれている前記入力値を与えて前記Webアプリケーションを実行させる実行工程と、
前記実行工程によって実行することにより得られた出力項目の検査に用いられる検査情報を取得させる取得工程と、
前記取得工程によって取得された検査情報を前記出力項目に関連付けて埋め込むことにより、前記リクエストに対するレスポンスを生成させる生成工程と、
前記生成工程によって生成されたレスポンスを、前記出力項目の検査を実行するコンピュータ装置に送信させる送信工程と、
をコンピュータに実行させることを特徴とするWebアプリケーション検査プログラム。
(付記2)前記取得工程は、
前記出力項目が固定値である場合、前記検査情報として、前記Webアプリケーションの仕様書に記述された期待値を取得させることを特徴とする付記1に記載のWebアプリケーション検査プログラム。
(付記3)前記取得工程は、
前記出力項目が不定値である場合、前記検査情報として、前記出力項目が満たすべき検査条件を取得させることを特徴とする付記1に記載のWebアプリケーション検査プログラム。
(付記4)前記検査条件は、
前記出力項目の検査を実行しないことを意味する情報であることを特徴とする付記3に記載のWebアプリケーション検査プログラム。
(付記5)前記検査条件は、
前記出力項目の存在の是非に関する情報であることを特徴とする付記3に記載のWebアプリケーション検査プログラム。
(付記6)前記検査条件は、
前記出力項目のフォーマットに関する制限情報であることを特徴とする付記3に記載のWebアプリケーション検査プログラム。
(付記7)前記検査条件は、
前記出力項目が数値である場合、当該数値の数値範囲に関する制限情報であることを特徴とする付記3に記載のWebアプリケーション検査プログラム。
(付記8)前記検査条件は、
前記出力項目が文字列である場合、当該文字列の文字列長に関する制限情報であることを特徴とする付記3に記載のWebアプリケーション検査プログラム。
(付記9)WebサーバにインストールされているWebアプリケーションがリクエストに応じて実行された場合、その実行により得られる出力項目に当該出力項目の検査に用いられる検査情報を関連付けた前記リクエストに対するレスポンスを受信させる受信工程と、
前記受信工程によって受信されたレスポンス内の前記検査情報に基づいて、前記レスポンス内の前記出力項目を検査させる検査工程と、
前記検査工程によって検査された検査結果を前記出力項目に関連付けて出力させる出力工程と、
をコンピュータに実行させることを特徴とするWebアプリケーション検査プログラム。
(付記10)前記検査工程は、
前記検査情報が、前記Webアプリケーションの仕様書に記述された期待値である場合、前記出力項目と前記期待値とが一致するか否かを判断させ、
前記出力工程は、
一致した場合には合格であることを示すメッセージを、不一致である場合には不合格であることを示すメッセージを、前記検査結果として出力させることを特徴とする付記9に記載のWebアプリケーション検査プログラム。
(付記11)前記検査工程は、
前記検査情報が、前記Webアプリケーションの仕様書に記述された前記出力項目が満たすべき検査条件である場合、前記出力項目を示す出力値が前記検査条件を遵守しているか否かを判断させ、
前記出力工程は、
前記検査条件を遵守している場合には合格であることを示すメッセージを、違反している場合には不合格であることを示すメッセージを、前記検査結果として出力させることを特徴とする付記9に記載のWebアプリケーション検査プログラム。
(付記12)前記出力工程は、
前記検査結果に前記出力項目を関連付けて表示画面に表示させることを特徴とする付記9〜11のいずれか一つに記載のWebアプリケーション検査プログラム。
(付記13)前記レスポンスを、前記検査結果に前記出力項目を関連付けたレスポンスに再構成させる再構成工程を前記コンピュータに実行させ、
前記出力工程は、
前記再構成工程によって再構成されたレスポンスを前記リクエストの送信元となるコンピュータ装置に送信させることを特徴とする付記9〜11のいずれか一つに記載のWebアプリケーション検査プログラム。
(付記14)WebサーバにインストールされているWebアプリケーションに与える入力値を含むリクエストを受け付けさせる受付工程と、
前記受付工程によって受け付けられたリクエストに含まれている前記入力値を与えて前記Webアプリケーションを実行させる実行工程と、
前記実行工程による前記Webアプリケーションの実行内容に関するメタ情報を特定させる特定工程と、
前記実行工程によって実行することにより得られた出力項目に、前記特定工程によって特定されたメタ情報を関連付けて埋め込むことにより、前記リクエストに対するレスポンスを生成させる生成工程と、
前記生成工程によって生成されたレスポンスを、前記出力項目の検査を実行するコンピュータ装置に送信させる送信工程と、
コンピュータに実行させることを特徴とするWebアプリケーション検査プログラム。
(付記15)WebサーバにインストールされているWebアプリケーションがリクエストに応じて実行された場合、その実行により得られる出力項目に前記Webアプリケーションの実行内容に関するメタ情報を関連付けた前記リクエストに対するレスポンスを受信させる受信工程と、
前記Webアプリケーションの実行内容ごとのメタ情報に関連付けられている検査情報の集合の中から、前記受信工程によって受信されたレスポンス内のメタ情報に関連付けられている検査情報を取得させる取得工程と、
前記取得工程によって取得された検査情報に基づいて、前記レスポンス内の前記出力項目を検査させる検査工程と、
前記検査工程によって検査された検査結果を前記出力項目に関連付けて出力させる出力工程と、
をコンピュータに実行させることを特徴とするWebアプリケーション検査プログラム。
(付記16)前記取得工程は、
前記出力項目が固定値である場合、前記検査情報として、前記Webアプリケーションの仕様書に記述された期待値を取得させることを特徴とする付記15に記載のWebアプリケーション検査プログラム。
(付記17)前記取得工程は、
前記出力項目が不定値である場合、前記検査情報として、前記出力項目が満たすべき検査条件を取得させることを特徴とする付記15に記載のWebアプリケーション検査プログラム。
(付記18)前記検査条件は、
前記出力項目の検査を実行しないことを意味する情報であることを特徴とする付記17に記載のWebアプリケーション検査プログラム。
(付記19)前記検査条件は、
前記出力項目の存在の是非に関する情報であることを特徴とする付記17に記載のWebアプリケーション検査プログラム。
(付記20)前記検査条件は、
前記出力項目のフォーマットに関する制限情報であることを特徴とする付記17に記載のWebアプリケーション検査プログラム。
(付記21)前記検査条件は、
前記出力項目が数値である場合、当該数値の数値範囲に関する制限情報であることを特徴とする付記17に記載のWebアプリケーション検査プログラム。
(付記22)前記検査条件は、
前記出力項目が文字列である場合、当該文字列の文字列長に関する制限情報であることを特徴とする付記17に記載のWebアプリケーション検査プログラム。
(付記23)前記検査工程は、
前記検査情報が、前記Webアプリケーションの仕様書に記述された期待値である場合、前記出力項目と前記期待値とが一致するか否かを判断させ、
前記出力工程は、
一致した場合には合格であることを示すメッセージを、不一致である場合には不合格であることを示すメッセージを、前記検査結果として出力させることを特徴とする付記16に記載のWebアプリケーション検査プログラム。
(付記24)前記検査工程は、
前記検査情報が、前記Webアプリケーションの仕様書に記述された前記出力項目が満たすべき検査条件である場合、前記出力項目が前記検査条件を遵守しているか否かを判断させ、
前記出力工程は、
前記検査条件を遵守している場合には合格であることを示すメッセージを、違反している場合には不合格であることを示すメッセージを、前記検査結果として出力させることを特徴とする付記17〜22のいずれか一つに記載のWebアプリケーション検査プログラム。
(付記25)前記出力工程は、
前記検査結果を前記出力項目に関連付けて表示画面に表示させることを特徴とする付記15〜24のいずれか一つに記載のWebアプリケーション検査プログラム。
(付記26)前記出力工程は、
前記メタ情報の替わりに前記検査情報を前記出力項目に関連付けて表示画面に表示させることを特徴とする付記15〜25のいずれか一つに記載のWebアプリケーション検査プログラム。
(付記27)前記レスポンスを、前記検査結果を前記出力項目に関連付けたレスポンスに再構成させる再構成工程を前記コンピュータに実行させ、
前記出力工程は、
前記再構成工程によって再構成されたレスポンスを前記リクエストの送信元となるコンピュータ装置に送信させることを特徴とする付記15〜24のいずれか一つに記載のWebアプリケーション検査プログラム。
(付記28)前記再構成工程は、
前記レスポンスを、前記メタ情報の替わりに前記検査情報を前記出力項目に関連付けたレスポンスに再構成させ、
前記出力工程は、
前記再構成工程によって再構成されたレスポンスを前記リクエストの送信元となるコンピュータ装置に送信させることを特徴とする付記15〜24のいずれか一つに記載のWebアプリケーション検査プログラム。
(付記29)付記1〜28のいずれか一つに記載のWebアプリケーション検査プログラムを記録した前記コンピュータに読み取り可能な記録媒体。
(付記30)WebサーバにインストールされているWebアプリケーションに与える入力値を含むリクエストを受け付ける受付手段と、
前記受付手段によって受け付けられたリクエストに含まれている前記入力値を与えて前記Webアプリケーションを実行する実行手段と、
前記実行手段によって実行することにより得られた出力項目の検査に用いられる検査情報を取得する取得手段と、
前記取得手段によって取得された検査情報を前記出力項目に関連付けて埋め込むことにより、前記リクエストに対するレスポンスを生成する生成手段と、
前記生成手段によって生成されたレスポンスを、前記出力項目の検査を実行するコンピュータ装置に送信する送信手段と、
を備えることを特徴とするWebアプリケーション検査装置。
(付記31)WebサーバにインストールされているWebアプリケーションがリクエストに応じて実行された場合、その実行により得られる出力項目に当該出力項目の検査に用いられる検査情報を関連付けた前記リクエストに対するレスポンスを受信する受信手段と、
前記受信手段によって受信されたレスポンス内の前記検査情報に基づいて、前記レスポンス内の前記出力項目を検査する検査手段と、
前記検査手段によって検査された検査結果を前記出力項目に関連付けて出力する出力手段と、
を備えることを特徴とするWebアプリケーション検査装置。
(付記32)WebサーバにインストールされているWebアプリケーションに与える入力値を含むリクエストを受け付ける受付手段と、
前記受付手段によって受け付けられたリクエストに含まれている前記入力値を与えて前記Webアプリケーションを実行する実行手段と、
前記実行手段による前記Webアプリケーションの実行内容に関するメタ情報を特定する特定手段と、
前記実行手段によって実行することにより得られた出力項目に、前記特定手段によって特定されたメタ情報を関連付けて埋め込むことにより、前記リクエストに対するレスポンスを生成する生成手段と、
前記生成手段によって生成されたレスポンスを、前記出力項目の検査を実行するコンピュータ装置に送信する送信手段と、
を備えることを特徴とするWebアプリケーション検査装置。
(付記33)WebサーバにインストールされているWebアプリケーションがリクエストに応じて実行された場合、その実行により得られる出力項目に前記Webアプリケーションの実行内容に関するメタ情報を関連付けた前記リクエストに対するレスポンスを受信する受信手段と、
前記Webアプリケーションの実行内容ごとのメタ情報に関連付けられている検査情報の集合の中から、前記受信手段によって受信されたレスポンス内のメタ情報に関連付けられている検査情報を取得する取得手段と、
前記取得手段によって取得された検査情報に基づいて、前記レスポンス内の前記出力項目を検査する検査手段と、
前記検査手段によって検査された検査結果を前記出力項目に関連付けて出力する出力手段と、
を備えることを特徴とするWebアプリケーション検査装置。
(付記34)WebサーバにインストールされているWebアプリケーションに与える入力値を含むリクエストを受け付ける受付工程と、
前記受付工程によって受け付けられたリクエストに含まれている前記入力値を与えて前記Webアプリケーションを実行する実行工程と、
前記実行工程によって実行することにより得られた出力項目の検査に用いられる検査情報を取得する取得工程と、
前記取得工程によって取得された検査情報を前記出力項目に関連付けて埋め込むことにより、前記リクエストに対するレスポンスを生成する生成工程と、
前記生成工程によって生成されたレスポンスを、前記出力項目の検査を実行するコンピュータ装置に送信する送信工程と、
を含んだことを特徴とするWebアプリケーション検査方法。
(付記35)WebサーバにインストールされているWebアプリケーションがリクエストに応じて実行された場合、その実行により得られる出力項目に当該出力項目の検査に用いられる検査情報を関連付けた前記リクエストに対するレスポンスを受信する受信工程と、
前記受信工程によって受信されたレスポンス内の前記検査情報に基づいて、前記レスポンス内の前記出力項目を検査する検査工程と、
前記検査工程によって検査された検査結果を前記出力項目に関連付けて出力する出力工程と、
を含んだことを特徴とするWebアプリケーション検査方法。
(付記36)WebサーバにインストールされているWebアプリケーションに与える入力値を含むリクエストを受け付ける受付工程と、
前記受付工程によって受け付けられたリクエストに含まれている前記入力値を与えて前記Webアプリケーションを実行する実行工程と、
前記実行工程による前記Webアプリケーションの実行内容に関するメタ情報を特定する特定工程と、
前記実行工程によって実行することにより得られた出力項目に、前記特定工程によって特定されたメタ情報を関連付けて埋め込むことにより、前記リクエストに対するレスポンスを生成する生成工程と、
前記生成工程によって生成されたレスポンスを、前記出力項目の検査を実行するコンピュータ装置に送信する送信工程と、
を含んだことを特徴とするWebアプリケーション検査方法。
(付記37)WebサーバにインストールされているWebアプリケーションがリクエストに応じて実行された場合、その実行により得られる出力項目に前記Webアプリケーションの実行内容に関するメタ情報を関連付けた前記リクエストに対するレスポンスを受信する受信工程と、
前記Webアプリケーションの実行内容ごとのメタ情報に関連付けられている検査情報の集合の中から、前記受信工程によって受信されたレスポンス内のメタ情報に関連付けられている検査情報を取得する取得工程と、
前記取得工程によって取得された検査情報に基づいて、前記レスポンス内の前記出力項目を検査する検査工程と、
前記検査工程によって検査された検査結果を前記出力項目に関連付けて出力する出力工程と、
を含んだことを特徴とするWebアプリケーション検査方法。
以上のように、本発明にかかるWebアプリケーション検査プログラム、該プログラムを記録した記録媒体、Webアプリケーション検査装置、およびWebアプリケーション検査方法は、Webアプリケーション開発時におけるテスト工程に有用である。
この発明の実施の形態にかかるWebアプリケーション検査システムの概略構成を示す説明図である。 図1に示したコンピュータ装置のハードウェア構成を示すブロック図である。 この発明の実施の形態にかかる仕様書DBの記憶内容を示す説明図である。 この発明の実施の形態にかかるWebアプリケーション検査システムの機能的構成を示すブロック図である。 図1に示した各コンピュータ装置の実施の形態1における内部構成を示すブロック図である。 実施の形態1にかかるWebサーバの運用時の実行処理を示すシーケンス図である。 実施の形態1にかかるWebサーバの運用時の実行処理内容を示す説明図である。 実施の形態1にかかるWebサーバの検査時の実行処理を示すシーケンス図である。 実施の形態1にかかるWebサーバの検査時の実行処理内容を示す説明図(その1)である。 実施の形態1にかかるWebサーバの検査時の実行処理内容を示す説明図(その2)である。 実施の形態1にかかるWebアプリケーションの実行結果を示す説明図である。 ステップS810におけるWebブラウザの画面表示例を示す説明図である。 図1に示した各コンピュータ装置の実施の形態2における内部構成を示すブロック図である。 実施の形態2にかかるWebサーバの検査時の実行処理を示すシーケンス図である。 実施の形態2にかかるWebサーバの検査時の実行処理内容を示す説明図(その1)である。 実施の形態2にかかるWebサーバの検査時の実行処理内容を示す説明図(その2)である。 実施の形態2にかかるWebアプリケーションの実行結果を示す説明図である。
符号の説明
100 Webアプリケーション検査システム
101 クライアント
102 Webサーバ
103 プロキシサーバ
104 管理サーバ
400,410 コンピュータ装置
401 受付部
402 実行部
403 特定部
404 取得部
405 生成部
406 送信部
411 受信部
412 取得部
413 検査部
414 再構成部
415 出力部

Claims (6)

  1. コンピュータに、
    Webアプリケーションに与える入力値を含むリクエストを受け付け、
    受け付けた前記リクエストに含まれる前記入力値を与えて前記Webアプリケーションを実行し、
    1以上の検査情報を記憶する記憶手段から、前記Webアプリケーションを実行することにより得られた出力項目の検査に用いる検査情報を取得し、
    取得した前記検査情報を前記出力項目に関連付けた、前記リクエストに対するレスポンスを生成し、
    生成した前記レスポンスを、前記出力項目の検査を実行する装置に送信する、
    処理を実行させることを特徴とする生成プログラム。
  2. コンピュータに、
    前記コンピュータからのリクエストに応じてWebアプリケーションを実行する装置から、前記Webアプリケーションの実行により得られる出力項目に当該出力項目の検査に用いる検査情報を関連付けた前記リクエストに対するレスポンスを受信し、
    受信した前記レスポンスから前記検査情報と前記出力項目とを抽出して記憶装置に記憶し、前記検査情報に基づいて前記出力項目を検査して、検査結果を前記記憶装置に記憶し、
    前記検査結果を前記出力項目に関連付けて出力する、
    処理を実行させることを特徴とする検査プログラム。
  3. コンピュータに、
    Webアプリケーションに与える入力値を含むリクエストを受け付け、
    受け付けた前記リクエストに含まれる前記入力値を与えて前記Webアプリケーションを実行し、前記Webアプリケーションを実行することにより得られた出力項目を記憶装置に記憶し、
    前記Webアプリケーションの実行内容に関するメタ情報を特定して前記記憶装置に記憶し、
    前記出力項目に、特定した前記メタ情報を関連付けた、前記リクエストに対するレスポンスを生成して、前記記憶装置に記憶し、
    生成した前記レスポンスを、前記出力項目の検査を実行する装置に送信する、
    処理を実行させることを特徴とする生成プログラム。
  4. コンピュータに、
    Webアプリケーションがリクエストに応じて実行された場合、その実行により得られる出力項目に前記Webアプリケーションの実行内容に関するメタ情報を関連付けた前記リクエストに対するレスポンスを受信し、
    前記Webアプリケーションの各実行内容のメタ情報に関連付けられている1以上の検査情報を記憶する記憶手段から、受信した前記レスポンス内のメタ情報に関連付けられている検査情報を取得し、
    受信した前記レスポンスから前記検査情報と前記出力項目とを抽出して記憶装置に記憶し、前記検査情報に基づいて前記出力項目を検査して、検査結果を前記記憶装置に記憶し、
    前記検査結果を前記出力項目に関連付けて出力する、
    処理を実行させることを特徴とする検査プログラム。
  5. Webアプリケーションに与える入力値を含むリクエストを受け付ける受付手段と、
    前記受付手段によって受け付けられたリクエストに含まれる前記入力値を与えて前記Webアプリケーションを実行する実行手段と、
    前記実行手段によって実行することにより得られた出力項目の検査に用いる検査情報を取得する取得手段と、
    前記取得手段によって取得された検査情報を前記出力項目に関連付けた、前記リクエストに対するレスポンスを生成する生成手段と、
    前記生成手段によって生成されたレスポンスを、前記出力項目の検査を実行する装置に送信する送信手段と、
    を備えることを特徴とする生成装置。
  6. コンピュータが、
    Webアプリケーションに与える入力値を含むリクエストを受け付け、
    受け付けた前記リクエストに含まれる前記入力値を与えて前記Webアプリケーションを実行し、
    1以上の検査情報を記憶する記憶手段から、前記Webアプリケーションを実行することにより得られた出力項目の検査に用いる検査情報を取得し、
    取得した前記検査情報を前記出力項目に関連付けて埋め込むことにより、前記リクエストに対するレスポンスを生成し、
    生成した前記レスポンスを、前記出力項目の検査を実行する装置に送信する、
    ことを特徴とする生成方法。
JP2006294502A 2006-10-30 2006-10-30 生成プログラム、検査プログラム、生成装置、および生成方法 Expired - Fee Related JP4961949B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006294502A JP4961949B2 (ja) 2006-10-30 2006-10-30 生成プログラム、検査プログラム、生成装置、および生成方法
US11/799,024 US7664990B2 (en) 2006-10-30 2007-04-30 Method and apparatus for testing web application, and computer product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006294502A JP4961949B2 (ja) 2006-10-30 2006-10-30 生成プログラム、検査プログラム、生成装置、および生成方法

Publications (2)

Publication Number Publication Date
JP2008112300A JP2008112300A (ja) 2008-05-15
JP4961949B2 true JP4961949B2 (ja) 2012-06-27

Family

ID=39361046

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006294502A Expired - Fee Related JP4961949B2 (ja) 2006-10-30 2006-10-30 生成プログラム、検査プログラム、生成装置、および生成方法

Country Status (2)

Country Link
US (1) US7664990B2 (ja)
JP (1) JP4961949B2 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4961949B2 (ja) * 2006-10-30 2012-06-27 富士通株式会社 生成プログラム、検査プログラム、生成装置、および生成方法
JP2008171281A (ja) * 2007-01-12 2008-07-24 Fujitsu Ltd 表示画面構成装置
CN101398779A (zh) * 2007-09-26 2009-04-01 国际商业机器公司 测试逻辑与服务器端对象的松耦合式测试方法和***
US8209666B1 (en) * 2007-10-10 2012-06-26 United Services Automobile Association (Usaa) Systems and methods for testing interfaces and applications
US8346891B2 (en) * 2007-10-19 2013-01-01 Kubisys Inc. Managing entities in virtual computing environments
US8914774B1 (en) 2007-11-15 2014-12-16 Appcelerator, Inc. System and method for tagging code to determine where the code runs
US8954989B1 (en) 2007-11-19 2015-02-10 Appcelerator, Inc. Flexible, event-driven JavaScript server architecture
US8566807B1 (en) 2007-11-23 2013-10-22 Appcelerator, Inc. System and method for accessibility of document object model and JavaScript by other platforms
US8719451B1 (en) 2007-11-23 2014-05-06 Appcelerator, Inc. System and method for on-the-fly, post-processing document object model manipulation
US8756579B1 (en) 2007-12-03 2014-06-17 Appcelerator, Inc. Client-side and server-side unified validation
US8806431B1 (en) * 2007-12-03 2014-08-12 Appecelerator, Inc. Aspect oriented programming
US8527860B1 (en) 2007-12-04 2013-09-03 Appcelerator, Inc. System and method for exposing the dynamic web server-side
JP5200719B2 (ja) * 2008-07-15 2013-06-05 富士通株式会社 Webアプリケーション検査プログラム、テスト実行装置、およびテスト実行方法
JP5151757B2 (ja) * 2008-07-18 2013-02-27 富士通株式会社 検査品質分析支援プログラム、方法及び装置
JP2010039782A (ja) * 2008-08-05 2010-02-18 Fujitsu Fip Corp 情報処理装置、プログラム、記録媒体
US7596620B1 (en) 2008-11-04 2009-09-29 Aptana, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8341603B2 (en) * 2008-10-03 2012-12-25 Microsoft Corporation Test case management controller web access
WO2011054024A1 (en) * 2009-11-06 2011-05-12 Toby Biddle A usability testing tool
US8966446B1 (en) * 2010-09-29 2015-02-24 A9.Com, Inc. Systems and methods of live experimentation on content provided by a web site
CN102479155B (zh) * 2010-11-30 2014-07-02 国际商业机器公司 用于网络应用服务器***的内存过载管理的方法和***
US8572505B2 (en) * 2011-01-31 2013-10-29 Oracle International Corporation Automatically testing a web application that has independent display trees
US10048854B2 (en) 2011-01-31 2018-08-14 Oracle International Corporation Drag and drop interaction between components of a web application
US9942124B2 (en) * 2011-06-28 2018-04-10 Time Warner Cable Enterprises Llc Apparatus and methods for automated device testing in content distribution network
US9053319B2 (en) * 2011-09-29 2015-06-09 Hewlett-Packard Development Company, L.P. Context-sensitive taint processing for application security
US10169213B2 (en) * 2011-11-29 2019-01-01 Red Hat, Inc. Processing of an application and a corresponding test file in a content repository
US8850274B2 (en) * 2012-02-01 2014-09-30 Empirix, Inc. Method of embedding configuration data in a non-configuration document
US9118599B2 (en) * 2012-04-13 2015-08-25 Verizon Patent And Licensing Inc. Network testing using a control server
US9146841B2 (en) * 2013-03-15 2015-09-29 Vmware, Inc. Proxy server assisted product testing
US9135152B2 (en) 2013-05-29 2015-09-15 International Business Machines Corporation Optimizing test data payload selection for testing computer software applications via computer networks
JP2015011396A (ja) * 2013-06-26 2015-01-19 株式会社エクサ リグレッションテスト支援システム
US9323649B2 (en) * 2013-09-30 2016-04-26 International Business Machines Corporation Detecting error states when interacting with web applications
US9811248B1 (en) 2014-07-22 2017-11-07 Allstate Institute Company Webpage testing tool
GB2539262A (en) * 2015-06-12 2016-12-14 Micro Focus Ip Dev Ltd Testing interactive network systems
US10534698B2 (en) 2017-08-24 2020-01-14 Salesforce.Com, Inc. Stateless self-sufficient test agents
US11921862B2 (en) * 2020-02-07 2024-03-05 Jpmorgan Chase Bank , N.A. Systems and methods for rules-based automated penetration testing to certify release candidates
US11301367B2 (en) * 2020-03-02 2022-04-12 BugPoC, LLC Automated fix verification and regression testing method derived from proof-of-concepts
JP7101750B2 (ja) * 2020-12-21 2022-07-15 三菱電機株式会社 試験支援装置、試験支援方法及び試験支援プログラム
US11995146B1 (en) * 2023-08-22 2024-05-28 Nice Ltd. System and method for displaying real-time code of embedded code in a browser-window of a software application

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128759A (en) * 1998-03-20 2000-10-03 Teradyne, Inc. Flexible test environment for automatic test equipment
US6434513B1 (en) * 1998-11-25 2002-08-13 Radview Software, Ltd. Method of load testing web applications based on performance goal
US6925461B2 (en) * 2001-12-17 2005-08-02 At&T Corp. Parallel random proxy usage for large scale web access
US7444548B2 (en) * 2003-10-17 2008-10-28 Oracle International Corporation Methods and systems for automatically testing websites and web applications using knowledge bases of standard inputs and standard errors
WO2006072977A1 (ja) * 2005-01-05 2006-07-13 Fujitsu Limited Webサーバ、Webアプリケーションテスト方法、Webアプリケーションテストプログラム
US20070277154A1 (en) * 2006-05-23 2007-11-29 Microsoft Corporation Testing distributed components
JP4148527B2 (ja) * 2006-06-05 2008-09-10 インターナショナル・ビジネス・マシーンズ・コーポレーション 機能テスト・スクリプト生成装置
JP4961949B2 (ja) * 2006-10-30 2012-06-27 富士通株式会社 生成プログラム、検査プログラム、生成装置、および生成方法
JP4899971B2 (ja) * 2007-03-27 2012-03-21 富士通株式会社 テスト仕様書作成プログラム、テスト仕様書作成装置、およびテスト仕様書作成方法
US8302080B2 (en) * 2007-11-08 2012-10-30 Ntt Docomo, Inc. Automated test input generation for web applications

Also Published As

Publication number Publication date
JP2008112300A (ja) 2008-05-15
US20080109680A1 (en) 2008-05-08
US7664990B2 (en) 2010-02-16

Similar Documents

Publication Publication Date Title
JP4961949B2 (ja) 生成プログラム、検査プログラム、生成装置、および生成方法
JP4899971B2 (ja) テスト仕様書作成プログラム、テスト仕様書作成装置、およびテスト仕様書作成方法
US20200372213A1 (en) Systems and methods for diagnosing problems from error logs using natural language processing
US7895470B2 (en) Collecting and representing knowledge
US7793262B2 (en) Method and apparatus for facilitating software testing and report generation with interactive graphical user interface
KR100692172B1 (ko) 종합 문자열 분석기 및 그 분석 방법
JP4023803B2 (ja) ウェブアプリケーション開発支援装置、データ処理方法及びプログラム
WO2009097384A1 (en) Methods and apparatus for implementing multilingual software applications
WO2011080062A1 (en) Analyzing objects from a graphical interface for standards verification
Lenhard et al. Exploring the suitability of source code metrics for indicating architectural inconsistencies
CN101751281A (zh) 编译器生成***和方法
IL226027A (en) Two-way text checker and method
JP6486574B2 (ja) プログラムコード生成装置、プログラムコード生成方法及びプログラムコード生成プログラム
Holzmann et al. Design tools for requirements engineering
US8510714B2 (en) Implementing integrated documentation and application testing
Zhang et al. Studying logging practice in test code
KR101014684B1 (ko) 테스트 결과 로그를 이용한 프로그램 테스트 결과 분석방법 및 시스템과 이를 위한 프로그램 기록매체
JP5067317B2 (ja) 検証支援プログラム、検証支援装置、および検証支援方法
US20240202333A1 (en) Method and apparatus for disarming ole object in ms-ooxml
CN115599683A (zh) 自动化测试方法、装置、设备及存储介质
CN115292187A (zh) 无编码的页面自动测试方法、装置、电子设备和介质
Huang et al. A tool to support automated testing for web application scenario
US20050235266A1 (en) System and method for business rule identification and classification
KR101014679B1 (ko) 시나리오를 이용한 프로그램 소스코드 테스트 시스템
CN111611173A (zh) 一种应用于微服务工程接口文档检测的***和方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090710

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110920

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111213

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120213

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120312

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

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees