Testing of Flash or HTML5 Animations or Games (OpenGL)
高速で動くグラフィックを使用するアプリケーションのテストは、さまざまな理由から、自動化に関わる多くの人々に長い間問題を引き起こしてきた。
イメージベースとオブジェクトベースの自動化テクニックについては深く触れませんが(それはまた別の機会に!)、多くのオブジェクトベースのツールは、基礎となるオブジェクトやプロパティにアクセスするために、これらのフォーマット(Flash、Flex、HTML5、OpenGLなど )に侵入することができないということは重要です。また、画像ベースのツールの中には、高速で動く画面の性質上、このようなフォーマットを自信を持って自動化できないものもある。
しかし、T-Plan Robotはこのような環境に接続できるだけでなく、GUI(グラフィカル・ユーザー・インターフェース)を通して、対象ユーザーが使用することを想定した環境を直接キャプチャし、自動化することができます。
ゲームのシーケンスが正しいかどうか......。アプリのメニューが正しいか...ゲームプレイが期待通りか...複数のプラットフォーム、ブラウザ、デバイスでゲーム/アプリを検証!すべてT-Plan Robot Enterpriseで。
OpenGLや Flashなどを 正しくテストするための重要なポイントは、まず高速で動くディスプレイを分析する能力を持つことです。従来、画面データへのアクセス能力に依存するツールは、テスト環境に接続するために「VNC」のような方法を使用してきました。しかし、VNCでは、データのエンコード、転送、デコードを十分に高速に行うことができないため、画面が部分的に表示されることがよくある。
技術の進歩を活用することで、このようなテストに直接的を絞った特定の接続方法を提供できるようになりました。iOSと アンドロイドの 両モバイル・プラットフォームでは、デスクトップ・コンピューターへの画面の「スクリーン・ミラーリング」が可能です。このミラーリング・プロトコルの性能は、ビデオや音声のライブ・ストリーミングという性質上、他の追随を許しません。この機能を利用することで、ロボットはデスクトップのマウスとキーボードを使って操作しながら、リアルタイムでデバイスの画面にアクセスすることができる。
テスト環境に接続した後、アプリケーションを自動化するプロセスは、標準的なアプリケーションのテストと変わりません。例えば、タップ、スワイプ、クリックなどです。
Robotの標準コマンドはすべてのテスト環境に適用できますが、モバイルテスト専用に設計されたカスタムコマンドもあります。例えば、"スワイプ "や "ピンチ/ズーム "などのコマンドは、標準的なクリック/ドラッグコマンドを使用していますが、それぞれの状況において正しく適用されるようにタイミングを調整しています。
T-Plan Robotによるモバイルゲームアプリケーションの自動化例については、以下をご覧ください:
ビデオEA Gamesの「Need for Speed」の自動化
以下のコードは、T-Plan Robot独自のスクリプト言語を使用したスクリプトの表示例です。また、これはiOSとAndroidの両方で有効なクロスプラットフォームのスクリプトです。このコードは、上記のビデオのプロジェクト - EA Gamesによる「Need for Speed」の自動化 - に基づいています。
##############################
# Define required procedures:
## Identify the target test platform:
Procedure SetEnv {
If ({_PROTOCOL}==ADB || {_PROTOCOL}==RFB) {
Var Env=Android
} else if ({_PROTOCOL}==APPLE) {
Var Env=iOS
}
}
## Perform tap based on an image search:
Procedure Tap {
Waitfor "match" passrate="85" method="search2" template="NFS\{Env}\{1}.png"timeout="15s"
if ({_EXIT_CODE} > 0) {
Step "Click {1}." result=fail
Exit "1"
} else {
Step "Click {1}."
Mouse "click" to="x:{_COMPARETO_CLICK_X},y:{_COMPARETO_CLICK_Y}"
}
}
## Record displayed text:
Procedure CheckText {
Verify Back
Var Area=
If ({Env}==Android) {
Var Area =x:96,y:222,w:983,h:336
} else if ({Env}==iOS) {
Var Area=x:68,y:161,w:606,h:269
}
Compareto method="tocr" cmparea="{Area}"
if ({_EXIT_CODE} > 0) {
Step "Confirm Text." result="fail" actual="No Text Found!"
Exit "1"
} else {
Step "Confirm Text." actual="{_TOCR_TEXT}"
}
}
## Take a screenshot:
Procedure ScreenCap {
Wait 6s
Screenshot {1}_{Env}.png
}
###### End of Procedures ######
##############################
# Start execution code:
// Identify target test environment
SetEnv
// Open App from Home Screen
Tap NFS_App
If ({Env}==Android) {
Press F4 count=3 wait=1s
}
// Adjust controls
Tap Controls
Tap Minus
Tap Plus
Tap Back
// Verify About statement
Tap About
CheckText
// View available races
Tap Map
#####################
## Lets go racing! ##
Tap PetersonSt
Tap OnTheClock
Tap Tick2
ScreenCap RaceCar
Tap Tick
Timer RaceTime Start
Tap SteerRight
Tap SteerLeft
Tap SteerRight
Tap SteerLeft
Tap SteerRight
Tap SteerRight
Tap SteerRight
Tap SteerLeft
Timer RaceTime Stop
// Invoke Pause menu
If ({Env}==Android) {
Mouse "click" to="x:650,y:31"
} else if ({Env}==iOS) {
Mouse "click" to="x:405,y:23"
}
// Exit Race back to Main screen
Tap Exit
Tap Yes
// Exit app
If ({Env}==Android) {
Tap ExitApp
Tap Yes
Press F4
} else if ({Env}==iOS) {
Mouse click btn=right
}
Report "{Env}_TestResults.xml"
#####################
#### End of Test ####