キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

QTP勉強会--マニュアルを読み解く

ゆもつよ
頻繁なアドバイザー

QTP勉強会--マニュアルを読み解く

QTPマニュアル目次一覧です

 

QTPマニュアル目次一覧.jpg

7 件の返信
ゆもつよ
頻繁なアドバイザー

第一回QTP勉強会議事メモ

第一回勉強会

 

日時:2012年04月19日

場所:日本HP

参加人数:17名

 

 

<勉強会について>

■背景と目的
–LUG(ローカルユーザグループ)設立について
 •目的
  −ユーザ間のコミュニケーションを促進することにより、QTPに関する知識やノウハウを共有を図ります。
  −製品機能に関する日本におけるユーザの意見や要望を米国本社に伝え、日本のユーザのプレゼンスを向上させます。
 •LUG会員の要件
  −HP Functional Testing softwareのユーザ。製品の購入ユーザだけでなく、エンドユーザのライセンスを利用して開発する利用ユーザも含まれます。
 •会費
  −無料
–LUG準備会を実施
 •活動内容について検討
 •LUGより前にもっと軽い感じの勉強会から始めることとなった

 

■勉強会の進め方
–日本語ユーザガイドを読み解く勉強会を行う。
 •1時間はユーザガイドベースの学習
 •Webでどこの章をやっていて次どこをやるかなどが分かるようにしておく
 •勉強会の疑問と解決方法は必ず公開できるようにする(議事メモ)
 •当日発表の資料があれば簡単なものでよいので公開する
 •残りの1時間は毎回毎回その場で決める(質問タイム、事例紹介など、毎回決める)
 •開催頻度は月1回~2回
  –5月以降は2週、4週で開催
   •5月は10日、24日(両方とも木曜日)
  –3ケ月は継続してみて、今後の進め方を再確認する
 •上手くいけばここからWGを作るなどの具体的な活動に発展させていきたい
 ・勉強会会場はHPだけでなく、持ち回りで場所を貸しあう。
 •毎回20名位を募集人員にする。最初の数回はHPで場所を確保する

 

■勉強会の心構え
–気楽に参加してください
–毎回出れなくても大丈夫、出れるときにでれればOK

–誰かから情報をもらうだけでなく、みんなで情報を共有しあうものにしていきます

–「こんな簡単なことを聞いてもよいのか?」と思わないで大丈夫です。どんどん聞いてください

–わかる人はどんどん答えてください。(講師が教える、、というものではありません)

–こんなことを勉強したいという意見もどんどんください

 

 

<ユーザマニュアルを読み解く>
■第22章

–パラメータ化できるものには何があるか?
  チェックポイント
 オブジェクトのプロパティ
 ステップで定義した操作の引数

–パラメータタイプ
 テスト/アクション
 環境変数
 データテーブル
 乱数
 
–データテーブルを使ったパラメータ化の実演

 

–アクションパラメータを使う方法の実演

 

■質問

–OSが異なる(言語、バージョン)場合のインストーラのテストでQTPのスクリプトを使いまわすには?インストーラはOSで表示言語やインストールするアプリの言語を動的に変更する

 

–パラメータを引き継ぐ場合、出力値がひとつの場合のやり方はわかったが、出力値が複数あり、それら一つ一つに対して詳細を見て生きたい場合はどのように確認するのか?

 

–エキスパートビューを使うかキーワードビューを使うか?実際に現場で適用する際はどちらを使うのがよいのか?

 

■宿題
 ・住宅検索システムの検索情報からヒットする検索結果の件数が複数ある場合に1件づつ検索結果の明細を開いて内容を確認していくスクリプトを作成する

(4月24日、宿題の題材を変更しました。詳しくはこちらを参照してください)

 

■次回「ユーザマニュアルを読み解く」
 ・第四章 

次々回「ユーザマニュアルを読み解く」
 ・第五章 

ゆもつよ
頻繁なアドバイザー

第二回勉強会議事メモ

第二回QTP勉強会

 

日時:2012年05月10日 18時~20時

場所:日本HP

参加人数:15名


 

