IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 楽天株式会社の特許一覧

特許7588666光学バーコードを表示するモバイルアプリケーションの自動エンドツーエンドテスト
<>
  • 特許-光学バーコードを表示するモバイルアプリケーションの自動エンドツーエンドテスト 図1
  • 特許-光学バーコードを表示するモバイルアプリケーションの自動エンドツーエンドテスト 図2
  • 特許-光学バーコードを表示するモバイルアプリケーションの自動エンドツーエンドテスト 図3
  • 特許-光学バーコードを表示するモバイルアプリケーションの自動エンドツーエンドテスト 図4
  • 特許-光学バーコードを表示するモバイルアプリケーションの自動エンドツーエンドテスト 図5A
  • 特許-光学バーコードを表示するモバイルアプリケーションの自動エンドツーエンドテスト 図5B
  • 特許-光学バーコードを表示するモバイルアプリケーションの自動エンドツーエンドテスト 図6A
  • 特許-光学バーコードを表示するモバイルアプリケーションの自動エンドツーエンドテスト 図6B
  • 特許-光学バーコードを表示するモバイルアプリケーションの自動エンドツーエンドテスト 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-14
(45)【発行日】2024-11-22
(54)【発明の名称】光学バーコードを表示するモバイルアプリケーションの自動エンドツーエンドテスト
(51)【国際特許分類】
   G06F 11/36 20060101AFI20241115BHJP
