net/http/httptest.Server のアプローチをテスト戦略に活用する
net/http/httptest.Serverは、 `go test` 実行時に実際にHTTPサーバを起動することでクライアント-サーバ間のテストをシンプルに実現します。 このnet/http/httptest.Serverのアプローチは、WebアプリケーションのテストであればWebアプリケーションを構成するレイヤーの外側からHTTPリクエストを送信するテストができますし、HTTPクライアントのテストであればHTTPクライアントを構成するレイヤーの外側にスタブサーバを簡単に用意できます。しかも `go test` の中で完結しており、テストサイズによる分類における他のミディアムテストと比べても安定しているといえるアプローチです。 発表者は、プロダクトの新規開発時のアーキテクチャの未完状態に対抗する手段として、net/http/httptest.Serverのアプローチをより広くテストに活用する方針を取りました。 これは、アプリケーションの外側を活用したのテストを厚くすることで、アプリケーション内部のアーキテクチャ変更に強くすることを目的としています。 本発表では、「net/http/httptest.Server のアプローチ」のメリットやデメリット、そのデメリットの緩和策、実際の効果などを紹介したいと思います。