(57)【特許請求の範囲】
【請求項１】
表示手段に表示された第１の操作画面に対する操作者による操作の内容を示す操作イベントを取得する操作イベント取得手段と、
前記操作イベントに従って動作する検証対象プログラムに基づいて前記第１の操作画面が遷移したことを検知する画面遷移検知手段と、
前記第１の操作画面から遷移した後の第２の操作画面の画面データを取得する画面データ取得手段と、
前記操作イベント、前記第１の操作画面及び前記第２の操作画面を対応付けた状態遷移に関する状態遷移情報を作成する状態遷移情報作成手段と、
を有し、
前記状態遷移情報作成手段は、前記状態遷移情報のうち、前記検証対象プログラムで検証が必要な予め設定された操作画面に関する情報を識別可能にして前記表示手段に表示させる、
ことを特徴とするプログラム試験装置。
【請求項２】
請求項１に記載のプログラム試験装置であって、
前記状態遷移情報作成手段は、前記操作イベントを識別するためのイベント識別情報と前記第１の操作画面を識別するための第１の画面識別情報とに、前記第２の操作画面を識別するための第２の画面識別情報を対応させた前記状態遷移情報を作成する、
ことを特徴とするプログラム試験装置。
【請求項３】
請求項１又は請求項２に記載のプログラム試験装置であって、
前記状態遷移情報作成手段は前記状態遷移情報を更に表示手段に表示させる、
ことを特徴とするプログラム試験装置。
【請求項４】
請求項３に記載のプログラム試験装置であって、
前記状態遷移情報作成手段は、前記状態遷移情報のうち、前記第２の操作画面が対応付けられていない前記操作イベントと前記第１の操作画面との組み合わせを識別可能にして前記表示手段に表示させる、
ことを特徴とするプログラム試験装置。
【請求項５】
請求項１から請求項４のいずれか一項に記載のプログラム試験装置であって、
特定の操作者による操作に従って動作した前記検証対象プログラムに基づいて前記状態遷移情報作成手段によって作成された第１の状態遷移情報と、前記特定の操作者とは異なる別の操作者の操作に従って動作した前記検証対象プログラムに基づいて前記状態遷移情報作成手段によって作成された第２の状態遷移情報とを比較して比較結果を出力する比較手段を更に有する、
ことを特徴とするプログラム試験装置。
【請求項６】
請求項５に記載のプログラム試験装置であって、
前記状態遷移情報作成手段は、前記別の操作者の操作に従って前記検証対象プログラムが動作したときに同一の操作イベントが発生した頻度と同一の操作画面が前記表示手段に表示された頻度とを求め、前記同一の操作イベントの発生頻度と前記同一の操作画面の表示頻度とを含む前記状態遷移情報を作成する、
ことを特徴とするプログラム試験装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの開発を支援する技術に関し、特に、プログラムの試験に用いられるプログラム試験装置に関する。
【背景技術】
【０００２】
コンピュータにて実行されるプログラムの開発を支援するための技術として、様々な技術が提案されている。例えば下記の特許文献１には、検証対象となるプログラムの状態遷移表に基づいて実行されるべき一連の試験シーケンスを作成し、プログラムの試験を行う操作者に逐次提示する装置が開示されている。なお、状態遷移表とは、状態遷移に関する情報のひとつであり、列としてプログラムの状態（システムの状態）、行としてシステムに対するイベントをとるマトリックスデータである（行と列とが逆になる場合もある）。１つのプログラムの状態と１つのイベントとで特定されるセルには、次に遷移する状態と遷移のときに実行される処理とが記述される。また、下記の特許文献２には、シミュレーションプログラムの実行中に入力装置から状態を遷移させるデータを入力することで状態を遷移させ、かつ、シミュレーションプログラムから通知される現状態を表示装置に表示させるようにした方法が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−３４０５号公報
【特許文献２】特開平７−１６８７０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術に係るプログラム試験装置においては、例えばプログラムの開発者等がプログラムの状態遷移に関する情報を机上設計による手作業で作成していた。そのため、状態遷移に関する情報の作成に要する時間が増大し、プログラムの試験を迅速に開始することが困難であった。
【０００５】
本発明の目的は、検証対象プログラムの状態遷移に関する情報の作成に要する時間を削減し、検証対象プログラムの試験をより迅速に開始することが可能なプログラム試験装置を提供することである。
【課題を解決するための手段】
【０００６】
請求項１に係る発明は、表示手段に表示された第１の操作画面に対する操作者による操作の内容を示す操作イベントを取得する操作イベント取得手段と、前記操作イベントに従って動作する検証対象プログラムに基づいて前記第１の操作画面が遷移したことを検知する画面遷移検知手段と、前記第１の操作画面から遷移した後の第２の操作画面の画面データを取得する画面データ取得手段と、前記操作イベント、前記第１の操作画面及び前記第２の操作画面を対応付けた状態遷移に関する状態遷移情報を作成する状態遷移情報作成手段と、を有し、前記状態遷移情報作成手段は、前記状態遷移情報のうち、前記検証対象プログラムで検証が必要な予め設定された操作画面に関する情報を識別可能にして前記表示手段に表示させる、ことを特徴とするプログラム試験装置である。
【０００７】
請求項２に係る発明は、請求項１に係るプログラム試験装置であって、前記状態遷移情報作成手段は、前記操作イベントを識別するためのイベント識別情報と前記第１の操作画面を識別するための第１の画面識別情報とに、前記第２の操作画面を識別するための第２の画面識別情報を対応させた前記状態遷移情報を作成する、ことを特徴とする。
【０００８】
請求項３に係る発明は、請求項１又は請求項２に係るプログラム試験装置であって、前記状態遷移情報作成手段は前記状態遷移情報を更に表示手段に表示させる、ことを特徴とする。
【０００９】
請求項４に係る発明は、請求項３に係るプログラム試験装置であって、前記状態遷移情報作成手段は、前記状態遷移情報のうち、前記第２の操作画面が対応付けられていない前記操作イベントと前記第１の操作画面との組み合わせを識別可能にして前記表示手段に表示させる、ことを特徴とする。
【００１０】
請求項５に係る発明は、請求項１から請求項４のいずれか一項に係るプログラム試験装置であって、特定の操作者による操作に従って動作した前記検証対象プログラムに基づいて前記状態遷移情報作成手段によって作成された第１の状態遷移情報と、前記特定の操作者とは異なる別の操作者の操作に従って動作した前記検証対象プログラムに基づいて前記状態遷移情報作成手段によって作成された第２の状態遷移情報とを比較して比較結果を出力する比較手段を更に有する、ことを特徴とする。
【００１１】
請求項６に係る発明は、請求項５に係るプログラム試験装置であって、前記状態遷移情報作成手段は、前記別の操作者の操作に従って前記検証対象プログラムが動作したときに同一の操作イベントが発生した頻度と同一の操作画面が前記表示手段に表示された頻度とを求め、前記同一の操作イベントの発生頻度と前記同一の操作画面の表示頻度とを含む前記状態遷移情報を作成する、ことを特徴とする。
【発明の効果】
【００１２】
本発明によると、検証対象プログラムの状態遷移に関する情報を自動的に作成することができるため、状態遷移に関する情報の作成に要する時間を削減し、検証対象プログラムの試験をより迅速に開始することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１実施形態に係るプログラム試験装置の一例を示すブロック図である。
【図２】本発明の第１実施形態に係るプログラム試験装置による動作の一例を示すフローチャートである。
【図３】本発明の第１実施形態に係るプログラム試験装置による動作の一例を示すフローチャートである。
【図４】表示装置に表示される操作画面の一例を示す図である。
【図５】状態遷移に関する情報の一例を示す図である。
【図６】状態遷移に関する情報の一例を示す図である。
【図７】状態遷移に関する情報の一例を示す図である。
【図８】本発明の第２実施形態に係るプログラム試験装置の一例を示すブロック図である。
【図９】本発明の第２実施形態に係るプログラム試験装置による動作の一例を示すフローチャートである。
【図１０】本発明の第２実施形態に係るプログラム試験装置による動作の一例を示すフローチャートである。
【図１１】状態遷移に関する情報の一例を示す図である。
【発明を実施するための形態】
【００１４】
［第１実施形態］
まず、本発明の第１実施形態に係るプログラム試験装置について説明する。図１に、本発明の第１実施形態に係るプログラム試験装置の一例を示す。第１実施形態に係るプログラム試験装置は、入力部１０と、入力制御部１２と、操作イベント取得部１４と、操作イベントＤＢ（操作イベントデータベース）１６と、プログラム実行部１８と、フレームメモリ２０と、表示部２２と、画面遷移検知部２４と、画面データ取得部２６と、画面ＤＢ（画面データベース）２８と、状態遷移情報作成部３０と、表示部３２とを備えている。第１実施形態に係るプログラム試験装置は、操作者による操作の内容を示す操作イベントと、検証対象プログラムの状態と、操作イベントが発生したときの遷移後の検証対象プログラムの状態との対応付けを示す状態遷移に関する情報を作成する。
【００１５】
入力部１０は、検証対象プログラムに対する操作者による指示等の操作を受け付け、その操作の内容を示す操作信号を入力制御部１２に出力する。入力部１０は、例えばキーボードやマウス等の入力装置によって構成されている。
【００１６】
入力制御部１２は、入力部１０からの操作信号をデジタル信号（操作イベント）に変換し、その操作イベントをプログラム実行部１８に出力する。このように、操作イベントはユーザによる操作の内容を示している。
【００１７】
操作イベント取得部１４は、入力制御部１２によって生成された操作イベントを取得し、取得した操作イベントを識別するための操作イベント識別情報を状態遷移情報作成部３０に出力する。操作イベント識別情報は、例えばＩＤ番号等である。操作イベント取得部１４は、新規に取得した操作イベントと、その新規の操作イベントを識別するための操作イベント識別情報とを対応付けて操作イベントＤＢ１６に登録する。操作イベント取得部１４は、入力制御部１２から取得した操作イベントが操作イベントＤＢ１６に既に登録されている場合、その操作イベントに対応する操作イベント識別情報を操作イベントＤＢ１６から取得し、その操作イベント識別情報を状態遷移情報作成部３０に出力する。また、操作イベント取得部１４は、入力制御部１２から取得した操作イベントが操作イベントＤＢ１６に登録されていない場合、その操作イベントを識別するための新たな操作イベント識別情報を作成し、その操作イベントと新たな操作イベント識別情報とを対応付けて操作イベントＤＢ１６に登録し、新たに作成された操作イベント識別情報を状態遷移情報作成部３０に出力する。
【００１８】
プログラム実行部１８は、検証対象プログラムを受け、検証対象プログラムを実行することで検証対象プログラムの動作に応じた操作画面（例えばウィンドウ等の画面）を表示部２２に表示させる。例えば、プログラム実行部１８は、操作イベントに基づいて検証対象プログラムを動作させることで、その動作に応じたグラフィカルユーザインターフェース（ＧＵＩ）等の操作画面を表す画面データを生成し、その画面データに基づくＧＵＩ等の操作画面を表示部２２に表示させる。なお、検証対象プログラムは、図示しない記憶装置に予め記憶されていてもよいし、ＣＤやＤＶＤ等の記録媒体を介して又はネットワーク等の通信経路を介してプログラム実行部１８に入力されてもよい。
【００１９】
フレームメモリ２０は、検証対象プログラムの動作によって生成された画面データを一時的に保存し、その画面データを表示部２２に出力する。表示部２２は、検証対象プログラムの動作によって生成された画面データに基づくＧＵＩ等の操作画面を表示する。
【００２０】
画面遷移検知部２４は、プログラムの状態の変化を検知する。例えば、画面遷移検知部２４は、表示部２２に表示された操作画面の画面データの変化を検知する。画面遷移検知部２４は、例えばバイナリデータのコンペア等のような手法を用いて画面データを比較することで、操作画面の画面データの変化を検知する。例えば、画面遷移検知部２４は、表示部２２に表示された操作画面が、その操作画面に対する操作者の操作（操作イベント）に基づく検証対象プログラムの動作によって別の操作画面に遷移したことを検知する。
【００２１】
画面データ取得部２６は、操作画面が遷移した後の操作画面の画面データを取得し、遷移後（遷移先）の操作画面の画面データを識別するための画面データ識別情報を状態遷移情報作成部３０に出力する。画面データ識別情報は、例えばＩＤ番号等である。例えば、画面データ取得部２６は、フレームメモリ２０に一時的に保存されている遷移後の操作画面の画面データを取得する。画面データ取得部２６は、新規に取得した画面データと、その新規の画面データを識別するための画面データ識別情報とを対応付けて画面ＤＢ２８に登録する。画面データ取得部２６は、遷移後の操作画面の画面データが画面ＤＢ２８に既に登録されている場合、遷移後の操作画面の画面データに対応する画面データ識別情報を画面ＤＢ２８から取得し、その画面データ識別情報を状態遷移情報作成部３０に出力する。また、画面データ取得部２６は、遷移後の操作画面の画面データが画面ＤＢ２８に登録されていない場合、遷移後の操作画面の画面データを識別するための新たな画面データ識別情報を作成し、遷移後の操作画面の画面データと新たな画面データ識別情報とを対応付けて画面ＤＢ２８に登録し、新たに作成された画面データ識別情報を状態遷移情報作成部３０に出力する。また、画面データ取得部２６は、遷移前の操作画面の画面データを取得し、遷移前の操作画面の画面データを識別するための画面データ識別情報を状態遷移情報作成部３０に出力してもよい。
【００２２】
状態遷移情報作成部３０は、操作イベントと、遷移前の操作画面（プログラムの状態）と、操作イベントが発生したときの遷移後（遷移先）の操作画面（プログラムの状態）との対応付けを示す状態遷移に関する状態遷移情報、例えば状態遷移表を作成し、その状態遷移表を出力する。一例として、状態遷移情報作成部３０は、操作イベントを識別するための操作イベント識別情報を状態遷移表の列又は行の一方に入力し、表示部２２に表示された操作画面を識別するための画面データ識別情報を状態遷移表の列又は行の他方に入力する。そして、状態遷移情報作成部３０は、遷移前の操作画面に対する操作イベントを識別するための操作イベント識別情報に対応する列又は行の一方と、遷移前の操作画面を識別するための画面データ識別情報に対応する列又は行の他方とによって特定されるセル（列と行とが交差するセル）に、その操作イベントが発生したときの遷移先の操作画面を識別するための画面データ識別情報を記述することで、検証対象プログラムの状態遷移表を作成する。また、状態遷移情報作成部３０は、遷移のときに実行される処理の内容を各セルに記述する。そして、状態遷移情報作成部３０は、状態遷移表を示すデータを出力する。例えば、状態遷移情報作成部３０は、状態遷移表を示すデータを表示部３２に出力し、状態遷移表を表示部３２に表示させてもよいし、状態遷移表を示すデータを図示しない印刷装置に出力し、状態遷移表を印刷装置に印刷させてもよい。なお、表示部２２，３２は、例えばＣＲＴや液晶ディスプレイ等の表示装置によって構成されている。表示部２２，３２は１つの表示装置によって構成されていてもよいし、それぞれ別々の表示装置によって構成されていてもよい。また、遷移前の操作画面が第１の操作画面の一例に相当し、遷移後（遷移先）の操作画面が第２の操作画面の一例に相当する。
【００２３】
次に、図２から図７を参照して、第１実施形態に係るプログラム試験装置の動作の一例を説明する。まず、図２に示すフローチャートを参照して、操作イベントの取得に関する動作の一例を説明する。
【００２４】
まず、入力部１０を用いて操作者が操作を行った場合、操作イベント取得部１４は、その操作に基づいて入力制御部１２によって生成された操作イベントを取得する（Ｓ０１）。
【００２５】
ここで、図４に、表示部２２に表示される操作画面の一例を示す。例えば図４（ａ）に示すように、操作画面（ウィンドウ）１１０の表示を指示するためのアイコン１００が表示部２２に表示されている場合に、操作者が入力部１０を用いてアイコン１００をクリックすると、プログラム実行部１８は、操作者による操作（クリック）に基づく検証対象プログラムの動作によって操作画面（ウィンドウ）１１０の画面データを生成し、その画面データに基づく操作画面１１０を表示部２２に表示させる。この場合、「アイコン１００をクリックする」という操作イベントが発生しているため、操作イベント取得部１４は、「アイコン１００をクリックする」という操作内容を示す操作イベントを取得する。また、図４（ｂ）に示すように、操作者が入力部１０を用いて操作画面１１０内の記入欄に文字列（例えば１１１１１）を入力した場合、操作イベント取得部１４は、「操作画面１１０内の記入欄に文字列（１１１１１）を入力する」という操作内容を示す操作イベントを取得する。また、図４（ｃ）に示すように、操作者が入力部１０を用いて操作画面１１０の「ＯＫボタン」を押下した場合、操作イベント取得部１４は、「ＯＫボタンを押下する」という操作内容を示す操作イベントを取得する。
【００２６】
そして、操作イベント取得部１４は、入力制御部１２から取得した操作イベントが操作イベントＤＢ１６に登録されていない場合（Ｓ０２，Ｎｏ）、その操作イベントを識別するための新たな操作イベント識別情報（例えば新たな操作イベントＩＤ）を作成する（Ｓ０３）。そして、操作イベント取得部１４は、操作イベントと新たな操作イベントＩＤとを対応付けて操作イベントＤＢ１６に登録し、その新たな操作イベントＩＤを状態遷移情報作成部３０に出力する。そして、状態遷移情報作成部３０は、新たな操作イベントＩＤに対応する行を状態遷移表に追加する（Ｓ０４）。
【００２７】
ここで、図５に、作成中の状態遷移表の一例を示す。例えば、操作イベント取得部１４は、入力制御部１２から取得した操作イベント（例えば操作イベントＡ１）が操作イベントＤＢ１６に登録されていない場合、その操作イベントを識別するための新たな操作イベントＩＤ（例えば操作イベントＩＤ（Ａ１））を作成し、その操作イベントＩＤ（Ａ１）を状態遷移情報作成部３０に出力する。そして図５中の（１）に示すように、状態遷移情報作成部３０は、操作イベントＩＤ（Ａ１）に対応する行を状態遷移表に追加する。また、操作イベント取得部１４は、入力制御部１２から取得した操作イベントと操作イベントＩＤ（Ａ１）とを対応付けて操作イベントＤＢ１６に登録する。
【００２８】
一方、操作イベント取得部１４は、入力制御部１２から取得した操作イベントが操作イベントＤＢ１６に既に登録されている場合（Ｓ０２，Ｙｅｓ）、その操作イベントに対応する操作イベント識別情報（例えば操作イベントＩＤ）を操作イベントＤＢ１６から選択し、選択した操作イベント識別情報を状態遷移情報作成部３０に出力する（Ｓ０５）。
【００２９】
例えば図５に示すように、操作イベント取得部１４は、入力制御部１２から取得した操作イベント（例えば操作イベントＡ１）が操作イベントＤＢ１６に既に登録されている場合、その操作イベントを識別するための操作イベントＩＤ（例えば操作イベントＩＤ（Ａ１））を操作イベントＤＢ１６から選択し、その操作イベントＩＤ（Ａ１）を状態遷移情報作成部３０に出力する。
【００３０】
以上のように、操作イベント取得部１４によって取得された操作イベントが操作イベントＤＢ１６に登録されていない場合、その操作イベントを操作イベントＤＢ１６に登録し、その操作イベントの識別情報に対応する行を状態遷移表に追加する。
【００３１】
次に、図３に示すフローチャートを参照して、操作画面の取得に関する動作の一例を説明する。
【００３２】
まず、画面遷移検知部２４は、表示部２２に表示されている操作画面が、その操作画面に対する操作者の操作（操作イベント）に基づく検証対象プログラムの動作によって別の操作画面に遷移したことを検知し、画面データ取得部２６は、遷移後の操作画面の画面データを取得する（Ｓ１０）。
【００３３】
例えば図４（ａ）に示すように、アイコン１００のクリックという操作イベントに基づく検証対象プログラムの動作によって操作画面１１０の画面データが生成され、その画面データに基づく操作画面１１０が表示部２２に表示された場合、画面データ取得部２６は、フレームメモリ２０に一時的に保存されている遷移後の操作画面１１０の画面データを取得する。また、図４（ｂ）に示すように、操作者が入力部１０を用いて操作画面１１０内の記入欄に文字列（例えば１１１１１）を入力した場合、画面データ取得部２６は、文字列が入力された操作画面１１０の画面データを取得する。また、図４（ｃ）に示すように、操作者が入力部１０を用いて操作画面１１０の「ＯＫボタン」を押下した場合、画面データ取得部２６は、「ＯＫボタン」が押下された後の操作画面１１０の画面データを取得する。
【００３４】
そして、画面データ取得部２６は、取得した操作画面の画面データが画面ＤＢ２８に登録されていない場合（Ｓ１１，Ｎｏ）、その操作画面の画面データを識別するための新たな画面データ識別情報（例えば新たな画面ＩＤ）を作成する（Ｓ１２）。そして、画面データ取得部２６は、操作画面の画面データと新たな画面ＩＤとを対応付けて画面ＤＢ２８に登録し、その新たな画面ＩＤを状態遷移情報作成部３０に出力する。そして、状態遷移情報作成部３０は、新たな画面ＩＤに対応する列を状態遷移表に追加する（Ｓ１３）。
【００３５】
図５を参照して説明すると、画面データ取得部２６は、例えば、取得した操作画面の画面データ（例えば操作画面Ｂ２の画面データ）が画面ＤＢ２８に登録されていない場合、その画面データを識別するための新たな画面ＩＤ（例えば画面ＩＤ（Ｂ２））を作成し、その画面ＩＤ（Ｂ２）を状態遷移情報作成部３０に出力する。そして図５中の（２）に示すように、状態遷移情報作成部３０は、画面ＩＤ（Ｂ２）に対応する列を状態遷移表に追加する。また、画面データ取得部２６は、取得した画面データと画面ＩＤ（Ｂ２）とを対応付けて画面ＤＢ２８に登録する。
【００３６】
一方、画面データ取得部２６は、取得した画面データが画面ＤＢ２８に既に登録されている場合（Ｓ１１，Ｙｅｓ）、取得した画面データに対応する画面データ識別情報（例えば画面ＩＤ）を画面ＤＢ２８から選択し、選択した画面データ識別情報を状態遷移情報作成部３０に出力する（Ｓ１４）。
【００３７】
例えば図５に示すように、画面データ取得部２６は、取得した操作画面の画面データ（例えば操作画面Ｂ２の画面データ）が画面ＤＢ２８に既に登録されている場合、その操作画面の画面データを識別するための画面ＩＤ（例えば画面ＩＤ（Ｂ２））を画面ＤＢ２８から選択し、その画面ＩＤ（Ｂ２）を状態遷移情報作成部３０に出力する。
【００３８】
以上のように、画面データ取得部２６によって取得された操作画面の画面データが画面ＤＢ２８に登録されていない場合、その画面データを画面ＤＢ２８に登録し、その画面データの識別情報に対応する列を状態遷移表に追加する。
【００３９】
そして、状態遷移情報作成部３０は、操作イベントを識別するための操作イベントＩＤに対応する行と、遷移前の操作画面を識別するための画面ＩＤに対応する列とによって特定されるセル（行と列とが交差するセル）に、遷移先の操作画面を識別するための画面ＩＤを記述する（Ｓ１５）。
【００４０】
例えば図５中の（３）に示すように、状態遷移情報作成部３０は、操作イベントＡ１を識別するための操作イベントＩＤ（Ａ１）に対応する行と、遷移前の操作画面Ｂ１を識別するための画面ＩＤ（Ｂ１）に対応する列とによって特定されるセル（行と列とが交差するセル）に、遷移先の操作画面Ｂ２を識別するための画面ＩＤ（Ｂ２）を記述する。
【００４１】
そして、図２及び図３に示すステップＳ０１〜Ｓ１５の処理を繰り返すことで、行に操作イベントＩＤが入力され、列に画面ＩＤが入力され、行と列とが交差するセルに遷移先の操作画面の画面ＩＤが記述された状態遷移表を作成する。状態遷移情報作成部３０は、例えば状態遷移表を表示部３２に表示させてもよいし、状態遷移表を印刷装置に印刷させてもよい。
【００４２】
以上のように、本実施形態に係るプログラム試験装置によると、操作者の操作に基づいて検証対象プログラムを動作させ、その検証対象プログラムの状態遷移表を自動的に作成することが可能となる。検証対象プログラムの開発者等は状態遷移表を手作業で作成しなくて済むため、状態遷移表の作成に要する時間を削減することができ、その結果、検証対象プログラムの試験をより迅速に開始することが可能となる。
【００４３】
図６に、第１実施形態に係るプログラム試験装置によって作成された状態遷移表の一例を示す。図６には、状態遷移表の一部が示されている。遷移先の操作画面の画面ＩＤが記述されているセルについては、遷移前の操作画面にて操作イベントが発生し、検証対象プログラムの試験（試験シーケンス）が行われていることになる。例えば、操作画面Ｂ０を識別する画面ＩＤ（Ｂ０）に対応する列と、操作イベントＡ０を識別する操作イベントＩＤ（Ａ０）に対応する行とで特定されるセルには、操作画面Ｂ１の画面ＩＤ（Ｂ１）が記述されている。すなわち、このセルは、操作画面Ｂ０にて操作イベントＡ０に対応する操作が行われ、その結果、操作画面が操作画面Ｂ１に遷移したことを示している。遷移先の操作画面の画面ＩＤが記述されている他のセルも、対応する操作画面にて所定の操作イベントが発生して操作画面が遷移したことを示している。例えば、操作イベントＩＤと画面ＩＤとで特定されるセルを（操作イベントＩＤ，画面ＩＤ）で表すと、（操作イベントＡ０，操作画面Ｂ０）、（操作イベントＡ１，操作画面Ｂ１）及び（操作イベントＡ２，操作画面Ｂ２）は、対応する操作画面にて所定の操作イベントが発生して操作画面が遷移したことを示している。このように遷移先の操作画面の画面ＩＤが記述されたセルについては、検証対象プログラムの試験（試験シーケンス）が実施されていることになる。
【００４４】
一方、図６において網点で示されているセルには、遷移先の操作画面の画面ＩＤが記述されていない。遷移先の操作画面の画面ＩＤが記述されていないセルは、遷移前の操作画面にて所定の操作イベントが発生していないことを示している。例えば、操作画面Ｂ１を識別する画面ＩＤ（Ｂ１）に対応する列と、操作イベントＡ０を識別する操作イベントＩＤ（Ａ０）に対応する行とで特定されるセルには、遷移先の操作画面の画面ＩＤが記述されていない。すなわち、このセルは、操作画面Ｂ１にて操作イベントＡ０に対応する操作が行われていないことを示している。遷移先の操作画面の画面ＩＤが記述されていないその他のセルも、遷移前の操作画面にて所定の操作イベントが発生していないことを示している。このように遷移先の操作画面の画面ＩＤが記述されていないセルについては、検証対象プログラムの試験（試験シーケンス）が実施されていないことになる。
【００４５】
以上のように、検証対象プログラムの試験（試験シーケンス）が実施されたセルには遷移先の操作画面の画面ＩＤが記述され、試験シーケンスが実施されていないセルには遷移先の操作画面の画面ＩＤは記述されないことになる。例えば図６に示す状態遷移表を表示部３２に表示することで、検証対象プログラムを実行して操作する操作者に、実施された試験シーケンス及び実施されていない試験シーケンスを報知することができる。そして、遷移先の操作画面の画面ＩＤが記述されていないセルが存在する場合、操作者は、そのセルに対応する試験シーケンスが実施されていないことを認識することが可能となる。
【００４６】
例えば、検証対象プログラムの試験を行う場合、検証対象プログラムの開発者が実際に操作し、第１実施形態に係るプログラム試験装置は、開発者の操作に基づいて検証対象プログラムを動作させ、その動作の結果を表す状態遷移表を作成し、その状態遷移表を出力する。開発者は、表示部３２に表示された状態遷移表や印刷された状態遷移表を参照することで、実施されていない試験シーケンスを確認することが可能となる。そして、画面ＩＤが記述されていないセルに画面ＩＤが記述されるように検証対象プログラムの試験を実施することで、検証対象プログラムの試験の漏れを抑制することができる。
【００４７】
図７に、すべてのセルに画面ＩＤが記述された状態遷移表の一例を示す。検証対象プログラムの開発者は、遷移先の操作画面の画面ＩＤが記述されていないセルに対応する試験シーケンスを実施することで、図７に示すように、すべてのセルに遷移先の操作画面の画面ＩＤが記述された状態遷移表を得ることが可能となる。また、すべてのセルでなくても、検証対象プログラムで検証を必要とする操作画面が予め決まっていれば、それに対応するセルを明示するようにしておき、そのセルに遷移先の操作画面の画面ＩＤが記述されているか否かによって検証対象プログラムの試験の漏れを確認できるようにしてもよい。
【００４８】
なお、状態遷移情報作成部３０は、状態遷移表において遷移先の操作画面の画面ＩＤが記述されていないセルを識別可能にして状態遷移表を示すデータを出力してもよい。このセルは、遷移前の操作画面と、その遷移前の操作画面にて発生していない所定の操作イベントとの組み合わせを示していることになる。例えば、状態遷移情報作成部３０は、遷移先の操作画面の画面ＩＤが記述されていないセルと、遷移先の操作画面の画面ＩＤが記述されているセルとで表示色を変えて表示部３２に表示させてもよいし、遷移先の操作画面の画面ＩＤが記述されていないセルに、図６に示すような網点やハッチング等の画像処理を施して表示部３２に表示させてもよい。また、遷移先の操作画面の画面ＩＤが記述されているセルに網点やハッチング等の画像処理を施すことによって、遷移先の操作画面の画面ＩＤが記述されていないセルが確認しやすいようにしてもよい。
【００４９】
［第２実施形態］
次に、本発明の第２実施形態に係るプログラム試験装置について説明する。図８に、第２実施形態に係るプログラム試験装置の一例を示す。第２実施形態に係るプログラム試験装置は、第１実施形態に係るプログラム試験装置が備える構成に加え、状態遷移情報記憶部３４と比較部３６とを更に備えている。以下では、状態遷移情報記憶部３４及び比較部３６について主に説明する。
【００５０】
状態遷移情報記憶部３４は、特定の操作者による模範操作に従って状態遷移情報作成部３０によって作成された状態遷移表のデータを記憶する。特定の操作者は、例えば検証対象プログラムの開発者である。また、模範操作は、例えば検証対象プログラムに対して実施されると想定されている操作である。以下の説明では、検証対象プログラムの開発者が検証対象プログラムに対して実施されると想定した模範操作に従って作成された状態遷移表を「模範状態遷移表」と称することにする。また、図６に示す状態遷移表を、模範状態遷移表の一例として説明する。
【００５１】
比較部３６は、特定の操作者による模範操作に従って検証対象プログラムが動作したときに状態遷移情報作成部３０によって作成された模範状態遷移表と、特定の操作者以外の一般操作者による操作に従って検証対象プログラムが動作したときに状態遷移情報作成部３０によって作成された状態遷移表とを比較し、模範状態遷移表と状態遷移表との差異を検出し、その差異を示すデータを出力する。比較部３６は、模範状態遷移表と状態遷移表との差異を表示部３２に表示させてもよいし、その差異を図示しない印刷装置に印刷させてもよい。なお、一般操作者は、例えば検証対象プログラムを利用するユーザ等である。以下の説明では、一般操作者による操作に従って作成された状態遷移表を「一般状態遷移表」と称することにする。
【００５２】
また、状態遷移情報作成部３０は、一般操作者の操作に従って検証対象プログラムが動作したときに同一の操作イベントが発生した頻度と同一の操作画面が表示部２２に表示された頻度とを求め、各操作イベントの発生頻度と各操作画面の表示頻度とを含む一般状態遷移表を作成してもよい。例えば、状態遷移情報作成部３０は、同一の操作イベントが発生した回数と同一の操作画面が表示部２２に表示された回数とをカウントし、各操作イベントの発生回数と各操作画面の表示回数とを一般状態遷移表に記述してもよい。
【００５３】
次に、図９から図１１を参照して、第２実施形態に係るプログラム試験装置の動作の一例を説明する。まず、図９に示すフローチャートを参照して、操作イベントの取得に関する動作の一例を説明する。図９に示すフローチャートのうちステップＳ０１〜Ｓ０５の処理は、図２に示すフローチャートで説明した処理と同じである。
【００５４】
例えば、一般操作者が入力部１０を用いて操作を行った場合、操作イベント取得部１４は、その操作に基づいて入力制御部１２によって生成された操作イベントを取得する（Ｓ０１）。そして、操作イベント取得部１４は、入力制御部１２から取得した操作イベントが操作イベントＤＢ１６に登録されていない場合（Ｓ０２，Ｎｏ）、新たな操作イベントＩＤを作成し（Ｓ０３）、その新たな操作イベントＩＤを状態遷移情報作成部３０に出力する。状態遷移情報作成部３０は、新たな操作イベントＩＤに対応する行を一般状態遷移表に追加する（Ｓ０４）。一方、操作イベント取得部１４は、入力制御部１２から取得した操作イベントが操作イベントＤＢ１６に既に登録されている場合（Ｓ０２，Ｙｅｓ）、その操作イベントに対応する操作イベントＩＤを操作イベントＤＢ１６から選択し、選択した操作イベントＩＤを状態遷移情報作成部３０に出力する（Ｓ０５）。
【００５５】
そして、状態遷移情報作成部３０は、操作イベント取得部１４から操作イベントＩＤを受け、同一の操作イベントＩＤの数（同一の操作イベントが発生した回数Ｒｎ）をカウントする（Ｓ０６）。
【００５６】
次に、図１０に示すフローチャートを参照して、操作画面の取得に関する動作の一例を説明する。図１０に示すフローチャートのうちステップＳ１０〜Ｓ１５の処理は、図３に示すフローチャートで説明した処理と同じである。
【００５７】
まず、画面遷移検知部２４は、表示部２２に表示された操作画面が、その操作画面に対する一般操作者の操作（操作イベント）に基づく検証対象プログラムの動作によって別の操作画面に遷移したことを検知し、画面データ取得部２６は、遷移後の操作画面の画面データを取得する（Ｓ１０）。そして、画面データ取得部２６は、遷移後の操作画面の画面データが画面ＤＢ２８に登録されていない場合（Ｓ１１，Ｎｏ）、新たな画面ＩＤを作成し（Ｓ１２）、その画面ＩＤを状態遷移情報作成部３０に出力する。状態遷移情報作成部３０は、新たな画面ＩＤに対応する列を一般状態遷移表に追加する（Ｓ１３）。一方、画面データ取得部２６は、遷移後の操作画面の画面データが画面ＤＢ２８に既に登録されている場合（Ｓ１１，Ｙｅｓ）、その遷移後の操作画面の画面データに対応する画面ＩＤを画面ＤＢ２８から選択し、選択した画面ＩＤを状態遷移情報作成部３０に出力する（Ｓ１４）。
【００５８】
そして、状態遷移情報作成部３０は、画面データ取得部２６から画面ＩＤを受け、同一の画面ＩＤの数（同一の操作画面が表示部２２に表示された回数Ｃｎ）をカウントする（Ｓ１６）。
【００５９】
また、状態遷移情報作成部３０は、操作イベントＩＤに対応する行と、遷移前の操作画面を識別するための画面ＩＤに対応する列とによって特定されるセルに、遷移先の操作画面を識別するための画面ＩＤを記述する（Ｓ１５）。
【００６０】
そして、図９及び図１０に示すステップＳ０１〜Ｓ１６の処理を繰り返すことで、行に操作イベントＩＤが入力され、列に画面ＩＤが入力され、行と列とが交差するセルに遷移先の操作画面の画面ＩＤが記述された一般状態遷移表を作成する。また、状態遷移情報作成部３０は、操作イベントの発生回数Ｒｎを当該操作イベントの操作イベントＩＤに対応する行に記述し、操作画面の表示回数Ｃｎを当該操作画面の画面ＩＤに対応する列に記述してもよい。
【００６１】
そして、比較部３６は、状態遷移情報記憶部３４に記憶されている模範状態遷移表と、一般操作者の操作に従って検証対象プログラムが動作したときに状態遷移情報作成部３０によって作成された一般状態遷移表とを比較し、模範状態遷移表と一般状態遷移表との差異を検出し、比較結果を出力する（Ｓ１７）。
【００６２】
比較部３６は、模範状態遷移表と一般状態遷移表との差異を表示部３２に表示させてもよいし、その差異を図示しない印刷装置に印刷させてもよい。例えば、比較部３６は、その差異があることを表示部３２に表示させてもよいし、一般状態遷移表において差異があるセルを識別可能にして表示部３２に表示させてもよい。また、比較部３６は、模範状態遷移表と一般状態遷移表とを並べて表示部３２に表示させてもよいし、模範状態遷移表と一般状態遷移表とを印刷装置に印刷させてもよい。また、比較部３６は、模範状態遷移表と一般状態遷移表とに差異が無い場合、差異が無いことを表示部３２に表示させてもよい。
【００６３】
模範状態遷移表と一般状態遷移表とに差異が無い場合、一般操作者による操作は模範操作と同じであり、模範状態遷移表と一般状態遷移表とに差異がある場合、一般操作者による操作は模範操作と異なることになる。すなわち、模範状態遷移表と一般状態遷移表とに差異がある場合、プログラム開発者等の特定の操作者が想定した操作とは異なる操作が一般操作者によって行われた可能性があることになる。
【００６４】
図１１に一般状態遷移表の一例を示す。図１１には、一般状態遷移表の一部が示されている。遷移先の操作画面の画面ＩＤが記述されているセルについては、対応する操作画面にて所定の操作イベントが発生したことになる。また、図１１において網点で示されているセルは、図６に示す模範状態遷移表において遷移先の操作画面の画面ＩＤが記述されていないセルに対応する。
【００６５】
例えば図１１に示す一般状態遷移表において、網点で示されているセル（模範状態遷移表において遷移先の操作画面の画面ＩＤが記述されていないセル）に、画面ＩＤが記述されている場合、そのセルに画面ＩＤを記述させる操作は、検証対象プログラムの操作誤りである可能性が高い。すなわち、模範状態遷移表におけるセルに画面ＩＤが記述されていないということは、遷移前の操作画面にて特定の操作者が所定の操作を行っていないことを意味する。従って、一般状態遷移表の網点で示されているセルに画面ＩＤが記述されていることは、一般操作者が特定の操作者とは異なる操作を行ったことを意味する。比較部３６は、一般状態遷移表の網点で示されているセルに画面ＩＤが記述されている場合、一般状態遷移表において当該セルを識別可能にして表示部３２に表示させてもよい。例えば、比較部３６は、当該セルに網点やハッチング等の画像処理を施して表示部３２に表示させてもよいし、他のセルとは別の表示色で表示部３２に表示させてもよい。
【００６６】
検証対象プログラムの開発者等は、一般状態遷移表や比較部３６の比較結果を参照することで、一般操作者による操作の誤りを認識し、また、誤った操作を特定することができる。
【００６７】
また、図１１に示す一般状態遷移表には、操作イベントの発生回数Ｒｎと操作画面の表示回数Ｃｎとが記述されている。検証対象プログラムの開発者等は、発生回数Ｒｎや表示回数Ｃｎを参照することで、操作の誤りの頻度を確認することができる。
【００６８】
なお、上記の例では、操作イベントＩＤが行に入力され、画面ＩＤが列に入力された状態遷移表について説明したが、行と列とを逆にし、操作イベントＩＤが列に入力され、画面ＩＤが行に入力された状態遷移表を作成してもよい。また、上記の例では状態遷移表を作成する場合について説明したが、状態遷移情報作成部３０は、表形式以外のものとして状態遷移図を作成してもよい。また、状態遷移情報作成部３０は、操作イベントと、遷移前の操作画面と、操作イベントが発生したときの遷移後の操作画面との対応付けを示す情報であれば、状態遷移表及び状態遷移図以外の形式で当該対応付けを示す情報を作成してもよい。
【００６９】
上述したプログラム試験装置は図示しないＣＰＵ等のプロセッサを備えている。プロセッサは、図示しないメモリに記憶されたプログラムを実行することにより、入力制御部１２、操作イベント取得部１４、プログラム実行部１８、画面遷移検知部２４、画面データ取得部２６、状態遷移情報作成部３０及び比較部３６のそれぞれの機能を実現する。上記プログラムは、ＣＤやＤＶＤ等の記録媒体を介して又はネットワーク等の通信経路を介してハードディスクドライブ（ＨＤＤ）等の記憶装置に記憶される。なお、上記プログラムはハードディスクドライブ等の記憶装置に予め記憶されていてもよい。ハードディスクドライブ等の記憶装置に記憶されたプログラムがＲＡＭ等のメモリに読み出されてＣＰＵ等のプロセッサによって実行されることにより、入力制御部１２、操作イベント取得部１４、プログラム実行部１８、画面遷移検知部２４、画面データ取得部２６、状態遷移情報作成部３０及び比較部３６のそれぞれの機能が実現される。
【符号の説明】
【００７０】
１０  入力部、１２  入力制御部、１４  操作イベント取得部、１６  操作イベントＤＢ、１８  プログラム実行部、２０  フレームメモリ、２２，３２  表示部、２４  画面遷移検知部、２６  画面データ取得部、２８  画面ＤＢ、３０  状態遷移情報作成部、３４  状態遷移情報記憶部、３６  比較部。
【図１】
0005812941.tif 000002
【図２】
0005812941.tif 000003
【図３】
0005812941.tif 000004
【図４】
0005812941.tif 000005
【図５】
0005812941.tif 000006
【図６】
0005812941.tif 000007
【図７】
0005812941.tif 000008
【図８】
0005812941.tif 000009
【図９】
0005812941.tif 000010
【図１０】
0005812941.tif 000011
【図１１】
0005812941.tif 000012