<宿題答え合わせ>
■宿題
 ・飛行機予約システム(QTPのサンプル)の検索情報からヒットする検索結果の件数が複数ある場合に1件づつ
  検索結果の明細を開いて?内容を確認していくスクリプトを作成する
 ・基本的な考え方は、検索結果の数をどうやって取得するか?
  -ラジオボタンのプロパティで取得...items countをGetROPropatyで取得できることを確認
  -テーブルの列数を取得...ラジオボタンの数とテーブルの列数が一致しない

 

  <宿題の回答例>

 
  <宿題回答例に対するコメント>
  ・ラジオボタンの選択は、Value値を使わなくても#1、#2といった値で目的のものを選択できるはず(Helpにそういう記載あり)
  ・検索結果の数(ループさせる数)は、割り算するよりitemcountというラジオボタンのプロパティを取得して使ったほうが良いだろう
  ・Bitmapの名称は一意になるようにタイムスタンプを使ったほうが良いだろう
  ・この回答例では、スクリプトの中でVBScriptを使い文字列操作などで対応しているが、データテーブルを作成し、そこにすべての値を出力したほうが
   結果の確認やエビデンスを残すという観点でよりよいと思う
  ・Bitmapが0バイトのファイルとして保存されてしまっている
  ・Bitmapが画面に表示された部分しか保存されていない、全画面の取得はどうするべきか?


<ユーザマニュアルを読み解く>
■第4章 オブジェクトリポジトリ内のテストオブジェクトの管理

4章の内容に入る前に、オブジェクトリポジトリとはどういうものかを説明
・オブジェクトリポジトリとは
 -画面の要素(入力フィールドやボタンなど)の情報をスクリプトとは別に格納している..これをオブジェクトと呼ぶ。
 -オブジェクトのプロパティのうち主要なものをいくつか自動で選び、一意に認識できるようにする...これを物理名とよぶ。
  スクリプトには一意に認識したものを認識させる論理名が記載される。

・オブジェクトリポジトリのメリット
 -仕様変更でオブジェクトの名前が変わったとき、スクリプトに直接一意に認識する物理名が記述されているとそれらをすべて書き直さないと動作しなくなる。
  (たとえば、スクリプトを100本作っていたら100本すべてを修正しないといけない。しかしリポジトリに格納してあれば物理名1回の修正だけで100本のスクリプトの
  修正がいらない)
 -論理名を人が分かりやすい名前(たとえば日本語の名前)にできるのでスクリプトが読みやすくなる。

・オブジェクトリポジトリの特性
 -オブジェクトリポジトリとスクリプトはセットで利用しないといけない。たとえばスクリプトだけコピーして、新しいスクリプトにペーストしてもそのスクリプトは動かない
 -画面の記録をしていくとそのときのオブジェクトはローカルオブジェクトリポジトリに記録される。ローカルオブジェクトリポジトリは、ひとつのスクリプトでしか使えない
 -複数のスクリプトで同じオブジェクトリポジトリを使いたい場合は、ローカルにあるリポジトリを「共有オブジェクトリポジトリ」として保存する。別のスクリプトで利用する際に
保存した共有オブジェクトリポジトリを関連付けると動作するようになる。


4章の説明
・「ナビゲートして学習」...表示した画面のオブジェクトをいっぺんに記録する機能。記録したオブジェクトは共有リポジトリとして保存する
  

■質問

・ローカルリポジトリと共有リポジトリでオブジェクトのコピーをしたりマージしたりといったことはできるか?
 →はい、詳しくは5章で学習します。
 

■宿題
 ・今日の宿題の回答例を以下の観点で直してください
  ・ラジオボタンの選択は、Value値を使わなくても#1、#2といった値で目的のものを選択するように変更(プロパティ値のselected item indexも使えるかもしれない)
  ・検索結果の数(ループさせる数)は、割り算するよりitems countというラジオボタンのプロパティを取得して使ったほうが良いだろう
  ・Bitmapの名称は一意になるようにタイムスタンプを使ったものにする
  (ベースにするスクリプトは新しく記述しても、今回の回答例を使ってもらってかまいません。今回の回答例を使う際は、オブジェクト
  リポジトリは取り直しなので、「ナビゲートして学習」機能で、共有リポジトリを作ってみましょう)

 

■次回「ユーザマニュアルを読み解く」
 ・第四章の続き...ベリサーブ向山さんに講師をしてもらいます
 ・次回は、勉強会の後に懇親会を近所の居酒屋でやります!(各自自腹です)

ゆもつよ
頻繁なアドバイザー

第三回勉強会議事メモ

第三回QTP勉強会
 
日時:2012年05月24日 18時~20時
場所:日本HP
参加人数:13名

 
<宿題答え合わせ>
■宿題
第一回勉強会の宿題の回答例を以下の観点で直してください
・ラジオボタンの選択は、Value値を使わなくても#1、#2といった値で目的のものを選択するように変​更
   (プロパティ値のselected item indexも使えるかもしれない)
  ・検索結果の数(ループさせる数)は、割り算するよりitems countというラジオボタンのプロパティを取得してみる
  ・Bitmapの名称は一意になるようにタイムスタンプを使ったものにする
  
  <宿題の回答例
  ※宿題をやってきてくれた吉村さんからは許可を取って掲載しています

 

  <宿題回答例に対するコメント>
  ・テスト結果となるBMPの格納先は、テスト実行時に指定されるテスト結果格納先に入れてしまうほうが良いと思う

 

