Webサービスのテスト

Webサービスを作成し、実行している場合、先に行くことと、クライアントのコーディングを開始します。しかし、それは不適切なアプローチとなる。 1つは、WebサービスおよびSOAには、クライアントとサーバーは、契約書を使用してコミュニケーションができることで変更しているものです。以前は、クライアント/サーバーアプリケーションの開発時にそのことを決定したプロトコルを使用して伝達。場合は、開発者は新しい方法や情報の一部に必要な、その変更されるだろう。これは、オンザフライで変更するには大したことではなかった。 WebサービスおよびSOAは、もはやケースですと。、WebサービスおよびSOAの出現により、我々の能力を再利用することができますし、他の当事者が共有する契約を定義する必要があります。がある場合はSOAへの1つの主要な利点は、その機能がシームレスにデータを共有する。

  

の別のコンテキストに当てはめてみましょう。あなたのピザレストランを所有するのを想像して命令を、オンラインで注文し、待つスタッフがオンサイト顧客からの注文を受けています。ので、顧客はいくつかの異なる方法で、おそらく全く別の受発注システムがあり、各方法は、ピザを注文することができます。実際には、疑問のことさえ必要があるスタッフが待機して最初の場所で注文を取るため。この日および年齢では、各テーブルの上にタッチスクリーンを置くこととは、顧客が直接ピザを注文しましょう。その後の注文が満たされ、誰かがテーブルにもたらします。や方法については可能でございますし、ピザを注文するためには、レストランでは、特定の時間でそれを食べたいことを示す?のため、彼らの指定席時には、レストランを入力し、自分たちの食事してすぐに提供座席を取るためのシステムは、顧客のため、それを可能にテーブルを予約できます。ではなく、そのレストランに行くのが経験を台無しにする?私の意見では、レストランには、かなり多忙な経験をすることができますつもりはない。このピザレストランの例では、クライアント/サーバーを示しています日前までの待機スタッフがお客様の受注とアーキテクチャSOAを、もう一方の手に関係なく、入力装置のある人は、オンライン(携帯電話、等)によって使用されて均一なピザを注文システムを表します。結局のところ、ピザの待機スタッフが全てのピザとは異なるを通じてご注文を命じたですか?答えはノーです。

あなたのWebサービスは、複数のコンテキストで使用するということが契約を広範囲にテストされる必要がありますに難題。場合、広範囲にWebサービスをテストしない場合は、問題が発生することができます。例の場合は、マイナーなバグがありましたブログのWebサービスのフィードを作成したと思う。誰がバグに遭遇し、それマイナーなのを参照してフィードを使用するエンドの開発者。手間を省くために、彼らは簡単にはほとんどの回避策を行う。これは、物事をある特定の方法が発生すると仮定します回避策は危険です。あなたは、1つの理由または別のマイナーバグに遭遇しない他の第三者にあなたのフィードを提供する。時間の経過として、クライアントは、フィードを受信し、それらを修正するバグは他の皆、それらのバグについてのメールを送信し、要求とは異なり、発生するので何をするときに、バグの通知を受信しないのですか?場合は、バグかどうか?修正しないその答えは、お手数ですが、バグの修正は、現実の場合は、バグが軽微であるが、バグの修正作業を停止するコードの動作を引き起こす可能性がある必要があります。このため、テストaWebサービスは非常に重要です:テストすることによって、最小限に抑えるチャンス将来の問題。 Webサービスのテストを網羅すると広範囲に及ぶが、それaminor約束されていません。ブログのアプリケーションは、簡単にあなたの人生を確認することができますオンラインテストサービスの場合には。

フィードバリデータは、Atomフィードのが正しいことができます場合は、フィードの内容を修正されているフィードのバリデータを検証していません。は、テストし、必要となる検証の別のレベルです。フィードバリデータは、サーバーからクライアントを分離することが可能になります。クライアントとサーバーの分離持つので、徐々に変化することができますが簡単に全体的なアーキテクチャに変化をもたらすことができます。バックは、ブログのアーキテクチャの元のアーキテクチャに行く方法をブログのエントリの構造の変化を想像されます。これは、クライアントとサーバのコードが絡み合っている、開発者はサーバのコードを微調整するために誘惑される場合があります。ただし、サーバーは3つの異なるフォーマットを生成し、場合の微調整、他の2つのフォーマットに追加する必要があるのだろうかする必要があります。つまり、クライアントのプログラマしかない独自のコードを微調整する必要がありますが検証されている1つのフィードを使用する。クライアントのプログラマと、それゆえ、意図しないバグを導入することはできませんは、サーバーのコードに触れることはできません。私は、インターフェイスのテストテストのフィードのバリデータを提供する、包括的で広範なセットを必要と述べただけで。ではなく、すべてのWebサービスは、ブログ、アプリケーションのカテゴリに適合し、あなた自身のテストインフラストラクチャを実装する必要があります。これは、スナップインのテストになります理想的な場合は、フィードのバリデータのように、アーキテクチャを選択します。しかし、フィードバリの巨大なアプリケーションであり、おそらくコードのような複雑な曲を書くのに十分な時間がない。

