inflearn logo
知識共有
inflearn logo

H2テストはすべて通過、運用バグは6件 — TestcontainersでMySQL・Redis・Kafkaの統合テスト

H2とモックのテストはすべて通るのに、本番MySQL・Redis・Kafkaでのみ発生する6つのバグを、Testcontainersの統合テストで一つずつ再現して修正します。コンテナのシングルトン化・再利用、CI、flakyテストの診断まで。

1名 が受講中です。

難易度 中級以上

受講期間 無制限

Software Test
Software Test
Spring Boot
Spring Boot
JUnit
JUnit
Docker
Docker
Testcontainers
Testcontainers
Software Test
Software Test
Spring Boot
Spring Boot
JUnit
JUnit
Docker
Docker
Testcontainers
Testcontainers

この講座で身につくこと

  • H2やモックでは見逃されるバグ(構文・ソート規則・分離レベル・TTL・メッセージキー・重複受信)を実際のエンジンで再現する統合テストを書きます。

  • @ServiceConnection・イメージの固定・Flywayによる検証で、本番と同じ条件のテスト環境を構築します。

  • Awaitility(until・during)・Clock注入・データクリーンアップにより、非同期・時間依存テストを安定させます。

  • シングルトンコンテナ・再利用・並列実行の効果と落とし穴を数値で確認し、CIで実行します。

  • flakyテストを繰り返し実行して数値化し、原因ごとに修正します。

ユニットテストはすべて成功しているのに本番環境で壊れるなら、テストが本番環境とは異なるものを見ているということです。

H2・モックテストはすべて通るのに、本番のMySQL・Redis・Kafkaでだけ発生するバグ6件を、Testcontainersの統合テストで一つずつ再現して修正します。コンテナのシングルトン化・再利用、CI、Flakyテストの診断まで。

リポジトリ1つ・ストーリー1つで最後まで進めます。各講は不具合の症状から始まり、実際の実行画面で赤から緑になるまでを示します。チェックポイントタグ(step-00~41)を使えば、どの講からでもすぐに始められます。

この講義を終えると

  • H2や自動テストでは見逃すバグ(文法・ソート規則・分離レベル・TTL・メッセージキー・重複受信)を実際のエンジンで再現する統合テストを書く。

  • @ServiceConnection・イメージ固定・Flyway検証により、本番と同じ条件のテスト環境を構築する

  • Awaitility(until・during)・Clockの注入・データのクリーンアップで、非同期・時間依存のテストを安定させる。

  • シングルトンコンテナ・再利用・並列実行の効果と落とし穴を数値で確認し、CIで実行する

  • 不安定なテストを繰り返し実行して数値化し、原因ごとに修正する

こんな方におすすめです

  • 単体テストは書いているものの、本番環境でだけ発生するバグに悩まされたことのあるSpringバックエンド開発者

  • H2・モックで作ったテスト一式を、本物のDB・Redis・Kafkaに移行したいチーム

  • Testcontainersを使ってみたものの、遅くて時々失敗するため諦めた方

