JP2012018583A - ソフトウェア開発支援装置及びその処理方法 - Google Patents
ソフトウェア開発支援装置及びその処理方法 Download PDFInfo
- Publication number
- JP2012018583A JP2012018583A JP2010156183A JP2010156183A JP2012018583A JP 2012018583 A JP2012018583 A JP 2012018583A JP 2010156183 A JP2010156183 A JP 2010156183A JP 2010156183 A JP2010156183 A JP 2010156183A JP 2012018583 A JP2012018583 A JP 2012018583A
- Authority
- JP
- Japan
- Prior art keywords
- gui
- component
- software development
- event
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 238000003672 processing method Methods 0.000 title claims abstract 4
- 238000012795 verification Methods 0.000 claims 1
- 238000000034 method Methods 0.000 abstract description 35
- 238000012360 testing method Methods 0.000 description 52
- 230000008569 process Effects 0.000 description 21
- 238000012545 processing Methods 0.000 description 16
- 238000013461 design Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 230000002452 interceptive effect Effects 0.000 description 6
- 238000012544 monitoring process Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 235000000332 black box Nutrition 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】 GUI画面のコンポーネントに対して操作が行われた際に、該GUI画面上の配置を示す論理的な位置情報を用いて該操作を記録する装置及び方法を提供する。
【解決手段】 GUIアプリケーションによりGUI画面上に表示されたコンポーネントに対してユーザの操作又は自動操作が行われた場合、そのコンポーネントのGUI画面上の配置を示す論理的な位置情報を生成する。そして、生成された論理的な位置情報を操作が行われたコンポーネントの操作記録として記録する。
【選択図】 図1
【解決手段】 GUIアプリケーションによりGUI画面上に表示されたコンポーネントに対してユーザの操作又は自動操作が行われた場合、そのコンポーネントのGUI画面上の配置を示す論理的な位置情報を生成する。そして、生成された論理的な位置情報を操作が行われたコンポーネントの操作記録として記録する。
【選択図】 図1
Description
本発明は、ソフトウェアの開発を支援する技術に関する。
従来、GUIアプリケーションのテスト自動化を行う技術としては、テストスクリプトを自動生成する技術が存在する(例えば、特許文献1参照)。
特許文献1に記載されたテストスクリプト(テスト記述書)の自動生成技術は、GUIアプリケーション全般の画面遷移に対して網羅テストを行うことに主眼が置かれている。また、GUIアプリケーションのプログラムのソースコードやUMLなどの設計情報などを必要としている。
しかしながら、従来、GUIアプリケーションのテスト自動化システムの用途として、プログラムのソースコードやUMLなどの設計情報を使用せずに、ブラックボックス的な回帰テストに利用するというものがある。
特に、最初にユーザがGUI画面上を操作し、その操作に関する情報を操作記録として保存し、その操作記録をテストスクリプトとして再生(自動操作)させる記録再生タイプのテスト自動化が広く利用されている。
上述の記録再生タイプのテスト自動化システムでは、GUI画面上の操作をスクリーン座標系(XY座標系)を用いて記録している。これ以降、記録再生タイプのテスト自動化システムにおいて、スクリーン座標系を使った記録再生タイプのテスト自動化での課題について説明する。
操作記録を取得する際に、スクリーン座標系を用いて記録した場合、再生(自動操作)時に操作対象のGUIコンポーネントの配置が異なっていると、記録された位置にGUIコンポーネントが存在せず再生できないことがある。
再生(自動操作)できない具体例として、GUIコンポーネントの大きさが変更された場合や、異なる座標位置に描画された場合などが挙げられる。
そのため、GUI画面のサイズの拡大・縮小や縦横比、見栄えなどのデザイン上の変更が生じると、画面遷移のパターンや処理フローに変更がなくても、全般的に操作を記録し直さなければならないという問題があった。
上述したように、スクリーン座標系を使った記録再生タイプのテスト自動化システムにおいて、表示デバイスの画面サイズやデザインの変更に柔軟に対応できないことが課題としてある。
また、GUIアプリケーションの多機能化及び高機能化に伴い、GUI画面の画面遷移パターンが増大してきており、画面サイズの変更やデザイン変更の度に、操作記録を取り直すことに対するコストの問題もある。
一方、GUIプログラミングにおいては、Java(登録商標)のようなオブジェクト指向言語で問題を生ずる場合がある。このオブジェクト指向言語は、抽象データ型の一つであるクラスの再利用性が高いため、サイズや配置の全く同じオブジェクトを誤って生成してしまうことがある。このような場合、ユーザが目視では検証できないため、内部的にはCPUやメモリなどのリソースの無駄であり、更に、プログラムの可読性を低下させ、バグを誘発するコードを内包してしまうという課題があった。
更に、GUI画面の構成が複雑化及び多様化するに伴い、ユーザ対話型のGUIコンポーネントが増える場合があり、その際、操作イベントを検知するためのリスナー登録ミスが起きることがある。リスナーとは、GUIアプリケーション内の種々のイベントを処理するための仕組みであり、ユーザ対話型のGUIコンポーネントの場合、操作イベントに応じたリスナーが登録されている必要がある。リスナーが登録されていないと、クリックしても実際には何の処理もされないボタンなどが存在することになり、ソースコードから間違いに気付くか、対象のGUIコンポーネントを操作しないと発見できないという課題があった。
本発明は、GUI画面のコンポーネントに対して操作が行われた際に、該GUI画面上の配置を示す論理的な位置情報を用いて該操作を記録する装置及び方法を提供する。
本発明は、GUIアプリケーションによりGUI画面上に表示された複数のコンポーネントに対するユーザの操作又は自動操作を記録した操作記録を用いてソフトウェアの開発を支援するソフトウェア開発支援装置であって、
前記ユーザの操作又は自動操作が行われたコンポーネントの前記GUI画面上の配置を示す論理的な位置情報を生成する生成手段と、
前記生成手段により生成された論理的な位置情報を前記操作が行われたコンポーネントの操作記録として記録する操作記録手段と、
を有することを特徴とする。
前記ユーザの操作又は自動操作が行われたコンポーネントの前記GUI画面上の配置を示す論理的な位置情報を生成する生成手段と、
前記生成手段により生成された論理的な位置情報を前記操作が行われたコンポーネントの操作記録として記録する操作記録手段と、
を有することを特徴とする。
本発明によれば、GUI画面のコンポーネントに対して操作が行われた際に、該GUI画面上の配置を示す論理的な位置情報を用いて該操作を記録することができる。従って、画面サイズやデザイン変更を行う際に、操作記録を取り直す手間やコストを低減することができる。
以下、図面を参照しながら発明を実施するための形態について詳細に説明する。本発明に係るソフトウェア開発支援装置として、操作記録システム、自動操作システム及び記録分析システムを例に挙げて説明する。また、テスト対象のソフトウェアとしては、GUIアプリケーションを例に挙げて説明する。
図1は、本実施形態におけるシステムの構成を示すブロック図である。図1に示すように、システムはCPU101、RAM102、外部記憶装置104、表示部105、操作部106を含み、それぞれバス103を介して接続されている。このシステムが操作記録システム、自動操作システム及び記録分析システムに適用される。
CPU101はシステム全体を制御する。RAM102は外部装置などから供給されるプログラムやデータベースから取得したデータ、或いはプログラム実行中の中間データを一時記憶する。外部記憶装置104はハードディスクや不揮発性半導体メモリなどであり、システムを制御するプログラム及びRAM102より取得した情報を記憶する。表示部105はユーザインタフェース画面などを表示する。操作部106はユーザの操作を受け付け、その操作に応じた情報を入力する。尚、この操作部106と表示部105とが一体となったタッチパネル付きディスプレイ等も考えられる。
ソフトウェア開発支援装置の適用例として、テスト対象GUIアプリケーションによりGUI画面上に表示された複数のGUIコンポーネントに対するユーザの操作を記録する操作記録システムを説明する。
図2は、本発明に係るソフトウェア開発支援装置のソフトウェア構成を示す図である。GUIアプリケーションの操作記録システムでは、図2において「テスト対象アプリケーション」と「操作記録プログラム」に着眼する。
図3は、本実施形態における操作記録システムの処理を示すフローチャートである。図4は、テスト対象アプリケーションの表示部における表示例を示す図であり、テスト対象アプリケーションが表示部105上に構成したGUIコンポーネントの配置イメージである。
先ず、図3において、CPU101がテスト対象アプリケーションの実行を開始すると、S301において、アプリケーションのGUI画面を表示部105に表示する。テスト対象アプリケーションは、S302においてマウスクリックなどのユーザ操作が行われた場合やアプリケーションの実行により、GUIコンポーネントの配置が変更された場合に、S303において、イベントを発生する。
これ以降、ユーザ操作によって発生したイベントを「操作イベント」と表現し、配置の変更によって発生したイベントを「配置イベント」と表現する。そして、このテスト対象アプリケーションのS303で発生したこのイベントを図2に示す操作記録プログラムがS306で検知することにより、様々な操作の記録を行う。
その後、S304において、イベントがテスト対象アプリケーションの終了イベントであるか否かを判定し、操作を続けるのであればS302に遷移し、次のユーザ操作を待つ。また、終了イベントであればテスト対象アプリケーションを終了する。
一方、操作記録プログラムは、図3に示すように、テスト対象アプリケーションと同時に実行され、S305において、テスト対象アプリケーションからのイベント通知を待つ。続いて、S303において発生したイベントをS306において検出する。S303においてイベントを発生させる仕組みは、テスト対象アプリケーションが持つこともできるし、アプリケーション実行環境がその仕組みを内包することもできる。
また、イベントの発生の仕組みがアプリケーション実行環境にあるならば、テスト対象アプリケーションは、本実施形態を実現するにあたって何ら特別な仕組みを追加する必要はない。また、使用するアプリケーション実行環境がイベントをキューなどによって集中的に一元管理しているならば、操作記録プログラムのイベント検出処理の実現は容易にはなるが、必ずしもイベントは一元的にキューイングされる必要はない。
アプリケーション実行環境がイベントをキューなどによって集中的に一元管理している場合、S303で発生した全てのイベントは、アプリケーション実行環境の一つのキューに対するイベントの入出力を監視することで得られる。その場合、イベントの入出力を監視するイベント監視処理が、S303のイベント発生処理とS306のイベント検出処理の間におかれることもある。イベント監視処理では、キューに対するイベントが入力又は出力されるタイミングでイベントの情報を出力する仕組みを持ち、S306のイベント検出では、このイベント監視処理から得られた情報を取得することによって全てのイベントを検知することができる。
次に、S306で検出したイベントがGUIアプリを構成するコンポーネントの配置が変化したことを示す配置イベントであるか、マウスクリックなどの操作イベントであるかをS307において判定する。判定の結果、配置イベントであればS313に遷移する。また、操作イベントであればS308に遷移する。
S306で検知したイベントが配置イベントの場合、S313において、イベントから配置イベント情報を取得する。この配置イベント情報は配置されたGUIコンポーネントや親コンポーネントの識別子であり、GUIコンポーネントが追加されたのか、削除されたのかといった情報も含まれる。
S313で得られた情報を用いてGUIコンポーネントの配置順と親子関係から図5に示すような木構造の情報である配置情報をS314において更新し、S305に遷移して次のイベントを待つ。
一方、S306で検知したイベントが操作イベントの場合、S308においてイベントから操作イベント情報を取得する。操作イベント情報はGUIに対して操作がなされたかという情報であり、イベントの種類又は操作の種類に応じて、クリック、ダブルクリック、ドラッグ、キー入力などがある。
更に、S309において、イベントを受信したGUIコンポーネントであるリスナーの情報を取得する。S310において、上述のS314で更新された配置情報とS309で取得されたリスナーの情報を用いてGUIコンポーネントのアドレス情報を生成する。
ここで、論理的な位置情報であるアドレス情報の生成方法について説明する。具体的には、先ず、図5において、frame0を表示部105上に配置されたGUI画面の基底の画面とし、この画面を木構造上の基点ととらえ、このノード位置をノードレベル0とする。
次に、GUIコンポーネントの親子関係の子に相当する向きを図の下方にとり、それらをノードレベル1、2、…とする。また、各GUIコンポーネントの配置順を0から順に正の整数値を付与したものをコンポーネントIDとする。即ち、図5に示すbutton3は、ノードレベル1にあるpanel1の上のノードレベル2の0オリジン(0を原点として0、1、2、…と数える方法)で3(0を原点として4番目)のコンポーネントである。
更に、panel1は、frame0の上にあるノードレベル1の0オリジンで1(0を原点として2番目)のコンポーネントである(アドレス情報:0.1)。frame0は、ノードレベル0の0オリジンで0(0を原点として1番目)のコンポーネントである(アドレス情報:0)。
このようにして、図5に示すbutton3のアドレス情報は、ノードレベルとコンポーネントIDを組み合わせ、0.1.3のようになる。アドレス情報の表現形式としては、上述のノードレベルとコンポーネントIDを組み合わせるだけでなく、コンポーネント名の文字列情報を付加して構成することも可能であるが、本実施形態の説明においては、文字列情報は使わずに数値的な表現とする。
ここで図3に戻り、S311において、上述のアドレス情報を配置情報、イベント情報、リスナー登録情報と紐付け、操作記録を出力する。本実施形態では、上述の操作記録のフォーマットとして構造化言語のXML(Extensible Markup Language)を用いることとする。そして、S312において、操作記録を続けるかを判定し、記録の終わりに達するまで、S305〜S311の処理を繰り返す。
ここで、操作記録プログラムのS311において出力される操作記録を、図6を用いて説明する。図6は、構造化言語のXMLで表記した操作記録の一例を示す図である。図6に示すadd要素601及びremove要素603は、S314において得られた配置情報である。このadd要素601は、GUI画面上に追加されたGUIコンポーネントに関する情報を表している。component属性は、GUIコンポーネントのクラス名であり、name属性は、コンポーネントIDである。また、id属性は、S310において得られたアドレス情報(論理的な位置情報)を表している。そして、remove要素603は、GUI画面上から削除されたGUIコンポーネントに関する情報を表している。尚、配置情報は、追加(add)・削除(remove)の他にも可視・不可視といった情報もあり得るが説明の簡単のために省略する。
また、図6に示す602は、S308及びS309において得られた操作イベント情報及びリスナー情報に関する情報である。event要素は、操作部106で操作された表示部105上のGUI画面上に発生したイベントに関する情報を表し、type属性は、発生したイベントの種類を表している。
component属性は、GUIコンポーネントのクラス名であり、name属性は、GUIコンポーネントの内部オブジェクト名である。また、id属性は、S310において得られたアドレス情報(論理的な位置情報)、time属性は、イベントが発生した時刻を表している。
更に、S309において得られたリスナー情報は、listener属性、ActionListener属性、ItemListener属性、FocusListener属性などで表記されている。listener属性は、リスナー登録されているGUIコンポーネントのアドレス情報である。
図6示す602では、listener=“0.1”であるため、図5よりpanel1となり、panel1にリスナー登録されていることが分かる。また、ActionListener属性は、アクションリスナーが登録されているか否かの有無、ItemListener属性は、アイテムリスナーが登録されているか否かの有無である。更に、FocusListener属性は、フォーカスリスナーが登録されているか否かの有無を表している。
上述したように、操作記録システムにおけるテスト対象アプリケーション及び操作記録プログラムによれば、スクリーン座標系を使わずに、GUIコンポーネントベースの操作記録を取得することが可能になる。
次に、GUIアプリケーションのテストを自動化するための自動操作システムについて述べる。自動操作システムでは、テスト対象のGUIアプリケーションに与える外部からの影響を少なくするためにも、リモート操作を行う構成が望ましい。そのため、システム構成として、図7に示すように、テスト対象アプリケーション及び自動操作プログラムがネットワークを介して遠隔システム上にあるような構成で実施した場合を例に挙げて説明する。
図7は、本実施形態における自動操作システムのシステム構成を示す図である。この例では、自動操作システムの中核をなす自動操作プログラムを次の2種類に分ける。即ち、テスト対象のGUIアプリケーションが実行されるシステムを被試験装置と称し、被試験装置上にある自動操作プログラムを自動操作プログラムAとする。
一方、被試験装置とネットワークを介して接続されているリモートシステムをリモート試験装置と称し、リモート試験装置上にある自動操作プログラムを自動操作プログラムBとする。
図8及び図9は、本実施形態における自動操作システムの処理を示すフローチャートである。図8は、被試験装置における自動操作プログラムA及びテスト対象のGUIアプリケーションに関する処理を示すフローチャートである。一方、図9は、リモート試験装置における自動操作プログラムBの処理を示すフローチャートである。
先ず、テストを実行する前に、上述の操作記録システムで記録されたアプリケーションの操作記録を予め取得しておく。操作記録は、毎回取得する必要はなく、既に取得済みの場合は、それを利用する。
S801において、被試験装置上でテスト対象のGUIアプリケーションを実行し、S802において、自動操作プログラムAを実行する。一方、S901において、リモート試験装置上で自動操作プログラムBを起動し、S902において、操作記録を読み出す。次に、S903において、自動操作プログラムBは、操作記録を解釈して1操作分を選択し、S904において、そのアドレス情報(論理的な位置情報)とイベントの種類とを自動操作プログラムAに送信する。
次に、S803において、自動操作プログラムAは自動操作プログラムBから自動操作のための操作指示情報であるアドレス情報及びイベントの種類に関する情報を受信する。ここで、自動操作プログラムAは、被試験装置上で実行中のGUIアプリケーションにおけるGUIコンポーネントの配置情報を収集し、S804において自動操作プログラムBから送られてきたアドレス情報と一致するGUIコンポーネントを選択する。
次に、S805において、自動操作プログラムAは、選択されたGUIコンポーネントについて、可視・不可視の状態及び他のGUIコンポーネントの重なり具合(Zオーダーなどの配置順)などを調べ、操作可能であるかを検証する。S806において、操作可能であると検証された場合にはS807へ進み、現在実行中のGUIアプリケーションからGUIコンポーネントのスクリーン座標系における位置を算出する。
ここで、button2の配置が、操作記録を取得した時には、図10に示す(A)のように配置されていたが、自動操作プログラムを実行した時には、図10に示す(B)のように変更になっていたとする。
本実施形態では、操作記録時のGUIコンポーネントのアドレス情報に基づいて自動操作時に対応するGUIコンポーネントのスクリーン座標上の実際の位置を算出している。そのため、GUIコンポーネントの位置が変更されていても自動操作が可能となる。
このように、GUIコンポーネントが記録時のスクリーン座標系の位置とは異なっていても、GUIコンポーネントの論理的な位置情報(ID)が等しいGUIコンポーネントであれば操作対象とみなすことができる。
続いて、S808において、自動操作プログラムAは、操作対象となるGUIコンポーネントを、S807において算出されたスクリーン座標に対してS803で取得したイベントを発行することで操作を実行する。次に、S809において、GUIコンポーネントから発生したイベント情報を結果として自動操作プログラムBへ送信する。
自動操作プログラムBは、S905において、自動操作プログラムAから送られてきた結果を受信し、S906において、その受信されたイベント情報と操作記録に記述されている情報とを比較する。そして、S907において、比較した結果が同じであるかを判定し、同じであれば、S908へ進み、比較結果を出力する。そして、S909において、操作の終わりでなければ、S903に戻り、上述の処理を繰り返すが、操作の終わりであれば、この処理を終了する。また、S907において、比較結果が異なっていれば、この処理を終了する。
尚、自動操作システムでは、GUIアプリケーションのテストであることから、テストのシナリオ通りに処理が進まなかった場合、S907において処理を中断する。これは、GUIアプリケーションのテストでは、シナリオ通りに処理が進まないまま、続きの処理を継続すると、あるべきチェックボックスがない場合や、ないはずのボタンが表示されることがある。そのため、一つの操作に失敗しただけでも、続きのテストシナリオの継続に支障をきたすことが多いため、自動操作システムでは処理を中断している。
しかし、操作の失敗に対する対処法としては、操作の結果を無視して継続させることも可能であるし、擬似的にあるべき結果を発生させることも可能である。また、操作が失敗した時に、ユーザ(テスター)に対して次の処理を対話式に問い合わせる方法もある。
また、本実施形態では、自動操作プログラムBにおいて、操作記録の中から1操作分を自動操作プログラムAへ送るようにしたが、複数の操作をまとめた1シナリオ単位として送っても良いし、全操作記録をまとめて一度に送っても良い。
また、操作と操作の時間的な間隔などのタイミングについては説明していないが、操作記録を取得したときに各操作が行われた時刻を記録しておけば、記録された時刻から操作と操作の間隔も同じくして自動操作させることも可能である。
次に、GUIアプリケーションの操作記録を静的に分析することによりGUIコンポーネントの重なりを検出する記録分析システムを説明する。この記録分析システムは、図2に示す記録分析プログラムが含まれ、図11は、記録分析プログラムの手順を示すフローチャートである。
先ず、図12に示すようなGUI画面を持つアプリケーションを起動する。ここで、GUIコンポーネントのbutton3は、button2の背面に完全に隠れており操作できない状態になっている。尚、図12では、button3が背面にあることを分かりやすくするため、説明の便宜上、背面に完全に隠さず右下へずらして描かれている。
ユーザがGUIアプリケーションのテストを行うため、上述の操作記録システムを使ってGUI画面上にある全てのユーザ対話型のGUIコンポーネントに対して必要な操作の全てを網羅的に行う。若しくは、ユーザが操作するのではなく、GUI画面全体を網羅的にクリックするツールを利用して自動操作を行わせても良い。その場合、操作の最小単位である1ドット単位で自動的にクリック操作を行わせることでGUI画面全体を網羅することができる。
ここでは、ユーザがGUI画面を操作する方法をとったとして、ユーザがbutton0、button1、button2をクリック操作する。button3は、button2の背面に完全に隠れているので、ユーザはbutton3を目視で確認できないため操作できない。
上述の操作の結果、図13に示すようなXMLで記述された情報を得ることができる。アプリケーションが生成したGUIコンポーネントがadd要素1401として記述され、ユーザ操作がevent要素1402として記述されている。
説明を簡単にするため、add要素1401は、ユーザ対話側のGUIコンポーネントが配置された時の情報であり、add要素1401が生成された時は、GUIコンポーネントが配置(コンテナへの追加)及び可視化されて操作可能な状態であるとする。また、event要素1402は、ユーザ操作時のGUIコンポーネントの情報とする。
ここで、記録分析プログラムは、S1201において、上述した操作記録を読み取り、S1202及びS1203において、add要素1401及びevent要素1402からアドレス情報を取得する。そして、S1204において、これら2つのアドレス情報を比較する。
比較の結果、GUIコンポーネントのbutton3は、add要素1401から取り出されたアドレス情報内には、0.1.3として記録されており、確かにGUI画面上に生成されていることがわかる。しかし、ユーザ操作の記録であるevent要素1402には、0.1.3のアドレス情報の記述がない。そのため、このbutton3は、操作されていないGUIコンポーネントであることがわかる。
操作されなかった原因は、そもそも不要なGUIコンポーネントであるか、必要な処理が未実装か、若しくは、ユーザの操作漏れなどが考えられるため、S1205において、その結果を出力する。
多くのユーザ対話型のGUIコンポーネントは、操作イベントを受け取り、イベントの種類に応じて何らかの処理を実行する仕組みになっている。そのため、GUI画面を網羅的に操作しているにも関わらず操作イベントが発生しないGUIコンポーネントは、上述のような問題を抱えている可能性がある。
以上のように、本実施形態による操作記録はGUIコンポーネントの重なりを検出する分析にも利用できる。
続いて、GUIアプリケーションの操作記録を静的に分析することによりリスナー登録されていないコンポーネントを検出する記録分析システム(静的解析)を説明する。この記録分析システム(静的解析)は、図2に示す記録分析プログラムが含まれ、図14は、記録分析プログラムの手順を示すフローチャートである。
先ず、図12に示すようなGUI画面を持つアプリケーションを起動する。ここで、ユーザがGUIアプリケーションのテストを行うため、上述した操作記録システムを使ってGUI画面上にある全てのユーザ対話型のGUIコンポーネントに対して必要な操作の全てを網羅的に行う。若しくは、ユーザが操作するのではなく、GUI画面全体を網羅的にクリックするツールを利用して自動操作を行わせても良い。この場合、操作の最小単位である1ドット単位で自動的にクリック操作を行わせることでGUI画面全体を網羅することができる。
操作の結果、図15に示すようなXMLで記述された情報が得られる。尚、add要素1601は、図13に示すadd要素1401と同じである。ここで、リスナー情報は、event要素1602の中のActionListener属性、ItemListener属性、FocusListener属性として記述されている。そして、ActionListener属性の内容は、リスナーが受信するようになっていれば、trueとなる。受信するようになっていなければ、falseとなる。また同様に、ItemListener属性やFocusListener属性が記録されている。
S1501において、記録分析プログラムは、操作記録を読み込み、S1502では、event要素1602からcomponent属性の情報を取得し、S1503では、event要素1602からリスナー情報を取得する。図16は、GUIコンポーネント種別の必須リスナーのテーブルを示す図である。ここでリスナーとは、GUIアプリケーション内の種々のイベントを処理するための仕組みであり、ユーザ対話型のGUIコンポーネントには操作イベントに応じたリスナーが登録されている必要がある。
必須リスナーとは、特にユーザ対話型のGUIコンポーネントにおいて、その種類毎に各機能を実現するために最低限必要とするリスナーのことである。GUIアプリケーションは、対応するリスナーを登録することにより操作イベントを検知することができる。
次に、S1504において、S1502で取得したcomponent属性の情報を図16に示すテーブルのComponent Class列から探し、対応するListener Nameを取得する。そして、S1505において、取得されたListener NameがS1503で取得したevent要素1602においてtrueとなっているか判定する。
必須リスナーが登録されていないGUIコンポーネントは、操作イベントのリスナーがいないため、操作しても何の処理もされないので、S1506において、その結果を出力する。例えば、図15に示すbutton1は、component属性からjava.awt.Buttonという種類のコンポーネントであることが分かる。更に、図16を参照すると、対応するリスナーとして、必ずActionListenerが登録されている必要があることがわかる。
しかし、図15に示すActionListener属性の内容は、false(1603)であり、リスナー登録がされていないことがわかる。従って、そもそも不要なGUIコンポーネントであるか、必要な処理が未実装などの理由が考えられるため、その結果を出力する。
これにより、ユーザはその出力結果に基づいて、不要なGUIコンポーネントであればプログラム中から削除することができるし、また必要な処理が未実装であれば、その処理を実装することができる。
操作記録システム(静的解析)によれば、GUIコンポーネントのリスナー登録されていないコンポーネントを検出する分析にも利用できる。
本実施形態によれば、GUIアプリケーションのテスト自動化システムにおいて、スクリーン座標系ではなくGUIコンポーネントに基づく記録方法を用いることにより、画面サイズやデザイン変更に柔軟に対応可能な操作記録を得ることができる。そのため、画面サイズやデザイン変更を行う際に、操作記録を取り直す手間やコストが低減される。また、前記記録方法により取得した情報によりGUIプログラムの分析を容易せしめる効果がある。更に、操作記録を分析することによりGUIプログラムの不具合を発見することが可能になる。
[他の実施形態]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
Claims (6)
- GUIアプリケーションによりGUI画面上に表示された複数のコンポーネントに対するユーザの操作又は自動操作を記録した操作記録を用いてソフトウェアの開発を支援するソフトウェア開発支援装置であって、
前記ユーザの操作又は自動操作が行われたコンポーネントの前記GUI画面上の配置を示す論理的な位置情報を生成する生成手段と、
前記生成手段により生成された論理的な位置情報を前記操作が行われたコンポーネントの操作記録として記録する操作記録手段と、
を有することを特徴とするソフトウェア開発支援装置。 - 前記操作記録手段により記録された論理的な位置情報に配置されたコンポーネントが操作可能であるかを他のコンポーネントとの重なり具合を元に検証する検証手段を更に有することを特徴とする請求項1に記載のソフトウェア開発支援装置。
- 前記生成手段は、前記複数のコンポーネントの前記GUI画面上の配置順及び親子関係により木構造の情報として前記操作が行われたコンポーネントの論理的な位置情報を生成することを特徴とする請求項1に記載のソフトウェア開発支援装置。
- 前記操作記録は、各操作が行われた時間的な間隔や各操作の時刻を示す情報を更に含み、該操作記録を用いて前記複数のコンポーネントの検証を行うことを特徴とする請求項1又は2に記載のソフトウェア開発支援装置。
- GUIアプリケーションによりGUI画面上に表示された複数のコンポーネントに対するユーザの操作又は自動操作を記録した操作記録を用いてソフトウェアの開発を支援するソフトウェア開発支援装置の処理方法であって、
生成手段が、前記ユーザの操作又は自動操作が行われたコンポーネントの前記GUI画面上の配置を示す論理的な位置情報を生成する生成工程と、
操作記録手段が、前記生成工程において生成された論理的な位置情報を前記操作が行われたコンポーネントの操作記録として記録する操作記録工程と、
を有することを特徴とするソフトウェア開発支援装置の処理方法。 - コンピュータを、請求項1乃至4の何れか1項に記載のソフトウェア開発支援装置の各手段として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010156183A JP2012018583A (ja) | 2010-07-08 | 2010-07-08 | ソフトウェア開発支援装置及びその処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010156183A JP2012018583A (ja) | 2010-07-08 | 2010-07-08 | ソフトウェア開発支援装置及びその処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012018583A true JP2012018583A (ja) | 2012-01-26 |
Family
ID=45603781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010156183A Withdrawn JP2012018583A (ja) | 2010-07-08 | 2010-07-08 | ソフトウェア開発支援装置及びその処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012018583A (ja) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015049520A (ja) * | 2013-08-29 | 2015-03-16 | 富士通株式会社 | シナリオ生成プログラム、シナリオ実行プログラム、シナリオ生成方法、シナリオ実行方法、シナリオ生成装置、及びシナリオ実行装置 |
JP2016071397A (ja) * | 2014-09-26 | 2016-05-09 | 株式会社野村総合研究所 | テスト実行装置、テスト実行方法およびコンピュータプログラム |
JP2017111798A (ja) * | 2015-12-18 | 2017-06-22 | 富士通株式会社 | イベント駆動型ソフトウェア試験 |
JP2017219978A (ja) * | 2016-06-06 | 2017-12-14 | グレープシティ株式会社 | プログラム自動テストのための方法およびプログラム |
JP2018206288A (ja) * | 2017-06-09 | 2018-12-27 | 富士ゼロックス株式会社 | 情報処理装置及びプログラム |
JP2019079426A (ja) * | 2017-10-26 | 2019-05-23 | 株式会社東芝 | プラント監視システムの試験支援装置、その試験支援方法、及びその試験支援プログラム |
US10300370B1 (en) | 2015-10-06 | 2019-05-28 | Google Llc | Advanced gaming and virtual reality control using radar |
US10409385B2 (en) | 2014-08-22 | 2019-09-10 | Google Llc | Occluded gesture recognition |
US10496182B2 (en) | 2015-04-30 | 2019-12-03 | Google Llc | Type-agnostic RF signal representations |
JP2020013400A (ja) * | 2018-07-19 | 2020-01-23 | 株式会社野村総合研究所 | 装置およびコンピュータプログラム |
JP2020046897A (ja) * | 2018-09-19 | 2020-03-26 | みずほ情報総研株式会社 | テスト支援システム、テスト支援方法及びテスト支援プログラム |
US10642367B2 (en) | 2014-08-07 | 2020-05-05 | Google Llc | Radar-based gesture sensing and data transmission |
US10664059B2 (en) | 2014-10-02 | 2020-05-26 | Google Llc | Non-line-of-sight radar-based gesture recognition |
JP2020166773A (ja) * | 2019-03-29 | 2020-10-08 | 日本電気株式会社 | データ記録装置、データ記録方法およびプログラム |
JP2021033409A (ja) * | 2019-08-19 | 2021-03-01 | Necフィールディング株式会社 | 業務の自動実行システムおよび方法 |
US10936085B2 (en) | 2015-05-27 | 2021-03-02 | Google Llc | Gesture detection and interactions |
US10948996B2 (en) | 2014-06-03 | 2021-03-16 | Google Llc | Radar-based gesture-recognition at a surface of an object |
US11140787B2 (en) | 2016-05-03 | 2021-10-05 | Google Llc | Connecting an electronic component to an interactive textile |
US11169988B2 (en) | 2014-08-22 | 2021-11-09 | Google Llc | Radar recognition-aided search |
US11709552B2 (en) | 2015-04-30 | 2023-07-25 | Google Llc | RF-based micro-motion tracking for gesture tracking and recognition |
-
2010
- 2010-07-08 JP JP2010156183A patent/JP2012018583A/ja not_active Withdrawn
Cited By (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10222949B2 (en) | 2013-08-29 | 2019-03-05 | Fujitsu Limited | Scenario generation method in which various data are associated with each other, scenario execution method in which various data are associated with each other, scenario generation device, and scenario execution device |
JP2015049520A (ja) * | 2013-08-29 | 2015-03-16 | 富士通株式会社 | シナリオ生成プログラム、シナリオ実行プログラム、シナリオ生成方法、シナリオ実行方法、シナリオ生成装置、及びシナリオ実行装置 |
US10948996B2 (en) | 2014-06-03 | 2021-03-16 | Google Llc | Radar-based gesture-recognition at a surface of an object |
US10642367B2 (en) | 2014-08-07 | 2020-05-05 | Google Llc | Radar-based gesture sensing and data transmission |
US11169988B2 (en) | 2014-08-22 | 2021-11-09 | Google Llc | Radar recognition-aided search |
US11816101B2 (en) | 2014-08-22 | 2023-11-14 | Google Llc | Radar recognition-aided search |
US11221682B2 (en) | 2014-08-22 | 2022-01-11 | Google Llc | Occluded gesture recognition |
US10409385B2 (en) | 2014-08-22 | 2019-09-10 | Google Llc | Occluded gesture recognition |
US12153571B2 (en) | 2014-08-22 | 2024-11-26 | Google Llc | Radar recognition-aided search |
US10936081B2 (en) | 2014-08-22 | 2021-03-02 | Google Llc | Occluded gesture recognition |
JP2016071397A (ja) * | 2014-09-26 | 2016-05-09 | 株式会社野村総合研究所 | テスト実行装置、テスト実行方法およびコンピュータプログラム |
US10664059B2 (en) | 2014-10-02 | 2020-05-26 | Google Llc | Non-line-of-sight radar-based gesture recognition |
US11163371B2 (en) | 2014-10-02 | 2021-11-02 | Google Llc | Non-line-of-sight radar-based gesture recognition |
US11709552B2 (en) | 2015-04-30 | 2023-07-25 | Google Llc | RF-based micro-motion tracking for gesture tracking and recognition |
US10496182B2 (en) | 2015-04-30 | 2019-12-03 | Google Llc | Type-agnostic RF signal representations |
US12340028B2 (en) | 2015-04-30 | 2025-06-24 | Google Llc | RF-based micro-motion tracking for gesture tracking and recognition |
US10936085B2 (en) | 2015-05-27 | 2021-03-02 | Google Llc | Gesture detection and interactions |
US10459080B1 (en) | 2015-10-06 | 2019-10-29 | Google Llc | Radar-based object detection for vehicles |
US11256335B2 (en) | 2015-10-06 | 2022-02-22 | Google Llc | Fine-motion virtual-reality or augmented-reality control using radar |
US10768712B2 (en) | 2015-10-06 | 2020-09-08 | Google Llc | Gesture component with gesture library |
US12117560B2 (en) | 2015-10-06 | 2024-10-15 | Google Llc | Radar-enabled sensor fusion |
US10823841B1 (en) | 2015-10-06 | 2020-11-03 | Google Llc | Radar imaging on a mobile computing device |
US10908696B2 (en) | 2015-10-06 | 2021-02-02 | Google Llc | Advanced gaming and virtual reality control using radar |
US12085670B2 (en) | 2015-10-06 | 2024-09-10 | Google Llc | Advanced gaming and virtual reality control using radar |
US11698438B2 (en) | 2015-10-06 | 2023-07-11 | Google Llc | Gesture recognition using multiple antenna |
US11698439B2 (en) | 2015-10-06 | 2023-07-11 | Google Llc | Gesture recognition using multiple antenna |
US10540001B1 (en) | 2015-10-06 | 2020-01-21 | Google Llc | Fine-motion virtual-reality or augmented-reality control using radar |
US11132065B2 (en) | 2015-10-06 | 2021-09-28 | Google Llc | Radar-enabled sensor fusion |
US11693092B2 (en) | 2015-10-06 | 2023-07-04 | Google Llc | Gesture recognition using multiple antenna |
US10379621B2 (en) | 2015-10-06 | 2019-08-13 | Google Llc | Gesture component with gesture library |
US10310621B1 (en) | 2015-10-06 | 2019-06-04 | Google Llc | Radar gesture sensing using existing data protocols |
US11175743B2 (en) | 2015-10-06 | 2021-11-16 | Google Llc | Gesture recognition using multiple antenna |
US10300370B1 (en) | 2015-10-06 | 2019-05-28 | Google Llc | Advanced gaming and virtual reality control using radar |
US11656336B2 (en) | 2015-10-06 | 2023-05-23 | Google Llc | Advanced gaming and virtual reality control using radar |
US10705185B1 (en) | 2015-10-06 | 2020-07-07 | Google Llc | Application-based signal processing parameters in radar-based detection |
US11592909B2 (en) | 2015-10-06 | 2023-02-28 | Google Llc | Fine-motion virtual-reality or augmented-reality control using radar |
US11385721B2 (en) | 2015-10-06 | 2022-07-12 | Google Llc | Application-based signal processing parameters in radar-based detection |
US11481040B2 (en) | 2015-10-06 | 2022-10-25 | Google Llc | User-customizable machine-learning in radar-based gesture detection |
JP2017111798A (ja) * | 2015-12-18 | 2017-06-22 | 富士通株式会社 | イベント駆動型ソフトウェア試験 |
US11140787B2 (en) | 2016-05-03 | 2021-10-05 | Google Llc | Connecting an electronic component to an interactive textile |
JP2017219978A (ja) * | 2016-06-06 | 2017-12-14 | グレープシティ株式会社 | プログラム自動テストのための方法およびプログラム |
JP2018206288A (ja) * | 2017-06-09 | 2018-12-27 | 富士ゼロックス株式会社 | 情報処理装置及びプログラム |
JP7020863B2 (ja) | 2017-10-26 | 2022-02-16 | 株式会社東芝 | プラント監視システムの試験支援装置、その試験支援方法、及びその試験支援プログラム |
JP2019079426A (ja) * | 2017-10-26 | 2019-05-23 | 株式会社東芝 | プラント監視システムの試験支援装置、その試験支援方法、及びその試験支援プログラム |
JP2020013400A (ja) * | 2018-07-19 | 2020-01-23 | 株式会社野村総合研究所 | 装置およびコンピュータプログラム |
JP7190834B2 (ja) | 2018-07-19 | 2022-12-16 | 株式会社野村総合研究所 | 装置およびコンピュータプログラム |
JP2020046897A (ja) * | 2018-09-19 | 2020-03-26 | みずほ情報総研株式会社 | テスト支援システム、テスト支援方法及びテスト支援プログラム |
JP2020166773A (ja) * | 2019-03-29 | 2020-10-08 | 日本電気株式会社 | データ記録装置、データ記録方法およびプログラム |
JP7306022B2 (ja) | 2019-03-29 | 2023-07-11 | 日本電気株式会社 | データ記録装置、データ記録方法およびプログラム |
JP2021033409A (ja) * | 2019-08-19 | 2021-03-01 | Necフィールディング株式会社 | 業務の自動実行システムおよび方法 |
JP7092364B2 (ja) | 2019-08-19 | 2022-06-28 | Necフィールディング株式会社 | 業務の自動実行システムおよび方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2012018583A (ja) | ソフトウェア開発支援装置及びその処理方法 | |
US7627821B2 (en) | Recording/playback tools for UI-based applications | |
US8645912B2 (en) | System and method for use in replaying software application events | |
US10853232B2 (en) | Adaptive system for mobile device testing | |
US10324828B2 (en) | Generating annotated screenshots based on automated tests | |
US8826230B1 (en) | Graphical model for test case viewing, editing, and reporting | |
JP3008872B2 (ja) | Guiシステム自動操作装置および操作マクロ実行装置 | |
US9465725B2 (en) | Software defect reporting | |
US8392886B2 (en) | System, program product, and methods to enable visual recording and editing of test automation scenarios for web application | |
US8943424B2 (en) | Dynamic interface component control support | |
US8612806B2 (en) | Systems and methods for recording user interactions within a target application | |
US20140132571A1 (en) | Automated testing of gesture-based applications | |
US9037913B2 (en) | Dynamic event generation for user interface control | |
JP2007172377A (ja) | Webページにおける状態遷移解析手法 | |
CN102279737A (zh) | 用于分析过程设计的系统和方法 | |
WO2012086217A1 (ja) | 稼働ログ収集方法および装置 | |
KR101460860B1 (ko) | 상태 기반의 테스트 시나리오 모델을 이용한 gui 테스트 장치 및 방법 | |
JP4896909B2 (ja) | シナリオ生成装置及びプログラム | |
JP6739599B1 (ja) | 情報処理プログラム、情報処理方法、及び情報処理装置 | |
JP5747751B2 (ja) | リグレッションテスト支援プログラム及びリグレッションテスト支援装置 | |
KR100809291B1 (ko) | 임베디드 소프트웨어의 api 테스트 방법 및 장치 | |
JP4681673B1 (ja) | 動作検証装置、動作検証方法および動作検証プログラム | |
CN112860543A (zh) | 检测页面运行的方法和电子设备 | |
KR102780526B1 (ko) | 테스트 자동화 시스템 및 시스템의 동작방법 | |
CN118519920B (zh) | 自动化测试方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20131001 |