最近のアプリケーションの大部分はグラフィカルユーザインタフェース(以下「GUI」と言う)を備えており、GUIは、多くのGUI要素(ウインドウ,ラベル,ボタン,テキストボックス等)で構成される。このようなアプリケーションに対してユーザは、表示されたGUIを確認し、そのGUIを構成するGUI要素を操作する。その操作によってGUIは変化するため、再度その変化したGUIを確認し、GUI要素を操作するといった作業を繰り返すことになる。
このようなGUIアプリケーションへのユーザ作業の効率化や、そのGUIアプリケーションへのテストの効率化のためには、過去に実施した作業ログの可視化が有効であると考えられる。
例えば、企業が業務のために独自開発したGUIアプリケーション上で、オペレータが紙の帳票を元にデータを投入する場合を考える。このとき単純に帳票に記載された情報をGUIアプリケーションにそのまま入力するだけでなく、業務ルールにもとづきオペレータの判断で情報を変換し、変換したデータをGUIアプリケーションに投入する場合などがある。また、帳票の内容に応じて、データを入力すべきGUI要素をオペレータが判断して投入しなければならない場合がある。このようなデータの投入時のオペレータの判断に関して、マニュアルなどに記載されていれば、それを参照すればよい。しかし、オペレータ判断に関する記載はマニュアル(特に操作マニュアル)には記載されておらず、オペレータの暗黙的なノウハウになっている場合もある。
このようなデータの投入作業においてオペレータがどのようにGUIアプリケーションに対してデータを投入すべきか迷った時、従来は他の詳しいオペレータに聞いて投入方法を習得するというのが一般的であった。この方法は属人的であり、投入方法を知っているオペレータを探す手間が必要になる点や、その投入方法を知っているオペレータが休みの場合には、業務が滞ってしまうという問題がある。このとき、他のオペレータが実施した作業ログが記録・蓄積・共有されていて、実際にどのようにデータ投入したかを迅速に参照することができれば、オペレータ自身で投入時の判断をできるようになる。
また別の例として、GUIアプリケーションへのテストを考える。通常のテストでは、重複や漏れがないようにテストケース(あるいはテスト手順)をテスト実施前に設計・文書化し、テスト設計書に記載されたテストケースに沿ってテストを実施する。網羅的にテストケースを事前抽出できていれば問題はないが、多くの場合、テストケース抽出には漏れが発生する。テスタは、テスト実施中にGUIアプリケーションの仕様に関する知識からテストケースの漏れに気が付くときがある。この場合、テスタはその場で思いついたテストケースをテスト設計書に追記することなく実施し、GUIアプリケーションの動作を確認する。このように、テスト実施時のソフトウェアの挙動を見てテストケースを動的に決定し、文書化せずそのテストケースを実施する手法を探索的テストと呼ぶ。探索的テストは、漏れに気が付いた時点でテストケースを柔軟に追加することができ、テスト設計書への文書化コスト(追加するテストケースがテスト設計書に記載済みかのチェックやテストケースの記載のコスト)も不要であるため、アプリケーションのバグ検出に有用な手法である。
複数人のテスタがそれぞれ探索テストを実施する場合の問題点の1つは効率性である。通常、大規模なGUIアプリケーション開発のテストは、複数人のテスタが分担して実施する。それぞれのテスタが実施するテストケースが、テスタ間で共有されていないため、お互い冗長なテストを実施してしまうケースがある。先にも述べたが、探索的テストでは各テスタが、テスト実施中にそれぞれテストケースを考案し、それをそのまま実施する。よって探索的テストでテスタがテストケースの漏れだと思って実施しようとしているテストケースは、実は、他のテスタがテスト設計書記載のテストケースとして実施済みかもしれないし、あるいは探索的テストのテストケースとして実施済かもしれない。冗長なテストケースの実施を防止するためには、各テスタが実施したテストケースの情報を共有化する必要がある。すべてのテスタのテスト操作の作業ログが記録・蓄積・共有されていて、実際にテストした手順や投入したパラメータを迅速に参照することができれば、重複したテストケースの実施を防止することができ、探索的テストの効率を改善することができる。
以上のように蓄積されたGUIアプリケーションへのユーザやテスタの作業のログの可視化は、業務やテストの効率化に非常に有効な手法である。
GUIアプリケーションに対する作業は、GUI遷移の列として表現することができる。GUI遷移とは遷移前のGUIをg、操作をe、遷移後のGUIをg’としたとき、組(g,e,g’)で表現できる。またユーザの作業ログwは、ユーザ操作の時系列順に発生したGUI遷移をt1,t2,…,tnとすると、t1t2…tnで表現できる。作業ログwが含むGUI遷移の数を|w|で表現するとき、蓄積された作業ログの集合W={w1,w2,…,wn}に含まれるGUI遷移の総数は|w1|+|w2|+…+|wn|となる。蓄積された作業ログを単純に人手で参照する場合、例えば、あるGUIのもとで入力しているデータを知りたい場合、|w1|+|w2|+…+|wn|個のGUI遷移を確認し、該当するGUI遷移を発見する必要がある。これは作業ログが大量に蓄積される場合に非常に負担の大きい作業になる。
蓄積された作業ログの集合の確認する作業を軽減するための技術として本発明では大きく2つの技術を取り上げる。1つ目の技術として、作業ログを縮退する技術がある。例えば図1のような作業ログ(g0,e1,g1)(g1,e2,g2)(g2,e3,g3)(g3,e4,g4)(g4,e5,g5)を考える。ここで作業ログの縮退の具体的な手段として、操作前後のGUIの構成するGUI要素自体が変化していない場合には、そのGUI遷移を省略するといった手段を与える。(g0,e1,g1),(g1,e2,g2),(g2,e3,g3),(g3,e4,g4)という各GUI遷移では各操作e1,e2,e3,e4によってGUI要素であるテキストボックスの値の入力状態は変化するが、操作前後でGUIを構成する各GUI要素自体は変化していない。一方、(g4,e5,g5)ではg4に存在するテキストボックスがg5には存在しない等、操作の前後でGUIを構成するGUI要素が異なる。結果、この手段によって図2のような作業ログ(g4,e5,g5)を得ることができる。このような作業ログを縮退・可視化する従来技術として、非特許文献1がある。テスタがテストする際の操作とその前後のGUIをスクリーンショットとして記録することができる。
このような作業ログの縮退・可視化を実現する従来技術の問題点は、縮退する手段を自由に追加し、オペレータやテスタが確認したい観点に応じて、柔軟に縮退する手段を追加できない点である。縮退手段とは、観点を確認するために不要な情報を縮退・削除する作業であり、あらゆる観点に対する確認コストを減少させることが可能な縮退手段は存在しない。例えば、図1のGUI遷移(g3,e4,g4)のように電話の入力値を000から111へ変更するといった細かい操作手順を確認したい場合には、この作業ログのすべての遷移を確認する必要がある。しかし、登録ボタンを押下する直前のデータの入力状態とその結果を確認したいだけであれば、図2のように遷移(g4,e4,g5)のみに自動で縮退することによって、確認する遷移を5から1に減らし確認の作業コストを減らすことが可能である。このように確認の観点に応じて適切な縮退手段は異なる。また確認観点はオペレータやテスタ、実施中の作業など依存するため、固定的な縮退手段を実現していても、確認作業コストを減らせる場合もあれば、確認作業コストが減らせない、あるいは、それら縮退手段では観点が確認できないといった不都合が発生する。
蓄積された作業ログの集合の確認する作業を軽減するための技術の2つ目として、作業ログのようなGUI遷移列の集合から遷移グラフを構築する技術が広く知られている。遷移グラフとはノードとノード間を結ぶ有向エッジで構成される。GUI遷移列の集合から遷移グラフ表示を構築する場合、GUIがノードに対応し、GUI遷移が該当するGUIのノード間を結ぶエッジに対応する。
GUI遷移列の集合から遷移グラフを構築する場合は、作業ログの集合の各遷移に含まれるGUIと操作の等しさの判定基準が必要になる。例えば、図3のように作業ログw1=(g0,e1,g1)(g1,e2,g2)とw2=(g3,e3,g4)(g4,e4,g5)が蓄積されている場合を考える。g0=g3,g1≠g4,g2≠g5というGUIの等しさの判定基準と、e1≠e3,e2≠e4というGUI遷移の等しさの基準では図4のような遷移グラフが構築される。また、g0=g3,g1=g4,g2≠g5というGUIの等しさの判定基準と、e1≠e3,e2≠e4というGUI遷移の等しさの基準では図5の遷移グラフが構築される。このように、作業ログの集合中に出現するGUIや操作を縮退し遷移グラフとして表示することで、個々に作業ログを確認するよりも、確認コストを減らすことができる。
作業ログの集合からの遷移グラフ構築技術は、GUIや操作の等しさの判定基準によって、構築される遷移グラフのノード数やエッジ数は変化し、様々な遷移グラフ構築手段(判定基準)が提案されている。
例えば、非特許文献2では、Webアプリケーションに表示されるDOM(Domain Object Model)構造をGUIとして取得し、そのDOM構造間の編集距離を求め、閾値以下であれば同じGUIと見なすといった判定基準を与えることで、遷移グラフを構築している。また、非特許文献3では、GUIから構成するGUI要素とそのプロパティ値の組の集合を取得し、GUIの等しさの判定基準をGUIから得られた集合の等しさで判定している。
このようなGUI遷移列の集合から遷移グラフの構築を実現する従来技術の問題点は、オペレータやテスタが確認したい観点に応じて、柔軟に構築手段を追加できない点である。構築手段とは、先の作業ログの縮退手段と同様に、観点を確認するために不要な情報を縮退・削除する作業であり、あらゆる観点に対する確認コストを減少させることが可能な構築手段は存在しない。
例えば、図4の場合、登録ラジオボタンを選択しているGUI(g1)と変更ラジオボタンを選択しているGUI(g4)が別ノードとして区別されているため、g1から実行ボタンを押した場合には正常終了に遷移し、g4から実行ボタンを押した場合にはエラーになることが確認できる。一方、図5の場合g1とg4が同一のノードに縮退されてしまうため、グラフからは実行ボタンを押す前のGUIがどのような状態のとき正常に終了し、エラーとなるのか判別できない。
このように確認の観点に応じて適切な構築手段は異なる。また確認の観点はオペレータやテスタ、実施中の作業などに依存するため、固定的な構築手段を実現していても、確認作業コストを減らせる場合もあれば、確認作業コストが減らせない、あるいは、それら構築手段ではそもそも観点の確認ができないといった不都合が発生する。
また、確認の観点に応じて適切な遷移グラフが異なるため、オペレータやテスタは、作業ログを参照する際に、複数の遷移グラフを表示し見比べながら確認することが想定される。その際、遷移グラフ上で着眼したエッジやノードと作業ログのGUI遷移やGUIとの対応関係、あるいは別の遷移グラフのエッジやノードとの対応関係が確認できる必要がある。
例えば、図5のノードg1に着眼した場合、操作によってはノードg2が表現する正常終了のGUI、あるいはノードg5が表現する異常終了のGUIへ遷移することがわかる。しかし、具体的にノードg1においてGUIがどのような状態の時に正常終了し、異常終了するのか、このグラフだけでは読み取れない。この場合、図5のエッジe2やe4と対応する図3の作業ログ中のGUI遷移(g1,e2,g2)や(g4,e4,g5)を表示することが必要である。さらに図5の遷移グラフでノードg1に着眼しているとき、より詳細に分析するために図4の遷移グラフを表示させたとする。しかし、図4の遷移グラフを表示させただけでは、図5で着眼していたノードg1が、図4のどのノードと対応しているのかが判断できず、人手で図4の各ノードを探索する手間が発生する。
また、遷移グラフ構築では、ノード数を減少させる構築手段であればあるほど、その遷移グラフを構築した作業ログの集合には存在しないパスが、遷移グラフに含まれてしまう。例えば、図5の遷移グラフは、図3の作業ログw1とw2から生成したグラフである。しかし、この遷移グラフには、(g0,e3,g1)(g1,e2,g2)という変更ラジオボタンを選択してから実行ボタンを押したのに正常終了するというパスを含んでいる。これ以降では遷移グラフを構築した作業ログの集合内の作業ログと対応する遷移グラフ中のパスを実パス、対応しない遷移グラフ中のパスを偽パスと呼ぶことにする。
偽パスの存在は、作業ログを確認するオペレータやテスタに誤った情報を与える可能性があり、存在しないほうが望ましい。その一方で偽パスが少ない遷移グラフは、ノード数やエッジ数が多くなるため、確認コストという観点では問題がある。よってオペレータやテスタが作業ログを確認するという用途にあっては、単に遷移グラフを様々な判定基準のもとで柔軟に構築できるだけでなく、遷移グラフ上で実パスが確認でき、実パスと対応する作業ログ自体を個別に確認できる必要がある。
そこで本発明では、作業ログを可視化する技術において、オペレータやテスタの確認の観点に応じて多様な表示形態で作業ログを表示可能な作業ログ可視化方法及び装置並びにプログラムを提供することにある。
本発明では、オペレータやテスタの確認の観点に従い、縮退表示手段や遷移グラフを構築する手段を自由に切り替えて表示し、同じくオペレータやテスタの確認の観点に従い作業ログと対応する遷移グラフ中の実パスや、遷移グラフ中のノードやエッジに縮退されている作業ログのGUIやGUI遷移や、遷移グラフ間のノードやエッジの対応関係を表示するという課題を解決するために、以下の特徴を有する。
すなわち、本願発明は、GUI(Graphical User Interface)アプリケーションの作業ログを作業ログ可視化装置において可視化する作業ログ可視化方法であって、作業ログ可視化装置は、GUIアプリケーションにおけるGUIと該GUIに対する操作の遷移列からなる作業ログの集合を記憶した記憶手段を備え、作業ログ可視化装置の表示制御手段が、ユーザから入力された作業ログ及び前記記憶手段に記憶されている作業ログの集合を入力として、1以上の遷移グラフ構築モジュールを用いて、遷移グラフ及び該遷移グラフ中の前記入力された作業ログに係るパス(実パス)を含む遷移グラフ構造を生成するステップと、ユーザから指定された遷移グラフ構築モジュールにより生成された遷移グラフを表示装置に表示させるステップと、ユーザから指定された作業ログを入力として、ユーザから指定された作業ログ縮退モジュールを用いて、縮退された作業ログを生成して該縮退作業ログを表示装置に表示させるステップとを備えたことを特徴とする。
本発明の好適な態様の一例としては、さらに、作業ログ可視化装置の表示制御手段が、前記遷移グラフの表示中においてユーザから作業ログが指定された場合に、該作業ログに係る実パスを表示中の遷移グラフ上に表示させるステップを備えたことを特徴とするものが挙げられる。
本発明の好適な態様の他の例としては、さらに、作業ログ可視化装置の表示制御手段が、前記遷移グラフの表示中において該遷移グラフ中のノード又はエッジが指定された場合に、該ノード又はエッジを含む作業ログを前記記憶手段から取得し、該作業ログ上における前記ノード又はエッジに係るGUI遷移を表示装置に表示させるステップを備えたことを特徴とするものが挙げられる。
本発明の好適な態様の他の例としては、さらに、作業ログ可視化装置の表示制御手段が、ユーザから指定された第1の遷移グラフ構築モジュールにより生成された第1の遷移グラフ及びユーザから指定された第2の遷移グラフ構築モジュールにより生成された第2の遷移グラフの表示中において、第1の遷移グラフ中のノード又はエッジが指定された場合に、該ノード又はエッジに対応する第2の遷移グラフ中のノード又はエッジを第2の遷移グラフ上において明示させるステップを備えたことを特徴とするものが挙げられる。
本発明の好適な態様の他の例としては、さらに、作業ログ可視化装置の表示制御手段が、ユーザから指定された作業ログ又は作業ログ縮退モジュールにより縮退された作業ログに対して、ユーザから指定されたGUI遷移の位置に基づき該作業ログを縮退し、縮退した作業ログを表示装置に表示させるステップを備えたことを特徴とするものが挙げられる。
本発明により、オペレータやテスタの確認の観点にしたがい、縮退表示手段や遷移グラフを構築する手段を自由に切り替えて表示し、さらに作業ログと対応する遷移グラフ中の実パスや、遷移グラフ中のノードやエッジに縮退されている作業ログのGUIやGUI遷移を表示し、作業ログと遷移グラフとの対応関係を表示することができる。また遷移グラフ中のノードやエッジと対応する別の遷移グラフのノードやエッジを表示することができる。これによりオペレータやテスタは過去に蓄積された作業ログを参照しながらGUIアプリケーション作業やテストを効率よく実施できる。
本発明の一実施の形態に係る作業ログの可視化方法を実施する装置について図6を参照して説明する。ここでは周知のコンピュータ上に実現した例を示すもので、図中、1は入力装置、2はコンピュータ本体、3は記憶装置、4は表示装置である。
入力装置1は、キーボード、マウス等からなり、ユーザがコンピュータ本体2に所定の情報、ここでは、記憶装置3が保持する登録モジュール集合へ追加するために、作業ログ縮退モジュール及び遷移グラフ構築モジュールを入力することができる。そのモジュール名と起動方法などのメタ情報も入力として含めることができる。また、登録モジュール集合内の各モジュールを削除するために、入力装置1からモジュール名を指定することができる。なお、もし本装置を利用するときに使用者が作業ログの集合を遷移グラフ表示することが不要であれば、遷移グラフ構築モジュールは入力する必要はない。
また入力装置1は、記憶装置3で保持する作業ログの集合内の作業ログを縮退表示するために、表示させたい作業ログ名と、作業ログ縮退モジュール名を指定することができる。
また入力装置1は、記憶装置3で保持する作業ログの集合内の作業ログを縮退表示するために、表示させたい作業ログ名と、縮退されるGUI遷移の位置を指定することができる。
また入力装置1は、作業ログを入力し、メタ情報である作業ログ名などと共に、記憶装置3で保持する作業ログ集合に入力された作業ログを加えることができる。
また入力装置1は、記憶装置3で保持する作業ログの集合から、登録モジュールに登録された遷移グラフ構築モジュールによって作成された遷移グラフを表示するために、遷移グラフ構築モジュール名を指定することができる。
また入力装置1は、遷移グラフを表示中に遷移グラフ上で実パスを表示させるために、作業ログ名を指定することができる。また入力装置1は、遷移グラフの表示中に、縮退されたGUIやGUI遷移を表示させるために、エッジやノードを指定することができる。
記憶装置3は、登録モジュール集合と作業ログ集合、ならびに遷移グラフ表示データ作成部が出力する遷移グラフ構築モジュール名と遷移グラフ構造の組の集合を保存するための装置である。
入力装置1により入力され、記憶装置3の登録モジュール集合に記憶される作業ログ縮退モジュールは、記憶装置3に蓄積されている作業ログを与えたときに、そのモジュールに実装された縮退手段によって縮退された作業ログを生成する機能が具備されている。
また入力装置1により入力され、記憶装置3の登録モジュール集合に記憶される遷移グラフ構築モジュールは、記憶装置3で保持する作業ログの集合(仮にここでWと表現する)、あるいはその作業ログの集合から生成した遷移グラフ構造を入力とし、さらに入力装置1から追加する作業ログ(仮にここではwと表現する)を入力とする。これらの入力によって、本モジュールに実装された遷移グラフ構築手段に従って、記憶装置3で保持する作業ログの集合に作業ログを追加した新しい集合(W∪{w})と対応する遷移グラフ構造を生成することができる。生成した遷移グラフ構造には遷移グラフを構成するノードや、エッジの情報だけでなく、遷移グラフ中のパスとそれに対応する作業ログの集合中の作業ログの情報が含まれるものとする。このような作業ログ縮退モジュールや遷移グラフ構築モジュールは、従来技術で述べた公知の技術によって実現できる。
表示装置4は、液晶ディスプレイ、CRT等画像表示装置等からなり、表示制御部6の要求により(縮退された)作業ログや遷移グラフ構造の内容を表示することができる。
コンピュータ本体2は各装置を制御するとともに、モジュール管理部5、表示制御部6、作業ログ表示データ作成部7、遷移グラフ表示データ作成部8を構成する。なお、コンピュータ本体2の各部は、ハードウェアにより構成してもよいし、コンピュータ本体2にプログラムをインストールすることによって構成してもよい。なお該プログラムは、記録媒体に記録することも、ネットワークを通して提供することも可能である。
モジュール管理部5は、入力装置1から入力された作業ログ縮退モジュール及び遷移グラフ構築モジュールを、それらモジュールのメタ情報(起動方法やモジュール名)と共に、記憶装置3の登録モジュール集合に追加する。登録したモジュールを削除するために、入力装置1からのモジュール名が入力されたとき、モジュール名と対応するメタ情報やモジュール自体を登録モジュール集合内から削除する。
表示制御部6は、表示させたい作業ログ名と、作業ログ縮退モジュール名が入力装置1から入力されたとき、作業ログ表示データ作成部7を使って、縮退された作業ログを作成し、表示装置4に出力する。
また表示制御部6は、表示させたい作業ログ名と、その作業ログから縮退させるGUI遷移の位置が入力装置1から入力されたとき、作業ログから指定された位置のGUI遷移を削除した作業ログを作成し、表示装置4に出力する。
また表示制御部6は、入力装置1から作業ログ(およびメタ情報の作業ログ名)が入力されたとき、記憶装置3で保持する作業ログの集合に入力された作業ログを加えた新しい作業ログ集合の遷移グラフ構造を、遷移グラフ表示データ作成部8を使って作成し、入力された作業ログ(およびメタ情報の作業ログ名)を記憶装置3の作業ログ集合に追加する。このとき作成される遷移グラフ構造は、記憶装置3で保持する登録モジュール集合内のすべての遷移グラフ構築モジュールごとに作成され、遷移グラフ構築モジュール名と遷移グラフ構造の組の集合として記憶装置3に保存される。
また表示制御部6は、入力装置1から遷移グラフ構築モジュール名が入力されたとき、記憶装置3で保持する遷移グラフ構築モジュール名と遷移グラフ構造の組の集合から、入力された遷移グラフ構築モジュール名の遷移グラフ構造を取り出し、表示装置4に出力する。
また表示制御部6は、遷移グラフの表示中に、エッジやノードが入力装置1から指定されたとき、そのノードやエッジと対応する作業ログ上のGUIやGUI遷移を表示装置4に表示する。
また表示制御部6は、遷移グラフの表示中に、エッジやノードが入力装置1から指定されたとき、そのノードやエッジと対応する別の遷移グラフ上のノードやエッジを表示装置4に表示する。
また表示制御部6は、遷移グラフの表示中に、作業ログ名が入力装置1から入力されたとき、遷移グラフ構造中の実パスと作業ログ名との対応関係から実パスを特定し、表示中の遷移グラフ上で実パスを表示装置4に表示する。
作業ログ表示データ作成部7は、表示制御部6によって呼び出され、入力装置1より表示させたい作業ログ名と、作業ログ縮退モジュール名が入力されたとき、図7の手続きを実行し、指定された作業ログを指定されたモジュールで縮退し表示装置4に表示する。
具体的には図7に示すように、作業ログ表示データ作成部7は、記憶装置3で保持する登録モジュール集合から作業ログ縮退モジュール名と対応する作業ログ縮退モジュールの起動方法を取得する(ステップS1)。さらに、作業ログ表示データ作成部7は、入力された作業ログ名をキーにして、記憶装置3で保持する作業ログの集合から対応する作業ログを取り出す(ステップS2)。作業ログ表示データ作成部7は、最後に、取り出した作業ログを入力とし、取得した起動方法に準じて作業ログ縮退モジュールを実行し、縮退した作業ログを取得する(ステップS3)。
遷移グラフ表示データ作成部8は表示制御部6によって呼び出され、入力装置1から入力されたとき作業ログwに対して、図8の手続きを実行する。図8の手続きでは、記憶装置3で保持する登録モジュール集合内の各遷移グラフ構築モジュールに対して、遷移グラフ構造を作成する。
具体的には図8に示すように、遷移グラフ表示データ作成部8は、まず遷移グラフ構築モジュール名と遷移グラフ構造の組の集合Oを空集合に設定する(ステップS11)。次に遷移グラフ表示データ作成部8は、記憶装置3で保持する作業ログの集合を取得しWとする(ステップS12)。次に、記憶装置3で保持される登録モジュール集合内から遷移グラフ構築モジュール名と起動方法の組の集合を抽出しMとし(ステップS13)、集合Mが空集合か判定する(ステップS14)。もし空集合であれば、集合Oを記憶装置3に保存し図8の手続きを終了する(ステップS15)。もし空集合でなければ、Mから遷移グラフ構築モジュール名と起動方法の組mを一つ取り出し、集合MをM−{m}に更新する(ステップS16)。次いで、作業ログの集合Wと作業ログwを入力として、mの起動方法に従い遷移グラフ構築モジュールを実行し、遷移グラフ構造を取得する(ステップS17)。さらに、ステップS17で取得した遷移グラフ構造と、mの遷移グラフ構築モジュール名の組を集合Oに追加し、前記ステップS14へと戻る。
本発明により、入力装置1から作業ログ縮退モジュールや遷移グラフ構築モジュールを自由に登録できる。その結果、作業ログの確認の観点に応じて、登録されたそれらモジュールを使って異なる縮退方法で作業ログを表示させ、異なる判定基準の遷移グラフを表示させることが可能になる。また遷移グラフ中の実パスと対応する作業ログを表示することによって、抽象的な表示から具体的な表示に切り替え、詳細の確認が可能になる。
なお、前述した実施形態では、モジュール管理部5、表示制御部6、作業ログ表示データ作成部7、遷移グラフ表示データ作成部8をコンピュータ上で実現した例を示したが、ハードウェアで実現してもよい。また、これら各装置が、適切な通信路で相互に接続された複数のハードウェア上に分散して存在し、相互に通信し合いながら実行することもできる。
本発明による作業ログの可視化方法の実施例を示す。まず、本実施例では図1、図9をそれぞれ作業ログw1=(g0,e1,g1)(g1,e2,g2)(g2,e3,g3)(g3,e4,g4)(g4,e5,g5),w2=(g6,e7,g7)(g7,e8,g8)(g8,e9,g9)とする。
作業ログ中のGUIとして記録する情報は様々なものが考えられる。本実施例では、GUI構造と画面キャプチャが記録されているものとする。GUI構造とは、GUIを構成するGUI要素とその状態を表現するデータであり、GUI要素、プロパティ、プロパティ名の組の集合で表現される。図1のGUI(g1)を構成するGUI要素をウインドウ1、テキストボックス1、テキストボックス2、テキストボックス3、ボタン1、ボタン2とした場合のGUI構造の例を図10に示す。この例では、各GUI要素のプロパティとしてラベルを取得しており、GUI要素がテキストボックスの場合は入力値を追加で取得している。
GUIを構成するGUI要素やそのプロパティ値の取得は公知の技術であり、例えば、対象アプリケーションがWebアプリケーションであるならば表示のDOM構造から取得できる。また、本実施例ではラベルと入力値の情報を取得するが、他にも活性状態や選択状態など多様なプロパティ値を取得することができる。
本実施例の作業ログ中の各GUIのGUI構造や画面キャプチャはファイルで保存されており、GUI(g0)に対してGUI構造のファイルはg0.st、画面キャプチャのファイルはg0.img、GUI(g1)に対してGUI構造のファイルはg1.st、画面キャプチャのファイルはg1.imgとする。他のGUIに関しても同様のファイル名を持つものとする。
作業ログ中の操作については、操作対象のGUI要素と、操作の種別を記録されているものとする。操作の種別が値を設定する操作の場合はその入力値も記録される。本実施例の作業ログ中の各操作はファイルとして保存されており、操作e1に対する操作ファイルをe1.op、操作e2に対する操作ファイルをe2.opとし、他の操作に関しては同様のファイル名を持つものとする。
本実施例の作業ログは、構成するGUIの構造ファイルや画面キャプチャファイル、操作と対応する操作ファイルなどと共に、GUI遷移列とその遷移列に出現するGUIや操作と各ファイル名の対応関係を示す作業ログファイルで構成され、入力装置1に与えられる。図11に作業ログw1の作業ログファイルの例を示す。これは作業ログファイルがXMLで記述された場合の例であり、各Transition要素の上から順番に、GUI遷移列を表現している。Transition要素のS_St属性が操作前のGUIの構造ファイル名、S_Img属性が操作前のGUIの画面キャプチャファイル名、Operation属性が操作ファイル、T_St属性が操作後のGUIの構造ファイル、T_Img属性が操作後の画面キャプチャファイルである。作業ログw1,w2の作業ログファイル名をそれぞれw1.xml,w2.xmlとする。
次に、作業ログ縮退モジュールとして、本実施例ではコンソールから実行可能なプログラムとして2つのモジュールを考える。図12にそのモジュール名と起動方法を示す。なお、起動方法に記載されている”%1”は変数であり、本装置が、作業ログ縮退モジュールを実行する際に、この変数を作業ログファイル名に置き換えてコンソールに入力し実行する。また同様に遷移グラフ構築モジュールとして、本実施例ではコンソールから実行可能なプログラムとして2つのモジュールを考える。図12にそのモジュール名と起動方法を示す。起動方法に記載されている”%1”,”%2”は変数であり、本装置が、遷移グラフ構築モジュールを実行する際に、”%1”を作業ログファイル名に、”%2”を記憶装置3で保持している作業ログの集合(作業ログファイル名のリスト)に置き換えてコンソールに入力し実行する。
本発明の可視化装置を利用して、作業ログを表示させるとき、まず、作業ログ縮退モジュールや遷移グラフ構築モジュールを入力装置1から入力する。このとき、各モジュールの実ファイルと共に、図12に示す作業ログ縮退モジュール名、起動方法及びモジュールの種別(作業ログ縮退モジュール、遷移グラフ構築モジュール)を入力する。この入力に対してモジュール管理部5は記憶装置3の登録モジュール集合に情報を追加する。このとき記憶装置3が保持する登録モジュール集合の状態を図13に示す。
次に、可視化させたい作業ログとしてw1が入力される場合を考える。このとき、作業ログを構成するGUI構造ファイルg0.st,g1.st,g2.st,g3.st,g4.st,g5.st、画面キャプチャファイルg0.img,g1.img,g2.img,g3.img,g4.img,g5.img、操作ファイルe1.op,e2.op,e3.op,e4.op,e5.op、作業ログファイルw1.xmlそのものが入力されると共に、作業ログw1を示すメタ情報としてファイル名w1.xmlが入力される。
このとき、表示制御部6は、入力された作業ログw1と記憶装置3が保持する作業ログの集合を入力として遷移グラフ表示データ作成部8を呼び出す。遷移グラフ表示データ作成部8は、図8の手続きを実施し、登録モジュール集合に登録された遷移グラフ構築モジュールごとに遷移グラフ構造を作成する。以下、このときの図8の手続きの動作を説明する。
まず、ステップS11からS13にて遷移グラフモジュール名と遷移グラフ構造の組の集合O={}、作業ログの集合W={}、遷移グラフ構築モジュール名と起動方法の組の集合M={(m3,m3 %1 %2),(m4,m4 %1 %2)}となる。次にステップS14にて集合Mが空集合か判定し、空集合ではないためステップS16にてm=(m3,m3 %1 %2),M={(m4,m4 %1 %2)}となる。ステップS17では、mの起動方法であるm3 %1 %2に対して、%1が入力された作業ログw1のメタ情報であるw1.xmlで置換され、%2は作業ログの集合Wが空集合なので、空文字””に置換される。結果としてm3 w1.xmlがコンソールにて実行される。
遷移グラフ構築モジュールm3は、GUIの等しさの判定基準として、GUI構造の等しさ、すなわち、GUI要素、プロパティ、プロパティ値の組の集合の等しさを採用し、操作の等しさに関しては、操作対象のGUI要素、操作の種別、入力操作の場合の入力値が等しいことを判定基準として採用しているものとする。この判定基準に従って作成された遷移グラフ構造は図14となる。N1からN6がノードを、E1からE5がエッジを表す。なお、各GUIのg0からg5と対応する画面キャプチャファイルをそれぞれノードN1からN6に表示すれば図1と同様のグラフを得ることができる。また遷移グラフ構造には図14のデータだけでなく、遷移グラフ上の実パスと作業ログとの対応関係が記述される。そこで、本実施例の遷移グラフ構築モジュールでは、作業ログファイル名と作業ログ中のGUI遷移のGUIと操作をノードとエッジで置換した情報が出力されるものとする。この対応関係の情報を図15に示す。
ステップS18では、mの遷移グラフ構築モジュール名、すなわちm3とステップS17の結果として取得できる遷移グラフ構造(図14と図15で構成されるデータ)の組を集合Oに追加して、ステップS14に戻る。
ステップS14では、M={(m4,m4 %1 %2)}であり空集合ではないため、再度ステップS15へと進み、m=(m4,m4 %1 %2)、M={}に更新される。ステップS17では、m4 w1.xmlがコンソールにて実行される。遷移グラフ構築モジュールm4は、遷移グラフ構築モジュールm3と同様の判定基準を採用しているものとする。ただし、m3とは異なり、GUI構造からプロパティが入力値である組を除外した集合を作成し、等しさを評価する。例えば、図10のGUI構造に対して、図16のように変換した集合で等しさを評価することを意味する。つまりモジュールm4においては、テキストボックスの入力値は無視されてしまい例えばg0やg1,g2なども等しいと判定される。ステップS17の結果、図17の遷移グラフ構造を得ることができる。さらにステップS8の結果、mの遷移グラフ構築モジュール名であるm4と図17の遷移グラフ構造の組を集合Oに追加し、ステップS14へと戻る。
ステップS14ではMが空集合であるため、ステップS15へと進み、集合Oを記憶装置3に記録する。このときの集合Oを図18に示す。このように遷移グラフ表示データ作成部8の手続きが完了したら、表示制御部6は入力された作業ログを記憶装置3の作業ログ集合に追加する。
可視化させたい作業ログとしてw2が入力される場合、作業ログを構成するGUI構造ファイルg6.st,g7.st,g8.st,g9.st、画面キャプチャファイルg6.img,g7.img,g8.img,g9.img、操作ファイルe7.op,e8.op,e9.op、作業ログファイルw2.xmlそのものが入力されると共に、作業ログw2を示すメタ情報としてファイル名w2.xmlが入力される。この時前述の作業ログw1を入力したときと同様に、表示制御部6によって、遷移グラフ表示データ作成部8が呼び出され、図19に示す集合Oが記憶装置3に記録される。このとき、遷移グラフ構築モジュールm3,m4が作成した遷移グラフデータをそれぞれ、図20、図21に示す。最後に表示制御部6は、作業ログの集合に作業ログw2を追加する。
遷移グラフを表示するために、入力装置1から遷移グラフ構築モジュール名としてm3が入力されたとき、表示制御部6は、記憶装置3に記録されている図19の情報から、m3の遷移グラフ構造である図20を表示装置4に表示する。もし、入力装置1からm4が指定された場合には、m4の遷移グラフ構造である図21を表示装置4に表示する。
例えば、図20の表示はノードN6と対応するGUI(g5)へのエッジが2本あることを容易に確認できる。それぞれのエッジの遷移元であるノードN3やN6と対応するGUIを確認すれば、図1のg4や図9のg8から、電話番号のテキストボックスを入力しなくとも登録可能であることが確認できる。図21の表示からは、GUI(g5)と対応するノードN2への遷移が1つに縮退されているため、このような情報は確認しにくい。一方、図21の表示では、これまでの作業ログは必ずノードN2と対応するg5へ到達し、登録が完了していることの確認が容易である。図20の表示ではノードの数が多く、そのような観点の確認は図21よりは難しい。このように、確認の観点に合わせて、遷移グラフ構造モジュール名を指定することにより、試行錯誤しながら確認に適した遷移グラフ構造を切り替え表示することが可能になる。また観点を確認するのに適した遷移グラフ構造が存在しない場合には、遷移グラフ構築モジュールを追加することにより、その観点に適した遷移グラフ構造を表示することが可能になる。
作業ログを縮退表示させるために、作業ログ名w1.xmlと作業ログ縮退モジュール名m1が入力装置1から入力された場合、表示制御部6は作業ログ表示データ作成部7を呼び出す。作業ログ表示データ作成部7は、図7の手続きを実行し、縮退された作業ログを作成する。
具体的には、ステップS1にて記憶装置3が保持する図13の登録モジュール集合から、作業ログ縮退モジュール名m1と対応する起動方法“m1 %1”を取得する。続くステップS2では、記憶装置3が保持する作業ログの集合{w1,w2}から入力された作業ログ名w1.xmlと対応する作業ログを取り出す。そしてステップS3で、起動方法“m1 %1”の%1をw1.xmlに置き換え、コンソールからm1 w1.xmlが実行される。
本実施例では、作業ログ縮退モジュールm1では、操作前後のGUIの構成するGUI要素自体が変化していない場合には、そのGUI遷移を省略するといった手段が実装されているものとする。この場合、ステップS3でm1 w1.xmlが実行された結果、表示装置に図2を表示することができる。
m1による作業ログの縮退表示は、操作によってGUIを構成するGUI要素が変化したときの操作前後のGUIを確認するのが容易である。例えば、図2の場合は実際に登録ボタンを押して、登録されたデータが容易に確認できる。その一方で、途中で住所データを書き換えている等の操作は縮退されているため、確認できなくなる。
m1による作業ログの縮退表示で、確認したい観点が確認できない場合には、入力装置1から別の作業ログ縮退モジュール名、例えばm2を入力すればよい。このように、確認の観点に合わせて、作業ログ縮退モジュール名を指定することにより、試行錯誤しながら確認に適した形式に縮退された作業ログを切り替え表示することが可能になる。また観点を確認するのに適した作業ログ縮退モジュールが登録されていない場合は、作業ログ縮退モジュールを追加することにより、その観点に適した形式に縮退された作業ログを表示することが可能になる。
また本実施例では、作業ログ縮退モジュールを用いた所定のアルゴリズムに基づく作業ログの縮退だけでなく、ユーザの指定により作業ログを縮退表示可能としている。この場合、縮退対象の作業ログは、記憶装置3に記憶されている作業ログだけでなく、上記作業ログ縮退モジュールにより縮退された作業ログを含めても良い。例えば、作業ログを縮退表示させるために、作業ログ名w1.xmlとその作業ログから縮退させるGUI遷移の位置として「3」が入力装置から入力された場合、表示制御部6は作業ログw1=(g0,e1,g1)(g1,e2,g2)(g2,e3,g3)(g3,e4,g4)(g4,e5,g5)から先頭から3番目のGUI遷移(g2,e3,g3)を除外する。さらに、直後の4番目のGUI遷移(g3,e4,g4)の操作前のGUIを、3番目のGUI遷移の操作前のGUIに変更した作業ログ(g0,e1,g1)(g1,e2,g2)(g2,e4,g4)(g4,e5,g5)を作成し、表示装置4に表示する。変更した作業ログを図22に示す。図22では入力結果が上書きされてしまった操作を除外して簡潔に作業ログを表示している。このように縮退するGUI遷移を入力装置1から直接指定することにより、該当のGUI遷移を縮退した作業ログを表示することができる。
遷移グラフとして図21が表示装置4に表示されているとき、入力装置1から作業ログ名w2.xmlが入力された場合、表示制御部6は、図21の作業ログ名と実パスの対応関係の表から実パス(N1,E1,N1)(N1,E2,N1)(N1,E5,N2)を取得する。そして、この実パスを図21の遷移グラフ上に表示する。図23の例では、実パスのノードやエッジを太点線で表示している。このように遷移グラフ中に実パスを表示することで、作業ログでは実際に発生しなかったGUI遷移を確認することができる。
遷移グラフとして図21が表示装置4に表示されているとき、入力装置1からノードやエッジが指定された場合を考える。本実施例ではエッジとしてE5が指定されたとする。このとき表示制御部6は、遷移グラフ上の遷移(N1,E5,N2)と対応する作業ログ上のGUI遷移を表示するため、図21の作業ログ名と実パスの対応関係の表から該当のエッジE5を含む実パス上の遷移の位置を抽出する。w1.xmlと対応する実パスにおいてエッジE5を含む遷移の位置は「5」であり、w2.xmlと対応する実パスではエッジE5を含む遷移の位置は「3」である。よって表示制御部6は作業ログw1の先頭から5番目のGUI遷移(g4,e5,g5)とw2の先頭から3番目のGUI遷移(g8,e9,g9)を表示装置4に表示する。これらのGUI遷移を図24に示す。図24では各作業ログの登録ボタンを押下する直前のGUIのみを直接確認でき、例えば、どんな住所や氏名を入力したかや電話は入力しなくても登録は完了できることなどが簡単に確認できる。
また、図21の遷移グラフのエッジE5と対応するエッジを図20の遷移グラフ上で確認したい場合には、前述と同様に、作業ログから対応するGUI遷移(g4,e5,g5)と(g8,e9,g9)を抽出する。これらのGUI遷移はそれぞれw1.xmlの5番目,w2.xmlの3番目のGUI遷移であり、図20の作業ログ名と実パスの対応関係の表の実パスから同じ位置の遷移を抽出する。すなわち、w1.xmlの行の実パスの先頭から5番目の遷移(N5,E5,N6)とw2.xmlの行の実パスの先頭から3番目の遷移(N3,E6,N6)を抽出する。最後に図21の遷移グラフのエッジE5と対応する図20のエッジとして、例えば図25のようにエッジE5とE6を強調表示(同図では太点線で表示)する。