• 検索結果がありません。

developerWorks® ibm

N/A
N/A
Protected

Academic year: 2021

シェア "developerWorks® ibm"

Copied!
29
0
0

読み込み中.... (全文を見る)

全文

(1)

Hello World : Rational Functional Tester

耐久力のある再利用可能な自動化された機能テストの作成

スキル・レベル: 中級

Dennis Schultz (dennis.schultz@us.ibm.com) マーケティング・エンジニア

IBM

2008 年 10 月 1 日

このチュートリアルでは、IBM® Rational® Functional Tester によって耐久力のある自動化された機能テ ストを作成する方法を、実践的な演習を通じて体験できます。自動化された機能テストを記録する方法、 Java™スクリプト記述によりテストを強化する方法、および回帰テスト・スイートの一部としてテストを再生す る方法を説明します。本書は、IBM の主要なソフトウェア製品のおおまかな概要を説明する Hello World チュートリアル・シリーズのチュートリアルです。

Hello World チュートリアル・シリーズの詳細については、下記のサイトをご覧ください。(英語)

(2)

目次

セクション 1.チュートリアルを開始する前に ... 3 このチュートリアル・シリーズについて ... 3 このチュートリアルについて... 3 目的... 3 前提条件... 3 導入方法... 3

Rational Functional Tester の概要... 4

セクション 2. 実装方法 ... 5 Functional Tester を起動する... 5 セクション 3. テスト環境の準備 ... 7 新規機能テスト・プロジェクトを作成する ... 7 アプリケーション環境を使用可能にする... 8 テスト対象アプリケーションを構成する ... 9 セクション 4.テストのレコーディング ...11 レコーダーを起動する...11 テスト対象アプリケーションを起動する ...11 データ駆動の注文を作成する ...12 動的データを検証する ...14 静的データを検証する ...16 セクション 5.テストの確認 ...18 テスト・オブジェクト・マップを確認する ...18 データプールにデータのばらつきを追加する ...19 テストにカスタム動作を追加する ...20 ClassicsJava ビルド B に対して準備する ...22 セクション 6.自動化された回帰テストの実行...23 テストの実行...23 セクション 7.テスト・ログ内の結果の確認 ...24 ScriptAssure...24 カスタム・ログ情報 ...25 検査ポイント・ステータスを調査する...26 データプールの動作を検証する ...27 セクション 8.まとめ ...27 参考文献...28

(3)

セクション 1.チュートリアルを開始する前に

このチュートリアル・シリーズについて

このチュートリアル・シリーズは、初心者向けに IBM ソフトウェア製品の概要を説明するものです。それぞ れのチュートリアルは、各製品の概要を紹介して、受講者からさらに深い製品知識への関心を引き出すこ とを目指しています。演習では基本的な概念しか取り扱いませんが、最初の導入としては十分なものとな っています。

このチュートリアルについて

このチュートリアルでは、IBM Rational Functional Tester の概要を説明し、実践的な演習を通じて実際 に製品に触れる機会を提供します。自動化された機能テストを記録する方法、Java スクリプト記述を通 じてテストを強化する方法、および回帰テスト・スイートの一部としてテストをする方法を順を追って説明し ます。

目的

このチュートリアルは、受講者が Rational Functional Tester の基本機能を理解し、この演習で使用し たような自動化された機能回帰テストを作成できるようにすることを目的としています

前提条件

このチュートリアルは、テストの自動化を初めて行うテスター向けに作成されたものです。Java プログラミン グ言語に関する一般的な知識があれば役立ちますが、必須条件ではありません。

導入方法

このチュートリアル内の例を実行するには、IBM Rational Functional Tester をインストールする必要があ ります。IBM Rational Functional Tester をまだ入手していない場合は、無料体験版をダウンロードしてイ ンストールすることができます。

(4)

Rational Functional Tester の概要

IBM Rational Functional Tester (以下単に「Functional Tester」といいます) は、Java、Microsoft Visual Studio .NET、および Web ベースのアプリケーションのテストに対する優れた制御機能を必要とす るテスターおよび GUI 開発者向けの、自動化された機能および回帰テストのための先進的なツールで す。

Functional Tester では、ユーザー・インターフェースを Microsoft Visual Studio と Eclipse という 2つの オプションから選択できます。開発チームが Visual Studio でアプリケーションを構築していて、テスト・チー ムがスクリプト言語として Visual Basic .NET を使いやすいと感じる場合には、Functional Tester を直 接 Visual Studio IDE シェル内にインストールして、Visual Basic .NET でテスト・スクリプトを記録すること ができます。

