QTP には、オブジェクトを格納するオブジェクト リポジトリがあります。そして、これらのオブジェクトは再利用できます。ここでの再利用とはどういう意味ですか? そのオブジェクトはメモリに保持されていますか?....オブジェクト リポジトリは、オブジェクトのプロパティを格納する単なる xml ファイルですよね?
3 に答える
オブジェクトリポジトリは、オブジェクト自体のリポジトリではなく、オブジェクト記述のリポジトリと考えることができます。QTP はオブジェクト リポジトリを使用して、指定した特性に基づいてランタイム オブジェクトを識別します。一部のアクションを最初に記録するときは、デフォルトの識別特性のみが保存されます。オブジェクトが実行時に正しく識別されない場合など、必要に応じてこれらを変更できます。リポジトリは実際には(「舞台裏」)、エディターで見ることを可能にする単純な XML 構造であると述べているのは正しいです。参照される「再利用」とは、異なるテストから同じオブジェクト リポジトリを参照でき、オブジェクトを識別してテスト リポジトリに追加する作業を行う必要がないことを意味します。例として、Web アプリケーションでデータ テーブルを使用する 2 つのテストがあります。2 つのテスト固有のリポジトリを作成する代わりに、1 つの共有リポジトリを作成し、そこに含まれるデータ テーブルの説明を使用して、このテーブルとの両方のテスト インタラクションを駆動することができます。実行時にオブジェクトを識別するために使用できる 2 番目の方法があります: 正規表現です。保守性が問題になるため、大規模なテストまたは一連のテストを設計する場合、これらはおそらく柔軟性に欠けます。ただし、オブジェクトリポジトリを使用するよりも少し高速になる傾向があります。コード例: 実行時にオブジェクトを識別するために使用できる 2 番目の方法があります: 正規表現です。保守性が問題になるため、大規模なテストまたは一連のテストを設計する場合、これらはおそらく柔軟性に欠けます。ただし、オブジェクトリポジトリを使用するよりも少し高速になる傾向があります。コード例: 実行時にオブジェクトを識別するために使用できる 2 番目の方法があります: 正規表現です。保守性が問題になるため、大規模なテストまたは一連のテストを設計する場合、これらはおそらく柔軟性に欠けます。ただし、オブジェクトリポジトリを使用するよりも少し高速になる傾向があります。コード例:
If Browser(“hwnd:=“ & browserTitle).Page(“url:=“ & pageUrl).Exist(0) then
'Do something...
End If
ブラウザ オブジェクトをリポジトリに追加するか、上記のコードを使用して識別できます。記述的プログラミングは代替手段ですが、慎重に使用し、主にチェックポイント周辺で使用する必要があります。実際、リポジトリ内のオブジェクト識別プロパティで正規表現を実際に使用できますが、それは別の話です。それに関する詳細情報が必要な場合はお知らせください。
これが概要を説明するのに役立つことを願っています。
オブジェクトを再利用できるということは、オブジェクト リポジトリに保存されているオブジェクトを 1 つ以上のテストにわたって、また同じテスト内で 1 回以上使用できることを意味します。
例: 2 つのアプリケーションで共有されているログインページがあるとします (そして、これら 2 つのアプリケーション用に 2 つの異なるテスト スクリプトを維持しています)。このページには、ユーザー名、パスワード、およびアプリケーション名のフィールドがあります。
したがって、オブジェクト リポジトリ内のオブジェクト (Login_Page (親オブジェクト) と Username、Password、および Application_Name (子オブジェクト)) は、2 つの異なるアプリケーションのスクリプトで共有できます。
オブジェクトは、テスト ( .mtr形式 - 含まれるスクリプトでのみ使用可能) および共有オブジェクト リポジトリ ( .tsr形式 - 関連付けられているすべてのスクリプトで使用可能) の一部として保存されます。したがって、実際には、ローカル システム、Quality Center、または共有ネットワーク パスに保存されます。
オブジェクト リポジトリは独自の形式 (.mtr または .tsr) で保存され、xml 形式にエクスポートできます。
多くの Web サイトが言及していることとは反対に、オブジェクト リポジトリからのオブジェクト アクセスの速度は、他の方法 (Set メソッドの使用、記述的プログラミングなど) に匹敵します。オブジェクトへのアクセスにかかる時間は、リポジトリ内のオブジェクトの「深さ」によって異なります。
階層が Browser > Page > Frame > Field1, Field2 ... であるとします。
Browser オブジェクトがいくつあっても、*n* 番目の Browser オブジェクトにアクセスするのにかかる時間はほぼ一定です (それは「0 レベルの深さ」です。ページは「1 レベルの深さ」です)。子オブジェクトについても同様です。
記述的プログラミングとオブジェクト リポジトリを使用して値 (WebEdit ボックスなど) を設定する時間差は、100 回の反復で約 2 秒であることがわかりました (記述的プログラムの方が高速です)。
さらに、QTP で利用可能な公式ドキュメントには、リポジトリのサイズが大きくなるとスクリプト実行スクリプトが影響を受けるとは記載されていません。(194KB と 38.5MB のリポジトリ サイズでこれをテストしました)。