(57)【要約】【課題】システムの動作テストにおけるログ検証を効率化する。【解決手段】テスト実行装置１０は、テスト対象システムをテストする装置である。テスト実行装置１０は、テスト開始時刻を取得する時刻取得部２２と、テスト開始時刻からテスト対象システム１２のテストの自動実行を開始するテスト実行部２３と、テスト開始時刻以降に更新されたログファイルをテストの終了後に前記システムから取得するログファイル取得部２６と、取得されたログファイルから、テスト開始時刻以降に出力されたログを抽出するログ抽出部２７と、抽出されたログから、テスト実行時に値が決まる要素を除いた部分が、所定の期待値と整合するか否かを検証する検証部２９と、検証結果を検証結果保持部４７へ記録する検証結果記録部３０と、を備えることを特徴とする。【選択図】図２
2016071400.tif 000002
【特許請求の範囲】
【請求項１】
システムをテストする装置であって、
テスト開始時刻を取得する時刻取得部と、
前記テスト開始時刻から前記システムのテストの自動実行を開始するテスト実行部と、
前記テスト開始時刻以降に更新されたログファイルをテストの終了後に前記システムから取得する取得部と、
取得されたログファイルから、前記テスト開始時刻以降に出力されたログを抽出するログ抽出部と、
抽出されたログから、テスト実行時に値が決まる要素を除いた部分が、所定の期待値と一致するか否かを検証する検証部と、
を備えることを特徴とするテスト実行装置。
【請求項２】
前記テスト実行時に値が決まる要素には、少なくともログが出力された時刻に関する情報を含むことを特徴とする請求項１に記載のテスト実行装置。
【請求項３】
前記時刻取得部は、前記システムのシステム時刻を取得することを特徴とする請求項１または２に記載のテスト実行装置。
【請求項４】
システムをテストする装置において実行される方法であって、
テスト開始時刻を取得するステップと、
前記テスト開始時刻から前記システムのテストの自動実行を開始するステップと、
前記テスト開始時刻以降に更新されたログファイルをテストの終了後に前記システムから取得するステップと、
取得されたログファイルから、前記テスト開始時刻以降に出力されたログを抽出するステップと、
抽出されたログから、テスト実行時に値が決まる要素を除いた部分が、所定の期待値と一致するか否かを検証するステップと、
を含むことを特徴とするテスト実行方法。
【請求項５】
システムをテストするテスト装置に、
テスト開始時刻を取得する機能と、
前記テスト開始時刻から前記システムのテストの自動実行を開始する機能と、
前記テスト開始時刻以降に更新されたログファイルをテストの終了後に前記システムから取得する機能と、
取得されたログファイルから、前記テスト開始時刻以降に出力されたログを抽出する機能と、
抽出されたログから、テスト実行時に値が決まる要素を除いた部分が、所定の期待値と一致するか否かを検証する機能と、
を実現させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理技術に関し、特に情報システムをテストする技術に関する。
【背景技術】
【０００２】
情報システムの品質を保証する上で、サービス開始前の動作テストは不可欠である。例えば、情報システムの開発者が情報システムのユーザインタフェースを手動操作し、その操作結果を確認することにより動作テストを実行することが多い。しかし、操作のバリエーションが豊富な近年の情報システムでは、手動による動作テストには限界がある。
【０００３】
本出願人は、情報システムの動作テストを自動化し、効率的な動作テストを実現するための技術を提案している（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１０／１１６５８６号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
動作テストでは、結果検証のひとつとして、システムの各装置のログや装置上で動作する各アプリケーションのログを確認し、装置やアプリケーションの動作が想定通りであるかを検証する。具体的には、ログの内容が、予め期待されている値と一致するかを検証する。しかし、ログには、例えばログが出力されたタイムスタンプなど可変の要素が含まれる場合がある。例えば回帰テストにて取得したログを検証する際に、この可変要素も含めて検証されると、検証結果が不一致となる。そのため、従来は、こうした可変要素を手作業で取り除いてから期待値と一致するかを検証していた。この、作業は、テスト担当者の大きな負担となっていた。
【０００６】
本発明はこうした課題に鑑みてなされたものであり、その主な目的は、システムの動作テストにおけるログの検証を効率化するための技術を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明のある態様のテスト実行装置は、システムをテストする装置であって、テスト開始時刻を取得する時刻取得部と、テスト開始時刻からシステムのテストの自動実行を開始するテスト実行部と、テスト開始時刻以降に更新されたログファイルをテストの終了後にシステムから取得する取得部と、取得されたログファイルから、テスト開始時刻以降に出力されたログを抽出するログ抽出部と、抽出されたログから、テスト実行時に値が決まる要素を除いた部分が、所定の期待値と一致するか否かを検証する検証部と、を備える。
【０００８】
本発明の別の態様は、テスト実行方法である。この方法は、システムをテストする装置において実行される方法であって、テスト開始時刻を取得するステップと、テスト開始時刻からシステムのテストの自動実行を開始するステップと、テスト開始時刻以降に更新されたログファイルをテストの終了後にシステムから取得するステップと、取得されたログファイルから、テスト開始時刻以降に出力されたログを抽出するステップと、抽出されたログから、テスト実行時に値が決まる要素を除いた部分が、所定の期待値と一致するか否かを検証するステップと、を含む。
【０００９】
なお、以上の構成要素の任意の組合せ、本発明の表現を、システム、プログラム、プログラムを格納した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１０】
本発明によれば、システムの動作テストにおけるログの検証を効率化するための技術を提供できる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態に係るテストシステムの構成を示す図である。
【図２】図１のテスト実行装置の機能構成を示すブロック図である。
【図３】更新時刻保持部のデータ構造を示す図である。
【図４】取得対象一覧保持部のデータ構造を示す図である。
【図５】ログファイルに出力されたログの一例を示す図である。
【図６】整形ログファイルに出力された整形ログの一例を示す図である。
【発明を実施するための形態】
【００１２】
図１は、テストシステム１００の構成を示す。テストシステム１００は、テスト実行装置１０と、テスト対象システム１２と、を含む。テスト対象システム１２は、テストの対象となるシステムであり、ウェブアプリケーションサーバ１４を備える。テスト対象システム１２は、不図示のメインフレームや帳票サーバやデータベースサーバ等、種々のサーバや装置をさらに備えてもよく、これらの装置が連携することにより各種の情報処理サービスを実現してもよい。
【００１３】
ウェブアプリケーションサーバ１４は、テスト対象システムによる各種の情報処理サービスをクライアント装置へ提供する。実施の形態では、ウェブアプリケーションサーバ１４は、クライアント装置に対してウェブページを提供し、そのウェブページに対して入力された情報をクライアント装置から取得して業務処理を実行する。変形例として、ウェブページに限らず、クライアント装置が専用のクライアント画面を表示させ、その画面への入力情報をクライアント装置がテスト対象システム１２へ送信し、テスト対象システム１２が業務処理を実行してもよい。
【００１４】
テスト実行装置１０は、テスト対象システム１２のテストを実行する情報処理装置である。具体的には、テスト実行装置１０は、テスト対象システム１２のクライアント装置として動作し、ＬＡＮ・ＷＡＮ・インターネット等の通信網を介して、業務イベント情報をテスト対象システム１２へ入力することによりテスト対象システム１２の動作を検証する。
【００１５】
テスト実行装置１０は、ウェブアプリケーションサーバ１４からウェブページを取得し、そのウェブページに対して予め定められた操作を再現することでテスト対象システム１２の動作テストを実行する。またテスト実行装置１０は、動作テストの結果検証のひとつとして、テスト対象システム１２の各装置のログや装置上で動作する各アプリケーションのログを確認し、装置やアプリケーションの動作が想定通りであるかを検証する。
【００１６】
実施の形態では、テスト実行装置１０は、ウェブアプリケーションサーバ１４が出力する第１ログファイル１６ａ（system.log）、第２ログファイル１６ｂ（error.log）と、ウェブアプリケーションサーバ１４上で動作するアプリケーションが出力する第３ログファイル１６ｃ（apl01.log）、第４ログファイル１６ｄ（apl02.log）を保持しており、テスト実行装置１０は、このうち検証の必要があるログファイルだけを取得する。検証の必要があるログファイルの判断方法については後述する。以下、第１ログファイル１６ａ、第２ログファイル１６ｂ、第３ログファイル１６ｃ、第４ログファイル１６ｄをまとめて「ログファイル１６」と呼ぶ。
【００１７】
取得したログファイル１６には、例えばログが出力された時刻を示すタイムスタンプなど、テスト実行時に値が決まる要素（別の言い方をすると、予め期待される値を決定することができない要素）が含まれる。テスト実行装置１０は、ログファイル１６のログからこうした要素を削除したログ（以下、「整形ログ」と呼ぶ）を作成する。一方で、テスト実行装置１０は、動作テストを実施したときにログファイル１６に出力されると期待されるログ（以下、「期待値ログ」と呼ぶ）が書き込まれた期待値ログファイルを保持する。実施の形態では、テスト実行装置１０は、第１ログファイル１６ａに対応する第１期待値ログファイル１８ａ（system_kitai.log）と、第３ログファイル１６ｃ（apl01_kitai.log）に対応する第３期待値ログファイル１８ｃと、を保持している。テスト実行装置１０は、整形ログと期待値ログとが一致するかを検証する。一致していればテスト結果が正常と判定し、一致していなければテスト結果が異常と判定する。
【００１８】
図２は、図１のテスト実行装置１０の構成を示すブロック図である。テスト実行装置１０は、制御部２０とデータ記録部４０を備える。制御部２０は、テスト実行装置１０の動作を制御し、また、テスト対象システム１２のテストに係る各種データ処理を実行する。データ記録部４０は、制御部２０によるデータ処理において参照、更新される各種データを記憶する記憶領域である。図２には不図示だが、テスト実行装置１０には、所定のウェブブラウザプログラムがインストールされている。
【００１９】
本明細書のブロック図で示す各ブロックは、ハードウェア的には、コンピュータのＣＰＵやメモリをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組合せによっていろいろなかたちで実現できることは、当業者には理解されるところである。例えば、制御部２０の各機能ブロックに対応するソフトウェアモジュールを備えるテスト自動実行アプリケーションがテスト実行装置１０にインストールされてもよい。そして、テスト実行装置１０のＣＰＵが、各ソフトウェアモジュールをメモリに読み出して実行することにより、制御部２０の各機能ブロックの機能が発揮されてもよい。また、データ記録部４０の各機能ブロックは、ストレージやメモリ等の記憶装置がデータを記憶することにより実現されてもよい。
【００２０】
データ記録部４０は、開始時刻保持部４１、更新時刻保持部４２、取得対象一覧保持部４３、ログファイル保持部４４、整形ログファイル保持部４５、期待値ログファイル保持部４６、検証結果保持部４７を含む。
【００２１】
開始時刻保持部４１は、動作テストを開始した時刻を「テスト開始時刻」として保持する。更新時刻保持部４２は、動作テストの完了後における、テスト対象システム１２の各種ログファイルの更新時刻を保持する。図３は、更新時刻保持部４２のデータ構造を示す。更新時刻保持部４２は、各種ログファイルのログファイル名１２０と、その更新時刻１２２とを対応付けて保持する。ここでは、テスト対象システム１２は、「system.log（第１ログファイル１６ａ）」、「error.log（第２ログファイル１６ｂ）」、「apl01.log（第３ログファイル１６ｃ）」、「apl02.log（第４ログファイル１６ｄ）」の４つのログファイルを保持している。図２に戻る。
【００２２】
取得対象一覧保持部４３は、テスト対象システム１２の各種ログファイルのうち、動作テストの結果検証として検証する必要があるログファイルの一覧、すなわちテスト実行装置１０が取得するべきログファイルの一覧を保持する。図４は、取得対象一覧保持部４３のデータ構造を示す。取得対象一覧保持部４３は、取得するべきログファイルのログファイル名１２４を保持する。ここでは、テスト対象システム１２が保持する４つのログファイルのうち、「system.log（第１ログファイル１６ａ）」「apl01.log（第３ログファイル１６ｃ）」が、取得すべきログファイルとされている。
【００２３】
ログファイル保持部４４は、テスト対象システム１２から取得したログファイルを保持する。図５は、ログファイル保持部４４に保持されるログファイルに出力されたログの一例を示す。同図に示すログは、デリミタ文字列が「 」（スペース）であり、ログが出力された時刻を示す「タイムスタンプ１０２」、業務を行っている「ユーザＩＤ１０４」、リクエスト単位でユニークに設定される「リクエストＩＤ１０６」、ログ出力を行うサーバの「ホスト名１０８」、呼び出し先の「クラス名１１０」、呼び出し先の「メソッド名１１２」、「メッセージ本文１１４」を含む。
【００２４】
整形ログファイル保持部４５は、整形ログが書き込まれた整形ログファイルを保持する。図６は、整形ログファイルに出力された整形ログの一例を示す。図６は、図５の点線で囲まれたログの整形ログに対応する。同図の整形ログには、業務を行っているユーザＩＤ１０４、呼び出し先のクラス名１１０、呼び出し先のメソッド名１１２、メッセージ本文１１４が含まれる。つまり、図６のログから、ログが出力された時刻を示すタイムスタンプ１０２、リクエスト単位でユニークに設定されるリクエストＩＤ１０６、ログ出力を行うサーバのホスト名１０８が取り除かれている。
【００２５】
期待値ログファイル保持部４６は、期待値ログが書き込まれた期待値ログファイルを保持する。期待値ログファイルは、テスト担当者によって動作テストの開始前に作成される。テスト担当者は、過去に同様の動作テストを行ったときに出力されたログを基に期待値ログファイルを作成してもよい。例えば動作テストにより、テスト対象システム１２が保持する４つのログファイルのうちの「system.log（第１ログファイル１６ａ）」、「apl01.log（第３ログファイル１６ｃ）」にログが出力されると期待される場合は、これらに対応する期待値ログファイル「system_kitai.log（第１期待値ログファイル１８ａ）」、「apl01_kitai.log（第３期待値ログファイル１８ｃ）」を作成しておく。期待値ログのデータ構造は、整形ログのデータ構造と同様である。
【００２６】
検証結果保持部４７は、整形ログと期待値ログとが一致するかを検証した結果を示す検証結果情報を保持する。例えば、動作テストの内容を一意に特定するテストケースＩＤと、期待値ログファイルのファイル名と、期待値ログの内容と、整形ログファイルのファイル名と、整形ログの内容と、検証結果（正常・異常の判定結果）を検証結果情報として保持する。
【００２７】
制御部２０は、操作検出部２１、時刻取得部２２、テスト実行部２３、更新時刻取得部２４、取得対象一覧作成部２５、ログファイル取得部２６、ログ抽出部２７、ログ整形部２８、検証部２９、検証結果記録部３０、検証結果提供部３１を含む。操作検出部２１は、キーボードやマウス等の入力装置に対してユーザが入力した操作を検出する。
【００２８】
時刻取得部２２は、テストの実行を指示する操作が入力された場合に、テスト対象システム１２のシステム時刻を取得する。時刻取得部２２は、これを「テスト開始時刻」として開始時刻保持部４１に記録する。
【００２９】
テスト実行部２３は、時刻取得部２２がシステム時刻を取得すると、テスト対象システム１２に対する自動テストを開始する。テスト実行部２３は、所定のＵＲＬをウェブブラウザに渡す。ウェブブラウザは、そのＵＲＬで特定される操作対象のウェブページをウェブアプリケーションサーバ１４から取得し、表示装置に表示させる。テスト実行部２３は、所定の操作を、ウェブブラウザが表示するウェブページに対して実行する。ウェブページに対する操作は、先行技術文献１に示す方法等、公知の方法を使用してよい。
【００３０】
更新時刻取得部２４は、テスト実行部２３による動作テストが完了したことを検出すると、テスト対象システム１２の各種ログファイルの更新時刻を取得する。更新時刻取得部２４は、各種ログファイルのログファイル名と、その更新時刻とを対応付けて更新時刻保持部４２に記録する。
【００３１】
取得対象一覧作成部２５は、検証対象として取得するべきログファイルの一覧を作成する。具体的には、取得対象一覧作成部２５は、開始時刻保持部４１と更新時刻保持部４２とを参照して、更新時刻がテスト開始時刻よりも新しいログファイルの一覧を作成する。つまり、更新時刻がテスト開始時刻よりも新しいログファイルには動作テスト時のログが出力されているため、取得対象一覧作成部２５は、それらを取得すべきログファイルとして一覧に含める。取得対象一覧作成部２５は、作成した一覧を取得対象一覧保持部４３に記録する。例えばテスト開始時刻が「2014-03-23 14:25:38.150」の場合、図３の例では、「system.log」、「apl01.log」の更新時刻がテスト開始時刻より新しいため、これらが取得すべきファイルとされる。
【００３２】
ログファイル取得部２６は、取得対象一覧保持部４３を参照して、その一覧に含まれるログファイルをテスト対象システム１２から取得する。ログファイル取得部２６は、取得したログファイルをログファイル保持部４４に格納する。
【００３３】
ログ抽出部２７は、ログファイルに出力されたログから、検証対象のログを抽出する。具体的には、ログ抽出部２７は、ログファイル保持部４４に保持されるログファイルに出力されたログの中からテスト開始時刻以降に書き込まれたログを抽出する。例えばテスト開始時刻が「2014-03-23 14:25:38.150」の場合、図３の例では、破線で囲まれたログが抽出される。
【００３４】
ログ整形部２８は、ログ抽出部２７により抽出されたログから、テスト実行時に値が決まる要素（別の言い方をすると、予め期待される値を決定することができない要素）を取り除いたログを作成する。実施の形態では、ログが出力された時刻を示すタイムスタンプ１０２、リクエストＩＤ１０６、ホスト名１０８が含まれない整形ログを作成する。なお、実施の形態ではログ整形部２８はさらに、各要素を引用符で囲み、デリミタ文字列を「,」（カンマ）に変換する。ログ整形部２８は、作成した整形ログを整形ログファイルに出力し、これを整形ログファイル保持部４５に格納する。
【００３５】
検証部２９は、整形ログファイルに出力された整形ログと、それに対応する期待値ログファイルに書き込まれている期待値ログとが一致するか否かを検証する。検証部２９は、両者が一致する場合、テスト結果が正常と判定する。その一方、両者が不一致の場合、テスト結果が異常と判定する。なお、不一致のケースとしては、出力されるべきログが出力されていないケース、出力されているログの内容が期待と異なるケース、出力されることが期待されていないログが出力されているケース、が考えられる。出力されることが期待されていないログが出力されているケースの代表例としては、想定しないエラーに関するログが出力されている場合が挙げられる。
【００３６】
検証結果記録部３０は、検証結果情報を検証結果保持部４７へ記録する。検証結果提供部３１は、検証結果の表示を指示する操作が入力された場合に、検証結果保持部４７に保持された検証結果情報を表示装置に表示させる。例えば、検証結果が異常である場合は、期待値ログと整形ログとの不一致部分を強調して表示してもよい。また、想定しないエラーに関するログが出力されている場合は、特に強調して表示してもよい。
【００３７】
以上の構成によるテスト時の動作を以下説明する。
テスト担当者は、テスト開始指示をテスト実行装置１０へ入力する。時刻取得部２２はテスト対象システム１２からシステム時刻を取得し、それをテスト開始時刻とする。テスト実行部２３は、テスト対象システム１２の動作テストを実行する。
【００３８】
更新時刻取得部２４は、テスト実行部２３による動作テストが完了したことを検出すると、テスト対象システム１２の各種ログファイルの更新時刻を取得する。取得対象一覧作成部２５は、それら各種ログファイルのうち、更新時刻がテスト開始時刻よりも新しいログファイルを取得対象として決定し、ログファイル取得部２６が決定されたログファイルを取得する。
【００３９】
検証部２９は、ログファイルに出力されたログからテスト開始時刻以降に書き込まれたログを抽出し、それから整形ログを作成する。検証部２９は、整形ログが、期待値ログと一致するかを検証する。一致する場合はテスト結果が正常と判定し、不一致の場合は異常と判定する。検証結果提供部３１は、ユーザの要求に応じて、検証結果情報を表示装置に表示させる。
【００４０】
実施の形態のテスト実行装置１０によると、更新時刻がテスト開始時刻以降のログがテスト対象システム１２から取得される。すなわち、動作テストの実行時にログが出力されたログファイルだけがテスト対象システム１２から取得される。このため、例えばテスト対象システム１２が保持するすべてのログファイルを取得する場合など、検証する必要のないログファイルまでも取得する場合に比べ、ログファイルの取得に掛かる時間が短縮され、効率的な動作テストを実現できる。
【００４１】
また、テスト実行装置１０によると、ログファイルに出力されたログから、テスト開始時刻以降に出力されたログが抽出される。そのため、ログファイルに出力されたすべてのログを検証対象とする場合に比べ、検証にかかる時間を短縮でき、効率的な動作テストを実現できる。
【００４２】
また、テスト実行装置１０によると、ログが出力された時刻を示すタイムスタンプなど、テスト実行時に値が決まる要素（別の言い方をすると、予め期待される値を決定することができない要素）が取り除かれた整形ログが作成される。そのため、テスト担当者がこのような要素を手作業で取り除く必要がなくなり、ログの検証も含めて動作テストを自動で実行することが可能となる。これにより、作業者の負担が軽減される。加えて、効率的な動作テストを実現できる。
【００４３】
また、テスト実行装置１０によると、動作テストの実行を開始する際のテスト対象システム１２のシステム時刻をテスト開始時刻として取得する。そのため、例えばテスト実行装置１０とテスト対象システム１２とでシステム時刻がずれていても、適確に取得するべきログを取得でき、また抽出するべきログを抽出できる。
【００４４】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００４５】
実施の形態では、特に触れなかったが、整形ログに含める要素を指定できるようにしてもよい。例えば、ログ整形部２８が、ログファイルに出力されたログのデリミタ文字列の指定と整形ログに含める要素の位置の指定とを受け付け、これに基づいて整形ログを作成してもよい。例えば図５のログに対して、ログ整形部２８がデリミタ文字列「 」（スペース）と要素位置「３列目、６列目、７列目、８列目」とを受け付けると、ログ整形部２８は図６の整形ログを作成する。
【００４６】
請求項に記載の各構成要件が果たすべき機能は、実施の形態および変形例において示された各構成要素の単体もしくはそれらの連携によって実現されることも当業者には理解されるところである。
【符号の説明】
【００４７】
１０  テスト実行装置、  １２  テスト対象システム、  １４  ウェブアプリケーションサーバ、  ２０  制御部、  ２１  操作検出部、  ２２  時刻取得部、  ２３  テスト実行部、  ２４  更新時刻取得部、  ２５  取得対象一覧作成部、  ２６  ログファイル取得部、  ２７  ログ抽出部、  ２８  ログ整形部、  ２９  検証部、  ３０  検証結果記録部、  ３１  検証結果提供部、  ４０  データ記録部、  ４１  開始時刻保持部、  ４２  更新時刻保持部、  ４３  取得対象一覧保持部、  ４４  ログファイル保持部、  ４５  整形ログファイル保持部、  ４６  期待値ログファイル保持部、  ４７  検証結果保持部、  １００  テストシステム。
【図１】
2016071400.tif 000003
【図２】
2016071400.tif 000004
【図３】
2016071400.tif 000005
【図４】
2016071400.tif 000006
【図５】
2016071400.tif 000007
【図６】
2016071400.tif 000008