<ユーザマニュアルを読み解く>
■第4章 オブジェクトリポジトリ内のテストオブジェクトの管理

1、オブジェクトリポジトリの保守の一連の流れ
・フライト予約Windowsアプリケーション(QTPのサンプルとしてついている)
 -フライトを予約して、FAX予約画面を開きキャンセルをして、終了させるスクリプトを記録
  →再生するとエラーになる
・エラーの原因を調査する
  -オブジェクトリポジトリの画面で強調表示を行い、テスト対象のオブジェクトを認識できるか確認
  -オブジェクトスパイで実行中のオブジェクトとテストオブジェクトの必須プロパティを比較
  →ウインドウの名前が毎回変わっているから(ウインドウ名+予約NO)
・対応方法1
  オブジェクトを識別しているプロパティに正規表現を使う(テストオブジェクトのプロパティの毎回変わる部分を *に置き換える...i.e.[ウインドウ名 *])
  ※ 正規表現は25章で解説されているので別途勉強会の題材にします

・対処方法2
  オブジェクトを識別しているプロパティのうち、実行時に一致しないプロパティを必須プロパティから削除する...i.e.[ウインドウ名+予約NO]を削除
  ※ ただし、これによって別の画面のボタンが認識して動いてしまうケースもあるので注意。
  

2、一連の保守の流れで出てきた用語について

・テストオブジェクトとは?
 オブジェクトリポジトリに格納してあるオブジェクトとそのプロパティ値のこと。
 テスト実行時にテスト対象のオブジェクトから取得したプロパティ値は、ランタイム(実行中)オブジェクトと呼ぶ。
 テストの再生時はテストオブジェクトの値とランタイムオブジェクトの値が一致するかでオブジェクトを識別している。
 ※第一回目の宿題の回答のスクリプトにて使っているGetROPropatyという関数はランタイムオブジェクト(RO)からプロパティ値を取得していて、第二回目の宿題にて使っているGetTOPropatyとはテストオブジェクト(TO)からプロパティ値を取得している

 

・テストオブジェクトの名前とは?
 テストオブジェクトの名前は論理的なものなので、自分の読みたい名前に変更しても問題ない。テストオブジェクト上で名前を変更するとそのテストオブジェクトを使っている全スクリプトに変更内容が反映する

 

 

・記録時ではなく、その後でできるオブジェクトの新規登録方法あれこれ
  方法1:アクティブスクリーン(画面上のオブジェクトを右クリックして登録可能)
  方法2:新規テストオブジェクトの定義(リソース>オブジェクトリポジトリ>オブジェクト>新規オブジェクトの定義画面にて、プロパティ値を手入力で作成)
  ※新規作成をすることテスト対象の画面が無い状態から作っておくことができます
  ※両方ともローカルオブジェクトリポジトリに作成できます
  方法3:ナビゲートして学習(前回説明)..ただし、こちらは共有オブジェクトリポジトリに作成される
  
・強調表示とは?
   オブジェクトリポジトリにて、テストオブジェクトを選択し、オブジェクトリポジトリの画面上にある[アプリケーションを強調表示]というアイコンをクリックすると、テスト対象のオブジェクトの周りが資格で囲まれブリンクする。オブジェクトを認識できていることを確認するときに使う

 

・オブジェクトの認識とは?..でどのプロパティを使うかを決められる
  (ツール>オブジェクトの認識)にて、オブジェクト認識に使う必須プロパティが何かを確認できる。変更したい場合は同画面上で変更も可能

 

・序数識別とは?
 マニュアルのP127の引用
  [補足プロパティがない場合や,あっても一意の記述を作成するには足りない場合,QuickTest は,オブジェクトのページやソース・コードでの位置のような,特殊な序数識別子を追加して,一意の記述を作成します。これは,写真に写っている子供のうちの 2 人が,見分けのつかない双子であったならば,子供の座っているシート上での位置を覚えることとちょうど同じです。]

 

