IBM®
本文へジャンプ
    Japan [変更]    ご利用条件
 
 
検索範囲検索:    
    ホーム    製品    サービス & ソリューション    サポート & ダウンロード    マイアカウント    
skip to main content

developerWorks Japan  >  Java technology  >

理論的・計画的なWebアプリケーションのテストの実現: Mercury QuickTest Professionalを使ったテスト

developerWorks
ページオプション

JavaScript を要するドキュメントオプションは表示されません


レベル: 初級

加藤 大受, Writer, ITmedia

2007年 5月 18日

オープンソースの機能テストツールであるJameleonを使ったWebアプリケーションのテスト作成とは別に、今回は、商用製品である「QuickTest Professional 9.0」を用いて同様の内容を行ってみます。

オープンソースの機能テストツールであるJameleonを使ったWebアプリケーションのテスト作成を紹介しましたが、今回は、アプリケーションの機能テストおよび回帰テストの自動化を実現するMercury InteractiveのMercury QuickTest Professional 9.0(以下QTP)で、Jameleonで作成したテストと同じ内容を行ってみます。実際にテストスクリプトの作成に入る前に、QTPの概要について説明しておきましょう。

QTPが実現するテストとは

QTPはWebアプリケーション、GUIアプリケーションの機能テストおよび回帰テストの自動化を実現するテストツールです。テストツールのカテゴリーとしてはキャプチャーリプレイツールの中に該当する製品であるといってもよいでしょう。テストの作成はQTPの記録機能を利用し、テストオペレーションを記録し、そのオペレーションの中で確認するポイントをGUIにて設定していきます。この記録した内容はVBScriptsベースのスクリプトとなり、このスクリプトを変更することで、さまざまなテストを入れていくことが可能です。

QTPにはアドインという機能追加の仕組みがあり、オプションのさまざまなアドインを利用することでリッチクライアントへの対応など、さらに多くのアプリケーションのテストを実現できます。また、Mercury Business Process Testingと連携することで、ERPアプリケーションの業務プロセスのテスト自動化も行えます。

QTPはMercury Quality Centerに位置付けられる製品の1つで、テスト計画、テスト要件管理、不具合管理を実現するMercury TestDirectorと連携することで、QTPで見つかった不具合の登録やQTPを利用した回帰テストの実現、スケジューリングされたテストの実行を行えるようになっています。

また、負荷検証ツールのMercury LoadRunnerとも連携でき、負荷をかけながらの機能テストの実施やQTPを利用した負荷検証用の環境作りなど、Mercury Ineractiveが提供するさまざまな製品と連携することでテスト工程の短縮やテストカバレッジの向上を実現できるようになっています。





上に戻る


簡単なテストを作成してみよう

QTPの詳細な説明はMercury IneractiveのWebサイトを参照してもらうこととして、Jameleonのjiffie-sourceforge.xmlで行ったテストをQTPで作成しながらQTPの機能を見ていきましょう。

QTPを起動すると図1のような画面が表示されます。ここから[記録の開始]を選択すると、図2のような[記録と実行環境設定]ダイアログボックスが表示されます。ここでテスト対象がWebアプリケーションなのか、GUIアプリケーションなのかを選択し、Webアプリケーションの場合であればすでに開かれているブラウザを利用するのか、それともテスト記録開始時にブラウザを起動するのかを指定します。この指定は作成したテストスクリプトにも反映されます。アドレスにSouceForge.netのURLを入力してテストを作成していきましょう。


図1. QTPを起動したところ


図2. [記録と実行環境設定]ダイアログボックス

テストの記録が始まると、QTPとブラウザが横に並べられます。ブラウザにSourceForge.netのトップページが表示されたところで、SourceForge.netのトップページが表示されたどうかを確認するため、[挿入(I)]-[チェックポイント(C)]-[標準チェックポイント(C)]を選択します(図3)。


図3. テストの記録とチェックポイントの挿入

チェックポイントの挿入を選択すると、マウスアイコンが手の形に変わります。SourceForge.netのページを選択すると、図4のような[オブジェクトの選択]ダイアログボックスが表示されます。このダイアログボックスから[Page:SourceForge.net:Welcome to SourceForge.net]を選択すると、[ページチェックポイントのプロパティ]ダイアログボックス(図5)が表示されます。QTPではHTMLはDOMレベルで検査することが可能で、ここでは、ページオブジェクトに対して検証できるようになっています。検証内容としては次の通りです。

  • ページオブジェクトのロード回数
  • ページ内の画像数
  • リンク数
  • ページ内のリンクが切れていないかのチェック
  • 画像が表示されているかのチェック
  • HTMLソースレベルでのチェック
  • タグレベルでのチェック

図4. [オブジェクトの選択]ダイアログボックス


