(57)【要約】【課題】  テスト対象のソフトウェアとは別のテストシナリオのバリエーションのみに基づき、テスト対象のソフトウェアの期待結果の予測値を生成する。【解決手段】  本発明は、テスト対象のソフトウェアとは別のソフトウェアにおけるテスト設計で作成されたテストシナリオを構成するステップと期待結果が格納されたステップDBを有し、与えられた基本シナリオを構成するステップと同一のプロセスタイプ、ステップタイプ、ステップ名を有するステップをステップDBから検索し、ステップ値が同一である置換ステップ集合を生成し、各置換ステップ集合の期待結果の出現頻度に基づいて期待結果予測値を算出し、該ステップで該基本シナリオのステップを置換して新たなテストシナリオを生成し、該期待結果予測値を付与した関連シナリオを出力する。【選択図】  図１
2016014973.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションのテスト設計において、テストシナリオの手順により、テストを実施した時に期待されるソフトウェアの動作の結果である期待結果を生成する期待結果生成装置であって、
テスト対象のソフトウェアとは別のソフトウェアにおけるテスト設計で作成されたテストシナリオを構成するステップと期待結果が格納されたステップDBと、
与えられた基本シナリオを構成するステップと同一のプロセスタイプ、ステップタイプ、ステップ名を有するステップを前記ステップDBから検索し、ステップ値が同一である置換ステップ集合を生成し、各置換ステップ集合の期待結果の出現頻度に基づいて期待結果予測値を算出し、該ステップで該基本シナリオのステップを置換して新たなテストシナリオを生成し、該期待結果予測値を付与した関連シナリオを出力する関連シナリオ生成手段と、
を有することを特徴とする期待結果生成装置。
【請求項２】
前記関連シナリオ生成手段は、
前記置換ステップ集合の期待結果が同一のステップをグル―プに分け、グループを構成するステップ数に基づいてグループの期待結果確率を求め、該期待結果と該期待結果確率に基づいて前記期待結果予測値を算出する手段を含む
請求項１記載の期待結果生成装置。
【請求項３】
前記基本シナリオの各ステップを前記ステップDBに追加登録する基本シナリオステップ記録手段を更に有する
請求項１または２記載の期待結果生成装置。
【請求項４】
アプリケーションのテスト設計において、テストシナリオの手順により、テストを実施した時に期待されるソフトウェアの動作の結果である期待結果を生成する期待結果生成方法であって、
テスト対象のソフトウェアとは別のソフトウェアにおけるテスト設計で作成されたテストシナリオを構成するステップと期待結果が格納されたステップDBと、関連シナリオ生成手段と、を有する装置において、
前記関連シナリオ生成手段が、与えられた基本シナリオを構成するステップと同一のプロセスタイプ、ステップタイプ、ステップ名を有するステップを前記ステップDBから検索し、ステップ値が同一である置換ステップ集合を生成し、各置換ステップ集合の期待結果が同一のステップ毎のグループの期待結果確率を求め、該期待結果と該期待結果確率に基づいて期待結果予測値を算出し、該ステップで該基本シナリオのステップを置換して新たなテストシナリオを生成し、該期待結果予測値を付与した関連シナリオを出力する関連シナリオ生成ステップ、
を行うことを特徴とする期待結果生成方法。
【請求項５】
前記関連シナリオ生成ステップにおいて、
前記置換ステップ集合の期待結果が同一のステップをグル―プに分け、グループを構成するステップ数に基づいてグループの期待結果確率を求め、該期待結果と該期待結果確率に基づいて前記期待結果予測値を算出する
請求項４記載の期待結果生成方法。
【請求項６】
基本シナリオステップ記録手段をさらに有する装置において、
前記基本シナリオステップ記録手段が、前記基本シナリオの各ステップを前記ステップDBに追加登録する処理を更に行う
請求項４または５記載の期待結果生成方法。
【請求項７】
コンピュータを、
請求項１乃至３のいずれか１項に記載の期待結果生成装置の各手段として機能させるための期待結果生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、期待結果生成装置及び方法及びプログラムに係り、特に、Webアプリケーションのテスト設計において、テストシナリオの手順により、テストを実施した時に期待されるソフトウェアの動作の結果である期待結果を生成するための期待結果生成装置及び方法及びプログラムに関する。
【背景技術】
【０００２】
テストシナリオのバリエーションを生成するための技術として、テスト対象のソフトウェアとは別のソフトウェア（別チームが開発したソフトウェアも含む）のテストシナリオのバリエーションに基づき、テスト対象のソフトウェアのテストシナリオのバリエーションを自動生成する方法がある（例えば、非特許文献１参照）。
【０００３】
また、定義されたソフトウェア設計書から単一の中間形式の言語に変換したオブジェクトを単一の設計モデルに統合し、入力エラーの有無、テスト経路、DB変更の有無、結果出力の仕方をテストシナリオとして抽出する方法がある（例えば、特許文献1参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許4966386号公報
【非特許文献】
【０００５】
【非特許文献１】Rogene Lacanienta, Shingo Takada, Haruto Tannno, Morihide Oimura: "A Knowledge-based Approach for Generating Test Scenarios for Web Applications". The Twenty-Fifth International conference on Software Engineering and Knowledge Engineering (SEKE 2013). 2013.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記の非特許文献１の技術では、期待結果の予測値は生成されない。
【０００７】
また、特許文献1の技術では、テスト対象のソフトウェアの、形式化されたソフトウェア設計書に基づき期待結果を含むテストシナリオを生成しているため、テスト対象のソフトウェアとは別のソフトウェア（別チームが開発したソフトウェアも含む）のテストシナリオには基づかないテストとなる、という問題がある。
【０００８】
本発明は、上記の点に鑑みなされたもので、テスト対象のソフトウェアとは別の（別のチームが開発したソフトウェアも含む）のテストシナリオのバリエーションのみに基づき、テスト対象のソフトウェアの期待結果を生成可能な期待結果生成装置及び方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
一態様によれば、アプリケーションのテスト設計において、テストシナリオの手順により、テストを実施した時に期待されるソフトウェアの動作の結果である期待結果を生成する期待結果生成装置であって、
テスト対象のソフトウェアとは別のソフトウェアにおけるテスト設計で作成されたテストシナリオを構成するステップと期待結果が格納されたステップDBと、
与えられた基本シナリオを構成するステップと同一のプロセスタイプ、ステップタイプ、ステップ名を有するステップを前記ステップDBから検索し、ステップ値が同一である置換ステップ集合を生成し、各置換ステップ集合の期待結果の出現頻度に基づいて期待結果予測値を算出し、該ステップで該基本シナリオのステップを置換して新たなテストシナリオを生成し、該期待結果予測値を付与した関連シナリオを出力する関連シナリオ生成手段と、を有する期待結果生成装置が提供される。
【発明の効果】
【００１０】
一態様によれば、テスト対象のソフトウェアとは別の（別のチームが開発したソフトウェアも含む）のテストシナリオの手順により、テストを実施した時に期待されるソフトウェアの動作の結果である期待結果を生成することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施の形態における期待結果生成装置の構成図。
【図２】本発明の一実施の形態におけるステップDBの例。
【図３】本発明の一実施の形態におけるメモリの領域の例。
【図４】本発明の一実施の形態における概要動作のフローチャート。
【図５】本発明の一実施の形態における関連シナリオ生成部の処理のフローチャート。
【図６】本発明の一実施の形態における基本シナリオの基本ステップと置換対象ステップの例。
【図７】本発明の一実施の形態における関連シナリオのバリエーション生成の例。
【図８】本発明の一実施の形態における図５のS370の詳細処理のフローチャート。
【図９】本発明の一実施の形態における関連シナリオ生成を説明するための図。
【図１０】本発明の一実施の形態における基本シナリオステップ記録部の処理のフローチャート。
【発明を実施するための形態】
【００１２】
以下、図面と共に本発明の実施の形態を説明する。
【００１３】
図１は、本発明の一実施の形態における期待結果生成装置の構成を示す。
【００１４】
同図に示す期待結果生成装置１００は、基本シナリオ入力部１１０、関連シナリオ生成部１２０、ステップＤＢ１３０、基本シナリオステップ記録部１４０、関連シナリオ出力部１５０、メモリ１６０を有する。基本シナリオ入力部１１０と関連シナリオ出力部１５０はユーザ端末１０に接続されている。
【００１５】
ステップDB１３０は、テスト対象のソフトウェアとは別のソフトウェアにおけるテスト設計で作成されたテストシナリオを構成していたステップが格納されており、図２に示すように、生成された各ステップに一意に付与されるステップId、プロセスタイプ（registration/login）、ステップタイプ（input/webtransition）、ステップ名、ステップ値及び、テストシナリオの手順により、テストを実施した時に期待されるソフトウェアの動作の結果である期待結果を格納する。
【００１６】
メモリ１６０は、図３に示すように、基本シナリオ集合格納領域１６１、置換ステップ候補集合格納領域１６２、関連シナリオ集合グループ格納領域１６３、置換ステップ集合格納領域１６４を有する。
【００１７】
基本シナリオ集合格納領域１６１には、基本シナリオ入力部１１０により、以下に示す基本シナリオが入力され、メモリ１６０の基本シナリオ集合格納領域１６１に格納される。入力される基本シナリオは、BNF(Backus Naur Form)で記述されており、以下の構成を有する。なお、以下の"<xxx>"は非終端記号であり、"xxx:yyy"は終端記号であり、xxxはyyy型であることを示す。
【００１８】
<基本シナリオ集合>::=<基本シナリオ>
<基本シナリオ>::=基本シナリオId:Integer<シナリオ>
<シナリオ>::=<ステップ>＋プロセスタイプ：String
<ステップ>::=ステップId:Integer 
プロセスタイプ：String
ステップタイプ：String
ステップ名：String
ステップ値：String
期待結果：String?
【００１９】
置換ステップ候補集合格納領域１６２には、関連シナリオ生成部１２０により、
<置換ステップ候補集合>::=<置換ステップ候補>+
<置換ステップ候補>::=置換対象ステップId: Integer 置換後ステップId: Integer
が格納される。
【００２０】
関連シナリオ集合グループ格納領域１６３には、関連シナリオ生成部１２０により、
<関連シナリオ集合グループ>::=<関連シナリオ集合>*
<関連シナリオ集合>::=生成元基本シナリオId: Integer<関連シナリオ>*
<関連シナリオ>::=関連シナリオId: Integer<シナリオ><期待結果予測>
<期待結果予測>::=<期待結果と確率>+
<期待結果と確率>::=期待結果:String 確率:Float
が格納される。
【００２１】
以下に、上記の構成における処理を説明する。
【００２２】
テストシナリオは複数のステップで構成されている。本発明では、与えられたテストシナリオ（基本シナリオ）から、ステップDB１３０に格納されたステップを用いて、そのテストシナリオのバリエーションである複数のテストシナリオ（関連シナリオ）を生成し、これをテストシナリオバリエーションとして出力する。
【００２３】
図４は、本発明の一実施の形態における概要動作のフローチャートである。
【００２４】
ステップ１００）  基本シナリオ入力部１１０は、ユーザ端末１０から入力された基本シナリオ集合（UML： Unified Modeling Language）を取得し、メモリ１６０の基本シナリオ集合格納領域１６１に格納する。
【００２５】
ステップ２００）  関連シナリオ生成部１２０は、メモリ１６０上の関連シナリオ集合グループ格納領域１６３に空の関連シナリオ集合グループを生成する。
【００２６】
ステップ３００）  当該ステップ３００及び次のステップ４００の処理を、入力された基本シナリオ集合の各基本シナリオに対して繰り返す。
【００２７】
関連シナリオ生成部１２０は、メモリ１６０の基本シナリオ集合格納領域１６１から基本シナリオを読み出し、ステップDB１３０を参照して、期待結果予測を含む関連シナリオ集合を生成する。当該ステップの詳細な処理は図５に示す。
【００２８】
ステップ４００）  関連シナリオ生成部１２０は、メモリ１６０の関連シナリオ集合グループ格納領域１６３に生成した関連シナリオ集合を追加する。
【００２９】
ステップ５００）  基本シナリオステップ記録部１４０は、メモリ１６０の基本シナリオ集合格納領域１６１から基本シナリオを読み出し、各基本シナリオのステップをステップDB１３０に記録する。当該処理の詳細は図１０で詳述する。
【００３０】
ステップ６００）  関連シナリオ出力部１５０は、関連シナリオ集合グループをメモリ１６０の関連シナリオ集合グループ格納領域１６３から読み込んでユーザ端末１０に出力する。当該処理が終了したらメモリ１６０の内容をクリアする。
【００３１】
次に、上記のステップ３００の処理について詳しく説明する。
【００３２】
図５は、本発明の一実施の形態における関連シナリオ生成部のフローチャートである。
【００３３】
ステップ３１０）  関連シナリオ生成部１２０は、メモリ１６０の基本シナリオ集合格納領域１６１から基本シナリオを読み込む。
【００３４】
ステップ３２０）  関連シナリオ生成部１２０は、メモリ１６０の置換ステップ候補集合格納領域１６２に空の置換ステップ候補集合を作成する。ここで、生成元シナリオ基本Idは、入力された基本シナリオnの基本シナリオIdを設定する。
【００３５】
ステップ３３０）  ステップDB１３０から置換する候補となるステップを取り出す。具体的には、基本シナリオのステップのプロセスタイプ、ステップタイプ、ステップ名が一致するステップをステップDB１３０から抽出する。図６の例では、基本シナリオにある「Input:Username」というステップは、プロセスタイプが"Registration"、プロセスタイプが"Input"、ステップ名が"username"であるので、ステップDB１３０におけるステップ群(ステップId001〜006)が一致するため、これを抽出する。
【００３６】
ステップ３４０）  関連シナリオ生成部１２０は、置換ステップ候補を新たに生成し、当該置換ステップ候補の置換対象ステップIdには、対象となる基本シナリオのステップのIdを設定し、置換後ステップIdにはステップ３３０でステップDB１３０から抽出されたステップ（置換対象ステップ）のIdを設定し、当該置換ステップ候補をメモリ１６０の置換ステップ候補集合格納領域１６２の集合に追加する。図６の例では、基本シナリオId＝001のステップに関しては、ステップDB１３０におけるId=001〜006のステップが置換対象となるので、置換ステップ候補は「001,001」、「001,002」、「001,003」、「001,004」、「001,005」、「001,006」の６つになる。これらを置換ステップ候補集合格納領域１６２に格納する。
【００３７】
当該処理を基本シナリオ入力部１１０から取得した各ステップに対して繰り返す。
【００３８】
ステップ３５０）  関連シナリオ生成部１２０は、メモリ１６０の関連シナリオ集合グループ格納領域１６３上に空の関連シナリオ集合を作成する。
【００３９】
ステップ３６０）  関連シナリオ生成部１２０は、メモリ１６０内の置換ステップ候補集合格納領域１６２の置換ステップ候補集合から、対象となる基本シナリオのステップのIdと置換対象ステップのIdが一致する置換ステップ候補を全て取り出し、置換ステップ候補群を生成する。
【００４０】
ステップ３７０）  基本シナリオを複製し、ステップ３６０で生成された置換ステップ候補群に基づき、期待結果予測を含む関連シナリオを生成する。具体的には、対象となる基本シナリオを複製し、置換ステップ候補の置換対象ステップId、置換後ステップIdに基づいて、複製した基本シナリオのステップを置換することで、バリエーションとなる新たな関連シナリオを生成する。
【００４１】
図７の例では、図６の置換対象ステップId＝003の"input:email"ステップを複製し、その複製した置換ステップとステップDB１３０から取り出したステップと置換することで関連シナリオ（１）、（２）を生成する。なお、置換ステップには、場面（例えば、「registration」、「login」など）を表すタグ（プロセスタイプ）が付いているため、テスト対象とは別のソフトウェアの同一場面におけるテストシナリオに基づいて、テスト対象のソフトウェアにおける同一の場面に対応するテストシナリオのバリエーションを生成できる。詳細については図８で説明する。
【００４２】
ステップ３８０）  関連シナリオ生成部１２０は、生成した関連シナリオをメモリ１６０の関連シナリオ集合グループ格納領域１６３の関連シナリオ集合に追加する。
【００４３】
次に、上記のステップ３７０の「置換ステップ候補群に基づき、期待結果予測を含む関連シナリオを生成する」処理について詳細に説明する。
【００４４】
図８は、本発明の一実施の形態における図５のS370の詳細処理のフローチャートである。
【００４５】
ステップ３７１）  関連シナリオ生成部１２０は、メモリ１６０の基本シナリオ格納領域１６１から基本シナリオ、ステップDB１３０からから対象となる基本シナリオのステップ、メモリ１６０の置換ステップ候補集合格納領域１６２から置換ステップ候補群を読み込む。
【００４６】
ステップ３７２）  メモリ１６０上に空の関連シナリオ群を作成する。
【００４７】
ステップ３７３）  置換ステップ候補群の置換後ステップIDに対応するそれぞれのステップについて、ステップ値が同一であるステップをそれぞれ同じグループとしてまとめ、1つの置換ステップ集合とする。
【００４８】
図９の例では、図６の基本シナリオの「[BasicId=0001]Input:username」のステップを、ステップDB１３０から取り出した６つのステップと置換することで３つの置換ステップ集合A，B，Cを生成し、メモリ１６０の置換ステップ集合格納領域１６４に格納する。
【００４９】
ステップ３７４）  置換ステップ集合格納領域１６４の置換ステップ集合群において、期待結果が同一であるステップ毎に、X1,X2,…Xnというグループに分ける。グループXiを構成するステップ数をC(Xi)とおく。グループ毎にその期待結果の確率をC(Xi)/(C(X1)+…C(Xn))とし、それぞれ期待結果と確率を作成し、それらに基づき期待結果予測を作成する。図９の例では、グループAでは、3つの期待結果（[Go to error screen]、[Show warning message], [Show error message box]）それぞれに対して、50%、25%、25%と算出される。これらの値を期待結果予測値とする。
【００５０】
ステップ３７５）  基本シナリオを複製し、置換ステップ集合格納領域１６４の置換ステップ集合の置換対象ステップId、置換後ステップIdを元に、複製した基本シナリオのステップを置換することで、新たな関連シナリオを生成する。関連シナリオの期待結果予測値には、ステップ３７４で求められた期待結果予測値を設定する。
【００５１】
ステップ３７６）  期待結果予測値が付与された関連シナリオを出力し、ステップ３８０の処理に移行する。
【００５２】
上記の処理を行うことにより、非特許文献１の技術では生成することができなかった期待結果の予測値を生成できる。また、ステップDB１３０に格納された複数の期待結果の出現頻度に基づき、期待結果予測を算出できるので、精度の高い期待結果の予測値を生成できる。
【００５３】
次に、図４のステップ５００の処理について詳細に説明する。
【００５４】
図１０は、本発明の一実施の形態における基本シナリオステップ記録部の処理のフローチャートである。
【００５５】
ステップ５０１）  基本シナリオステップ記録部１４０は、メモリ１６０の基本シナリオ集合格納領域１６１から基本シナリオ集合を読み込む。
【００５６】
ステップ５０２）  基本シナリオ集合の各基本シナリオの対象ステップのステップタイプ、ステップ名、ステップ値に一致するステップがステップDB１３０に存在するかを判定する。存在する場合は次の基本シナリオの対象ステップについて判定を行う。存在しない場合はステップ５０３に移行する。
【００５７】
ステップ５０３）  ステップDB１３０に該当するステップが存在しない場合には、対象となる基本シナリオのステップをステップDB１３０に新規に登録する。
【００５８】
上記のステップ５０２，５０３の処理を、基本シナリオ集合の各基本シナリオの各ステップに対して行う。
【００５９】
基本シナリオステップ記録部１４０の処理を行うことにより、テスト設計者が作成したテストシナリオ（基本シナリオ）を構成する全てのステップは、ステップDB１３０へと蓄積される。これにより、関連シナリオ生成部１２０では、当該ステップDB１３０からステップを取り出し、関連シナリオを生成するため、テスト対象のソフトウェアのテストシナリオのバリエーションを生成するときに、テスト対象とは別のソフトウェアのテスト設計者が作成したテストシナリオのバリエーションに基づいて、さらになるバリエーションを生成することができる。
【００６０】
なお、上記の図１に示すテストシナリオバリエーション生成装置１００の各構成要素の動作をプログラムとして構築し、テストシナリオバリエーション生成装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【００６１】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【００６２】
１０  ユーザ端末
１００  期待結果生成装置
１１０  基本シナリオ入力部
１２０  関連シナリオ生成部
１３０  ステップDB
１４０  基本シナリオステップ記録部
１５０  関連シナリオ出力部
１６０  メモリ
１６１  基本シナリオ集合格納領域
１６２  置換ステップ候補集合格納領域
１６３  関連シナリオ集合グループ格納領域
１６４  置換ステップ集合格納領域
【図１】
2016014973.tif 000003
【図２】
2016014973.tif 000004
【図３】
2016014973.tif 000005
【図４】
2016014973.tif 000006
【図５】
2016014973.tif 000007
【図６】
2016014973.tif 000008
【図７】
2016014973.tif 000009
【図８】
2016014973.tif 000010
【図９】
2016014973.tif 000011
【図１０】
2016014973.tif 000012