牛尾です。
やまの殿リプライありがとうございました。
> なげてもらえるとうれしいです:-)
そうゆうことで、しょぼいですが、投げます。で、私の社外ページは
自分のバンドのページしかなく、
> - Web ページがなく、量が多くない場合は、直接 XP-jp になげる。
のケースなので、この下にテキストで送ることにします。
ほんとしょぼいですが。訳間違いがあったらご指摘ください。。
怪しい訳は元の英語を[ ]にくるんで、記述しています。
-----------------------------------------------------------------
http://httpunit.sourceforge.net/の訳
---------------------------
■HttpUnit
webにアクセスする通常の方法はブラウザを通してのものです。しかしながら、
ブラウザをバイパスしたり、プログラムからサイトにアクセスすることが
望ましいケースもあります。それは以下のようなケースです。
・自動的にWebサイトをテストする
・WebサイトをリリースしたAPの一部として使用する
HttpUnitはこれらを簡単にします。Javaでかかれており、HttpUnitはブラウザ
の重要な一部の振る舞いをエミュレーションします。FormのSubmitや,
http authentication(認証)、cookieや、自動のページリダイレクションや
、java testコードから、戻りページの実験など(テスト)ができ、それは
テキスト、XML、DOMやフォームコンテナやテーブルやリンクをサポート
しています。
■What is it?(それはなんですか?)
HttpUnitはフリーでオープンソースのブラウザなしでWebにアクセスする
JAVA APIで、JavaTestUnit(例えばJUnit)と組み合わせたときにWebサイトの
自動のテストができるユニットのスィートを目指しています。これは
Russell Goldによって設計され、インプリメントされています。
■Documentation(ドキュメント)
基本的なUser's Manualが利用できます。JavaDocもあります、いくつかの
動作サンプルはディストリビューションのダウロード物件についています。
Where do I get releases?(どこで物件をてにいれるの?)
最新のHttpUnitはzipファイルとして利用できます。
他のビルドはanonymous ftpで利用できます。
注意:JTidyは今はSourceForgeにおかれています。
the project download ariaでダウンロードしてもいいです。
■How do I contribute,give feed back , fix bugs and so on?
(どうやって私は(HttpUnitに)貢献したりフィードバックを戻したり、
バグをつぶしたり、、などなどしたらいいですか)
我々はメーリングリストをもっています。コードに関する議論を行います。
Read-onlyのCVS"HttpUnit"のリポジトリはオンラインと、CVSクライアントで
利用できます。リポジトリへのアクセスは
:pserver:anonymous@....net:/cvsroot/httpunit.
英単語メモ---------------------------------------
via 〜を通して
desirable 望ましい
relevant 関係ある、重要な
portion 一部
ideally できるかわからないがそうなって
ほしい
rudimentary 基本
---------------------------------------------------------------
http://httpunit.sourceforge.net/doc/Cookbook.htmlの訳
--------------------------------------------
■HttpUnit Cookbook
ここに、あなたのWebサイトをテストすつために、どのように、
JUnitと一緒にHttpUnitをどうやって使うかの説明があります。
Obtaining a web page response(Webページのレスポンスを得る)
HttpUnitの中核はWebConversationクラスです。これは、
[which takes the place of browser talking to a single site]
注:正しい意味はよくわかりません。
シングルサイトと通信するブラウザのようなものです。
これは、メンテナンスされたsession contextを返答できます。
それはクッキーを通してサーバーに返されます。
それを使うためには、[one]はリクエストを作らなければならず、
そして、[ask the WebConversation] responseのために、WebConversation
クラスに答える必要があります。
例えば
WebConversation wc = new WebConversation;
WebRequest req = new GetMethodWebRequest(
"http://www.meterware.com/testpage.html" );
WebResponse resp = wc.getResponse( req );
responseはpure text(toStringメソッドを通して)や、DOMメソッドやそれ
以外のメソッドで操作(manipulate)されるかもしれません.ですので、
上記の手順はとても一般てきですので、要約できます。
WebConversation wc = new WebConversation;
WebResponse resp = wc.getResponse(
"http://www.meterware.com/testpage.html" );
■Exammining and following links (審査(?)と以下のリンク)
もっとも単純で、もっとも一般的なWebページのナビゲーションのフォームは
リンクを通したものです。HttpUnitはユーザがテキストの中にリンクがある
のを見つけることを許します
(もしくは割り当てます。注:allow の意図する意味は不明)そして、
これらのリンクを新しいページのリクエストとして使うためにです。
例えば、このページは上にWebResponseクラスのJavaDocへのリンクを含ん
でいます。
このページはそれゆえ、以下のように得られます。
WebConversation wc = new WebConversation;
WebResponse resp = wc.getResponse(
"http://httpunit.sourceforge.net/doc/Cookbook.html"
); // read this page
WebLink link = resp.getLinkWith( "response"
); // find the link
WebRequest req =
link.getRequest();
// convert it to a request
WebResponse jdoc = wc.getResponse( req );
imageのリンクはすぐ見つけられます。
WebResponse.getLinkWithImageText()メソッドはALTテキストを検査する
ことで、リンクを探します。また、
HttpUnitOptions.setImagesTreatedAsAltTextメソッドはALTテキスト
を引き起こし[cause]通常に探せるテキストように扱います。
■Using the table structure of a web page(テーブルを使う)
多くのwebデザイナーはページのフォーマットをコントロールするため、
テーブルを多用します。
あなたはページの要素をテーブルを見ることによってアドバンテージを
得ることができます。getTables()メソッドはこのページのトップレベルの
配列を戻します。
(これは、他のテーブルが内部にネストされてないということです。)
[ in the order in which they appear in the document??]
テーブルを与え、あなたはその一つのセルをたずねることができます。
そして、その結果をテキストだろうがDOMだろうが、尋ねられたものだろうが、
そして、テーブルだろうが、リンクだろいうが、そのなかにネストされた
フォームだうがたずねられます。
例えば、以下のコードは4行3列のテーブルを埋めます。そして、最初の行
の最後のセルに単体のリンクがあります。
WebTable table = resp.getTables()[0];
assertEquals( "rows", 4, table.getRowCount() );
assertEquals( "columns", 3, table.getColumnCount() );
assertEquals( "links", 1,
table.getTableCell( 0, 2 ).getLinks().length );
たいていのケースで、テストの目的はフォーマットより、テキストを
チェックすることです。HttpUnitはこれをショートカットすることを
提供します。
例えば、次の2つめのテーブルを想像してください。こんなふうなのです。
---------------------
Name Color
guest red
sable black
---------------------
注 http://httpunit.sourceforge.net/doc/Cookbook.htmlの図参照
以下のJUnitコードがこれをテストします。
String[][] colors = resp.getTables()[1].asText();
assertEquals( "Name", colors[0][0] );
assertEquals( "Color", colors[0][1] );
assertEquals( "gules", colors[1][0] );
assertEquals( "red", colors[1][1] );
assertEquals( "sable", colors[2][0] );
assertEquals( "black", colors[2][1] );
気をつけることには、asText()メソッドはすべてのテーブル
をすべてのフォーマットを無視して、ストリング配列に変換する
ことを注意しましょう。
[At Times]そのときに、全てのテーブルの行と列は表示目的に
のみ使われなくてはいけない。あなたはイメージや空白のタブ
をそのテーブルのpurgeEmptyCellsを呼び出すことにより、無視する
ことができる。
多くのケースで、テーブルはいくつかの固定のテキストで始まります。
テストの目的はダイナミックな一部(ページ?)をチェックすることである。
一般的なルールとして、最初のセルはいくつかの固定項目で、あなたは
それを探すことができる。しかしながら、たとえテーブルが他のテーブルの
一部としてネストされていても。
このように[above table]上記のテーブル?は以下のように見つけられる。
String[][] colors = resp.getTableStartingWith( "Name" );
これは、たくさんのページのフォーマット変更に、影響されない
利点があります。3、4番目のテーブルになったとしても。
■Working with forms (フォームとして動作する。)
ダイナミックWebサイトは多くのHTMLフォームを持つ傾向にあります。
それらはみな、いろいろな種類のコントロールを持ちます。テキストボックス、
プルダウンメニュー、ラジオボタンなど、、。これらのコントロールのための
HTMLはとても広範囲です。しかしながら、意図は大体において同じなので、
HttpUnitはそれらを同じとみなします。
テスターがフォームで行いたいことにはいくつかの基本があります。
もっとも明白な最初のステップはコントロールをチェックして、それらの
デフォルト値を確認することです。もし、それらが、正しいならば、
テスターは普通、いくつかを変えてみて、そして、フォームをSubmit
して、システムからどのように答えが帰ってくるかを見ます。
HttpUnitはこれらを両方簡単にします。
以下は決められた以下のフォーム定義の例です。
---
Restaurant Name La Cerentolla(TextBox)
Restaurant Type (check)Chinese Tex/Mex Italian (Radio)
Location Manayunk(PullDown)
Accepts Credit Cards (Check)
Update(Submit Button)
---注 http://httpunit.sourceforge.net/doc/Cookbook.htmlの図参照
デフォルト値は以下のようにチェックされる
WebForm form = resp.getForms()[0];
// select the first form in the page
assertEquals( "La Cerentolla",
form.getParameterValue( "Name" ) );
assertEquals( "Chinese",
form.getParameterValue( "Food" ) );
assertEquals( "Manayunk",
form.getParameterValue( "Location" ) );
assertEquals( "on",
form.getParameterValue( "CreditCard" ) );
すべてのコントロールが同じように扱われるのに注意しなさい。
チェックボックスを除いて。
フォームのSubmitをシュミレーションすることは、WebConversationクラス
にたずねることを呼び出すことである。返答のために、リクエストの
(フォームで定義されて、、前もってフォームのパラメータを変更できる)
例えば、レストランタイプを一致させて、クレジットカードが使用不可と
いうことを示すには
request = form.getRequest();
request.setParameter( "Food", "Italian" );
request.removeParameter( "CreditCard" );
response = wc.getResponse( request );
そして、勿論、テストはレスポンス(このSubmitとおなじ)の検査に進む
■Working with frames(フレームとして動作する)
フレームが無いと、Webインタラクションはすなおで連続的になる傾向
がある。
いま一つのアクティブページがある。そして、新しいページはみな、
それを参照している古いページをリプレースしている。
フレームはそれを変えます。複数のアクティブページシュミレーションを
可能にし、アクティブページからのリンクで、違うページの置換の結果を
引き起こすことができる。
HttpUnitはフレームをサポートしており、現在アクティブになってる
フレームの検査の機能をWebConversationクラスのメソッドとして
提供している。
すべてのレスポンスは適当なフレームのコンテンツにリプレースされる。
これらは、必ずしも、たいていのフレームトップの"_TOP"を必要と
しない。以下のセクションで、2つのアクティブなサブフォームが
でてくる。"overview"と"detail"という名前だ。
WebConversation wc = new WebConversation;
WebResponse top = wc.getResponse(
"http://www.meterware.com/Frames.html" );
// read a page with two frames
WebResponse summary = wc.getFrameContents( "summary"
);
// read the summary frame
WebLink link = summary.getLinkWith( "Cake Recipe"
);
// find the link (which targets "details" );
WebResponse details = wc.getResponse( link.getRequest()
);
// retrieve the referenced page
WebResponse response= wc.getFrameContents( "details"
);
// retrieve the details frame
この手順の最後として、デティールとレスポンスは同じオブジェクトを
示すはずである。
-----------------------英単語
verify チェックする
entire すべてであることを強調する??
invoke呼び出す
immune〜に有効じゃない
respond答える
assume 〜ととりきめる。間違ってるけど、〜と答えた
brief 情報やインストラクション
straightforward 率直な、平明な、正直な
abbreviated to Compact DiskをCDにするようなもの。(要約?)
-----------------------------
■HttpUnitを使用するためには(訳者補足)
1.sax,DOMが必要が必要です。以下のURLをご参照ください。
http://www.asahi-net.or.jp/~dp8t-asm/java/tips/XMLSAXHelloWorld.html
http://www.asahi-net.or.jp/~dp8t-asm/java/tips/XMLDOMHelloWorld.html
私はapacheプロジェクトのxerces-1_1_3を使用
http://xml.apache.org/xerces-j/index.html
2.Tidyが必要です。jtidy-04aug2000r5.zipを使用
http://sourceforge.net/project/showfiles.php?group_id=13153
3.HttpUnit本体が必要です。
http://httpunit.sourceforge.net/httpunit_1_2.zip
4.JUnitもあったほうがいいです。
http://members.pingnet.ch/gamma/junit-10.zip
5.上記の物件をダウンロードし、展開すると
・Xerces
xerces-1_1_3\xerces.jar
・JTidy
jtidy-04aug2000r5\build\Tidy.jar
・HttpUnit
lib\httpunit.jar
・JUnit
test.jar
というjarファイルができますので、これをCLASSPATHに追加して
テストAPの実行、コンパイルができるようになります。
尚、私はJDK1.2.2 WindowsNT4.0の環境で実行いたしました。
実際に作成するテストプログラムのサンプルはHttpUnitのexamples
ディレクトリ配下にあります。大変わかりやすいので、簡単です。
以上