経験では、最も簡単な方法を迅速かつテストを書くためきれいには、テストのためのサポート(例えば、NUnitのかのJUnit)の開発技術を駆動しているプログラミング言語を使用するように教えてくれた。また、PythonやRubyなどの動的言語を使用することができます。何か他の経験を持って私に車輪の再発明をしないことです教えた。場合、プロトコルは、XMLの文法や、すでに存在する実装は、その使用されます。あなただけあなたの人生を複雑にしますが、同じ古いものを行うための新しい方法を考え出すしようとしないでください。これは、もう少し最初の標準に準拠する、複雑かもしれませんが、で、いつまで減少の懸念があるでしょうを実行します。たとえば、ブログのアーキテクチャでは、Atomフィードに固執することによって、アプリケーションをテストするための一般利用可能なツールを使用することができます。これは任意のテストコードを書く必要はありません;するだけで、フィードValidatorのWebサイトを呼び出すにはいくつかのテストスクリプトを記述する必要があります。

クライアントの実装Ajaxのコンテキストでは、クライアントの実装は、常に2つの手順:ドキュメントの読み込みを含み、ドキュメントを実行する。一度読み込まれているブログのアプリケーションの場合には、介入するクライアントのため、文書に対して実行する必要があります必要はありません。一度は、ドキュメントが完全に読み込まれているJavaScriptでは、body.onloadイベントが発生します。ことは非常にbody.onloadイベント中にドキュメントが読み込まれているが実行されていないいくつかのスクリプトを使用することが重要です。一方、ドキュメントが読み込まれていると、不完全な文書が参照するHTMLの要素ではなく、成功するかもしれないと考えられるしないかもしれません。時body.onloadイベントを使用すると、ドキュメントが完全に、すべての要素が必要な参照可能ですロードされていることを確認することができます。

時body.onloadイベントを解雇されているコンテンツが読み込まれると、コンテンツを処理することができますし、HTML文書に注入した。ユーザーには、この2段階のプロセスは2段階のプロセスではなく、1つのページを読み込むように(存在する場合は、クライアントとサーバーに十分な)帯域幅があるようだ。この2つの手順を読み込んで十分な速度で実行しない場合は、一部のコンテンツが読み込まれていると配置を示す若干のちらつきに気付くでしょう。最終結果は同じであり、クライアントは、単一のアプリケーションとしての地位を提示する1つの文書を提示されます。一言で言えばない伝統的なクライアントの構築とは異なる、このプロセスは、/サーバーまたはn層のアプリケーションは、オープンスタンダードを除く動的プログラミング言語環境で使用されます。全体的なクライアント側のアーキテクチャの説明では、のビットごとの手順を深く掘ることができます。

文書のロード前述のように、最初のステップは、ドキュメントの読み込みです。もし我々が伝統的なアプリケーションをロードすると、何が起こっているドキュメントを読み込んで比較するには、ブラウザのオペレーティングシステムのメモリモジュールを準備するようにされ、実行するプログラムの基礎であるので、たとえば、我々は、ドキュメントを読み込んでいる次のコードでは、XMLHttpRequestオブジェクトをインスタンス化します:

getTransport:()(新しいActiveXObjectを返す('Msxml2.XMLHTTP'))、関数()(('Microsoft.XMLHTTP'))、関数()(新しいXMLHttpRequestを返す新しいActiveXObjectを返す()(戻りTry.these(関数関数()))| |はfalse;)

