JP2010186332A - テスト実行システム - Google Patents

テスト実行システム Download PDF

Info

Publication number
JP2010186332A
JP2010186332A JP2009030175A JP2009030175A JP2010186332A JP 2010186332 A JP2010186332 A JP 2010186332A JP 2009030175 A JP2009030175 A JP 2009030175A JP 2009030175 A JP2009030175 A JP 2009030175A JP 2010186332 A JP2010186332 A JP 2010186332A
Authority
JP
Japan
Prior art keywords
execution
test
test script
trigger
script
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.)
Granted
Application number
JP2009030175A
Other languages
English (en)
Other versions
JP5174706B2 (ja
Inventor
Shinjiro Mizutsu
伸二郎 水津
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Software Engineering Co Ltd
Original Assignee
Hitachi Software Engineering Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Software Engineering Co Ltd filed Critical Hitachi Software Engineering Co Ltd
Priority to JP2009030175A priority Critical patent/JP5174706B2/ja
Publication of JP2010186332A publication Critical patent/JP2010186332A/ja
Application granted granted Critical
Publication of JP5174706B2 publication Critical patent/JP5174706B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

【課題】複数のテスト実行マシンからGUIアプリケーションについての複数のテストスクリプトを適正に実行可能なテスト実行システムを提供する。
【解決手段】複数のテスト実行マシン1と、マシン1上でのGUIへの操作に応答するサーバ2と、GUIのテストスクリプトを格納するDB3と、GUIへの所定の操作が登録された操作DB4と、テスト結果に誤りを生じさせる複数のテストスクリプトの並列実行を回避するように排他制御を行う排他制御サーバ5と、を具備し、テスト実行マシン1が操作DB4に登録されている、テストスクリプト内の操作が設定された実行要求をサーバ5に送信し許可を得てこのテストスクリプトを実行し、排他制御サーバ5が、実行中のテストスクリプト内の操作の応答に誤りを生じさせる虞のある同時実行禁止操作を格納し、実行要求内の操作が同時実行禁止操作を含んでいないときに実行許可通知を応答として返信する構成を有している。
【選択図】図1

Description

本発明は、GUI(Graphical User
Interface)アプリケーションプログラム(以下、単にGUIアプリケーションという。)のテストスクリプトを実行するテスト実行システムに関するものである。
GUIへの操作手順をスクリプト内に表現してコンピュータ上で実行させることによって、この操作手順の実行をあたかも人が行ったもののように実現することができる。この技術を利用することによって、従来は人が行っていたGUIアプリケーションのテストを、コンピュータに実行させることができる(例えば、特許文献1、2参照。)。具体的には、テスト内容の操作手順をテストスクリプト内に記載してコンピュータ上で実行させることによって可能となる。
一方、テストスケジュールに従って一連のテストスクリプトを連続的に実行し、テストを纏めて行うことが可能なテストスクリプト一括実行装置が知られている。また、このテストスクリプト一括実行装置を内蔵するテスト実行マシンを備え、複数のGUIアプリケーションのテストをテスト実行マシン上で一括して行うことが可能なテスト実行システムも知られている。
図15は、従来のテスト実行システムの構成を示すブロック図である。従来のテスト実行システムは、ネットワーク200を介して通信可能に接続された、テスト実行マシン100、テスト対象GUIアプリケーションサーバ2、及びテストスクリプトデータベース3を具備する。ここで、テスト対象GUIアプリケーションサーバ2は、Webサーバ等として構成され、参照、更新等が可能な共有データベース21を備える。また、テストスクリプトデータベース3には、テストスクリプトが登録されている。
テスト実行マシン100は、テストスクリプト一括実行装置170、操作入力用の入力部120、表示部130、テスト対象GUIアプリケーションクライアント部140、テストスクリプト実行部150、及び送受信部160を備える。テスト対象GUIアプリケーションクライアント部140はテスト対象のGUIアプリケーションのクライアントとなり、テストスクリプト実行部150はテストスクリプトを実行可能となっている。
また、テストスクリプト一括実行装置170は、テストスケジュール更新部171、結果出力部172、テストスケジュールを格納するテストスケジュールデータベース173、及び実行結果データベース174を備える。テストスケジュール更新部171は、テストスケジュールデータベース173を更新する。また、実行結果データベース174には、一括実行中に各テストスクリプトの実行結果が格納されていく。結果出力部172は、実行結果を実行結果データベース174に保存すると共に出力部130に出力して表示させる。
このような構成のテスト実行システムにおいて、テストスクリプト一括実行装置170は、入力部120を介した操作で一括実行を開始し、テストスケジュールに従って以下の手順を繰り返す。まず、テストスクリプト一括実行装置170は、テストスケジュールに従ってテスト対象GUIアプリケーションクライアント部140にテスト対象のGUIアプリケーションの作動を要求する。
次に、テストスクリプト一括実行装置170は、テストスケジュールに従ってテストスケジュールに従ってテストスクリプト実行部150にテストスクリプトの実行を要求する。次に、テストスクリプト一括実行装置170は、テストスクリプトの実行完了後に実行結果を内部の実行結果データベース174に保存する。
次に、テストスクリプト一括実行装置170のテストスケジュール更新部171は、対応するテストスクリプトの実行状態が終了状態になるように、テストスケジュールデータベース173を更新する。全テストスクリプトに対して以上の処理が終了したとき、テストスクリプト一括実行装置170の結果出力部172は、実行結果データベース174から実行結果を表示部130に出力して表示させる。
このように、従来のテスト実行システムによって一括実行が可能になったが、近年増えてきた大規模システムの開発においては、種々のテストが必要となり、大量のテストスクリプトを実行する必要が生じている。大量のテストスクリプトの実行に要する膨大な時間を短縮するため、テストスクリプトを複数のテストスクリプト一括実行装置170に分担させて実効させることが検討されてきている。この場合、各テストスクリプト一括実行装置170は、分担されたテストスケジュールに従ってテストを実行する。
特開2005−266954号公報 特開2007−102654号公報
しかしながら、従来のテスト実行システムでは、テストスクリプトを複数のテスト実行マシンから適正に実行できない場合があるという問題を有していた。具体的には、共有データベースを複数のクライアントが参照したり更新したりするGUIアプリケーションに対しては、テスト中の参照と更新のタイミングによっては正しい結果が得られない場合がある。例えば、並列して実行されたとき、あるテストスクリプトにおける共有データベースを参照するテスト操作で、他のテストスクリプトによって更新された内容を参照することとなる場合がある。
各テストスクリプトの処理時間が正確に得られるのであれば、テスト結果に影響しうるテストスクリプトが同時に実行されないように、テストスケジュールを調整することができる。しかしながら、実際には、ネットワークやテスト対象アプリケーションの負荷状態等の様々な要因により、テストスクリプトの実行間はその都度変動する。そのため、上記のようなテストスクリプトの処理時間に基づいてテストスケジュールを調整することでは、問題は解消しない。
以上の現状に鑑み、本発明の目的は、複数のテスト実行マシンからGUIアプリケーションについての複数のテストスクリプトを適正に実行可能なテスト実行システムを提供することにある。
上記の課題を解決すべく、本発明は以下の構成を提供する。
請求項1に係る発明は、相互に通信可能に接続された、テスト対象のGUIアプリケーションが表示するGUIへの各操作が登録された操作データベースと、前記GUIアプリケーションのテスト内容をなす前記各操作が記録された複数のテストスクリプトを格納するテストスクリプトデータベースと、前記テストスクリプトデータベース内の所定の1つ以上の前記テストスクリプトを一括して実行可能な複数のテスト実行マシンと、前記GUIへの操作に応答するテスト対象GUI操作応答サーバと、前記複数のテスト実行マシン間で行われる前記テストスクリプトの実行をテスト結果に誤りが生じないように排他制御する排他制御サーバと、を具備するテスト実行システムであって、
前記テスト実行マシンは、
一括して実行する前記テストスクリプトのテストスケジュールを更新可能に格納し、前記テストスケジュールに従って、実行予定の前記テストスクリプトが前記テストスケジュールから無くなるまで、実行する前記テストスクリプトについての実行要求であってこのテストスクリプトにおける前記GUIへの前記操作のうちの前記操作データベースに登録されているものを含む実行要求を作成して前記排他制御サーバに送信し、前記排他制御サーバから実行が許可されるか否かの応答を受信し、許可の応答を受信するまで、同一の前記テストスクリプトについての前記実行要求の送信と前記応答の受信、又は次の前記テストスクリプトについての前記実行要求の作成及び送信と前記応答の受信を繰り返し、許可の応答を受信したときに許可された前記テストスクリプトを実行し、前記テストスクリプトの実行が終了したときに前記テストスケジュールを更新して実行終了通知を前記排他制御サーバに送信し、
前記排他制御サーバは、
前記操作データベースに登録された操作のうちの、他の操作の応答に誤りを生じさせる第1の操作と他の操作の実行によって応答に誤りを生じる第2の操作とからなるトリガ操作が登録されているトリガ操作データベースと、
前記第1の操作によって応答に誤りを生じる操作と前記第2の操作のテスト結果に誤りを生じさせる操作とからなるトリガ関連操作が登録されているトリガ関連操作データベースと、
先に実行が許可された前記テストスクリプト内の前記トリガ関連操作からなる同時実行禁止操作が更新可能に設定された同時実行禁止操作データベースと、
受信した実行要求内の前記各操作と前記同時実行禁止操作データベース内の前記各同時実行禁止操作とで一致するものの有無を判断し、一致するものがある場合に実行を許可しない通知を前記応答として返信し、一致するものがない場合に実行を許可する実行許可通知を前記応答として返信し、前記実行許可通知の送信に先立ち、受信した実行要求内の各操作についての前記トリガ関連操作を前記トリガ関連操作データベースから検索し前記同時実行禁止操作として前記同時実行禁止操作データベースに追加して設定する実行可能性判定部と、
前記実行終了通知に応答して対応する前記同時実行禁止操作を同時実行禁止操作データベースから削除する更新部と、を備えることを特徴とする。
請求項1に係る発明によれば、このように構成された操作データベースと、テストスクリプトデータベースと、複数のテスト実行マシンと、テスト対象GUI操作応答サーバと、排他制御サーバと、を具備するテスト実行システムにおいて、テスト実行マシンは、一括して実行するテストスクリプトのテストスケジュールを更新可能に格納し、テストスケジュールに従って、実行予定のテストスクリプトがテストスケジュールから無くなるまで、実行するテストスクリプトについての実行要求であってこのテストスクリプトにおけるGUIへの操作のうちの操作データベースに登録されているものを含む実行要求を作成して排他制御サーバに送信し、排他制御サーバから実行が許可されるか否かの応答を受信し、許可の応答を受信するまで、同一のテストスクリプトについての実行要求の送信と応答の受信、又は次のテストスクリプトについての実行要求の作成及び送信と応答の受信を繰り返し、許可の応答を受信したときに許可されたテストスクリプトを実行し、テストスクリプトの実行が終了したときにテストスケジュールを更新して実行終了通知を排他制御サーバに送信し、排他制御サーバは、操作データベースに登録された操作のうちの、他の操作の応答に誤りを生じさせる第1の操作と他の操作の実行によって応答に誤りを生じる第2の操作とからなるトリガ操作が登録されているトリガ操作データベースと、第1の操作によって応答に誤りを生じる操作と第2の操作のテスト結果に誤りを生じさせる操作とからなるトリガ関連操作が登録されているトリガ関連操作データベースと、先に実行が許可されたテストスクリプト内のトリガ関連操作からなる同時実行禁止操作が更新可能に設定された同時実行禁止操作データベースと、受信した実行要求内の各操作と同時実行禁止操作データベース内の各同時実行禁止操作とで一致するものの有無を判断し、一致するものがある場合に実行を許可しない通知を応答として返信し、一致するものがない場合に実行を許可する実行許可通知を応答として返信し、実行許可通知の送信に先立ち、受信した実行要求内の各操作についてのトリガ関連操作をトリガ関連操作データベースから検索し同時実行禁止操作として同時実行禁止操作データベースに追加して設定する実行可能性判定部と、実行終了通知に応答して対応する同時実行禁止操作を同時実行禁止操作データベースから削除する更新部と、を備えるため、複数のテスト実行マシンからGUIアプリケーションについての複数のテストスクリプトを適正に実行可能なテスト実行システムを実現することができる。
本発明によるテスト実行システムのシステム構成を示すブロック図である。 テスト対象のGUIアプリケーションによって表示されるGUI画面の模式図である。 操作データベース4のデータ構成を示す説明図である。 図2のGUIを表示する文字列登録用のGUIアプリケーションのテストスクリプトについての説明図である。 テストスケジュールDB114のデータ構成についての説明図である。 テストスクリプト一括実行ユニット11が排他制御サーバ5に送信するTS実行要求の通信フレームについての説明図である。 トリガ操作データベース54のデータ構成についての説明図である。 トリガ関連操作データベース55のデータ構成についての説明図である。 同時実行禁止操作DB56のデータ構成についての説明図である。 各テスト実行マシンが行うテストスクリプト一括実行処理についてのフローチャートである。 テストスクリプト一括実行ユニットが行うテストスクリプト実行要求作成処理についてのフローチャートである。 各テスト実行マシンからの所定のアクセスに応答して排他制御サーバが行うTS実行要求応答処理についてのフローチャートである。 排他制御サーバが行う実行可能性判断処理についてのフローチャートである。 本テスト実行システムによる排他制御についてのタイムチャートである。 従来のテスト実行システムの構成を示すブロック図である。
以下、本発明によるテスト実行システムの実施形態について説明する。図1は、本発明によるテスト実行システムのシステム構成を示すブロック図である。本テスト実行システムは、複数のテスト実行マシン1と、テスト対象GUI(Graphical User Interface)操作応答サーバ2と、テストスクリプトデータベース(以下、テストスクリプトDBという。)3と、操作データベース(以下、操作DBという。)4と、排他制御サーバ5と、を具備する。ここで、これら1〜5は、ネットワーク200を介して通信可能に接続されている。
この構成の下で、テスト対象のGUIアプリケーションがGUIをテスト実行マシン1に表示し、テスト内容がプログラミングされたテストスクリプトがテスト実行マシン1上でテスト操作を実行する。ここで、GUIの操作ボタン等がクライアント(以下、GUIクライアントという。)になり、テスト対象GUI操作応答サーバ2がサーバとしてGUIへのテスト操作に応答する。テストスクリプトDB3は、1つ以上の上記のテストスクリプトを格納し、所定のテスト実行マシン1からアクセス可能となっている。操作DB4には、GUIクライアントへの所定の操作がテストスクリプトの記法で登録されている。排他制御サーバ5は、排他制御を行って、時間的な重複部分があるように実行された場合にテスト結果に誤りが生ずる虞のある複数のテストスクリプトの実行を禁止する。以下、複数のテストスクリプトが時間的な重複部分があるように実行されること、又は複数のテストが時間的な重複部分があるように行われることを、「並列実行」という。
図2は、テスト対象のGUIアプリケーションによって表示されるGUI画面の模式図である。このGUIアプリケーションは、クライアント/サーバ型の文字登録用アプリケーションであり、ウィンドウ、ボタン、エディットボックス、コンボボックス等のオブジェクトがGUIクライアントになる。これらのオブジェクトは、Name属性、Caption属性等のプロパティを持ち、プロパティを介してオブジェクトが指定可能となっている。テストスクリプトには、プロパティを介してオブジェクト(GUIクライアント)が指定され、テストの内容をなすテスト操作が記述されている。
テスト実行マシン1は、テストスクリプト一括実行ユニット11、入力部12、表示部13、テスト対象GUIアプリケーションクライアント部14、テストスクリプト実行部15、及び送受信部16を備える。ここで、テストスクリプト一括実行ユニット11は、複数のテストスクリプトの一括した実行(以下、一括実行という。)を可能にするための管理、制御等を行うようになっている。また、入力部12を介してテストスクリプト一括実行ユニット11に対する操作入力が可能となり、テストスクリプト一括実行ユニット11からテストの実行結果が表示部13に出力されて表示される。さらに、テスト対象GUIアプリケーションクライアント部14は、テストスクリプト一括実行ユニット11からの要求に応答して、テスト対象のGUIアプリケーションに作動を要求するクライアントである。また、テストスクリプト実行部15は、テストスクリプト一括実行ユニット11からの要求に応答して、テストスクリプトDB3内の所定のテストスクリプトの実行が可能となっている。
テストスクリプト一括実行ユニット11は、テストスケジュールデータベース(以下、テストスケジュールDBという。)114、及び実行結果データベース(以下、実行結果DBという。)115を有する。ここで、テストスケジュールDB114には、テストスクリプトの実行のスケジュール(以下、実行スケジュールという。)が格納される。また、実行結果DB115には、各テストスクリプトの実行結果が格納される。
テストスクリプト一括実行ユニット11は、また、テストスクリプト実行要求作成部111、テストスケジュール更新部112、及び結果出力部113を有する。ここで、テストスクリプト実行要求作成部111は、テストスクリプトの実行要求(以下、TS実行要求という。)の通信フレームを作成して排他制御サーバ5に送信する。もって、テストスクリプト実行要求作成部111は、TS実行要求に対する応答を介して実行の可否を確認することができる。また、テストスケジュール更新部112は、テストスケジュールDB114内の実行スケジュールの追加、削除、更新等(以下、単に更新という。)を行う。この更新は、具体的には、新たな実行スケジュールの追加、古い実行スケジュールの削除等、実行スケジュール内の、テストスクリプトの実行状態の設定、変更等を対象とする。結果出力部113は、テストスクリプトの実行結果を実行結果DB115に格納させ、実行結果を表示部13に出力して表示させる。
テスト対象GUI操作応答サーバ2は、共有されるデータを格納する共有データベース(以下、共有DBという。)21を備え、GUIクライアントのサーバ、Webサーバ等としての機能を有する。そして、テスト対象GUI操作応答サーバ2は、所定のGUIクライアントからの要求に応答して共有DB21内の情報の提供、更新等を行う。
テストスクリプトDB3には、GUIクライアントへのテスト操作が記述されたテストスクリプトが、登録されている。また、本テスト実行システムでは、テストスクリプトの記述言語(記法ともいう。)はGUIクライアントへの操作が表現可能なものであればよく、言語の種類を問わない。
操作DB4には、排他制御のために参照されるGUIクライアントへの操作が、テストスクリプトの記法で登録されている。GUIクライアントへの各操作は、操作対象とこれへの操作内容を介して特定される。例えば、「Name属性が“文字列入力”のエディットボックスに文字列“001”を入力する」操作は、操作対象「Name属性が“文字列入力”のエディットボックス」と操作内容「文字列“001”を入力する」とによって特定される。そして、この操作は、例えば「EditBox(“Name=’文字列入力’”).SetText “001”」等として、テストスクリプトの記法で記述できる。
排他制御サーバ5は、トリガ操作データベース(以下、トリガ操作DBという。)54、トリガ関連操作データベース(以下、トリガ関連操作DBという。)55、及び同時実行禁止操作データベース(以下、同時実行禁止操作DBという。)56を備える。
トリガ操作DB54には、トリガ操作を特定可能な情報が登録されている。例えばデータの更新は、並列実行中に他のテストスクリプト内の操作の実行によってデータが読み出されるときに、読み出し結果に影響する。トリガ操作は、並列実行したときに、このように他のテストスクリプト内の操作に対する応答に影響してしまう虞のある操作、又は逆に他のテストスクリプト内の操作の実行によって影響を受ける虞のある操作をいう。トリガ操作を含むテストスクリプトの実行中は、排他制御が行われて、影響を及ぼす又は受ける他のテストスクリプトの実行は、禁止される。
トリガ関連操作DB55には、トリガ関連操作を特定可能な情報が登録されている。トリガ関連操作は、並列実行したときに、トリガ操作の応答に上記のように影響する、又はトリガ操作によって応答に上記のように影響を受ける虞のある操作をいう。
具体的には、例えばトリガ操作の応答がデータの読み出しであるときは、対象のデータを変更させる虞のある操作が、トリガ関連操作とされる。逆に、例えばトリガ操作の応答がデータの更新であるときは、対象のデータの読み出しを生じさせる操作も、トリガ関連操作とされる。トリガ関連操作を含むテストスクリプトの実行は、排他制御の対象となり、影響を及ぼす又は受ける他のテストスクリプトの実行中は禁止される。以下、トリガ操作を含むテストスクリプトを「トリガ操作テストスクリプト」といい、操作ID、エントリID等のIDの値Nがわかっているときのトリガ操作テストスクリプトをID(N)のトリガ操作テストスクリプトという。トリガ関連操作に関しても、同様である。
同時実行禁止操作DB56には、実行許可テストスクリプト内のトリガ操作に対するトリガ関連操作が、例えばこれらを特定可能なIDを介して設定される。ここで、実行許可テストスクリプトは、排他制御サーバ5によって実行が許可され実行予定又は実行中のテストスクリプトである。また、同時実行禁止操作DB56には、実行許可テストスクリプトの名称と実行するマシン名も設定され、以下ではトリガ関連操作を含むこれらの情報を同時実行禁止操作という。同時実行禁止操作のリガ関連操作は、実行許可テストスクリプト内のトリガ操作を介して、トリガ関連操作DB55から特定可能となっている。同時実行禁止操作は、少なくとも対象の実行許可テストスクリプトの実行までには同時実行禁止操作DB56に設定され、排他制御で参照される。
新たなTS実行要求対象のテストスクリプト(以下、新テストスクリプトという。)内のいずれかの操作がこの同時実行禁止操作DB56に設定されている場合、新テストスクリプトの並列実行は禁止される。実行許可テストスクリプトの実行が終了したときに、対応する同時実行禁止操作は、同時実行禁止操作DB56から削除される。なお、同時実行禁止操作DB56は、初期設定、実行許可テストスクリプトが1つもない状態などでは、レコード数が0個となるように設定されている。
排他制御サーバ5は、また、実行可能性判定部51、同時実行禁止操作DB更新部52、及び送受信部53を備える。ここで、実行可能性判定部51は、受信した、TS実行要求に応答してテストスクリプトが現状態で並列実行可能であるか否かを判定する。また、同時実行禁止操作DB更新部52は、上記の同時実行禁止操作の追加、削除、更新等を行う。
以下、図2〜図9を用いて、詳細部分について更に具体的に記載する。図2に戻って、クライアント部14を介してこのGUIアプリケーションをテスト実行マシン1上で起動すると、文字列を登録するための文字列登録ウィンドウD1が表示される。次に、文字列登録ウィンドウD1の文字列入力エディットボックスD12に文字列を入力して登録ボタンD13をクリックすると、共有DB21に文字列を登録するか否かの確認用の登録確認ウィンドウD2が表示される。この登録確認ウィンドウD2の登録ボタンD21をクリックすると、入力された文字列が共有DB21に登録され、登録確認ウィンドウD2が閉じ、登録された文字列が、文字列登録ウィンドウD1の登録文字列ラベルD11に表示される。
一方、登録ボタンD21の代わりにキャンセルボタンD22をクリックすると、文字列は共有DB21には登録されず、登録確認ウィンドウD2が閉じ、文字列登録ウィンドウD1の登録文字列ラベルD11は更新されない。ここで、登録文字列ラベルD11のName属性を“登録文字列”とし、エディットボックスD12のName属性を“文字列入力”とする。
図3は、操作データベース4のデータ構成を示す説明図である。操作DB4には、テスト対象のGUIアプリケーションが表示するGUIクライアントへの各トリガ操作が、操作ID(T11)、WindowAttachment属性T12及びOperation属性T13と対応付けられて登録されている。ここで、WindowAttachment属性T12はウィンドウを特定し、Operation属性T13はこのウィンドウに対する操作を特定する。なお、操作ID(T11)は、レコードIDであってもよい。
WindowAttachment属性T12には、特定のウィンドウへアタッチする操作がテストスクリプトの言語で記述される。例えば、「キャプションが“文字列登録”のウィンドウへアタッチする」操作は、「Window(“Caption=’文字列登録’”).Attach」のように記述される。
Operation属性T13には、アタッチするウィンドウへの操作、又はこのウィンドウからのデータ取得がテストスクリプトの言語で記述される。例えば、「キャプションが“登録”のボタンをクリックする」操作は、「Button(“Caption=’登録’”).Click」のように記述される。また、「Name属性が“登録文字列”のラベルのキャプションを変数Xに代入する」操作は、データの読み出しを生じさせ、「X = Label(“Name=’登録文字列’”).Caption」のように記述される。
操作DB4の各レコードのWindowAttathment属性T12とOperation属性T13との組み合わせで、「特定のウィンドウへの操作又はデータ取得の操作」が表現されている。例えば、図3のレコードT15には、「キャプションが“文字列登録”のウィンドウ内にある、キャプションが“登録”のボタンをクリックする」操作が登録されている。これは、同一の内容の操作又はデータ取得が複数のウィンドウに共存する場合であっても、正しいウィンドウを指定可能にするためである。
例えば、図3に示す2つのレコードT15、T16において、各Operation属性T13は、同一のキャプション“登録”のボタンからなるオブジェクトへのクリック操作を指定している。しかし、WindowAttachment属性T12によって、そのオブジェクトが配置されているウィンドウが区別されている。そのため、これらは、異なるレコードに登録される。
操作DB4の各レコードは、操作ID(T11)を介して、排他制御サーバ5のトリガ操作DB54、トリガ関連操作DB55及び同時実行禁止操作DB56の各レコードから参照される。
図4は、図2のGUIを表示する文字列登録用のGUIアプリケーションのテストスクリプトについての説明図である。テストスクリプトTS1、TS2内のAssertAreEqual関数は、第1引数に設定された期待(主張)値と第2引数として得られる実際(登録)値とを比較し、これらの一致/不一致を決定し、その結果を実行結果DB115に出力する。
図4(a)のテストスクリプトTS1は、名前が“TestScript001”であり、次のように動作する。テストスクリプトTS1は、まず、文字列登録ウィンドウD1にアタッチし、文字列入力エディットボックスD12に文字列“001”を入力して登録ボタンD13をクリックする。テストスクリプトTS1は、次に、登録確認ウィンドウD2にアタッチして登録ボタンD21をクリックする。テストスクリプトTS1は、最後に、文字列登録ウィンドウD1にアタッチし、登録文字列ラベルD11に表示された文字列“001”と、文字列入力エディットボックスD12に入力された文字列“001”とが等しいことを検証する。
図4(b)のテストスクリプトTS2は、名前が“TestScript002”であり、次のように動作する。テストスクリプトTS2は、まず、文字列登録ウィンドウD1にアタッチし、登録文字列ラベルD11に表示されている文字列“001”を保持する。テストスクリプトTS2は、次に、文字列入力エディットボックスD12に文字列“002”を入力して登録ボタンD13をクリックする。テストスクリプトTS2は、更に、登録確認ウィンドウD2にアタッチしてキャンセルボタンD22をクリックする。テストスクリプトTS2は、最後に、文字列登録ウィンドウD1にアタッチし、登録文字列ラベルD11に表示された文字列“001”が変更されていないことを検証する。
テストスクリプトTS1とテストスクリプトTS2とは、適切に並列実行できない。テストスクリプトTS2の11行目で共有DB21から文字列が取得される前にテストスクリプトTS1の8行目でこの文字列が登録されてしまい、取得される文字列が変更されてしまう虞があるからである。これに対して、テストスクリプトTS2は、共有DB21の文字列を変更しないため、複数のテスト実行マシン1から並列実行可能である。
図5は、テストスケジュールDB114のデータ構成についての説明図である。テストスケジュールDB114には、テストスクリプト名T21及び実行状態T22からなる実行スケジュールが登録される。テストスクリプト一括実行ユニット11は、この実行スケジュールに従って、テストスクリプトを実行する。
ここで、テストスクリプト名T21には、テストスクリプトが1つずつ実行予定順に上から設定され、実行状態T22には実行状態が設定される。実行状態T22には、テストが既に終了しているときは“実行済”が設定され、実行前、実行中等のテストが未だ終了していないときは“未実行”が設定される。実行状態T22は、テストスケジュール更新部112によって更新される。一括実行が終了したとき、実行スケジュールは、テストスケジュール更新部112によって削除される。
図5は、図4のテストスクリプトTS1、TS2に関するものであり、この図から実行スケジュールのとりうる状態がわかる。図5(b)において、実行状態T22は、テストスクリプトTS1が既に実行されて終了し、テストスクリプトTS2が実行前又は実行中であることを示している。
図6は、テストスクリプト一括実行ユニット11が排他制御サーバ5に送信するTS実行要求の通信フレームについての説明図である。TS実行要求の通信フレームF1は、図6(a)に示すように、テスト実行マシン名F11、テストスクリプト名F12、操作IDリストF13等からなり、テストスクリプト実行要求作成部111によって作成される。
ここで、テスト実行マシン名F11はTS実行要求を送信するマシン名を特定し、テストスクリプト名F12はTS実行要求対象のテストスクリプトを特定する。また、操作IDリストF13には、TS実行要求対象のテストスクリプト内の操作を特定する操作ID(T11)が全てリストされる。
さらに、操作IDリストF13は、操作ID数F14、操作ID配列F15等からなり、操作ID数F14にはリストされる操作IDの個数が設定され、操作ID配列F15には操作IDが列挙される。操作IDリストF13と同時実行禁止操作DB56に基づいて、TS実行要求に対する実行可能性が判断される。具体的には、排他制御サーバ5が、同時実行禁止操作DB56を参照し、操作IDリストF13中の各操作IDをキーにして検索し、何れの操作IDも検索されないときに、実行可能と判断する。
図6(b)には、名前が“pc-a”のテスト実行マシンから送信される、テストスクリプトTS1のTS実行要求が示されている。同様に、図6(e)には、名前が“pc-b”のテスト実行マシンから送信される、テストスクリプトTS2のTS実行要求が示されている。
図7は、トリガ操作データベース54のデータ構成についての説明図である。トリガ操作DB54には、トリガ操作を特定可能な情報が設定される。例えば、図3の操作ID(T11)が1の操作は、「キャプションが“文字列登録”のウィンドウ内にある、Name属性が“登録文字列”のラベルのキャプションを変数Xに代入する」ことである。この操作は、共有DB21内の登録文字列の読み出し又は参照を生じさせるため、トリガ操作である。
一方、図3の操作ID(T11)が4の操作は、「キャプションが“登録確認”のウィンドウ内にある、キャプションが“登録”のボタンをクリックする」ことである。この操作は、通常、共有DB21内の登録文字列の変更を生じさせるため、やはりトリガ操作である。各トリガ操作は、それぞれ図7に示すように、トリガエントリID(T31)毎に操作ID(T32)を介してトリガ操作DB54に設定されている。
図8は、トリガ関連操作データベース55のデータ構成についての説明図である。トリガ関連操作DB55には、トリガ関連操作と対応するトリガ操作とを特定可能な情報が設定される。例えば、上記の操作ID(T11)が1の操作と操作ID(T11)が4の操作とは、相互にトリガ関連操作となる。各トリガ関連操作は、それぞれ図8に示すように、トリガ関連エントリID(T41)毎に操作ID(T42)を介してトリガ関連操作DB55に設定されている。
ここで、トリガ関連エントリID(T41)には、DB54内の対応するトリガ操作も特定可能となるように、トリガエントリID(T31)と同一のデータが設定される。具体的には、図8において、トリガ関連エントリID(T41)が1は、4の値をとるトリガ関連操作の操作ID(T42)を特定する。そして、図7において、このトリガ関連エントリID(T41)は、同じ1の値をとるトリガエントリID(T31)を介して対応するトリガ操作の操作ID(T32)をも特定可能とする。図8に示すように、この場合のトリガ関連操作の操作ID(T42)は4であり、対応するトリガ操作の操作ID(T32)は1であり、既に説明したようにそれぞれトリガ関連操作と対応するトリガ操作の関係にある。
操作ID(T42)には操作DB4内の対応する操作ID(T11)が設定され、もって、対応するWindowAttachment属性T12とOperation属性T13の特定が可能となる。その結果、例えば、レコードT43と図7とに基づいて、操作ID(1)のトリガ操作テストスクリプトの実行中は、操作ID(4)のトリガ関連操作テストスクリプトの実行が禁止されることがわかる。
操作IDが4の操作は操作IDが1のトリガ関連操作であるため、操作ID(1)のトリガ操作テストスクリプトの実行中は、操作ID(4)のトリガ関連操作テストスクリプトの実行が禁止される。同様に、レコードT44には、操作ID(4)のトリガ操作テストスクリプトの実行中は、操作ID(1)のトリガ関連操作テストスクリプトの実行が禁止されることが示されている。本テスト実行システムでは、排他制御のためにトリガ操作とトリガ関連操作とが事前に設定され、参照される。
図9は、同時実行禁止操作DB56のデータ構成についての説明図である。同時実行禁止操作は、テスト実行マシン名T51、テストスクリプト名T52、操作ID(T53)等からなる。ここで、テストスクリプト名T52は、実行許可テストスクリプトの名前を特定する。また、操作ID(T53)は、トリガ関連操作を特定し、もって新テストスクリプトの実行が実行許可テストスクリプトの実行結果を誤りに導く虞があるか否かを識別可能にする。
TS実行要求に対して排他制御サーバ5が実行を許可する通知を返信されるまでに、対応する同時実行禁止操作は、同時実行禁止操作DB更新部52によって同時実行禁止操作DB56に追加される。そして、排他制御サーバ5がテストスクリプトの実行終了通知(以下、TS実行終了通知という。)をテスト実行マシン1から受信したときに、同時実行禁止操作は同時実行禁止操作DB更新部52によって削除される。以下、上記の通知を実行許可通知といい、反対に、実行を許可しない通知を実行不許可通知という。
図9(a)は、名前が“pc-a”のテスト実行マシンからのテストスクリプトTS1の実行が許可されたときの同時実行禁止操作の設定状態を示している。このテストスクリプトTS1には操作ID(T11)が1〜4の4つの操作が含まれているが、このうち、トリガ操作は上記のように操作ID(T11)が1と4の2つである。そのため、TS実行要求の通信フレームは、図6(b)に示すようになる。
1の値をとる操作ID(F15、T11)には、図7に示すように1の値をとるトリガエントリID(T31)が対応し、さらに図8の同一の値をとるトリガ関連エントリID(T31)のレコードT43が対応する。同様に、4の値をとる操作ID(F15、T11)には、図7に示すように2の値をとるトリガエントリID(T31)が対応し、さらに図8の同一の値をとるトリガ関連エントリID(T31)のレコードT44が対応する。その結果、これらに対応するトリガ関連操作の操作ID(T53)はそれぞれ4又は1をとり、テストスクリプトTS1に対する同時実行禁止操作は、図9(a)に示すものとなる。
同様に、図9(b)は、名前が“pc-b”のテスト実行マシンからのテストスクリプトTS2の実行が許可されたときの同時実行禁止操作の設定状態を示している。
以下、このように構成されたテスト実行システムの動作について説明する。まず、各テスト実行マシンが行うテストスクリプト一括実行処理について説明する。
図10は、各テスト実行マシンが行うテストスクリプト一括実行処理についてのフローチャートである。テストスクリプト一括実行処理の開始に先立ち、操作DB4、トリガ操作DB54及びトリガ関連操作DB55には、それぞれ、必要な情報が設定されているものとする。
本テスト実行システムでは、複数のテスト実行マシンのそれぞれが独立してテストスクリプト一括実行処理を行う。まず、テストスクリプト一括実行ユニット11は、テスト実行マシン1の入力部12を介してテストスクリプト一括実行処理が開始されたとき、データベース114、115の初期化を行う(S101)。この初期化では、テストスケジュールDB114に関しては、全テストスクリプト名T21の実行状態T22が“未実行”に設定され、実行結果DB115に関しては、残存する実行結果が全て削除される。
次に、テストスクリプト一括実行ユニット11は、テストスケジュールDB114を参照し、“未実行”をキーにして検索を行い(S102)、検出されたか否かを判断する(S103)。
ステップS103で“未実行”が検出されないと判断したとき、テストスクリプト一括実行ユニット11は、実行結果DB115から実行結果を取得して表示部13に出力し表示させる(S104)。実行結果は、全てのテストスクリプトに関して出力される。尚、ステップS104で実行結果が取得できないときに、テストスクリプト一括実行ユニット11は、実行結果に代えて所定のメッセージを出力するのでもよい。
ステップS103で“未実行”が検出されたと判断したとき、テストスクリプト一括実行ユニット11は、“未実行”が設定されたテストスクリプト名のうち実行順序が最も早いテストスクリプトの名称を変数TSNに代入する(S105)。
次に、テストスクリプト一括実行ユニット11は、変数TSNで特定されるテストスクリプトについてのテストスクリプト実行要求作成処理を行う(S110)。テストスクリプト実行要求作成処理では、テスト実行マシン1から送信される、変数TSNのテストスクリプトについてのTS実行要求が作成される。
次に、テストスクリプト一括実行ユニット11は、送受信部16経由でこのTS実行要求を排他制御サーバ5に送信して(S131)、応答を待ち受けて受信する(S132)。この応答は、実行許可通知又は実行不許可通知である。
次に、ステップS132で応答を受信したとき、テストスクリプト一括実行ユニット11は、応答が実行許可通知であるか否かを判断する(S133)。ステップS133で応答が実行不許可通知であると判断したとき、テストスクリプト一括実行ユニット11は、テストスケジュールDB114を参照し、“未実行”をキーにして検索を行う(S134)。次に、テストスクリプト一括実行ユニット11は、ステップS134で検出されたものが複数であるか否かを判断する(S135)。これによって、実行されていない他のテストスクリプトの有無が分かる。
ステップS135で“未実行”が複数検出されなかったと判断したとき、同一の変数TSNのまま、処理はステップS110に戻り、テストスクリプト一括実行ユニット11は以降のステップでの処理を繰り返す。なお、一定時間後に処理がステップS131に戻り、作成済みのTS実行要求が再送されるのでもよい。
次に、ステップS135で“未実行”が複数検出されたと判断したとき、テストスクリプト一括実行ユニット11は、検出されたものの内の現変数TSNと異なるテストスクリプト名を変数TSNに代入する(S136)。ここで、テストスクリプト一括実行ユニット11は、作成済みのTS実行要求を所定のメモリに格納しておき、後にこのTS実行要求を再度送信するのでもよい。次に、処理はステップS110に戻り、テストスクリプト一括実行ユニット11は、更新された変数TSNで、以降のステップでの処理を繰り返す。
一方、ステップS133でTS実行要求に対する応答が実行許可通知であると判断したとき、テストスクリプト一括実行ユニット11は、変数TSNで特定されるテストスクリプトをテスト実行マシン1上で実行する(S137)。次に、テストスクリプト一括実行ユニット11は、このテストスクリプトの実行結果を実行結果DB115に格納する(S138)。ここで、変数TSNで特定されるテストスクリプトの実行が許可されているため、排他制御サーバ5は、同時実行禁止操作を含む他のテストスクリプトの実行を禁止している。
ステップS138で実行結果を実行結果DB115に格納したとき、テストスクリプト一括実行ユニット11は、変数TSNで特定されるテストスクリプトのTS実行終了通知を排他制御サーバ5に送信する(S139)。このTS実行終了通知を介してテスト実行マシン名とテストスクリプト名TSNとが排他制御サーバ5に通知され、このテストスクリプトのために実行が禁止されていた他のテストスクリプトは、他に制限がない場合、実行が許可される。
ステップS139でTS実行終了通知を送信したとき、テストスクリプト一括実行ユニット11は、テストスケジュールDB114の実行状態T22のうち変数TSNに対応するものを“実行済”に変更する(S140)。次に、処理はステップS102に戻り、テストスクリプト一括実行ユニット11は、実行状態T22が“未実行”の残りのテストスクリプトについて、上記の処理を繰り返す。実行状態T22に“未実行”がなくなったとき、全てのテストスクリプトの実行は完了し、ステップS104で実行結果が表示される。
図11は、テストスクリプト一括実行ユニットが行うテストスクリプト実行要求作成処理についてのフローチャートである。テストスクリプト実行要求作成処理では、まず、テストスクリプト一括実行ユニット11が、自己のテスト実行マシン名を変数PCに代入し、実行対象のテストスクリプトの名前を変数TSNに代入する(S111)。次に、テストスクリプト一括実行ユニット11は、変数TSNをキーにしてテストスクリプトDB3から検索し、検出されたテストスクリプトTSを参照する(S112)。次に、テストスクリプト一括実行ユニット11は、テストスクリプトTSの操作を特定する操作ID(T11)をリストするための空のリスト変数OLを作成する(S113)。
テストスクリプト一括実行ユニット11は、次に、変数FLAGに“false”を代入して初期化する(S114)。この変数FLAGは、テストスクリプト内の対象の文がウィンドウにアタッチされた状態で操作を行うものであるか否かを識別するためのものである。変数FLAGには、アタッチされた状態であれば「true」、そうでなければ「false」が代入される。初めは、ウィンドウはアタッチされていないため、変数FLAGには「false」が設定される。
次に、処理はループAに入り、テストスクリプト一括実行ユニット11は、テストスクリプト内の文Xを行番号の若い順に最後まで抽出していく(S115)。そのため、初めは、最も若い文が抽出される。
テストスクリプト一括実行ユニット11は、次に、抽出された文Xがウィンドウへのアタッチ文であるか否かを判断する(S116)。ステップS116で文Xがアタッチ文であると判断したとき、テストスクリプト一括実行ユニット11は、操作DB4を参照し、文XのWindowAttachment属性をキーにして検索する(S117)。
次に、テストスクリプト一括実行ユニット11は、ステップS117で検出されたか否かを判断する(S118)。テストスクリプト一括実行ユニット11は、ステップS118で検出されたと判断したとき変数FLAGに「true」を代入し(S119)、検出されなかったと判断したとき「false」を代入する(S120)。このように更新される変数FLAGを参照することによって、操作が行われるウィンドウにアタッチしているか否かが識別可能となる。
テップS116で抽出された文Xがウィンドウへのアタッチ文でないと判断したとき、テストスクリプト一括実行ユニット11は、変数FLAGが「true」であるか否かを判断する(S121)。ここで、ウィンドウへ既にアタッチされている場合、所定の操作が行われうる。
ステップS121で変数FLAGが「true」であると判断したとき、テストスクリプト一括実行ユニット11は、操作DB4を参照し、文XのOperation属性T13をキーにして検索する(S122)。ここで、操作DB4の参照は、ステップS117で検出されたWindowAttachment属性T12に対応付けられたものに限定して行われる。
次に、テストスクリプト一括実行ユニット11は、ステップS122で文XのOperation属性T13が検出されたか否かを判断する(S123)。ステップS123で文XのOperation属性T13が検出されたと判断したとき、テストスクリプト一括実行ユニット11は、検出されたOperation属性T13に対応する操作ID(T11)をリスト変数OLに追加する(S124)。リスト変数OLに追加された操作ID(T11)は、排他制御に使用される。
ステップS119若しくはS120が終了したとき、ステップS121で「false」であると判断されたとき、又はステップS123でOperation属性T13が検出されなかったと判断したとき、文Xについての処理は終了する。そして、テストスクリプト一括実行ユニット11は、ループA内で次に若い番号の文Xを抽出し、以降のステップでの処理を繰り返す。次に若い番号の文Xがないときは、処理はループAに出る。
ループAでの処理が完了したとき、テストスクリプト一括実行ユニット11は、テスト実行マシン名PC、テストスクリプト名TSN、及びリスト変数OPに基づいて、TS実行要求を作成する(S125)。これによって、図6に示すフレーム構成のTS実行要求が作成され、このテストスクリプトについての処理は終了する。上記の処理は1つのテストスクリプトについてのものであるが、テストスクリプト一括実行ユニット11は、実行状態T22が“未実行”のテストスクリプトが無くなるまでこれらの処理を繰り返す。
ここで、図6(b)及び図6(c)に示すフレーム構成のTS実行要求は、いずれも名前が“pc-a”のテスト実行マシンから送信されるものである。図6(b)のTS実行要求は、図4(a)に示すテストスクリプトTS1についてこのテストスクリプト実行要求作成処理を行って得られたものである。同様に、図6(c)に示すものは、図4(b)に示すテストスクリプトTS2についてのものである。
図12は、各テスト実行マシンからの所定のアクセスに応答して排他制御サーバが行うTS実行要求応答処理についてのフローチャートである。TS実行要求応答処理は、具体的には、各テスト実行マシンからのTS実行要求と実行終了通知とに応答して行われる。
排他制御サーバ5は、まず、テスト実行マシン1から送信された情報を待ち受けて受信する(S201)。排他制御サーバ5は、次に、ステップS201で受信した情報がTS実行終了通知であるか否かを判断する(S202)。
ステップS202でTS実行終了通知を受信したと判断したとき、排他制御サーバ5は、通知から特定される全ての同時実行禁止操作を同時実行禁止操作DB56から削除する(S203)。具体的には、TS実行終了通知にテスト実行マシン名F11とテストスクリプト名F12が指定され、これらによって特定される全ての同時実行禁止操作が同時実行禁止操作DB56から削除される。
ステップS202でTS実行終了通知を受信していないと判断したとき、排他制御サーバ5は、ステップS201で受信した情報がTS実行要求であるか否かを判断する(S204)。ステップS204でTS実行要求を受信していないと判断したとき、処理はステップS201に戻り、排他制御サーバ5は再び待ち受け受信を行う。
ステップS204でTS実行要求を受信したと判断したとき、排他制御サーバ5は、受信したTS実行要求に基づいて、対象のテストスクリプトが実行可能であるか否かを判断する実行可能性判断処理を行う(S210)。
排他制御サーバ5は、次に、実行可能性判断処理の結果に基づいて、実行可能であるか否かを判断する(S221)。ステップS221で実行できないと判断したとき、排他制御サーバ5は、実行不許可通知を応答としてテスト実行マシン1に返信する(S222)。ステップS222で実行不許可通知を返信したとき、処理はステップS201に戻り、排他制御サーバ5は再び待ち受け受信を行う。
ステップS221で実行可能であると判断したとき、処理はループAに入り、排他制御サーバ5は、TS実行要求内の操作ID(F15)を先頭から最後まで抽出していく(S223)。そのため、初めは、先頭の操作ID(F15)が抽出される。次に、排他制御サーバ5は、トリガ操作DB54を参照し、操作ID(F15)をキーにして操作ID(T32)の検索を行う(S224)。操作ID(T32)を介して、対応するトリガエントリID(T31)も検索されることになる。
次に、処理はループBに入り、排他制御サーバ5は、ステップS224で検出したトリガ操作(T32)に対応するトリガエントリID(T31)を若い順に抽出していく(S225)。そのため、初めは、最も若いトリガエントリID(T31)が抽出される。次に、排他制御サーバ5は、トリガ関連操作DB55を参照し、ステップS225で抽出されたトリガエントリID(T31)をキーにして、トリガ関連操作の操作ID(T42)の検索を行う(S226)。この検索は、既に説明したように、トリガエントリID(T31)と一致するトリガ関連エントリID(T41)を検索し、検索されたトリガ関連エントリID(T41)に対応する操作ID(T42)を抽出するように、行われる。
次に、処理はループCに入り、排他制御サーバ5は、ステップS226で検出したトリガ関連操作の操作ID(T42)を若い順に抽出していく(S227)。そのため、初めは、最も若い操作ID(T42)が抽出される。
次に、排他制御サーバ5は、検出された操作ID(T42)に対する同時実行禁止操作を同時実行禁止操作D56に追加する(S228)。この同時実行禁止操作は、既に説明したように、TS実行要求中のテスト実行マシン名F11、テストスクリプト名F12、及び操作ID(T42)に基づいて作成される。
次に、排他制御サーバ5は、ループC内で次に若い番号の操作ID(T42)を抽出し、以降のステップでの処理を繰り返す。次に若い番号の操作ID(T42)がないとき、処理はループCを出る。
処理がループCを出たとき、排他制御サーバ5は、ループB内で次に若いトリガエントリID(T31)を抽出し、以降のステップでの処理を繰り返す。次に若いトリガエントリID(T31)がないとき、処理はループBを出る。
処理がループBを出たとき、排他制御サーバ5は、ループA内でTS実行要求内の次に若い操作ID(F15)を抽出し、以降のステップでの処理を繰り返す。次に若い操作ID(F15)がないとき、処理はループAを出る。
処理がループAを出たとき、排他制御サーバ5は、実行許可通知を応答としてテストスクリプト一括実行ユニット11に返信する(S227)。次に、処理はステップS201に戻り、排他制御サーバ5は以降の各ステップでの処理を繰り返す。その結果、排他制御サーバ5は、TS実行要求を受信する度に実行許可通知又は実行不許可通知を応答として返信し、TS実行終了通知を受信する度に通知された同時実行禁止操作を全て削除するように動作する。
図13は、排他制御サーバが行う実行可能性判断処理についてのフローチャートである。実行可能性判断処理で、排他制御サーバ5は、まず、TS実行要求からテストスクリプト名F12を変数TSNに代入し、操作IDリストF13をリスト変数OLに代入する(S211)。次に、処理はループDに入り、排他制御サーバ5は、リスト変数OLの先頭から最後まで操作ID(F15)を順に抽出していく(S212)。そのため、初めは、先頭の操作ID(F15)が抽出される。
次に、排他制御サーバ5は、同時実行禁止操作DB56を参照し、抽出された操作ID(F15)をキーにして検索する(S213)。次に、排他制御サーバ5は、ステップS213で操作ID(F15)と一致する操作ID(T53)が検出されたか否かを判断する(S214)。ステップS214で一致する操作ID(T53)が検出されなかったと判断したとき、処理はステップS212に戻る。そして、排他制御サーバ5は、ループD内で次に若い操作ID(F15)を抽出し、以降のステップでの処理を繰り返す。次の操作ID(F15)がないときは、処理はループDを出る。
ステップS214で一致する操作ID(T53)が検出されたと判断したとき、排他制御サーバ5は、変数TSNで特定されるテストスクリプトの実行は許可できないと決定する(S215)。ループDで、リスト変数OL内の全ての操作ID(F15)に対して、一致する操作ID(T53)が検出されなかったとき、処理はループDを出る。そして、排他制御サーバ5は、このテストスクリプトの実行が許可されると決定する(S216)。ステップS215とステップS216での決定が行われたとき、処理はステップS221に進む。
図14は、本テスト実行システムによる排他制御についてのタイムチャートである。図14には、より早く許可を受けた名前が“pc-a”のテスト実行マシンと後から許可を受けた名前が“pc-b”のテスト実行マシンが、それぞれ、2つのテストスクリプトTS1、TS2を一括実行する例について記載されている。以下、前者のマシンをテスト実行マシン“pc-a”といい、後者のマシンをテスト実行マシン“pc-b”という。
図14(a)はテスト実行マシン“pc-a”についてのものであり、一括実行は図5(a)のテストスケジュールに従って行われている。同様に、図14(b)はテスト実行マシン“pc-b”についてのものであり、一括実行は同一のテストスケジュールに従って行われている。
区間E1は、何れのテスト実行マシンも一括実行を開始していない状態からテスト実行マシン“pc-a”が一括実行を開始した状態に変化する区間である。この区間で、テスト実行マシン“pc-a”が一括実行を開始してテストスクリプトTS1のTS実行要求(図6(b))を排他制御サーバ5に送信し、実行許可通知が返信される。この区間1で、同時実行禁止操作DB56は、何れの同時実行禁止操作も設定されていない状態から、テスト実行マシン“pc-a”のテストスクリプトTS1に対する同時実行禁止操作が設定された状態(図9(a))に変化する。一方、両方のテスト実行マシンのテストスケジュールDBは、図5(a)の状態にある。
区間E2は、テスト実行マシン“pc-a”がテストスクリプトTS1の実行を開始してから、テスト実行マシン“pc-b”が一括実行を開始するまでの区間である。したがって、この区間E2で一括実行しているのはテスト実行マシン“pc-a”のみである。この区間E2では、同時実行禁止操作DB56は図9(a)の状態のままであり、2つのテスト実行マシンのテストスケジュールDB114はともに図5(a)の状態である。
区間E3は、テスト実行マシン“pc-b”が一括実行を開始してから排他制御を受けて実際に最初のテストスクリプトの実行が開始するまでの区間である。この区間E3で、テスト実行マシン“pc-b”は、排他制御サーバ5にテストスクリプトTS1のTS実行要求(図6(d))とテストスクリプトTS2のTS実行要求(図6(e))を交互に送信する。また、一度作成された通信フレームは上記のように保存され短時間で再送されるようになっているものとする。
両方の通信フレーム内の操作T15には同時実行禁止操作DB56に設定されているものが含まれているため、テスト実行マシン“pc-b”はこれらのいずれのTS実行要求に対しても実行不許可通知を受信し続けている。テスト実行マシン“pc-b”による最初のテストスクリプトの実際の実行は、図14からわかるように、テスト実行マシン“pc-a”によるテストスクリプトTS1の実行が終了した後になる。テストスクリプトTS1の実行が終了したとき、実行終了通知がテスト実行マシン“pc-a”から排他制御サーバ5に送信される。
この実行終了通知は、区間3の終了までに行われるものとし、以下、他の区間でも同様とする。この区間E3では、同時実行禁止操作DB56は図9(a)の状態であり、2つのテスト実行マシンのテストスケジュールDB114はともに図5(a)の状態である。
区間E4は、テスト実行マシン“pc-a”のテストスクリプトTS1の実行が終了してテスト実行マシン“pc-b”のテストスクリプトTS2の実行が開始し、テスト実行マシン“pc-a”の次のテストスクリプトTS2の実行が開始するまでの区間である。テストスクリプトTS2は複数実行可能であるため、テスト実行マシン“pc-a”がテストスクリプトTS2のTS実行要求(図6(d))を送信したとき実行許可通知を受信することになり、この区間の終わりで実行を開始することになる。
この区間E4では、同時実行禁止操作DB56は図9(b)に示す状態に変化している。また、テスト実行マシン“pc-a”のテストスケジュールDB114は図5(b)に示す状態に変化し、テスト実行マシン“pc-b”のテストスケジュールDB114は図5(a)に示す状態のままである。
区間E5は、テスト実行マシン“pc-a”がテストスクリプトTS2の実行を開始し、テスト実行マシン“pc-b”がテストスクリプトTS2の実行を終了するまでの区間である。この区間E5では、同時実行禁止操作DB56は図9(c)に示す状態に変化している。また、テスト実行マシン“pc-a”のテストスケジュールDB114は図5(b)に示す状態に変化し、テスト実行マシン“pc-b”のテストスケジュールDB114は図5(a)に示す状態のままである。
区間E6は、テスト実行マシン“pc-b”によるテストスクリプトTS2の実行終了から、テスト実行マシン“pc-b”によるテストスクリプトTS1の実行開始までの区間である。テスト実行マシン“pc-b”によるテストスクリプトTS1の実行は、テスト実行マシン“pc-a”によるテストスクリプトTS2の実行を妨げる虞があるため、このテストスクリプトTS2の実行が完了するまで許可されない。そのため、テストスクリプトTS2の実行が完了するまでの間、テスト実行マシン“pc-b”はテストスクリプトTS1のTS実行要求(図6(d))を送信し続け、この区間の終わりまでに実行許可通知を受信する。
この区間E6では、同時実行禁止操作DB56は図9(d)に示す状態に変化している。また、テスト実行マシン“pc-a”のテストスケジュールDB114は図5(b)に示す状態から最後で図5(d)に示す状態となり、テスト実行マシン“pc-b”のテストスケジュールDB114は図5(c)に示す状態に変化する。
区間E7は、テスト実行マシン“pc-a”による一括実行が終了し、テスト実行マシン“pc-b”によるテストスクリプトTS2の実行が開始してから終了するまでの区間である。この区間E7では、同時実行禁止操作DB56は図9(e)に示す状態に変化している。また、テスト実行マシン“pc-a”のテストスケジュールDB114は図5(d)に示す状態のままで、テスト実行マシン“pc-b”のテストスケジュールDB114は図5(c)に示す状態から最後で図5(d)に示す状態に変化する。
区間E8は、テスト実行マシン“pc-a”による一括実行も終了している区間である。既に説明したように、区間E7の終わりまでに、テストスクリプトTS1の実行終了通知は、テスト実行マシン“pc-b”によって排他制御サーバ5に送信されている。また、テストスケジュールDB114は何れのテスト実行マシン“pc-a”、“pc-b”についても図5(d)に示す状態にあり、同時実行禁止操作は全て同時実行禁止操作DB56から削除された状態である。
本発明によるhmは、プログラム製造業、通信機器製造業等において利用可能であり、このような製品の有用性を増進する。
1 テスト実行マシン
2 テスト対象GUI操作応答サーバ
3 テストスクリプトデータベース
4 操作データベース
5 排他制御サーバ
11 テストスクリプト一括実行ユニット
12、120 入力部
13、130 表示部
14、140 テスト対象GUIアプリケーションクライアント部
15、150 テストスクリプト実行部
16、160 送受信部
21 共有データベース
51 実行可能性判定部
52 同時実行禁止操作DB更新部
53 送受信部
54 トリガ操作データベース
55 トリガ関連操作データベース
56 同時実行禁止操作データベース
111 テストスクリプト実行要求作成部
112、171 テストスケジュール更新部
113、172 結果出力部
114、173 テストスケジュールデータベース
115、174 実行結果データベース
170 テストスクリプト一括実行装置
200 ネットワーク
D1 文字列登録ウィンドウ
D11 登録文字列ラベル
D12 文字列入力エディットボックス
D13 登録ボタン
D2 登録確認ウィンドウ
D21 登録ボタン
D22 キャンセルボタン
E1〜E4 区間
F1 TS実行要求のフレーム
F11、T51 テスト実行マシン名
F12、T52 テストスクリプト名
F13 操作IDリスト
F14 操作ID数
F15 操作ID配列
T11、T32、T42、T53 操作ID
T12 WindowAttachment属性
T13 Operation属性
T14〜T16 操作データベースのレコード
T21 テストスクリプト名
T22 実行状態
T31 トリガエントリID
T41 トリガ関連エントリID
T54 同時実行禁止操作データベースのレコード
TS1、TS2 テストスクリプト

Claims (1)

  1. 相互に通信可能に接続された、テスト対象のGUI(Graphical User Interface)アプリケーションが表示するGUIへの各操作が登録された操作データベースと、前記GUIアプリケーションのテスト内容をなす前記各操作が記録された複数のテストスクリプトを格納するテストスクリプトデータベースと、前記テストスクリプトデータベース内の所定の1つ以上の前記テストスクリプトを一括して実行可能な複数のテスト実行マシンと、前記GUIへの操作に応答するテスト対象GUI操作応答サーバと、前記複数のテスト実行マシン間で行われる前記テストスクリプトの実行をテスト結果に誤りが生じないように排他制御する排他制御サーバと、を具備するテスト実行システムであって、
    前記テスト実行マシンは、
    一括して実行する前記テストスクリプトのテストスケジュールを更新可能に格納し、前記テストスケジュールに従って、実行予定の前記テストスクリプトが前記テストスケジュールから無くなるまで、実行する前記テストスクリプトについての実行要求であってこのテストスクリプトにおける前記GUIへの前記操作のうちの前記操作データベースに登録されているものを含む実行要求を作成して前記排他制御サーバに送信し、前記排他制御サーバから実行が許可されるか否かの応答を受信し、許可の応答を受信するまで、同一の前記テストスクリプトについての前記実行要求の送信と前記応答の受信、又は次の前記テストスクリプトについての前記実行要求の作成及び送信と前記応答の受信を繰り返し、許可の応答を受信したときに許可された前記テストスクリプトを実行し、前記テストスクリプトの実行が終了したときに前記テストスケジュールを更新して実行終了通知を前記排他制御サーバに送信し、
    前記排他制御サーバは、
    前記操作データベースに登録された操作のうちの、他の操作の応答に誤りを生じさせる第1の操作と他の操作の実行によって応答に誤りを生じる第2の操作とからなるトリガ操作が登録されているトリガ操作データベースと、
    前記第1の操作によって応答に誤りを生じる操作と前記第2の操作のテスト結果に誤りを生じさせる操作とからなるトリガ関連操作が登録されているトリガ関連操作データベースと、
    先に実行が許可された前記テストスクリプト内の前記トリガ関連操作からなる同時実行禁止操作が更新可能に設定された同時実行禁止操作データベースと、
    受信した実行要求内の前記各操作と前記同時実行禁止操作データベース内の前記各同時実行禁止操作とで一致するものの有無を判断し、一致するものがある場合に実行を許可しない通知を前記応答として返信し、一致するものがない場合に実行を許可する実行許可通知を前記応答として返信し、前記実行許可通知の送信に先立ち、受信した実行要求内の各操作についての前記トリガ関連操作を前記トリガ関連操作データベースから検索し前記同時実行禁止操作として前記同時実行禁止操作データベースに追加して設定する実行可能性判定部と、
    前記実行終了通知に応答して対応する前記同時実行禁止操作を同時実行禁止操作データベースから削除する更新部と、
    を備えることを特徴とする、テスト実行システム。
JP2009030175A 2009-02-12 2009-02-12 テスト実行システム Expired - Fee Related JP5174706B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009030175A JP5174706B2 (ja) 2009-02-12 2009-02-12 テスト実行システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009030175A JP5174706B2 (ja) 2009-02-12 2009-02-12 テスト実行システム

Publications (2)

Publication Number Publication Date
JP2010186332A true JP2010186332A (ja) 2010-08-26
JP5174706B2 JP5174706B2 (ja) 2013-04-03

Family

ID=42766953

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009030175A Expired - Fee Related JP5174706B2 (ja) 2009-02-12 2009-02-12 テスト実行システム

Country Status (1)

Country Link
JP (1) JP5174706B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013077159A (ja) * 2011-09-30 2013-04-25 Hitachi Solutions Ltd テスト自動化システム
JP2014142745A (ja) * 2013-01-23 2014-08-07 Geo Technical Laboratory Co Ltd アプリケーション・テストシステム
JP2016181795A (ja) * 2015-03-24 2016-10-13 Necディスプレイソリューションズ株式会社 ネットワークシステム及びネットワーク設定方法
CN112416743A (zh) * 2020-01-21 2021-02-26 上海哔哩哔哩科技有限公司 一种测试控制系统、方法及设备
CN116560819A (zh) * 2023-07-10 2023-08-08 北京理想信息科技有限公司 基于rpa的批量自动化操作方法、系统、设备及储存介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104077141B (zh) * 2014-07-04 2017-09-29 用友网络科技股份有限公司 Rserve交互机制的优化装置和优化方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSND200601488006; 湯本剛: '機能テストのテスト設計 テストケース記載例に学ぶ設計の極意' ソフトウェア・テストPRESS 第1巻, 20060415, pp.39-49, (株)技術評論社 *
JPN6012066545; 湯本剛: '機能テストのテスト設計 テストケース記載例に学ぶ設計の極意' ソフトウェア・テストPRESS 第1巻, 20060415, pp.39-49, (株)技術評論社 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013077159A (ja) * 2011-09-30 2013-04-25 Hitachi Solutions Ltd テスト自動化システム
JP2014142745A (ja) * 2013-01-23 2014-08-07 Geo Technical Laboratory Co Ltd アプリケーション・テストシステム
JP2016181795A (ja) * 2015-03-24 2016-10-13 Necディスプレイソリューションズ株式会社 ネットワークシステム及びネットワーク設定方法
CN112416743A (zh) * 2020-01-21 2021-02-26 上海哔哩哔哩科技有限公司 一种测试控制系统、方法及设备
CN116560819A (zh) * 2023-07-10 2023-08-08 北京理想信息科技有限公司 基于rpa的批量自动化操作方法、系统、设备及储存介质
CN116560819B (zh) * 2023-07-10 2024-02-13 北京理想信息科技有限公司 基于rpa的批量自动化操作方法、系统、设备及储存介质

Also Published As

Publication number Publication date
JP5174706B2 (ja) 2013-04-03

Similar Documents

Publication Publication Date Title
JP5174706B2 (ja) テスト実行システム
US9483388B2 (en) Discovery of application states
US20170208088A1 (en) Dynamic Hierarchical Tagging System and Method
US20080082574A1 (en) Ontology-integration-position specifying apparatus, ontology-integration supporting method, and computer program product
US8838533B2 (en) Optimistic application of data edits
CN104376127B (zh) 一种数据操作方法及装置
US20050235248A1 (en) Apparatus for discovering computing services architecture an developing patterns of computing services and method therefor
US20180165179A1 (en) Determining incompatibilities of automated test cases with modified user interfaces
EP3796155B1 (en) Improving acquisition process of gui elements using user input
US20240111498A1 (en) Apparatus, Device, Method and Computer Program for Generating Code using an LLM
WO2020142298A1 (en) Mechanism for automatically incorporating software code changes into proper channels
CN110825395B (zh) 多插件分层部署系统、设备及介质
CN111506358B (zh) 更新容器配置的方法及装置
US20140032592A1 (en) Locating relevant differentiators within an associative memory
US10243943B2 (en) Displaying the accessibility of hyperlinked files
AU2021338607A1 (en) Interactive parts drawings with a real-time bill of materials
US10374891B1 (en) Multi-region virtual data center template
KR101848398B1 (ko) 원격 서버기반의 어플리케이션 작동 정보 제공시스템 및 그 방법
WO2022180704A1 (ja) 表示制御装置、表示制御方法および表示制御プログラム
US20100185608A1 (en) Information retrieval device, information retrieval system, information retrieval program and information retrieval method
KR20150137369A (ko) 데이터 처리 장치 및 데이터 처리 장치의 메모리에 기록된 데이터의 확인 방법
US11455311B2 (en) Multi-locator system for tracking data elements in resources
US11550555B2 (en) Dependency-based automated data restatement
US11468026B2 (en) Information processing apparatus, information processing method, and recording medium recording information processing program
US20230393871A1 (en) Method and system of intelligently generating help documentation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110801

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121212

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121228

LAPS Cancellation because of no payment of annual fees