はじめに
これまでの回を通して、HPE Mobile Center (以後 MC と表記) と HPE UFT を連携しモバイルアプリケーションのテスト自動化の方法を解説してきました。今回は前回までスクリプトの記録&編集がされている前提で話をします。そのため前回までの各ツールのインストールと接続確認、Android デバイス(Nexus 7を利用して解説しました)へ apk ファイル(「擬似オンライン製品購入サイト」)をアップロードしてスクリプトを記録し、編集するまでを終えている前提ですので、まだ設定や記録をされていない方は下記のリンクを参考にご自身の環境でセットアップと操作を完了しておいて下さい。
- ここからはじめよう_ 17 回目 「UFTv12.5 (インストール編 )」
- ここからはじめよう_ 20 回目 「Mobile Center インストール (Windowsマシン版)」
- ここからはじめよう_ 21 回目 「Mobile Center 使ってみよう ( UFT連携_その1 ) 」
- ここからはじめよう_ 22 回目 「Mobile Center 使ってみよう ( UFT連携_その2 ) 」
- ここからはじめよう_ 23 回目 「Mobile Center 使ってみよう ( UFT連携_その3 ) 」
では、前回までで記録&編集が終わったスクリプトをつかって再生(リプレイ)し、その結果レポートを出力するところまで解説していきます。
再生(リプレイ)
前回までで記録&編集を終えて保存したスクリプトを開いていきます。まずはUFT を起動して(起動については 21 回で触れていますのでそこを見て下さい)、ツールバーから「ファイル」-「テスト」をクリックして下さい(下記図参照)。
「テストを開く」ウィンドウが開くので、ここでみなさんが保存したスクリプトを選んで「開く」をクリックしましょう。デフォルトでは、スクリプトの保存フォルダはスクリプトを作成したユーザーの「マイドキュメント」の配下に「 Unified Functional Testing 」というフォルダが作成され、その直下にスクリプト名と同じフォルダと共に格納されます。もし前回保存先を指定して変えているようであれば、みなさんの環境に読み替えてスクリプトを開いてください。
すると前回までみなさんがスクリプトを記録&編集してきた状況と同じスクリプト(Action 1 )が開いてる状態になりましたね?私の場合は下記図のようになっています。
「テストフロー」図も前回にならって表示させてみましょう。今回テストデータを割り当てたアクションで右クリックして「アクション呼び出しプロパティ」をクリックして下さい(下記図参照)。
「アクション呼び出しプロパティ」ウィンドウが開くので、「実行」タブを開き、そこから「データテーブル反復」を設定します。前回、Action 1 だけをイテレーションし、その都度別のテストデータ(「検索入力文字」)を割り当てましたよね?その割り当てたテストデータは 3 つでした。そのテストデータのどれを使うかを設定します。
- 「1反復のみ実行」
スクリプト編集中なんどもデバッグ再生する機会があるので、その際に全てのテストデータを実施していては効率が悪いので最初の 1 つめのデータ( 1 行目)だけ利用する設定です - 「すべての行を対象に実行」
これは編集がすべて終わり、実際にすべてのテストデータをイテレーションさせて実行する場合に指定します。 - 「実行開始行」&「終了行」
これは編集中もしくは特定の目的でテストデータの実行部分をイテレーションする行の開始と終了行を絞って実行する場合に利用します。
今回は、私は「すべての行を対象に実行」を選択しました。みなさんは適宜、好きな選択をして「OK」をクリックしてください(下記図参照)。
今回、私の環境では「 Global 」のテストデータは設定しませんでしたが、「 Global 」の場合のテストデータの反復字の割り当て方法も触れておきます。ツールバーから「ファイル」-「設定」をクリックして下さい(下記図参照)。
「テストの設定」ウィンドウが開くので左のペインから「実行」を選択してください。すると、右に先ほど Action のときと同様の「データテーブル反復」のテストデータ割り当て方法が表示されていますね? Global のテストデータを設定した場合は、ここで設定を行います。
ここまでで反復の設定が終わったので、さっそく再生(リプレイ)していきます。ツールバーから「実行」をクリックします(記録ボタンの右隣になります、下記図を参照してください)。ボタンをクリックする代わりにショートカットキーの「 F5 」をクリックしても同じです。
「実行」ウィンドウが開くので、ここで「結果保管場所」として2つのオプションがありますので、どちらかを選びます。
- 「新規実行結果フォルダ」
毎回実行した結果を別の名前をつけて保存する場合に利用します。毎回レポートを別レポートとして出力しますので、大量のテストデータがある場合や、実行頻度が多い場合は、HDD 容量消費量も定期的に監視しておく必要があります。 - 「一時実行結果フォルダ(古い一時結果に上書き)」
Tempフォルダ内にデフォルトでは出力され、それは毎回上書きされます。スクリプトの編集中にデバック実行する際はこちらを利用する事が多いです。
今回は、「一時実行結果フォルダ(古い一時結果に上書き)」を選択して「実行」をクリックします。
「実施」により、「再生(リプレイ)」がはじまります、スクリプトのラインが黄色にハイライトされているのはその行が実際に現在実施されているスクリプト箇所になります。RDP を開いていればデバイス側のリモート画面も表示されるので動作画面も手元にデバイスがない場合でも確認する事ができます。私の場合、「 Action 1 」で割り当てたテストデータを 3 回分反復して終了となります。
テストデータ分、反復実行が終わったら「再生(リプレイ)」は終了です。次は結果レポートを見てみましょう。
結果レポート
ツールバーの右の方にとファイルアイコン「最後の実行結果」があるので、こちらをクリックしてください(場所が分からない方は下記図を見て下さい)。
新しいタブとしてレポートが下記図のように開きましたね?このタブで表示された内容が実行した結果レポートになります。
このタブ内だと解像度によってはすごく小さく描画エリアが限られている場合もありますので、レポート自体がHTML ですからみなさんが良く使っているブラウザでレポートだけを表示してみましょう。やり方は、まずタブの部分で右クリックします。右クリックメニューから「ファイルのパス/名前をコピー」をクリックしましょう(下記図参照)。
私の場合は、Chrome でレポートを開いてみたいと思うので、Chrome ブラウザを起動して、URL入力部分にマウスをあてて「 Ctrl + p 」で貼り付けて「 Enter 」をクリックしましょう。するとブラウザ内にレポートがタブ表示と同様に表示できます。
テストデータを使った反復がどのようにレポートで確認できるかみてみましょう。まず、左上の「テストフロー」をクリックすると下にドリルダウン型で時系列に結果レポートがイテレーションごとに表示されているのがわかりますね(赤枠部分をみてください)?私の環境では Global のテストデータはなかったのでは今回は反復一回のみで表示は「テスト反復:行 1 」となっています。 Action については今回は Action 1 に対して 3 つのテストデータを割り当てたので、3 つ表示されているのが分かります(下記図参照)。これは 3 つ以上でも同じように表示されます。
テストデータとして何を利用したかを確認するために、右上の「詳細表示」をクリックしてみましょう(下記図右上赤枠参照)。
次のように詳細サマリー表示の画面が表示されます(↓)。そこで、右にある「テストデータ」をクリックしてみましょう(下記図参照)。
するとExcel 形式でテストデータのリンクが表示される画面がポップアップするので、リンク(Default.xls)をクリックしてローカルに保存しましょう。そして、その保存したデータを Excel で開いてみましょう。
Excel で開くと下記のようにシートが Global または Action 単位でそれぞれに設定したテストデータを格納しているのが分かります。これでテスト結果レポートから各イテレーション実行時にどんなデータを使ったかがリストとして理解する事ができます。今回は入力のみですが、期待値として表示されたり出力されたデータもこのテストデータに表示させる事ができます。
実際に「検索入力文字」としてテストデータが使われたかどうかを確認しましょう。該当反復のステップをクリックしてみましょう(下記図では Action 1 の反復2回目の「検索入力文字」を入力した後のステップ)。すると右側にエビデンスとなるスクリーンキャプチャとステップ実行時の各詳細情報が表示されています「ステップの詳細」。スクリーンキャプチャの図をクリックしてみましょう。
小さくて見づらいかもしれませんが、左上の入力フィールドに反復2回目用に準備してたテストデータ「 bluetooth 」が入力されているのがわかりますね。ちゃんと正しくテストデータを使って動的にスクリプトを実行できた事が分かります。
次に「システムモニタ」をクリックしてみましょう(下記図参照)。
今回、デバイスのリソース情報(バイタル情報)としてCPU、と利用メモリー量を取得していますので、その情報が上から時系列に表示されます。
不具合発生時だけでなく、デバイスのリソースをできるだけ消費しないようにアプリを作る事もモバイルアプリ開発においては重要項目になりますので活用する機会は多いと思います。
次にデバイスログをみてみましょう。テストフローのステップ表示の一番下に移動して、「カスタム:デバイス名」をクリックしてみましょう。ここでは私の環境は「 Nexus7 」ですので、図のように表示されています。
クリックすると「カスタムステップの詳細」が右に表示されますので「~~~.log」のパスをドラッグしてコピーしましょう。そしてブラウザのURLに貼り付けます。
次のようにデバイスのログが表示されます。Android の場合、logcat のログを利用して取得したログになります。このログを利用する事で不具合や問題発生時に切り分け作業が楽になります。
結果レポートはHTML表示ですので、保存も非常に楽です。テスト結果やテストケースが増加してきた場合や今回の検証環境のような 1 台ではなく複数台数を利用する場合は、テストケース(スクリプト)、テスト結果を管理するためのテストマネジメントツールの導入をお勧めします。
HPE ではテストマネジメントツールとして HPE ALM/QC があり、こちらも別の担当がブログで書いていますので興味があったらそちらもみてみてください。
最後に、複数のデバイスを反復ごとに変えながら実行する設定について説明します。
デバイス変更の自動化
デバイスが 1 台だけであれば、設定自体はこれまでのとおり何も変えなくても動作しますが、デバイスごとにスクリプトを作成していたのではせっかく自動化したのにスクリプト再利用性が低くなってしまいます。Mobile Center と UFT を利用してスクリプトを作成している場合、次のようにスクリプトを再利用できます。
- Native Application: プラットフォームごと(Android, iOS)に再利用可能
- Web Application: プラットフォームが異なる場合も再利用可能
今回、Native Application の apk ファイルを使ってスクリプトを作成しましたので、このスクリプトを他の Android 端末で動作させるための設定について説明します。そのために私の環境を再度説明しますと、スクリプトを記録(キャプチャ)した際、利用したデバイスは Nexus 7 でした( 22 回を参照してみてください)。
そこで、もう一台別の Android デバイスを接続して管理画面を見てみましょう(下記図参照)。ややこしくなりますが、私の環境では同じく 2 台目のNexus を接続しています。
MC では、デバイスを一意に認識するために、Android であれば device ID を、iOS であれば UDID を識別しています。具体的にみていきましょう。管理画面の各デバイスが表示されている箇所の下に記載されています( 2 つ目の赤枠部分)。もう少し詳細情報をみるために、「・・・」部分をクリックしましょう。カーソルをもっていくとアイコンが表示されますので、やってみてください。
デバイス詳細情報画面画表示されます、上から 2 番目に表示されるのが Android の device ID になります(赤枠部分)。他にも CPU やプラットフォームOS のバージョンなど収集した情報が表示されています。もう一台のほうも同様に確認できますので各自確認して下さい。
記録したデバイスはどれだったか?を今度はみていきます。UFT の画面に戻り、記録したスクリプトが開いてますね?もし閉じてしまった人は、この回の最初の方にスクリプトの開き方を説明していますので再確認してください。スクリプトのコード部分の Device ("Device") にマウスをもっていき右クリックしてみましょう。そして「オブジェクトのプロパティ」をクリックします。
「オブジェクトのプロパティ」ウィンドウが開きましたね?オブジェクトというのは UFT ではスクリプトの保守性や管理の上で非常に重要な考え方に基づいているのですが、長くなりますのでここでは省きます。UFT はオブジェクトによって操作対象のパーツを一意に認識し管理している位に考えておきましょう。次に「+」をクリックして下さい(下記参照)。
これまで再生の手順で説明した時にはUFT のツールバーにある「記録」-「記録と実行環境設定」の設定でデバイスを設定しましたが、自動で割り当てるには、直接オブジェクトがもっているプロパティをデータテーブルを使ってパラメータ化してGlobal のテストデータとして割り当てる事でイテレーションごとのデバイス変更を自動化できます。そのために、一意に認識する device ID をパラメータ化しないといけませんので、「プロパティ」画面から「 id 」を選択してOK をクリックして下さい(下記図参照)。
追加されているのが分かりますね(下記図参照)?この device ID が記録した時に利用したデバイスになります。ここまでで一度「 OK 」をクリックして閉じてください。
先ほど、MC の管理画面で確認した再生(リプレイ)実行したいデバイスのdevice ID を取得していますので、データシートの Global を開いてみましょう。分かりやすくカラム名を「 DeviceID 」に変えると理解しやすいです。私の環境では 2 つの Android デバイスを利用して次のようにテストデータを入力しました(下記図参照)。
この Global のテストデータをイテレーション毎に割り当てられるように編集していきます。先ほど閉じたオブジェクトのプロパティ画面を同じ手順で開いてください。開いたら先ほど追加した Device ID を意味する「 id 」プロパティの値にマウスカーソルをあてて、右に表示される矢印アイコンをクリックして下さい(下記図参照)。
「値オプション」ウィンドウが開くので、ここで「定数」から「パラメータ」をチェックし、「データテーブル内の場所」で Global に該当する「グローバルシート」にチェックし、その後に「名前」のプルダウンメニューから先ほどテストデータを入力したカラム名「 Device ID 」を選択してください(下記図のようになります)。ここは私の設定ですので皆さんの設定に適宜読み替えてください。設定したら「 OK 」をクリックして閉じて下さい。
「オブジェクトのプロパティ」画面に戻ると、id プロパティの「値」がパラメータ化されてGlobal のカラム名「DeviceID」が割り当てられたのが分かります(下記図参照)。これでパラメータ化は終わります。
復習として、前回のデータテーブルで Action と Global のテストデータをどのように利用するか再説明すると、次の図のようになっています(↓図では「 Global 」 と 4 Action の「 Action 3 」に対してイテレーションを想定しデータテーブルでテストデータを割り当てています)。私のスクリプトでは Global イテレーションでデバイスを替え、同じデバイスを利用したスクリプト内の「 Action 1 」イテレーション毎(私の準備したテストデータ例では 3 回分)に「検索入力キーワード」を変えながら実施する動作になります。
ここで、デバイスをイテレーション毎に替えて再生(リプレイ)実施するための最後の作業としてアプリケーションの起動設定をコードに追加記述します。具体的には次をコードの先頭に追加します。
Device("Device").App("Advantage Shopping").Launch
「記録と実行環境設定」でデバイスに紐づいてアプリケーションをインストール、再起動するといった設定をしましたが、デバイスを替えた場合は、その紐づけがないため、都度最初のコード部分に記述することで対応します。Launch に第一引数、第二引数をつける事ができます。どのような引数がとれるかは次の図を見て下さい。
2 台目にはまだアプリはインストールされていないので、1 台目にはすでにインストールされていますが、Install を指定、アプリは再起動した画面から操作をしているので、 Restart を指定しています。実際のスクリプトは下記図のようになります(下記図参照)。
ここまででデバイスを替えながら再生(リプレイ)実行する編集ができましたので、学習した再生を試してみてください。再生が終わったら結果レポートも見てみましょう。Global と Action でそれぞれイテレーションが実施され私の環境であれば次のようになっています(下記図参照)。「Global 」でデバイスを毎回替え、「 Action 1 」 で「検索入力文字」を毎回変更して実施していることがレポートでも分かります。本当に実施しているかの確認方法についてはすでに触れていますので、忘れてしまったら再度、結果レポートの見方をみてもらい、エビデンス画像や利用したテストデータを見て確認して下さい。
これで、一通り、Mobile Center と UFT を利用したモバイルアプリケーションのテスト自動化についての解説を終えました。お疲れ様でした。