2017-11-04 15 views
0

この場合、Azureクラウド機能を使用するオープンソースプロジェクトに追加しますが、同じ一般的な問題はすべてのクラウドAPIに適用されます。私は自分のコードのテストを書いてみたいが、テストの結果は私が使っているクラウドサービスで起こっていることに依存しており、このためにはクラウドサービスにクレデンシャルを提供する必要がある。プライベートプロジェクトでは、私は確かにテスト環境に自分のクラウド資格を追加することができますが、パブリック/オープンソースプロジェクトでは、私はこれを行うことはできません。私はローカルで簡単にテストすることができますが、このプロジェクトではCIを使用しています(多くのOSSプロジェクトと同様)。クラウドAPIを使用する場合の自動テストの作成方法

1つのアプローチは、mockなどのようなものを使用しているようですが、実際には起こっていることを実際にテストしているようではなく、100%のカバレッジを達成するためにほとんど役に立たない方法として私を打ちます。

問題のクラウドサービスと同一のインターフェイスを作成するためにスピンアップできるテスト用の「仮想テストクラウド」環境はありますか?どのように副作用に対処するのですか(問題のコードはDNSエントリを作成し、別のクラウドコールではなくシステムのリゾルバを使用してDNSエントリの実際の存在をテストするのが理想です)

このようなテストはどのように行いますか?

答えて

0

私はspike solutionから始めて、必要な資格情報を渡す方法を学びます。この知識で、私はacceptance testのTDDで簡単なAPIを呼び出して "成功"の結果を得ることができます。

資格を私のリポジトリから除外します。代わりに、私は指示付きテンプレートファイルを含める。

そこから、TDDにユニットテストを送信し、リクエストを送信し、応答を受信します。 私はどのサービスとの実際のコミュニケーションもテストしません。代わりに:

  • リクエストの内容をテストします。
  • 応答を作成し、処理方法をテストします。これにより、あらゆる種類のエラー状態を簡単にテストすることができます。

資格情報、要求、応答をTDDしたら、私はspike testと呼ばれるものを使用して、すべてが実際に動作していることを確認します。基本的には、私はすぐに一緒にハックすることができる何でも自動ではない確認を使用します。

+0

自動テストがテストの主な方法であるオープンソースプロジェクトの世界では、これは妥当と思われますが、これがどのように確実に機能するかはわかりません。私が予期している大きな問題の1つは、APIが変更された場合、事態は壊れますが、自動化されたテストは引き続き実行されます。 – askvictor

+0

これは、契約が変更されていないことを本質的にテストするいくつかの受け入れテストが必要な場所です。テストピラミッドのレベルアップ、最小限に抑える必要があります。 –

関連する問題