図5. [ページチェックポイントのプロパティ]ダイアログボックス

今回のテスト対象であるSourceForge.netのサイトは、本来はリンク数や画像数が広告によって変化しますが、ここでは変わらないものとしてチェックポイントとして含めておきます。また、リンク切れと画像が表示されるかを確認しましょう。Jameleonではページタイトルとフッターの文字列でトップページが表示されたどうかを確認しましたが、QTPではさらに高度なチェックができますので、次の項目でトップページかどうかを確認したいと思います。

  • 左上にSourceForge.netのイメージリンクが存在している
  • SourceForge.netという文字列がAdvancedとCreateの間に存在している
  • Open Source Technology Groupという文字列が存在している

こちらのチェックポイントを入れていきましょう。イメージリンクをチェックするにはビットマップチェックポイントを挿入します。[挿入(I)]-[チェックポイント(C)]-[ビットマップチェックポイント(B)]メニューを選択し、左上のイメージリンクを選択し、イメージリンクのオブジェクトを選択します(図6)。選択後、ビットマップチェックポイントの設定を行います(図7)。これでSourceForge.netのイメージリンクの画像が存在しているかどうかを確認できます。


図6. ビットマップチェックポイントの選択


図7. ビットマップチェックポイントの設定

続いて特定の文字列の確認ですが、こちらはテキストチェックポイントで行います。[挿入(I)]-[チェックポイント(C)]-[テキストチェックポイント(T)]メニューを選択し、確認したい文字列をクリックすると、テキストチェックポイントの設定ができます。QTPでは単に存在しているかだけでなく、どこに存在しているかを確認することができます。図8の例では「Open Source Technology」という文字列が、「Powered by the SourceForge collaborative development environment from VA Software Copyright 2006 -」と「All Rights Reserved」という文字列の間に存在していることを確認するように設定しています。前後の文字列はもちろん変更できるので、大きく文字列が変わるアプリケーションでは変わらない文字列の間に可変の文字列を入れておき、確認するといいでしょう。

これでSourceForge.netのトップページが表示されたかどうかを確認できます。


図8. テキストチェックポイントの設定

続いて、検索のテキストボックスに「Jameleon」という文字列を入力し、この文字列が見つかることを確認していきます。Jameleonで作成したときと同様に、検索結果の画面が正しいかどうかを確認します。今回QTPでは次のポイントして正しいページが表示されたかを判断したいと思います。

  • Exact project match: の後に「Jameleon」のリンクがあること
  • Searching projects gives 1 resultsという文字列があること

この2つのチェックポイントは両方とも標準チェックポイントで行えます。もちろん先ほどのようにテキストチェックポイントにて前後の文字列の中にあることを確認してもかまいません。図9はJameleonのリンクがあることを確認する標準チェックポイントを設定している画面です。


図9. Jameleonのリンクがあることを確認(標準チェックポイント)

Jameleonプロジェクトの検索画面の確認ができたら、Jameleonのリンクをクリックして、Jameleonのプロジェクト情報のページに遷移しましょう。遷移先がJameleonのプロジェクト情報のページであることの確認は次の内容で行います。

  • Projectというリンクがあり、innertextが「Project」であること(標準チェックポイント)
  • engreanというリンクがあること(標準チェックポイント)

この2つのチェックポイントも標準チェックポイントで簡単に設定できます。チェックポイントを設定したら、Projectタブ内の「Web Site」をクリックして、Jameleonのホームページに遷移します。遷移先のページがJameleonのホームページであることの確認は次の内容で行います。

  • Jameleonのイメージリンクがあること(ビットマップチェックポイント)
  • Jameleonの文字列がSPANタグ内のtextプロパティの値が「Jameleon」であること

この2つのチェックポイントもすでに説明した内容で設定可能です。

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


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

拡大図

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

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


リスト1 作成したテストのスクリプト
                
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")


図11 結果リポート

拡大図

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


リスト2 Mercury Toursのテストスクリプト
                
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")

ただし、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ではじめてみるというのもいいでしょう。




参考文献



著者について

加藤大受,ITmedia




記事の評価


サイト改善のため、ご意見をお寄せください。こちらのフォームからお願いいたします。



はいいいえわからない
 


 


12345
不充分・不完全である大変素晴らしい
 


この記事を共有する

はてなブックマーク はてなブックマーク livedoorクリップ livedoorクリップ del.icio.us del.icio.us Buzzurl(バザール) Buzzurl(バザール) Choix! Choix!
Saafブックマーク Saafブックマーク FC2ブックマーク FC2ブックマーク MM/memo MM/memo ニフティクリップ ニフティクリップ Yahoo!ブックマーク Yahoo!ブックマーク
CZブックマーク CZブックマーク newsing newsing




上に戻る


    日本IBMについて プライバシー お問い合わせ