テストのメソッド派とデトロイト派についての話

2025/10/23

テクノロジー 学習

t f B! P L
eyecatch Webエンジニアの仕事をしていると、いろいろなテスト思考の話を聞くことがある。 単純なユニットテストから、複雑なストーリーテストなど、方式も山のように存在するし、ツールも山のように存在する。 そんな中、テストには、メソッド派と、デトロイト派の2つの派閥があることを耳にした。 よほど仕事でテストを重要視しているチームじゃない限り、この手の話が出ることはないので、知識を深めるために、これらの派閥を調べてみることにした。

テストのメソッド派とデトロイト派って何?

まず、この「メソッド派」と「デトロイト派」という呼び方は、テスト駆動開発(TDD)の文脈でよく出てくる。 元々は、テストの設計思想やアプローチの違いを表すもので、どちらが正しいというよりも「どんな価値観でテストを書くか」という方が正しい。 一言で言えば、
- メソッド派(London派) は「モック重視・単体主義」 - デトロイト派(Classic派) は「実際の動作重視・統合主義」
という対比になる。

メソッド派(London派)の考え方

テスト対象のクラスや関数以外の依存は、できるだけモック(擬似オブジェクト)に置き換える。 各クラスを単体として正しく動くことを確認することに重点を置く。 テストを書く際に、外部とのやり取りをモックで検証(たとえば、特定のメソッドが呼ばれたかなど)。 テスト設計が明確でスピード感があり、コードの責務を整理しやすい。 ただし、モックを多用しすぎると、実際の挙動と乖離してしまうことも。

デトロイト派(Classic派)の考え方

テスト対象を、できるだけ実際の依存関係を含めた形で動かす。 つまり、実際のデータベース・ネットワーク・ファイルなども含めて、システムとしての動作を重視。 モックよりも本物のオブジェクトを使い、全体の協調動作をテストする。 テストが現実に近くなる反面、スピードが遅くなったり、環境依存が発生するリスクもある。 「本番で動くものをちゃんと保証したい」という現場志向のアプローチ。

どちらが正しいわけではない

どちらの派も目的は同じで、「壊れないコードを書くこと」だと思われる。 メソッド派は「コード構造を保つ」ためのテスト。 デトロイト派は「動くものを保証する」ためのテスト。 プロジェクト規模や開発チームの文化によって、どちらを重視するかは変わる。 たとえば、金融系や制御系では「デトロイト派」的に信頼性重視。 スタートアップやWebサービスでは「メソッド派」的にスピード重視、が多い傾向。

結局、どう使い分けるのが良い?

どちらか一方に偏るよりも、レイヤーごとに使い分けるというのが現実的だと思った。 たとえば、開発段階でベータ版が出来上がる前までは、メソッド派で、本番検証時点では、デトロイト派で行うという合わせ技もありだと思う。
ドメインロジック → メソッド派(モック中心のユニットテスト) インテグレーション層 → デトロイト派(実際の連携をテスト)
「どこまでモック化するか」を決めるのが、テスト設計のセンスとも言えるかも。 そもそもチーム内で「何を守るためのテストか」を共通認識にしておくことが重要なので、チーム思考に依存する可能性が高い。

あとがき

テストの世界にも「思想の流派」があり、それぞれに背景がある。 メソッド派は構造的・理論的なテスト。 デトロイト派は現実的・実務的なテスト。 どちらの派閥も、「壊れないコード」を目指すための異なるアプローチに過ぎないと思われる。 自分の開発現場に合ったテスト哲学を見つけることこそ、真のTDDへの第一歩なのではないかな? 一人で開発することが多い自分にとっては、両方のいいとこどりをしたいと思ったので、それはMYNT派と名付けることにしよう(自分しか呼ばんけど)。

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