これは、多くのAjaxライブラリは、同じことを行うコードのソースが重要です。本質的に、ときに、コードが実行されると、その数字が出てとので、ランタイムは、正しい方法では、XMLHttpRequestオブジェクトのインスタンスを返すことができます対応のブラウザを試みます。私は、これは間違ったアプローチが争う、それは伝統的な実行可能ファイルの読み込みと実行の精神を使用する場合、オペレーティングシステムの負荷を従来のプログラムは、変数、モジュール、およびなど、プログラムの実行前に初期化されます。中には、ブラウザの負荷のソースコードは、ブラウザの機能をJavaScriptコードを実行する必要があります。このことを念頭に、次のコードを書くことができる:

場合(window.ActiveXObject)(FactoryXMLHttpRequest =関数()(新しいActiveXObjectを返す("Microsoft.XMLHTTP")を;))以外の場合(window.XMLHttpRequest)(FactoryXMLHttpRequest =関数()(新しいXMLHttpRequestを返す();))

この例では、機能がないだけに決定されます。場合は、ブラウザのドキュメントを読み込んでの決定は、Internet Explorerの場合、ActiveXObjectのインスタンスをFactoryXMLHttpRequest関数を定義しています。場合は、ブラウザがInternet Explorerで、クリックされていない直接XMLHttpRequestオブジェクトをインスタンス化するFactoryXMLHttpRequest関数を定義します。これは、定義されてFactoryXMLHttpRequest関数は、XMLHttpRequestオブジェクトとしては、ドキュメントがロードされて定義されたインスタンスが2番目のソースコードを初期化の例としては、ランタイム時に柔軟性がありません。にもかかわらず、この欠点のように思える場合は、可能性は、ロードされたドキュメントを別のブラウザに入力するバイトごとに移動されます何かを自問する必要があります。答えとしては不可能であるが、このどうなるのチャンスです。

2番目のソースコードの例を利用しながらドキュメントが読み込まれている上で実行されているブラウザに調整することができる機能です。この例では、チューニングは、ブラウザに基づいている。そこを調整し、このような言語やブラウザの寸法を考え出すなど、アプリケーションをチューニングするための理由に他の方法があります。チューニングの利点は、その決定を実行時に行わ関連付けられている実行可能な荷物を持ち歩く必要はありませんしています。の場合、ドキュメントの読み込み中にアプリケーションを事前設定することによって、コードの実行時のフットプリントを減らすことができますこれは覚えておくべき重要な要因です。しかし、ドキュメントを読み込んで構成直列化とは何が生成されるを使用して一つの大きな欠点だ。以前の記事はどのようにプロキシまたはミックスインを生成するためにJavaScriptをシリアル化を使用して示した。場合は、ドキュメントの構成が読み込ま直列化され、HTTPサーバー上に格納し、それ以降の時点で、別のブラウザを使用してロードされたのは、エラーが生成されます。

親指のルールがあるときの利点、パフォーマンスやリソースの面では、文書構成のロードを使用しています。がある場合、わずかなチャンスは、コードをシリアル化されるのは、ランタイム意思決定プロセスに含まれている一般的なランタイムのアプローチを使用します。そして、これらの状況では本当に1つの方法、または何でもあなたが理にかなって、その他の使用は問題ではありません。

ドキュメントを実行する後に、ドキュメントが読み込まれている、body.onloadイベントがトリガーされ、関連付けられたコードが実行されます。 HTML用語では、コードになります以下のとおり。は、コードを明確にするため省略されている注意してください。

 ソース: /クライアント/ index.htmlを 関数LoadAtomFeed()( ヴァール非同期=新しい非同期(); asynchronous.settings =( onComplete:(XMLHTTPの)関数は、( parseAtom()xmlhttp.responseXML; flexbox.update();   asynchronous.get("/サービス/ブログ/エントリ/電流"); 関数InitializePage()(/ /追加の初期化コードに関連するカット LoadAtomFeed();) のonload="InitializePage()"" 

ようこそBloggerJacksするには

太字のコードを考えます。ドキュメントが読み込まれると、body.onloadイベントが発生します。それが、順番にLoadAtomFeed関数を呼び出してInitializePage関数を呼び出します。 LoadAtomFeed、非同期クラスの実装では、順番には、XMLHttpRequestオブジェクトのインスタンスをインスタンス化します。

記事は、ソニアLandeを提出


免責事項:弊社のウェブサイトは、この資料の内容については責任を負いません。 Webarticles無料の情報リソースです。
重要: この記事は、"Webサービスのテスト"の自動ソフトウェアによって翻訳された。大変申し訳ございませんが発生した可能性があります任意のスペルミスを感じている。お客様のご理解いただき、ありがとうございます。


Online: 285 users browsing the articles directory