(第1の実施の形態)
まず、第1の実施の形態のテスト実行装置について、その主な特徴を説明する。
(特徴1)
図1の(a)で示すように、開発責任者が異なる複数の工程が連なって業務フローを形成する情報システムの総合テストにおいては、1つのテストケース(例えば特定の業務イベントデータ)を複数の工程に跨って消化することが一般的であった。言い換えれば、複数の開発責任者の責任範囲に跨る業務フロー全体を単位としたテストを実施し、そのテスト結果にもとづいて情報システムの正常性を判断し、例えば仕様通りの挙動か否かを判断することが一般的であった。
しかし、現実のシステム開発の中で、図1の(a)に示す方式では、各工程のどの機能をテストすればよいか、工程毎のテスト対象とする機能の組み合わせをどうするか、等のテスト実行範囲が不明確になるという問題点があった。また、テストを実行した結果として取得した証跡のうち、どの証跡がどの工程のテストの証跡かが不明瞭になるという問題点もあった。証跡は、情報システムのテストの結果、生成されたデータを含み、例えばデータベースやログに記録されたデータを含む。この結果、開発責任者毎の証跡の分割に手間がかかり、また、障害の発生原因の切り分けが容易でなく、障害対応に時間を要することもあった。
このような問題認識を踏まえ、本発明者は、開発責任者が異なる複数の工程が連なって業務フローを形成する情報システムの総合テストにおける好適な方式として図1の(b)に示す方式へ標準化することに想到した。実施の形態のテスト実行装置によるテストでは、1つのテストケースに対するテストシナリオを開発責任者の単位で作成し、言い換えれば、1単位の開発責任者の責任範囲である工程毎に作成する。そして、工程毎のテストシナリオにしたがって複数の工程に亘り業務イベントを処理させていき、情報システムのテストを自動実行する。テストでエラーが発生した場合は、そのエラーが発生した工程のテストシナリオの情報を記録する。テストシナリオは、例えば、テストケースのIDやテスト対象の機能、入力データ等を定めたものである。
このように、複数の機能を有するテスト対象の情報システムについて、開発責任者を単位としてテストシナリオを用意することにより、誰が作ったテストシナリオでエラーが発生したかが明確になり、エラー対応における責任分解点が明確になる。例えば、開発責任者が異なる複数の工程が連なって業務フローを形成するシステムについて、総合テストにおけるエラー発生箇所に対する責任者(例えばエラーの解析・改修の責任が存在するチーム)の特定が容易になり、障害対応の効率化を支援できる。なお実施の形態の開発責任者は、複数人からなる開発チームや企業を含む。また、実施の形態の業務イベントは、情報システムで処理すべき1単位の事柄(注文、購入等)を示す。
(特徴2)
現実の情報システムではセキュリティ基準の遵守が要求されることが多く、総合テストの際にもこのセキュリティ基準を遵守する必要がある。実施の形態のセキュリティ基準は、クライアント装置はファイアウォールを経由してサーバへアクセスすべきことを定める。また、ファイアウォールは、ユーザ単位・ポート番号単位で認証を実行し、ユーザのログイン時間やユーザが発行したコマンドをログに残すことを定める。
これまでのテスト実行装置では、以下の2つの方法による証跡取得が可能であった。図2に示す従来方法1は、テスト実行装置がサーバに直接アクセスし、サーバからテストの証跡を取得する。この方法では、ファイアウォールを経由しないため、誰が何のコマンドを発行したかが記録されない。したがって、テストの証跡を高速に取得できるもののセキュリティ基準を満たさない。
また図2に示す従来方法2は、テスト実行装置がサーバ接続ツール(例えばサードパーティが提供する無償ソフトウェア)と連動し、証跡の内容を標準出力へ表示し、表示内容をファイルに変換する方法である。具体的には、テスト実行装置がサーバ接続ツールによってサーバにログインするために、まずファイアウォールを介してSSH通信を実行する。サーバへのログインが成功すると、サーバが保持する証跡取得用シェルを実行し、証跡物の内容をサーバ接続ツールの標準出力へ表示する。テスト実行装置は、標準出力に表示された内容をファイルに保存する。
この方法では、サーバへのアクセスにファイアウォールを経由するため、誰がどのコマンドを実行したかを記録でき、セキュリティ基準を満たす。しかし、サーバ接続ツールは対話形式でサーバとデータを送受するため、通信の無駄が多い。さらに、証跡取得のために、証跡物の内容をサーバ接続ツールの標準出力に一旦表示させる必要があり、低速である。これらの理由により証跡取得に長時間を要してしまう。
そこで実施の形態のテスト実行装置は、図2で示すように、目的に特化したプロトコル(具体的にはデータベースアクセスのためのJDBCポート)での認証をファイアウォールに実行させる。ファイアウォールは、テスト実行装置がファイアウォールの特定ポートに対して発行したリクエストを、ポートフォワーディングしてサーバへ転送する。またサーバからのレスポンスを、ポートフォワーディングしてテスト実行装置へ転送する。ファイアウォールは、リクエストを中継する際に、ユーザ名やリクエスト内容をログに記録する。
実施の形態のサーバアクセス方法では、従来方法1と異なり、ファイアウォールによる認証とログ記録がなされるため、セキュリティ基準を満たすことができる。また従来方法2と異なり、テスト実行装置とデータベースサーバ間の通信をファイアウォールがポートフォワーディングで中継し、無駄なデータのやり取りを排除することで、証跡取得を高速化することができる。また、証跡物の内容を標準出力に表示させる必要もなく、証跡取得を高速化することができる。
図3は、第1の実施の形態における総合テストのシステム構成を示す。テスト対象システム12は、総合テストの対象となるシステムであり、ウェブアプリケーションサーバ14とデータベースサーバ16を備える。テスト対象システム12は、不図示の帳票サーバ等、種々のサーバや装置をさらに備えてもよく、これらの装置が連携することにより各種の情報処理サービスを実現してもよい。
ウェブアプリケーションサーバ14は、テスト対象システムによる各種の情報処理サービスをクライアント装置へ提供する。ウェブアプリケーションサーバ14が提供する情報処理サービスの業務フローは複数の工程を含む。複数の工程は、例えば業務イベントを登録するエントリー工程や、エントリーされた業務イベントの内容をチェックする工程、チェック済の業務イベントに対する請求処理を実行する工程を含んでもよい。実施の形態では、複数の工程を、工程A、工程B、工程C、工程Dと称し、典型的には1つの業務イベントの処理を工程Aから開始し、工程Dで完了する。
ウェブアプリケーションサーバ14は、工程A〜工程Dそれぞれの機能、言い換えれば、情報処理のロジックを実装した複数のアプリケーションを保持する。これらのアプリケーションは、互いに異なる開発責任者により実装される。例えば、アプリケーションAは、工程Aの機能を実装し、開発責任者はA社である。その一方、アプリケーションBは、工程Bの機能を実装し、開発責任者はB社である。また、工程A〜工程Dのそれぞれに対応するアプリケーションは、工程毎に異なる画面をクライアント装置へ提供する。例えば、工程Aのアプリケーションは業務イベント登録のためのウェブページを提供し、工程Bのアプリケーションは登録された業務イベント内容にミスがないかどうかを確認するためのウェブページを提供する。
ウェブアプリケーションサーバ14は、エントリーされた業務イベントを複数の工程に亘り処理する際に、工程間でバッチ処理を定期的に実行する。言い換えれば、ある工程の処理を完了した業務イベントについて、定期的なバッチ処理が完了したことを条件として、それらの業務イベントに対する次の工程の処理を開始する。バッチ処理の実行間隔は任意でよいが、実施の形態では5分とする。例えば、工程Aを完了した業務イベントについて、工程Aでの出力データに対するバッチ処理を実行後、工程Aを完了した業務イベントに対する工程Bの処理を開始する。同様に、工程Bを完了した業務イベントについて、工程Bでの出力データに対するバッチ処理を実行後、工程Bを完了した業務イベントに対する工程Cの処理を開始する。
ウェブアプリケーションサーバ14は、エントリーされた業務イベントに対する各工程の処理結果を示す情報、例えば処理日時やエラー有無、業務イベント情報等をデータベースサーバ16に記録する。具体的には工程毎に予め定められたテーブルの予め定められたカラムに格納する。データベースサーバ16は、各工程の処理結果を示す情報が記録されるテーブルを保持する。データベースサーバ16は、特定のポート番号においてリスナーを起動させ、接続要求や、テーブルに対する更新要求・参照要求を含むDB操作コマンドを受け付ける。
実施の形態では、ウェブアプリケーションサーバ14は、クライアント装置に対してウェブページを提供し、そのウェブページに対して入力された情報をクライアント装置から取得して業務処理を実行する。変形例として、ウェブページに限らず、クライアント装置が専用のクライアント画面を表示させ、その画面への入力情報をクライアント装置がテスト対象システム12へ送信し、テスト対象システム12が業務処理を実行してもよい。
テスト実行装置10は、テスト対象システム12の総合テストを実行する情報処理装置である。具体的には、テスト実行装置10は、テスト対象システム12のクライアント装置として動作し、LAN・WAN・インターネット等の通信網を介して、業務イベント情報をテスト対象システム12へ入力することによりテスト対象システム12の動作を検証する。
テスト実行装置10は、ウェブアプリケーションサーバ14からウェブページを取得し、そのウェブページに対して予め定められた操作を再現することでウェブアプリケーションサーバ14における業務イベント処理を進めさせる。またテスト実行装置10は、テストの証跡情報をデータベースサーバ16から取得し、テスト対象システム12の動作が正常か否かを判定する。なお図3では、データベースサーバ16へアクセスする際にのみファイアウォール18を介するよう描いているが、ウェブアプリケーションサーバ14へアクセスする際にもファイアウォールを介してよいことはもちろんである。
図4は、図3のテスト実行装置10の構成を示すブロック図である。テスト実行装置10は、制御部30とデータ記録部20を備える。制御部30は、テスト実行装置10の動作を制御し、また、テスト対象システム12のテストに係る各種データ処理を実行する。データ記録部20は、制御部30によるデータ処理において参照、更新される各種データを記憶する記憶領域である。図4には不図示だが、テスト実行装置10には、所定のウェブブラウザプログラムがインストールされている。
本明細書のブロック図で示す各ブロックは、ハードウェア的には、コンピュータのCPUやメモリをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組合せによっていろいろなかたちで実現できることは、当業者には理解されるところである。例えば、制御部30の各機能ブロックに対応するソフトウェアモジュールを備えるテスト自動実行アプリケーションがテスト実行装置10にインストールされてもよい。そして、テスト実行装置10のCPUが、各ソフトウェアモジュールをメモリに読み出して実行することにより、制御部30の各機能ブロックの機能が発揮されてもよい。また、データ記録部20の各機能ブロックは、ストレージやメモリ等の記憶装置がデータを記憶することにより実現されてもよい。
データ記録部20は、シナリオ保持部22、アクションシート保持部24、データシート保持部26、照合データ保持部27、テスト結果保持部28を含む。
アクションシート保持部24は、テスト対象システム12が提供する情報処理サービスの複数の工程に対応する複数のアクションシートを保持する。アクションシートは、テスト対象システム12が提供する1画面につき1つ作成する文書である。既に述べたように、少なくとも工程毎に画面が異なるため、少なくとも工程毎に異なるアクションシートが作成される。アクションシートには、画面で入力されうる操作を列挙した画面操作情報が記録される。画面操作情報は、例えば、ある工程の1つのウェブページで入力可能な操作の一覧を示す情報と言え、また、1つのウェブページに配置されたボタンやテキストフィールド等の各画面要素に対して入力可能な操作を網羅的に示す情報と言える。
図5は、テスト対象システム12が提供する画面例を示す。テストにおいて操作入力対象となる画面を以下「操作対象画面」とも呼ぶ。図5は、操作対象画面であるウェブページを示しており、エレメントロケータは、ウェブページに配置された各画面要素(フォーム)に付与されたIDを示している。ボタンMenu1〜4のIDは、それぞれ「menu1」「menu2」「menu3」「menu4」である。
図6は、図5の画面に対して作成されたアクションシートを示す。アクションシートの1レコードは、画面上で入力可能な1種類の操作に対応する。具体的には、図6のNo1〜4、8、9は、図5のMenu1〜4のボタン、新規登録ボタン、変更ボタンに対する操作を示す。また、図6のNo5〜7は、図5のUSERテキストフィールド、PASSテキストフィールド、PASS再入力テキストフィールドに対する操作を示す。アクションシートでは、関数に渡すパラメータの値として、図7で示すデータシートに格納されたデータを参照することを記述できる。例えば図6では、No1・パラメータ2の値(クリック対象のエレメントロケータ)として、データシートの「menu1」欄の値を設定することが記述されている。したがって、データシートの「menu1」欄に「dom=document.getElementById('menu1')」が記述されると、テスト実行時に図5のMenu1ボタンを押下する。また図6では、No5・パラメータ3の値(入力フィールドにセットする値)として、データシートの「user」欄の値を設定することが記述されている。したがって、データシートの「user」欄にセットすべき値が記述されると、テスト実行時に図5のUSERテキストフィールドにその値を設定する。
アクションシート保持部24は、複数のアクションシートのそれぞれと、各アクションシートが対象とする画面の識別情報を対応付けて保持する。例えば、図6のアクションシートと対応付けて、図5のウェブページのURLを保持する。
図4に戻り、データシート保持部26は、アクションシート保持部24が保持する複数のアクションシートに対応する複数のデータシートを保持する。データシートは、1アクションシートにつき1つ作成する文書であり、すなわち、テスト対象システム12が提供する1画面あたり1つ作成する文書である。データシートには、テストにおいて実際に画面へ入力すべき操作を指定し、また、操作の内容を定めたテスト操作情報が記録される。
図7は、図6のアクションシートに対して作成されたデータシートを示す。図7(b)は、図7(a)の続きを示している。データシートには、操作対象画面において操作可能な各画面要素に対応する列が設けられる(図6の「menu1」〜「update」)。また、データシートの1レコードは、テストにおける1回の操作に対応する。具体的には、図7の行1は、図5のMenu1ボタンを押下し、他の画面要素の操作は実行しないことを定めたテスト操作情報を示す。
図7の行2は、図5のUSERテキストフィールドに「nomura」、PASSテキストフィールドに「abcdef」、PASS再入力テキストフィールドに「abcdef」を入力し、新規登録(insert)ボタンを押下することを定めたテスト操作情報を示す。図7の行3は、図5のUSERテキストフィールドに「nomura」、PASSテキストフィールドに「efghij」、PASS再入力テキストフィールドに「efghij」を入力し、変更(update)ボタンを押下することを定めたテスト操作情報を示す。アクションシートに記述された操作を実行するか否かは、データシートにおいて対応する操作欄に値を設定するか否かにより制御する。後述のテスト実行部34は、データシートでパラメータが未指定の列の操作はテスト時に実行しない。
図4に戻り、シナリオ保持部22は、総合テストの内容を規定したテストシナリオを保持する。図8で示すように、実施の形態のテスト実行装置10では、(1)工程別シナリオシート、(2)工程別複数シナリオ実行シート、(3)複数工程テスト実行シートの3種類の文書によりテストシナリオを構成する。シナリオ保持部22は、(1)〜(3)の文書をテストシナリオとして保持する。
(1)工程別シナリオシートは1つの工程に閉じた業務フローを規定し、1工程1業務イベントのテスト毎に1つの工程別シナリオシートが作成される。図9は工程別シナリオシートの例を示す。工程別シナリオシートの1レコードでは、特定の工程において提供される1画面に対する操作内容を規定する。具体的には、工程別シナリオシートの識別情報であるテストケースID(業務イベントIDとも言える)と、特定の工程で提供される1画面に対して作成されたアクションシートと、そのアクションシートに対応するデータシートと、テスト対象の操作が記述されたデータシートの行番号を指定する。例えば、図9のレコード2で指定されたアクションシートは図6のアクションシートであり、同レコードで指定されたデータシートは図7のデータシートである。同レコードでは行番号2が指定されているため、図7のデータシートの行2で指定されたユーザ登録操作をテストする。
図8に戻り、(2)工程別複数シナリオ実行シートは、複数の工程別シナリオシートの実行態様を規定する。特定の1工程についての複数の工程別シナリオシートをバッチ実行するための文書と言える。図10は工程別複数シナリオ実行シートの例を示す。同図の工程別複数シナリオ実行シートは、テストケースID「A−001」のシナリオシート(図9)が規定する工程Aのテストから、テストケースID「A−100」のシナリオシートが規定する工程Aのテストを順次実行することを定めている。すなわち、テスト対象システム12の工程Aに対する100件分のテストシナリオを順次実行することを定めている。
図8に戻り、(3)複数工程テスト実行シートは、複数の工程に亘るテストの実行態様を規定する。複数の工程に亘る複数の工程別複数シナリオ実行シートをバッチ実行するための文書と言える。図11は複数工程テスト実行シートの例を示す。同図の複数工程テスト実行シートは、工程Aの複数シナリオ実行シート(図10に示したA_複数シナリオ実行シート)から、工程Dの複数シナリオ実行シート(D_複数シナリオ実行シート)を順次実行することを定めている。また、テストに用いるウェブブラウザの種類や、エラーハンドリングの態様も規定する。
照合データ保持部27は、テスト対象システム12に対するテストの結果が正常か否かを判定するためのデータであり、テスト対象システム12から取得されるテスト証跡と比較するための照合データを保持する。照合データは、テスト対象システム12の仕様やテストの入力データにもとづく、テストの出力データの期待値を定めたものでもよい。テスト対象システム12がテストへの応答でウェブページを返す場合、照合データは、応答として期待されるウェブページのデータ(画像データを含む)であってもよい。実施の形態では、工程別シナリオシート毎に照合データが作成され、照合データ保持部27は、工程別シナリオシートに設定されるテストケースIDと対応付けて各照合データを保持する。
テスト結果保持部28は、テスト対象システム12による自動テストの結果を示す情報を保持する。テスト結果保持部28は、自動テストにおいて検出されたエラー情報として、エラー発生日時、エラー内容、エラー発生のテストに関連するシナリオシート、アクションシート、データシートを示す情報を対応付けて保持する。
図4に戻り、制御部30は、操作検出部32、テスト実行部34、証跡取得部36、テスト結果判定部38、テスト結果記録部40、テスト結果表示部42を含む。操作検出部32は、キーボードやマウス等の入力装置に対してユーザが入力した操作を検出する。
テスト実行部34は、テストの実行を指示する操作が入力された場合に、テスト対象システム12に対する自動テストを開始する。実施の形態では、テストの実行を指示する操作において特定の複数工程テスト実行シートが指定される。テスト実行部34は、複数工程テスト実行シートのレコード順に実行対象とする工程別複数シナリオ実行シートを識別し、その工程別複数シナリオ実行シートのレコード順に実行対象とする工程別シナリオシートを識別する。そして、工程別シナリオシートのレコード順に実行対象とするアクションシート、データシート、データシート行番号を識別する。
テスト実行部34は、アクションシート保持部24において実行対象アクションシートに対応付けられたURLをウェブブラウザに渡す。ウェブブラウザは、そのURLで特定される操作対象のウェブページをウェブアプリケーションサーバ14から取得し、ディスプレイに表示させる。テスト実行部34は、実行対象アクションシートに規定された操作のうち、実行対象データシートの実行対象行番号のレコードで指定された操作を、ウェブブラウザが表示するウェブページに対して実行する。
ウェブページに対する操作は、先行技術文献1に示す方法等、公知の方法を使用してよい。例えば、アクションシートまたはデータシートに定められたフレームロケータやエレメントロケータの値、入力文字列等を引数として、ウェブブラウザプログラムが公開する公知のAPIを呼び出すことにより、ウェブページに対する操作をウェブブラウザに実行させてもよい。ウェブブラウザは、ウェブページのフォーム操作に伴いHTTP−POSTリクエスト等をウェブアプリケーションサーバ14へ送信し、別のウェブページを取得して表示させる。典型的にはテスト実行部34は、ウェブページが切り替わると、工程別シナリオシートの次のレコードへ進み、次のレコードが規定する別のアクションシートとデータシートを実行対象として識別する。
テスト実行部34は、複数工程テスト実行シートのレコード順、工程別複数シナリオ実行シートのレコード順、工程別シナリオシートのレコード順に、実行対象のアクションシートとデータシートを順次識別し、複数の工程に亘るテスト対象システム12のテストを進行させる。例えば、図11の複数工程テスト実行シートが指定された場合、複数業務イベントのテストを工程A→工程B→工程C→工程Dの順に進行させる。
テスト実行部34は、複数工程テスト実行シートの1レコード(例えば工程Aの100業務イベント分)の処理が完了すると、定期実行されるバッチ処理が完了するまでの期間待機した後、次のレコード(例えば工程Bの100業務イベント分)の処理を開始する。バッチ処理の完了を待つ期間は、バッチ処理の実行間隔(例えば5分)に応じてその間隔以上に定められた一定期間(例えば10分)でもよい。また、テスト対象システム12の所定の記憶領域にバッチ処理の完了を示す情報が記録される場合、テスト実行部34は、当該情報の記録有無を監視し、当該情報が記録されたことを検出した場合に、複数工程テスト実行シートの次のレコードによる業務イベント処理(例えば次の工程の業務イベント処理)を開始してもよい。
証跡取得部36は、テスト実行部34が1つの工程別シナリオシートの処理、すなわち1つの工程内における1業務イベント分のテストを完了したことを検出すると、データベースサーバ16からテストの証跡情報を取得する。証跡情報は、ウェブページの操作によってウェブアプリケーションサーバ14に業務イベント処理を実行させた結果、ウェブアプリケーションサーバ14がデータベースサーバ16に記録した情報である。例えば、テスト対象の工程における業務イベント処理結果の記録先となる所定のテーブル・カラムに格納された、テスト対象のテストケースIDに対応付けられたデータを証跡情報として取得してもよい。
証跡取得部36は、テスト実行装置10にインストールされたJDBCドライバを介して、ファイアウォール18に対してデータベース(DB)接続要求を送信する。DB接続要求では、(1)送信元IPアドレスとしてテスト実行装置10のIPアドレス、(2)宛先IPアドレスとしてファイアウォール18のIPアドレス、(3)送信元ポート番号としてJDBCドライバが使用する所定のポート番号を指定する。さらに、(4)宛先ポート番号としてDB接続用の予め定められたポート番号、(5)DB接続用の予め定められたアカウント情報(例えばユーザ名とパスワード)を指定する。
ファイアウォール18は、DB接続用のポート番号とDBアクセスを許可すべきアカウント情報の組み合わせを保持する。ファイアウォール18は、DB接続用のポート番号を指定するDB接続要求を受け付けた場合に、そのDB接続要求で指定されたアカウント情報が、DBアクセスを許可すべきアカウント情報と整合するか否かを判定する。そして整合する場合、テスト実行装置10からファイアウォール18へのアクセスを許可する。
ファイアウォール18は、テスト実行装置10からファイアウォール18へのアクセスを許可した場合に、DB接続要求をポートフォワーディングによりファイアウォール18へ転送する。具体的には、(1)送信元IPアドレスをファイアウォール18のアドレスに変換し、(2)宛先IPアドレスをデータベースサーバ16のIPアドレスに変換し、(3)送信元ポート番号をファイアウォール18の所定のポート番号に変換し、(4)宛先ポート番号をデータベースサーバ16のDBリスナーが起動している所定のポート番号に変換したDB接続要求をデータベースサーバ16へ転送する。
データベースサーバ16は、ファイアウォール18から送信されたDB接続要求に応じて、データベースに接続した旨を示すDB接続応答をファイアウォール18へ送信する。具体的には、(1)送信元IPアドレスとしてデータベースサーバ16のIPアドレス、(2)宛先IPアドレスとしてファイアウォール18のIPアドレス、(3)送信元ポート番号としてDBリスナーが起動している所定のポート番号、(4)DB接続要求で指定されたファイアウォール18の所定のポート番号、を指定したDB接続応答を送信する。
ファイアウォール18は、データベースサーバ16から送信されたDB接続応答をポートフォワーディングによりテスト実行装置10へ転送する。具体的には、(1)送信元IPアドレスをファイアウォール18のアドレスに変換し、(2)宛先IPアドレスをテスト実行装置10のIPアドレスに変換し、(3)送信元ポート番号をDB接続用の予め定められたポート番号に変換し、(4)宛先ポート番号をテスト実行装置10のJDBCドライバが使用する所定のポート番号に変換したDB接続応答をテスト実行装置10へ転送する。
証跡取得部36は、DB接続応答を受信後、DB接続要求と同様に(1)〜(4)を設定したDB操作コマンド(例えばSQLクエリ)をファイアウォール18へ送信する。ファイアウォール18は、DB接続要求と同様に、DB操作コマンドをポートフォワーディングによりデータベースサーバ16へ転送する。データベースサーバ16は、DB操作コマンドを受信後、DB接続応答と同様に(1)〜(4)を設定したコマンド実行結果(クエリ応答)をファイアウォール18へ送信する。ファイアウォール18は、データベースサーバ16から送信されたコマンド実行結果を、DB接続応答と同様に、ポートフォワーディングによりテスト実行装置10へ転送する。
ファイアウォール18は、DB接続用のポート番号において受信されたDB接続要求とDB操作コマンドの内容を、アカウント情報、受信日時とともに所定のログファイルへ逐次記録する。認証結果や、その他セキュリティ基準で要求される事項をさらにログファイルへ記録してもよい。
テスト結果判定部38は、証跡取得部36により取得されたテスト証跡情報と、照合データ保持部27に予め保持された照合データとを比較して、各テストケースにおけるエラーの有無を判定する。具体的には、特定の工程別シナリオシートによるテスト完了時に取得されたテスト証跡情報と、その工程別シナリオシートに設定されたテストケースIDに対応付けられた照合データを比較する。両者が一致する場合、テスト結果が正常と判定し、すなわちテスト対象システム12の動作が正常と判定する。その一方、両者が不一致の場合、テスト結果が異常と判定し、すなわちテスト対象システム12の動作のエラーを検出する。なお、テスト対象システム12がウェブページを提供し、テスト実行部34がそのウェブページへのデータ入力を自動実行して、テスト対象システム12の動作をテストする場合、テスト結果判定部38は、ウェブページへの入力データをテスト対象システム12へ送信後、テスト対象システム12からの応答データ(応答のウェブページ等)が期待通りのものか否かを、応答データと照合データとを比較して判定してもよい。
テスト結果記録部40は、テスト対象システム12に対する総合テストの結果を示す情報をテスト結果保持部28へ記録する。具体的には、テスト対象システム12に対する特定のテストケースについて、そのテストケースIDと、テスト証跡情報と、テスト結果判定部38による正常・異常の判定結果と、判定対象のテストを規定したテストシナリオの情報をテスト結果情報として記録する。このテストシナリオの情報は、エラー発生箇所の責任者、すなわちエラーの解析と改修に責任を負うべき開発担当者を明確にするために、少なくとも工程別シナリオシートの識別情報(パス名、ファイル名等)を含む。さらに、その工程別シナリオシートで規定されたアクションシートおよびデータシートの識別情報を含む。
テスト結果表示部42は、テスト結果の表示を指示する操作が入力された場合に、テスト結果保持部28に保持されたテスト結果情報をディスプレイに表示させる。例えば、テスト結果がエラーである場合、そのエラーの事実と、エラーが発生した工程別シナリオシート、アクションシート、データシートの情報を対応付けて表示させる。
以上の構成によるテスト時の動作を以下説明する。
テスト対象システム12の情報処理サービスにおける複数の工程それぞれの開発責任者は、各自が責任を負う工程のアクションシート、データシート、工程別シナリオシート、工程別複数シナリオ実行シート、照合データを作成する。またテスト対象システム12全体の開発、試験の責任者は複数工程テスト実行シートを作成する。作成された各種シートはテスト実行装置10のデータ記録部20に格納される。
試験担当者は、特定の複数工程テスト実行シートを指定したテスト開始指示をテスト実行装置10へ入力する。テスト実行部34は、複数工程テスト実行シート、工程別複数シナリオ実行シート、工程別シナリオシートの順にドリルダウンし、実行対象のアクションシート、データシート、操作対象ウェブページを特定する。テスト実行部34は、ウェブブラウザに表示させた操作対象のウェブページに対して実行対象のアクションシートとデータシートで規定された操作を実行する。テスト実行部34は、複数工程テスト実行シート、工程別複数シナリオ実行シート、工程別シナリオシートにしたがって、ウェブページ、アクションシート、データシートを順次切り替えていき、複数の工程に亘って業務イベント処理を進めていくことにより、テスト対象システム12の総合テストを自動実行する。
図1、図8、図11で示すように、実施の形態では、単一の工程において複数業務イベントの動作テストを一括して実行する。具体的には、工程Aにおける100業務イベント分の動作テストを順次実行し、それらの業務イベントのうち最後の業務イベントに対する工程Aの動作テストが完了するまでは、工程Aの動作テストが完了済の業務イベントであっても工程Bの動作テストの開始を抑制する。そして、工程Aにおける100業務イベント分の動作テストが完了し、定時のバッチ処理が完了したことを条件に、工程Bに対する同じ100業務イベント分の動作テストを開始する。工程B以降も、単一の工程において100業務イベント分の動作テスト完了後に次の工程へ進む。
テスト実行部34は、1つの工程別シナリオシートによるテストが完了すると、テストを完了した工程の識別情報とテストケースIDを証跡取得部36に渡す。証跡取得部36は、ファイアウォール18の認証を経てデータベースサーバ16へアクセスする。証跡取得部36は、ファイアウォール18のポートフォワーディングを介して、工程とテストケースIDにより識別されるテスト証跡情報をデータベースサーバ16から取得する。ファイアウォール18は、データベース接続用の特定のポート番号を宛先ポート番号として指定する電文をテスト実行装置10から受け付けると、認証の結果に応じて当該電文をデータベースサーバ16へ転送しつつ、電文で指定されたユーザ名および操作内容(コマンド等)をログに記録する。テスト結果判定部38は、テスト証跡情報と照合データを比較し、特定のテストケースについてテスト対象システム12の動作が正常か否かを判定する。
テスト結果記録部40は、テスト証跡情報と、テスト対象システム12の動作についての正常性判定結果とを含むテスト結果をテスト結果保持部28へ格納する。テスト結果表示部42は、ユーザの要求に応じて、テスト結果を表示装置に表示させる。テスト対象システム12の動作にエラーが検出された場合、テスト結果記録部40は、エラーが発生したテストケースに対応する工程別シナリオシート、アクションシート、データシートを対応付けてテスト結果保持部28へ格納する。テスト結果表示部42は、エラーが発生したテストケースに対応する工程別シナリオシート、アクションシート、データシートを対応付けて表示装置に表示させる。
図12は、テスト対象システム12の総合テストの実施例を示す。同図の「工程A〜工程Dテスト実行シート1」、「工程A〜工程Dテスト実行シート2」、・・・のそれぞれは、1つの複数工程テスト実行シートに対応する。実施の形態では、工程A〜工程Dの1サイクルにつき1つの複数工程テスト実行シートを作成する。
例えば、工程A→B→C→B→C→Dのような手戻りが発生するテストケース(業務イベント)の場合、まず、シート50の実行において工程A→B→Cのテスト(実際には工程毎の3つの工程別シナリオシートにもとづくテスト)を実行する。そして次に、シート52の実行において工程B→C→Dテストを実行する。
また、何度も業務フローを繰り返すサイクルテストも複数工程テスト実行シートを複数回実行することで実現できる。具体例として、工程A→B→C→Dを5回繰り返すサイクルテストは、例えば100業務イベント×4工程分の400枚の工程別シナリオシートによるテストをそれぞれ含むシート50、シート52、シート54、シート56、シート58を順次実行することで実現できる。
テストの中でテスト対象システム12のエラーが検出された場合、エラー発生箇所の開発責任者の責任で再度テストを実施する。既に述べたように、エラー情報として工程別シナリオシートの情報を提示する。再テストでは、先のテストでエラーが発生したテストケースに係る工程別シナリオシートであり、エラー情報で提示された工程別シナリオシートを使用することで、問題の特定と改修を効率的に実施できる。
実施の形態のテスト実行装置10によると、入力された業務イベントの処理を、開発責任者が異なる複数の工程に亘る処理を経て完了するテスト対象システム12の特性を踏まえ、総合テストのシナリオを工程毎に分割して個々のシナリオ単位にテストを実行する。そして、個々のシナリオにもとづくテストでエラーを検出した場合に、そのエラーが発生した工程のシナリオを記録し、シナリオの情報を含むエラー情報を開示する。このように工程毎のシナリオ単位で証跡や正常性判定結果を記録することで、開発責任者毎の証跡の分割や、障害の発生原因の切り分けに時間を要してしまうことを回避でき、テストの効率化を実現できる。また、エラー発生箇所に対する責任者の特定が容易になり、障害対応の効率化を支援できる。
またテスト実行装置10によると、異なる工程の業務イベント処理の間に定時のバッチ処理を実行すべきテスト対象システム12の特性を踏まえ、1つの業務イベントを単位として工程Aの開始から工程Dの終了まで継続するテストではなく、1つの工程を単位として1つの工程内で複数業務イベントのテストを一括して実行する。これにより、複数業務イベントのテストに要する時間を低減することができる。例えば、1つの業務イベントを単位として工程Aの開始から工程Dの終了まで継続するテストの場合、1業務イベントのテストにつき、各工程の処理時間に加えて、工程A〜工程B間のバッチ処理待ち時間5分、工程B〜工程C間のバッチ処理待ち時間5分、工程C〜工程D間のバッチ処理待ち時間5分がかかることになる。これに対し、実施の形態の方式では、100業務イベントのテストにおいて上記のバッチ処理待ち時間が1回ずつ発生するだけであり、バッチ処理待ち時間を削減して効率的なテストを実現できる。
またテスト実行装置10によると、アクションシートとデータシートの役割分担が明確になり、1画面につき1枚のアクションシートを作成し、テストで実際に実行する操作はデータシートにおいて規定するよう標準化できる。例えば、テキストフィールド、ラジオボタン、ボタンA、ボタンBを含むウェブページの操作として、(1)テキストを入力してボタンA押下、(2)ラジオボタンを選択してボタンB押下、という異なる操作についても、アクションシートは共通で、データシートのデータ(指定する行番号)を変更するだけで(1)(2)それぞれの操作を再現できる。このような標準化により、複数の機能が複数の開発責任者により分散開発されるテスト対象システム12において、アクションシートやデータシート、工程別シナリオシート等、総合テストの成果物の均質化を実現できる。また、成果物の均質化によりメンテナンス性の向上を実現できる。
以上、本発明を第1の実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
(第2の実施の形態)
第2の実施の形態では、リクエストに対してリアルタイムに実行されるオンライン処理と、リクエストとは独立して所定時間間隔で実行される定期バッチとの間に依存関係がある情報システムを自動テストするための技術を説明する。実施の形態でのオンライン処理は、ウェブページへ入力されたデータがテスト実行装置からテスト対象システムへ送信されたことに伴い、テスト対象システムがリアルタイムに実行する処理を意味する。
第2の実施の形態におけるテスト対象システムは、定期的に実行される定期バッチが完了しないと、オンラインの操作を許可せず、言い換えれば、ウェブページを介して入力されたオンライン処理の要求を受け付けない。従来のテスト実行装置は、テスト対象システムがオンライン処理の受け付け状態になる前に、ウェブページを自動操作してオンライン処理を要求してしまい、テストが異常終了していた。この結果、本来のテスト項目が確認できないことがあった。また、テスト対象システムがオンライン処理を許可する状態になるまでテスト実行装置を一定時間待機させることも考えられるが、その状態になるまでの所要時間は必ずしも一定ではなく、本来不要な待機時間が生じてしまう。また、待機する場合であっても、指定された待機時間内にオンライン処理を許可する状態にならなければ、やはりテストが異常終了してしまう。
そこで第2の実施の形態のテスト実行装置は、ある工程のオンライン処理が終了後、テスト対象システムにおける定期バッチの実行結果が保存されるテーブルを監視し、テスト対象システムが次の工程のオンライン処理を許可する状態になったかを判断する。これにより、定期的に実行されるバッチ処理の完了をオンライン処理の開始条件とする情報システムを自動テストする場合に、テストの異常終了を回避しつつ、テスト効率の低下を抑制することを実現する。
以下、図面を参照しつつ、第2の実施の形態の構成を詳細に説明するが、第1の実施の形態における装置・機能と同一もしくは対応するものには同一の符号を付している。以下では、第1の実施の形態と重複する説明は適宜省略する。なお、第1の実施の形態の構成と第2の実施の形態の構成を適宜組み合わせ、また置き換えることが可能であることはもちろんである。
図13は、第2の実施の形態における総合テストのシステム構成を示す図であり、図3に対応する。第2の実施の形態のテスト対象システム12は、ウェブアプリケーションサーバ14、データベースサーバ16に加えて、バッチ処理サーバ13、外部接続サーバ15を含む。
バッチ処理サーバ13は、ウェブアプリケーションサーバ14へ入力された業務イベント情報を処理するためのオンラインバッチ60と定期バッチ62を保持する。オンラインバッチ60は、各工程のウェブページに対してクライアントが入力したデータをリアルタイムに処理するバッチ処理機能(バッチファイル)である。実施の形態では、テスト実行装置10が各工程のウェブページに自動入力したデータをウェブアプリケーションサーバ14へ送信して、ウェブアプリケーションサーバ14がオンライン処理をバッチ処理サーバ13に要求したことに伴い、バッチ処理サーバ13がオンラインバッチ60を実行する。オンラインバッチ60は、例えば、各工程のウェブページに入力された業務イベント情報に対するチェック処理や、データベースへの登録処理を実行する。
定期バッチ62は、外部接続サーバ15が利用可能な時間内(例えば9時から18時)に、予め定められた時間間隔で定期実行されるバッチ処理機能である。定期バッチ62は、オンラインバッチ60とは独立して、言い換えれば、テスト実行装置10が各工程のウェブページを操作したかどうかに依存せず、定期的に繰り返し実行される。定期バッチ62の実行間隔は典型的には数分である。定期バッチ62は、例えば、各工程のウェブページに入力された業務イベント情報を外部接続サーバ15に渡し、外部接続サーバ15による各種処理を実行させる。
ウェブアプリケーションサーバ14は、1つの業務イベントについて、ある工程のオンライン処理を実行後、その業務イベントのデータに対して定期バッチが未実行の間は、次の工程のオンライン処理要求を受け付けない。具体的には、業務イベントに関する情報を入力するためのある工程のウェブページを、その工程の前提となる定期バッチが完了していることを条件として、クライアント装置(総合テストにおいてはテスト実行装置10)へ提供する。
データベースサーバ16は、バッチ処理サーバ13における業務イベント単位のバッチ処理状況が格納される業務イベント工程状況テーブル64を保持する。図14は、業務イベント工程状況テーブル64の構成を示す。業務イベント工程状況テーブル64には、業務イベント工程ID、業務イベント番号、定期バッチ完了日時が対応付けて格納される。業務イベント工程状況テーブル64は、テスト対象システム12における業務イベント処理の進行状況の変更履歴を保持するテーブルとも言える。
業務イベント工程IDは、テスト対象システム12における処理の識別情報であり、業務イベント単位かつオンラインバッチ60単位にユニークに採番される。ある工程における1つの業務イベント処理において複数のオンラインバッチ60が実行される場合、業務イベント工程状況テーブル64には、最後に実行されたオンラインバッチ60の業務イベント工程IDが格納される。図14では、業務イベント番号「003」の業務イベントと業務イベント番号「455」の業務イベントには、同じ工程の同じオンラインバッチ60を実行済であることとし、同じ業務イベント工程IDが対応付けられた状況を示している。
業務イベント番号は、テスト対象システム12で処理対象となる業務イベント単位にユニークな識別番号である。同一の業務イベントであれば工程Aから工程Dまで同一の番号が付与される。業務イベント番号は、図9の工程別シナリオシートにおけるテストケースIDに相当し、以下、シナリオシートにおけるテストケースIDについても業務イベント番号と呼ぶこととする。定期バッチ完了日時は、業務イベントに対する定期バッチの完了日時であり、初期値は特定の初期値である。定期バッチ完了日時カラムが特定の初期値でなければ、定期バッチが完了済であり、すなわち、次の工程のオンライン処理を受け付け可能であると見なされる。
図15は、図13のテスト実行装置の構成を示すブロック図であり、図4に対応する。第2の実施の形態のテスト実行装置10は、業務イベント工程ID保持部29と業務イベント状態監視部33をさらに備える。他の構成は第1の実施の形態と同様である。
業務イベント工程ID保持部29は、テスト対象システム12における業務イベント処理の工程毎の業務イベント工程IDを保持する。具体的には図16で示すように、業務イベント工程ID保持部29は、各工程の識別情報と、各工程のオンライン処理において最後に実行されるオンラインバッチ60に対して予め割当てられた業務イベント工程IDを対応付けて保持する。
図15に戻り、業務イベント状態監視部33は、テスト実行部34が、テスト業務イベントについて、ある工程のオンライン処理を要求する前に、前工程のオンライン処理後に実行されるべき定期バッチが実行済か否かを判定する。オンライン処理を要求する前とは、ウェブアプリケーションサーバ14が定期バッチの終了を条件として許可する処理を要求する前であり、例えば、ウェブページの取得処理前、ウェブページへのデータ入力処理前、または入力データの送信処理前でもよい。テスト業務イベントは、例えば、図9の工程別シナリオシートで同一の業務イベント番号(テストケースID)が付与されたものである。テスト実行部34は、テスト業務イベントについて、前工程のオンライン処理後に定期バッチが実行済と判定されたことを条件として、次工程(上記の「ある工程」)のオンライン処理を要求する操作を入力する。
具体的には、業務イベント状態監視部33は、業務イベント工程ID保持部29において前工程と対応付けられた業務イベント工程IDを読み出す。そしてテスト業務イベントの業務イベント番号(工程別シナリオシートに記載された業務イベント番号)と、業務イベント工程IDの組み合わせをキーとして、データベースサーバ16の業務イベント工程状況テーブル64を検索する。業務イベント状態監視部33は、業務イベント工程状況テーブル64に、指定した業務イベント番号と業務イベント工程IDの組み合わせに一致するレコードが存在し、かつ、そのレコードの定期バッチ完了日時カラムに日時が設定されていた場合、実施の形態では特定の初期値でなかった場合に、前工程のオンライン処理後の定期バッチが実行済と判定する。
業務イベント状態監視部33は、データベースサーバ16の業務イベント工程状況テーブル64に対して3秒に1回、合計20回のポーリングを実行してもよい。ポーリングの間隔や実行回数は、バッチ処理サーバ13における定期バッチの実行間隔に応じて適切な値が設定されればよい。例えば、定期バッチの実行間隔が長いほど、多くのポーリング回数を設定してもよい。また、無駄なポーリングを抑制する目的で、定期バッチの実行間隔が長いほど、長いポーリング間隔を設定してもよく、定期的なポーリングの開始前に、定期バッチの実行間隔以下の待ち時間を設けてもよい。
業務イベント状態監視部33は、予め定められた回数、ポーリングを実行しても、業務イベント工程状況テーブル64に、指定した業務イベント番号と業務イベント工程IDの組み合わせに一致するレコードが存在せず、または、そのレコードの定期バッチ完了日時カラムが特定の初期値であった場合に、テスト業務イベントのテスト開始に失敗した旨のエラーメッセージをログに記録する。それとともに、テスト実行部34による以降のテスト実行を中止させ、例えば、ウェブアプリケーションサーバ14から次工程のウェブページを取得する処理を中止させる。
具体的な実装として、テスト実行装置10では、業務イベント状態監視部33による業務イベント工程状況テーブル64の監視処理を開始させるための関数(ここでは「監視メソッド」と呼ぶ。)が設けられてよい。そして、監視メソッドが各工程のテストの最初に呼び出されるよう、テスト担当者は、各工程の最初の画面操作用のアクションシートに対してその先頭に監視メソッドを記載してもよい。またテスト担当者は、ポーリングの間隔や回数をデータシートに記載してもよい。
テスト実行部34は、監視メソッドの実行時に、データシートに記載されたポーリング間隔と回数、シナリオシートに記載された工程(もしくはその工程から定まる前工程)の名称とテスト業務イベントの業務イベント番号をテスト実行部34に渡してもよい。業務イベント状態監視部33は、業務イベント状態監視部33から渡された各パラメータに応じて、業務イベント工程状況テーブル64の監視処理を開始し、テスト業務イベントについて定期バッチ処理が完了済か否かを判定してもよい。
以上の構成によるテスト時の動作を以下説明する。以下では、複数工程に亘るテストを規定した複数の工程別シナリオシートに共通する1つのテストケースをテスト業務イベントと呼び、そのテスト業務イベントをテストする場合の動作を説明する。
テスト実行装置10のテスト実行部34は、テスト業務イベントの業務イベント番号が設定された工程A用の工程別シナリオシート、アクションシート、データシートにしたがってテストを実行する。具体的には、ウェブブラウザのAPIを適宜コールして、工程Aのウェブページをウェブアプリケーションサーバ14から取得してウェブブラウザに表示させ、そのウェブページにテスト業務イベントに関する情報を自動入力し、ウェブページのボタン等のフォームを操作する。そしてウェブブラウザを介して、テスト業務イベントの業務イベント番号とウェブページへの入力情報を含むオンライン処理要求をウェブアプリケーションサーバ14へ送信する。
ウェブアプリケーションサーバ14は、テスト実行装置10からオンライン処理要求を受信すると、テスト業務イベントの情報(業務イベント番号を含む)をバッチ処理サーバ13へ送信し、工程A用のオンラインバッチ60を実行するようバッチ処理サーバ13に指示する。バッチ処理サーバ13のバッチ実行部(不図示)は、テスト業務イベントに対する工程A用のオンラインバッチ60を実行する。バッチ実行部は、工程A用のオンラインバッチ60を実行後、テスト業務イベントの業務イベント番号と、実行したオンラインバッチ60の業務イベント工程IDの組み合わせをローカルの記憶領域に格納し、データベースサーバ16の業務イベント工程状況テーブル64にも格納する。このとき定期バッチ完了日時カラムを特定の初期値に設定する。
バッチ処理サーバ13のバッチ実行部は、定期バッチ62の先の実行から所定時間が経過したことを検出すると、定期バッチ62を再度実行する。テスト業務イベントに対しては工程A用の定期バッチ62の処理を実行する。典型的にはバッチ処理部は、オンライン処理済の複数の業務イベントがあれば、それらの業務イベントを1回の定期バッチ62の実行で一括して処理する。バッチ実行部は、テスト業務イベントに対する工程A用の定期バッチ62の処理を完了すると、所定の記憶領域に格納しておいたテスト業務イベントに関する業務イベント番号と業務イベント工程IDの組み合わせを読み出す。そして、その組み合わせに一致する業務イベント工程状況テーブル64のレコードに定期バッチ完了日時を格納する。
テスト実行装置10のテスト実行部34は、テスト業務イベントの業務イベント番号が設定された工程B用の工程別シナリオシートとアクションシート、データシートにしたがってテストを実行する。このとき、テスト実行部34はまず、テスト業務イベントに対する定期バッチ処理の完了確認を業務イベント状態監視部33に指示する。業務イベント状態監視部33は、データベースサーバ16へアクセスし、テスト業務イベントの業務イベント番号と、業務イベント工程ID保持部29に保持された工程Aの業務イベント工程IDの組み合わせをキーとして業務イベント工程状況テーブル64を検索する。業務イベント状態監視部33は、データシートで指定された間隔および回数、検索処理を繰り返す。
業務イベント工程状況テーブル64に、検索キーとして指定した業務イベント番号と業務イベント工程IDの組み合わせに一致し、かつ、定期バッチ完了日時カラムが所定値以外(例えば特定の初期値以外)のレコードが存在すれば、業務イベント状態監視部33は、テスト業務イベントに対する工程Aの定期バッチ処理が完了したと判定し、その旨をテスト実行部34へ通知する。例えば、業務イベント工程状況テーブル64が図14に示す状態の場合、業務イベント番号「003」については定期バッチ処理が完了済と判定し、業務イベント番号「455」については定期バッチ処理が未完了と判定する。業務イベント状態監視部33は、データシートで指定された回数の検索処理を実行しても上記レコードが存在しなければエラーを記録し、テスト業務イベントに対する工程Bのテストを中止させる。変形例として、業務イベント工程状況テーブル64に上記レコードが記録されるまで検索処理を繰り返してもよい。
テスト実行部34は、テスト業務イベントに対する工程Aの定期バッチ処理が完了した旨が業務イベント状態監視部33から通知されると、テスト業務イベントの業務イベント番号が設定された工程B用の工程別シナリオシートとアクションシート、データシートにしたがってテストを実行する。以降、工程別複数シナリオ実行シート、複数工程テスト実行シートの設定にしたがって、工程B、工程C、工程Dのテストを同様に実行していく。
なお総合テストにおいて、工程毎に複数のテスト業務イベントを一括して処理するのではなく、1つのテスト業務イベントについて工程A〜工程Dのテストをできるだけ迅速に実施したい場合にも、第2の実施の形態のテスト実行装置10は有用である。この場合、テスト実行部34がウェブブラウザを制御して、テスト業務イベントに関する工程Aのオンライン処理要求をウェブアプリケーションサーバ14へ送信すると、業務イベント状態監視部33は、業務イベント工程状況テーブル64に対するポーリング処理を即時開始してもよい。業務イベント状態監視部33が、テスト業務イベントに対する定期バッチ処理の終了を検出すると、テスト実行部34は、テスト業務イベントに関する工程Bのオンライン処理要求をウェブアプリケーションサーバ14へ即時送信してもよい。このように、第2の実施の形態のテスト実行装置10によると、定期的に実行されるバッチ処理の完了をオンライン処理の開始条件とする情報システムを自動テストする場合に、テストの異常終了を回避しつつテスト効率の低下を抑制できる。
以上、本発明を第2の実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
例えば、業務イベント状態監視部33は、証跡取得部36と同様に、ファイアウォール18による認証とポートフォワーディングを介して、データベースサーバ16へアクセスし、業務イベント工程状況テーブル64に記録された各業務イベントのバッチ処理状況を監視してもよい。これにより、セキュリティ基準の遵守と、データベースアクセス性能を両立することができる。
この構成は以下のように表現することもできる。業務イベント状態監視部33は、データベースサーバ16へ接続するための予め定められたポート番号とアカウント情報を指定するデータベース接続要求をファイアウォール18へ送信してもよい。これにより、データベース接続用のポート番号を指定するデータベース接続要求内のアカウント情報が、予め定められたデータベース接続を許可すべきアカウント情報と整合する場合に、データベースサーバ16に対する各種のコマンドをデータベースサーバ16へ転送する処理をファイアウォール18に実行させてもよい。
(第3の実施の形態)
第3の実施の形態では、電子的に情報が記述された文書を提供するシステムに対するテストの自動化範囲を拡張するための技術を説明する。実施の形態では、電子的に情報が記述された文書の例としてウェブページを示す。しかし実施の形態に記載の技術は、ウェブページには制限されず、特定のアプリケーションで表示される専用画面やプレーンテキスト等、様々な態様の文書に適用可能である。また、文書に限らず、画面に表示される様々な画像や映像等を含むデジタルコンテンツにも適用可能である。
第3の実施の形態の説明では、ウェブページを構成する要素を総称して「エレメント」と呼ぶ。エレメントは、ウェブページの画面を構成する要素であり、ボタンやテキストフィールド、ラジオボタン等、様々なオブジェクトを含む。また、エレメントの中でも、HTML以外で表現されるオブジェクト(例えばJAVAアプレットやPDFのデータ)を特に「コンテンツ」と呼ぶ(JAVAは登録商標)。実際のコンテンツのデータは、HTMLファイル等のウェブページのデータ中で、所定のタグに囲まれたバイナリデータ(例えばJAVAアプレットやPDFのデータ)であってもよい。以下、特に断らない限り、単にエレメントと呼ぶ場合、コンテンツを含む。第3の実施の形態のテスト対象システム12におけるウェブアプリケーションサーバ14は、HTMLコードとJavaScript(登録商標)(以下「JAVAスクリプト」とも称する)コードにより描画されるエレメントに加えて、Javaアプレットにより描画されるコンテンツを含むウェブページをクライアント装置へ送信して表示させる。
図17は、第3の実施の形態のテスト対象システム12が提供するウェブページの例を示す。USERのテキストフィールドおよびログインボタンは、HTMLコードとJavaスクリプトコードにより記述され、ウェブブラウザの画面に描画されたエレメントである。これまでのテスト自動実行アプリケーションは、これらのエレメントに対する画面上での操作内容を各エレメントのIDに対応付けて記録し、その記録データを利用して自動テストを実行していた。
その一方、図17のPASSWORDのテキストフィールドは、Javaアプレットコードにより記述され、ウェブブラウザの画面に描画されたコンテンツである。これまでのテスト自動実行アプリケーションは、Javaアプレットにより描画されたコンテンツのIDを取得できず、その結果、当該コンテンツに対する自動テストを実行することができなかった。
そこで第3の実施の形態のテスト実行装置は、エレメントのレベルでの操作記録を試行するとともに、より低レベル、具体的には、ウェブブラウザの画面における操作位置のレベルで操作を記録する。これにより、少なくとも操作位置のレベルでの操作記録を確保する。テスト実行装置は、2つのレベルでの操作記録を選択的に使い分けて、ウェブページに対する操作を再現する。これにより、ウェブページに対する操作の再現性を高め、自動テストの範囲を拡張する。
以下、図面を参照しつつ、第3の実施の形態の構成を詳細に説明するが、他の実施の形態における装置・機能と同一もしくは対応するものには同一の符号を付している。以下では、他の実施の形態と重複する説明は適宜省略する。なお、第3の実施の形態の構成と他の実施の形態の構成を適宜組み合わせ、また置き換えることが可能であることはもちろんである。
図18は、第3の実施の形態のテスト実行装置10の機能構成を示すブロック図であり、図15に対応する。第3の実施の形態のテスト実行装置10は、操作記録部44をさらに備える。他の構成は第1および第2の実施の形態と同様である。なお、第1および第2の実施の形態では明示的に言及していないが、テスト実行装置10には、キーボード・マウス入力や画面出力といった入出力機能やディスクやメモリの管理等、多くのアプリケーションソフトから共通して利用される基本的な機能を提供し、コンピュータ全体を管理するオペレーティングシステム(OS)がインストールされている。
操作記録部44は、ウェブページに対する試験担当者の操作に応じてアクションシートを自動生成する。自動テストの準備として、試験担当者は、ウェブブラウザの画面(ディスプレイに表示されたウェブブラウザのウィンドウとも言え、以下「ブラウザウィンドウ」と呼ぶ。)にテスト対象のウェブページを表示させる。そしてブラウザウィンドウに表示されたウェブページのエレメントに対して、マウスやキーボード等の入力装置を介した各種操作を入力する。例えば、テキストフィールドに対する文字入力操作や、ボタンオブジェクトに対するクリック操作、アイコンに対するドラッグ操作を入力する。操作記録部44は、ブラウザウィンドウに表示されたウェブページに対する試験担当者の操作内容を示すデータを格納したアクションシートを生成する。
操作記録部44は、高レベル記録部45と低レベル記録部46を含む。高レベル記録部45は、ブラウザウィンドウのウェブページへ入力された操作の識別情報に対応付けて、そのウェブページに配置されたエレメントであり、試験対象者が操作したエレメントの識別情報であるエレメントロケータをアクションシートへ記録する。以下、高レベル記録部45がアクションシートへ記録するエレメントIDを含むエレメントロケータの情報を高レベル操作情報とも呼ぶ。
具体的には、高レベル記録部45は、COM(Component Object Model)が提供する公知のAPIを呼び出すことにより、ブラウザウィンドウにおける操作種類と、操作対象エレメントのIDを取得する。高レベル記録部45がJava言語により実装される場合、COMで予め定められた操作対象エレメントのIDを取得するための公知のメソッドをcom4jを介して呼び出してもよい。また、ブラウザウィンドウをターゲットとしてイベントリスナやアクションリスナを登録し、エレメント操作時にCOMコンポーネント側からコールバック関数を呼び出させることで、操作種類と操作対象エレメントのIDを取得してもよい。
低レベル記録部46は、ブラウザウィンドウのウェブページへ入力された操作の識別情報に対応付けて、当該ブラウザウィンドウにおける操作位置を示す座標情報をアクションシートへ記録する。座標情報は、ブラウザウィンドウのクライアント領域における左上端を原点とした座標系でのX座標とY座標の組み合わせであってもよい。以下、低レベル記録部46がアクションシートへ記録する座標情報を低レベル操作情報とも呼ぶ。
具体的には、低レベル記録部46は、OSが提供する公知のAPI(OSがWindows(登録商標)であればWindowsAPI)を呼び出すことにより、ブラウザウィンドウにおける操作種類と、操作位置を示す座標を取得する。低レベル記録部46がJava言語で実装される場合、JNI(Java Native Interface)を介してOSのネイティブコードを呼び出してもよい。また、ブラウザウィンドウに対する操作種類と操作位置の座標を取得するコールバック関数をOS側から呼び出させることで、操作種類と操作位置の座標を取得してもよい。
なお操作記録部44は、試験担当者が事前に操作するテスト対象ウェブページのコードに、操作種類および操作位置の座標を取得するJavaスクリプトコードを追加した後、テスト対象ウェブページをウェブブラウザに表示させてもよい。低レベル記録部46は、上記のJavaスクリプトコードが出力する操作種類と操作位置の座標を取得してアクションシートへ記録してもよい。
テスト実行部34は、第1および第2の実施の形態と同様に、アクションシート、データシート、シナリオシートにしたがって、テスト対象システム12に対する自動テストを実行する。第3の実施の形態のアクションシートには、低レベル記録部46による低レベル操作情報は常に格納されるが、操作対象がJavaアプレットのコンテンツである場合等、高レベル記録部45による高レベル操作情報は格納されない場合がある。テスト実行部34は、テスト対象のウェブページをブラウザウィンドウに表示させ、高レベル操作情報と低レベル操作情報を選択的に使用して、ウェブページに対して入力された操作を再現する。
テスト実行部34は、ウェブページに対する1つの操作を示すアクションシートの1レコードに、高レベル操作情報と低レベル操作情報の両方が格納されている場合、高レベル操作情報を選択する。このときテスト実行部34は、高レベル操作情報が示す操作対象エレメントに対して、その高レベル操作情報と対応付けられた操作を入力する。例えば、操作内容を指定する情報と操作対象エレメントのIDを引数として、COMが提供するエレメント操作用の公知のAPIを呼び出すことにより、ブラウザウィンドウに表示されたウェブページ内のエレメントを操作してもよい。
テスト実行部34は、ウェブページに対する1つの操作を示すアクションシートの1レコードに、低レベル操作情報のみが格納されている場合、または、高レベル操作情報にもとづくエレメント操作に失敗した場合、低レベル操作情報を選択する。このときテスト実行部34は、ブラウザウィンドウにおける低レベル操作情報が示す座標位置に、その低レベル操作情報と対応付けられた操作を入力する。例えば、操作内容を指定する情報と操作位置の座標を引数として、OSが提供する入力操作用の公知のAPIを呼び出すことにより、ブラウザウィンドウに表示されたウェブページの特定の位置において操作を入力してもよい。
なおテスト実行部34は、高レベル操作情報に基づくエレメント操作時に、COMのAPI呼び出し後、所定の待機時間が経過しても、予め定められた応答を受け付けないことをもって、エレメント操作の失敗を検出してもよい。また、COMのAPI呼び出し後、呼び出し先のCOMコンポーネントから所定のエラーが返された場合に、エレメント操作の失敗を検出してもよい。
テスト実行部34は、低レベル操作情報を選択した場合に、その旨を高レベル記録部45へ通知する。高レベル記録部45は、テスト実行部34が低レベル操作情報に基づいてウェブページを操作することを検出すると、操作対象エレメントの情報取得を試行する。例えば、テスト実行部34によるテスト実行時にコールバック関数がCOM側から呼び出された場合に、操作内容と操作対象エレメントのIDを取得する。高レベル記録部45は、操作内容に対応付けて操作対象エレメントのIDをアクションシートへ追加記録する。
以上の構成によるテスト時の動作を以下説明する。以下では、図17に示すウェブページに対する操作を記録し、またその操作を再現する場合の動作を説明する。
試験担当者は、テスト対象システム12の自動テストを開始させる前に、そのテストで実行させるべきウェブページに対する操作を記録したアクションシートをテスト実行装置10に自動生成させる。具体的には、試験担当者は、テスト実行装置10にインストールされたテスト自動実行アプリケーションを起動し、ブラウザウィンドウにテスト対象ウェブページを表示させる。このとき操作記録部44は、図19に示すアクションシートの番号1のレコード(以下「レコード1」と呼ぶ、他のレコードも同様)を記録する。
試験担当者は、HTMLコードにより描画されたUSERのテキストフィールドへ文字列を入力する。このとき低レベル記録部46は、OSのAPIを介して、文字列入力を示す操作種類情報と操作位置の座標を取得し、アクションシートのレコード2に記録する。
操作位置の座標は、文字入力操作のために試験担当者がクリックした画面上の位置であり、文字入力の開始位置とも言え、ここでは(300,600)である。
並行して高レベル記録部45は、COMのAPIを介して、文字列入力を示す操作種類情報と操作対象コンポーネントのID(ここではuser)を取得し、アクションシートのレコード2に記録する。図19の例では、パラメータ2において、高レベル操作情報||低レベル操作情報の形式で記録する。高レベル操作情報は、高レベル記録部45が取得したエレメントのIDを含むエレメントロケータであり、低レベル操作情報は、低レベル記録部46が取得した座標情報である。
なお低レベル記録部46は、OSのAPIを介して取得する操作種類情報と、テスト自動実行アプリケーションが予め定める関数との対応関係を保持する。例えば、OSのAPIを介して文字列入力を示す操作種類情報を取得した場合、その操作種類に対応付けられた関数「typeText」をアクションシートに記録する。同様に高レベル記録部45は、COMのAPIを介して取得する操作種類情報と、テスト自動実行アプリケーションが予め定める関数との対応関係を保持する。例えば、COMのAPIを介して文字列入力を示す操作種類情報を取得した場合、その操作種類に対応付けられた関数「typeText」をアクションシートに記録する。
試験担当者は、Javaアプレットで描画されたPASSWORDのテキストフィールドへ文字列を入力する。このとき低レベル記録部46は、OSのAPIを介して、文字列入力を示す操作種類情報と操作位置の座標(ここでは300,800)を取得し、アクションシートのレコード3に記録する。PASSWORDのテキストフィールドはJavaアプレットコードで描画されているため、高レベル記録部45は、COMのAPIを介して、文字列入力を示す操作種類情報と操作対象コンポーネントのIDを取得することはできない。したがって高レベル操作情報は記録されない。
試験担当者は、HTMLコードにより描画されたログインボタンをクリックすることにより、USERテキストフィールドおよびPASSWORDテキストフィールドへの入力データをウェブアプリケーションサーバ14へPOSTさせる。これにより、ウェブアプリケーションサーバ14(もしくは不図示の認証サーバ)が実行するユーザ認証処理をテストする。
このとき低レベル記録部46は、OSのAPIを介して、クリック操作を示す操作種類情報と操作位置の座標(クリック位置であり、ここでは600,900)を取得し、アクションシートのレコード4に記録する。また低レベル記録部46は、OSのAPIが返す操作種類情報「クリック操作」に予め対応付けられた関数「clickButton」をアクションシートへ記録する。
並行して高レベル記録部45は、COMのAPIを介して、クリック操作を示す操作種類情報と操作対象コンポーネントのID(ここではlogin)を取得し、アクションシートのレコード4に記録する。また高レベル記録部45は、COMのAPIが返す操作種類情報「クリック操作」に予め対応付けられた関数「clickButton」をアクションシートへ記録する。以上のステップにより、試験担当者の操作を再現するための図19のアクションシートが自動生成される。
なお、図19のパラメータ2「エレメントロケータ」の値は、第1の実施の形態で示したようにデータシートへ設定し、データシートにおける値の設定有無によりテストの実行有無を規定してもよい。この場合、高レベル記録部45および低レベル記録部46は、エレメントロケータと座標をデータシートへ格納する。そして、アクションシートのパラメータ2のデータシート列名カラムに、エレメントロケータと座標を格納したデータシートのカラム名を設定する。
また、図19のパラメータ3は、テキストフィールドへの入力データをデータシートで定めることを規定している。パラメータ3は、試験担当者がデータシートの列名を勘案して手動で設定してもよいが、操作記録部44が自動で設定してもよい。例えば操作記録部44は、文字入力等の所定操作を示す関数をアクションシートに記録した場合に、その関数が予め定めるパラメータのうち入力データを設定すべきパラメータについてはデータシートで値を定めるようデータシート列名カラムに所定値(高レベル記録部45が取得したエレメントID等)を設定してもよい。
続いて試験担当者はデータシートを作成する。図20はデータシートを示す。データシートの列名「user」「password」は、図19のアクションシートにおけるパラメータ3のデータシート列名に対応する。試験担当者は、図17のUSERテキストフィールドに設定すべき値を、データシートのuserカラムに設定し、図17のPASSWORDテキストフィールドに設定すべき値を、データシートのpasswordカラムに設定する。
続いて試験担当者はシナリオシートを作成する。図21はシナリオシートを示す。同図では、図19のアクションシートのファイル名と、図20のデータシートのファイル名を指定している。行カラムの「1−3」は、データシートの行1〜行3に格納されたデータを順次使用することを指定するものである。この例では3ユーザのログイン認証を連続してテストするシナリオとなる。なお、第1の実施の形態の図9で示したように、ログイン後に他のアクションを実行すべき場合は、シナリオシートのレコード2以降にアクションシートとデータシートの組み合わせをさらに指定する。
試験担当者は、図21のシナリオシートを指定したテスト開始指示をテスト自動実行アプリケーションへ入力する。テスト実行部34は、図19のアクションシートと図20のデータシートにしたがってウェブページの自動操作を開始する。テスト実行部34は、アクションシートのレコード1にしたがってテスト対象ウェブページをウェブアプリケーションサーバ14から取得し、ブラウザウィンドウに表示させる。
アクションシートのレコード2には、高レベル操作情報と低レベル操作情報の両方が格納されているが、テスト実行部34は高レベル操作情報を選択する。テスト実行部34は、アクションシートのレコード2に設定された高レベル操作情報のエレメントロケータと、データシートの行1に設定されたuser文字列を引数としてtypeText関数を呼び出す。パラメータ2として高レベル操作情報(すなわちエレメントロケータ)を指定した場合、typeText関数の処理として、(1)エレメントロケータが示すUSERテキストフィールドをフォーカスし、(2)当該テキストフィールドへuser文字列を設定し、(3)USERテキストフィールドのフォーカスを解除する(フォーカスアウト)操作をブラウザウィンドウへ入力する。
アクションシートのレコード3には、低レベル操作情報のみ格納されているため、テスト実行部34は低レベル操作情報を選択する。テスト実行部34は、アクションシートのレコード3に設定された低レベル操作情報の座標と、データシートの行1に設定されたpassword文字列を引数としてtypeText関数を呼び出す。パラメータ2として低レベル操作情報(すなわち座標)を指定した場合、typeText関数の処理として、(1)指定された座標をクリックし、(2)password文字列を設定し、(3)フォーカスアウトする操作をブラウザウィンドウへ入力する。
このようなtypeText関数による複数種類の処理は、オーバーロード(Java言語の場合等)により実現してもよい。また、typeText関数内部で引数が高レベル操作情報か低レベル操作情報かを識別し、その識別結果に応じて異なる処理を実行するようtypeText関数を実装してもよい。
テスト実行部34が低レベル操作情報に基づくウェブページ操作を実行する際、高レベル記録部45は、COMのAPIを介して、操作対象エレメントの情報取得を試行する。操作対象エレメントのIDを取得した場合、高レベル記録部45は、実行された操作に対応づけて高レベル操作情報をアクションシートへ記録する。この例では、アクションシートのレコード3に対して、高レベル操作情報であるエレメントロケータを追加的に格納する。高レベル操作情報が記録された場合、次回以降のテスト実行時には高レベル操作情報に基づくウェブページ操作が実行される。
アクションシートのレコード4には、高レベル操作情報と低レベル操作情報の両方が格納されているが、テスト実行部34は高レベル操作情報を選択する。テスト実行部34は、アクションシートのレコード4に設定された高レベル操作情報のエレメントロケータを引数としてclickButton関数を呼び出す。パラメータ2として高レベル操作情報(すなわちエレメントロケータ)を指定した場合、clickButton関数の処理として、指定されたエレメントロケータをクリックする操作をブラウザウィンドウへ入力する。なお、パラメータ2として低レベル操作情報(すなわち座標)を指定した場合は、clickButton関数の処理として、指定された座標をクリックする操作をブラウザウィンドウへ入力する。
テスト実行部34は、高レベル操作情報に基づくウェブページ操作の失敗を検出した場合、低レベル操作情報に基づくウェブページ操作を実行する。以上の処理を、データシートの行2、行3の分繰り返す。このように、アクションシートに記録された試験担当者によるウェブページの操作を、データシートとシナリオシートの設定に応じて複数回繰り返すことにより、様々なバリエーションの動作テストを効率的に実現できる。
なお、ウェブページに対する操作として、ここでは文字入力とボタンクリックを示したが、他の種類の操作も記録し、再現可能なことはもちろんである。例えば試験担当者がエレメント(アイコン等)のドラッグ操作を実施した場合、高レベル記録部45は、ドラッグ操作とエレメントロケータを対応付けた高レベル操作情報を記録する。低レベル記録部46は、ドラッグ操作と、ドラッグ開始位置のX座標およびY座標、ドラッグ終了位置のX座標およびY座標を対応付けた低レベル操作情報を記録する。テスト実行部34は、高レベル操作情報に基づいてCOMのAPIを呼び出し、または、低レベル操作情報に基づいてOSのAPIを呼び出すことによりドラッグ操作を再現する。
第3の実施の形態のテスト実行装置10によると、ウェブページ等の電子文書に対する操作を操作対象のエレメントのレベル(高レベル)で記録するとともに、画面上での操作位置のレベル(低レベル)で記録する。そして、高低それぞれのレベルでの操作記録を選択的に使用して文書に対する操作を再現する。これにより、Javaアプレットにより描画されたコンテンツが操作された場合等、高レベル操作情報を記録できない場合も低レベル操作情報を確保し、自動テストでの再現が可能になる。実施の形態では、Javaアプレットの例を示したが、高レベル操作情報を記録できない他の種類のエレメント、例えばPDFやFlash(商標または登録商標)により描画されたオブジェクトが文書に含まれる場合も同様の効果を奏し、自動テストが可能な範囲を拡張することができる。
またテスト実行装置10によると、文書に対する操作再現時に、低レベル操作情報より高レベル操作情報を優先して使用する。低レベル操作情報は、ディスプレイ上の座標を記録したものであるため、ディスプレイの種類や解像度が変更された場合に再現性が低くなる可能性がある。高レベル操作情報は、ディスプレイの種類や解像度等、ユーザインタフェース環境への依存度が低いため、高レベルの操作記録を優先して使用することで、操作の再現性を高めることができる。
またテスト実行装置10によると、高レベル操作情報に基づく文書操作に失敗した場合に、低レベル操作情報に基づく文書操作を試行する。これにより、仮に文書内のエレメントIDが変更された場合も操作の再現性を高め、動作テストの失敗を回避しやすくなる。また、アクションシートを再生成するための試験担当者の負担も軽減できる。
またテスト実行装置10によると、低レベル操作情報に基づく文書操作時に、操作対象エレメント(コンテンツ)の情報を取得可能であれば高レベル操作情報を新たに記録する。これにより、文書が変更された場合や、テスト自動実行アプリケーションの機能が拡張された場合に、高レベル操作情報を追加的に記録でき、アクションシートの最適化を自動的に図ることができる。
文書が変更された場合とは、例えば、低レベル操作情報しか記録できないエレメントが、高レベル操作情報を記録できるエレメントに置き換えられた場合である。また、テスト自動実行アプリケーションの機能が拡張された場合とは、例えば、当該アプリケーションがJavaアプレットに対応し、すなわちJavaアプレットのオブジェクトの識別情報を取得可能になり、Javaアプレットのオブジェクトを指定した操作が可能になった場合である。また例えば、テスト自動実行アプリケーションがFlashに対応し、すなわち、ActionScriptのオブジェクトの識別情報を取得可能になり、ActionScriptのオブジェクトを指定した操作が可能になった場合である。
以上、本発明を第3の実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
上記第3の実施の形態では、高レベル操作情報の取得有無にかかわらず低レベル操作情報をアクションシートへ記録することとしたが、高レベル操作情報が取得できた場合は低レベル操作情報の取得と記録をスキップしてもよい。また上記第3の実施の形態では、高レベル操作情報の取得方法として、COMを介してエレメントIDを取得することを示したが、テスト自動実行アプリケーションの機能拡張により、高レベル操作情報の別の取得方法が追加されることもあり得る。その場合、それぞれの方法で高レベル操作情報が取得できるか否かを判定してもよい。例えば以下のような処理を実行してもよい。
(1)高レベル操作情報取得1:COMを介してエレメントIDを取得する、情報が取得できなければ(2)へ進む。
(2)高レベル操作情報取得2:機能拡張により追加された手法Aで高レベル操作情報を取得する、取得できなければ(3)へ進む。
(3)高レベル操作情報取得3:機能拡張により追加された手法Bで高レベル操作情報を取得する、取得できなければ(4)へ進む。
(4)低レベル操作情報取得:高レベル操作情報が取得できないため、低レベル操作情報を取得する。実施の形態のように高レベル操作情報の取得可否にかかわらず常に低レベル操作情報を取得してもよい。
これにより、高レベル操作情報を取得する確実性を一層高めることができる。
また、上記第3の実施の形態では言及していないが、図19に示すようにアクションシートに「レベル」のカラムを設けてもよい。「レベル」のカラムの値(以下「レベル値」と呼ぶ。)として高または低を設定可能であってよく、そのデフォルト値は高であってもよい。テスト実行部34は、レベル値に一致する高レベル操作情報または低レベル操作情報に基づいてウェブページを操作してもよい。例えば、レベル値が高であれば実施の形態と同様に操作する一方、レベル値が低であれば、アクションシートに高レベル操作情報が記録されていても、低レベル操作情報に基づいてウェブページを操作してもよい。この構成によると、試験担当者が必要に応じて任意に、低レベル操作情報を使用してテストするよう指示することができる。
高レベル記録部45は、テスト実行部34が低レベル操作情報に基づいてウェブページを操作する際に、レベル値が高であれば、実施の形態で示したように高レベル操作情報の取得と記録を試行してもよい。その一方、レベル値が低であれば、高レベル操作情報の取得と記録の試行をスキップしてもよい。これにより、試験担当者が不要と判断する高レベル操作情報の取得と記録を任意にスキップさせることができる。
また、上記第3の実施の形態では言及していないが、テスト実行装置10は、高レベル操作情報に基づく文書操作が失敗した場合に、その高レベル操作情報をアクションシートから削除する操作記録削除部をさらに備えてもよい。これにより、テストの都度、言い換えれば、当該高レベル操作情報に対応付けられた操作を実行する都度、操作に失敗し、またエラーが発生することを回避できる。また、一旦高レベル操作情報を削除しても、低レベル操作情報に基づく文書操作時に、高レベル記録部45は、高レベル操作情報の取得と記録を試行する。したがって、エレメントIDが変更された場合等、それまでの高レベル操作情報が無効になった場合でも、最新の高レベル操作情報をアクションシートへ自動で反映させ、次回のテストでは最新の高レベル操作情報に基づくテストを再開させることができる。
上述した実施の形態および変形例の任意の組み合わせもまた本発明の実施の形態として有用である。組み合わせによって生じる新たな実施の形態は、組み合わされる実施の形態および変形例それぞれの効果をあわせもつ。また、請求項に記載の各構成要件が果たすべき機能は、実施の形態および変形例において示された各構成要素の単体もしくはそれらの連携によって実現されることも当業者には理解されるところである。