E2Eテストはどこまでやるべき? 「テスト全体像」から範囲を決定する2つのヒント


こんにちは。MagicPodでエバンジェリストをしているYoshiki Itoです。

MagicPodに限らず、E2Eテストの自動化に取り組み始めた方が疑問に思うのが

「E2Eテストってどのくらい/どこまでやればいいの?」

という点です。

かつてシステムテストやE2Eテストの自動化がいまほど普及していなかった頃には、

  • なんでもかんでも自動化!
  • 100%の自動化率!

といった、それまで行っていたたくさんの手動テストケースを片っ端から自動化するようなチームもあったようです。

しかし、テストピラミッドの考え方をはじめ、テスト自動化に関するさまざまな情報・ナレッジが普及するとともに、上記のような「E2Eテストをたくさん自動化しよう」というやり方はアンチパターンだと認識されるようになりました。

※参考:テストのコスト増加やその対策に関しては、こちらの記事もご覧ください。

テストにおける技術的負債─そのコストを理解し、効果的に管理するには
テストにおける技術的負債─そのコストを理解し、効果的に管理するには

その結果として、最初に挙げた「なんでもかんでも自動化すればよいわけでないなら、どこまでやればいいのか」という問いにつながってきます。

よく言われるE2Eテストの範囲

E2Eテストの範囲は、以下のように説明されることが多いです。

  • 主なユーザーストーリー
  • ビジネス要求をテスト
  • システム・アプリケーションのコアな価値を確かめるテスト
  • 画面を操作して、データや処理がDBや外部システムなどすべて通るようなシナリオ

これらの説明も決して間違っているとは思いません。しかし、「どこまでやればいいのか」という疑問を持っている方はこれらの答えではスッキリ納得ができず、まだもやっとしている状態なのではないでしょうか。

このもやっとした状態をクリアにするためには、テストの全体像を考えること、つまりE2Eテストを単独で考えるのではなく、他の「***テスト」との関係性やそれぞれの責務を含めて考えることが重要です。

テストの全体像を考えるヒント2つ

考え方の例を2つご紹介します。

例1:テスト対象のアーキテクチャに基づいて範囲を決定する

ひとつの考え方は、テスト対象のアーキテクチャに基づいて、単体・結合・E2Eなど各種テストのカバーする範囲を決定する方法です。

Martin Fowler氏の記事を例に見てみましょう。



引用:Testing Strategies in a Microservice Architecture

この記事では、マイクロサービスアーキテクチャに対して

  • Unit test
  • Component test
  • Integration test
  • Contract test
  • End-to-end test

がそれぞれ担う範囲を設定しています。 例では抽象的な図になっていますが、自組織における具体的なアーキテクチャ図に基づいて、どこからどこまでを各テストが担うのかを明示する、というのが一つの方法です。

国内ではfreee社が類似の取り組みについてブログ記事を公開しています。

参考:ソフトウェアアーキテクチャに基づいた自動テスト戦略と実装ガイドライン - freee Developers Hub

例2:テストアーキテクチャとともに範囲を検討する

テストアーキテクチャにはいくつかの説明がありますが、代表的なものとしては以下があります。

テストの全体像を、テストの構成要素とその関係性、連携の段取りで表現したもの
引用:テスト設計チュートリアルちびこん編2024

この説明どおり、まさにテストアーキテクチャはテストの全体像を表しているものです。

テストアーキテクチャの表現方法にも複数の種類がありますが、私が好んで用いているものにテストコンテナを用いたモデルがあります。



引用:テスト設計チュートリアル_テスコン編25

この図では、たとえば「単体テスト」の中では「構造テスト」や「例外ハンドリングテスト」を行い、「システムテスト」では複数のフェーズで「機能テスト」や「負荷テスト」を行いつつ並行して「動作環境テスト」を行って・・・といった形で各種テストが整理されています。

i
補足
「単体テスト」のコンテナが2つありますが、おそらく一方は「結合テスト」か「統合テスト」だと思われます。

このような形でテストアーキテクチャを整理する中で、「E2Eテスト」というコンテナを用意してどんな観点をそこに含めるか、を検討するのも一つの方法です。

E2Eテスト単独でなく、他のテストと併せて考えよう

テスト対象のアーキテクチャ図で考える場合と、テストアーキテクチャに基づいて考える場合、いずれもE2Eテスト単独で範囲や責務を考えるのではなく、他のテストレベル・テストタイプとともにE2Eテストの範囲を検討する点がポイントだと考えています。

この考え方は、あらたにE2Eテストを自動化するときに限らず、「E2Eテストは自動化してあるけど、これでいいんだったかな・・・?」とその範囲や役割に迷った際にも有効です。

E2Eテストをどこまでやるべきか、で迷った場合は、まずはテスト全体でどうあるべきかに立ち戻って検討してみることをオススメします。


エバンジェリスト 伊藤由貴

エバンジェリスト 伊藤由貴

2012年に第三者検証会社へ入社。システムテスト自動化ツールの開発や導入支援を経て、専門チームを立ち上げ「テスト自動化エヴァンジェリスト」として活動。これまでに500人以上へレクチャーし、20社以上のテスト自動化を支援。人生で書いたブログは1000本以上で、登壇や執筆で多くのエンジニアのキャリアや考え方に影響を与える。『ソフトウェアテスト技法練習帳』共著、JSTQB AL テスト自動化エンジニアシラバス翻訳グループメンバー。
見た目通りギャンブルには弱いが、間違い探しと頼まれごとにはめっぽう強い。趣味は囲碁と文具。本は買って満足するタイプ。

X:https://x.com/yoshikiito
LinkedIn:https://jp.linkedin.com/in/yoshiki-ito-baa154120