もう 1つのオプションは、Functional Tester を Eclipse プラットフォーム内にインストールする方法です。 既に独自にインストール済みの Eclipse を使用するか、あるいは Functional Tester のインストール・パ ッケージの一部として Rational から提供される Eclipse を使用する場合です。Functional Tester を Eclipse で使用すると、テスト・スクリプトは Java コードで記録されます。いずれの場合でも、完全な環 境と、商用標準スクリプト言語の汎用性を活用できます。 Functional Tester は、次のテクノロジーで構築されたものを含む、さまざまなタイプのアプリケーションの機 能回帰テストをサポートします。 • Java プラットフォーム • Web (HTML) • Microsoft® .NET • Siebel • SAPgui • SOAアプリケーション(Webサービス) • ターミナルベースのアプリケーション (3270、5250、VT100)

上記のすべてのタイプのアプリケーションを、Eclipse ベースまたは Visual Studio ベースの Functional Tester でテストできます。以下このチュートリアルでは、Eclipse ベースの Functional Tester を使用しま すが、ここで行う操作はすべて Visual Studio ベースのものでも同様に行うことができます。

(5)

セクション 2. 実装方法

Functional Tester を起動する

Functional Tester は、Windows の「スタート」メニューから、「プログラム」、「IBM Software Development Platform」、「IBM Rational Functional Tester」、「Java Scripting」の順に選択することにより起動できま す。Functional Tester を初めて起動する場合には、図 1 に示すように、ワークスペースの場所を選択す るよう求められる可能性があります。ワークスペースとは、作業内容が格納されているディレクトリーの場所 を意味します。Functional Tester の起動時にワークスペースの選択を求められた場合には、デフォルトの 場所を選択するか、または独自に新規のワークスペースを作成することができます。 図 1. ワークスペース選択画面 ワークスペースを選択すると、図 2 に示すように、「ようこそ」ページが表示されます。「ようこそ」ページには、 チュートリアルとサンプルに直接アクセスできるリンクが表示されます。「概要」のアイコンをクリックすると、 Functional Tester のガイド付きツアーを体験できます。 図 2. 「ようこそ」ページの「概要」アイコン 「ようこそ」ページを閉じると、Functional Test のパースペクティブが表示されます。パースペクティブ とは、 Eclipse のインターフェースで、特定の 1つのタスクに関連するツールとビューを統合したものです。ファンクシ

(6)
(7)

セクション 3. テスト環境の準備

このセクションでは、Functional Tester を使ってテストを行う前に、アプリケーション環境を準備するプロセ スを順を追って説明します。このセクションでは、以下のことを行います。 • Functional Tester の成果物を格納するためのリポジトリー (プロジェクト と呼びます) を作成する。 • テスト実行のために、アプリケーションを使用可能にする。 • テスト対象アプリケーションを構成する。

新規機能テスト・プロジェクトを作成する

初めに、テスト・スクリプト、データプール、オブジェクト・マップを格納するための、MyFunctionalTestProject という名前の機能テスト・プロジェクトを作成します。 1. Functional Tester の起動とワークスペースの選択をまだ行っていない場合には、前のセクションで説明 したように、Functional Tester を起動してワークスペースを選択します。 2. ワークベンチから、「ファイル」、「新規」、「Functional Test プロジェクト」の順に選択します。すると、図 3 に示すような画面が表示されます。 3. プロジェクト名として「myFunctionalTestProject」と入力して、「終了」をクリックします。 図 3.機能テスト・プロジェクト作成ウィザード

(8)

図 4 のように、機能テスト・プロジェクトのビューに 2つの新しいエントリーが表示されます。1つはテストの 成果物、もう 1つは結果ログのリポジトリーです。 図 4. Functional Testプロジェクトのビュー

アプリケーション環境を使用可能にする

次に、アプリケーション・ランタイム環境を使用可能にする必要があります。これにより、Functional Tester がランタイム内を参照し、テスト対象アプリケーション内のオブジェクトを特定できるようになります。 Functional Testerのメニューの「構成」から「テスト用の環境の使用可能化」を選択します。図 5 に示す ように、「環境を使用可能にします」ウィンドウに 4つのタブが表示されます。この 4つのタブは、テスト対象 アプリケーションのタイプに応じて、使用可能にする必要がある可能性のある 4つのクラスまたはドメインを 表します。たいていの場合、Internet Explorer がテストのプレイバックのデフォルトのブラウザーであり、使用 可能になっています。 図 5. 「環境を使用可能にします」ウィンドウ

(9)

も Eclipse プラットフォームをインストールしている場合には、「Eclipse プラットフォーム」タブで、テストのた めにそれらのプラットフォームを使用可能にすることができます。

