PromleeBlog
サイトマップ
このブログについて
メニュー
loading..🐩🐩🐩🐩
プログラミング
Spring Boot
Tdd With Spring Boot
Spring Bootで学ぶTDDの総まとめ(最終実習コード付き)- 第15回
Spring Bootで学ぶTDDの総まとめ(最終実習コード付き)- 第15回
📅
はじめに
ここまでの歩み(シリーズの振り返り)
TDDがもたらす保守性
ソースコード一式(GitHub)
次に学ぶこと
おわりに
参考
はじめに
🔗
こんにちは。
第1回で「TDDとは何だろう?」と考えたのがつい昨日のようですが、もう最終回の第15回です。
空のプロジェクトから始めて、商品の登録、取得、検証、例外処理ができる堅牢なアプリケーションを一緒に作ってきました。
最後に学んだ内容を振り返り、この
習慣
がこれからの開発にどう役立つのかを整理します。
ここまでの歩み(シリーズの振り返り)
🔗
コードの書き方に加え、
ソフトウェアを堅牢にする考え方
を学びました。
基礎を固める(第1〜4回)
TDDの中核となるRed-Green-Refactorのサイクルを身につけ、JUnit 5とAssertJで最初のテストを書きました。
特に、まずテストを通すための
最小限の実装
が重要だと学びました。
構造を改善し、層ごとにテストする(第5〜8回)
散らかったコードを
リファクタリング
し、ServiceとRepositoryに役割を分けました。
仮のインメモリストレージから
JPA
に移行し、
MockMvc
でControllerまでテストしました。
応用技術と問題解決(第9〜13回)
Mockito
で依存関係を切り離し、振る舞いを検証する方法を学びました。
@Valid
で入力を検証し、
Clock Bean
を使って時間に依存するコードをテストしやすくしました。
最後に、
単体テスト
と
統合テスト
のバランスを取る方法を学びました。
TDDがもたらす保守性
🔗
なぜ手間をかけてテストコードを書いたのでしょうか。その価値は、開発が終わってから現れます。
安心してリファクタリングできる
コードを直すときに「ここに手を入れて、ほかの機能が壊れたらどうしよう」と怖がらずに済みます。
テストが
青信号
を示せば、安心して構造を改善できます。
生きたドキュメント
複雑なWiki文書よりも、テストコードのほうが正確です。
「このAPIに何を渡すとエラーになるのか」という質問に、テストコードは
実際の挙動に沿った答え
を示します。
デバッグ時間の短縮
バグが出ても全体を探し回る必要はなく、失敗したテストケースを見れば手がかりが得られます。
原因を特定するための
監視カメラ
を、コードの隅々に設置したようなものです。
ソースコード一式(GitHub)
🔗
シリーズで作った実習コードは、以下のリポジトリにまとめてあります。
見落とした箇所や全体構成を確認したい場合は、クローンして見てみてください。
実習で使ったコードは
GitHubリポジトリ↗
から確認できます。
Terminal
git
clone
https://github.com/PROMLEE/tdd-study.git
次に学ぶこと
🔗
Testcontainers
今回はH2(インメモリDB)を使いましたが、実務では実際のMySQLやRedisと同じ環境でテストしたいことがあります。
Dockerを使う
Testcontainers
を学んでみましょう。
BDD(Behavior Driven Development)
assertEquals
のような技術用語の代わりに、仕様書に近い言葉(
Given
、
When
、
Then
)でテストを書くための
Cucumber
や
JGiven
があります。
性能テスト
機能が正しいことを確かめたら、次はどのくらい速いかを確かめます。
JMeter
や
nGrinder
を使って負荷テストに挑戦してみましょう。
CI/CDパイプライン
自分のコンピューターだけでなく、GitHubにコードを送るたびにテストが自動実行されるよう、
GitHub Actions
や
Jenkins
を設定してみましょう。
おわりに
🔗
👍
テストコードは、開発者が最初に書く利用側(Client)のコードです。
私が特に好きな言葉です。
自分で作ったコードを最初に使ってみて、つまりテストして、不便な点を直し、設計を磨くのがTDDです。
最初は時間がかかって、もどかしく感じるかもしれません。
練習を続けていくと、いつの間にかテストに支えられ、自信を持って開発できるようになります。
そのころには、すでに
優れた開発者
に成長しているはずです。
長いシリーズにお付き合いいただき、本当にありがとうございました。
皆さんのコードのテストが、いつもグリーンになりますように!
ありがとうございました!
参考
🔗
Clean Code(Robert C. Martin)↗
テストに加え、保守しやすいコードを書くための考え方を学べる必読書です。
Spring Bootで学ぶTDDの総まとめ(最終実習コード付き)- 第15回 | PromleeBlog