アットウィキロゴ

はじめに

Oracle Application Testing Suite 8.3 (旧:Empirix社のe-Test Suite)を使って、スクリプトの作成及び主な機能を一通り紹介する。

Webサイトでは、ログインなど入力を必要とする画面をよく見かけるが、テストでは多くのバリエーションのデータを用意して実行しなければならない。当然、このような要件を実現する機能を持っているが、実際のスクリプト作成においてよく利用する(言い換えれば便利な)機能も併せて載せていく。

今回は、Webサンプルアプリケーションで有名な「JPet Store」 のサイトを例に、テストのスクリプトを作ってみる。

ちなみに、自分が利用したサンプルは、Spring Framework(http://www.springframework.org/) に付属しているものを使用し、Oracle WebLogic Server 10.3 にデプロイしてで試してみた。

ダウンロード&インストール

Oracle Application Testing Suite は、OracleのOTNのサイト


から、評価版をダウンロードできる。

インストール方法はそれほど難しくないが、JBossの設定だけ少し迷うかもしれない。こちらでもインストール&セットアップ手順を紹介しているので、ご参考までに。


Oracle Application Testing Suiteの主なコンポーネントは次の通り。
  • e-Tester … スクリプト作成、及びスクリプトの動作確認が主な役目のコンポーネント
  • e-Load … スクリプトを多重で実行する、いわゆる性能テストを行うコンポーネント

今回のスクリプト作成では、e-Testerを利用する。

スクリプトの記録

テストスクリプトの作成は、e-Testerを利用する。スタートメニューの「すべてのプログラム」から[e-Test Suite]→[e-Tester]で起動する。


アドレス部分に、http://<server_name>:<port>/jpetstore/shop/index.do を入力すると、ブラウザと同様にサイトが表示される。


スクリプトの記録(赤い丸ボタン)の前に、メニューの[編集]→[記録状態の初期化]を実行する。特殊なケースではない限り、新規スクリプト作成時は決まりきったお作法だと思ってもらって構わない。記録状態の初期化を行ったら、さっそく記録ボタンを押してみる。この後の操作は、ブラウザと同様にリンクをクリックするだけである。

今回は、以下のように画面遷移をさせた。


画面遷移をすべて行った後は、上部の停止(■ボタン)を押して終了。

基本的なスクリプトはこれで終了である。結構簡単。

最後に、[ファイル]メニューからスクリプトを保存する。デフォルトのスクリプト名は「Script1」等になってしまうので、スクリプトの管理面から名前を付けて保存した方がいいだろう。

スクリプトの実行

記録したスクリプトを実際に動作させるには、ナビゲーションエディタで実行をする。e-Testerのメニュー[ツール]→[eLoad ナビゲーション エディタ]で起動する。ショートカット「Crtl+E」でも起動できるので、慣れるとこちらを使ったほうがいいだろう。


スクリプトの再生(三角ボタン)を押下することで、実行する。

上手く実行できたら、右側の画面に最後の画面が表示されているだろう。また、下の「仮想ディスプレイ」でも確認できる。

※もし、残念ながらエラーが発生したら、、、。原因によって対処方法が違ってくる。書き出すときりがないため、ここでは省略する。

※ちなみに、eTesterにもスクリプト再生(三角ボタン)がある。こちらもスクリプトを実行できるが、この後の作業も含め、あまり使う場面がないと思う。

データバンクの利用

このスクリプトのままでも動作するが、ログインするユーザが固定になってしまう。単発のテストであればいいかもしれないが、負荷テストを行うときはこの状態はあまり好ましくない。

ログイン画面などのフォーム(PostやGet)のパラメータ等を動的に変更することができるのが、データバンクと呼ばれる機能である。データは、CSV形式で保存しておけばOK。

ログイン画面のユーザ名、パスワードの部分をデータバンク化する。まず、

インストールディレクトリ\eTEST\DataBank

にファイル(ここでは、petstore_user.csv)を作成して、次のようにデータを作成する。

usrename,password
user1,user1
user2,user2
user3,user3
user4,user4
user5,user5

e-Testerの画面(ナビゲーションエディタではない)から、[編集]→[データバンクウィザード]又は、ドラムみたいなアイコン(×アイコンの右)を押すと、データバンクウィザードが開く。


1. [変数の追加]で2つの変数を追加する。この変数は、あくまでデータバンク上での変数であり、ここでは「username」と「password」としているが、指定する名前は任意で構わない。

データバングウィザード画面の[データの連結]タブを押す。[選択]があるので、先程作成したCSVファイルを選ぶ。


2. 変数とデータバンクフィールドにusernameとpasswordが入っているので、それぞれを選択してから[連結の追加]を押して、マッピングする。

この後、Formのパラメータとデータバンクで定義した変数をマッピングするのだが、2通りの設定方法があるが、ここではデータバンクウィザードで設定する方法を紹介する。

3. [変数]タブにて「パラメータ」と「変数」をマッピングさせる方法。パラメータusername[3,2]、password[3,3] と変数username、password をそれぞれ[マッピングの追加]で設定する。


設定できたら、[OK]ボタンを押して画面を閉じる。

データバンク機能を使ってスクリプトの実行をしてみる。[実行]→[データバンクを使用して再生]か、先程スクリプト実行のボタンの隣にある「三角とドラム」アイコンを押す。

すると、次のような「データバンクを使用して再生」画面が表示される。



レコード番号は適当に選んでOKを押すと、そのレコードデータを使って実行される。データバンクがきちんと使われたかどうかは、実行した時の画面を確認すればよい。自分の場合は、ログイン後の画面にユーザ名が表示されるのでそこで確認をした。
画面の確認は、ナビゲーションエディタの仮想ユーザディスプレイで該当する画面の行(ログイン後の画面は[3.1])をクリックすることで可能。

※user4 でスクリプトを実行した。

動的な結果画面への対応

Googleの検索結果のように、入力したデータによって内容が変化するページは数多くある。このような画面に対応するために、JPetStoreを使ってスクリプトを変更していく。
具体的には、
  • ログイン後に選ぶカテゴリ(FishやDogとか)をユーザ毎に変化
  • カテゴリを変更すると商品(ペット)が変わるので、その対応
である。

データバンクを使ってカテゴリを設定

まず、カテゴリを動的に変更させるには紹介したデータバンク機能を利用してみる。CSVにカラムを増やして、次のように定義する。

usrename,password,category
user1,user1,FISH
user2,user2,DOGS
user3,user3,REPTILES
user4,user4,CATS
user5,user5,BIRDS

なお、3つ目の値は、3ページ目のログイン後の画面に、
/jpetstore/shop/viewCategory.do?categoryId=FISH
/jpetstore/shop/viewCategory.do?categoryId=DOGS
/jpetstore/shop/viewCategory.do?categoryId=REPTILES
/jpetstore/shop/viewCategory.do?categoryId=CATS
/jpetstore/shop/viewCategory.do?categoryId=BIRDS
のリンクの文字列があったので、そこから値を取り出した。

データバンクウィザードで設定をするが、先程記述した1 と 2の手順まで行う。3(パラメータと変数のマッピング)までは行わず、そのままOKを押してデータバンクウィザードを閉じる。

ナビゲーションエディタの「ナビゲーション」で、4番目の画面のURLを選ぶ。文字では説明しずらいのだが、画面の「FISH」の部分だけをマウスでドラッグして右クリックを選ぶ。
メニューが表示されるので[データバンク変数]→[category]を選択する。



上手く操作ができたら、「categoryId=category」というように変化し、「category」の部分が緑色に変化するはず。これで設定が完了となる。


ユーザ定義変数ウィザードを使って文字列(キーワード)を抜き出す

選ぶカテゴリが変わると、当然その次の画面(4番目)で出力される商品が変わる。そのため5番目に画面遷移するときのURLは変わってしまうのである。

http://localhost:7002/jpetstore/shop/viewProduct.do?productId=FI-FW-01

5番目のURLは上記のようになっているが、productId「FI-FW-01」の部分は記録した時のものなので不適切なURLとなってしまう。

この対処方法として、「ユーザ定義変数ウィザード」を使って、前の画面(4番目)のHTML文書の中から正規表現で文字列を抜き出し、FI-FW-01の部分をその文字列で置き換えてしまおうという方法である。

5番目のURLの「FI-FW-01」の部分だけマウスで選択して右クリックをする。(少し操作が難しいが、、)


[新規ユーザ定義変数]→[ユーザ定義変数ウィザード]でウィザードを起動する。


だいたいの場合は、「次へ」を押すだけで上手くいってしまう。各画面は、以下に示す事を行っている。
  1. 「新規ユーザ定義変数を作成」を選択
  2. 動的に変更するキーワードを検索するための「キーワード」と検索対象(HTML文書とかURLとか)を指定
  3. 前の画面の結果。複数見つかった場合は、複数結果が表示される。ほとんどの場合は、Formのパラメータの引数等になっているため、直前のページでキーワードが見つかる。
  4. キーワードを検索する正規表現が自動で作成されているので、これを確認する。もし、別の関係ないキーワードをHitしてしまいそうな場合などがあれば、手動で修正する。
  5. 前の画面の設定の確認。
  6. 動的に変更する値に対する一意の識別子(名前)をつける

その後、ナビゲーションエディタに戻り「FI-FW-01」をマウスで選び右クリック後、[新規ユーザ定義変数]→定義した名前 を選ぶ。


その他に新規ユーザ定義変数を行う必要があるものとして、6ページ目のitemid=「EST-4」があるので同様に行う。

設定が一通り終了したら、データバンクの実行で動作を確認し、正常に画面遷移ができれば成功である。

画面チェック

画面遷移が上手く行っていたように見えても、実はエラー画面が表示されている可能性がある。HTTPのレスポンスコードが500であればすぐに気付くが、200が返ってくるエラー画面の場合、スクリプトの実行をしても上手く画面が遷移していることがある。

ここでは、期待した画面が出ているかを確認する方法を紹介する。最後のページ(11ページ目)を例に説明する。

最後のページは、買い物が終了した画面で、「Thank you, your order has been submitted.」という文字が記述されているので、この文章が表示されていれば成功と判断することにする。

11ページ目の「[11]ナビゲーション1 -> windows(index=0)」にカーソルを合わせ、右クリックをし[新規ユーザ定義変数]を選択する。


選択すると、以下のユーザ定義変数(緑色)が作成される。



プロパティの部分で「名前」に適当な名前(ここではCheck)、Patternに先ほどの文章「Thank you, your order has been submitted.」を入力する。



その後、同じようにデータバンクの実行を行って動作を確認する。逆にチェックが機能しているかを確認するには、わざと間違えた文字を指定して失敗させてみると分かりやすい。
最終更新:2008年10月15日 12:43