エクリプスプラグインにWebの機能テストができるプラグインがあるって知ってました?
SOLEXです。
Solex
クリックすると大きくなります。(ブラウザを最大化してご覧ください。)
Eclipse Frontpageでも紹介されているんですが詳しい使い方が載っていないのでちょっと調べて見ました。
日本語の資料がまるでないので(見つけられないので)、SOLEX本家のサイトだけがたよりです。
十分に調べられたわけではないので、もし使ったことのある方がいらっしゃればコメントしていただけると幸いです。

SOLEXは非常にシンプルなテストツールです。
それ自身がHTTPのプロキシとして振舞い、ブラウザと目的のサイト間のHTTP通信内容を取得します。
といってもそれはブラウザからの操作を記録するときだけで、その操作(セッション)を再生するときはSOLEX自身がブラウザのように振舞います。

あまり、複雑なことはできない(できなそう)だけれど使い勝手はあるかなという印象です。
たとえば、デバッガでServletをデバッグするような場合ですね。
毎回毎回同じ内容をブラウザから操作するよりは、一度操作を覚えさせてしまえば同じブレークポイントに到達するのは楽になると思います。

続きの試したこと、できなかったことを読んでいただければ分かるのですが、現時点ではいまいち使えるか使えないか微妙なツールです。
私は今回はプロジェクトへの導入をあきらめました(涙)

でも同じコンセプトのツールといったら高額商品ばかりなので、何とかもっと充実してほしいものです。
バージョン番号の頭がまだ"0"なので今後に期待かも知れませんね。
というわけで、ご興味をお持ちの方は続きをご覧ください。

では、実際どうなのかというあたりをまずは試したことのサマリーから。
Eclipse2.1系用と3.0系用がありますが、2.1系で試しました。(冒頭のスクリーンショットは3.0のものですがお気になさらず・・・)

試したこと

  • ブラウザからの操作を記録して、自動再生する。
  • プロキシポートの変更(デフォルトは8088)
  • 記録したrequestとresponseをツリー表示する。
  • responseのHTMLソースを確認する。XML風のアウトライン表示もできる。
  • 記録した操作(セッション)の編集する。(定数によるrequestパラメータの置換、変数を使ってresponseから抽出した値をrequestパラメータへ代入)
  • テスト対象のサーバからのレスポンスに対して正規表現でAssertionを設定。
  • セッション単位でファイル保存する。(テストケース毎に残しておける感じ)

できなかったこと、分からなかったこと

  • GETはパラメータの編集ができるけれど、POSTだとできない。
    パースしてくれないらしく、表示されるだけ。

  • 全文一致のAssertionができない。
    正規表現でこんな文字列があるないしか判断できない。
    部分的に無視して他全部一緒だったらOKみたいなAssertion設定したいのに・・・

  • 実行中の画面が確認できない。

  • ブラウザからのパラメータが日本語だと文字化けする。

  • Playbackしたときのresponseが確認できない。
    最初に記録したときの情報しか見れない?(これはイタイ!)

  • ステップ実行と全部実行しかなく、「ここまで実行」みたいなことができない。

  • 連続自動テストみたいなことができない。(セッション単位でしか動かせない。)

  • ツリーのノードを右クリックすると「Enable」「Disable」の選択肢が出るけど、使い方不明。


インストール

プラグインのファイルはここからダウンロードできます。
Solex-0.5.0がEclipse2.1系用で、Solex-0.5.1がEclipse3.0系用だそうです。
ダウンロードしたファイルをEclipseのpluginディレクトリに展開すればインストールは完了です。

動かし方

すみません、スクリーンショットはとってません。本家のサイトをご覧ください。

  1. Eclipse起動

  2. Solexとブラウザの設定
    Solexの設定ダイアログは「ウィンドウ」-「設定」-[Solex]で開きます。
    Recorder parameterがプロキシのポート番号です。
    ブラウザのプロキシ設定をこれにあわせます。(ex:localhost:8088)
    PlayerParametersはSolexがどのホストにリクエスト送るかという設定ですが、何も記述しなければブラウザからリクエストしたURLにリクエストします。
    たとえば、localhostのTomcatにだけリクエスト送るようにしたい場合はlocalhost:8080などを設定しておけばよいでしょう。

  3. 新規プロジェクト作成(とりあえず)
    必須ではありませんが、とりあえずお試し用にプロジェクトを作成してみましょう。

  4. Solexパースペクティブ表示
    「ウィンドウ」-「パースペクティブを開く」または、「パースペクティブを開くボタン」でSolexパースペクティブを開きます。
    「その他」の中にあります。

  5. セッションの記録
    ブラウザを起動して、記録したい動作の直前の画面を出します。
    Solexメニューの「Start recording an HTTP session」を実行します。
    ブラウザをてけてけ操作すると、セッションのエディタ画面にブラウザとサーバのやりとりがリアルタイムで追加されます。
    Solexメニューの「stop recording/playing an HTTP session」を実行すると記録完了です。
    セッションエディタにできたノードを開いていくと、リクエストの情報やレスポンスの情報が見れます。
    レスポンスの中の[body]を選択すると「Message body contents」ビューでHTMLのソースなどが確認できます。

  6. セッションの再生
    Solexメニューの「Play all request」を実行してみましょう。
    非常に地味な感じですが、着々とHTTPのやりとりを実行しているのが、「Playback
    result」ビューで分かります。

  7. requestパラメータの編集
    セッションエディタのリクエストを表すノードを開いていくと、[parameters]ノードが見つかります。
    この中に、リクエストパラメータが入っています。パラメータをダブルクリックすると中身を変更できます。
    また、ここに[Constants]で定義した定数やExtractionで取り出した変数を設定できるようです。私はうまく行きませんでした。
    注意点1:Undo機能がないみたいなので誤ってパラメータを削除してしまったら、[parameters]を右クリックして追加しないといけません。
    注意点2:前述しましたが、POSTのパラメータはパースしてくれないらしく編集できません。

  8. Assertionの定義
    レスポンスの中の[body]を右クリックすると「Add an assertion」でAssertionが追加できます。
    正規表現を記述するか、「Variable」で変数を指定します。
    指定した条件にマッチした場合を正とする場合は、「Test Value shoud appr」を「Yes」にマッチしない場合を正とする場合は「No」に設定します。
    「Preview」をクリックすると、現在[body]に記録されている内容で試してくれます。

  9. テスト実行
    セッションエディタでAssertionを設定していざテスト実行です。
    セッションの再生で説明した操作をすると、Assertionに違反するレスポンスがあるとダイアログが出て実行がとまります。
    問題は、そのときのレスポンスの確認方法が分からないので、どうしてエラーになったのか追えないことですね。