HPE Blog, Japan
1752433 メンバー
6183 オンライン
108788 解決策
新規ポスト
Komiyama

ここからはじめよう_ 23 回目 「Mobile Center 使ってみよう ( UFT連携_その3 ) 」

はじめに

前回から実際に、HPE Mobile Center (以後 MC と表記) と HPE UFT を連携しモバイルアプリケーションのテスト自動化の方法を解説しています。そのため前回までの各ツールのインストールと接続確認、Android デバイス(Nexus 7を利用して解説しました)へ apk ファイル(「擬似オンライン製品購入サイト」)をアップロードしてスクリプトを記録するまでを終えている前提ですので、まだ設定や記録をされていない方は下記のリンクを参考にご自身の環境でセットアップと操作を完了しておいて下さい。

今回は、前回まででキャプチャ(スクリプト記録)を終えたスクリプトに対して、テストデータを割り当てるといった「編集」作業について解説していきます! 

スクリプトの編集(各ステップごとの画面取得)

前回自動化スクリプトを記録しましたが、デフォルトのままだと再生するとエラーが発生した時しかデバイス画面のキャプチャーがされません。そこで、正常に画面遷移した場合でもデバイス画面をエビデンスとして残したい場合、設定を変更する必要がありますのでその手順を説明します。

ツールバーのメニューから「ツール」-「オプション」をクリックして下さい(下記赤枠)。
UFT_MC_45.png

「オプション」画面が開くので、上のタブから「GUI テスト」をクリックし、左のメニューペインから「画面キャプチャ」をクリックしてみましょう。下記のように表示されていますね?そこで、一番上の「静止画像キャプチャをテスト結果へ保存」のプルダウンメニューをクリックしてリストを表示させてみましょう。

UFT_MC_46.png

リストから「常に」を選択します。デフォルトではエラーが発生した場合のみデバイス画面キャプチャーが結果レポートに保存されますが、「常に」を設定する事で正常画面遷移でもデバイス画面を保存できるようになります。ただし、注意点としては、画像ですからなんどもテストを実施していくと HDD 消費をチェックしておく必要があります。適宜 HDD の空き容量はチェックしておくべきでしょう。

UFT_MC_47.png

下記図のように設定されましたね?では、「OK」をクリックして設定を完了させましょう。
UFT_MC_48.png

スクリプトの編集(動的データ(テストデータ)の割り当て)

入力フィールドに入力する文字やリストボックスやプルダウンメニューから選択する項目が複数ある場合、同じスクリプトを再利用して毎回異なる値を入力したり選択したりできるようにしたいですよね。HPE UFT を利用したことがある方はおなじみの「データテーブル」を利用して、固定値として記録された部分(ここではフィールドに入力する文字列を扱います)を実際にパラメータ化して「データテーブル」のテストデータを割り当てていきたいと思います。

今回は、次のような検索フィールドの文字列を想定しています(みなさんの環境では適宜読み換えてください)。図の赤枠部分が検索文字を入力する部分になります。
UFT_MC_44.png

記録時は下記のように検索する文字(入力値)として「High Resolution」を入力しています(赤枠)。

UFT_MC_43.png

UFT のスクリプトでは次のように記録されている箇所(3 行)になります。少し解説しますと、1 行目で検索フィールド部分をタップして入力状態にします。2 行目で入力文字「High Resolution」を入力し、3 行目で Enter  し、検索を実施しているというスクリプトになります。

UFT_MC_49.png

では、この入力文字列である、「High Resolution」を毎回違うテストデータに置き換えられるようにしてみましょう。ここでテストデータとして 今回の擬似オンライン製品購入サイト」で次の3つの

  • 1 回目の検索入力文字: high resolution(←記録時と同じ)
  • 2 回目の検索入力文字: bluetooth
  • 3 回目の検証入力文字: portable

をイテレーションごとに変えて入力できるようにしていきます。そのためにデータテーブルにこの 3 つのテストデータを登録します。UFT の画面の下にある「データ」タブをクリックして下さい。下記図の赤枠部分に表示されるはずです。ここを「データテーブル」機能といいます。ここに先ほどのテストデータを登録していきます。行単位が各イテレーションを意味します。

UFT_MC_50.png

ここで、データの中に、さらにシートが分かれていて、Global と Action 1 というように名前が付いてますね?これについて解説します。UFT ではスクリプトの保守性をあげるためにスクリプトのコンポーネント化が可能です。
分かりやすく例を書いた下記図をみてください。ここで説明している例で言えば「ログイン」はほとんどのスクリプトで必ず遷移しているとすると、この「ログイン」部分の UI に変更がかかると、すべてのスクリプトの編集をしなければなりません。これは非効率的ですよね。そのため、UFT では「ログイン」といった最小画面遷移単位を再利用できるようにコンポーネント化して管理する事ができます。このコンポーネント単位を UFT では Action といいます。つまり UFT の Action とはスクリプトの保守性をあげるための重要な機能という訳です。