■質問
・テストスクリプトを再生しているときに、テスト対象のアプリケーションの動作が遅すぎて、オブジェクトのプロパティ値が取得できずエラーになってしまう場合どうすればよいか?
 →いくつかの方法があり。
 解決方法その1:同期化ポイント(第26章)...UI上で設定するとエキスパートビューでは、WaitProperty ステートメントが挿入される
 解決方法その2:チェックポイント(第15章)を同期化ポイントのように使う
 ※解決方法1、2は、オブジェクトのある値がある状態になるまで何秒待つか?という設定ができます。

 <例>
 「フライト予約」サンプルアプリにて、フライト予約を実行したあとに、予約番号のフィールドの「出力値」をいれると、スクリプトを再生すると出力値が取れない
  →この場合、予約番号フィールドに値が入るまでまっていないといけない。その場合は解決方法1や2で、対象のオブジェクトのValueに正規表現で何か数字があればよいとしておき、タイムアウトの時間を例えば90秒としておくと取れるようになる。

 印刷が終了し、終了ダイアログが出たら次の処理を再生するといった場合は、タイムアウト値を3600(60分)とかしておくと良いだろう
 タイムアウトの最大値は調査して回答します

 解決方法その3:エキスパートビューでのコーディング
 If window("フライト予約").Exist(3600) Then
 <ここに処理を書く>
  End if

 

 

 ・その他のオブジェクトの識ができなくなる場合の対処例...まるで同じオブジェクト(ボタン/ウインドウ)が複数出ている場合に使える方法
  →序数識別子を使う。(三章に解説あり)
    Windowの場合、左上に近いほうがLocation0となる
  ボタンの同じ名前の場合 Indexの番号を使う(プロパティ値はパラメータ化できる)
  Browserの場合、CreationNumberで下のものほど古いNoで作る
  ラジオボタンの場合、異なったオブジェクトとなっているものを一つのオブジェクトにして、識別プロパティをパラメータ化するとよい

 


■宿題
 ・今日の宿題の回答例にて、日付のフォルダを作成するために関数を使っています。
  この関数を「ユーザ定義関数」として使えるようにしてみてください。
  #ユーザ定義関数の作り方はマニュアルの第29章を見ると書いてあります。

■次回「ユーザマニュアルを読み解く」
 ・第四章の続き...アシスト福地さんに講師をしてもらいます
 ・宿題:ユーザ定義関数を作る

ゆもつよ
頻繁なアドバイザー

第四回勉強会議事メモ

第四回QTP勉強会
 
日時:2012年06月06日 18時~20時
場所:日本HP
参加人数:14名

 
<宿題答え合わせ>

■宿題
第三回勉強会の宿題の回答例にある関数をユーザ定義関数にしてみる

  <宿題の回答例>
    ※宿題をやってきた吉村さんからは許可を取って掲載しています。

<ユーザマニュアルを読み解く>
■第4章 オブジェクトリポジトリ内のテストオブジェクトの管理
1.ビジュアル関係識別子
  ALM11からの新機能。オブジェクトの認識が出来ないときに周りのオブジェクトを
  基に該当のオブジェクトを認識させる方法。
  フライトにて実例を紹介

2.メンテナンスモード
  オブジェクトの認識が出来なくなったときの取り直し

3. 更新モード
  期待結果の更新

4.オブジェクトリポジトリのおさらい

5.オブジェクトスパイ
 

■質問
・共有オブジェクトリポジトリの内容をメンテナンスモードでダイレクトに更新できるか?
(次回以降の中で解説予定)


■宿題
 ・なし
 (次回に、ビジュアル関係識別子を使った宿題を出す予定です)

■次回「ユーザマニュアルを読み解く」
 ・第五章の続き...HP小宮山さんに講師をしてもらいます
 ・QTPを使ったスマートフォンのテストについての情報紹介(HPより)

 

ゆもつよ
頻繁なアドバイザー

第五回勉強会議事メモ

第五回QTP勉強会
 
日時:2012年07月19日 18時~20時
場所:アシスト(市ヶ谷)
参加人数:25名


<ユーザマニュアルを読み解く>
■第5章 テストのオブジェクトリポジトリを使った操作
1.共有オブジェクトリポジトリへローカルオブジェクトリポジトリをエクスポートする方法
・ローカルオブジェクトが他のアクションから共有可能になる
・最初にテスト対象のオブジェクトを取得してそのテストのためののオブジェクトリポジトリ
 をつくってしまい、それを共有にしてスクリプトを作るメンバ全員でシェアすると、全員の
 スクリプトのオブジェクトが同じように使えるのでスクリプトの記述がきれいになる
 (別々に作ると同じオブジェクトだとしても、ログインボタン-1、ログインボタン-2といった
 ような違う名前がついてしまう場合などあり、メンテナンス性が下がる場合があるため)


2.ローカルオブジェクトリポジトリへオブジェクトリをコピーする方法
・誤って共有オブジェクトリポジトリを更新してしまい、使用する他のアクションに影響を与えないようにするための方法

 