3. 「Java 環境」タブを選択します。IBM Rational SDP JRE は、Java アプリケーションをテストするための デフォルトの JRE であり、ここでテストのために使用可能となっています。お使いのアプリケーションで異なる JRE が使用されている場合には、このインターフェースでお使いの JRE を使用可能にします。このチュー トリアルでは、このデフォルトの JRE をプレイバックに使用するため、ここでは何もする必要はありません。 4. 「完了」をクリックしてウィンドウを閉じます。

テスト対象アプリケーションを構成する

テスト対象アプリケーションを構成するといっても、実際にお使いのアプリケーションに何らかの形で影響また は変更を及ぼすことはありません。単に Functional Tester 環境内に、アプリケーションを簡単に起動して テストを他のマシンに移植しやすくするためのショートカット (ポインター と呼びます) を作成するだけです。 1. Functional Testerのメニューの「構成」から「アプリケーションをテスト用に構成」を選択します。図 6 に 示すように、「アプリケーション構成ツール」ウィンドウに、Functional Tester でのテストのために構成済みの アプリケーションのリストが表示されます。Functional Tester には、ClassicsJava というサンプル Java Swing アプリケーションが付属しています。ClassicsJava は 2つのビルドが提供されますが、その両方がイ ンストール時に自動的に Functional Tester内に定義されます。ここで、JAR ファイル、クラスパス、JRE、 作業ディレクトリーといった実行パラメーターをどのように指定できるかがわかります。

(10)

2. このチュートリアルでは、ClassicsJava サンプル・アプリケーションを使って作業するため、現時点でこの 画面では何もする必要はありません。「完了」をクリックしてウィンドウを閉じます。

(11)

セクション 4.テストのレコーディング

テストは、ユーザーによるコーディング、Functional Testerでのレコーディング、またはその 2つの併用のいず れかによって作成することができます。コーディングを行う場合でも、多くの場合、ゼロからテストを記述する よりも、テストをまずレコーディングして、その上で修正する方が簡単です。 このチュートリアルでは、サンプル ClassicsJava アプリケーション内で CD を購入する操作をレコーディン グします。

レコーダーを起動する

1. ツールバーの赤いレコード・ボタンをクリックして、レコーダーを起動します。 2. 「FunPlactional Testスクリプトの記録」ウィザードで、スクリプト名として「PlaceOrder」と入力して、「終 了」をクリックします。テスト・レコーダーが起動し、Functional Tester ウィンドウが最小化され、図 7 に示 すようなレコーディング・ツールバーが表示されます。レコーディング・ツールバーには、レコーディング中に役立 ついくつかの機能があります。このチュートリアルでは、そのうちのごく少数を使用します。 図 7. レコーディング・ツールバー

テスト対象アプリケーションを起動する

1. 「アプリケーションの開始」 ボタンをクリックして、アプリケーション・ショートカット ClassicsJavaA – java を起動します。すると、ClassicsJava のビルド A が起動します。

(12)

2. ここでは、ClassicsJava アプリケーション内で行ったすべての操作がレコーディングされることを念頭に置 いてください。「Composers」ツリーの下の「Schubert」を展開して「Symphonies Nos. 5 & 9」を選択しま す。

3. 「Place Order」をクリックします。

4. このサンプル・アプリケーションでは、実際にはログイン名とパスワードはチェックされません。単純にするた めに、ログイン名とパスワードが求められたら、デフォルトのものをそのまま使用します。ただし、「Remember Password」チェック・ボックスにはチェックを入れます。このチェック・ボックスは、後ほど Functional Tester テ スト・プレイバック・エンジンの耐久性の高さを示すものとして再度登場します。 5. 「OK」をクリックして、「Place an Order」ウィンドウに移動します。

データ駆動の注文を作成する

デフォルトでは、すべてのキーボード入力がテスト・スクリプト内に記録されます。Functional Tester には、 きわめて強力な機能が備わっており、ユーザーが入力したデータと、テストの手順およびナビゲーション・コマ ンドが区別されます。このように区別されることによるメリットは、同じテスト手順をさまざまなデータのさまざま な組み合わせとともに繰り返し使用できることです。これにより、共通のテストを再利用し、反復テストの作 成に伴う時間と労力を大幅に節約できます。

1. 「Place an Order」ウィンドウで、「Card Number」として「1111 2222 3333 4444」と入力し、「Card Type」を「Visa」のままにして、「Expiration Date」として「12/10」と入力します。

2. レコーディング・ツールバーから、「データ駆動型コマンドの挿入」 アイコンを注文フォームの上にドラッ グします。すると、図 8 に示すように、フォーム全体が赤い枠で囲まれます。

(13)

