既知の問題 - 関数ライブラリおよびユーザ定義関数

関連:GUI テストおよびコンポーネント

このトピックでは,関数ライブラリとユーザ定義関数を使用する際の既知の問題について説明します。

関数での VBScript クラスの定義

VBScript クラスを定義した場合,そのクラスを呼び出せるのは,それを定義した OpenText Functional Testing アクションまたは関数ライブラリ内のみです。

回避策:

  1. ExecuteFile ステートメントを使用すると,外部関数ライブラリで定義されている VBScript クラスを呼び出すことができます。

  2. オブジェクトをクラスとして設定し,そのオブジェクトを返す関数を,クラスを定義する関数ライブラリ内に作成します。そうすると,テストまたはコンポーネント内の任意の場所からその関数を呼び出して,定義する変数にクラスのオブジェクトを割り当てることができます。

    例:  

    クラス myClass を使用するとします。myClass を定義するのと同じ関数ライブラリに,次の関数を定義します。

    public function myClassGenerator()
    set myClassGenerator = new myClass
    end function

    これで,次のように myClassGenerator を呼び出して,myClass クラスを使用できます。

    set myClassObject = myClassGenerator()

    myClassGenerator() は新しい myClass オブジェクトを作成し,そのオブジェクトを myClassObject に割り当てます。

先頭に戻る

関数で上書きされたテスト・オブジェクト・メソッドの呼び出し

RegisterUserFunc ステートメントを使って,既存のテスト・オブジェクト・メソッドをオーバーライドするユーザ定義関数を登録することができます。また,OpenText Functional Testing Extensibility SDK を使って作成されたテスト・オブジェクト・メソッドをオーバーライドするためにユーザ定義関数を登録することもできます。このようなテスト・オブジェクト・メソッドをオーバーライドする場合,そのユーザ定義関数はオーバーライドする対象のテスト・オブジェクト・メソッドを(再帰的に)呼び出してはなりません。

先頭に戻る

実行結果でのユーザ定義関数

標準設定では,ユーザ定義関数を使用するステップは,実行セッション後の実行結果に含まれません。関数がテスト実行結果に表示されるようにするには,ReportEvent Method ステートメントを関数コードに付け加える必要があります。たとえば,必要に応じて追加情報を提供したり,テスト,コンポーネントまたはビジネス・プロセス・テストのステータスを変更するケースがこれに該当します。

ユーザ定義関数内のステップが標準 OpenText Functional Testing テスト・オブジェクト・メソッドを呼び出す場合,このステップは,実行セッション後の実行結果に表示されます。ただし,必要であれば,Reporter.ReportEvent ステートメントを関数コードに追加して追加情報を提供したり,テストまたはコンポーネントまたはビジネス・プロセス・テストのステータスを変更したりできます。

先頭に戻る

部分的なテスト実行とメソッド登録

部分的な実行またはデバッグ・オプション([ステップから実行]や[ステップからデバッグ]など)を使用し,(関数ライブラリ内でなく)テスト・ステップ内でメソッドを登録した後,ある位置からテストを開始した場合,OpenText Functional Testing はメソッド登録を認識しません。これは,登録が現在の実行セッションの開始よりも前に行われるためです。

先頭に戻る

Option Explicit メソッドの使用

テストまたはコンポーネントに関連付けられている関数内で Option Explicit ステートメントを使用するには,そのテストまたはコンポーネントに関連付けら得ているすべての関数ライブラリにステートメントを含める必要があります。関連付けられている関数ライブラリの一部のみに Option Explicit ステートメントを含めた場合,すべての関数ライブラリ内の Option Explicit ステートメントはすべて無視されます。

テスト・アクションでは,Option Explicit ステートメントを制限なしに直接使用できます。

先頭に戻る

関数ライブラリの変数は一意

各関数ライブラリのグローバル・スコープにある変数は,一意でなければなりません。2 つの関連付けられている関数ライブラリにおいて,Dim ステートメントを使用してグローバル・スコープ内で同じ変数を定義している場合,または同じ名前を持つ 2 つの定数を定義している場合,2 番目の定義によって構文エラーが発生します。グローバル・スコープにおいて同じ名前を持つ 2 つ以上の変数を使用する必要がある場合,(関数ライブラリは逆順で読み込まれるため)最後の関数ライブラリにのみ Dim ステートメントを挿入します。

先頭に戻る

関数ライブラリでのクラス定義

同じ実行セッション内で関数ライブラリを実行する場合,1 つのクラスに異なる定義を行うことはできません。それぞれのクラスが 1 カ所のみで定義されていることを確認してください。

先頭に戻る

関数ライブラリの変更

テストまたはコンポーネントが参照する関数ライブラリをほかのユーザが変更した場合,または,QuickTest エンジニアが外部エディタ(OpenText Functional Testing 以外)を使用して関数ライブラリを変更した場合,変更内容はテストまたはコンポーネントを再度開くまで反映されません。

先頭に戻る

キリル文字

キリル文字 ' ‘ を含み,ANSI エンコード方式で保存した関数ライブラリは,OpenText Functional Testing では正しく解釈されない場合があります。たとえば,' ‘ 文字は改行文字として解釈され,実行が失敗する原因になります。

回避策:この問題が発生した場合,テキスト・エディタを使用して Unicode エンコーディングで保存することで関数ライブラリを変換します。

先頭に戻る