【FI】
G06F11/36 188
G06F11/36 196
【請求項の数】 16
【外国語出願】
(21)【出願番号】P 2023005804
(22)【出願日】2023-01-18
(65)【公開番号】P2023164276
(43)【公開日】2023-11-10
【審査請求日】2023-05-01
(31)【優先権主張番号】17/732,694
(32)【優先日】2022-04-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】399037405
【氏名又は名称】楽天グループ株式会社
(74)【代理人】
【識別番号】110000154
【氏名又は名称】弁理士法人はるか国際特許事務所
(72)【発明者】
【氏名】フェルナンド デ アラウジョ パウロ
(72)【発明者】
【氏名】ダナンジャヤ ビラナヤカナハリ ホンナッパ
(72)【発明者】
【氏名】ヴィヴェク ゴカレ
(72)【発明者】
【氏名】ヴィクラム マヘンドラカール
【審査官】児玉 崇晶
(56)【参考文献】
【文献】特表2020-501221(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
(57)【特許請求の範囲】
【請求項1】
コーディネーター部により、テスト環境に関する少なくとも1つの特性を有し少なくとも1つの電子デバイスをテストするタスクを受信し、
第1のエージェントにより、前記少なくとも1つの電子デバイスをテストする前記タスクを、前記コーディネーター部から取り出し、
前記取り出されたタスクに基づいて前記少なくとも1つの電子デバイスをテストするように第1のロボットデバイスを制御し、
前記コーディネーター部により、前記少なくとも1つの電子デバイスの前記テストに基づく前記タスクの結果を受信
前記少なくとも1つの特性は、電子デバイスが存在するエリアの照明の特性を含み、
前記少なくとも1つの電子デバイスをテストする前記タスクを取り出すことは、前記第1のエージェントにより、前記第1のエージェントに対応する電子デバイスのセットが、前記タスクのテスト環境に関する前記少なくとも1つの特性を有する電子デバイスを含むと判断された場合に、当該タスクを受け入れることを含む、
方法。
【請求項2】
前記少なくとも1つの電子デバイスをテストする前記タスクは、前記少なくとも1つの電子デバイスにインストールされたアプリケーションによって生成されるバーコードをスキャンするスキャンタスクを含む、請求項1に記載の方法。
【請求項3】
前記第1のロボットデバイスは、スキャナーを備え、
前記第1のロボットデバイスを制御することは、前記第1のロボットデバイスの前記スキャナーを前記少なくとも1つの電子デバイス上に表示された前記バーコードと位置合わせすることを含む、
請求項2に記載の方法。
【請求項4】
前記第1のロボットデバイスの前記スキャナーを位置合わせすることは、前記第1のロボットデバイスが前記バーコードと位置合わせされていない第1の位置から、前記第1のロボットデバイスが前記バーコードと実質的に位置合わせされている第2の位置へ前記第1のロボットデバイスをスライドさせることを含む、
請求項3に記載の方法。
【請求項5】
前記タスクの前記結果は、前記バーコードをスキャンすることによって生成されるバーコード値を含む、請求項2に記載の方法。
【請求項6】
前記テスト環境に関する少なくとも1つの特性に基づいて前記少なくとも1つの電子デバイスをテストする前記タスクを生成することを更に含む、請求項1に記載の方法。
【請求項7】
さらに、前記第1のエージェントにより、前記第1のエージェントに対応する前記電子デバイスのセットの中のどの電子デバイスも、前記タスクのテスト環境に関する前記少なくとも1つの特性を含まないとの判断に基づいて、前記少なくとも1つの電子デバイスをテストする前記タスクを拒否する、
請求項に記載の方法。
【請求項8】
前記少なくとも1つの特性は、電子デバイスのロケーション、電子デバイスが存在するエリアの照明、電子デバイスのブランド、電子デバイスのモデル、又は電子デバイスの画面の明るさを含む、請求項に記載の方法。
【請求項9】
命令を記憶するメモリと、
前記命令を実行するように構成されるプロセッサであって、
テスト環境に関する少なくとも1つの特性を有し少なくとも1つの電子デバイスをテストするタスクを、コーディネーター部を用いて受信する命令と、
前記少なくとも1つの電子デバイスをテストする前記タスクを、第1のエージェントによって前記コーディネーター部から取り出す命令と、
前記取り出されたタスクに基づいて前記少なくとも1つの電子デバイスをテストするように第1のロボットデバイスを制御する命令と、
前記少なくとも1つの電子デバイスの前記テストに基づく前記タスクの結果を、前記コーディネーター部を用いて受信する命令と、
を実行するように構成されるプロセッサと、
を備え、
前記少なくとも1つの特性は、電子デバイスが存在するエリアの照明の特性を含み、
前記タスクを前記コーディネーター部から取り出す命令は、前記第1のエージェントにより、前記第1のエージェントに対応する電子デバイスのセットが、前記タスクのテスト環境に関する前記少なくとも1つの特性を有する電子デバイスを含むと判断された場合に、当該タスクを受け入れる命令を含む、
システム。
【請求項10】
前記少なくとも1つの電子デバイスをテストする前記タスクは、前記少なくとも1つの電子デバイスにインストールされたアプリケーションによって生成されるバーコードをスキャンするスキャンタスクを含む、請求項に記載のシステム。
【請求項11】
前記第1のロボットデバイスは、スキャナーを備え、
前記プロセッサは、前記第1のロボットデバイスの前記スキャナーを前記少なくとも1つの電子デバイス上に表示された前記バーコードと位置合わせすることによって、前記第1のロボットデバイスを制御するように更に構成される、
請求項10に記載のシステム。
【請求項12】
前記プロセッサは、前記第1のロボットデバイスが前記バーコードと位置合わせされていない第1の位置から、前記第1のロボットデバイスが前記バーコードと実質的に位置合わせされている第2の位置へ前記第1のロボットデバイスをスライドさせることによって、前記第1のロボットデバイスの前記スキャナーを位置合わせするように更に構成される、
請求項11に記載のシステム。
【請求項13】
前記タスクの前記結果は、前記バーコードをスキャンすることによって生成されるバーコード値を含む、請求項10に記載のシステム。
【請求項14】
前記プロセッサは、前記テスト環境に関する少なくとも1つの特性に基づいて前記少なくとも1つの電子デバイスをテストする前記タスクを生成するように更に構成される、請求項に記載のシステム。
【請求項15】
前記プロセッサは、前記第1のエージェントに対応する前記電子デバイスのセットの中のどの電子デバイスも、前記タスクのテスト環境に関する前記少なくとも1つの特性を含まないとの判断に基づいて、前記少なくとも1つの電子デバイスをテストする前記タスクを、前記第1のエージェントを用いて拒否するように更に構成される、請求項に記載のシステム。
【請求項16】
前記少なくとも1つの特性は、電子デバイスのロケーション、電子デバイスが存在するエリアの照明、電子デバイスのブランド、電子デバイスのモデル、又は電子デバイスの画面の明るさを含む、請求項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、包括的には、エンドツーエンドモバイルアプリケーションテストの方法、装置及びシステムに関する。
【背景技術】
【0002】
現在、デジタル及びいくつかのアナログのユーザー方法のためのアプリケーションの自動化テストが存在する。アナログ方法では、アナログ情報がテスト用のデジタルフォーマットに変換される。アナログからデジタルに変換しても、このテストが、実世界のユーザーの行動及び状態をシミュレーションすることはできない。ユーザーが実店舗においてバーコードをスキャンするために電子デバイス上に提示する例では、これをテストするために、バーコードのスクリーンショットが撮影され、このスクリーンショットをバーコード番号に変換するアプリケーションが使用される。しかしながら、この自動化テストのプロセスは、アナログ光学バーコードスキャン信号がどのようにキャプチャされるのかを正確にテストせず、周囲照明条件、スキャン角度、デバイス位置及び明るさ設定等の実世界の状態を考慮しない。
【発明の概要】
【0003】
本開示の一態様によれば、方法は、コーディネーター部により、少なくとも1つの電子デバイスをテストするタスクを受信し、第1のエージェントにより、前記少なくとも1つの電子デバイスをテストする前記タスクを前記コーディネーター部から取り出し、前記取り出されたタスクに基づいて前記少なくとも1つの電子デバイスをテストするように第1のロボットデバイスを制御し、前記コーディネーター部により、前記少なくとも1つの電子デバイスの前記テストに基づく前記タスクの結果を、受信する。
【0004】
本開示の一態様によれば、システムは、命令を記憶するメモリと、前記命令を実行するように構成されるプロセッサを備え、そのプロセッサは、少なくとも1つの電子デバイスをテストするタスクを、コーディネーター部を用いて受信する命令と、前記少なくとも1つの電子デバイスをテストする前記タスクを、第1のエージェントによって前記コーディネーター部から取り出す命令と、前記取り出されたタスクに基づいて前記少なくとも1つの電子デバイスをテストするように第1のロボットデバイスを制御する命令と、前記少なくとも1つの電子デバイスの前記テストに基づく前記タスクの結果を、前記コーディネーター部を用いて受信する命令と、を実行するように構成される。
【0005】
更なる態様は、部分的には、以下の説明において記載されることになり、部分的には説明から明らかになり、又は、本開示の提示される実施形態の実践によって学習することができる。
【0006】
上記の態様、特徴及び他の態様、特徴、並びに本開示の実施形態の態様は、添付の図面と併せて以下の説明を読むとより明らかになる。
【図面の簡単な説明】
【0007】
図1】一実施形態によるシステムのデバイスの図である。
図2】一実施形態による図1のデバイスの構成要素の図である。
図3】一実施形態によるエンドツーエンドモバイルアプリケーションテストのシステムの図である。
図4】一実施形態によるテストタスクを分配するシステムの図である。
図5A】環境に従ったエンドツーエンドモバイルアプリケーションテストの動作フローの図である。
図5B】環境に従ったエンドツーエンドモバイルアプリケーションテストの動作フローの図である。
図6A】一実施形態によるモバイルアプリケーションテスト環境の図である。
図6B】一実施形態によるモバイルアプリケーションテスト環境の図である。
図7】一実施形態によるモバイルアプリケーションテスト方法のフローチャートである。
【発明を実施するための形態】
【0008】
例示の実施形態の以下の詳細な説明は、添付の図面を参照する。異なる図面における同じ参照符号は、同じ又は類似の要素を特定しうる。
【0009】
図1は、一実施形態によるシステムの図である。図1は、ユーザーデバイス110と、サーバーデバイス120と、ネットワーク130とを含む。ユーザーデバイス110及びサーバーデバイス120は、有線接続、無線接続、又は有線接続及び無線接続の組み合わせを介して相互接続してよい。
【0010】
ユーザーデバイス110は、コンピューティングデバイス(例えば、デスクトップコンピューター、ラップトップコンピューター、タブレットコンピューター、ハンドヘルドコンピューター、スマートスピーカー、サーバーデバイス等)、モバイルフォン(例えば、スマートフォン、無線電話等)、カメラデバイス、ウェアラブルデバイス(例えば、スマートグラス又はスマートウォッチ)、又は同様のデバイスを含むことができる。
【0011】
サーバーデバイス120は、1または複数のデバイスを含む。例えば、サーバーデバイス120は、サーバーデバイス、コンピューティングデバイス等であってよい。
【0012】
ネットワーク130は、1または複数の有線ネットワーク及び/又は無線ネットワークを含む。例えば、ネットワーク130は、セルラーネットワーク(例えば、第5世代(5G)ネットワーク、ロングタームエボリューション(LTE:long-term evolution)ネットワーク、第3世代(3G)ネットワーク、符号分割多元接続(CDMA:code division multiple access)ネットワーク等)、公衆陸上モバイルネットワーク(PLMN:public land mobile network)、ローカルエリアネットワーク(LAN:local area network)、ワイドエリアネットワーク(WAN:wide area network)、メトロポリタンエリアネットワーク(MAN:metropolitan area network)、電話網(例えば、公衆交換電話網(PSTN:Public Switched Telephone Network))、プライベートネットワーク、アドホックネットワーク、イントラネット、インターネット、光ファイバーベースネットワーク等、及び/又はこれらのタイプ若しくは他のタイプのネットワークの組み合わせを含むことができる。
【0013】
図1に示すデバイス及びネットワークの数及び配置は、一例として提供されたものである。実際には、図1に示すものと比較して、デバイス及び/又はネットワークが追加されてもよいし、デバイス及び/又はネットワークがより少なくてもよいし、異なるデバイス及び/又はネットワークが存在してもよいし、デバイス及び/又はネットワークが異なって配置となってもよい。さらに、図1に示す2つ以上のデバイスを単一のデバイス内に実装することもできるし、図1に示す単一のデバイスを複数の分散されたデバイスとして実装することもできる。付加的に又は代替的に、デバイスのセット
(例えば、1または複数のデバイス)は、別のデバイスのセットによって実行されるものとして説明される1または複数の機能を実行してもよい。
【0014】
図2は、一実施形態による図1の1または複数のデバイスの構成要素の図である。デバイス200は、ユーザーデバイス110及び/又はサーバーデバイス120に対応してよい。
【0015】
図2に示すように、デバイス200は、バス210と、プロセッサ220と、メモリ230と、記憶構成要素240と、入力構成要素250と、出力構成要素260と、通信インターフェース270とを含むことができる。
【0016】
バス210は、デバイス200の構成要素間の通信を可能にする構成要素を含む。プロセッサ220は、ハードウェア、ファームウェア、又はハードウェア及びソフトウェアの組み合わせで実施される。プロセッサ220は、CPU(central processing unit)、GPU(graphics processing unit)、accelerated processing unit(APU)、マイクロプロセッサ、マイクロコントローラー、DSP(digital signal processor)、FPGA(field-programmable gate array)、特定用途向け集積回路(ASIC:application-specific integrated circuit)、又は別のタイプの処理構成要素である。プロセッサ220は、機能を実行するようにプログラミングすることが可能な1または複数のプロセッサを含む。
【0017】
メモリ230は、プロセッサ220によって使用される情報及び/又は命令を記憶する、ランダムアクセスメモリ(RAM:random access memory)、リードオンリーメモリ(ROM:read only memory)、及び/又は別のタイプのダイナミック記憶デバイス若しくはスタティック記憶デバイス(例えば、フラッシュメモリ、磁気メモリ、及び/又は光メモリ)を含む。
【0018】
記憶構成要素240は、デバイス200の動作及び使用に関係する、情報及び/又はソフトウェアを記憶する。例えば、記憶構成要素240は、ハードディスク(例えば、磁気ディスク、光ディスク、光磁気ディスク、及び/又はソリッドステートディスク)、コンパクトディスク(CD:compact disc)、デジタル多用途ディスク(DVD:digital versatile disc)、フロッピーディスク、カートリッジ、磁気テープ、及び/又は別のタイプの非一時的コンピューター可読媒体を対応するドライブとともに含むことができる。
【0019】
入力構成要素250は、デバイス200がユーザー入力等を介して情報を受信することを可能にする構成要素(例えば、タッチスクリーンディスプレイ、キーボード、キーパッド、マウス、ボタン、スイッチ、及び/又はマイクロフォン)を含む。入力構成要素250は、情報を検知するセンサー(例えば、全地球測位システム(GPS:global positioning system)構成要素、加速度計、ジャイロスコープ、及び/又はアクチュエーター)を含むことができる。
【0020】
出力構成要素260は、デバイス200からの出力情報を提供する構成要素(例えば、ディスプレイ、スピーカー、及び/又は1または複数の発光ダイオード(LED:light-emitting diode))を含む。
【0021】
通信インターフェース270は、デバイス200が有線接続、無線接続、又は有線接続及び無線接続の組み合わせ等を介して他のデバイスと通信することを可能にする送受信機のような構成要素(例えば、送受信機及び/又は個別の受信機及び送信機)を含む。通信インターフェース270は、デバイス200が別のデバイスから情報を受信し及び/又は別のデバイスに情報を提供することを可能にしてよい。例えば、通信インターフェース270は、イーサネットインターフェース、光インターフェース、同軸インターフェース、赤外線インターフェース、無線(RF:radio frequency)インターフェース、ユニバーサルシリアルバス(USB:universal serial bus)インターフェース、Wi-Fiインターフェース、セルラーネットワークインターフェース等を含むことができる。
【0022】
デバイス200は、本明細書で説明する1または複数のプロセスを実行してよい。デバイス200は、プロセッサ220がメモリ230及び/又は記憶構成要素240等の非一時的コンピューター可読媒体によって記憶されたソフトウェア命令を実行することに基づいて動作を実行してよい。コンピューター可読媒体は、本明細書では、非一時的メモリデバイスと定義される。メモリデバイスは、単一の物理記憶デバイス内のメモリ空間又は複数の物理記憶デバイスにわたって分布するメモリ空間を含む。
【0023】
ソフトウェア命令は、別のコンピューター可読媒体から、又は、通信インターフェース270を介して別のデバイスからメモリ230及び/又は記憶構成要素240内に読み込んでよい。メモリ230及び/又は記憶構成要素240に記憶されたソフトウェア命令は、実行されると、本明細書で説明する1または複数のプロセスをプロセッサ220に実行させてよい。
【0024】
本明細書では、電子デバイス上で動作するモバイルアプリケーションの実世界の光学バーコードスキャン状態のエンドツーエンドテストを自動的に実行するシステム及び方法が提供される。本システム及び本方法は、バーコードスキャンテストのユーザー状態をシミュレーションし、複数のデバイスを考慮に入れるようにバーコードスキャンテスト環境を向上させ、複数のスキャンデバイス及びロボットデバイスを含むスケーラブルなシステムを実現する。エンドツーエンドテストシステムは、バーコードスキャン機能のアナログテストと、モバイルアプリケーションユーザーインターフェース(UI:user interface)のテストと、バックエンドアプリケーションプログラミングインターフェース(API:application programming interface)のテストとを含む。本システム及び本方法は、周囲照明条件、スキャン角度、デバイス位置、明るさ設定、バーコードスキャナーの特性、デバイス上でのバーコードの位置設定等の実世界のユーザー状態をシミュレーションして、モバイルアプリケーションアナログ光学バーコードスキャンプロセスのエンドツーエンドの回帰テストを自動化する能力を提供する。
【0025】
本システム及び本方法は、複数のテスト環境とともに及び/又は複数のロケーションにおいて実施してよい。例えば、1つのテスト環境は、第1の場所に位置し、別のテスト環境は、第2の場所に位置してよい。これらの場所は、様々なタイプの全地球測位システム(GPS)信号、国コード、異なる物理条件(例えば、照明)、特定の場所においてのみ利用可能なデバイス、デバイスのブランド等のそれらのそれぞれのロケーションに固有の異なる特性を有する場合がある。したがって、本システム及び本方法は、ロケーション固有の特性に基づいてテストを行うことができる。さらに、複数のテスト環境を有するシステム及び方法は、1つのテスト環境が利用可能でない場合(例えば、停電、別のテスト装置による使用中等)に「バックアップ」を提供する。したがって、本システム及び本方法は、事業継続計画(BCP:business continuity planning)を提供する(すなわち、本システム及び本方法は、大きな中断なく実施及び利用することができる)。
【0026】
図3は、一実施形態によるエンドツーエンドモバイルアプリケーションテストのシステムの図である。本システムは、継続的インテグレーション(CI:continuous integration)/継続的デリバリー(CD:continuous delivery)パイプライン300(例えば、図1におけるサーバーデバイス120及びネットワーク130を含むシステム)と、自動化テストツール302(例えば、図1におけるサーバーデバイス120及びネットワーク130を含むシステム)と、モバイルテストプラットフォーム304(例えば、図1におけるサーバーデバイス120及びネットワーク130を含むシステム)と、コーディネーター306(例えば、図1におけるサーバーデバイス120及びネットワーク130を含むシステム)と、エージェント308(例えば、図1におけるサーバーデバイス120及びネットワーク130を含むシステム)と、ロボットデバイス310と、電子デバイス312(例えば、図1におけるデバイス110)と、バックエンドサーバー314(例えば、図1におけるサーバーデバイス120及びネットワーク130を含むシステム)とを含んでよい。図3は、単一の構成要素を有するシステムを示しているが、本システムは、複数の構成要素(例えば、複数のコーディネーター、複数のエージェント、複数のロボットデバイス等)を含んでよい。
【0027】
CI/CDパイプライン300は、自動化テストの実行を開始する。
【0028】
自動化テストツール302は、テストケースを実行してよく、タスクをコーディネーター306に送信するクライアントとして機能してよい。自動化テストツール302は、外部機能として実装されてよい。自動化テストツール302は、モバイルテストプラットフォーム304及びバックエンドサーバー314と通信してよい。
【0029】
モバイルテストプラットフォーム304は、モバイルアプリケーションを電子デバイス312にインストールして制御する仮想デバイスとして実装されてよい。したがって、モバイルテストプラットフォーム304は、電子デバイス312と通信してよく、電子デバイス312がテストタスク用のバーコードを表示するようなアプリケーション(例えば、バーコードアプリケーション)を実行するように電子デバイス312を構成してよい。
【0030】
コーディネーター306は、自動化テストツール302から送信されたタスクを管理する中央構成要素として動作してよい。コーディネーター306は、受信されたタスクからキューを生成してよく、エージェントによる要求に応じてタスクをエージェントに割り当てる。いくつかの実施形態では、エージェントは、自身がエージェントとの通信を開始しないようなコーディネーター306にタスクを要求する。したがって、複数のエージェントをシステムに容易に追加することができ、拡張性及び広範性(extensiveness)が得られる。コーディネーター306は、ユーザーの認証及びログイン用のユーザーインターフェースと、エージェントコーディネーター通信用のエージェントインターフェースとを含んでよい。
【0031】
エージェント308は、コーディネーター306からタスクを取り出してよい。1つのエージェントしか図示されていないが、本システムは、複数のエージェントを実装してよい。
【0032】
図4は、一実施形態によるテストタスクを分配するシステムの図である。図4に示す実施形態では、コーディネーター400は、第1のロケーションにおける第1のテスト環境402と通信してよく、第2のロケーションにおける第2のテスト環境404と通信してよい。第1のテスト環境402は、コーディネーター400と通信するとともに、ロボットデバイス410及びいくつかの実施形態では電子デバイスのセット412と通信するエージェント406を含んでよい。第2のテスト環境404は、コーディネーター400と通信するとともに、ロボットデバイス420及びいくつかの実施形態では電子デバイスのセット422と通信するエージェント408を含んでよい。エージェント406及び408とコーディネーター400(以下で詳細に説明する)との間の通信リンクによって、複数のネットワーク環境を必要/所望に応じて容易に追加又は除去することができる。
【0033】
エージェント308は、コーディネーター306から取り出されたタスクを実行するように構成されてよい。エージェント308は、コーディネーター306と一方向通信し、コーディネーターのキューにタスクがあるか否かを定期的にチェックするように構成されてよい。一方向通信構造は、システムの動的スケーリング(すなわち、エージェントの容易な追加又は除去)を可能にして、複数の電子デバイス及び複数のエージェントをサポートする。エージェント308は、取り出されたタスクに基づいてロボットデバイス310を制御するように構成されてよい。エージェント308は、自身をコーディネーター306に登録してよい。
【0034】
コーディネーター306とエージェント308との間の通信リンクは、複数のAPIエンドポイントを含んでよい。第1のAPIエンドポイントは、エージェントのエントリーポイントである登録エンドポイントを含んでよく、このエンドポイントを通じて、エージェント308はコーディネーター306に登録する。登録が成功した場合には、コーディネーター306は、エージェント308を登録エージェントのリストに追加する。
【0035】
第2のAPIエンドポイントは、健全性チェックとして機能する要求エンドポイントを含んでよい。エージェント308は、コーディネーター306(静的なURL(uniform resource locator)を有することができる)との一方向通信を送信し、コーディネーター306が現在要求を有するか否かを問い合わせる(すなわち、コーディネーター306は、エージェント308への呼び出し(call)を開始していない)。コーディネーター306がエージェントからの十分な要求を有していない場合には、コーディネーター306は、そのエージェントが利用可能でないと推定してよい。
【0036】
第3のAPIエンドポイントは、報告エンドポイントを含んでよい。エージェント308は、タスクの結果をコーディネーター306に送信してよい。エージェント308は、タスクがまだ実行中である場合には、タスクのステータス又は進捗状況もコーディネーター306に送信してよい。例えば、エージェント308(又はロボットデバイス310を制御する他のソフトウェア)は、ロボットデバイス310がターゲットデバイスに移動し、バーコードをスキャンしたこと等をコーディネーター306に報告してよい。エージェント308は、タスクの完了パーセンテージステータス(例えば、10%完了、90%完了等)を報告してよい。
【0037】
各APIエンドポイントは、APIの機能に応じて異なるペイロードを含んでよい。例えば、要求APIエンドポイントは、バーコードを含んでよい。
【0038】
ロボットデバイス310(又は、いくつかの実施形態では複数のロボットデバイス)は、取り出されたタスクを実行するようにエージェント308(又は他のソフトウェア)によって制御されるように構成されてよい。ロボットデバイス310は、電子デバイス312に表示されたバーコードをスキャンするスキャナー又はスキャンデバイスを当該ロボットデバイス310又はそのアームに取り付けてよい。ロボットデバイス310は、複数の電子デバイスをスキャンするように構成されてよい。ロボットデバイス310を電子デバイス312と適切に位置合わせしてタスクを実行する(例えば、電子デバイスに表示されたバーコードをスキャンする)ことができるように、ロボットデバイス310は、エージェント308が電子デバイス312に対してロボットデバイス310の位置を調整することを可能にする物理スライダー又は他の可動構造物(例えば、トラック、モーションガイドライン、モーター等)を含んでよい。物理スライダー/可動構造物は、ロボットデバイス310を水平、垂直、及び他の方向(例えば、斜め、回転方向等)に移動させることを可能にしてよい。
【0039】
電子デバイス312は、タスクの主体であるアプリケーションソフトウェアを動作させることが可能であるとともに、いくつかの実施形態では、ロボットデバイス310によってスキャンされるバーコードを表示することが可能なディスプレイを有することが可能である1または複数の電子デバイスを含んでよい。1又は複数の電子デバイス312は、ロボットデバイス310を電子デバイス312と位置合わせすることができるような、ロボットデバイス310の可動範囲内になるように配置されてよい。
【0040】
バックエンドサーバー314は、テストされているアプリケーションのバックエンドをホストするサーバーを含んでよい。
【0041】
図5A及び図5Bは、環境に従ったエンドツーエンドモバイルアプリケーションテストの動作フローの図である。本システムは、CI/CDパイプライン502と、自動化テストツール504と、モバイルテストプラットフォーム506と、コーディネーター508と、エージェント510と、ロボットデバイス512と、バックエンドサーバー514とを含んでよい。図5A及び図5Bは、1つのコーディネーターと、1つのエージェントと、1つのロボットデバイスとの一例示の通信フローを示している。しかし、本明細書に説明するように、複数のコーディネーター、複数のエージェント、及び複数のロボットデバイスを実施してもよい。
【0042】
動作520において、CI/CD502は、テストスイートを開始する。動作522において、自動化テストツール504は、テストされるアプリケーションをターゲット電子デバイス(例えば、デバイスN)上にインストールする命令をモバイルテストプラットフォーム506に送信する。インストールが完了した場合には、モバイルテストプラットフォーム506は、動作524において成功確認を自動化テストツール504に送信する。動作526において、自動化テストツール504は、インストールされたアプリケーションをデバイスNにおいて起動する命令をモバイルテストプラットフォーム506に送信する。動作528において、起動が成功した場合に、モバイルテストプラットフォーム506は、成功確認を自動化テストツール504に送信する。
【0043】
動作530において、自動化テストツール504は、スキャンタスクを生成する要求をコーディネーター508に送信する。動作532において、コーディネーター508は、スキャンタスクを生成する。動作534において、エージェント510は、コーディネーター508にタスクについて問い合わせる。動作534はループしてよい。エージェント510によって取り出されるタスクがあるとき、動作536において、エージェント510は、タスクを実行するコマンドをロボットデバイス512に送信する。
【0044】
動作538において、エージェント510は、タスクが完了したか否かについてロボットデバイス512をチェックし、動作540において、ロボットデバイス512は、タスクステータスをエージェント510に送信する。動作538及び540は、タスクが完了するまでループしてよい。動作542において、タスクが完了した場合には、例えば、エージェント510は、ロボットデバイス512によって取得されるバーコード値(すなわち、タスクの結果)を要求する。動作544において、ロボットデバイス512は、バーコード値をエージェント510に送信する。動作546において、エージェント510は、バーコード値をコーディネーター508に送信する。動作548において、コーディネーター508は、バーコード値を自動化テストツール504に送信する。動作550において、自動化テストツール504は、バーコード値をバックエンドサーバー514に送信する。動作552において、バックエンドサーバー514がテストの結果を判断した後、バックエンドサーバー514は、これらのテスト結果(すなわち、成功又は失敗)を自動化テストツール504に送信する。動作554において、自動化テストツール504は、タスクに関するテストが終了したことをCI/CDパイプラインに示す。
【0045】
図6A及び図6Bは、一実施形態によるモバイルアプリケーションテスト環境の図である。このテスト環境は、ロボットデバイス602と、このロボットデバイスに取り付けられたスキャンデバイス604と、複数の電子デバイス606と、移動トラック608とを含む。エージェント(又は他のソフトウェア)は、ロボットデバイス602を制御するように構成することができる。エージェントが、タスクを取り出して電子デバイス610をテストするとき、ロボットデバイス602が電子デバイス610に表示されたバーコードをスキャンすることができるようにスキャンデバイス604を電子デバイス610と位置合わせするために、エージェントは、移動トラック608に沿って図6Aに示す第1の位置から図6Bに示す第2の位置に移動するようにロボットデバイス602を制御してよい。
【0046】
図7は、一実施形態によるモバイルアプリケーションテスト方法のフローチャートである。動作702において、本システムは、コーディネーター部により、少なくとも1つの電子デバイスをテストするタスクをコーディネーター部受信してよい。動作704において、本システムは、少なくとも1つの電子デバイスをテストするタスクを第1のエージェントによってコーディネーター部から取り出してよい。動作706において、本システムは、取り出されたタスクに基づいて少なくとも1つの電子デバイスをテストするように第1のロボットデバイスを制御してよい。動作708において、本システムは、コーディネーター部により、少なくとも1つの電子デバイスのテストに基づくタスクの結果を、コーディネーター部受信してよい。
【0047】
本明細書に開示されたエンドツーエンドテストプロセスに付加的な態様が実装されてもよい。例えば、ロボットデバイスは、複数のスキャナーを備えて、表示されたバーコードに対してスキャナーのバリエーションをテストしてよい。ロボットデバイスは、取り出されたタスクに基づいて、当該ロボットデバイスに取り付けられたスキャナーを交換するようにエージェントによって制御されるように構成されてよい。
【0048】
更なる実施形態では、タスクを取り出すエージェントは、このエージェントがその対応するテスト環境に基づいてタスクを実行することができるか否かを更に判断してよい。上述したように、場所又は他の条件に基づいて、電子デバイスは、特定のテスト環境でしかテストすることができない様々な特性(例えば、電子デバイスのロケーション、電子デバイスが存在するエリアの照明、電子デバイスのブランド、電子デバイスの画面の明るさ等)を含んでよい。生成されたタスクは、特定の特性を有する電子デバイスをテストするタスクを含んでよく、エージェントは、その対応するテスト環境内の電子デバイスのいずれが、テストされるべきそれらの特性を含むか否かを判定してよい。エージェントは、タスクの特定の特性に基づいてテストすることができる電子デバイスをそのテスト環境が含むときに、タスクを受理してよいし、エージェントは、そのテスト環境がタスクを完了するのに必要とされる電子デバイスを含まないとき又は十分な数の電子デバイスを含まないときは、タスクを拒否してよい。1つの例では、タスクは、特定のブランド及び/又は特定の電子デバイスモデルの電子デバイスをテストするものとしてよい。エージェントは、タスクを取り出し、その後、電子デバイスのいずれが特定のブランド及び/又は特定の電子デバイスモデルのものであるか否かを判定してよい。その後、エージェントは、この判定に基づいてタスクを受理又は拒否してよい。
【0049】
加えて、いくつかの実施形態では、テスト環境は、条件をシミュレーションするように構成されてよい。例えば、テスト環境は、周囲照明条件、スキャナーのスキャン角度、デバイスの静止角度、及びデバイスの明るさ設定をシミュレーションするように構成されてよい。さらに、テスト環境には、テスト環境のリアルタイムモニタリングを実施するモニタリング装置が設けられてよい。デバイス、そのデバイスの能力及び設定、並びにアプリケーションバージョンのインベントリ管理が中央集権化されてよい。さらに、コーディネーターは、テスト環境及び全システムとやりとりするためのダッシュボード又はインターフェースを提供してよい。
【0050】
付加的に又は代替的に、本明細書で説明した1または複数のプロセスを実行するために、ハード的に接続された回路類が、ソフトウェア命令の代わりに又はソフトウェアと組み合わせて用いられてよい。したがって、本明細書で説明した実施形態は、ハードウェア回路類及びソフトウェアのどの特定の組み合わせにも限定されるものではない。
【0051】
上記開示内容は、例示及び説明を提供しているが、網羅的であることを意図するものでもなければ、開示した正確な形態に実装を限定することを意図するものでもない。上記開示内容を考慮して変更及び変形が可能であるし、実装のプラクティスから変更及び変形が得られる場合もある。
【0052】
いくつかの実施形態は、任意の可能な技術的詳細統合レベルにおけるシステム、方法、及び/又はコンピューター可読媒体に関するものとすることができる。コンピューター可読媒体は、プロセッサに動作を実行させるコンピューター可読プログラム命令が記録されたコンピューター可読非一時的記憶媒体(又は複数の媒体)を含んでよい。
【0053】
コンピューター可読記憶媒体は、命令実行デバイスによって使用される命令を保持及び記憶することができる有形デバイスとすることができる。コンピューター可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、又はこれらの任意の適した組み合わせであってよいが、これらに限定されるものではない。コンピューター可読記憶媒体のより具体的な例の非網羅的なリストは、次のもの、すなわち、ポータブルコンピューターディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能プログラマブルリードオンリーメモリ(EPROM又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリーメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピーディスク、パンチカード又は命令が記録された溝内の突起構造等の機械的に符号化されたデバイス、及びそれらの任意の適した組み合わせを含む。本明細書において使用される場合、コンピューター可読記憶媒体は、電波若しくは他の自由に伝播する電磁波、導波路若しくは他の伝送媒体内を伝播する電磁波(例えば、光ファイバケーブルを通る光パルス)、又はワイヤ内を伝送される電気信号等の一時的な信号自体と解釈されるべきではない。
【0054】
本明細書に記載のコンピューター可読プログラム命令は、コンピューター可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされうるし、又は、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク及び/又は無線ネットワークといったネットワークを介して外部コンピューター若しくは外部記憶デバイスにダウンロードされうる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送体、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピューター及び/又はエッジサーバーを含むことができる。各コンピューティング/処理デバイスにおけるネットワークアダプターカード又はネットワークインタフェースが、ネットワークからコンピューター可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピューター可読記憶媒体のストレージへこれらのコンピューター可読プログラム命令を転送する。
【0055】
動作を実行するためのコンピューター可読プログラムコード/命令は、アセンブラ命令、命令セットアーキテクチャ(ISA:instruction-set-architecture)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の構成データ、又は1または複数のプログラミング言語の任意の組み合わせで記述されたソースコード若しくはオブジェクトコードのいずれかとすることができる。プログラミング言語は、Smalltalk、C++等のオブジェクト指向型プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語等の手続型プログラミング言語を含む。コンピューター可読プログラム命令は、スタンドアローンソフトウェアパッケージとしてユーザーのコンピューター上で全体又は一部を実行してもよいし、ユーザーのコンピューター上で一部を実行するとともにリモートコンピューター上で一部を実行してもよいし、リモートコンピューター又はサーバー上で全体を実行してもよい。後者のシナリオでは、リモートコンピューターは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザーのコンピューターに接続してもよいし、(例えば、インターネットサービスプロバイダを使用するインターネットを通じて)外部コンピューターに対してこの接続がされてもよい。いくつかの実施形態において、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、又はプログラマブルロジックアレイ(PLA)を含む電子回路が、態様又は動作を実行するために、コンピューター可読プログラム命令の状態情報を利用して電子回路部パーソナライズすることによってコンピューター可読プログラム命令を実行してもよい。
【0056】
これらのコンピューター可読プログラム命令は、汎用コンピューター、専用コンピューター、又は他のプログラマブルデータ処理装置のプロセッサに提供され、コンピューター又は他のプログラマブルデータ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の単数又は複数のブロックで指定される機能/行為を実装する手段を作成するようなマシンを生成してよい。これらのコンピューター可読プログラム命令は、コンピューター、プログラマブルデータ処理装置、及び/又は他のデバイスに、特定の方法で機能するように指示することができるコンピューター可読記憶媒体に記憶されてよい。特定の方法において、命令が記憶されたコンピューター可読記憶媒体は、フローチャート及び/又はブロック図の単数又は複数のブロックにおいて指定された機能/動作の態様を実施する命令を含む製造品の1つを構成するようなものでよい。
【0057】
コンピューター可読プログラム命令は、コンピューター、他のプログラマブルデータ処理装置、又は他のデバイス上にロードすることもでき、それらのコンピューター、他のプログラマブル装置、又は他のデバイス上で実行させるべき一連の動作ステップを、それらのコンピューター、他のプログラマブル装置、又は他のデバイス上で実行される命令が、フローチャート及び/又はブロック図の単数又は複数のブロックにおいて指定された機能/動作を実施するようなプロセスであって、コンピューターによって実施されるプロセスとして生成することができる。
【0058】
図におけるフローチャート及びブロック図は、様々な実施形態によるシステム、方法、及びコンピューター可読媒体の可能な実装のアーキテクチャ、機能、及び動作を示している。この点に関して、フローチャート又はブロック図における各ブロックは、指定された論理機能(複数の場合もある)を実施する1または複数の実行可能命令を含む命令のモジュール、セグメント、又は部分を表してよい。これらの方法、コンピューターシステム、及びコンピューター可読媒体は、図に示すものに対して追加のブロック、より少ないブロック、異なるブロック、又は異なる配置のブロックを含んでよい。いくつかの代替の実施態様では、ブロックに示す機能は、図に示す順序通りに実行されなくてもよい。例えば、連続した示された2つのブロックは、関与する機能に応じて、実際には、同時に又はほぼ同時に実行される場合もあるし、これらのブロックは、時に、逆の順序で実行される場合もある。ブロック図及び/又はフローチャート説明図の各ブロック、並びに、ブロック図及び/又はフローチャート説明図におけるブロックの組み合わせは、指定された機能若しくは動作を実行する専用ハードウェアベースのシステム又は専用ハードウェア及びコンピューター命令の組み合わせを実行する専用ハードウェアベースのシステムによって実施することができることにも留意されたい。
【0059】
本明細書において説明したシステム及び/又は方法は、異なる形態のハードウェア、ファームウェア、又はハードウェア及びソフトウェアの組み合わせで実装されることが明らかである。これらのシステム及び/又は方法の実装のために使用される実際の特殊化された制御ハードウェア又はソフトウェアコードは、sの実装を限定するものではない。したがって、システム及び/又は方法の動作及び挙動は、具体的なソフトウェアコードを参照することなく本明細書に説明されている。すなわち、ソフトウェア及びハードウェアは、本明細書の説明に基づいてシステム及び/又は方法を実施するように設計することができることが理解される。
【0060】
本明細書において使用されるいずれの要素、動作、又は命令も、明示的な記載がない限り、不可欠なもの又は必須のものと解釈されるべきでない。また、本明細書において使用される場合、冠詞「一つ(“a” and “an”)」は、1つ以上の事項を含むことが意図され、「1または複数の~」と区別なく使用される場合がある。さらに、本明細書において使用される場合、用語「セット(set)」は、1または複数の事項(例えば、関連した事項、関連のない事項、関連した事項と関連のない事項との組み合わせ等)を含むことが意図され、「1または複数の~」と区別なく使用される場合がある。1つの事項しか意図されていない場合には、用語「1つ」又は同様の文言が使用される。また、本明細書において使用される場合、用語「~を有する」等は、オープンエンドの用語であることが意図されている。さらに、文言「~に基づいて/基づく」は、別段の明示の記載がない限り、「~に少なくとも部分的に基づいて/基づく」を意味することが意図されている。
【0061】
様々な態様及び実施形態の説明は、例示を目的として提示されており、網羅的であることも、開示される実施形態を限定することも意図していない。特徴の組み合わせが、請求項に列挙され及び/又は本明細書に開示されているが、これらの組み合わせは、可能な実装の開示を限定することを意図したものではない。実際、これらの特徴の多くは、請求項に具体的に列挙されていない及び/又は本明細書に具体的に開示されていない方法で組み合わせることができる。下に列挙する各従属請求項は、1つの請求項にしか直接従属しない場合があるが、可能な実施態様の開示は、各従属請求項が請求項の集合における他のあらゆる請求項と組み合わさったものを含む。説明された実施形態の範囲から逸脱することなく、多くの変更形態及び変形形態が当業者に明らかである。本明細書において使用される用語は、実施形態の原理、実際の応用若しくは市場に見られる技術を越える技術的改良を最も良く説明するために、又は、他の当業者が本明細書に開示された実施形態を理解することを可能にするために選ばれたものである。

図1
図2
図3
図4
図5A
図5B
図6A
図6B
図7