第9回 Mercury QuickTest Professionalを使ったテスト理論的・計画的なWebアプリケーションのテストの実現(3/3 ページ)

» 2007年01月22日 08時00分 公開
[加藤大受,ITmedia]
前のページへ 1|2|3       

 ここまで設定したらスクリプトの作成は終了ですので、記録を停止します。記録を停止すると、図10のような画面が表示されます。上部のキーワードビューには設定したチェックポイントおよび画面遷移が記載されており、下部にはチェックポイントでの期待結果が変わるときに値を設定しておくためのデータテーブルと、Active Screenとブラウザに表示された画面が表示されます。Active Screen画面でも追加でチェックポイントを設定できるため、テスト開始時は非常に簡単なチェックポイントだけを入れておき、徐々にチェックポイントを増やすこともできます。

図10 図10 記録を停止したところ

 作成されたスクリプトはエキスパートビュー画面で見ることができます。リスト1は作成したスクリプトのコードです。QTPはDOMレベルでオブジェクトを記録しているため、単純にコードを見るだけではどんなことしているか分かりづらいですが、慣れてくるとこのコードを直接書いてチェックポイントを設定していくことも可能です。また、DOMレベルで保存されているオブジェクトはオブジェクトリポジトリに管理されており、このリポジトリを直接編集したり、複数のユーザーで共有したりできます。

 作成したスクリプトを実行すると、図11のような結果リポートが出力されます。Jameleonと異なり、すべての画面ショットを保存することもエラーとなった画面ショットのみを保存することも可能です。


Browser("SourceForge.net: Welcome").Page("SourceForge.net: Welcome").Check CheckPoint("SourceForge.net: Welcome to SourceForge.net")
Browser("SourceForge.net: Welcome").Page("SourceForge.net: Welcome").Link("SourceForge.net").Check CheckPoint("SourceForge.net")
Browser("SourceForge.net: Welcome").Page("SourceForge.net: Welcome").Check CheckPoint("SourceForge.net: Welcome to SourceForge.net_2")
Browser("SourceForge.net: Welcome").Page("SourceForge.net: Welcome").Check CheckPoint("SourceForge.net: Welcome to SourceForge.net_3")
Browser("SourceForge.net: Welcome").Page("SourceForge.net: Welcome").WebEdit("words").Set "Jameleon"
Browser("SourceForge.net: Welcome").Page("SourceForge.net: Welcome").WebButton("Search").Click
Browser("SourceForge.net: Welcome").Page("SourceForge.net: Software").Link("Jameleon").Check CheckPoint("Jameleon")
Browser("SourceForge.net: Welcome").Page("SourceForge.net: Software").WebElement("Searching projects gives").Check CheckPoint("Searching projects gives 1 results")
Browser("SourceForge.net: Welcome").Page("SourceForge.net: Software").Link("Jameleon").Click
Browser("SourceForge.net: Welcome").Page("SourceForge.net: Jameleon").Link("Project").Check CheckPoint("Project")
Browser("SourceForge.net: Welcome").Page("SourceForge.net: Jameleon").Link("engrean").Check CheckPoint("engrean")
Browser("SourceForge.net: Welcome").Page("SourceForge.net: Jameleon").Link("Web Site").Click
Browser("SourceForge.net: Welcome").Page("Jameleon - An Automated").Image("Christian Hargraves").Check CheckPoint("Christian Hargraves")
Browser("SourceForge.net: Welcome").Page("Jameleon - An Automated").WebElement("Jameleon").Check CheckPoint("Jameleon_2")

