この場合、Azureクラウド機能を使用するオープンソースプロジェクトに追加しますが、同じ一般的な問題はすべてのクラウドAPIに適用されます。私は自分のコードのテストを書いてみたいが、テストの結果は私が使っているクラウドサービスで起こっていることに依存しており、このためにはクラウドサービスにクレデンシャルを提供する必要がある。プライベートプロジェクトでは、私は確かにテスト環境に自分のクラウド資格を追加することができますが、パブリック/オープンソースプロジェクトでは、私はこれを行うことはできません。私はローカルで簡単にテストすることができますが、このプロジェクトではCIを使用しています(多くのOSSプロジェクトと同様)。クラウドAPIを使用する場合の自動テストの作成方法
1つのアプローチは、mock
などのようなものを使用しているようですが、実際には起こっていることを実際にテストしているようではなく、100%のカバレッジを達成するためにほとんど役に立たない方法として私を打ちます。
問題のクラウドサービスと同一のインターフェイスを作成するためにスピンアップできるテスト用の「仮想テストクラウド」環境はありますか?どのように副作用に対処するのですか(問題のコードはDNSエントリを作成し、別のクラウドコールではなくシステムのリゾルバを使用してDNSエントリの実際の存在をテストするのが理想です)
このようなテストはどのように行いますか?
自動テストがテストの主な方法であるオープンソースプロジェクトの世界では、これは妥当と思われますが、これがどのように確実に機能するかはわかりません。私が予期している大きな問題の1つは、APIが変更された場合、事態は壊れますが、自動化されたテストは引き続き実行されます。 – askvictor
これは、契約が変更されていないことを本質的にテストするいくつかの受け入れテストが必要な場所です。テストピラミッドのレベルアップ、最小限に抑える必要があります。 –