(57)【特許請求の範囲】
【請求項１】
ソフトウェアのテストを支援する情報処理装置であって、
画面の遷移に関する記述を含む複数のテストシナリオと、
前記ソフトウェアを構成するソースコードと、
前記画面と前記画面の生成に関わる前記ソースコードとを対応付けた情報である画面／ソースコード対応情報と、
を記憶する記憶部、
前記テストシナリオの記述を、前記画面を単位とした複数のブロックに分割した結果を含む情報であるテストシナリオ分割情報を生成するテストシナリオ分割部、及び、
前記テストシナリオ分割情報に基づき、前記複数のテストシナリオの夫々に実行優先度を設定するテストシナリオ実行優先度設定部、
を備える、
テスト支援装置。
【請求項２】
請求項１に記載のテスト支援装置であって、
前記テストシナリオ実行優先度設定部は、前記画面別かつ観点毎に、前記複数のテストシナリオの夫々に前記実行優先度を設定する、
テスト支援装置。
【請求項３】
請求項２に記載のテスト支援装置であって、
前記テストシナリオ実行優先度設定部は、特定の前記画面のテストが早期に開始される前記テストシナリオが他の前記テストシナリオよりも優先して実行されるようにするという前記観点に基づき、前記複数のテストシナリオの夫々に前記実行優先度を設定する、
テスト支援装置。
【請求項４】
請求項３に記載のテスト支援装置であって、
前記記憶部は、前記複数のテストシナリオの夫々の実行ログをさらに記憶し、
前記テストシナリオ実行優先度設定部は、前記テストシナリオの夫々について、前記実行ログから前記特定の画面のテストが開始されるタイミングを特定する情報を取得し、取得した前記タイミングに基づき前記複数のテストシナリオの夫々に前記実行優先度を設定する、
テスト支援装置。
【請求項５】
請求項２に記載のテスト支援装置であって、
前記記憶部は、前記複数のテストシナリオの夫々の実行ログをさらに記憶し、
前記テストシナリオ実行優先度設定部は、前記テストシナリオの夫々について、前記実行ログから、特定の前記画面についての不具合の発生頻度に関する情報を取得し、前記特定の画面についての不具合の発生頻度が多い前記テストシナリオが他の前記テストシナリオよりも優先して実行されるようにするという前記観点に基づき、前記実行優先度を設定する、
テスト支援装置。
【請求項６】
請求項１乃至５のいずれか一項に記載のテスト支援装置であって、
前記記憶部は、前記ソースコードをファイルの形式で記憶し、
画面を定義する記述を含む前記ソースコードから、前記画面に関する記述を含むソースコードのファイル名を取得し、前記画面と前記ファイル名とを対応づけた情報を、前記画面／ソースコード対応情報として生成する、画面／ソースコード対応情報生成部をさらに備える、
テスト支援装置。
【請求項７】
請求項１乃至５のいずれか一項に記載のテスト支援装置であって、
前記テストシナリオ分割部は、前記テストシナリオに記述されている、画面の遷移を生じさせる記述に基づきテストシナリオを分割する、
テスト支援装置。
【請求項８】
請求項１乃至５のいずれか一項に記載のテスト支援装置であって、
前記実行優先度に従って前記複数のテストシナリオを順に実行するテストシナリオ実行部をさらに備える、
テスト支援装置。
【請求項９】
請求項８に記載のテスト支援装置であって、
前記テストシナリオ実行部は、特定の前記画面の前記ブロックの実行が完了した時点で前記テストシナリオの実行を停止する、
テスト支援装置。
【請求項１０】
請求項８に記載のテスト支援装置であって、
前記テストシナリオ実行部は、前記テストシナリオの画面の遷移のパターンが他の前記テストシナリオの画面の遷移のパターンの全部又は一部と重複する場合、実行する前記テストシナリオを選択して前記パターンを重複して実行しないようにする、
テスト支援装置。
【請求項１１】
ソフトウェアのテストを支援する方法であって、
情報処理装置が、
画面の遷移に関する記述を含む複数のテストシナリオと、
前記ソフトウェアを構成するソースコードと、
前記画面と前記画面の生成に関わる前記ソースコードとを対応付けた情報である画面／ソースコード対応情報と、
を記憶するステップと、
前記テストシナリオの記述を、前記画面を単位とした複数のブロックに分割した結果を含む情報であるテストシナリオ分割情報を生成するステップと、
前記テストシナリオ分割情報に基づき、前記複数のテストシナリオの夫々に実行優先度を設定するステップと、
を実行する、
テスト支援方法。
【請求項１２】
請求項１１に記載のテスト支援方法であって、
前記情報処理装置は、前記画面別かつ観点毎に、前記複数のテストシナリオの夫々に前記実行優先度を設定する、
テスト支援方法。
【請求項１３】
請求項１２に記載のテスト支援方法であって、
前記情報処理装置は、特定の前記画面のテストが早期に開始される前記テストシナリオが他の前記テストシナリオよりも優先して実行されるようにするという観点に基づき、前記複数のテストシナリオの夫々に前記実行優先度を設定する、
テスト支援方法。
【請求項１４】
請求項１３に記載のテスト支援方法であって、
前記情報処理装置は、
前記複数のテストシナリオの夫々の実行ログをさらに記憶し、
前記テストシナリオの夫々について、前記実行ログから前記特定の画面のテストが開始されるタイミングを特定する情報を取得し、取得した前記タイミングに基づき前記複数のテストシナリオの夫々に前記実行優先度を設定する、
テスト支援方法。
【請求項１５】
情報処理装置に、
画面の遷移に関する記述を含む複数のテストシナリオと、
ソフトウェアを構成するソースコードと、
前記画面と前記画面の生成に関わる前記ソースコードとを対応付けた情報である画面／ソースコード対応情報と、
を記憶する機能、
前記テストシナリオの記述を、前記画面を単位とした複数のブロックに分割した結果を含む情報であるテストシナリオ分割情報を生成する機能、及び
前記テストシナリオ分割情報に基づき、前記複数のテストシナリオの夫々に実行優先度を設定する機能、
を実現するためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テスト支援装置、テスト支援方法、及びプログラム
【背景技術】
【０００２】
特許文献１には、「リグレッションテストを行う場合に、テスト項目が膨大になってしまわないように、変更した箇所に応じて優先的にテストすべき部分を自動的に抽出し、リグレッションテストを効率的、自動的に行うことを可能にする」、「過去に行われたテストのテストケースについての情報を保存しておき、その情報と対象プログラムを解析して得られた依存関係を組み合わせることによりテストを行うリグレッションシステムを構成する」、「情報処理装置が、格納手段に格納された、ソフトウェアプログラムにおける各Ｓｔａｔｅｍｅｎｔの依存関係を参照し、変更されたＳｔａｔｅｍｅｎｔと関係あるＳｔａｔｅｍｅｎｔを抽出し、抽出したＳｔａｔｅｍｅｎｔと関連付けられたテストケースを、格納手段に格納された、過去に実行されたテストケースとソフトウェアプログラムにおける各Ｓｔａｔｅｍｅｎｔとの対応についての情報から、抽出したＳｔａｔｅｍｅｎｔと関連のあるテストケースを検出し、検出されたテストケースの実行を行う」と記載されている。
【特許文献１】特開２００８−２０４４０５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ソフトウェアの開発現場においては、品質並びに開発効率の向上を図るべく、ソースコードの実装並びにテストを機能単位で繰り返し行う開発スタイルが定着している。またＷｅｂアプリケーション等のアプリケーションソフトウェアは、複数の画面によって一つの機能を実現していることがあり、こうしたソフトウェアのテストは、画面を遷移させる操作（ボタンやリンクの操作等）を含むユーザの操作を一連のシーケンスとして記述したテストシナリオを実行することにより行われることが多い。
【０００４】
しかしテストシナリオを用いたテストにおいては、画面とテストシナリオの記述部分との対応や、画面とソースコードとの対応をとることが必ずしも容易ではない。そのため、とくに多数の開発者が携わるような大規模な情報処理システムの開発プロジェクトにおいては、不具合の発見や原因の特定に多大な労力と時間を費やしており、ソフトウェアの開発効率を低下させる要因となっている。
【０００５】
本発明は、こうした背景に鑑みてなされたもので、ソフトウェアのテストを効率よく行うことが可能な、テスト支援装置、テスト支援方法、及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記目的を達成するための本発明の一つは、ソフトウェアのテストを支援するテスト支援装置（情報処理装置）であって、画面の遷移に関する記述を含む複数のテストシナリオと、前記ソフトウェアを構成するソースコードと、前記画面と前記画面の生成に関わる前記ソースコードとを対応付けた情報である画面／ソースコード対応情報と、を記憶する記憶部、前記テストシナリオの記述を、前記画面を単位とした複数のブロックに分割した結果を含む情報であるテストシナリオ分割情報を生成するテストシナリオ分割部、及び、前記テストシナリオ分割情報に基づき、前記複数のテストシナリオの夫々に実行優先度を設定するテストシナリオ実行優先度設定部、を備える。
【発明の効果】
【０００７】
本発明によれば、ソフトウェアのテストを効率よく行うことができる。
【図面の簡単な説明】
【０００８】
【図１】情報処理システム１の概略的な構成並びに機能を示す図である。
【図２】プロジェクト情報管理装置２００及びコンテンツ提供装置３００のハードウェアの一例として示す情報処理装置１０のブロック図である。
【図３】画面／ソースコード対応情報１５１の一例である。
【図４】図３の画面／ソースコード対応情報１５１に対応する画面レイアウトである。
【図５】テストシナリオ分割情報１５２の一例である。
【図６】画面ホップ数を説明する図である。
【図７】テストシナリオ実行優先度情報１５３の一例である。
【図８】テストシナリオ実行処理Ｓ８００を説明するフローチャートである。
【図９】図８の画面／ソースコード対応情報生成処理Ｓ８１１の詳細を説明するフローチャートである。
【図１０】（ａ）は画面定義用スクリプトの一例であり、（ｂ）は（ａ）の画面定義用スクリプトに記述されているファイル名が「top.html」のソースファイル（ＨＴＭＬファイル）の記述例であり、（ｃ）はファイル名が「top.js」のスクリプトファイルの記述例である。
【図１１】図８のテストシナリオ分割情報生成処理Ｓ８１２の詳細を説明するフローチャートである。
【図１２】（ａ）はテストシナリオ１５４の一例であり、（ｂ）は（ａ）のテストシナリオ１５４に関連する画面の例である。
【図１３】図１２（ｂ）の各画面のソースコードの例である。
【図１４】図１２（ａ）に示したテストシナリオ１５４の記述を画面単位で分割した結果を説明する図である。
【発明を実施するための形態】
【０００９】
以下、実施形態につき図面を参照しつつ説明する。尚、以下の説明において「データベース」のことを「ＤＢ」と略記する場合がある。
【００１０】
図１に実施形態として説明する情報処理システム１の概略的な構成を示している。同図に示すように、情報処理システム１は、テスト支援装置１００、プロジェクト情報管理装置２００、及びコンテンツ提供装置３００を含む。これらはいずれも情報処理装置（コンピュータ）であり、通信ネットワーク５を介して互いに通信可能に接続している。通信ネットワーク５は、例えば、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network
）、インターネット等である。
【００１１】
テスト支援装置１００は、ユーザが行うソフトウェアのテストを支援する。本実施形態では、テスト支援装置１００によるテストの対象となるソフトウェアが、インターネット上でＷｅｂサービスを提供するソフトウェアである場合を例として説明する。また以下の説明において想定するテスト支援装置１００のユーザは、例えば、テスト支援装置１００が出力する情報を利用する者や、テストの対象となるソフトウェアの開発者や保守担当者等である。
【００１２】
テスト支援装置１００は、例えば、ユーザが画面を遷移させる記述を含んだ複数のテストシナリオを実行しつつソフトウェアのテストを行うに際し、テストシナリオの実行を制御してユーザが効率よくテストを行うことができるようにする。例えば、テスト支援装置１００は、ユーザが現在開発中の所定のソースコード（例えば、Ｗｅｂ記述言語（ＨＴＭ
Ｌ（HyperText Markup Language），ＸＨＴＭＬ（eXtensible HyperText Markup Language），ＸＭＬ（eXtensible Markup Language）等）、各種スクリプト（ＪａｖａＳｃｒｉ
ｐｔ（登録商標）スクリプト等））で記述された画面（以下、開発画面と称する。）についてのテストを行うに際し、複数のテストシナリオの夫々に実行優先度を設定し、設定した実行優先度に従った順序で各テストシナリオを実行する。例えば、テストの対象となるソフトウェアの規模が大きく、テストシナリオが長大である場合には、テストシナリオの実行を開始してからユーザが検証しようとしている開発画面が実行されるまでに時間を要することがあるが、開発画面により早く到達するテストシナリオが優先して実行されるように上記実行優先度を設定することで、開発画面のテストが実行されるタイミングを早めることができ、ユーザは開発画面のテスト結果を迅速に取得することができる。
【００１３】
テスト支援装置１００は、上記実行優先度をユーザが指定する観点に従って設定する。例えば、テスト支援装置１００は、開発画面のテストが早期に開始されるように上記実行優先度を設定する。またテスト支援装置１００は、過去にテストシナリオを実行した際に取得した実行ログから開発画面の不具合の発生頻度に関する情報を取得し、不具合の発生頻度が多いテストシナリオが優先して実行されるように上記実行優先度を設定する。このようにテスト支援装置１００は、上記実行優先度をユーザが指定する観点に従って設定するので、ユーザニーズに応じた形で開発画面のテストを行うことができる。尚、テスト支援装置１００は、上記実行優先度の設定にあたり、テストシナリオの記述を画面単位で分割し、テストシナリオの記述を画面単位で効率よく把握できるようにする。
【００１４】
図２は、テスト支援装置１００、プロジェクト情報管理装置２００、及びコンテンツ提供装置３００を実現するハードウェアの一例として示す情報処理装置１０（コンピュータ）のブロック図である。情報処理装置１０は、例えば、ネットワークストレージとして機能するものであってもよい。尚、図１では、テスト支援装置１００、プロジェクト情報管理装置２００、及びコンテンツ提供装置３００が、夫々、独立したハードウェアとして構成されるように描いているが、これらのうちの２つ以上が共通のハードウェア（プラットフォーム）によって実現されていてもよい。またこれらのうちの一つ以上を、仮想的な情報処理装置（例えば、クラウドシステムによって提供されるクラウドサーバ等）を用いて実現してもよい。
【００１５】
同図に示すように、情報処理装置１０は、プロセッサ１１、主記憶装置１２、補助記憶装置１３、入力装置１４、出力装置１５、及び通信装置１６を備える。これらは図示しないバス等の通信手段を介して互いに通信可能に接続されている。
【００１６】
プロセッサ１１は、例えば、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro Processing Unit）を用いて構成されている。プロセッサ１１が、主記憶装置１２に格納されているプログラムを読み出して実行することにより、情報処理装置１０の様々な機能が実現される。主記憶装置１２は、プログラムやデータを記憶する装置であり、例えば、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、ＮＶＲＡＭ（Non Volatile
RAM）等である。補助記憶装置１３は、例えば、ハードディスクドライブ、ＳＳＤ（Solid State Drive）、光学式記憶装置、記録媒体の読取／書込装置等である。補助記憶装置
１３に格納されているプログラムやデータは主記憶装置１２に随時ロードされる。
【００１７】
入力装置１４は、例えば、キーボード、マウス、タッチパネル等である。出力装置１５は、例えば、液晶モニタ、ＬＣＤ（Liquid Crystal Display）、グラフィックカード、スピーカ等である。通信装置１６は、通信ネットワーク５を介して他の装置と通信する通信インタフェースであり、例えば、ＮＩＣ（Network Interface Card）、無線通信モジュール等である。入力装置１４や出力装置１５は必ずしも必須の構成ではなく、例えば、情報処理装置１０が通信装置１６を介して他の装置との間で情報の入力や出力を行う構成とし
てもよい。
【００１８】
続いて、図１とともに、テスト支援装置１００が備える機能、及びテスト支援装置１００が管理する情報（データ）について説明する。同図に示すように、テスト支援装置１００は、Ｗｅｂブラウザ１０１、ソースコード取得部１０２、画面／ソースコード対応情報生成部１０３、テストシナリオ取得部１０４、テストシナリオ分割情報生成部１０５、テストシナリオ実行優先度設定部１０６、テストシナリオ実行部１０７、実行ログ取得部１０８、及び記憶部１５０を備える。これらの機能は、テスト支援装置１００のプロセッサ１１が、主記憶装置１２に格納されているプログラムを読み出して実行することにより実現される。これらの機能の全部又は一部をハードウェアとして実現してもよい。これらの機能に加え、テスト支援装置１００において、各機能の起動／管理やファイルシステムによるデータの管理等を行う、オペレーティングシステム(Operating System)や制御プログラム等のソフトウェアが動作していてもよい。
【００１９】
同図に示すように、記憶部１５０は、画面／ソースコード対応情報１５１、テストシナリオ分割情報１５２、テストシナリオ実行優先度情報１５３、テストシナリオ１５４、実行ログ１５５、及びソースコード１５６を記憶する。
【００２０】
同図に示す機能のうち、Ｗｅｂブラウザ１０１は、例えば、テストシナリオ１５４に従ってソースコード１５６を読み込み、ソースコード１５６に基づくコンテンツを記載した画面（Ｗｅｂページ）の生成や表示、コンテンツの再生等の処理を行う。上記処理に際し、Ｗｅｂブラウザ１０１は、コンテンツ提供装置３００に適宜コンテンツの取得要求を送信してコンテンツ提供装置３００からコンテンツデータ３０２を取得する。
【００２１】
ソースコード取得部１０２は、通信ネットワーク５を介してプロジェクト情報管理装置２００から適宜ソースコード１５６を取得する。尚、ソースコード１５６は、例えば、Ｗｅｂ記述言語や各種スクリプトで記述されたデータである。テスト支援装置１００は、これらのデータを、例えば、ファイルシステムにより取り扱われるファイルを単位として管理する。
【００２２】
画面／ソースコード対応情報生成部１０３は、記憶部１５０が記憶しているソースコード１５６（ソースファイル）に基づき、画面／ソースコード対応情報１５１を生成する。画面／ソースコード対応情報１５１の詳細については後述する。
【００２３】
テストシナリオ取得部１０４は、通信ネットワーク５を介してプロジェクト情報管理装置２００から適宜テストシナリオ１５４を取得する。テストシナリオ１５４は、例えば、自然言語で記述された複数のステップ（行）を含む。テストシナリオ１５４は、所定の業務のシナリオに沿ってＷｅｂページの操作（画面）を行い画面遷移を発生させる。テストシナリオ１５４は、画面遷移を発生させるための記述や画面についてどのようなテストを行うかを示す記述を含む。
【００２４】
テストシナリオ分割情報生成部１０５は、テストシナリオ１５４を、ソースコード１５６に基づき生成される画面を単位とした複数のブロックに分割し、分割した結果を記載したテストシナリオ分割情報１５２を生成する。テストシナリオ分割情報１５２の詳細については後述する。
【００２５】
テストシナリオ実行優先度設定部１０６は、テストシナリオ取得部１０４が取得した複数のテストシナリオ１５４の夫々に実行優先度を設定し、設定した結果をテストシナリオ実行優先度情報１５３として記憶する。実行優先度の具体的な設定方法やテストシナリオ実行優先度情報１５３の詳細については後述する。
【００２６】
テストシナリオ実行部１０７は、テストシナリオ１５４に設定されている実行優先度に従って各テストシナリオ１５４を順に実行する。テストシナリオ１５４の実行に際し、テストシナリオ実行部１０７は、例えば、Ｗｅｂブラウザ１０１を制御して、テストシナリオ１５４に従った操作入力の手順を自動的に実行する。テストシナリオ実行部１０７の機能を実現するソフトウェアとして、例えば、「Ｃｕｃｕｍｂｅｒ（登録商標）」、「Ｔｕｒｎｉｐ（登録商標）」等がある。テストシナリオ実行部１０７は、例えば、コンテンツ提供装置３００において動作するＷｅｂサーバと連携して動作するものであってもよい。
【００２７】
実行ログ取得部１０８は、テストシナリオ１５４の実行に際しテストシナリオ実行部１０７が生成する情報（各ステップの実行開始／終了時刻、エラーの発生有無、エラー発生箇所を特定する情報、発生したエラーの内容、実行履歴等）を取得し、取得した情報を実行ログ１５５として記憶する。
【００２８】
プロジェクト情報管理装置２００は、ユーザが携わるプロジェクト（開発、保守、設計等のプロジェクト）に関する情報を統合的に蓄積／管理する。プロジェクト情報管理装置２００は、プロジェクトに関する情報が管理されるプロジェクトＤＢ２０２と、プロジェクトＤＢ２０２を管理するＤＢ管理部２０１とを有する。ＤＢ管理部２０１は、例えば、ＤＢＭＳ（DataBase Management System）や分散型バージョン管理システム等の機能を有する。プロジェクト情報管理装置２００は、例えば、リポジトリとして管理されるソフトウェアやデータ項目にメタデータ（仕様書、設計書、モデル、ダイアグラム、情報操作ルール等）を対応づけた情報をプロジェクトＤＢ２０２に管理する。
【００２９】
コンテンツ提供装置３００は、コンテンツデータ３０２を記憶し、コンテンツデータ３０２を配信するコンテンツ配信部３０１を有する。コンテンツデータ３０２は、例えば、所定のデータフォーマットで記述されたデータ（文字データ、音声データ、画像データ、動画データ等）である。コンテンツ提供装置３００は、前述したコンテンツの取得要求を受信すると、該当するコンテンツデータ３０２をテスト支援装置１００に送信する。
【００３０】
尚、テストシナリオ１５４、実行ログ１５５、ソースコード１５６、プロジェクトＤＢ２０２、及びコンテンツデータ３０２は、必ずしも以上に示した形態で配置されている必要はなく、これら各データの配置形態は情報処理システム１の構成に応じて適宜変更可能である。
【００３１】
＜画面／ソースコード対応情報＞
図３に画面／ソースコード対応情報１５１の一例を、また図４に図３の画面／ソースコード対応情報１５１に対応する画面レイアウトを示す。図３に示すように、画面／ソースコード対応情報１５１は、画面ＩＤ１５１１とソースコードＩＤ１５１２との対応を示す情報を含む。この例では、画面ＩＤ１５１１として、ユーザが画面の識別子として用いている画面名を、またソースコードＩＤ１５１２として、ソースコードが記述されているファイルのファイル名を用いている。尚、画面ＩＤ１５１１とソースコードＩＤ１５１２との対応は、プロジェクトの形態や情報処理システム１の態様等に応じて様々である。また図４の「サンプル画面」のように、一つの画面が複数のソースコード（ソースファイル）で構成されている場合もあり、画面ＩＤ１５１１とソースコードＩＤ１５１２との対応は、必ずしも１対１の関係であるとは限らない。
【００３２】
図３乃至図４に示すように、この例では、画面ＩＤ１５１１「サンプル画面」に対応するソースファイル（ソースコード）として、「sample.html」、「sample.js」、「menu.html」、「sidebar.html」、「contents.html」、及び「contents.js」が存在する。また
、図４に示すように、「サンプル画面」では、「sample.html」の内部で「menu.html」、
「sidebar.html」、及びcontents.htmlを用いている。この例では、「sample.html」に記述されている単数または複数の画面部品の挙動は「sample.js」に、「contents.html」に記述されている単数または複数の画面部品の挙動は「contents.js」に、夫々記述されて
いる。
【００３３】
また画面ＩＤ１５１１「トップ画面」に対応するソースファイル（ソースコード）として、「top.html」及び「top.js」が存在する。「top.html」に記述されている単数または複数の画面部品の挙動は「top.js」に記述されている。
【００３４】
また画面ＩＤ１５１１「確認画面」に対応するソースファイル（ソースコード）として、「confirm.html」及び「confirm.js」が存在する。「confirm.html」に記述されている単数または複数の画面部品の挙動は「confirm.js」に記述されている。
【００３５】
また画面ＩＤ１５１１「ポータル画面」に対応するソースファイルとして、「portal.html」が存在する。「portal.html」に記述されている単数または複数の画面部品は挙動を定義する必要がなく、スクリプトファイルは存在しない。
【００３６】
＜テストシナリオ分割情報＞
図５にテストシナリオ分割情報１５２の一例を示す。同図おいて、テストシナリオＩＤ１５２１には、テストシナリオ１５４ごとに付与される識別子であるテストシナリオＩＤが設定される。また画面ホップ数１５２２には、テストシナリオ１５４の記述を画面単位で分割して得られる各ブロックが、当該テストシナリオ１５４の中で何番目に位置しているかを示す情報が設定される。同図において、上記各ブロックは、画面ホップ数「１」、「２」、「３」・・・ごとに設けられた枠内に記載されている画面名で特定される。
【００３７】
同図に示したテストシナリオ分割情報１５２は、テストシナリオＩＤが「１」のテストシナリオ１５４の記述が、「トップ画面」に関するブロック、「確認画面」に関するブロック、及び「ポータル画面」に関するブロックの３つのブロックに分割されていることを示している。またこのテストシナリオ分割情報１５２は、テストシナリオＩＤが「１」のテストシナリオ１５４を実行した場合、「トップ画面」のテストが行われ、続いて「トップ画面」から「確認画面」へ画面遷移した上で「確認画面」のテストが行われ、最後に「確認画面」から「ポータル画面」へ画面遷移した上で「ポータル画面」のテストが行われる事を示している。
【００３８】
図６とともに画面ホップ数について具体的に説明する。同図において、白抜き矢線は画面の遷移を表している。この例の場合、テストシナリオ（１）では、Ａ画面→Ｂ画面→Ｃ画面の順に、テストシナリオ（２）では、Ｂ画面→Ｃ画面の順に、テストシナリオ（３）では、Ｅ画面→Ｆ画面→Ｇ画面→Ａ画面→Ｂ画面の順に、テストシナリオ（４）では、Ｆ画面→Ｇ画面の順に画面のテストが実行される。
【００３９】
画面ホップ数は、テストシナリオ１５４に従ってテストを行った場合に、テストの対象となる画面をテスト開始時から数えた順序を表わす。例えば、同図において、テストシナリオ（１）では、Ｂ画面の画面ホップ数は「２」となり、テストシナリオ（２）では、Ｂ画面の画面ホップ数は「１」となり、テストシナリオ（３）では、Ｂ画面の画面ホップ数は「５」となる。尚、テストシナリオ（４）では、Ｂ画面はテストの対象になっておらず、この場合の画面ホップ数は不定（無し）となる。
【００４０】
尚、テスト対象となる画面がＢ画面であり、各テストシナリオの実行優先度を画面ホップ数を観点として設定する場合、図６の例では、テストシナリオ（２）→テストシナリオ（１）→テストシナリオ（３）の順に実行優先度が設定される。
【００４１】
＜テストシナリオ実行優先度情報＞
テストシナリオ実行優先度情報１５３には、テストシナリオ実行優先度設定部１０６が設定した、画面別かつ観点毎の、各テストシナリオ１５４の実行優先度が設定される。
【００４２】
図７に、テストシナリオ実行優先度情報１５３の一例を示す。テストシナリオ実行優先度情報１５３は、画面別かつ観点毎に設定されたテストシナリオ１５４の実行優先度を示す情報を含む。同図は、「トップ画面」について３つの観点（「画面ホップ数」、「到達時間」、及び「不具合発生回数」）毎に実行優先度を設定した場合である。
【００４３】
同図において、「画面ホップ数」を観点とした実行優先度には「トップ画面」の画面ホップ数が設定される。
【００４４】
また同図において、「到達時間」を観点とした実行優先度は、テストシナリオ実行優先度設定部１０６が、各テストシナリオ１５４の過去の実行時に取得された実行ログ１５５に基づき設定する。例えば、テストシナリオ実行優先度設定部１０６は、実行ログ１５５から把握される、該当画面に到達するまでの時間（例えば、テストシナリオ１５４の実行が開始されてから該当画面のブロックの実行が開始されるまでの時間（開始タイミング））が短いものほど実行優先度が高くなるように、「到達時間」を観点とした実行優先度を設定する。
【００４５】
また同図において、「不具合発生回数」を観点とした実行優先度は、テストシナリオ実行優先度設定部１０６が、各テストシナリオ１５４の過去の実行時に取得された実行ログ１５５に基づき設定する。例えば、テストシナリオ実行優先度設定部１０６は、実行ログ１５５から把握される、該当画面の不具合発生回数が多いものほど実行優先度が高くなるように、「不具合発生回数」を観点とした実行優先度を設定する。
【００４６】
ここで例えば、特定の開発画面のテストを早期に開始させたい場合、ユーザは、テストシナリオ１５４の実行優先度を設定する際の観点として「画面ホップ数」又は「到達時間」を選択する。また例えば、特定の開発画面の不具合を早期に発見したい場合、ユーザは、テストシナリオ１５４の実行優先度を設定する際の観点として「不具合発生回数」を選択する。
【００４７】
尚、以上に例示した観点は一例に過ぎず、これら以外の観点を設定してもよい。また例えば、複数の観点の夫々から求まる実行優先順位を総合的に判断してテストシナリオ１５４の実行優先度を設定するようにしてもよい（例えば、２つの観点の夫々に基づく実行優先度が逆転している場合にいずれか一方の観点に基づく実行優先度を優先して採用する等）。また対象となる画面に関する記述を含んでいないテストシナリオ１５４を実行の対象から除外するようにしてもよい。その場合、例えば、テストシナリオ実行優先度情報１５３の該当するテストシナリオの欄に「−」等の所定の記号を設定する。
【００４８】
＜処理説明＞
続いて、以上の構成からなる情報処理システム１において行われる処理について説明する。
【００４９】
図８は、ソフトウェアが表示する画面のテストに際してテスト支援装置１００が行う処理（以下、テストシナリオ実行処理Ｓ８００と称する。）を説明するフローチャートである。
【００５０】
まずテスト支援装置１００は、画面／ソースコード対応情報１５１を生成する処理（以
下、画面／ソースコード対応情報生成処理Ｓ８１１と称する。）、及びテストシナリオ分割情報１５２を生成する処理（以下、テストシナリオ分割情報生成処理Ｓ８１２と称する。）を行う（Ｓ８１１，Ｓ８１２）。これらの処理の詳細については後述する。
【００５１】
続いて、テスト支援装置１００は、ユーザから、ユーザＩＤ（例えば、開発画面の開発に関係する開発者名等）及び観点の指定を受け付ける（Ｓ８１３）。ユーザは単数又は複数の観点を指定することができる。
【００５２】
続いて、テスト支援装置１００は、Ｓ８１３で受け付けたユーザＩＤに対応づけられているソースコードを、プロジェクト情報管理装置２００のプロジェクトＤＢ２０２から取得し、ソースコード１５６として記憶する（Ｓ８１４）。尚、本例では記述していないが、例えば、ユーザから受け付けた開発日時等の情報に基づき、プロジェクトＤＢ２０２から取得するソースコードを絞り込むようにしてもよい。
【００５３】
続いて、テスト支援装置１００は、取得したソースコードが格納されているソースファイルを特定し（Ｓ８１５）、画面／ソースコード対応情報１５１から、当該ソースファイルに対応する画面（以下、開発画面と称する。）を特定する（Ｓ８１６）。
【００５４】
続いて、テスト支援装置１００は、テストシナリオ分割情報１５２を参照し、Ｓ８１６で特定した開発画面に関する記述を含むテストシナリオ１５４を取得する（Ｓ８１７）。尚、本例では、テスト支援装置１００が複数のテストシナリオ１５４を取得するものとする。
【００５５】
続いて、テスト支援装置１００は、Ｓ８１３でユーザから受け付けた観点に基づき、Ｓ８１７で取得した複数のテストシナリオ１５４の夫々に実行優先度を設定し、その結果をテストシナリオ実行優先度情報１５３として記憶する（Ｓ８１８）。
【００５６】
続いて、テスト支援装置１００は、未実行のテストシナリオ１５４のうち実行優先度の最も高いものを実行する（Ｓ８１９）。
【００５７】
続いて、テスト支援装置１００は、開発画面に関するテストの実行が成功したか否かを判定する（Ｓ８２０）。判定が真であれば（Ｓ８２０：ＹＥＳ）、処理はＳ８２１に進む。判定が偽であれば（Ｓ８２０：ＮＯ）、処理はＳ８２２に進み、テスト支援装置１００は、エラー情報の出力等の処理を行った後、テストシナリオ１５４の実行を終了する。尚、このように開発画面に関するテストが終了した段階でテストシナリオ１５４の実行を終了させてもよいし、そのままテストシナリオを最後まで実行するようにしてもよい。前者のように開発画面に関するテストが終了した段階でテストシナリオ１５４の実行を終了させる場合、ユーザは早期にテストの結果を取得することができ、不具合の発見に要する時間を短縮することができる。
【００５８】
Ｓ８２１では、テスト支援装置１００は、開発画面に関するテストシナリオ１５４のうち未実行のテストシナリオ１５４があるか否かを判定する。判定が真であれば（Ｓ８２１：ＹＥＳ）、処理はＳ８１９に戻り、未実行のテストシナリオ１５４を実行する。判定が偽であれば（Ｓ８２１：ＮＯ）、テスト支援装置１００は、テストシナリオ実行処理Ｓ８００を終了する。
【００５９】
尚、以上に説明したテストシナリオ実行処理Ｓ８００において、あるテストシナリオ１５４の画面遷移のパターンが他のテストシナリオ１５４の画面遷移のパターンの全部又は一部と重複している場合には、テストの効率を向上すべく、実行するテストシナリオ１５４を選択することにより重複するパターンについて重複して実行しないようにしてもよい
。例えば、図６では、テストシナリオ（１）の画面遷移のパターンはＡ画面→Ｂ画面→Ｃ画面であり、テストシナリオ（２）の画面遷移のパターンはＢ画面→Ｃ画面であり、いずれもＢ画面→Ｃ画面という画面遷移のパターンを含んでいるが、この場合、例えば、テスト支援装置１００がテストシナリオ（２）を実行しないようにする。
【００６０】
図９は、図８の画面／ソースコード対応情報生成処理Ｓ８１１の詳細を説明するフローチャートである。以下、同図とともに説明する。
【００６１】
まずテスト支援装置１００は、記憶しているソースコード１５６（ソースファイル）の中から、画面の定義を行っているソースコード（以下、画面定義用スクリプトファイルと称する。）を取得する。例えば、テスト支援装置１００は、ソースコード１５６（ソースファイル）の中から、画面名とソースファイル名（例えば、ＨＴＭＬファイル名、ＨＴＭＬファイルＩＤ、スクリプトファイル名、スクリプトＩＤ等）との組が記述されている画面定義用スクリプトファイルを取得する（Ｓ９１１）。
【００６２】
続いて、テスト支援装置１００は、Ｓ９１１で取得した画面定義用スクリプトファイルから、画面名に対応づけられているソースファイル名を取得し（Ｓ９１２）、画面名とソースファイル名との組を画面／ソースコード対応情報１５１として記憶する（Ｓ９１３）。
【００６３】
図１０（ａ）に画面定義用スクリプトの一例を示す。この画面定義用スクリプトには、画面名として「トップ画面」が、またソースファイル名（ＨＴＭＬファイル名）として「top.html」が記述されている。またこの画面定義用スクリプトには、「トップ画面」に対応するスクリプトＩＤとして「TopCtrl」が記述されている。尚、このように画面定義用
スクリプトにスクリプトファイル名ではなくスクリプトＩＤが記述されている場合には、後の処理にてスクリプトＩＤからスクリプトファイル名を特定する。
【００６４】
図９に戻り、続いて、テスト支援装置１００は、画面／ソースコード対応情報１５１に記載されているソースファイルを解析してスクリプトＩＤを取得する（Ｓ９１４）。
【００６５】
図１０（ｂ）に（ａ）の画面定義用スクリプトに記述されているファイル名が「top.html」のソースファイル（ＨＴＭＬファイル）の記述例を示す。この例では「controller」属性に「TopCtrl」が設定されている。尚、テスト支援装置１００が、例えば、スクリプ
トＩＤを指定することが可能な属性を予め記憶しておくことで、ソースファイルからスクリプトＩＤを効率よく取得することができる。また属性以外の情報に基づきスクリプトＩＤを取得してもよい。
【００６６】
図９に戻り、続いて、テスト支援装置１００は、Ｓ９１２及びＳ９１４で取得したスクリプトＩＤをリスト化する（Ｓ９１５）。
【００６７】
続いて、テスト支援装置１００は、Ｓ９１５でリスト化したスクリプトＩＤのうち、未選択のスクリプトＩＤを選択する（Ｓ９１６）。
【００６８】
続いて、テスト支援装置１００は、記憶しているソースコード１５６（ソースファイル）から、選択中のスクリプトＩＤが記述されているスクリプトファイルを検索し、検索されたスクリプトファイルの名称（スクリプトファイル名）を取得する（Ｓ９１７）。そしてテスト支援装置１００は、取得したスクリプトファイル名と、画面定義用スクリプトファイルに記述されている画面名との組を、画面／ソースコード対応情報１５１として記憶する（Ｓ９１８）。
【００６９】
図１０（ｃ）に、スクリプトＩＤを含む（定義している）スクリプトファイルの一例を示す。このスクリプトファイル「top.js」では、スクリプトＩＤとして「TopCtrl」が定
義されている。
【００７０】
図９に戻り、続いて、テスト支援装置１００は、Ｓ９１５でリスト化したスクリプトＩＤのうち、Ｓ９１６で未選択のものがあるか否か判定する（Ｓ９１９）。判定が真であれば（Ｓ９１９：ＹＥＳ）、処理はＳ９１６に戻る。判定が偽であれば（Ｓ９１９：ＮＯ）、処理はＳ９２０に進む。
【００７１】
Ｓ９２０では、テスト支援装置１００は、記憶しているソースファイル２１４にＳ９１１で未取得の画面定義用スクリプトファイルが存在するか否かを判定する。判定が真であれば（Ｓ９２０：ＹＥＳ）、処理はＳ９１１に戻り、他の画面定義用スクリプトファイルを取得し、新たに取得した画面定義用スクリプトファイルについて同様の処理を繰り返す。判定が偽であれば（Ｓ９２０：ＮＯ）、処理は図８のＳ９１２に進む。
【００７２】
図１１は、図８のテストシナリオ分割情報生成処理Ｓ８１２の詳細を説明するフローチャートである。また図１２（ａ）は、テストシナリオ分割情報生成処理Ｓ８１２の説明に用いるテストシナリオ１５４、図１２（ｂ）は、図１２（ａ）のテストシナリオ１５４に関連する画面の例である。また図１３は、図１２（ｂ）の各画面に対応するソースコードの例である。
【００７３】
図１２（ａ）に示すように、例示したテストシナリオ１５４には、次のＡ）〜Ｇ）の内容が記述されている。
Ａ）top.htmlを表示
Ｂ）ユーザ名入力(id="hitachi")
Ｃ）パスワード入力(pass="pass")
Ｄ）ログイン(id="login")ボタンを押す
Ｅ）テキストエリアに"前回ログイン時間"が表示されていること
Ｆ）(id="next")ボタンを押す
Ｇ）ログイン名に"hitachi"が表示されていること
【００７４】
このテストシナリオ１５４は、トップ画面のテストを行った後、トップ画面から確認画面に遷移し、続いて確認画面のテストを行った後、確認画面からポータル画面に遷移し、最後にポータル画面のテストを行うものである。尚、この例に示すように、テストシナリオ１５４の記述には画面毎の区切りを示す情報が含まれていない。このため、ある画面のテストがいずれの行から始まりいずれの行で終わるのかを直接に特定することができない。
【００７５】
以下、図１１とともにテストシナリオ分割情報生成処理Ｓ８１２について説明する。同図に示すように、まずテスト支援装置１００は、記憶しているテストシナリオ１５４のうち未取得のものを一つを取得する（Ｓ１１１１）。
【００７６】
続いて、テスト支援装置１００は、取得したテストシナリオ１５４から、当該テストシナリオ１５４を実行した際に最初にテストの対象になる画面に関する記述を特定する（Ｓ１１１２）。ここでテストシナリオ１５４が図１２（ａ）に例示したテストシナリオ１５４である場合、テスト支援装置１００は、Ａ）「top.htmlを表示」の「top.html」という記述と画面／ソースコード対応情報１５１とに基づき、「トップ画面」のテストが開始されると判定する。尚、テスト支援装置１００が、テストシナリオ１５４の実行内容を判定する方法は必ずしも限定されず、例えば、「・・ボタンを含むウィンドウを選択する」、「・・というタイトルのウィンドウを選択する」等の記述に基づきテストが開始されると
判定してもよい。
【００７７】
続いて、テスト支援装置１００は、後続行に画面の遷移を生じさせる記述があるか否かを判定する（Ｓ１１１３）。判定が真であれば（Ｓ１１１３：ＹＥＳ）、処理はＳ１１１４に進む。判定が偽であれば（Ｓ１１１３：ＮＯ）、処理はＳ１１１６に進む。
【００７８】
例えば、テストシナリオ１５４が図１２（ａ）に例示したテストシナリオである場合、テスト支援装置１００は、「Ｄ）ログイン(id="login")ボタンを押す」の行について、「トップ画面」のソースファイルである「top.html」の記述から、「id="login"」のボタンが押されると「goLogin」関数が呼ばれ、また「トップ画面」のソースファイルである「top.js」の記述から「confirm.html」に遷移すると解釈し、当該行が画面の遷移を生じさ
せる記述であると判定する。またこのとき、テスト支援装置１００は、画面／ソースコード対応情報１５１から、上記ボタンが押された場合の遷移先の画面が「確認画面」であることを特定する。
【００７９】
Ｓ１１１４では、テスト支援装置１００は、テストシナリオ１５４の記述を画面単位のブロックに分割し、分割した結果をテストシナリオ分割情報１５２として記憶する。
【００８０】
Ｓ１１１５では、テスト支援装置１００は、取得中のテストシナリオ１５４に後続行があるか否かを判定する。判定が真であれば（Ｓ１１１５：ＹＥＳ）、処理はＳ１１１３に戻り、後続行についてＳ１１１３からの処理を繰り返す。判定が偽であれば（Ｓ１１１５：ＮＯ）、処理はＳ１１１６に進む。
【００８１】
図１２（ａ）に例示したテストシナリオ１５４では、テスト支援装置１００は、後続行の「Ｆ）次へ(id="next")ボタンを押す」について、当該行が画面の遷移を生じさせる記
述であると判定する。またテスト支援装置１００は、図１３に示す「確認画面」のソースファイル「confirm.html」の記述から、「id="next"」のボタンが押されると「goNext」
関数が呼ばれ、また「確認画面」のソースファイル「confirm.js」の記述から、遷移先が「ポータル画面（portal.html）であることを特定する。
【００８２】
Ｓ１１１６では、テスト支援装置１００は、未取得のテストシナリオ１５４があるか否かを判定する。判定が真であれば（Ｓ１１１６：ＹＥＳ）、処理はＳ１１１１に戻る。判定が偽であれば（Ｓ１１１６：ＮＯ）、処理は図８のＳ８１３に進む。
【００８３】
尚、テストシナリオ分割情報生成処理Ｓ８１２により、図１２（ａ）に示したテストシナリオ１５４は、例えば、図１４に示すように、即ち、「トップ画面」に関するＡ）〜Ｄ）のブロック、「確認画面」に関するＥ）〜Ｆ）のブロック、「ポータル画面」に関するＧ）のブロック、の３つのブロックに分割される。
【００８４】
尚、以上の説明では、テストシナリオ１５４の分割に際し、画面の構成部品であるボタンに関する記述を参照したが、文字や画像等のリンク部品等の他の記述を参照してもよい。
【００８５】
以上、詳細に説明したように、本実施形態のテスト支援装置１００は、テストシナリオ１５４の記述を画面を単位として複数のブロックに分割したテストシナリオ分割情報１５２を生成するので、テストシナリオ１５４の記述を画面単位で把握することが可能となり、例えば、テストシナリオ１５４の記述のうち開発画面に対応する部分を特定することが可能となる。このため、例えば、開発画面のテストの結果を早期に取得するにはいずれのテストシナリオ１５４を優先して実行すればよいか、開発画面の不具合に関する情報を早期に取得するにはいずれのテストシナリオ１５４を優先して実行すればよいか等の判定が
可能となる。そして判定の結果に応じて複数のテストシナリオの夫々に実行優先度を設定することで、ユーザが求める情報を迅速かつ効率よく提供することができる。
【００８６】
尚、例えば、図６に示した４つのテストシナリオ１５４について、ユーザがテスト結果を取得しようとしている開発画面がＢ画面である場合に、「画面ホップ数」を観点として実行優先度を設定すれば、テストシナリオ（２）→テストシナリオ（１）→テストシナリオ（３）の順となる。これを例えば、テストシナリオ（４）→テストシナリオ（１）→テストシナリオ（２）→テストシナリオ（３）の順にテストシナリオが実行される場合と比較すると、まずテストシナリオ（４）を実行しないことでテストシナリオ（４）の実行時間が削減される。またテストシナリオ（２）をテストシナリオ（１）よりも先に実行することで、テストシナリオ（１）のＡ画面のテストの時間分が削減されることとなり、ユーザは早期にＢ画面のテスト結果を取得することができる。
【００８７】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、上記の実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、上記実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００８８】
例えば、本発明は、例えば、ソフトウェアによって表示される画面のレビューに際し特定の画面を迅速に表示させたい場合等、様々な目的に適用することができる。
【００８９】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、ま
たはＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【００９０】
また、上記の各図において、制御線や情報線は説明上必要と考えられるものを示しており、必ずしも実装上の全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【００９１】
５  通信ネットワーク、１００  テスト支援装置、１０１  Ｗｅｂブラウザ、１０２  ソースコード取得部、１０３  画面／ソースコード対応情報生成部、１０４  テストシナリオ取得部、１０５  テストシナリオ分割情報生成部、１０６  テストシナリオ実行優先度設定部、１０７  テストシナリオ実行部、１０８  実行ログ取得部、１５０  記憶部、１５１  画面／ソースコード対応情報、１５２  テストシナリオ分割情報、１５３  テストシナリオ実行優先度情報、１５４  テストシナリオ、１５５  実行ログ、１５６  ソースコード、２００  プロジェクト情報管理装置、２０１  ＤＢ管理部、２０２  プロジェクトＤＢ、３００  コンテンツ提供装置、３０１  コンテンツ配信部、３０２  コンテンツデータ、Ｓ８００  テストシナリオ実行処理、Ｓ８１１  画面／ソースコード対応情報生成処理、Ｓ８１２  テストシナリオ分割情報生成処理
【図１】
0006441786.tif 000002
【図２】
0006441786.tif 000003
【図３】
0006441786.tif 000004
【図４】
0006441786.tif 000005
【図５】
0006441786.tif 000006
【図６】
0006441786.tif 000007
【図７】
0006441786.tif 000008
【図８】
0006441786.tif 000009
【図９】
0006441786.tif 000010
【図１０】
0006441786.tif 000011
【図１１】
0006441786.tif 000012
【図１２】
0006441786.tif 000013
【図１３】
0006441786.tif 000014
【図１４】
0006441786.tif 000015