3. 実行セッション中の認識プロパティの変更方法
・SetTOPropatyメソッド
・ラジオボタンのようなオブジェクトが独立しているが一つのオブジェクトとして扱いたい場合、場面場面でプロパティを
セットし直すことで一つのオブジェクトのように扱うことが出来る

 

4.リポジトリの関連付け
・複数のオブジェクトリポジトリを使ってスクリプトを作りたい場合
・ログイン等共通で使うもののリポジトリ。各機能で数人しか使わないリポジトリ。といったようにリポジトリを分けて管理しているとメンテナンスが容易になるため。

 

5.リポジトリパラメータの割り当て
・3のSetToPropatyを画面上でわかりやすく指定したいときに使える。パラメータはデータテーブルを使うことも可能
 
6.記述プロパティ
・オブジェクトのプロパティのうち、オブジェクトを一意に認識するために使うプロパティ。オブジェクト記録時にQTPが自動で最小数のプロパティを選択するが、その後のメンテナンスも可能。
  

■前回の質問の回答
・共有オブジェクトリポジトリの内容をメンテナンスモードでダイレクトに更新できるか?
 P1250 オブジェクトリポジトリマネージャの[ローカルリポジトリから更新]を利用するとローカルと共有の差分が表示され、OKすると共有オブジェクトリポジトリが更新される


■宿題
 ・9月開催予定のQTPクリニックで使うQTPに関する質問を一つ以上考えてください。
 (前回、ビジュアル関係識別子を使った宿題を出す予定ですと言いましたが次回以降にします)

 

