4

機能トグルを使用する場合、テストはどのように行うのですか? 開発用コンピューターをできるだけ本番環境に近づけたいと考えています。私が見たビデオによると、機能のトグルは、特定の人々 (つまり、0 から 100% のユーザー、または選択されたユーザーなど) が機能を「使用」できるように実装されています。

継続的インテグレーションを正しく行うには、テスト時に本番サーバーと同じ機能トグル設定を使用する必要がありますか? または、機能が本番環境でオフになっていない場合は、ビルド パイプラインで自動テストを実行するときにオンになっていることを確認してください。テスト コードに機能トグルを追加したり、新しいファイルにテストを記述したりしますか? システム テストで発生しなければならないプロセスで、新機能が必須のステップになるのはいつですか?

4

1 に答える 1

6

機能トグルを日常的に使用する数人以上のチームでは、すべてのトグルの組み合わせテストを行うことや、相互作用が予想されるトグルの組み合わせのテストを計画することさえ現実的ではありません。トグルされたコードをテストするための実用的な戦略は、他のトグルの状態を考慮せずに、単一のトグルに対して機能する必要があります。次のプロセスがかなりうまく機能するのを見てきました。

  • すべてのコードをできるだけ早く本番環境に移行するため、トグルが最初にプロジェクトに導入されると、トグルがオンになっているトグルされたすべてのコードをカバーする新しいテストが作成されます。徹底的にテストしているため、トグルをオフにしたコードのテストは既に存在します。これらのテストは、トグルが明示的にオフになるように変更されています。トグル コードは、必要に応じてトグルの背後で開発できます。

  • トグルが本番環境でオンになる直前に、すべてのテスト (トグルされたコードのテストだけでなく、アプリケーションのテスト スイート全体) がトグルをオンにして実行されます。これにより、他の機能との予期しない相互作用による破損が検出されます。

  • トグルは本番環境でオンになっています

  • トグルがコードから削除され (トグルがオフの場合にのみアクティブになるすべてのコードと共に)、コードが運用環境にデプロイされます。

このプロセスは、トグルが完全に新しい機能を非表示にするだけの場合 (トグルがオフの場合にのみ実行されるコードがないため) と、分割テストのように、トグルが 2 つ以上のバージョンのコードを選択する場合の両方に適用されます。 .

あなたの特定のポイントのいくつかに答えるには:

  • 異なるトグル状態のテストが同じファイルで行われるか、別のファイルで行われるかは、トグルされた機能のサイズによって異なります。小さな変更の場合は、両方のバージョンを同じファイルに保存するのが最も簡単です。主要な機能を完全に書き直す場合は、トグルの新しい状態専用の新しいテスト ファイルを 1 つ以上作成する方がおそらく簡単です。トグルによって影響を受けるファイルの数も、テスト アーキテクチャによって異なります。たとえば、RSpec と Cucumber を使用する Rails プロジェクトでは、トグルは Cucumber 機能 (受け入れ/統合テスト)、ルーティング スペック、コントローラー スペック、モデル スペックの新しいテストを必要とする場合があり、各レベルでのトグルのテストも必要になる場合があります。トグルされた機能のサイズに応じて、同じファイルまたは別のファイルにあります。

  • 「システムテスト」とは、手動テストを意味すると思います。私はそれらを持っていない方が好きです。代わりに、受け入れテストを含むすべてのテストを自動化するので、上で書いたことはすべてのテストに適用されます。それはさておき、トグルの新しい状態は、本番環境でオンにする前にトグルをオンにしてすべてのテストを実行すると一時的に一度法律になり、トグルを削除すると永続的になります。

于 2016-02-01T13:29:02.103 に答える