図 8. データ駆動のアクセスのためにフィールドを選択 3. 図 9 に示すような「データ駆動型アクションを挿入します」ウィンドウが表示されます。デフォルトでは、 すべてのテスト・オブジェクト、つまりパネル上のフィールドをデータ駆動にするものと想定されます。しかしここ では、クレジット・カード情報のみをデータ駆動にします。これにより、同じスクリプトを使用して、複数のクレ ジット・カードについてテストを実行できるようになります。不要なテスト・オブジェクトを削除するには、不要 な テ ス ト ・ オ ブ ジ ェ ク ト を 強 調 表 示 し 、 赤 い 「 X 」 ア イ コ ン を ク リ ッ ク し て 削 除 し ま す 。 CardNumberIncludeTheSpaces、creditCombo、および ExpirationDateText 以外のすべての値につい て削除の操作を行います。

(14)

4. 「OK」をクリックして選択を確定します。

5. 「Place an Order」ウィンドウの「Place Order」ボタンをクリックします。確認ウィンドウが表示されます。次 のセクションで示すように、ウィンドウ内のメッセージを検証します。

動的データを検証する

正規表現 正規表現については既にご存じかもしれませんが、Functional Tester は、すべての標準的な正規表現 の使用をサポートしています。このチュートリアルでは、データ検査ポイントで標準的な正規表現を使用し ます。また、プロパティー検査ポイント値およびオブジェクト認識プロパティーでも使用することができます。正 規表現の詳細については、Functional Tester のオンライン・ヘルプを参照してください。まず「ヘルプ」から 「ヘルプ目次」を選択し、次にヘルプ・メニューから「機能テストスクリプトの記録」、「検査ポイントの作業」、 「正規表現」の順に選択します。

(15)

アプリケーションは、完全には予測できないデータや情報を含む入力に反応することがよくあります。例えば、 ClassicsJava でユーザーが受領する確認メッセージには、2 桁の確認番号が含まれています。将来の注 文でこれが 2 桁の番号となることは予測できるかもしれませんが、番号の値は、アプリケーションを実行す るたびに違ったものになります。番号の実際の値について柔軟性を維持しながら、メッセージのパターンを検 証する方法が必要です。以下で説明するように、Functional Tester の検査ポイントにはこの柔軟性が 備わっています。 1. 図 10 に示すように、レコーディング・ツールバーから「検査ポイント・コマンドまたはアクション・コマンドの 挿入」ボタンを「メッセージ」ウィンドウ内のテキストの上にドラ ッグします。「Your order has been received...」で始まるテキストのみが赤いボックスで強調表示されたら、マウス・ボタンを放します。 図 10. 検証するラベルの選択 2. 検査ポイントにはさまざまなタイプのものがあります。ここでは、単純なデータ検査ポイントを追加します。 「次へ」を 2 回クリックして、デフォルト設定をそのまま使用します。 3. ウィザードの「検査ポイント・データ」画面で、「正規表現への値の変換」 ボタンをクリックします。正 規表現は、既にご存じかもしれませんが、パターン・マッチング言語の 1つの形式です。 4. ウィンドウでデータを編集して、2 桁の番号を消去します。 5. 番号があった場所を右クリックします。コンテキスト・メニューに、もっともよく使用される正規表現パターン のリストが表示されます。コンテキスト・メニューを使用して、2 桁の番号があった場所に「\d¥d」を挿入しま す。このパターンは、応答値が 2 桁の番号でなければならないが、各桁の値は指定しないことを示します。 番号が 1 桁または 3 桁である場合、または各桁の場所に 0 ~ 9 以外のものが含まれる場合には、 テストは失敗します。データは図 11 のようになるはずです。 図 11. 正規表現を含む検査ポイント・データ 6. Functional Tester には、正規表現が目的の機能を果たすことを検証する方法もあります。図 12

(16)

図 12. 「正規表現の評価」ボタン 7. 正規表現エバリュエーター では、「付き合わせる値」ボックスでさまざまなパターンを試すことができます。 値を変更して、「評価」を押します。入力した値が正規表現に一致するかどうかがわかります。 8. 設定したパターンが目的の機能を果たすことが確認できたら、正規表現エバリュエーターで「OK」をクリッ クします。 9. 「検査ポイントおよびアクション」ウィザードで「完了」をクリックします。すると、レコード・モードに戻ります。 10. 「ClassicsJava」確認メッセージ・ウィンドウで「OK」をクリックします。

静的データを検証する

最後に、注文が適切に処理されたことを検証するための検査ポイントを作成する必要があります。 1. ClassicsJava メニューで、「Order」から「View Existing Order Status」を選択します。「OK」をクリックし て再度ログインします。

2. 図 13 に示すように、注文が表示された状態で、注文が赤い枠で囲まれるまで、「検査ポイントおよび アクション」ウィザードをクリックして注文情報の上にドラッグします。