リスト1 作成したテストのスクリプト
図11 図11 結果リポート

 作成したスクリプトを保存して実行することで何度でも同じテストを実施できます。ちなみにJameleonで作成したMercury Toursのテストと同じ内容をQTPで記録するとリスト2のようなスクリプトになります。


Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").WebEdit("userName").Set "jameleon"
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").WebEdit("password").SetSecure "458191099a818648851e3b76da01f313dbd697f096ec"
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").Image("Mercury Tours").Check CheckPoint("Mercury Tours")
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").WebTable("Home").Check CheckPoint("Home")
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").Image("Sign-In").Click 22,9
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").Check CheckPoint("Find a Flight: Mercury Tours:")
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("airline").Check CheckPoint("airline_2")
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("airline").Check CheckPoint("airline")
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("fromPort").Select "London"
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("fromMonth").Select "April"
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("fromDay").Select "1"
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("toPort").Select "New York"
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("toMonth").Select "April"
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("toDay").Select "10"
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebRadioGroup("servClass").Select "Business"
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").Image("findFlights").Click 40,3
Browser("Welcome: Mercury Tours").Page("Select a Flight: Mercury").WebTable("DEPART").Check CheckPoint("DEPART")
Browser("Welcome: Mercury Tours").Page("Select a Flight: Mercury").WebTable("RETURN").Check CheckPoint("RETURN")

リスト2 Mercury Toursのテストスクリプト

 ただし、Jameleonで作成した場合と異なり、遷移されたページが正しいかどうかの確認や飛行機の検索結果の判定方法は違います。チェックポイントは次のように設定されています。

Mercury Toursのトップページの確認

Mercury Toursのイメージリンクがあること(ビットマップチェックポイント)

Mercury Toursのイメージリンクの下に「Home」「Flights」「Hotels」「Car Rentals」「Cruises」「Destinations」「Vacations」のリンクがあること(標準チェックポイント)

Flight Finderページの確認

Flight Finderの文字列が「Use our」および「to search for the lowest fare on participating airlines.」の間で表示されていること(テキストチェックポイント)

airlineのコンボボックスの初期値が「No Preference」であること(標準チェックポイント)

Select a Flightのページの確認

DEPARTでBlue Skies Airlines 360がチェックされていること(標準チェックポイント)

RETURNでBlue Skies Airlines 630がチェックされていること(標準チェックポイント)

 このように基本的なテストスクリプトの作成はGUIから簡単に行えるのがQTPの特徴です。QTPは多くの機能があり、ここで紹介したのは本当に触りだけです。使いこなせばこなすほど、さまざまなテストの自動化やテスト作業の効率化を実現できるようになります。

JameleonとQTPの違い

 JameleonとQTPで同じWebアプリケーションのテストを作成してみました。基本的にWebアプリケーションの機能テストが実現できることは同じです。またCSVファイルを使ってデータドリブンなテストを実施できるのも共通しています。

 それではQTPとJameleonの違いは何でしょうか。簡単に言ってしまうと、テストの記録の有無と複雑なテストを作成できるかどうかです。JameleonではJellyスクリプトで基本的にテストを作成していきます。ただし、テストのオペレーションによって条件分岐したり、ほかのテストを呼び出したりするのはJameleonではほとんど実現できません。もちろんJavaのコードと組み合わせれば実現可能ですが、そこまで苦労して自動化するメリットは出てこなくなります。

 QTPはVBScriptsベースのスクリプト言語を持っているので、環境依存する部分はiniファイルに記述し、テストスクリプトからそのiniファイルを呼び出すことなども簡単にできるだけでなく、テストスクリプトを構造化していくことも可能です。

 高度なテストを行いたいのであれば、QTPに付属しているスクリプトデバッガでVBScriptsを記述する方法が有効です。また米国のMercury Interactiveのサポートサイトには便利なVBScriptsのライブラリがユーザーによって多く登録されており、ユーザー同士のコミュニティーサイトも提供されています。

 つまり、機能テストの簡単なものを実現するために利用できるツールがJameleonであり、本格的な機能テストの自動化でテスト工程全体の効率アップを図りたいのであればQTPを使用する必要があるということです。

 ここで間違って欲しくないのは商用だからいいとか、オープンソースだから悪いということでないということで、プロジェクトの規模や予算に合わせてどちらを利用していくかを検討すればいいということです。

 自動化を実現していくにはテストチームだけではできません。開発チームあるいは開発担当者の協力がなければテストの自動化のメリットは生まれてきませんので、その体制作りのためにもまずはJameleonではじめてみるというのもいいでしょう。

次回に向けて

 次回はこの連載の締めくくりとして自動化のメリットとデメリットを再度説明し、自動化を行う際のポイントを解説したいと思います。

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