(57)【要約】【課題】試験ケース生成の際の作業時間や試験ケースの漏れを軽減し、設計段階からのトレーサビリティを確保しながら試験ケースを自動で生成する。【解決手段】定義入力部２は、操作画面に表示されるＧＵＩ部品の定義と表示位置の情報を含む旧画面定義ファイルＤ１１Ｏ、新画面定義ファイルＤ１１Ｎ、ＧＵＩ部品と監視項目の関連付けの定義を含む旧監視項目定義ファイルＤ１２Ｏ、新監視項目定義ファイルＤ１２Ｎ、ＧＵＩ部品の表示属性およびＧＵＩ部品が操作された場合の動作を示すロジックを含む旧ロジック定義ファイルＤ１３Ｏ、および、新ロジック定義ファイルＤ１３Ｎを取得する。差異検出部４は、新旧の各種定義ファイルの差異、を検出する。生成部６は、新旧の各種定義ファイルの差異に含まれる要素が、新の各種定義ファイルでとりうる状態の全ての組合せに対する試験ケースを生成し、試験ケースそれぞれのＧＵＩ部品に対する試験シナリオを生成する。【選択図】図１
2013152667.tif 000002
【特許請求の範囲】
【請求項１】
変更前の操作画面に表示されるＧＵＩ部品の定義と表示位置の情報を含む旧画面定義ファイル、変更後の前記操作画面に表示されるＧＵＩ部品の定義と表示位置の情報を含む新画面定義ファイル、前記変更前の操作画面に表示される前記ＧＵＩ部品と監視項目の関連付けの定義を含む旧監視項目定義ファイル、前記変更後の操作画面に表示される前記ＧＵＩ部品と監視項目の関連付けの定義を含む新監視項目定義ファイル、前記変更前の操作画面に表示される前記ＧＵＩ部品の表示属性および該ＧＵＩ部品が操作された場合の動作を示すロジックを含む旧ロジック定義ファイル、および、前記変更後の操作画面に表示される前記ＧＵＩ部品の表示属性および該ＧＵＩ部品が操作された場合の動作を示すロジックを含む新ロジック定義ファイル、を取得する定義取得部と、
前記旧画面定義ファイルと前記新画面定義ファイルとの画面定義差異、前記旧監視項目定義ファイルと前記新監視項目定義ファイルとの監視項目差異、および、前記旧ロジック定義ファイルと前記新ロジック定義ファイルとのロジック差異、を検出する比較部と、
前記画面定義差異、前記監視項目差異および前記ロジック差異に含まれる要素が、前記新画面定義ファイル、前記新監視項目定義ファイルまたは前記新ロジック定義ファイルでとりうる状態、の全ての組合せに対する試験ケースを生成して、生成した前記試験ケースそれぞれの前記ＧＵＩ部品に対する試験シナリオを生成する試験シナリオ生成部と、
を備える試験シナリオ生成装置。
【請求項２】
前記試験シナリオ生成部はさらに、前記新画面定義ファイル、前記新監視項目定義ファイルまたは前記新ロジック定義ファイルにおける、前記画面定義差異、前記監視項目差異および前記ロジック差異に含まれる要素が結びつく要素に対する試験ケースを生成する、請求項１に記載の試験シナリオ生成装置。
【請求項３】
前記試験ケースの数を圧縮する度合いを示す複雑度を入力する入力部を備え、
前記試験シナリオ生成部は、前記画面定義差異、前記監視項目差異および前記ロジック差異に含まれる要素が結びつく要素に対する前記試験ケースの数を、前記複雑度に従って圧縮する、
請求項２に記載の試験シナリオ生成装置。
【請求項４】
前記試験シナリオ生成部は、入力された前記複雑度を上回る構造をもつロジックを有するＧＵＩ部品に対する試験を、ＨＡＹＳＴ法で生成される組み合わせ試験ケースに含まれるように優先度を上げて生成する請求項３に記載の試験シナリオ生成装置。
【請求項５】
前記試験シナリオ生成部は、前記旧画面定義ファイル、前記旧監視項目定義ファイルおよび前記旧ロジック定義ファイルがない場合、前記新画面定義ファイル、前記新監視項目定義ファイルおよび前記新ロジック定義ファイルに含まれる要素のとりうる状態のすべての組み合わせに対する試験ケースを生成する、請求項１に記載の試験シナリオ生成装置。
【請求項６】
操作画面の表示を含むプログラムの試験シナリオを生成する装置が行う試験シナリオ生成方法であって、
変更前の前記操作画面に表示されるＧＵＩ部品の定義と表示位置の情報を含む旧画面定義ファイル、変更後の前記操作画面に表示されるＧＵＩ部品の定義と表示位置の情報を含む新画面定義ファイル、前記変更前の操作画面に表示される前記ＧＵＩ部品と監視項目の関連付けの定義を含む旧監視項目定義ファイル、前記変更後の操作画面に表示される前記ＧＵＩ部品と監視項目の関連付けの定義を含む新監視項目定義ファイル、前記変更前の操作画面に表示される前記ＧＵＩ部品の表示属性および該ＧＵＩ部品が操作された場合の動作を示すロジックを含む旧ロジック定義ファイル、および、前記変更後の操作画面に表示される前記ＧＵＩ部品の表示属性および該ＧＵＩ部品が操作された場合の動作を示すロジックを含む新ロジック定義ファイル、を取得する定義取得ステップと、
前記旧画面定義ファイルと前記新画面定義ファイルとの画面定義差異、前記旧監視項目定義ファイルと前記新監視項目定義ファイルとの監視項目差異、および、前記旧ロジック定義ファイルと前記新ロジック定義ファイルとのロジック差異、を検出する比較ステップと、
前記画面定義差異、前記監視項目差異および前記ロジック差異に含まれる要素が、前記新画面定義ファイル、前記新監視項目定義ファイルまたは前記新ロジック定義ファイルでとりうる状態、の全ての組合せに対する試験ケースを生成して、生成した前記試験ケースそれぞれの前記ＧＵＩ部品に対する試験シナリオを生成する試験シナリオ生成ステップと、
を備える試験シナリオ生成方法。
【請求項７】
コンピュータを、
変更前の操作画面に表示されるＧＵＩ部品の定義と表示位置の情報を含む旧画面定義ファイル、変更後の前記操作画面に表示されるＧＵＩ部品の定義と表示位置の情報を含む新画面定義ファイル、前記変更前の操作画面に表示される前記ＧＵＩ部品と監視項目の関連付けの定義を含む旧監視項目定義ファイル、前記変更後の操作画面に表示される前記ＧＵＩ部品と監視項目の関連付けの定義を含む新監視項目定義ファイル、前記変更前の操作画面に表示される前記ＧＵＩ部品の表示属性および該ＧＵＩ部品が操作された場合の動作を示すロジックを含む旧ロジック定義ファイル、および、前記変更後の操作画面に表示される前記ＧＵＩ部品の表示属性および該ＧＵＩ部品が操作された場合の動作を示すロジックを含む新ロジック定義ファイル、を取得する定義取得部、
前記旧画面定義ファイルと前記新画面定義ファイルとの画面定義差異、前記旧監視項目定義ファイルと前記新監視項目定義ファイルとの監視項目差異、および、前記旧ロジック定義ファイルと前記新ロジック定義ファイルとのロジック差異、を検出する比較部、および、
前記画面定義差異、前記監視項目差異および前記ロジック差異に含まれる要素が、前記新画面定義ファイル、前記新監視項目定義ファイルまたは前記新ロジック定義ファイルでとりうる状態、の全ての組合せに対する試験ケースを生成して、生成した前記試験ケースそれぞれの前記ＧＵＩ部品に対する試験シナリオを生成する試験シナリオ生成部、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、操作画面の表示を含むプログラムの試験シナリオ生成装置、試験シナリオ生成方法およびプログラムに関する。
【背景技術】
【０００２】
操作画面の表示を含むプログラム、つまり、ユーザが直接的に操作を実施するプログラムにおいては、予測困難なタイミングで操作が実施された場合であっても、プログラムの動作は保証されなくてはならない。プログラムの信頼性を確保するためにも、あらゆる状態遷移のタイミングやパターンにおける試験ケースを作成して評価することが求められている。
【０００３】
例えば、特許文献１には、機能仕様書情報とテストケースの間の整合性を維持して、機能仕様を網羅したテストケース生成システムの技術が記載されている。特許文献１のテストケース生成システムは、表形式の機能仕様データの入力に従って、表の各行データに対応するフォーマットで、項目データの組み合わせをテーブルに変換した機能仕様データベースと、検証の対象となるテスト項目データを指示するテスト仕様入力部と、機能仕様データベースを検索して、指示された項目データと関連を有する項目データの組み合わせを抽出し、該項目データの組み合わせに従ってテストケースの生成を行う。
【０００４】
特許文献２には、操作画面の表示を伴うアプリケーションプログラムを対象とした操作シナリオの作成作業を省力化するシナリオ生成装置の技術が記載されている。特許文献２のシナリオ生成装置は、抽出された操作対象オブジェクト画像情報が一意に決定できない抽出範囲にある際に、抽出範囲を変更させて、一意に決定できる操作対象オブジェクト画像情報を得るフィードバックルーチンを備えている。
【０００５】
特許文献３には、状態遷移モデルを用いて性能評価を実施する性能評価装置が記載されている。特許文献３の性能評価装置は、開発対象システムの各構成要素について状態遷移モデルを定義するとともに、各構成要素についての状態遷移モデルにおける遷移アクションの処理負荷値を示す処理負荷モデルと、各構成要素についての状態遷移モデルを実行するプロセッサの処理能力値を示す処理能力モデルと、状態遷移に伴う処理輻輳や排他制御により発生する待ち時間を計算するための処理待ちモデルを規定する。さらに、開発対象システムの各構成要素に加え、開発対象システムの実行環境と、開発対象システムと関連する外部システム等のシステム外部環境とについても状態遷移モデルを定義するとともに、処理負荷モデル、処理能力モデル、処理待ちモデルを規定する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１１−３０６０４６号公報
【特許文献２】特開２００９−３２０９９号公報
【特許文献３】特開２００９−２０５５４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
システムの監視制御画面に代表されるように、操作画面にＧＵＩ（Graphical User Interface）部品が配置されたアプリケーションの製作・改修を行う場合、信頼性確保のために、画面遷移やタイミングをはじめとした膨大な数の組み合わせ試験を実施する必要がある。しかし、一般的に、全試験ケースを人手で考察するには、作業時間が不足するという課題がある。また、人手で試験ケースを検討する段階で試験ケースの抽出漏れが懸念され、網羅性の確保が困難という課題がある。これらの課題を解決するために、例えば特許文献１のテストケース生成システムが提案されている。しかし、特許文献１では、あらかじめ想定された機能を有するＧＵＩ部品に対する試験ケースにしか対応できない。その結果、設計から試験までの一貫性をトレースして、改修が及ぼす影響範囲や試験範囲の特定を行うことが困難であった。
【０００８】
本発明は上述のような問題点を解決するためになされたものであり、試験ケース生成の際の作業時間や試験ケースの漏れを軽減し、設計段階からのトレーサビリティを確保しながら試験ケースを自動で生成することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の第１の観点に係る試験シナリオ生成装置は、変更前の操作画面に表示されるＧＵＩ部品の定義と表示位置の情報を含む旧画面定義ファイル、変更後の操作画面に表示されるＧＵＩ部品の定義と表示位置の情報を含む新画面定義ファイル、変更前の操作画面に表示されるＧＵＩ部品と監視項目の関連付けの定義を含む旧監視項目定義ファイル、変更後の操作画面に表示されるＧＵＩ部品と監視項目の関連付けの定義を含む新監視項目定義ファイル、変更前の操作画面に表示されるＧＵＩ部品の表示属性およびＧＵＩ部品が操作された場合の動作を示すロジックを含む旧ロジック定義ファイル、および、変更後の操作画面に表示されるＧＵＩ部品の表示属性およびＧＵＩ部品が操作された場合の動作を示すロジックを含む新ロジック定義ファイル、を取得する定義取得部を備える。そして、旧画面定義ファイルと新画面定義ファイルとの画面定義差異、旧監視項目定義ファイルと新監視項目定義ファイルとの監視項目差異、および、旧ロジック定義ファイルと新ロジック定義ファイルとのロジック差異、を検出する比較部と、画面定義差異、監視項目差異およびロジック差異に含まれる要素が、新画面定義ファイル、新監視項目定義ファイルまたは新ロジック定義ファイルでとりうる状態、の全ての組合せに対する試験ケースを生成して、生成した試験ケースそれぞれのＧＵＩ部品に対する試験シナリオを生成する試験シナリオ生成部と、を備える。
【発明の効果】
【００１０】
本発明によれば、試験ケース生成ロジックの適用により、独自作成を含む様々なＧＵＩ部品を実装した操作画面の試験ケースの自動生成が行え、試験ケース生成にかかる作業時間や生成漏れを抑止できる。これによって、試験対象の監視制御画面の改修が行われた場合であっても、設計から試験までのトレーサビリティを確保し、改修による影響範囲を的確に捉えた試験ケースの生成が行える。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施の形態に係る試験シナリオ生成装置の構成例を示すブロック図である。
【図２】実施の形態に係る各種定義ファイルに記載される定義の概念図である。
【図３】実施の形態に係るロジック定義ファイルの記載例を示す図である。
【図４】実施の形態に係る全パス試験生成モードにおける試験ケース生成例を示す図である。
【図５】実施の形態に係る試験シナリオ生成の動作の一例を示すフローチャートである。
【図６】試験対象のＧＵＩ環境の例を示す図である。
【図７】図６に示すＧＵＩ環境に対する試験シナリオの例を示す図である。
【図８】実施の形態に係る試験シナリオ生成装置のハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００１２】
（実施の形態）
図１は、本発明の実施の形態に係る試験シナリオ生成装置の構成例を示すブロック図である。試験シナリオ生成装置１は、定義入力部２、試験モード設定部３、差異検出部４、複雑度入力部５、生成部６および記憶部７を備える。差異検出部４は、差異箇所特定部４１、差異種類特定部４２および差異種類分類部４３を含む。また、生成部６は、試験ケース生成部６１および試験シナリオ生成部６２を含む。記憶部７は、新画面定義ファイルＤ１１Ｎ、旧画面定義ファイルＤ１１Ｏ、新監視項目定義ファイルＤ１２Ｎ、旧監視項目定義ファイルＤ１２Ｏ、新ロジック定義ファイルＤ１３Ｎおよび旧ロジック定義ファイルＤ１３Ｏを記憶する。試験シナリオ生成装置１は、新旧の「画面定義ファイル」、「監視項目定義ファイル」、「ロジック定義ファイル」を読み込み、その新旧ファイル間における比較結果（差異）に基づいて試験シナリオＤ１４を自動生成する。
【００１３】
試験シナリオ生成装置１の定義入力部２は、新画面定義ファイルＤ１１Ｎ、旧画面定義ファイルＤ１１Ｏ、新監視項目定義ファイルＤ１２Ｎ、旧監視項目定義ファイルＤ１２Ｏ、新ロジック定義ファイルＤ１３Ｎ、旧ロジック定義ファイルＤ１３Ｏを記憶部７から入力し、試験モード設定部３に供給する。新画面定義ファイルＤ１１Ｎは、変更後の前記操作画面に表示されるＧＵＩ部品の定義と表示位置の情報を含む。旧画面定義ファイルＤ１１Ｏは、変更前の操作画面に表示されるＧＵＩ部品の定義と表示位置の情報を含む。新監視項目定義ファイルＤ１２Ｎは、変更後の操作画面に表示されるＧＵＩ部品と監視項目の関連付けの定義を含む。旧監視項目定義ファイルＤ１２Ｏは、変更前の操作画面に表示されるＧＵＩ部品と監視項目の関連付けの定義を含む。新ロジック定義ファイルＤ１３Ｎは、変更後の操作画面に表示されるＧＵＩ部品の表示属性およびＧＵＩ部品が操作された場合の動作を示すロジックを含む。そして、旧ロジック定義ファイルＤ１３Ｏは、変更前の操作画面に表示されるＧＵＩ部品の表示属性およびＧＵＩ部品が操作された場合の動作を示すロジックを含む。
【００１４】
図２は、実施の形態に係る各種定義ファイルに記載される定義の概念図である。「ボタン上」と「ボタン下」の枠、および、それらを囲む波線はＧＵＩ部品である。それらのＧＵＩ部品それぞれに、吹き出しで示すロジックが定義されている。図２に示す例のように、画面定義で「ボタン上」及び「ボタン下」のラジオボタンが定義されている場合、それぞれのボタンに対応するよう、名前、name、リソースID、ＧＵＩ部品に割り当てられたロジック定義が記載される。
【００１５】
図３は、実施の形態に係るロジック定義ファイルの記載例を示す図である。例えば、表示色の条件やボタン押下時の動作などが定義される。ロジック定義ファイルは、ある定められた文法に従い利用者が独自に作成できるため、その振る舞いは多岐に渡る。しかし、各ＧＵＩ部品の振る舞いは、このロジック定義ファイルに集約されているため、このファイル内の動作記述を元に試験ケースを生成することで、利用者が独自に作成した様々なＧＵＩ部品に対する試験ケースも生成できる。また、ＧＵＩ部品の振る舞いが記載されたロジック定義を引用して試験ケースを生成することで、試験ケースの生成漏れを抑止することができる。
【００１６】
試験ケースとは、試験対象に対する変数の値および生起するイベントの、順序を含めた組合せである。試験ケースは、個別に付与される符号（試験ケースＩＤ）で識別される。試験シナリオとは、試験ケースに対応して、具体的に変数に入力される値と生起するイベントを、発生する順序に並べて表示するデータである。試験ケースと試験シナリオは、試験ケースＩＤで対応づけられる。
【００１７】
試験モード設定部３は、入力した新旧の各種定義ファイルに応じて、試験モードを設定する。試験モードには、全パス試験モードと回帰試験モードがある。全パス試験モードは、単体試験や組み合わせ試験といったプログラム開発時に実施すべき試験の全てを試験するモードである。回帰試験モードは、実施された改修が影響する範囲に限定して試験するモードである。特に、変更前の各種定義ファイルがなく、新画面定義ファイルＤ１１Ｎ、新監視項目定義ファイルＤ１２Ｎおよび新ロジック定義ファイルＤ１３Ｎのみの場合は、全パス試験モードを設定する。試験モードを、外部から設定できるようにしてもよい。回帰試験モードの場合には、複雑度を設定することができる。複雑度とは、条件分岐パスの通過方法等の指定により、試験ケース数が過剰に増大することを防ぐために利用する設定値である。
【００１８】
試験モード設定部３は、各種定義ファイルと試験モードを差異検出部４に送る。回帰試験モードの場合、差異検出部４は、新旧の各種定義ファイルの差異を検出する。まず差異箇所特定部４１は、入力された新旧の定義ファイルをそれぞれ比較し、どのファイルに差異が存在するのか、及び、差異が生じている箇所はどの部分かを比較判定する。差異箇所特定部４１は、判定の結果を、差異種類特定部４２に引き継ぐ。
【００１９】
また、差異種類特定部４２は、差異の種類として、定義や関数の追加か削除か、それとも変更かに着目して判定を実施し、差異種類分類部４３に結果を引き継ぐ。差異種類分類部４３では、差異箇所の種類をさらに詳細に解析する。例えば新画面定義ファイルＤ１１Ｎと旧画面定義ファイルＤ１１Ｏとに差異がある場合、差異種類特定部４２は、点、線、ポリゴンまたは文字列等の画面の基本構成要素や、線種、線幅、フォント、背景または前景等の属性部分の差異であるかどうかも判断する。
【００２０】
新ロジック定義ファイルＤ１３Ｎと旧ロジック定義ファイルＤ１３Ｏとに差異を検出した場合、変更された箇所が関数自体か、それとも関数の内部か、また、関数の内部処理の場合、その変更の種類はどれかまで詳細に分析を実施する。例えば、分析する変更の種類は、変数の定義、変数への代入、関数の定義、関数呼び出し（引数・戻り値）、条件分岐、繰り返し、打ち切り、算術演算または論理演算などである。
【００２１】
全パス試験モードの場合、新たな定義ファイルの要素がとりうる状態のすべての組み合わせについて試験ケースを生成するので、差異検出部４は、新旧の各種定義ファイルの差異を検出することなく、各種定義ファイルと試験モードを生成部６に送る。変更前の各種定義ファイルがなく、新たな各種定義ファイルのみの場合は、全パス試験モードに設定する。新旧の各種定義ファイルがあっても、一部の画面について全パス試験モードを設定する場合があり得る。
【００２２】
生成部６で試験シナリオＤ１４を生成するのに先立って、複雑度入力部５で複雑度を入力する。複雑度は、試験ケース（組合せ）の数を圧縮する度合いを示す値である。生成部６は、後述するように、入力された複雑度を用いて試験ケースの数を圧縮する。
【００２３】
以下、差異検出部４の判定結果と、試験シナリオＤ１４の生成方法の関係について説明する。まず、試験ケースの生成は、試験モードが全パス試験モードか回帰試験モードかで、生成される試験ケースが変化する。
【００２４】
全パス試験モードの場合、試験ケース生成部６１は、新・旧の各定義ファイルのうち、新定義ファイル、つまり、新たに生成した各種定義ファイルを用いて全探索試験を実施するための試験ケースを生成する。この場合、図１の新画面定義ファイルＤ１１Ｎがマスタとなり、新画面定義ファイルＤ１１Ｎ内で関連付けられている新監視項目定義ファイルＤ１２Ｎおよび、新ロジック定義ファイルＤ１３Ｎを呼び出す。また、ロジック定義の呼び出しに関しては、分岐が存在する場合は全パスを通過するように試験ケースが生成される。すなわち、分岐のとりうる各枝のすべての組合せを、試験ケースとして生成する。
【００２５】
新規に操作画面を制作した場合は、この全パス試験モードによって、定義されている全ての項目を通過するパスに対する試験ケースが生成される。また、新ロジック定義ファイルＤ１３Ｎを参照して、異常系の試験ケースも生成することで、画面の状態遷移等に、処理記述漏れがあった場合、その漏れに気づける試験シナリオＤ１４を生成することが可能である。例えば、ロジック定義の要素がとりうる範囲を超える値を設定することによって、異常系の試験ケースを生成することができる。
【００２６】
図４は、実施の形態に係る全パス試験生成モードにおける試験ケース生成例を示す図である。まず、新画面定義ファイルＤ１１Ｎに含まれる各々のＧＵＩ部品に対応している監視項目定義ファイルとロジック定義ファイルが特定される。例えば、新監視項目定義ファイルＤ１２Ｎと新ロジック定義ファイルＤ１３Ｎに、図４左端の監視項目定義とロジック定義が記載されているとする。この場合、まず、ステップＳＴ５１に示すように、定義されている監視項目定義の内容を内部処理としての数直線上に０、１をプロットする。同様に、ステップＳＴ５２で、ロジック定義ファイルから分岐条件を精査し、その結果をステップＳＴ５１と同様に内部処理としてプロットする。また、ステップＳＴ５３で、ステップＳＴ５１の結果を元に、同値分割・境界値分析をした結果を、内部でプロットする。同様に、ステップＳＴ５２をもとに、ステップＳＴ５４で同値分割・境界値分析を行いプロットする。
【００２７】
このように、新監視項目定義ファイルＤ１２Ｎの記載から得られた結果と、新ロジック定義ファイルＤ１３Ｎから得られた結果をステップＳＴ５５で統合したものを、あるＧＵＩ部品に対する試験ケースとする。このように、統合させることで、どちらかのファイルに設計漏れが生じていた場合でも、その漏れを判断させるような試験ケースが生成可能である。
【００２８】
また、同様に、各ＧＵＩ部品に対して生成された試験ケースを、複数統合させることで、ＧＵＩ部品間の競合を試験することも可能である。例えば、異なる２つのＧＵＩ部品の監視項目に共通するパラメータが含まれ、それらのＧＵＩ部品に、同一のパラメータを参照または変更するロジックが含まれる場合があるとする。試験ケース生成部６１は、それらのロジックを通過させる試験ケースを統合して、それらのロジックを順にまたは並行して通過させる試験ケースを生成する。このように統合した試験ケースによって、ＧＵＩ部品間の競合がある場合に、正しく動作するかどうかを試験することができる。
【００２９】
回帰試験モードの場合、試験ケース生成部６１は、基本的には変更箇所（要素）と結びつきのある部分（インタフェースする部分。結びつく要素）とその周辺部位に対して、同値分割・境界値分析されたパラメータを利用して試験ケースを生成する。変更箇所と結びつきのある部分の周辺部位とは、例えば、ロジックの変更箇所を包含する関数とインタフェースする関数（結びつきのある部分）とインタフェースする関数である。周辺部位に対する試験ケースを生成するのは、変更箇所に直接的な論理部分で、不具合が発生する可能性は低いが、タイミングに依存した不具合の可能性は否定しきれない部位に対して試験ケースを生成することが目的である。
【００３０】
特に周辺部位の試験ケース生成にあたっては、組み合わせの試験ケースを、設定された複雑度に合わせて生成する。これにより、定義の修正から試験ケース生成まで一貫性が確保され、設計と試験のトレーサビリティが確保できる。また、複雑度の設定により、ある程度の網羅性は確保した上で試験ケースの生成が行える。
【００３１】
図５は、実施の形態に係る試験シナリオ生成の動作の一例を示すフローチャートである。回帰試験モードの場合、まず、図５のステップＳＴ６１において、新・旧の各種定義ファイルを読み込む。まず監視画面定義ファイルに差異があるかどうかを判定する（ステップＳＴ６２）。差異があると判断した場合（ステップＳＴ６２；ＹＥＳ）、試験ケース生成Ａを行う（ステップＳＴ６３）。以下、試験ケース生成Ａの動作を説明する。
【００３２】
新画面定義ファイルＤ１１Ｎと旧画面定義ファイルＤ１１Ｏとに差異がある場合（ステップＳＴ６２；ＹＥＳ）、その差異の種類は、「追加」、「削除」または「変更」である。新画面定義ファイルＤ１１Ｎに「追加」があった場合、それはＧＵＩ部品自体が新たに追加されたことと同義である。この場合、そのＧＵＩ部品に対応する（呼び出される）監視項目定義やロジック定義の試験が必須である。そのＧＵＩ部品に対する試験ケースは、全パス試験モードの各ＧＵＩ部品に対して実施する場合と同様のフローで生成する。
【００３３】
また、旧画面定義ファイルＤ１１Ｏにもともと定義の存在していた既存の他のＧＵＩに対する影響範囲に関する試験のために、他のＧＵＩ部品に対応する試験ケースも全パス試験モードと同様に生成する。ただし、影響範囲の試験として、全パス試験と同様の試験ケースを実施すると、膨大な試験を毎回実施する必要があり、事実上困難である。そこで、後述する複雑度の設定を行うことで試験ケースを絞ることとする。ただし、この、試験ケース生成Ａ（ステップＳＴ６３）においては、試験ケースの生成自体は制限せず、全パス試験モードの際と同様に生成を行う。
【００３４】
新画面定義ファイルＤ１１Ｎに「削除」があった場合は、他のＧＵＩ部品の振舞いに悪影響を及ぼさずに、適切にロジックが削除されていることを確認する必要がある。この、「正しく削除されたこと」を確認するために、試験ケース生成部６１は、旧画面定義ファイルＤ１１Ｏで実装されていた監視項目定義とロジック定義を探索し、その実装されていた定義に対して、追加の場合と同様に試験ケースを生成する。
【００３５】
新画面定義ファイルＤ１１Ｎに「変更」があった場合は、変更があった部分が属性の変更か否かで分類される。変更が属性のみであれば、ＧＵＩ部品としての情報についての変更だけであるため、多くの試験ケースは不要であり、対応するロジックが一回呼び出される試験ケースで十分である。
【００３６】
ＧＵＩ部品に対応するロジック定義が変更されている場合、そのロジック定義が新規に追加されたものか、もともと定義されてはいたが、今回の改修で対応ＧＵＩから呼び出される仕様に変更になったかによって、生成される試験ケースは異なる。旧ロジック定義ファイルＤ１３Ｏに、対応するロジック定義が既に存在していた場合は、そのロジックを１回のみ呼び出す入力値を試験ケースにするだけでよい。ロジック定義が新規に追加された場合は、「追加」の場合と同様に試験ケースを生成する。
【００３７】
次に、試験ケース生成Ｂの動作について説明する。試験ケース生成Ｂ（ステップＳＴ６５）は、新監視項目定義ファイルＤ１２Ｎと旧監視項目定義ファイルＤ１２Ｏとに差異があるとき（ステップＳＴ６２；ＮＯ、ステップＳＴ６４；ＹＥＳ）に、試験ケースを生成する処理である。監視項目定義ファイルには、各ＧＵＩ部品とそれらのＧＵＩ部品に対してどういったデータが入力されるかの定義（監視項目定義）が記載されている。ここで、監視項目定義が追加・削除された場合というのは、ＧＵＩ部品自体が追加・削除されていることに等しい。よって、その場合の試験ケースの生成は、既に試験ケース生成Ａで行われているため、このステップでは取り扱わない。また、監視項目定義ファイルに「変更」があった場合は、変更された値を入力とする試験ケースを生成する。なお、試験ケース生成Ａの処理と同様に、必要に応じて、後で、複雑度の設定を利用して試験ケースを圧縮する。
【００３８】
次に、試験ケース生成Ｃの動作について説明する。試験ケース生成Ｃ（ステップＳＴ６７）は、新ロジック定義ファイルＤ１３Ｎと旧ロジック定義ファイルＤ１３Ｏとに差異があるときに（ステップＳＴ６４；ＮＯ、ステップＳＴ６６；ＹＥＳ）、試験ケースを生成する処理である。ここで、新ロジック定義ファイルＤ１３Ｎにロジック定義が「追加」されている場合は、その追加されたロジック（サブロジック）と、呼び出しもとのロジック（メインロジック）に対して試験ケースを生成する。
【００３９】
ロジック定義の削除の場合は、旧ロジック定義ファイルＤ１３Ｏから実装されていた部分の呼び出しもとを探索して、試験ケースを生成する。
【００４０】
ロジック定義の変更の場合は、メインロジック関数の中身が変更されている、または、サブロジック関数の中身が変更されている場合がある。ここでロジック関数の変更の場合は、その関数とインタフェースする部分とその関数内の構成についての試験ケースを生成する。つまり、関数変更の場合の試験ケース生成は、関数の引数に対して、同値・境界値分析を実施した結果と、関数内部の構造に対して、同値・境界値分析を行った結果を入力とする試験ケースが生成される。
【００４１】
試験ケース生成Ａ（ステップＳＴ６３）、試験ケース生成Ｂ（ステップＳＴ６５）または試験ケース生成Ｃ（ステップＳＴ６７）ののち、複雑度に応じて試験ケースの圧縮を行う（ステップＳＴ６８）。複雑度に応じて試験ケースの圧縮は、以下のように行う。例えば、ロジック定義は図３にも記載したように、ＩＦ−ＥＬＳＥなどのような基本的な（Ｃ言語ライクな）文法を用いて条件分岐が実装されている。条件分岐は、記載方法によっては、複雑度が大きくなる場合もあり、その分、不具合が混入しやすくなる。
【００４２】
通常、条件分岐の試験を実施する場合、命令網羅、分岐網羅、条件網羅といった指標をもとに試験を計画し実施する。これら各網羅の指標に基づいて分岐ステートの試験を実施する場合には、その分岐を通過するようなパラメータを与えてやる必要があり、その状態を組み合わせた場合、膨大な試験ケースが生成されてしまうことになる。特に、改修ごとに実施される回帰試験の場合、これらの分岐や状態遷移をすべて確認するのはスケジュール上困難である。そこで、その組み合わせ数は、ある程度削減しておく必要がある。試験シナリオ生成モジュールは、組み合わせ数を削減するために、ＨＡＹＳＴ法を利用して、試験ケースの圧縮を行う。ＨＡＹＳＴ法は、テスト対象となる因子・水準を、直交表に割り付けてテストを実施するテスト技法である。ＨＡＹＳＴ法を利用することで、ある程度の網羅性を確保した上で、試験ケースの数の圧縮が可能である。
【００４３】
試験ケース生成部６１は、このＨＡＹＳＴ法による試験ケースの圧縮の際に、複雑度の設定を利用する。通常、ソフトウェアの品質として、分岐の入り組んだ部分には、不具合が混入しやすいことが知られている。よって、ある複雑度以上の構成を持つロジック部分は、重点的な試験が必要である。そこで、試験シナリオ生成モジュールは、設定された複雑度を上回る複雑さの構造を持つロジック定義を有しているＧＵＩ部品に対する試験を、ＨＡＹＳＴ法で生成される組み合わせ試験ケースに多く含まれるように、優先度を上げて生成動作を行う。
【００４４】
ここで、ロジック定義の構造の複雑さは、分岐のネスト（入れ子）の深さで定義することができる。ＨＡＹＳＴ法では、試験したい因子が保有する水準数が、割り付けるべき直交表の水準を下回っている場合、ある因子をダミー水準として重複して割り付けることで、その因子に対する試験ケースを増加させることができる。この性質を利用し、複雑さの大きいものを優先的にダミー水準に割り当てることで、複雑さの大きい（重要な）因子に関して、試験の優先度を上げることができる。試験ケース生成部６１は、複雑さ（入れ子の深さ）に応じて（設定された複雑度を上回る複雑さの構造を持つロジック定義について）、深いパスをとおる分岐で使用している条件変数を積極的に利用する（ダミー水準に割り当てる）ことで、分岐先に対するより多くの試験ケースを抽出する。
【００４５】
試験シナリオ生成部６２は、試験ケース生成部６１で生成された試験ケースそれぞれの、試験シナリオＤ１４を生成する（ステップＳＴ６９）。試験シナリオＤ１４は、試験ケースの各要素の具体的な値とイベントを生成する順序を規定するものである。各要素の値は、例えば、分岐の各枝を選択するための変数の値を代表する具体的な値または境界値などである。代表する値は、その値がとりうる範囲からランダムにまたは中央の値などに設定することができる。また、とりうる範囲の外の値を選択する試験ケースを生成する場合、例えば、境界値に所定の値を加算して設定することができる。
【００４６】
図１の試験シナリオ生成部６２は、図示されていないが、生成した試験シナリオＤ１４を記憶部７に記憶し、また、表示部（図示せず）に送って表示する。ユーザは、試験シナリオＤ１４に沿って、プログラムを試験することができる。
【００４７】
図６は、試験対象のＧＵＩ環境の例を示す図である。図６の左側の枠は、操作画面に表示されるＧＵＩ部品を示す。図６の右側の枠は、ＧＵＩ部品に対する監視データに、ＬＡＮ経由等で入力されるデータを示す。ここでは、例えば、変数Ｘに値０１が代入され、変数Ｙに値０２が代入される。試験シナリオ生成部６２は、このようなＧＵＩ環境に対して、例えば、図７に示す試験シナリオＤ１４を生成する。
【００４８】
図７は、図６に示すＧＵＩ環境に対する試験シナリオの例を示す図である。図７の例は、監視データの入力として、「変数Ｘ、Ｙへの代入」と、「ボタンＡをＯＮにする操作」を行うことで、出力として「表示Ａに３（赤色）」が表示されるという試験シナリオＤ１４である。表示画面のこのＧＵＩ部品を試験する作業者は、合否基準として、上記の「入力」によって「出力」が満たされるかを判断基準とする。
【００４９】
図８は、実施の形態に係る試験シナリオ生成装置のハードウェア構成例を示すブロック図である。図８は、図１の試験シナリオ生成装置１の構成を示す。
【００５０】
試験シナリオ生成装置１は、図８に示すように、制御部１１、主記憶部１２、外部記憶部１３、操作部１４、表示部１５および送受信部１６を備える。主記憶部１２、外部記憶部１３、操作部１４、表示部１５および送受信部１６はいずれも内部バス１０を介して制御部１１に接続されている。
【００５１】
制御部１１はＣＰＵ（Central Processing Unit）等から構成され、外部記憶部１３に記憶されている制御プログラム３９に従って、試験シナリオ生成のための処理を実行する。
【００５２】
主記憶部１２はＲＡＭ（Random-Access Memory）等から構成され、外部記憶部１３に記憶されている制御プログラム１９をロードし、制御部１１の作業領域として用いられる。
【００５３】
外部記憶部１３は、フラッシュメモリ、ハードディスク、ＤＶＤ−ＲＡＭ（Digital Versatile Disc Random-Access Memory）、ＤＶＤ−ＲＷ（Digital Versatile Disc ReWritable）等の不揮発性メモリから構成され、上述の処理を制御部１１に行わせるための制御プログラム１９を予め記憶し、また、制御部１１の指示に従って、この制御プログラム１９が記憶するデータを制御部１１に供給し、制御部１１から供給されたデータを記憶する。外部記憶部１３は、例えば、新旧の各種定義ファイル、生成した試験シナリオＤ１４を記憶する。
【００５４】
操作部１４はキーボードおよびマウスまたはタッチパネルなどのポインティングデバイス等と、キーボードおよびポインティングデバイス等を内部バス１０に接続するインタフェース装置から構成されている。操作部１４を介して、画面定義ファイル、監視項目定義ファイル、ロジック定義ファイルおよび複雑度に関する入力操作を受付ける。
【００５５】
表示部１５は、ＬＣＤ（Liquid Crystal Display）もしくは有機ＥＬディスプレイ、およびスピーカなどから構成され、画面定義ファイル、監視項目定義ファイル、ロジック定義ファイル、複雑度、および生成した試験シナリオＤ１４などを表示する。
【００５６】
送受信部１６は、無線送受信機、無線モデムまたは網終端装置、およびそれらと接続するシリアルインタフェースまたはＬＡＮ（Local Area Network）インタフェースから構成されている。画面定義ファイル、監視項目定義ファイルおよびロジック定義ファイルが、外部のサーバなどに記憶されている場合、送受信部１６を介して、新旧の各種定義ファイルを送受信する。
【００５７】
試験シナリオ生成装置１の定義入力部２、試験モード設定部３、差異検出部４、複雑度入力部５、生成部６および記憶部７の処理は、制御プログラム１９が、制御部１１、主記憶部１２、外部記憶部１３、操作部１４、表示部１５および送受信部１６などを資源として用いて処理することによって実行する。
【００５８】
その他、前記のハードウエア構成やフローチャートは一例であり、任意に変更および修正が可能である。
【００５９】
制御部１１、主記憶部１２、外部記憶部１３、操作部１４、内部バス３０などから構成される制御処理を行う中心となる部分は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。たとえば、前記の動作を実行するためのコンピュータプログラムを、コンピュータが読み取り可能な記録媒体（フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等）に格納して配布し、当該コンピュータプログラムをコンピュータにインストールすることにより、前記の処理を実行する試験シナリオ生成装置１を構成してもよい。また、インターネット等の通信ネットワーク上のサーバ装置が有する記憶装置に当該コンピュータプログラムを格納しておき、通常のコンピュータシステムがダウンロード等することで試験シナリオ生成装置１を構成してもよい。
【００６０】
試験シナリオ生成装置１の機能を、ＯＳ（オペレーティングシステム）とアプリケーションプログラムの分担、またはＯＳとアプリケーションプログラムとの協働により実現する場合などには、アプリケーションプログラム部分のみを記録媒体や記憶装置に格納してもよい。
【００６１】
また、搬送波にコンピュータプログラムを重畳し、通信ネットワークを介して配信することも可能である。たとえば、通信ネットワーク上の掲示板(BBS：Bulletin Board System)に前記コンピュータプログラムを掲示し、ネットワークを介して前記コンピュータプログラムを配信してもよい。そして、このコンピュータプログラムを起動し、ＯＳの制御下で、他のアプリケーションプログラムと同様に実行することにより、前記の処理を実行できるように構成してもよい。
【００６２】
以上説明したように、本実施の形態によれば、設計情報としての「画面定義ファイル」、「監視項目定義ファイル」、「ロジック定義ファイル」を用意すれば、試験ケースが自動で生成されることとなり、試験ケースを考察するための作業時間や期間の不足が軽減される。
【００６３】
本実施の形態に係る試験シナリオ生成装置によれば、利用者独自に作成されるＧＵＩ部品を実装した監視画面における回帰試験を実施する場合でも、試験ケースの生成項目数爆発を抑制しながら網羅性の確保した試験ケースを生成することが可能である。これにより、実施ケースの項目爆発を抑制でき、試験コストの削減が可能である。
【符号の説明】
【００６４】
１    試験シナリオ生成装置
２    定義入力部
３    試験モード設定部
４    差異検出部
５    複雑度入力部
６    生成部
７    記憶部
１０    内部バス
１１    制御部
１２    主記憶部
１３    外部記憶部
１４    操作部
１５    表示部
１６    入出力部
１７    送受信部
４１    差異箇所特定部
４２    差異種類特定部
４３    差異種類分類部
６１    試験ケース生成部
６２    試験シナリオ生成部
Ｄ１１Ｎ  新画面定義ファイル
Ｄ１１Ｏ  旧画面定義ファイル
Ｄ１２Ｎ  新監視項目定義ファイル
Ｄ１２Ｏ  旧監視項目定義ファイル
Ｄ１３Ｎ  新ロジック定義ファイル
Ｄ１３Ｏ  旧ロジック定義ファイル
Ｄ１４    試験シナリオ
【図１】
2013152667.tif 000003
【図２】
2013152667.tif 000004
【図３】
2013152667.tif 000005
【図４】
2013152667.tif 000006
【図５】
2013152667.tif 000007
【図６】
2013152667.tif 000008
【図７】
2013152667.tif 000009
【図８】
2013152667.tif 000010