(17)

図 13. 検証する注文の選択 3. ウィザードの最初の画面で「次へ」をクリックします。 4. 次の画面で、「テーブル内容」というデータ値を選択して、「次へ」をクリックします。 5. 最後の画面で、「完了」をクリックして、テーブル・コンテンツをベースライン・データとして格納します。ベー スライン・データは、将来のテスト実行を検証する際に基準とするデータです。すると、レコーディング・モード に戻ります。

アプリケーションをシャットダウンしてレコーディングを停止する

1. 「View Existing Orders」ウィンドウで「Close」をクリックします。 2. 「ClassicsCD」ウィンドウの右上隅の「X」をクリックします。

(18)

セクション 5.テストの確認

テスト・オブジェクト・マップを確認する

レコーディングが終了すると、Functional Tester が自動的にリストアされます。新しくレコーディングされたテ スト・スクリプトが中央のビューに表示されています。コードをスクロールして、レコーディングされたコマンドを 確認します。 右側にあるのは「スクリプト・エクスプローラー」ビューです。このビューには、テストに関連付けられたクラス階 層、データプール、検査ポイント、テスト・オブジェクトといった、スクリプトに関する情報が表示されます。 「テスト・オブジェクト」ツリーの「creditCombo」オブジェクトをダブルクリックします。図 14 に示すように、スク リプトの専用テスト・オブジェクト・マップ・ウィンドウが開きます。スクリプトの専用テスト・オブジェクト・マップに は、レコーディング中に収集された、発生したすべてのオブジェクトに関連するすべてのプロパティーが含まれ ます。このマップ内のプロパティーは、プレイバック中にアプリケーション内のオブジェクトを特定するために使用 されます。各プロパティーの右欄に表示された「重み」は、そのプロパティーが認識にとってどの程度重要で あるかを示します。

(19)

図 14. スクリプトの専用テスト・オブジェクト・マップ マップ内のこのエントリーには、6つのプロパティーがあります。特許を取得している Functional Tester の ScriptAssure™ ファジー理論テクノロジーでは、これらのプロパティーのすべてを使用して、プレイバック中に 各組み合わせがどのように優れているかを決定します。いずれかのプロパティーに変更がなされても、プレイ バックが失敗することはありません。アプリケーションの新しいバージョンでは 2つまたは 3つのプロパティーが 変更される可能性がありますが、プレイバックの失敗を招くことなく変更が可能です。 スクリプトの専用テスト・オブジェクト・マップを閉じます。

データプールにデータのばらつきを追加する

「スクリプト・エクスプローラー」ビューで「専用テスト・データプール」オブジェクトをダブルクリックします。図 15 に示すように、このスクリプトに関連付けられたデータプールがウィンドウの下部に表示されます。

(20)

1. 「テスト・データプール」内の0行目をクリックして、Enterキーを押下します。 2. データの 2 行目がテスト対象として表示されます。クレジット・カード番号のフィールドをダブルクリックし て、新しいカード番号「1234 1234 1234 1234」を入力します。 3. クレジット・カード・タイプを「Amex」に変更します。 4. 有効期限のフィールドに、有効期限「06/10」を入力します。

テストにカスタム動作を追加する

前述のとおり、テスト・スクリプトはすべて Java コードです (JavaScript ではありません。またFunctional Tester独自の言語でもありません)。これにより、きわめて強力な機能を活用して、テストにおけるユーザー 固有のニーズに対処できます。また、Functional Tester では、豊富なアプリケーション・プログラミング・イン ターフェース (API) が提供され、これを通じてテスト・オブジェクトにアクセスしたりテスト実行を制御したりす ることが可能です。 テストをレコーディングした際に、最初に手動でクレジット・カード番号と有効期限を入力し、次にデータ駆 動コマンド・ウィザードを使用して、プレイバック中にデータプールからこれらのフィールドが自動入力されるよ う設定しました。そのため、不要なコマンドがテスト内に残っています。残ったコマンドは害にはなりませんが、 スクリプト・コードの編集機能を見るためにここで削除してみます。 1. 「PlaceOrder.java」ビューのテスト・スクリプトで、図 16 に示す 4つの行を削除します (フィールド間の 移動をクリックではなく Tab キーを使って行った場合には、コマンドはこれとは若干異なるものになります)。 図 16. コードの削除 2. 次に、テスト・ログに、コンピューター画面のイメージをキャプチャーするコードを 1行追加する必要があり ま す 。 テ ス ト ・ ス ク リ プ ト で 、 デ ー タ プ ー ル 値 か ら 有 効 期 限 を 入 力 す る コ マ ン ド を 見 つ け ま す 。 「expirationDateText().setText」で始まる行です。 3. カーソルをこの行の最後に置き、Enter キーを押して新しい行に移ります。 4. 「logi」と入力したところで、Ctrl キーとスペース・キーを押します。図 17 に示すように、このコンテキスト

