1

Google App Engine で実行され、多数の Web サイトをスクレイピングし、RESTful インターフェイスを介してデータを提示する Web サービスを設計しています。いくつかの背景知識に基づいて、ビジネス コードを記述する前に、テスト駆動開発 (TDD) を試してテストを開発したいと考えています。

私の問題は、スクレイピングされた要素のリストに、非常に頻繁に変更される時刻表やその他のレコードが含まれているという事実によって引き起こされます。TDD に関する私の知識の限界は、コード実行の結果を調べるテストを作成し、これらの結果をハードコーディングされた結果セットと比較することです。データ セットが頻繁に変更されるため、この方法は不可能に思えます。これが真実であると仮定すると、そのような API をテストするための最良のアプローチは何でしょうか? 大規模な Web API (Twitter、Google、Netflix など) はどのようにテストされますか?

4

2 に答える 2

3

テストの種類を選択する必要があります。

  1. 単体テストは、モジュール (ユニット) の適切な動作をテストするだけです。入力データを提供し、コードが適切な結果を出力することをテストします。それらをモックしようとするシステム依存のクラスがある場合、または GAE サービスの場合は、Google が提供するローカル サービスを使用します。単体テストは、マシンまたはCI サーバーでローカルに実行できます。Java には、 Junit と TestNGの 2 つの一般的な単体テスト ライブラリがあります。
  2. 統合テストでは、さまざまなモジュール (内部および外部) が連携して動作することを確認します。基本的には、モジュール間の API が動作していることを確認します。それらは通常、実サーバー上で実行され、実際の外部サービスを呼び出します。それらはテクノロジー固有であり、実行が困難です。

あなたの場合、単体テストを使用して、ロジックが解析して処理する必要があるさまざまな入力データのセットを提供します。フローは非常に単純なので (固定 URL からデータをロードし、それを解析する)、実際のデータのロードを単体テストに埋め込むこともできます (これは、外部ソースを解析するときに行います)。

于 2013-07-18T09:54:49.977 に答える