カリキュラム(7セクション・42講・約316分)

  • セクション0. はじめに — 緑のランプが点灯しているのに本番環境で壊れる — 完成デモ:緑のランプ9つが見逃した本番バグ6つ、5分で最初のバグ:購入金額が0ウォン、演習用リポジトリとチェックポイントタグ、Docker 29の落とし穴:client version 1.32 is too old、H2・モックテストで証明できることとできないこと、最初のコンテナテストを徹底解剖:ライフサイクル・ログ・待機

  • セクション1. 実際のMySQLでしか壊れないもの — 構文の違い:INサブクエリ内のLIMIT、照合順序:H2テストの期待値が間違っていた、トランザクション分離:REPEATABLE READスナップショット、イメージタグの固定と本番環境のバージョン合わせ、PostgreSQLコンテナで同じテストを実行、@ServiceConnectionと@DynamicPropertySource

  • セクション2. スキーマとテストデータ — Flywayマイグレーションをテストで先に検証、マイグレーション失敗をテストで再現、テストデータの3つの方法:SQL・ビルダー・リポジトリ、@Sqlと初期化スクリプト、大量の固定データが必要な場合、ローカル実行も同じコンテナで

  • セクション3. Redis・Kafkaでのみ発生する問題 — Redis: SETでTTLが消える、期限切れを待たずに検証する、Kafkaコンテナを起動する(KRaft)、メッセージキーとパーティション:順序が崩れる、重複受信:ポイントが二重に加算された、エラー・再試行・DLTの検証

  • セクション4. 時間・非同期・テストの分離 — Awaitility:sleepなしで待つ、during:それ以上発生しないことを検証、時間に依存するコード:Clockの注入、テストの分離:データクリーンアップ戦略、テスト順序への依存を見つける、並列実行とコンテナの競合

  • セクション5. 速度とCI — なぜ遅いのか:時間を分けて計測する、Springコンテキストキャッシュとコンテナのライフサイクル、シングルトンコンテナパターン、コンテナの再利用:ローカル専用、GitHub ActionsでTestcontainersを実行する、CIの時間を短縮する:キャッシュとイメージ

  • セクション6. Flakyの診断とキャップストーン — Flakyの診断①:繰り返し実行して再現率を測る、Flakyの診断②:原因ごとに修正する、ビフォーアフター総まとめ:修正したバグと実行時間、キャップストーン①:初めて見るバグ — 症状と手がかり、キャップストーン②:解答と比較、まとめ:チェックリストと次のステップ

実習環境

実習用ZIPには、架空の会社「ループマーケット」の注文サービスリポジトリ(各講義のGitタグ42個)と、各講義の再現シナリオ42個、チェックリストが含まれています。画面上の数値は制作時のノートPCで実際に実行した値であり、環境によって異なる場合があります。

受講前提知識

  • 単体テストとモックを使ったことがある

  • Spring BootでAPIを作った経験

  • JDK 21・Dockerが動作するPC

この講義で扱わないこと

  • JUnit・Mockitoの構文入門

  • キャッシュ・メッセージキューの設計(Outboxなど)

  • 負荷・性能テスト

  • Kubernetes・コンテナ運用

ご案内

この講義の音声は合成音声(TTS)で作成しました。すべてのデータは教育用の仮想データであり、数値は実行環境によって異なる場合があります。

次のような方に
おすすめです

受講対象

  • 単体テストは書いているのに、本番環境でだけ発生するバグに悩まされたSpringバックエンド開発者

  • H2・モックで作成したテスト一式を、本物のDB・Redis・Kafkaに移行したいチーム

  • Testcontainersを使ってみたものの、遅くて時々壊れるため諦めた方

前提知識

  • 単体テストとモックを使ったことがある

  • Spring BootでAPIを作成した経験

  • JDK 21 · Dockerが動作するPC

こんにちは
dorian05202988です。

経歴認証済み

20年以上にわたりデータベースとIT分野でキャリアを積んできたデータ職人です。DBAおよびDB Platformチームのマネージャーとしてデータベースプラットフォームに携わり、MySQL・PostgreSQL・Oracle・MongoDB、SQLチューニング、AWS・Terraform・Pythonを専門分野としています。ゲーム・金融・ITサービス分野での経験をもとに、データベースとクラウドアーキテクチャについて解説しています。『オラ​​クル実務チューニング SQLパターン学習』と『Oracle Pro*C実務プロジェクト活用書』を出版し、AWS Summit 2018・2019と「データよ、遊ぼう」2020では、サーバーレス・データベースの選択・マルチデータベース戦略について発表しました。最近は、Bedrock LLMを利用したスロークエリの分析・チューニング提案、DBスペック算定の自動化、DBメタMCPサーバーとSlackボットを通じた照会フローを扱っています。開発者向けのデータベース自動化と、非開発者向けのAI業務活用について、各コースの対象者と目的に合わせた実習を通じて解説しています。AIの提案をそのまま適用するのではなく、結果の同一性・実行計画・観測条件を確認し、根拠が不足している場合は保留する判断基準を伝えています。会社の運用データや認証情報は講義資料に含めません。

もっと見る

カリキュラム

全体

42件 ∙ (5時間 15分)

講座資料:

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

まだ十分な評価が集まっていない講座です。
ぜひ最初のレビューをお寄せください。

dorian05202988の他の講座

知識共有者の他の講座はこちら

似ている講座

同じ分野の他の講座を見てみましょう!

期間限定セール

¥7,172

20%

¥8,965