(21)

で有効なコードの続きの候補すべてがポップアップ・ウィンドウで表示されます。この機能はコード・アシスト と呼ばれています。 5. キーボードの下矢印キーを押して、リスト内の 2つ目の項目を強調表示します。2つ目の項目は logInfo() で、これはテスト・ログに情報エントリーを作成する、RationalTestScript クラスに対する静的メ ソッドです。String 引数 (ラベル) と BufferedImage (挿入するスクリーンショット) を伴います。 図 17. コード・アシストを使用した入力 6. Enter キーを押して、メソッド・コールをスクリプトに挿入します。

7. String 引数プレースホルダーを選択しました。「"Screen Snapshot"」(二重引用符を含む) と入力し、 Tab キーを押してイメージ・プレースホルダーに移ります。 8. スクリーン・イメージをキャプチャーするために、ルート・テスト・オブジェクトに対するメソッドを使用します。 「getRootTestObject().getScreenSnapshot()」と入力します。必要に応じて、コード・アシストを使用して 入力作業を省きます。 9. 行の最後にセミコロンを追加します。変更内容を保存します。スクリプトは下記図 18 のようになるは ずです。 図 18. スクリプトに挿入された logInfo() コール この他にも、Functional Tester スクリプトのカスタム・コードでできることは多数あります。詳細な説明は本 チュートリアルでは省きますが、拡張 API、強力なデバッガー、コード・アシストといった機能により、テスター 初心者でもカスタム・スクリプト記述に着手しやすくなります。

(22)

ClassicsJava ビルド B に対して準備する

Functional Tester には、ClassicsJava サンプル・アプリケーションのビルドがもう 1つ付属しています。次 のセクションでは、この新しいビルドに対してテストをプレイバックして、アプリケーションの進化に伴うUI レイア ウトの変更に Functional Tester がどのように対応できるかを説明します。しかしその前に、スクリプトを新 しいビルドで使用できるように準備する必要があります。

1. ス ク リ プ ト 内 の testMain() メ ソ ッ ド の 先 頭 近 く に あ る コ ー ド の startApp 行 を 見 つ け ま す 。 ClassicsJavaA を ClassicsJavaB に置き換えます。これにより、ClassicsJava の新しいバージョンを起 動する際に別のショートカットが使用されるようになります。ショートカットの名前では、大文字と小文字が 区別されるため、大文字の「B」を使用するよう注意してください。 2. Ctrlキーとsキーを同時に押して、変更内容を保存します。 3. 「ウィンドウ」、「設定」を開き、設定画面を表示します。 「FunctionalTest」、「再生」、「ScriptAssure™」で「拡張」ボタンをクリックし、「最終機会認識スコア」の右 側の「デフォルトの使用」のチェックを外して、値を30000に変更し、「OK」をクリックします。(下図参照)

(23)

セクション 6.自動化された回帰テストの実行

回帰テストの実行に移る前に、これまでの内容を簡単に復習しておきます。これまでに行った内容のポイン トは次のとおりです。

• プロジェクト というテスト・リポジトリーを作成することにより、テスト環境をセットアップしました。

• Functional Tester によって GUI コンポーネントがオブジェクトとして認識されるよう、アプリケーション環 境を使用可能にしました。 • アプリケーションを構成し、プレイバックを簡素化してテストを他のシステムにも移植しやすくするためにショ ートカットを作成しました。 • 次に、アプリケーションに対して手動でテスト・シナリオを実行することによりテストのレコーディングを行いま した。 • レコーディング中、単純なウィザードを通じて、ハンド・コーディングを行うことなく、入力したデータをデータ プールに関連付けました。 • 2つの検査ポイントの挿入も行いました。1つはテーブル内の静的ベースライン・データを検証するもの、もう 1つは正規表現を使用してパターン・マッチングにより動的応答を検証するものです。 • 次に、追加のデータセットをデータプールに追加し、カスタム・コードを追加して API コールでプレイバック 中のスクリーンショットが記録されるようにすることにより、テストを強化しました。 以上で、テスト対象アプリケーションの新しいビルドを起動するためのテストの構成が完了し、機能回帰テ ストを実行して結果を分析する準備が整いました。

テストの実行

1. ツールバーから「Functional Testスクリプトの実行」ボタン をクリックします。プレイバック・ウィザード を使用して、テストの実行前にログ名とオプションを指定できます。「次へ」をクリックすることにより、デフォル トのログ名をそのまま使用することにします。

(24)

