この記事はZOZOアドベントカレンダー Series5 15日目の記事です。
アウトカムをどんどん出していくためにFeatureFlagを活用しているチームは多いと思います。
簡単に機能をON/OFFできる仕組みは有用ですし、なにより安心してリリースできるのがいいですよね。
困った点としてはE2Eテストをどうするか?
リリース時にONして、不具合が出たらすぐOFFできるようにしたいと言ったケースもあるため、E2EテストではOnのときのテストとOffのときのテストを両方やっておきたいですよね。
ただ、どうやって切り替えるのかが問題です。
自分たちのチームでは、E2Eテストを3つに分けました。
- FeatureFlagを使っていない機能のテスト
- FeatureFlagをONにしてFeatureFlagを使っている機能のONときのテスト
- FeatureFlagをOFFにしてFeatureFlagを使っている機能のOFFときのテスト
といった感じです。結果は最後にマージして出力します。
また、自分たちは、AWSのAppConfigを使っていて、ECSのサイドカーコンテナ経由でFeatureFlagを取得しているので、基本localhostでFlagを取得できます。
そこでローカルでのテストはWireMockを使ってFeatureFlagのモックを活用しています。
WireMockでは、スタンドアロン版とJunit組み込み版がありますので、E2EテストするときはJunitの組み込み版を、ローカルで開発しているときはスタンドアロン版と使い分けることでFeatureFlagのON/OFFの開発が容易にできるようになります。
ぜひご活用ください。