(57)【要約】【課題】対象プログラムが変更された場合でも、時間および労力をかけることなく、低コストで試験の構築および維持が可能なソフトウェア試験実行方法を提供する。【解決手段】ソフトウェアの試験を行うとき、初めに、正解登録工程において、試験シナリオ保持装置１１に保持される試験シナリオに基づいて、対象プログラム１８の出力データを取得し、予め定める仕様に合致する出力データを正解データとして正解保持装置１３に登録しておく。そして試験実行工程において、試験シナリオ保持装置１１に保持される試験シナリオに基づいて新たに取得された対象プログラム１８の出力データと、正解保持装置１３に保持されている正解データとを比較して、対象プログラム１８が、仕様に合致する出力データの出力に成功したか失敗したかを判定する成功判定を行う。【選択図】図１
2011060052.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの試験を行うソフトウェア試験実行方法であって、
前記ソフトウェアを構成するプログラムのうち、試験の対象となる対象プログラムに対する処理が記述された試験シナリオに基づいて、第１の対象プログラムの出力データを取得し、取得した出力データが、予め定める仕様に合致する場合、前記出力データを正解データとして正解保持装置に登録する正解登録工程と、
前記試験シナリオに基づいて第２の対象プログラムの出力データを取得し、前記正解保持装置が前記正解データを保持している場合、取得した前記第２の対象プログラムの出力データと前記正解データとを比較することによって、前記第２の対象プログラムが前記仕様に合致する出力データの出力に成功したか失敗したかを判定する成功判定を行う試験実行工程とを備えることを特徴とするソフトウェア試験実行方法。
【請求項２】
前記試験実行工程では、
前記第２の対象プログラムの出力データと前記正解データとが同一である場合に、成功したと判定することを特徴とする請求項１に記載のソフトウェア試験実行方法。
【請求項３】
前記試験実行工程では、
前記第２の対象プログラムの出力データのうち、予め定める除外部分を除く残余の比較部分と、前記正解データのうち、前記除外部分を除く残余の比較部分とを比較し、前記比較部分同士が同一である場合に、前記第２の対象プログラムの出力データと前記正解データとが同一であると判断することを特徴とする請求項２に記載のソフトウェア試験実行方法。
【請求項４】
前記試験実行工程では、
前記成功判定で失敗したと判定すると、前記第２の対象プログラムの出力データの取得と前記成功判定とを繰返し行うことを特徴とする請求項１〜３のいずれか１つに記載のソフトウェア試験実行方法。
【請求項５】
前記試験実行工程では、
予め定める判定制限時間が経過すると、前記第２の対象プログラムの出力データの取得と前記成功判定とを終了することを特徴とする請求項４に記載のソフトウェア試験実行方法。
【請求項６】
前記試験実行工程では、
前記第２の対象プログラムの動作状況に応じて、前記判定制限時間を増減させることを特徴とする請求項５に記載のソフトウェア試験実行方法。
【請求項７】
前記正解登録工程では、
取得した出力データが前記仕様に合致しない場合、予め定める取得制限時間が経過するまで、前記第１の対象プログラムの出力データの取得を繰返し行うことを特徴とする請求項１〜６のいずれか１つに記載のソフトウェア試験実行方法。
【請求項８】
前記正解登録工程では、
前記第１の対象プログラムの動作状況に応じて、前記取得制限時間を増減させることを特徴とする請求項７に記載のソフトウェア試験実行方法。
【請求項９】
前記正解保持装置は、単一の出力データに対して複数の正解データを保持し、
前記試験実行工程では、
前記第２の対象プログラムの出力データと、前記正解保持装置の保持する複数の正解データのうちのいずれかの正解データとが同一である場合に、成功したと判定することを特徴とする請求項１〜８のいずれか１つに記載のソフトウェア試験実行方法。
【請求項１０】
前記正解登録工程では、
前記正解保持装置に正解データが保持されているとき、その正解データに対応する出力データであって前記仕様に合致する出力データが新たに取得されると、前記正解保持装置に保持されている正解データを削除して、新たに取得された出力データを正解データとして登録するか、または前記正解保持装置に保持されている正解データに加えて、新たに取得された出力データを正解データとして追加して登録することを特徴とする請求項１〜９のいずれか１つに記載のソフトウェア試験実行方法。
【請求項１１】
前記試験実行工程では、
前記第２の対象プログラムの出力データと前記正解データとの差分を出力表示装置に表示し、前記差分に基づいて、前記成功判定を行うことを特徴とする請求項１〜１０のいずれか１つに記載のソフトウェア試験実行方法。
【請求項１２】
前記正解登録工程は、複数回行われ、
前記正解登録工程では、
前記第１の対象プログラムの出力データを取得する度に、取得した第１の対象プログラムの出力データを出力保持装置に格納し、
前記正解保持装置が前記正解データを保持していない場合、今回取得した第１の対象プログラムの出力データと、前回取得した第１の対象プログラムの出力データとを比較し、今回取得した前記出力データと前回取得した前記出力データとが異なる場合に、今回取得した前記出力データが前記仕様に合致するか否かを判断し、
合致すると判断すると、今回取得した前記出力データを正解データとして前記正解保持装置に登録することを特徴とする請求項１〜１１のいずれか１つに記載のソフトウェア試験実行方法。
【請求項１３】
前記試験実行工程は、複数回行われ、
前記試験実行工程では、
前記成功判定が行われる度に、前記成功判定の結果を試験結果として試験結果保持装置に格納し、
前回の試験結果が成功であり、今回の試験結果が失敗であるとき、その試験結果を与えた前記試験シナリオの処理を試験者に報告することを特徴とする請求項１〜１２のいずれか１つに記載のソフトウェア試験実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの開発において、対象となるソフトウェアの試験を行うソフトウェア試験実行方法に関する。
【背景技術】
【０００２】
短い納期で高品質なソフトウェアを開発するためには、ソフトウェアに対する試験を確実かつ効率的に実施できる環境が必要である。グラフィカルユーザインタフェース（Graphical User Interface；略称：ＧＵＩ）を備えたソフトウェアを開発する場合などにおいては、そのソフトウェアを用い、かつ、規定された入力操作を行うことによって表示画面への表示動作を行わせ、得られた表示画面のフォーマットが正当な表示内容であるか否かのチェックを行う、いわゆる画面試験が行われている。
【０００３】
画面試験では、得られた表示画面を熟練者などの試験者が目視することによって、その良否を判定するので、画面試験を行うためには、多くの時間と労力とが必要であるという問題がある。
【０００４】
また、このような試験者の目視によって表示画面を確認する方法では、人為的なミスを避けることができず、しかも、表示画面内の全ての可変イメージデータを確認する必要があるので、試験に多くの時間と労力とを要するという問題が生じる。
【０００５】
このような多くの時間と労力とを要するという問題を解決するために、画面試験などのソフトウェアに対する試験を自動化する技術が既に開発されており、たとえば特許文献１に開示されている。特許文献１に開示される携帯電話ソフトウェア自動試験方法では、試験仕様書から自動生成した試験シナリオに従って対象機器を操作して試験結果を収集し、試験仕様書から自動生成した試験規格と比較して合否判定を行うことによって、ソフトウェアの試験を自動化している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−９９２８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
前述の特許文献１に開示される方法では、機能拡張または外部仕様の変更などの要因で、ソフトウェアを構成するプログラムのうち、試験の対象となる対象プログラムの動作に変更があった場合、再度自動試験を実施するために、試験仕様書中の試験規格を再度作成し直す必要がある。したがって、試験を維持していくためには、多くの時間と労力とが必要であり、特許文献１に開示される方法には改良の余地がある。
【０００８】
本発明の目的は、対象プログラムが変更された場合でも、時間および労力をかけることなく、低コストで試験の構築および維持が可能なソフトウェア試験実行方法を提供することである。
【課題を解決するための手段】
【０００９】
本発明のソフトウェア試験実行方法は、ソフトウェアの試験を行うソフトウェア試験実行方法であって、前記ソフトウェアを構成するプログラムのうち、試験の対象となる対象プログラムに対する処理が記述された試験シナリオに基づいて、第１の対象プログラムの出力データを取得し、取得した出力データが、予め定める仕様に合致するとき、前記出力データを正解データとして正解保持装置に登録する正解登録工程と、前記試験シナリオに基づいて第２の対象プログラムの出力データを取得し、前記正解保持装置が前記正解データを保持している場合、取得した前記第２の対象プログラムの出力データと前記正解データとを比較することによって、前記第２の対象プログラムが前記仕様に合致する出力データの出力に成功したか失敗したかを判定する成功判定を行う試験実行工程とを備えることを特徴とする。
【発明の効果】
【００１０】
本発明のソフトウェア試験実行方法によれば、正解登録工程と試験実行工程とを備えて、ソフトウェア試験実行方法が構成される。正解登録工程では、試験シナリオに基づいて第１の対象プログラムの出力データが取得され、取得された出力データが、予め定める仕様に合致するとき、正解データとして正解保持装置に登録される。試験実行工程では、試験シナリオに基づいて第２の対象プログラムの出力データが取得され、正解保持装置に正解データが保持されている場合、取得された第２の対象プログラムの出力データと正解データとを比較することによって成功判定が行われる。
【００１１】
このように正解保持装置に正解データが保持されている場合、試験実行工程における成功判定は、第２の対象プログラムの出力データと正解データとを比較することによって行われる。これによって、対象プログラムが変更された場合でも、そのまま成功判定を行うことができる。したがって、正解保持装置に正解データを保持させておくだけで、対象プログラムが変更された場合でも、時間および労力をかけることなく、低コストで、ソフトウェアの試験の構築および維持を実現することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施の形態であるソフトウェア試験実行方法に用いられるソフトウェア試験装置１０の構成を示すブロック図である。
【図２】対象プログラム１８の一例を示す図である。
【図３】試験シナリオ３０の一例を示す図である。
【図４】試験処理における試験実行装置１５の処理手順を示すフローチャートである。
【図５】図３に示す試験シナリオ３０に基づく試験実行装置１５の動作を、シナリオ要素３１〜４１毎に示す図である。
【図６】図３に示す試験シナリオ３０に基づく試験実行装置１５の動作を、シナリオ要素３１〜４１毎に示す図である。
【図７】初めて試験を実行するときの試験実行装置１５の動作の一例を示す図である。
【図８】初めて試験を実行するときの試験実行装置１５の動作の一例を示す図である。
【図９】正解登録装置１７による正解登録処理の一例を示す図である。
【図１０】正解登録装置１７による正解登録処理の一例を示す図である。
【図１１】図９および図１０に示す正解登録処理に関する試験実行装置１５の処理手順を示すフローチャートである。
【図１２】対象プログラム１８の開発途中に試験を実行するときの試験実行装置１５の動作の一例を示す図である。
【図１３】対象プログラム１８の開発途中に試験を実行するときの試験実行装置１５の動作の一例を示す図である。
【図１４】対象プログラム１８の開発完了後に試験を実行するときの試験実行装置１５の動作の一例を示す図である。
【図１５】対象プログラム１８の開発完了後に試験を実行するときの試験実行装置１５の動作の一例を示す図である。
【図１６】デグレードが発生した対象プログラム１８に試験を実行したときの試験実行装置１５の動作の一例を示す図である。
【図１７】デグレードが発生した対象プログラム１８に試験を実行したときの試験実行装置１５の動作の一例を示す図である。
【図１８】複数の正解データが存在する場合の試験における試験実行装置１５の動作の一例を示す図である。
【図１９】正解登録装置１７による強調表示の一例を示す図である。
【図２０】本発明の第２の実施の形態における試験実行装置１５の動作の一例を示す図である。
【図２１】本発明の第２の実施の形態における試験実行装置１５の動作の一例を示す図である。
【図２２】完了ボタンの押下から画面遷移が起こるまでに一定の時間を要する場合の試験における試験実行装置１５の動作の一例を示す図である。
【図２３】完了ボタンの押下から画面遷移が起こるまでに一定の時間を要する場合の試験実行装置１５の処理手順を示すフローチャートである。
【図２４】前回の出力画面と今回の出力画面とが異なる検証の報告に関する出力保持装置１２の動作処理の一例を示す図である。
【図２５】前回の出力画面と今回の出力画面とが異なる検証の報告に関する出力保持装置１２の動作処理の一例を示す図である。
【図２６】試験結果保持装置１４に保持される前回の試験結果と今回の試験結果とを比較して、デグレード候補を提示する場合の一例を示す図である。
【発明を実施するための形態】
【００１３】
＜第１の実施の形態＞
図１は、本発明の第１の実施の形態であるソフトウェア試験実行方法に用いられるソフトウェア試験装置１０の構成を示すブロック図である。ソフトウェア試験装置１０は、試験シナリオ保持装置１１、出力保持装置１２、正解保持装置１３、試験結果保持装置１４、試験実行装置１５、出力表示装置１６および正解登録装置１７を備えて構成される。図１に示す矢印は、データの流れる方向を表す。本発明の第１の実施の形態であるソフトウェア試験実行方法は、ソフトウェア試験装置１０によって実行される。
【００１４】
試験シナリオ保持装置１１は、ソフトウェアの試験（以下、単に「試験」という場合がある）に用いられる試験シナリオを保持する。ソフトウェアは、１つのプログラム、または複数のプログラムの集合によって構成されている。試験が実行されるとき、試験シナリオ保持装置１１に保持されている試験シナリオが、試験実行装置１５によって取出される。
【００１５】
ここで、試験シナリオとは、ソフトウェア試験装置１０に入力される対象プログラム１８に対する処理を記述したものである。試験シナリオは、複数のシナリオ要素で構成される。対象プログラム１８に対する処理は、シナリオ要素単位で実行される。試験シナリオは、シナリオ要素を実行する順に並べて構成される。シナリオ要素とは、対象プログラム１８に対して行う操作の記述（以下「操作記述」という場合がある）、または対象プログラム１８に対して行う検証の記述（以下「検証記述」という場合がある）である。検証は、対象プログラム１８からの出力データの取得、出力保持装置１２への出力データの格納、正解保持装置１３の保持する正解データと出力データとの比較による成功判定、および試験結果保持装置１４への判定結果の格納を含む。
【００１６】
個々の検証には、他の検証と区別するための識別子が付されている。たとえば、対象プログラム１８に対するキーボード操作として、「Ｃｔｒｌキー」と「Ｎキー」とを同時に押下する操作を「Ｃｔｒｌ-Ｎ」と記述し、対象プログラム１８に対する検証を「画面検証」と記述するように定義した場合、前記「Ｃｔｒｌ-Ｎ」および「画面検証」の２つの制御を順番に実行する試験シナリオは、以下のように記述できる。
【００１７】
Ｃｔｒｌ-Ｎ
画面検証
出力保持装置１２は、試験実行装置１５から与えられる対象プログラム１８の出力データを保持する。具体的には、出力保持装置１２は、試験実行装置１５から与えられる対象プログラム１８の出力画面を画像ファイルとして保持する。また出力保持装置１２は、保持している対象プログラム１８の出力データである出力画面の画像ファイルを出力表示装置１６に与える。以下、出力データである出力画面の画像ファイルを、出力画像ファイルという場合がある。
【００１８】
正解保持装置１３は、試験実行装置１５から与えられる試験の正解データを保持する。具体的には、正解保持装置１３は、出力保持装置１２で保持され、試験実行装置１５から与えられる画像ファイルのうち、対象プログラム１８の画面仕様に合致する画像ファイルを正解データとして保持する。以下、正解データとして保持される画像ファイルを、正解画像ファイルという場合がある。
【００１９】
試験結果保持装置１４は、試験実行装置１５から与えられる試験の結果を保持する。試験実行装置１５は、試験シナリオ保持装置１１から与えられる試験シナリオに従って試験を実行する。出力表示装置１６は、出力保持装置１２から与えられる対象プログラム１８の出力データである出力画面の画像ファイルを表示して、試験者に提示する。正解登録装置１７は、出力保持装置１２から与えられる対象プログラム１８の出力データである出力画面の画像ファイルを正解保持装置１３に登録する。
【００２０】
ソフトウェア試験装置１０を構成する試験シナリオ保持装置１１、出力保持装置１２、正解保持装置１３および試験結果保持装置１４は、たとえば、オペレーティングシステム（Operating System；略称：ＯＳ）におけるファイルシステム上のフォルダとして構築することができる。
【００２１】
ソフトウェア試験装置１０に入力される対象プログラム１８は、グラフィカルユーザインタフェース（Graphical User Interface；略称：ＧＵＩ）を備え、マウスおよびキーボードなどの入力手段で操作可能なアプリケーションプログラムである。
【００２２】
図２は、対象プログラム１８の一例を示す図である。図２では、対象プログラム１８の一例として、２つの項目および完了ボタンのダイアログボックスを有するダイアログ型のプログラムを示している。このプログラムは、起動時の画面において、不図示の入力操作部によって項目１と項目２とを入力して完了ボタンを押下する完了操作を行うと、入力された項目を登録し、操作完了時の画面において、登録内容を表示する。項目１、項目２および完了ボタンの各ダイアログボックス間は、タブキーで移動することができる。
【００２３】
図３は、試験シナリオ３０の一例を示す図である。図３では、図２に示した対象プログラム１８の一例に対して記述した試験シナリオ３０の一例を示している。試験シナリオ３０は、対象プログラム１８を処理するための複数のシナリオ要素、本実施の形態では１１個のシナリオ要素３１〜４１、すなわち第１〜第１１シナリオ要素３１〜４１を備えて構成されている。第１〜第１１シナリオ要素３１〜４１のうち、第２シナリオ要素３２、第５シナリオ要素３５、第８シナリオ要素３８および第１１シナリオ要素４１は、検証記述であり、残りのシナリオ要素３１，３３，３４，３６，３７，３９，４０は、操作記述である。操作記述は、具体的なキー操作を伴う。また検証記述は、検証を行うときの制限時間を伴うことがある。本実施の形態では、対象プログラム１８は、試験シナリオ３０を構成する各シナリオ要素３１〜４１に従って処理される。
【００２４】
対象プログラム１８は、具体的な一例として、試験シナリオ３０に基づいて以下のような処理を行う。まず、第１シナリオ要素３１である「プログラム起動」に従って、プログラムを起動する。その後、第２シナリオ要素３２である「画面検証１」に従って、起動画面を検証する。その後、第３シナリオ要素３３である「項目１へ移動」に従って、項目１の入力位置に移動する。その後、第４シナリオ要素３４である「項目１を入力」に従って、項目１に「入力１」という文字列を入力する。
【００２５】
次に、第５シナリオ要素３５である「画面検証２」に従って、画面を検証する。その後、第６シナリオ要素３６である「項目２へ移動」に従って、項目１の入力位置から項目２の入力位置に移動する。その後、第７シナリオ要素３７である「項目２を入力」に従って、項目２に「入力２」という文字列を入力する。
【００２６】
次に、第８シナリオ要素３８である「画面検証３」に従って、画面を検証する。その後、第９シナリオ要素３９である「完了ボタンへ移動」に従って、項目２の入力位置から完了ボタンの位置に移動する。その後、第１０シナリオ要素４０である「完了」に従って、完了ボタンを押下する。次に、第１１シナリオ要素４１である「画面検証４」に従って、画面を検証する。
【００２７】
試験シナリオ保持装置１１は、図３に示すような試験シナリオ３０を保持し、試験実行装置１５に対して供給する。試験実行装置１５は、対象プログラム１８に対してマウスおよびキーボードなどの不図示の入力装置からイベントを送信することによって、各シナリオ要素３１〜４１に記述された制御を実行する。対象プログラム１８を制御するためのイベントの送出は、たとえば「Java（登録商標） Robot」または「Windows（登録商標） Script Host」などの技術を用いて実現することができる。
【００２８】
また試験実行装置１５は、対象プログラム１８の出力画面を画像データとして取得する。出力画面の取得は、「Java（登録商標） Robot」または画面コピーイベントの送出などによって実現することができる。
【００２９】
また試験実行装置１５は、出力保持装置１２が保持する出力データである出力画像ファイルと、正解保持装置１３が保持する正解データである正解画像ファイルとを比較することによって検証を行い、その検証が成功か失敗か、すなわち対象プログラム１８が、仕様に合致する出力データの出力に成功したか失敗したかを判定する成功判定を行う。試験実行装置１５による検証の結果は、試験結果保持装置１４に格納される。
【００３０】
また試験実行装置１５は、検証時に、対象プログラム１８の出力画面を画像データとして取得し、それを出力保持装置１２に与える。出力保持装置１２は、試験実行装置１５から与えられた画像データを、検証の識別子で弁別できるような画像ファイルとして保存する。
【００３１】
また試験実行装置１５は、成功判定を行うとき、検証の識別子を指定して出力保持装置１２から出力データである出力画像データを取得する。そして、試験実行装置１５は、正解保持装置１３から正解データである正解画像データを取得し、成功判定を行う。試験結果保持装置１４は、試験実行装置１５が行った検証ごとの成功判定の結果を、検証の識別子とともに保存する。
【００３２】
正解を登録するとき、正解登録装置１７は、検証の識別子を指定して出力保持装置１２から画像ファイルを取得する。そして、正解登録装置１７は、登録の操作に従い、出力保持装置１２から取得した画像ファイルを、検証の識別子を指定して正解保持装置１３に格納する。正解保持装置１３は、出力保持装置１２から取得されて正解登録装置１７から与えられた画像ファイルを、検証の識別子で弁別できるような画像ファイルとして保存する。出力表示装置１６は、指定された検証の識別子に対応する出力データを出力保持装置１２から取得して表示する。
【００３３】
以下、ソフトウェア試験装置１０を用いた本実施の形態のソフトウェア試験実行方法における具体的な処理の流れを説明する。ソフトウェア試験装置１０では、前準備として、試験シナリオを作成し、試験シナリオ保持装置１１への登録を行う。ソフトウェアの開発では、上流工程において、外部仕様としてユースケースを記述することがあるが、この場合は、ユースケースの記述に対して、マウスおよびキーボードなどの具体的な操作と検証タイミングの指定とを付加することによって、試験シナリオを作成することができる。試験シナリオの作成および登録が完了すると、ソフトウェア試験装置１０によって試験を実行することが可能となる。試験に関する処理（以下「試験処理」という場合がある）は、具体的には、ソフトウェア試験装置１０を構成する試験実行装置１５によって実行される。
【００３４】
図４は、試験処理における試験実行装置１５の処理手順を示すフローチャートである。図４に示すフローチャートの処理は、前述のようにして試験シナリオの作成および登録が完了すると開始され、ステップａ１に移行する。ステップａ１では、試験実行装置１５は、試験シナリオ保持装置１１から試験シナリオを取出す。試験シナリオが取出されると、ステップａ２に移行する。図４に示すステップａ１〜ａ８の処理は、試験実行工程に相当する。
【００３５】
試験実行装置１５は、ステップａ１で試験シナリオ保持装置１１から取出した試験シナリオの記述内容に従って試験を実行する。より詳細には、試験実行装置１５は、ステップａ２〜ａ８において、ステップａ１で試験シナリオ保持装置１１から取出した試験シナリオに含まれているシナリオ要素を順に読込んで、シナリオ要素の種別に対応する処理を実行する。具体的に述べると、ステップａ２において、試験実行装置１５は、ステップａ１で試験シナリオ保持装置１１から取出した試験シナリオから、最初のシナリオ要素を読込み、ステップａ３に移行する。
【００３６】
ステップａ３では、試験実行装置１５は、ステップａ２で読込んだシナリオ要素が操作記述であるか否かを判断する。ステップａ３において、操作記述であると判断した場合はステップａ４に移行し、操作記述ではない、換言すれば検証記述であると判断した場合は、ステップａ５に移行する。
【００３７】
ステップａ４では、試験実行装置１５は、対象プログラム１８に対し、その操作記述に対応するイベントを送出する。操作記述に対応するイベントを送出すると、ステップａ８に移行する。
【００３８】
ステップａ５では、試験実行装置１５は、対象プログラム１８から出力データを取得し、出力保持装置１２に格納する。本実施の形態では、試験実行装置１５は、出力データとして、対象プログラム１８が描画する画面範囲の画像データを取得し、取得した画像データを、画像ファイルとして出力保持装置１２に格納する。取得した出力データを出力保持装置１２に格納すると、ステップａ６に移行する。
【００３９】
ステップａ６では、試験実行装置１５は、検証に対応する正解データが正解保持装置１３に存在するか否か、すなわち正解保持装置１３が、検証に対応する正解データである正解画像ファイルを保持しているか否かを判断する。ステップａ６において、正解保持装置１３が正解画像ファイルを保持していると判断した場合は、ステップａ７に移行し、正解保持装置１３が正解画像ファイルを保持していないと判断した場合は、ステップａ８に移行する。
【００４０】
ステップａ７では、試験実行装置１５は、出力保持装置１２が保持している出力データである出力画像ファイルと、正解保持装置１３が保持している正解データである正解画像ファイルとに基づいて、具体的には出力画像ファイルと正解画像ファイルとを比較して、検証の成功判定を行い、判定結果を試験結果保持装置１４に格納する。判定結果を試験結果保持装置１４に格納すると、ステップａ８に移行する。
【００４１】
ステップａ８では、試験実行装置１５は、ステップａ１で試験シナリオ保持装置１１から取出した試験シナリオに、読込んでいないシナリオ要素があるか否かを判断する。ステップａ８において、読込んでいないシナリオ要素があると判断した場合は、ステップａ２に戻り、試験シナリオから次のシナリオ要素を読込む。ステップａ８において、読込んでいないシナリオ要素がないと判断した場合は、全ての処理手順を終了する。
【００４２】
図５および図６は、図３に示す試験シナリオ３０に基づく試験実行装置１５の動作を、シナリオ要素３１〜４１毎に示す図である。図５および図６では、試験シナリオ３０の各シナリオ要素３１〜４１に基づく動作が、時間の経過に沿って、紙面に向かって上から下へと順に記述されている。
【００４３】
対象プログラム１８を開発する過程で、対象プログラム１８の出力画面は、開発の進展に伴って変化する。開発が進むにつれて、対象プログラム１８は、仕様に従った正しい画面をより多く出力するようになる。また、バグが発生すれば、それまで正しい画面を出力していても、対象プログラム１８は、不正な画面を出力するようになる。出力取得工程における第１の対象プログラム１８として、ある開発時点での対象プログラム１８を用い、試験実行工程における第２の対象プログラム１８として、第１の対象プログラム１８よりも開発の進んだ時点の対象プログラム１８を用いることによって、対象プログラム１８の開発の進展とデグレードの発生とを検知することができる。試験の実行は自動であり、比較的低コストであるので、任意の時点で繰返し行うことができる。
【００４４】
図５に示すように、試験実行装置１５は、まず、第１シナリオ要素３１である「プログラム起動」に対して、第１操作５１を実行して対象プログラム１８を起動する。次に試験実行装置１５は、第２シナリオ要素３２である「画面検証１」に対して、第１検証５２を実行する。具体的には、試験実行装置１５は、対象プログラム１８から画面を出力して出力画面を取得し、第２シナリオ要素３２に記述された画面検証１に対応する正解データである正解画面７１が正解保持装置１３に存在すれば、出力画面と正解画面７１との比較による成功判定（以下「比較判定」という場合がある）を行い、判定結果を試験結果保持装置１４に格納する。
【００４５】
次に試験実行装置１５は、第３シナリオ要素３３である「項目１へ移動」に対して、第２操作５３を実行して対象プログラム１８にタブキー押下イベントを送る。次に試験実行装置１５は、第４シナリオ要素３４である「項目１を入力」に対して、第３操作５４を実行して対象プログラム１８に「入力１」と入力する。次に試験実行装置１５は、第５シナリオ要素３５である「画面検証２」に対して、第２検証５５を実行する。具体的には、試験実行装置１５は、対象プログラム１８から画面を出力して出力画面を取得し、第５シナリオ要素３５に記述された画面検証２に対応する正解データである正解画面７２が正解保持装置１３に存在すれば比較判定を行い、判定結果を試験結果保持装置１４に格納する。
【００４６】
次に試験実行装置１５は、図６に示すように、第６シナリオ要素３６である「項目２へ移動」に対して、第４操作５６を実行して対象プログラム１８にタブキー押下イベントを送る。次に試験実行装置１５は、第７シナリオ要素３７である「項目２を入力」に対して、第５操作５７を実行して対象プログラム１８に「入力２」と入力する。次に試験実行装置１５は、第８シナリオ要素３８である「画面検証３」に対して、第３検証５８を実行する。具体的には、試験実行装置１５は、対象プログラム１８から画面を出力して出力画面を取得し、第８シナリオ要素３８に記述された画面検証３に対応する正解データである正解画面７３が正解保持装置１３に存在すれば比較判定を行い、判定結果を試験結果保持装置１４に格納する。
【００４７】
次に試験実行装置１５は、第９シナリオ要素３９である「完了ボタンへ移動」に対して、第６操作５９を実行して対象プログラム１８にタブキー押下イベントを送る。次に試験実行装置１５は、第１０シナリオ要素４０である「完了」に対して、第７操作６０を実行して対象プログラム１８にエンターキー押下イベントを送る。次に試験実行装置１５は、第１１シナリオ要素４１である「画面検証４」に対して、第４検証６１を実行する。具体的には、試験実行装置１５は、対象プログラム１８から画面を出力して出力画面を取得し、第１１シナリオ要素４１に記述された画面検証４に対応する正解データである正解画面７４が正解保持装置１３に存在すれば比較判定を行い、判定結果を試験結果保持装置１４に格納する。
【００４８】
検証における成功判定の方法は、出力画像の画像データと正解画像の画像データとをピクセル毎に比較し、全てのピクセルが同一ならば成功と判定し、１ピクセルでも異なれば失敗と判定する。ただし、予め比較対象から除外する除外部分を指定されている場合は、その除外部分の画像データが異なっていても成功と判定する。たとえば、ユーザ毎の、対象プログラム１８の利用環境の違いに起因する表示画面の差異を無視するために、対象プログラム１８のツールバー部分の画像データを無視したり、乱数によって発生する文字列の表示部分の画像データを無視したりする場合が考えられる。この場合、対象プログラム１８の動作の妥当性を検証し、その上で、正確に一致する必要が無い部分の画像データを比較対象から除外する。具体的には、出力データである出力画像の画像データのうち、除外部分を除く残余の部分である比較部分と、正解データである正解画像の画像データのうち、除外部分を除く残余の部分である比較部分とを比較し、比較部分同士が同一ならば成功と判定し、比較部分同士が異なれば失敗と判定する。これによって、ユーザ毎の、対象プログラム１８の利用環境の違いに起因する表示画面の差異を無視することができるので、成功判定をより確実に行うことができる。
【００４９】
対象プログラム１８に対して試験を初めて実行する場合、正解画像が存在しないので、全ての検証において正解なしと判定され、試験結果保持装置１４には、全ての検証に関して正解なしとの結果が記録される。他方で、出力保持装置１２には、実行された対象プログラム１８の検証毎の出力画像が記録される。
【００５０】
図７および図８は、初めて試験を実行するときの試験実行装置１５の動作の一例を示す図である。図７および図８では、図５および図６と同様に、図３に示す試験シナリオ３０に基づく試験実行装置１５の動作を、シナリオ要素３１〜４１毎に示す。図７および図８では、試験シナリオ３０の各シナリオ要素３１〜４１に基づく動作が、時間の経過に沿って、紙面に向かって上から下へと順に記述されている。
【００５１】
図７に示すように、まず、第１シナリオ要素３１である「プログラム起動」に従い、試験実行装置１５によって対象プログラム１８が起動される。次に、第２シナリオ要素３２である「画面検証１」に従い、試験実行装置１５によって、対象プログラム１８から出力データである出力画面８１が取得されるとともに、取得された出力画面８１の画像ファイルが出力保持装置１２に格納される。また、初めて試験を実行するとき（以下「初回実行時」という場合がある）には、正解保持装置１３は正解データを保持していないので、試験実行装置１５は「正解なし」と判定して、試験結果保持装置１４に「正解なし」という結果を格納する。
【００５２】
次に、第３シナリオ要素３３である「項目１へ移動」に従い、試験実行装置１５によってタブキー押下イベントが対象プログラム１８に送られる。次いで、第４シナリオ要素３４である「項目１を入力」に従い、試験実行装置１５によって対象プログラム１８に「入力１」の入力が行われる。次いで第５シナリオ要素３５である「画面検証２」に従い、試験実行装置１５によって、対象プログラム１８からの出力画面８２の取得と、取得した出力画面８２の画像ファイルの出力保持装置１２への格納とが行われる。また第２シナリオ３２の画面検証１と同様に、初回実行時には正解保持装置１３は正解データを保持していないので、試験実行装置１５は「正解なし」と判定して、試験結果保持装置１４に「正解なし」という結果を格納する。
【００５３】
次に、図８に示すように、第６シナリオ要素３６である「項目２へ移動」に従い、試験実行装置１５によってタブキー押下イベントが対象プログラム１８に送られる。次いで、第７シナリオ要素３７である「項目２を入力」に従い、試験実行装置１５によって対象プログラム１８に「入力２」の入力が行われる。次いで、第８シナリオ要素３８である「画面検証３」に従い、試験実行装置１５によって対象プログラム１８からの出力画面８３の取得と、取得した出力画面８３の画像ファイルの出力保持装置１２への格納とが行われる。また第２シナリオ３２の画面検証１と同様に、初回実行時には正解保持装置１３は正解データを保持していないので、試験実行装置１５は「正解なし」と判定して、試験結果保持装置１４に「正解なし」という結果を格納する。
【００５４】
次に、第９シナリオ要素３９である「完了ボタンへ移動」に従い、試験実行装置１５によってタブキー押下イベントが対象プログラム１８に送られる。次いで、第１０シナリオ要素４０である「完了」に従い、試験実行装置１５によってエンターキー押下イベントが対象プログラム１８に送られる。次いで、第１１シナリオ要素４１である「画面検証４」に従い、試験実行装置１５によって対象プログラム１８からの出力画面８４の取得と、取得した出力画面８４の画像ファイルの出力保持装置１２への格納とが行われる。また第２シナリオ３２の画面検証１と同様に、初回実行時には正解保持装置１３は正解データを保持していないので、試験実行装置１５は「正解なし」と判定して、試験結果保持装置１４に「正解なし」という結果を格納する。以上のようにして、対象プログラム１８の制御、対象プログラム１８からの出力データの取得および出力保持装置１２への格納、ならびに試験結果保持装置１４への試験結果の格納が繰返し行われる。
【００５５】
図９および図１０は、正解登録装置１７による正解登録処理の一例を示す図である。図９および図１０では、正解登録処理に関する出力保持装置１２、正解保持装置１３および出力表示装置１６の動作を併せて示す。
【００５６】
出力表示装置１６は、検証毎の出力画面を出力保持装置１２から取出して表示する。表示された出力画面が対象プログラム１８の仕様に合致している場合は、正解登録装置１７は、出力保持装置１２から出力画面をコピーして、正解画面として正解保持装置１３に登録する。具体的には、正解登録装置１７は、出力保持装置１２から出力画面８１の画像データを取得し、取得した出力画面の画像データを正解データとして正解保持装置１３に格納する。また、出力表示装置１６に表示された出力画面が対象プログラム１８の仕様に合致してしない場合は、対象プログラム１８は試験に合格していないので、正解登録装置１７による正解保持装置１３への正解データの登録（以下「正解登録」という場合がある）は行われない。
【００５７】
出力表示装置１６に表示された出力画面が対象プログラム１８の仕様に合致しているか否かの判断は、試験者によって行われる。試験者は、出力表示装置１６に表示された出力画面が対象プログラム１８の仕様に合致していると判断すると、正解登録装置１７による正解保持装置１３への正解データの登録を行うように不図示の操作部を操作する。試験者は、出力表示装置１６に表示された出力画面が対象プログラム１８の仕様に合致していないと判断すると、正解登録装置１７による正解保持装置１３への正解データの登録を行わないように不図示の操作部を操作する。
【００５８】
図９および図１０では、図７および図８に示す４つの画面検証１〜４に対して、正解判定と正解登録とを行った場合を示している。図７に示す第２シナリオ要素３２である「画面検証１」における出力画面８１は、対象プログラム１８の仕様に合致している正しい出力画面である。したがって、「画面検証１」における出力画面８１が出力表示装置１６によって表示される場合、図９に示すように、出力画面８１が正解登録装置１７によって出力保持装置１２から正解保持装置１３にコピーされ、正解保持装置１３に正解画面７１として登録される。
【００５９】
同様に、図７に示す第５シナリオ要素３５である「画面検証２」における出力画面８２および図８に示す第８シナリオ要素３８である「画面検証３」における出力画面８３も正しい出力画面である。したがって、これらの出力画面８２，８３が出力表示装置１６によって表示される場合も、図９および図１０に示すように、出力画面８２，８３が正解登録装置１７によって出力保持装置１２から正解保持装置１３にコピーされ、正解保持装置１３に正解画面７２，７３として登録される。
【００６０】
図８に示す第１１シナリオ要素４１である「画面検証４」における出力画面８４は、対象プログラム１８の仕様に合致しておらず、正しい出力画面ではない。したがって、「画面検証４」における出力画面８４が出力表示装置１６によって表示される場合、正解登録装置１７による正解保持装置１３への正解データの登録は行われない。このように正解データの登録が行われないので、次回の試験実行のときにも、「画面検証４」では、図８に示す場合と同様に、「正解なし」と判定され、出力画面８４が正解か否かの判定は行われない。
【００６１】
図１１は、図９および図１０に示す正解登録処理に関する試験実行装置１５の処理手順を示すフローチャートである。図１１に示すフローチャートでは、検証が実行されると、本処理を開始し、ステップｂ１に移行する。図１１に示すステップｂ１〜ｂ６の処理は、正解登録工程に相当する。
【００６２】
ステップｂ１では、試験実行装置１５は、指定された検証のシナリオ要素に対応する出力データを出力表示装置１６に表示し、ステップｂ２に移行する。
【００６３】
ステップｂ２では、試験実行装置１５は、出力表示装置１６に表示された出力データが、対象プログラム１８の当該検証実施時点で要求される仕様を満たす正しいデータか否かを判断する。本実施の形態では、試験実行装置１５は、出力表示装置１６に表示された出力データである出力画面が、対象プログラム１８の、当該検証実施時点の出力画面として要求される仕様を満たす正しい出力画面であるか否かを判断する。ステップｂ２において、正しい出力画面であると判断すると、ステップｂ３に移行し、正しい出力画面ではないと判断すると、全ての処理手順を終了する。
【００６４】
ステップｂ２において、正しい出力画面であると判断されてステップｂ３に移行した場合、ステップｂ３〜ｂ６において、前述の図９および図１０に示すように、出力画面の画像データが正解登録装置１７によって出力保持装置１２から正解保持装置１３にコピーされ、正解データとして登録される。図９および図１０に示す「画面検証１」の出力画面８１、「画面検証２」の出力画面８２、および「画面検証３」の出力画面８３が出力表示装置１６に表示される場合、これらの出力画面８１〜８３は正しい出力画面であるので、ステップｂ２からステップｂ３に移行し、ステップｂ３〜ｂ６において、正解データの登録が行われる。図１０に示す「画面検証４」の出力画面８４が出力表示装置１６に表示される場合、この出力画面８４は正しい出力画面ではないので、正解データの登録は行われず、正解登録処理に関する全ての処理手順が終了される。
【００６５】
ステップｂ３〜ｂ６における正解データの登録は、具体的には以下のようにして行われる。ステップｂ３において、試験実行装置１５は、正解登録装置１７による正解データの正解保持装置１３への登録操作が、正解データの入替え操作であるか否かを判断する。ステップｂ３において、正解データの入替え操作であると判断された場合は、ステップｂ５に移行し、正解データの入替え操作ではないと判断された場合は、ステップｂ４に移行する。
【００６６】
ステップｂ４では、試験実行装置１５は、正解登録装置１７による出力データの正解保持装置１３への登録操作が、正解データの追加操作であるか否かを判断する。ステップｂ４において、正解データの追加操作であると判断された場合は、ステップｂ６に移行し、正解データの追加操作ではないと判断された場合は、全ての処理手順を終了する。
【００６７】
ステップｂ５では、試験実行装置１５は、正解保持装置１３の中の指定された入替え対象の正解データを削除する。正解データを削除すると、ステップｂ６に移行する。
【００６８】
ステップｂ６では、試験実行装置１５は、出力保持装置１２から取得した出力データを正解保持装置１３に登録する。ステップｂ３からステップｂ５を経てステップｂ６に移行した場合は、ステップｂ５およびステップｂ６によって、正解データの入替えが行われることになる。ステップｂ３からステップｂ４を経てステップｂ６に移行した場合は、ステップｂ６によって、正解データの追加登録が行われることになる。出力データの登録が終了すると、全ての処理手順を終了する。
【００６９】
前述の図７および図８に示すように、初回実行時には全ての検証記述で「正解なし」と判定されるが、以上に述べた正解登録処理によって正解データの登録が行われた検証記述については、２回目以降の試験において、「成功」または「失敗」と判定される。もし、対象プログラム１８の動作に変化がなければ、対象プログラム１８は、正解データが登録された部分については、正解データである正解画面の画像と同一の画像を出力するはずであるので、判定結果は「成功」となり、試験結果保持装置１４には「成功」と記録される。したがって、対象プログラム１８が開発中で未完成の状態であれば、開発完了部分の検証は「成功」の状態となり、未開発部分の検証は「正解なし」の状態になる。
【００７０】
図１２および図１３は、対象プログラム１８の開発途中に試験を実行するときの試験実行装置１５の動作の一例を示す図である。図１２および図１３では、図５および図６と同様に、図３に示す試験シナリオ３０に基づく試験実行装置１５の動作を、シナリオ要素３１〜４１毎に示す。対象プログラム１８の開発途中に試験を実行する場合、全ての検証に対して正解データである正解画面が存在するわけではない。たとえば、前述の図９および図１０に示す正解登録処理によって、「画面検証１」、「画面検証２」および「画面検証３」において、正解データである正解画面７１〜７３が正解保持装置１３に登録された場合を考える。
【００７１】
図１２に示す第２シナリオ要素３２である「画面検証１」に従って行われる検証では、正解画面７１が存在するので、出力画面９１は正解画面７１と比較され、成功判定が行われる。この場合、出力画面９１は正解画面７１と同じ画像であるので、判定に成功し、試験結果保持装置１４には「成功」という判定結果が格納される。
【００７２】
同様に、図１２に示す第５シナリオ要素３５である「画面検証２」に従って行われる検証では、正解画面７２が存在するので、出力画面９２は正解画面７２と比較され、成功判定が行われる。この場合、出力画面９２は正解画面７２と同じ画像であるので、判定に成功し、試験結果保持装置１４に「成功」という判定結果が格納される。
【００７３】
同様に、図１３に示す第８シナリオ要素３８である「画面検証３」に従って行われる検証では、正解画面７３が存在するので、出力画面９３は正解画面７３と比較され、成功判定が行われる。この場合、出力画面９３は正解画面７３と同じ画像であるので、判定に成功し、試験結果保持装置１４には「成功」という判定結果が格納される。
【００７４】
図１３に示す第１１シナリオ要素４１である「画面検証４」に従って行われる検証では、対応する正解画面が存在しないので、出力画面９４に対しては成功判定が行われず、試験結果保持装置１４には「正解なし」という情報が格納される。
【００７５】
図１４および図１５は、対象プログラム１８の開発完了後に試験を実行するときの試験実行装置１５の動作の一例を示す図である。図１４および図１５では、図５および図６と同様に、図３に示す試験シナリオ３０に基づく試験実行装置１５の動作を、シナリオ要素３１〜４１毎に示す。対象プログラム１８の開発完了後に試験を実行する場合、全ての検証に対して正解データである正解画面７１〜７４が存在する。
【００７６】
前述の図１２および図１３に示す開発途中に試験を実行する場合と同様に、第２シナリオ要素３２である「画面検証１」、第５シナリオ要素３５である「画面検証２」および第８シナリオ要素３８である「画面検証３」では、出力画面１０１〜１０３はそれぞれ、正解画面７１〜７３と比較され、成功判定が行われる。図１４および図１５に示す例では、各出力画面１０１〜１０３は、対応する検証の正解画面７１〜７３と同じ画像であるので、判定に成功し、試験結果保持装置１４には「成功」という判定結果が格納される。
【００７７】
図１５に示す例では、第１１シナリオ要素４１である「画面検証４」に従って行われる検証でも正解画面７４が存在するので、出力画面１０４は正解画面７４と比較され、成功判定が行われる。図１５に示す例では、出力画面１０４は正解画面７４と同じ画像であるので、判定に成功し、試験結果保持装置１４には「成功」という判定結果が格納される。
【００７８】
このように全ての検証に対して正解データ、具体的には正解画面７１〜７４が存在し、検証結果が「成功」になれば、対象プログラム１８の開発は完了となる。
【００７９】
このようにして、一旦、対象プログラム１８の開発が完了した部分であっても、対象プログラム１８の動作に変化があれば、対象プログラム１８は、正解データと異なるデータ、本実施の形態では、正解画面と異なる画面を出力する可能性がある。これには以下に述べる場合があり得る。
【００８０】
一つは、対象プログラム１８が不正な動作をするようになり、不正な画面を出力している場合である。これは、ソフトウェアのバージョンアップに伴う品質低下、いわゆるデグレードであり、何らかのバグが混入したことを表している。もう一つは、対象プログラム１８の動作には問題がないが、出力データが正解データと異なる、具体的には出力画面が正解画面と異なる場合である。これについては、後述する。
【００８１】
図１６および図１７は、デグレードが発生した対象プログラム１８に試験を実行したときの試験実行装置１５の動作の一例を示す図である。図１６および図１７では、図５および図６と同様に、図３に示す試験シナリオ３０に基づく試験実行装置１５の動作を、シナリオ要素３１〜４１毎に示す。図１７では、第１０シナリオ要素４０である「完了」に従ってエンターキーが押下された時点から制限時間内に、期待される画面遷移が起こらないというバグが起こっている状態を示している。
【００８２】
第２シナリオ要素３２である「画面検証１」、第５シナリオ要素３５である「画面検証２」および第８シナリオ要素３８である「画面検証３」に従って行われる検証では、前述の図１４および図１５に示す開発完了後に試験を実行する場合と同様に、各出力画面１１１〜１１３は、対応する検証の正解画面７１〜７３と同じ画像である。したがって判定に成功し、試験結果保持装置１４には「成功」という判定結果が格納される。
【００８３】
第１１シナリオ要素４１である「画面検証４」に従って行われる検証では、正解保持装置１３に登録された正解画面７４と同じ出力画面が期待されるが、図１７に示す例では、正解画像画面７４の登録以降に作り込まれたバグによって対象プログラム１８が動作不良を起こし、正解画面７４と異なる出力画面１１４が出力されている。したがって、検証の判定結果は「失敗」となり、試験結果保持装置１４には「失敗」という判定結果が格納される。
【００８４】
対象プログラム１８の動作には問題がないが、出力データが正解データと異なる場合には、以下の２つの場合がある。一つは、実装の変化などによって、仕様の許容範囲内で対象プログラム１８の動作が変化した場合である。この場合、正解登録装置１７は、以前の正解データに代えて、新しい出力データを正解データとして登録する。具体的には、正解登録装置１７は、以前に登録された正解データである正解画面を削除し、出力データである出力画面を新しい正解画面として正解保持装置１３に登録する。この場合は、図１１に示すフローチャートのステップｂ３の判断が肯定されて、ステップｂ５における以前の正解データの削除処理と、ステップｂ６における新しい正解データの登録処理とが行われる。
【００８５】
もう一つは、正解保持装置１３に保持されている正解データ以外に正解データが存在する場合、すなわち複数の正解データが存在する場合である。たとえば、後述する図１８に示すように、テキスト編集部１２２において、入力カーソル１２３が点滅している場合が考えられる。入力カーソル１２３が描画されている場合の出力画面と、入力カーソル１２３が描画されていない場合の出力画面とでは、画像としては異なるが、いずれも正解である。この場合、正解登録装置１７は、入力カーソル１２３が描画されている出力画面を正解画面として正解保持装置１３に追加登録する。この場合は、図１１に示すフローチャートでは、ステップｂ３の判断が否定されてステップｂ４に移行し、ステップｂ４の判断が否定されて、ステップｂ６において、新しい正解データである正解画面の登録が行われる。
【００８６】
図１８は、複数の正解データが存在する場合の試験における試験実行装置１５の動作の一例を示す図である。図１８に示す例では、正解データとして、２つの正解画面、具体的には、第１正解画面１３１および第２正解画面１３２が正解保持装置１３に登録されている。第２正解画面１３２では、入力１のテキスト編集部１２２ａに入力カーソル１２３が表示されているが、第１正解画面１３１では、入力１のテキスト編集部１２２ａおよび入力２のテキスト編集部１２２ｂのいずれにも入力カーソル１２３は表示されていない。
【００８７】
この２つの正解画面１３１，１３２の違いは、入力カーソル１２３の点滅によって、入力カーソル１２３が表示されている状態と表示されていない状態との両方の表示状態が交互に起こることに起因する。図１８に示す例では、入力カーソル１２３が表示されているタイミングで出力画面１２１の取得が行われて、出力保持装置１２に格納された場合を示しているが、出力画面１２１が、入力カーソル１２３が表示されている状態および表示されていない状態のいずれの状態であっても、検証は「成功」と判定されるべきである。したがって、本実施の形態では、入力カーソル１２３が表示されていない正解画面１３１と入力カーソル１２３が表示されている正解画面１３２との両方の画面を正解画面として登録しておき、出力画面１２１が、いずれかの正解画面１３１，１３２との比較判定に成功した場合に、試験結果を「成功」として、試験結果保持装置１４に格納する。これによって、「成功」と判定されるべき検証において、確実に「成功」と判定することができる。
【００８８】
以上のように対象プログラム１８の動作には問題がないが、出力画面が正解画面と異なる場合、出力画面と正解画面とを比較して、正解画面を置き換えるか、または追加登録する。これによって、実装の変化などによって、仕様の許容範囲内で対象プログラム１８の動作が変化した場合、および複数の正解データが存在する場合であっても、正確な成功判定を行うことができる。
【００８９】
また、この場合、出力画面と正解画面とを比較して、正解画面を置き換えるか、または追加登録するかを判断する必要がある。ただし、出力画面と正解画面との相違が非常に微小な場合、試験者の目視では、どの部分が相違しているのかを判別することが困難なことがある。そこで、本実施の形態では、正解登録装置１７は、出力画面と正解画面とを比較し、異なっているピクセルを強調表示する機能を備えている。
【００９０】
図１９は、正解登録装置１７による強調表示の一例を示す図である。出力画面１２１と正解画面７１との差は、入力カーソル１２３の表示の有無である。この出力画面１２１と正解画面７１との差分である入力カーソル１２３の表示部分は、正解登録装置１７によって出力表示装置１６に強調表示される。たとえば、他の部分とは異なった色で、出力表示装置１６の表示画面１６ａに表示される。一例としては、入力カーソル１２３の表示部分は白色表示され、残余の部分は黒色表示される。このように出力画面１２１と正解画面７１との差分を強調表示することによって、出力画面１２１と正解画面７１との比較が容易になり、正解登録作業の効率化を図ることができる。
【００９１】
正解登録装置１７は、出力表示装置１６に表示された出力画面が、正解保持装置１３に保持されている正解画面とは異なるが、対象プログラム１８の仕様に合致している場合、前述のようにして出力画面と正解画面との差分を出力表示装置１６に強調表示する。試験者は、強調表示された差分に基づいて、正解画面を置き換えるか、または追加登録するかを判断する。たとえば、図１９に示すように差分が入力カーソル１２３の部分のみのように仕様の許容する差異である場合、試験者は、追加登録すると判断して、出力画面を正解画面として追加登録するように、不図示の操作部を介して正解登録装置１７に指示する。差分が仕様の許容しない差異である場合、試験者は、仕様もしくは実装の変更により正解が変更されたとし、正解画面を置き換えると判断して、正解保持装置１３に保持されていた正解画面を削除して、出力画面を新たな正解画面として登録するように、不図示の操作部を介して正解登録装置１７に指示する。
【００９２】
以上のように本実施の形態によれば、正解保持装置１３に正解データが保持されている場合、成功判定は、対象プログラム１８の出力データと正解データとを比較することによって行われる。具体的には、対象プログラム１８の出力データと正解データとが同一である場合に、成功したと判定する。これによって、対象プログラム１８が変更された場合でも、そのまま成功判定を行うことができる。したがって、正解保持装置１３に正解データを保持させておくだけで、対象プログラムが変更された場合でも、時間および労力をかけることなく、低コストで、ソフトウェアの試験の構築および維持を実現することができる。
【００９３】
＜第２の実施の形態＞
図２０および図２１は、本発明の第２の実施の形態における試験実行装置１５の動作の一例を示す図である。図２０および図２１では、前述の図５および図６と同様に、図３に示す試験シナリオ３０に基づく試験実行装置１５の動作を、シナリオ要素３１〜４１毎に示す。図２０および図２１では、図５および図６と同様に、試験シナリオ３０の各シナリオ要素３１〜４１に基づく動作が、時間の経過に沿って、紙面に向かって上から下へと順に記述されている。
【００９４】
本発明の第２の実施の形態であるソフトウェア試験実行方法は、検証において、対象プログラム１８の出力画面の取得と、取得した出力画面の正解判定とを繰返し行うこと、および、その繰返し動作に待ち時間の制限を加えたこと以外は、前述の第１の実施の形態のソフトウェア試験実行方法と同様の構成である。本実施の形態のソフトウェア試験実行方法は、前述の図１に示すソフトウェア試験装置１０によって実行される。繰返し動作の待ち時間は、前述の図３に示すように試験シナリオ３０に記述され、試験実行装置１５に読込まれる。
【００９５】
対象プログラム１８は、ある制御イベントを受けて、そのイベントに対する動作を完了するまでに一定の時間を要する。したがって、あるイベントの送信直後に、次のイベントの送信を行う場合、次のイベントを送信した時点では、直前のイベントに対する動作がまだ完了していない可能性がある。同様に、あるイベントの送信直後に、対象プログラム１８の出力画面の取得を行う場合、出力画面を取得した時点では、直前のイベントに対する動作がまだ完了していない可能性がある。
【００９６】
そこで、本実施の形態では、試験実行装置１５は、対象プログラム１８に対してあるイベントを送信した直後に、対象プログラム１８の出力画面の取得と、取得した出力画面の比較判定とを繰返し行う。この繰返し動作は、あるイベントを送信した結果得られる画面の正解画面が正解保持装置１３に存在する場合に限定される。
【００９７】
すなわち、試験実行装置１５は、あるイベントを送信した結果得られる画面の正解画面が正解保持装置１３に存在する場合、対象プログラム１８に対してあるイベントを送信した直後に、対象プログラム１８の出力画面の取得と、取得した出力画面の比較判定とを繰返し行う。この場合、試験実行装置１５は、比較判定において成功と判定されたときに、そのイベントに対する動作が完了したものとみなし、次のイベントを送信するという同期方式を用いることができる。
【００９８】
また試験実行装置１５では、対象プログラム１８に対してあるイベントを送信したときに、対象プログラム１８が不正な動作をして、いくら待っても正解画面を出力しない場合に備え、前述の繰返し動作の最大待ち時間を設定し、この最大待ち時間を超えた場合には、正解画面の出力を待たずに、次の動作に進む方法を併用する。これによって、失敗の場合にも試験が続行できるとともに、対象動作に対して実行時間の制限を記述することができ、性能上の制約を同時に試験することができる。最大待ち時間は、判定制限時間に相当する。
【００９９】
具体的に述べると、試験実行装置１５は、まず、図２０に示す第１シナリオ要素３１である「プログラム起動」に対して、図５に示す第１操作５１と同様の第１操作５１Ａを実行して、対象プログラム１８を起動する。
【０１００】
次に試験実行装置１５は、第２シナリオ要素３２である「画面検証１」に対して、第１検証５２Ａを実行する。第１検証５２Ａでは、試験実行装置１５は、図５に示す第１検証５２と同様に、出力画面を取得し、第２シナリオ要素３２に記述された画面検証１に対応する正解データである正解画面７１が正解保持装置１３に存在すれば比較判定を行い、判定結果を試験結果保持装置１４に格納する。本実施の形態では、試験実行装置１５は、判定結果が「失敗」となっても、判定結果が「成功」となるか、または最大待ち時間が経過するまで、出力画面の取得と比較判定とを繰返し行う。たとえば前述の図３に示すように、試験シナリオ３０の第２シナリオ要素３２である「画面検証１」に「２０００」が記述され、最大待ち時間として２０００ミリ秒が設定される場合、試験実行装置１５は、最大２０００ミリ秒間、出力画面の取得と比較判定とを繰返し行い、２０００ミリ秒が経過した場合は「失敗」と判定し、次のシナリオ要素の実行に進む。
【０１０１】
次に試験実行装置１５は、第３シナリオ要素３３である「項目１へ移動」に対して、図５に示す第２操作５３と同様の第２操作５３Ａを実行して、対象プログラム１８にタブキー押下イベントを送る。次に試験実行装置１５は、第４シナリオ要素３４である「項目１を入力」に対して、図５に示す第３操作５４と同様の第３操作５４Ａを実行して、対象プログラム１８に「入力１」と入力する。
【０１０２】
次に試験実行装置１５は、第５シナリオ要素３５である「画面検証２」に対して、第２検証５５Ａを実行する。第２検証５５Ａでは、試験実行装置１５は、図５に示す第２検証５５と同様に、出力画面を取得し、第５シナリオ要素３５に記述された画面検証２に対応する正解データである正解画面７２が正解保持装置１３に存在すれば比較判定を行い、判定結果を試験結果保持装置１４に格納する。本実施の形態では、試験実行装置１５は、判定結果が「失敗」となっても、判定結果が「成功」となるか、または最大待ち時間が経過するまで、出力画面の取得と比較判定とを繰返し行う。たとえば前述の図３に示すように、試験シナリオ３０の第５シナリオ要素３５である「画面検証２」に「２００」が記述され、最大待ち時間として２００ミリ秒が設定される場合、試験実行装置１５は、最大２００ミリ秒間、出力画面の取得と比較判定とを繰返し行い、２００ミリ秒が経過した場合は「失敗」と判定し、次のシナリオ要素の実行に進む。
【０１０３】
次に試験実行装置１５は、図２１に示す第６シナリオ要素３６である「項目２へ移動」に対して、図６に示す第４操作５６と同様の第４操作５６Ａを実行して、対象プログラム１８にタブキー押下イベントを送る。次に試験実行装置１５は、第７シナリオ要素３７である「項目２を入力」に対して、図６に示す第５操作５７と同様の第５操作５７Ａを実行して、対象プログラム１８に「入力２」と入力する。
【０１０４】
次に試験実行装置１５は、第８シナリオ要素３８である「画面検証３」に対して、第３検証５８Ａを実行する。第３検証５８Ａでは、試験実行装置１５は、図６に示す第３検証５８と同様に、出力画面を取得し、第８シナリオ要素３８に記述された画面検証３に対応する正解データである正解画面７３が正解保持装置１３に存在すれば比較判定を行い、判定結果を試験結果保持装置１４に格納する。本実施の形態では、試験実行装置１５は、判定結果が「失敗」となっても、判定結果が「成功」となるか、または最大待ち時間が経過するまで、出力画面の取得と比較判定とを繰返し行う。たとえば前述の図３に示すように、試験シナリオ３０の第８シナリオ要素３８である「画面検証３」に「２００」が記述され、最大待ち時間として２００ミリ秒が設定される場合、試験実行装置１５は、最大２００ミリ秒間、出力画面の取得と比較判定とを繰返し行い、２００ミリ秒が経過した場合は「失敗」と判定し、次のシナリオ要素の実行に進む。
【０１０５】
次に試験実行装置１５は、第９シナリオ要素３９である「完了ボタンへ移動」に対して、図６に示す第６操作５９と同様の第６操作５９Ａを実行して、対象プログラム１８にタブキー押下イベントを送る。次に試験実行装置１５は、第１０シナリオ要素４０である「完了」に対して、図６に示す第７操作６０と同様の第７操作６０Ａを実行して、対象プログラム１８にエンターキー押下イベントを送る。
【０１０６】
次に試験実行装置１５は、第１１シナリオ要素４１である「画面検証４」に対して、第４検証６１Ａを実行する。第４検証６１Ａでは、試験実行装置１５は、図６に示す第４検証６１と同様に、出力画面を取得し、第１１シナリオ要素４１に記述された画面検証４に対応する正解データである正解画面７４が正解保持装置１３に存在すれば比較判定を行い、判定結果を試験結果保持装置１４に格納する。本実施の形態では、試験実行装置１５は、判定結果が「失敗」となっても、判定結果が「成功」となるか、または最大待ち時間が経過するまで、出力画面の取得と比較判定とを繰返し行う。たとえば前述の図３に示すように、試験シナリオ３０の第１１シナリオ要素４１である「画面検証４」に「３０００」が記述され、最大待ち時間として３０００ミリ秒が設定される場合、試験実行装置１５は、最大３０００ミリ秒間、出力画面の取得と比較判定とを繰返し行い、３０００ミリ秒が経過した場合は「失敗」と判定し、次のシナリオ要素の実行に進む。
【０１０７】
図２２は、完了ボタンの押下から画面遷移が起こるまでに一定の時間を要する場合の試験実行装置１５の動作の一例を示す図である。図２２には、第１０シナリオ要素４０である「完了」に従い、試験実行装置１５によって対象プログラム１８にエンターキー押下イベントが送られて完了ボタンが押下されてから、対象プログラム１８の出力画面が正解画面７４に遷移するまでに一定の時間を要する場合を示す。
【０１０８】
第１１シナリオ要素４１である「画面検証４」による検証で、最初に取得される出力画面１４１は、以前の出力画面、すなわち「画面検証３」における出力画面のままであり、正解画面７４と異なるので、比較判定の結果は「失敗」となる。本実施の形態では、図２１に示すように最大待ち時間として規定される制限時間が経過するまでは、画面取得と比較判定とを繰返すので、「失敗」と判定された時点が、まだ制限時間内であれば、さらに画面取得と比較判定とを繰返す。
【０１０９】
図２２に示す例では、２回目の出力画面１４２の取得と、３回目の出力画面１４３の取得との間に、対象プログラム１８の出力画面が正解画面７４に遷移するので、３回目に取得された出力画面１４３は、正解画面７４と一致する。この時点が、まだ制限時間内であれば、検証の結果を「成功」とし、次のシナリオ要素の実行に進む。
【０１１０】
図２３は、完了ボタンの押下から画面遷移が起こるまでに一定の時間を要する場合の試験実行装置１５の処理手順を示すフローチャートである。図２３に示すフローチャートでは、前述の図４に示すフローチャートと同様に、試験シナリオの作成および登録が完了すると処理が開始され、ステップｃ１に移行する。ステップｃ１〜ステップｃ６およびステップｃ１１の各処理は、前述の図４に示すフローチャートのステップａ１〜ステップａ６およびステップａ８の各処理と同一であるので、共通する説明を省略する。
【０１１１】
本実施の形態では、ステップｃ６において、試験実行装置１５は、正解保持装置１３が正解画像ファイルを保持していると判断した場合はステップｃ７に移行し、正解保持装置１３が正解画像ファイルを保持していないと判断した場合はステップｃ１１に移行する。
【０１１２】
ステップｃ７では、試験実行装置１５は、出力データと正解データとを比較する。具体的には、試験実行装置１５は、出力画面と正解画面とを比較する。続いて試験実行装置１５は、ステップｃ８において、比較結果が「成功」であるか否かを判断する。ステップｃ８において、比較結果が「成功」であると判断した場合はステップｃ９に移行し、比較結果が「失敗」であると判断した場合はステップｃ１０に移行する。
【０１１３】
ステップｃ１０では、試験実行装置１５は、予め定める制限時間、たとえば前述の最大待ち時間を超えたか否かを判断する。ステップｃ１０において、制限時間を超えたと判断した場合はステップｃ９に移行し、制限時間を超えていないと判断した場合はステップｃ５に戻り、出力データの取得から始まる各ステップを繰返す。
【０１１４】
ステップｃ９では、試験実行装置１５は、判定結果を試験結果保持装置１４に格納する。試験実行装置１５は、ステップｃ８からステップｃ９に移行した場合は、「成功」という判定結果を試験結果保持装置１４に格納し、ステップｃ１０からステップｃ９に移行した場合は、「失敗」という判定結果を試験結果保持装置１４に格納する。判定結果を試験結果保持装置１４に格納すると、ステップｃ１１に移行する。
【０１１５】
以上に述べた本実施の形態では、試験実行装置１５は、試験シナリオ３０で規定された最大待ち時間に基づいて、比較判定を繰返すか否かを判断する。試験実行装置１５では、正解画面の画像データが正解保持装置１３に存在しない場合に、あるイベントを送信したときの対象プログラム１８の動作が何らかの理由で最大待ち時間以内に完了せず、所望の出力画面が取得できないことがある。このように所望の出力画面が取得できない場合に備え、試験実行装置１５では、正解画面の画像データが正解保持装置１３に存在しない場合は、一定の割合で最大待ち時間を増やす機能を併用してもよい。これによって、初回実行時などにおいて、対象プログラム１８の動作時間のばらつきによらず、より多くの正解画面の画像データを取得することが期待できる。初回実行時の最大待ち時間は、取得制限時間に相当する。
【０１１６】
この場合、試験実行装置１５は、たとえば、試験を実行する計算機の処理性能によって対象プログラム１８の動作速度が異なり、適正な最大待ち時間が異なる場合に、全ての検証の最大待ち時間を予め設定された割合で増減させるように構成される。この構成では、たとえば、ある試験が実行環境として想定する計算機の半分の処理性能の計算機を用いて試験を行う場合、試験実行装置１５は、検証時の最大待ち時間を２倍程度に設定する。これによって、試験シナリオを大幅に変更することなく、試験を実行することができる。
【０１１７】
以上に述べた第１および第２の実施の形態のようにソフトウェア試験装置１０を用いて試験を行う場合、実用的なソフトウェアでは、試験シナリオが膨大な数になる可能性がある。その場合の正解登録作業を支援するために、正解登録装置１７は、前回の出力画面と今回の出力画面とが異なる検証のみを提示する機能を備えて構成されることが好ましい。
【０１１８】
ソフトウェア試験装置１０において、「正解なし」と判定されている検証は、一度も正解していない。つまり、対象プログラム１８における未実装の機能を表している。これらが実装された後で初めて正解となる画面が出力されるようになるが、その場合には、必ず前回の画面とは異なった画面が出力されているはずである。前述のように正解登録装置１７が、前回の出力画面と今回の出力画面とが異なる検証のみを提示する機能を備えて構成されることによって、正解画面の新規登録作業を効率化することができる。
【０１１９】
図２４および図２５は、前回の出力画面と今回の出力画面とが異なる検証の報告に関する出力保持装置１２の動作処理の一例を示す図である。前述のように正解登録装置１７が、前回の出力画面と今回の出力画面とが異なる検証のみを提示する機能を備えて構成される場合、正解登録装置１７は、前回の検証で取得されて出力保持装置１２に保持されている前回の出力画面１５１〜１５４と、今回の検証で取得された今回の出力画面１６１〜１６４とを比較する。
【０１２０】
図２４および図２５に示す例では、第２シナリオ要素３２である「画面検証１」、第５シナリオ要素３５である「画面検証２」および第８シナリオ要素３８である「画面検証３」で取得される出力画面は、前回と今回とで同じである。第１１シナリオ要素４１である「画面検証４」では、今回の出力画面１６４として、前回の出力画面１５４と異なる出力画面が得られている。これは、開発の進展によって画面遷移機能が実現されたことに起因する。
【０１２１】
このように「画面検証４」のみにおいて、前回の出力画面１５４と今回の出力画面１６４とが異なる場合、正解登録装置１７は、「画面検証４」のみを試験者に報告する。この報告は、具体的には、「画面検証４」のように前回の出力と変化のあった検証のリストとを試験者に提示することによって行われる。試験者は、提示された検証に関してのみ、出力画面が仕様に合致しているか否かの確認を行えばよい。このように、全ての検証に関して出力画面が仕様に合致しているか否かを確認するよりも、変化のあったもののみを確認する方が効率的である。
【０１２２】
また正解登録装置１７は、デグレードをいち早く発見するために、前回の試験実行の結果、「成功」または「正解なし」と判定された検証の中で、今回の試験実行の結果、「失敗」と判定された検証のみを、デグレード候補の一覧として試験者に提示する機能を備えて構成されることが好ましい。前回「成功」と判定されて今回「失敗」と判定された検証の部分は、明らかにデグレードの可能性があるので、前述のようにデグレード候補として試験者に提示する。前回初めて正解データとして登録され、今回「失敗」と判定された検証の部分は、前回「正解なし」と判定されて今回「失敗」と判定されるので、これもデグレード候補として併せて試験者に提示する。
【０１２３】
図２６は、試験結果保持装置１４に保持される前回の試験結果と今回の試験結果とを比較して、デグレード候補を提示する場合の一例を示す図である。前述のように正解登録装置１７が、前回「成功」または「正解なし」と判定された検証の中で、今回「失敗」と判定された検証のみを提示する機能を備えて構成される場合、正解登録装置１７は、試験結果保持装置１４に保持されている前回の結果と今回の結果とを比較する。
【０１２４】
図２６に示す例において、第２シナリオ要素３２である「画面検証１」および第５シナリオ要素３５である「画面検証２」では、前回「成功」と判定されて、今回も「成功」と判定されている。第８シナリオ要素３８である「画面検証３」、および第１１シナリオ要素４１である「画面検証４」では、前回「成功」と判定されて、今回「失敗」と判定されているので、この間の開発によってデグレードを起こしている可能性がある。この「画面検証３」および「画面検証４」は、正解登録装置１７によってデグレード候補として試験者に報告される。試験者への報告は、デグレード候補の検証の名称の一覧、図２６に示す例では「画面検証３」および「画面検証４」を、たとえば出力表示装置１６または他の表示装置に表示して提示することによって行われる。
【０１２５】
このようにデグレード候補の一覧を試験者に提示する機能を正解登録装置１７が備えることによって、試験者は、デグレードの発生を容易に感知し、直ちに対処することができるので、開発における効率化を図ることができる。
【０１２６】
前述のようにソフトウェア試験装置１０では、試験の実行と正解登録の作業とを繰返して行うことによって、対象プログラム１８の実装が進むにつれて正解が増加し、正解なしとなる検証が減少していく。不正解が生じ、「失敗」と判定された場合は、試験者が、それがデグレードであるか、または正解の変化であるかを判断する。対象プログラム１８の仕様変更などによる正解の変化の場合は、正解画像の追加または入替えによって正解となるものを増やしていく。これによって、シナリオ要素で表される全試験項目のうち、どの程度の機能が正常に動作しているかを把握することができる。またデグレードが発生した場合、その直後の試験において発見することができる。
【０１２７】
このようにして試験を繰返していき、最後に全てのシナリオ要素が成功すれば、対象プログラム１８は、記述された試験シナリオに関して仕様を満たしたことになる。これ以降、たとえば機能強化などの追加開発を行う場合も、シナリオ要素および試験シナリオを追加しつつ、試験の全件実行を繰返すことによって、既存機能の破壊によるデグレードを早期に発見および修正することができるので、対象プログラム１８の品質を保つことができる。
【符号の説明】
【０１２８】
１０  ソフトウェア試験実行装置、１１  試験シナリオ保持装置、１２  出力保持装置、１３  正解保持装置、１４  試験結果保持装置、１５  試験実行装置、１６  出力表示装置、１７  正解登録装置、１８  対象プログラム、３０  試験シナリオ、３１，３２，３３，３４，３５，３６，３７，３８，３９，４０，４１  シナリオ要素。
【図１】
2011060052.tif 000003
【図２】
2011060052.tif 000004
【図３】
2011060052.tif 000005
【図４】
2011060052.tif 000006
【図５】
2011060052.tif 000007
【図６】
2011060052.tif 000008
【図７】
2011060052.tif 000009
【図８】
2011060052.tif 000010
【図９】
2011060052.tif 000011
【図１０】
2011060052.tif 000012
【図１１】
2011060052.tif 000013
【図１２】
2011060052.tif 000014
【図１３】
2011060052.tif 000015
【図１４】
2011060052.tif 000016
【図１５】
2011060052.tif 000017
【図１６】
2011060052.tif 000018
【図１７】
2011060052.tif 000019
【図１８】
2011060052.tif 000020
【図１９】
2011060052.tif 000021
【図２０】
2011060052.tif 000022
【図２１】
2011060052.tif 000023
【図２２】
2011060052.tif 000024
【図２３】
2011060052.tif 000025
【図２４】
2011060052.tif 000026
【図２５】
2011060052.tif 000027
【図２６】
2011060052.tif 000028