タプール反復カウント」ボックスで、「完了するまで繰り返します」を選択します。これは、データプールのすべ ての行について 1 回ずつテストを実行するよう指定するものです。 3. 「終了」をクリックします。Functional Tester によってテストがプレイバックされるのを待ちます。このテスト を以前に実行したことがある場合には、ログを上書きするかどうかを尋ねられる可能性があります。 プレイバック中に注目すべき事項は次のとおりです。 • ClassicsJava アプリケーションのこのビルドではどのように UI が異なって見えるかに注目します。いくつか のオブジェクトが移動されたりサイズ変更されたりしているにもかかわらず、Functional Tester によって適切 に場所が認識され、対話が行われています。 • 最初のログイン・ボックスで、パスワード・チェック・ボックスのチェックの前にテストが数秒間停止します。この 点については、ログ・ファイルでテスト結果を確認する際に詳しく説明します。 • テストはシナリオ全体が 2 回、データプール内の各データセットにつき 1 回ずつ実行されます。 • テストが完了すると、結果がブラウザーで HTML 形式のログで表示されます。(このブラウザー・ウィンドウ は、リストア中の Functional Tester のウィンドウに隠れて見えない場合があります。) 次のセクションで、ログ・ファイル内の結果を確認します。

セクション 7.テスト・ログ内の結果の確認

デフォルトでは、テスト・ログはテスト実行完了時に即時に開きます。ブラウザーを閉じた場合には、 「Functional Test プロジェクト」ビューで「myFunctionalTestProject_logs」ノードの下にテスト・ログを見つ けることができます。 ログの左フレームには、有益な情報へのクイック・ナビゲーションが表示されます。右フレームには詳細情報 が表示されます。

ScriptAssure

図 19 に示すような最初の警告文までスクロールします。メッセージには「オブジェクト認識が弱いです (警 告しきい値を超えています)」と表示されています。これは、UI のコンポーネントに変更があったケースです。 実際のところ、2つのビルドの間で開発者によってこのオブジェクトの複数のプロパティーが変更されました。 大半のテスト自動化ツールであれば、そのようなオブジェクトに遭遇した場合には、エラーとして排除し、回 帰スイートの残りを中止するしか選択肢がないでしょう。このことは、実行に数時間かかる回帰テスト・スイ ートを深夜に実行するように設定したものの、翌朝出社してみるとテストは失敗していて結果がないという 場合に、現実の問題となります。

(25)

ないことを認識しました。プレイバック中の休止は、一致するオブジェクトが現れるかどうかを確認すべく Functional Tester が待機していた時間だったのです。指定されたタイムアウト後、Functional Tester は、 画面上のオブジェクトは期待されていたものと十分に似ていると判断し、警告を記録し、そのオブジェクトの 使用を続けました。ニーズに合わせて ScriptAssure の動作をカスタマイズするために、いくつかのプロパテ ィーの比重、タイムアウト値、およびしきい値を構成することができます。 図 19. テスト・ログ内の ScriptAssure による警告

カスタム・ログ情報

ログを次のイベント「Screen Snapshot」までスクロールします。このイベントは、先ほど入力したカスタム・コ ードの結果です。「クリックしてフル・サイズを表示」というリンクをクリックします。図 20 に示すこのスクリーン ショットは、テストに追加した logInfo() コマンドの結果としてプレイバック中にキャプチャーされたものです。 使用されているクレジット・カード番号が「1111 2222 3333 4444」となっています。これはデータプールの最 初の行からの値です。 図 20. 1つ目のスクリーン・スナップショット ブラウザーの「戻る」ボタンを押してログに戻ります。

(26)

検査ポイント・ステータスを調査する

ログ内の最初の検査ポイント (VP) を見つけます。この検査ポイントに対するテスト・ログ内のこのエントリ ーは、「検査ポイント [YourOrderHasBeenReceivedYou] でパスしました。」という名前となり、図 21 の ようなものであるはずです。これは、正規表現を使用して動的な注文番号に対応できるようにした VP で す。 図 21. 合格した VP ログ・イベント ログ内の次の検査ポイントを見つけます。このイベントは、「検査ポイント [existingTable_contents] で失 敗しました。」というラベルが付いています。「結果の表示」リンクをクリックすることにより、この失敗の詳細情 報を調べます。図 22 に示す 検査ポイント・コンパレーターにより、CD「Symphonies Nos. 5 & 9」が注文 されたにもかかわらずアプリケーションは「String Quartets Nos. 4 & 14」の注文を行ったために VP が失敗 したという事実が赤で強調表示されます。ClassicsJava アプリケーションのビルド B における回帰を明ら かにしました。コードになされた、一見無関係のように思われる変更により、注文プロセスで誤った商品が 使用される事態が引き起こされました。このこと、つまり意図しない動作の変更を発見することは、機能回 帰テストの真の価値です。Functional Tester を通じたテストの自動化により、すべてのビルドの回帰テス トを行うという目標を達成しやすくなります。 図 22. 検査ポイント・コンパレーター 検査ポイント・コンパレーターを閉じます。