■次回 ※ 場所はベリサーブ様で開催します
 「ユーザマニュアルを読み解く」
 ・第十五章~二十一章(チェックポイント全般的に解説)ベリサーブ様のメンバに講師をしてもらいます(ベリサーブ様の中で調整)
 ・「テストツールまるわかりガイド(入門編)」読みどころ紹介 (HP湯本より)
  テストツールまるわかりガイドはASTERのサイト(http://aster.or.jp/business/testtool_wg.html#toolguide)からダウンロードできます。

 

■今後の予定
8月23日 会場:ベリサーブ    内容:「テストツールまるわかりガイド」の見どころ紹介/「マニュアルを読みとく」第十五章~二十一章
  今後「マニュアルを読み解く」を継続するか決める

 

9月○日 会場:MHIR(予定)   内容:QTPクリニック:質問を一般募集し、回答していく。
  質問の受付をコミュティサイト/参加要綱として募集 
   
10月17日 会場:アシスト  ラウンドテーブルでのQTP利用状況の意見交換
  成功事例を話せるユーザをゲストで呼ぶ予定

※10月17日のQTP勉強会はリスケになりました。次回の日程が決まりましたら掲示板にて通知します。

ゆもつよ
頻繁なアドバイザー

第六回勉強会議事メモ

第六回QTP勉強会
 
日時:2012年08月23日 18時~20時
場所:ベリサーブ(西新宿)
参加人数:17名


<ユーザマニュアルを読み解く(ベリサーブ向山)>
■QTPユーザガイド15章~21章(チェックポイントについて)
・全部読むと130ページもあるので、フライト予約をベースに動作させながら解説する
・チェックポイントとは→2つのモノを比較して一緒ならOKとさせるもの
・チェックポイントの種類
  ・標準→オブジェクトのプロパティを比較するチェックポイント
  ・テキスト→テキスト文字列のチェックポイント
  ・テキスト領域→ある領域の文字列のチェックポイント
  ・ビットマップチェックポイント→画像比較
  ・データベースチェックポイント→クエリを投げて比較する
    ただし、ODBCやポートの壁がある
    データ移行の確認に使いやすい
  ・その他:XMLチェック、アクセシビリティチェックなどがある


<標準チェックポイント>
・チェックポイント登録の方法
  ・記録しながら登録(記録中にF12を押す方法アリ…QTP試験に出た)
  ・アクティブスクリーンから登録

・期待値の登録の方法
  ・定数
  ・正規表現(あいまい検索)
  ・データテーブル
・チェックポイントの情報はどこにあるか?
  ・オブジェクトリポジトリに情報がある。(→実は9.2まではオブジェクトリポジトリにはなかった。)
  ・そのため、単純にエディタ上でチェックポイントをコピペしてパラメータを変更すると全部が上書きされる
  ・オブジェクトリポジトリ上でコピペしてパラメータを書き換えたものを利用すると良い

・マニュアルには載っているが、メニューには出てこない標準チェックポイント
  ・テーブルチェックポイント →テーブルの並び全部をテストできる
  ・画像チェック → 画像比較が出来る
  ・ページチェック → HTMLソースの比較が出来る
  ※これらは全部Web系の標準チェックポイント。


<テキストチェックポイント>
・テストする文字列を抜き出すことが出来る。正規化もできる
  ・抜き出す際には、抜き出す文字列の前にくるand/or後に来る文字列を指定するが、この文字列は固定で正規化できない

<ビットマップチェックポイント>
・ビットマップチェックの期待値は全画面で保存すると1つだけで何十MBもとってしまうことがある
  ・確認したいところだけを部分保存したほうがファイルサイズの節約になる。

・ビットマップチェックは動的な画面の処理の同期に使える
  ・期待結果の画面をとっておき、テストの際はその画像が出てくるまでまち、出てきたらボタンを押すといった
   使い方が出来る


<「テストツールまるわかりガイド(入門編)」読みどころ紹介 (HP湯本)>
 ※テストツールまるわかりガイドはASTERのサイト
 (http://aster.or.jp/business/testtool_wg.html#toolguide)からダウンロード可能

・ASTERというNPO法人の紹介
・本書の構成の紹介
・この書籍の伝えたいポイントの説明
  ・ツールありきではなくテストの作業ありき
  ・作業がそもそもちゃんとできないのにツールを使っても効率化は出来ない
  ・ツール導入は「改善」がセット
  ・「ハイコンセプト」なエンジニアになるための一助に!
※ 当日使用したスライドは参加者の方には電子媒体でお渡ししますのでLUGメールまでご連絡ください

■今後の予定

9月19日 会場:MHIR   内容:QTPクリニック:質問を一般募集し、回答していく。
  質問の受付をコミュティサイト/参加要綱として募集
  質問は9月7日までに出してください。
   ・参加メールにかく
   ・HPコミュニティの掲示板のスレッド「一回「QTPクリニック」質問募集(2012/9/19開催予定) 」返答に書く 
   
10月17日 会場:アシスト  ラウンドテーブルでのQTP利用状況の意見交換
  成功事例を話せるユーザをゲストで呼ぶ予定

※10月17日のQTP勉強会はリスケになりました。次回の日程が決まりましたら掲示板にて通知します。


 

ゆもつよ
頻繁なアドバイザー

第七回勉強会議事メモ

第七回QTP勉強会


日時:2012年9月19日
場所:みずほ情報総研様(竹橋)
参加人数:14名

 

 

<第一回QTPクリニック(日本HP松尾)>
当日までにいただいた質問20問に間して、ディスカッションしながら回答していきました。
以下にメモをまとめました。

 

 

質問1
例として挙げられていたPDFのチェックについては、ぜひ教えていただきたいです。
-----------
AASさんの事例紹介(AASさんデモを行ってくれました)
・AcrobatProのPDF比較機能を使う(QTPでAcrobatを自動操作してしまう)
 -Acrobatの比較結果に必ず出てくる文字(ex.No differences)を検索して、その文字があれば「違いあり」と判定を行う。
 -比較対象のファイル間で必ず違うものが出てくる場合(ex.日付)、それをマスキングして比較する
 (これもAcrobatの機能にあるのでQTPでそれを操作して使う)
・比較結果はエクセルに吐き出して一覧表示できるようにする。QTPのVBSでエクセルを直接動かしている。

 

 


質問2
テスト対象のソフト側の画像生成エンジンを使って変換したものが、あるべき状態になっているかを比較したい場合、
フォーマットが変わったりしてしまうとやりたいテストとは異なってしまいます。
なにか良い方法はありますでしょうか。
#補足:元の画像ファイルを読み込んでサムネイルに変換されたとき、変換前の画像とサムネイルが一致していることを確認したい場合の
自動化の方法についての質問です。
windowsのfcなどのコマンドを使うのでしょうか。
-----------
・元の絵とテスト結果の絵の解像度が全然違う場合は、ビットマップチェックポイントで比較しても一致しない。
・正解のサムネイルを保存しておいて回帰テスト時に正解のサムネイルとテスト結果のサムネイルを比較するのであればビットマップチェックが使える。
・絵を出す操作の部分だけでも自動化できれば効果が出るのではないか?絵の選択から設定値の入力と変換後の出力ファイルの保存までの作業の自動化など。
・画像比較ソフトと連携させる。(ただし勉強会の場では、このソフトがよい、と言う知見がある人がいなく結論は出なかった)

 

 

 

質問3
QTPの自動化において、ガンガン使っていらっしゃる皆様は、どのあたりをスクリプトの損益分岐点とお考えなのでしょうか。
無効系を多く作りこむと、自動化率は上がりますが、作りこみ工数とメンテ工数が増えます。
どのあたりで(ある意味)「あきらめるか」、どういう条件を重視するのか。
その辺りをうかがいたいと思います。
費用対効果の高い利用方法は?
-----------
・自動化の効果が出るところだけ選び自動化する。例えば、
 -データ駆動のような同じことをたくさんやるテストを選ぶ。「質問1」のPDFの事例が該当する。
  上記の事例では4000種類の帳票を何度もテストするために自動化が必要になった。
 -迷ったら正常系からはじめる、まず正常なテストが流せないと異常系を作ることは出来ないはず。
・自動化の準備にかける時間の限度は自動化しない場合の3倍以内といった基準を決めておいて、始める際にその見積もりをする。
(スキルがあれば短時間で多くの複雑なスクリプトが書けるようになるから、できることの量だと一概には基準は出せないし、スキルがあがっても単純な自動化しかさせてもらえないといった問題が起きる)

 

 

 


質問4
共有オブジェクトリポジトリv.s.ローカルオブジェクトリポジトリ
実際PJではどのような場合にどちらが使われているのでしょうか。その理由など。
-----------
・多くの人で同じスクリプトを作る、実行する場合は共有オブジェクトリポジトリがよい。ローカルだとメンテの際に複数のリポジトリを直さないといけない。
・コンシューマ系の良く画面が変わるものは共有オブジェクトリポジトリがよい。(オブジェクトのメンテナンス効率がよい。)
・ただし、共有オブジェクトリポジトリを使う場合は、構成管理のルールを守らないといけない、構成管理ツールで管理するとなお良い
・1人しかQTPを使わない場合はローカルオブジェクトリポジトリでも問題があまりおきない。

 

 


質問5
QTPを用いて、既存システムのWin8動作確認テストを行うことを考えております。
懸念点としては、OSが変更となった場合に既存のスクリプトが動作するのかということとQTPのWin8対応時期です。
そこで下記のようなことがあればお教えいただきたいです。
・OS VerUp時にはオブジェクトの認識の仕方がこういう風に変わる可能性があるのでこの対処が必要
・Win Vista→Win 7の時には7リリースから●ヶ月後くらいにQTPが対応してくれた、
 こういう対処が必要だった、こんな問題があったなどのノウハウ
-----------
・これまでの傾向としては、新しいOSが出てきてから3ヶ月~6ヶ月で対応される。パッチが出たり、対応できている旨のアナウンスが出たりする。
・Windowsの仕様が変わると影響は受ける。位置情報でオブジェクトを認識するとか、ビットマップチェックを使ってるとOSが変わると上手くいかなくなることがある。

 

 


質問6
QTPはデータメンテナンスなどにも使われると聞きます。
QTPエキスパートの皆様から面白い使い方をお知らせいただけると嬉しいです。
-----------
・データ投入に使う。SQLで投げるところを画面上から入れることで画面の機能を使ってゴミデータをはじくことが出来る。
 (データ設計が理解できない状態でDBに直接データを投入するとそのデータのためにシステムが動かなくなるといったことが起きる)
・データ移行。旧システムから新システムに以降する際の過去データを投入する。
・アカウント登録作業(数千人)

 

 

 


質問7
同様のツールはいくつかあると思いますが、HP QTPを選択した理由は何でしょうか。
特にいろいろなツールを触って確認した方から他ツールとの比較した際の強みをお教えいただければと思います
-----------
・Webしか使えないと言ったツールがあるが、QTPだとWindowsを操作できるのがメリット。質問1の例のようにAcrobatを連携操作してテストをするとか、Windowsを操作してテストを続行させるといった多くの工夫が実現できる。
・世界シェアが高いので、技術情報の入手がしやすい。(ただし英語です。)

 

 

 


質問8
カスタマイズしたコンポーネントの対応方法は?
-----------
・TypeとかClickとかはカスタマイズしたコンポーネントでも大抵動く。
・動かない場合は、低レベル記録を組み合わせる。
(ただし座標認識は再生時のミスが出やすいので、クリックとかショートカットキーとかキー操作を覚えさせたほうが良い)
・ExtensibityKitというツールが付属されており、JavaやC#でカスタムコンポーネントを記録するためのプログラムを自分たちでアドインできる。
(ただし相当な開発能力が必要になるので、コストバランスを考えて必要なときのみ使うと言ったほうがよいだろう)

 

 

 

質問9
QTPはQTPでテストしていますか?
-----------
・していない。
・QTP開発中にどんなテストケースを実行していて、テストやバグの状況がどうなのか、
 というのはQualityCenterで管理している。

 

 


質問10
タブレットやスマートフォンなどのテストニーズはありますか?
-----------
・非常にあるのでHPからも解決方法を提示している
・9月27日にモバイルセミナーがあるのでよければ参加してください。
http://h50146.www5.hp.com/products/software/hpsoftware/event/fy12/mobile_dev2012.html

 

 

 

 

質問11
ExcelのForm上のオブジェクト(テキストボックス・ラベル・チェックボックス等)を取得する方法はあるのでしょうか?
-----------
・出来ない、その代わり以下の方法で対応が可能。


 ・QTPからエクセルマクロをキックする

' QTPからExcelマクロを実行させる例
set obj = CreateObject("Excel.Application") obj.Workbooks.Open "C:\macrotry.xls"
' Call the run command to execute a macro or function in Excel obj.Run "Sample"

 

 ・VBScriptでエクセルを操作する

'VBSでエクセルを操作するサンプル
Dim ExcelSheet Set ExcelSheet =CreateObject(“Excel.Sheet”) 
ExcelSheet.Application.Visible = True 
ExcelSheet.ActiveSheet.Cells(2,1).Value = “入力値1" 
ExcelSheet.SaveAs “C:\TestResults\result.xls" 
ExcelSheet.Application.Quit 
Set ExcelSheet = Nothing

 

 

 

 


質問12
共通ライブラリ・共通アクションのパスを外部からVBS等で追加・変更・削除することは
出来るでしょうか?
-----------
・関数ライブラリ・外部参照アクションをQTPにVBSで直接書き込んで実行するといったことはできる。

 

'外部参照アクションの呼び出し
LoadAndRunAction “C:\ProgramFiles\HP\ QuickTest Professional\Tests\テスト名”,”アクション名”,[イテレーション回数]


'関数ライブラリの呼び出し

ExecuteFile " C:\ProgramFiles\HP\ QuickTest Professional\Tests\aa.qfl"

'もしくは

LoadFunctionLibrary "C:\Program Files\HP\QuickTest Professional\Tests\FunctionsLoad.qfl"

 

 

 

質問13
既にリポジトリに取得済みのオブジェクトのプロパティ(記述プロパティ・序数識別子・  スマート認識)
について外部からVBS等で操作することは出来きるでしょうか?
-----------
・出来なくはないが(ユーティリティオブジェクトを使う)、UI上から操作したほうが容易である。

 

 

 


質問14
データテーブルで対応している関数はどのようなものがあるのでしょうか?
-----------
・スプレッドシートのセルの中に書き込む関数はエクセルと互換性があり、EXCELで代表的なものは対応しています
 (QTPを購入するとサポートサイトから利用可能関数一覧を検索できる[KM191547])
・データテーブルの制限もサポートサイトに載っている。例えばエクセルで「書式設定」したものをデータテーブル
 に取り込んだらそれが問題で動かなくなったことがある。

 

 

 

質問15
QTPで関数ライブラリを作成すると拡張子が.qflとなりますが、.vbs、.txtとの違いはあるのでしょうか?
-----------
・ない。
・vbsで作っておいたほうが、そのファイルだけで動作確認が出来るので便利。

 

 

 


質問16
オブジェトリポジトリのツリー構造を外部に出力(テキスト等)することは出来るでしょうか?
-----------
・出来る。オブジェクトリポジトリマネージャからXML形式で入出力が可能。

 

 

 


質問17
バッチランナー使用時にテストが開らけないことがあるのですが、主な原因は何が考えられるでしょうか?
-----------
・バッチランナーを使うより、自分でバッチを作ったほうが良い。(オートメーションオブジェクトで実行できるサンプルがヘルプに記載されている)
・QualityCenterにはバッチ実行機能がある。

 

 

 

 

質問18
回復シナリオ内にブレークポイントを設定することは出来るでしょうか?
-----------
・出来ない。

 

 

 


質問19
ExitTestIterastionとExitTestはどのような違いがあるのでしょうか?実行結果レポートに若干違いが見られたのですが・・・
-----------
ExitTestIterastion:対象テスト反復の終了、次の反復が始まる。
ExitTest:テストそのものが終了する。

 

 

 

 

質問20
・GlobalとLocalの繰り返しのルールについて
Global3行(Call A, Call B)、LocalAに2行、LocalBに1行の場合、どのように繰り返すのか?
Global1行、LocalAに2行、LocalBに1行の場合は?
-----------
・グローバルシートはテスト全体の反復であり、ローカルシートはアクション内の反復
・設定により反復のルールは変わってくる(「アクション呼び出しプロパティ」で設定)
<「ローカルを反復させない」設定(デフォルト)>
 グローバルの反復行に合わせてローカルの反復行が再生される
   ローカルがグローバルより多いときは 差分の行が無視
   ローカルが少ないときは最終行が繰り返される
<ローカルを反復させる場合>
 入れ子ループになる
   グローバル1回反復する中で、ローカルの全行が再生される