UFT_MC_51.png

「データ」タブをクリックした際にシート名として表示された「Action 1 」とはこのコンポーネント化された部分に適用するテストデータという事になります。「Action 1 」だけをイテレーションさせたいのであれば、この「Action 1 」のシートにデータを登録することになります。アクションが複数あり、全体を通したイテレーションに適用したいテストデータの場合は、「Global 」のシートに登録します。下記の図のようにイテレーションの部分が「 Global 」と「 Action 」で入れ子的になっています。図では「Action 3 」だけに 適用していますが、すべての Action で必要であればすべてに別シートでテストデータを登録できます。シートの行がイテレーションに対応しています。つまり、1 行目のデータを最初に実施し、次のイテレーションで 2 行目を実施するというように動作します。カラムはテストデータのパラメータ名になります。図で言うと、「User Name 」とか「Password 」になります。

UFT_MC_61.png

 

上図のスクリプト全体シナリオと各アクションを UFT の UI からも分かりやすく表示させる事ができます。ツールバーから「表示」-「テストフロー」をクリックしてみましょう(下記赤枠部分)。

UFT_MC_59.png

すると、新しいタブとして次のようなフローが表示されましたね?今回は「 Action 1 」だけですが、複数ある場合は、そのフロー順に上下に並ぶように表示されます。そして、トップの「開始」と「終了」までを含めた所が「 Global 」シートで割り当てられることになります。わかりやすいですよね?このフローは実際にテストデータをどう使うかという設定でも利用しますので、次回の実行(リプレイ)で再度触れます。
UFT_MC_60.png

では、設定の続きに戻りましょう。今回は「Action 1」だけですので、「Global 」と「 Action 1 」のどちらに登録しても同じ動作になりますが、ここでは「 Action 1 」のテストデータに登録していきます。今回のパラメータ名は 1 つだけで分かりやすくするためにカラムのAをクリックすると次の「パラメータ名の変更」ウィンドウが表示されますので、「検索入力文字」と分かりやすく書き換えてみましょう(ここは皆さんの環境にあわせて適宜読み替えて下さい)。

UFT_MC_53.png

次に、そのパラメータ名の下に 3 つのテストデータをそれぞれセルをクリックして登録してみましょう。

  • 1 回目の検索入力文字: high resolution(←記録時と同じ)
  • 2 回目の検索入力文字: bluetooth
  • 3 回目の検証入力文字: portable

登録するとこのような画面になっていれば OK です。
UFT_MC_54.png

今回は、テストデータが少ないので直接登録していますが、大量のテストデータを Excel やCSV データ形式で開発チームから渡される場合もあるかと思います。その場合は、該当シートでマウスを右クリックし、「ファイル」または「シート」からインポートしてテストデータをそのまま利用できますので試してみてください(赤枠部分参照)。

UFT_MC_55.png

次にこのテストデータを割り当てる側の「high resolution」と固定値になっている入力文字部分をパラメータ化します。パラメータ化の方法はいくつかありますが、ここでは直接記述してしまう方法で解説します。慣れるとこの方法が個人的には楽です。検索入力文字の部分である "High Resolution" を削除してみましょう(下記反転表示部分)。
UFT_MC_57.png

削除したら、

DataTable("検索入力文字", dtLocalSheet)

と記述してみましょう。下記図(赤枠箇所)のようになるはずです(ここもみなさんの環境にあわせて適宜読みかえて下さい)。

UFT_MC_58.png

記述内容について解説しますと、DataTable は、「この値をパラメータ化してデータテーブルからデータをもってくるぞ」という意味(をもった機能)です。

次に括弧内の引数についてですが、第一引数は、先ほど説明した「パラメータ名」です。そう、「検索入力文字」ですね。第二引数の「dtLocalSheet 」は、「このデータはコードが記述されている Action のシートから割り当てますよ」という意味です。ですので、もし「 Global 」から割り当てる場合は、「 dtGlobalSheet 」にします。

ここまでで、保存しましょう。保存の仕方は前回に掲載してますのでご覧下さい。これで編集作業は終わりです。お疲れ様でした。本当は再生するところまで解説したかったのですが、だいぶ長くなってしまったので、次回にまわそうと思います。

次回こそは、今回編集したスクリプトをつかって「リプレイ(再生)」、「レポート確認」を紹介してみたいと思います。

0 感謝
作者について

Komiyama

HPE に来て早いもので、もう6年目に突入! NO GAME, NO LIFE !