(27)

データプールの動作を検証する

ログ内をさらにスクロールします。同じイベントのセットが 2 回繰り返されていることに気づくと思います。この 繰り返しは、データプール内のデータの 2 行目が使用された場合に起こります。2つ目の「Screen Snapshot」イベントを開くことにより、データプールの動作を確認することができます。クレジット・カード番号 は、図 23 に示すように、データプールの 2 行目からの値である「1234 1234 1234 1234」となります。 図 23. 2つ目のスクリーン・スナップショット

セクション 8.まとめ

このチュートリアルでは、Rational Functional Tester の概要を紹介しました。アプリケーション環境を使用 可能にし、機能回帰テストをレコーディングし、単純なカスタム・コーディングでテストを強化し、アプリケーシ ョンの新しいビルドに対してそのテストを実行し、テスト結果を分析してサンプル・アプリケーション内の回帰 の欠陥を発見しました。

Hello World シリーズのすべての記事の最新情報については 以下のHello World 概要ページを参照して ください。

http://www-128.ibm.com/developerworks/offers/lp/helloworld/?S_TACT=105AGX19

&S_CMP=tut

(28)

参考文献

学ぶために

• サービス指向アーキテクチャー (SOA): IBM の SOA について説明しています。

http://www-06.ibm.com/jp/solutions/soa/

• Functional Tester: Rational Developer Domain に豊富な参考記事を用意しています。

http://www.ibm.com/developerworks/jp/rational/library/qm/index.html#rft

製品や技術を入手するために

• Eclipse: オープン・ソース開発プラットフォーム Eclipse について詳細を説明しています。

http://www.eclipse.org/

• Rational Functional Tester ダウンロード: 現在の最新の無料体験版をダウンロードできます。

http://www.ibm.com/developerworks/jp/downloads/r/rft/

議論するために

• この記事についてのディスカッション・フォーラムに参加できます。

(29)

著者について

Dennis Schultz

Dennis Schultz は、1995 年にテクニカル・セールス・エンジニアとして Rational に入社しました。8年間、 多数の顧客と緊密に協力し、顧客プロジェクトへの Rational ソリューションの実装を行ってきました。ソフ トウェア構成管理、変更管理、要件管理、およびテスト管理および実装のためのソリューションの展開を 支援しました。2003 年以降は、IBM Rational ソフトウェアのテクニカル・マーケティング・エンジニアとして勤 務しています。Schultz は、アイオワ州立大学でコンピューター・エンジニアリングの理学士号を取得してい ます。ミズーリ州セントルイスに住んでおり、余暇は 4人の子どもたちと過ごしています。

図  4  のように、機能テスト・プロジェクトのビューに  2つの新しいエントリーが表示されます。1つはテストの 成果物、もう  1つは結果ログのリポジトリーです。    図  4
図  6.  「アプリケーション構成ツール」ウィンドウ
図  8.  データ駆動のアクセスのためにフィールドを選択    3.  図  9  に示すような「データ駆動型アクションを挿入します」ウィンドウが表示されます。デフォルトでは、 すべてのテスト・オブジェクト、つまりパネル上のフィールドをデータ駆動にするものと想定されます。しかしここ では、クレジット・カード情報のみをデータ駆動にします。これにより、同じスクリプトを使用して、複数のクレ ジット・カードについてテストを実行できるようになります。不要なテスト・オブジェクトを削除するには、不要 な テ ス ト ・
図  13.  検証する注文の選択    3.  ウィザードの最初の画面で「次へ」をクリックします。    4.  次の画面で、「テーブル内容」というデータ値を選択して、「次へ」をクリックします。    5
+2

参照

関連したドキュメント

理系の人の発想はなかなかするどいです。「建築

と歌を歌いながら止まっています。電気きかん車が、おけしようを

ダウンロードファイルは Excel 形式、CSV

“Microsoft Outlook を起動できません。Outlook ウィンドウを開けません。このフォルダ ーのセットを開けません。Microsoft Exchange

これはつまり十進法ではなく、一進法を用いて自然数を表記するということである。とは いえ数が大きくなると見にくくなるので、.. 0, 1,

Bluetooth® Low Energy プロトコルスタック GUI ツールは、Microsoft Visual Studio 2012 でビルドされた C++アプリケーションです。GUI

Visual Studio 2008、または Visual Studio 2010 で開発した要素モデルを Visual Studio