「分からないから分かるへ」テスト駆動開発を身につけ、変更に強いアプリ開発を実践しよう!
自動テストは大事と感じているが、なかなか実務で導入するに至らないとか、テストでどんな項目をチェックしたらいいかわからないといった話をときどき耳にしていました。
テスト駆動開発はテスト手法ではなく、効率的な開発や開発者が安心して取り組める開発体験を手に入れるための開発プロセスのひとつです。
自動テストが上手に書けるようになり、テストファーストでプロダクト開発ができるようになれば、良い設計・良い実装を導く手助けになるはずです。ぜひ、本教材でテスト駆動開発を体験してみてください。
Laravel でテスト駆動開発をする際の基本と実践を学ぶ
本教材では、ヨガ教室の予約サイトを題材に、Laravel でテスト駆動開発をする際の基本的な流れと実践的なテクニックを学びます。
実際に、LaravelとPHPUnitを使ったユニットテスト、フィーチャーテストそれぞれの作り方、テストの書く際の方針や便利な機能、テスト駆動開発の基本を学ぶことができます。テスト駆動開発を身につけることで、変更に強いアプリケーションを作ることができるようになります。
学習内容
- テスト駆動開発の基本的な流れを学びます
- ユニットテスト(単体テスト)とフィーチャーテスト(機能テスト)の概要について学びます
- 自動テストにおける Laravel 特有の補助機能について学びます
- テスト戦略を立てる際のポイントについて学びます
テスト駆動開発の概要
以下の図のように、プロダクションコードを書く前にテストを書き(テストファースト)、テスト失敗 → テスト成功 → リファクタリングのサイクルを細かく回し、徐々に「動作するきれいなコード」を完成させていくスタイルです。
大事なのは、一度で完成させることを目指さず、このサイクルを何度も回して徐々に完成形に近づけていくことです。
本教材の対象者
- 自動テストを書いたことがない、あるいは少ししか書いたことがないが、これから書いていきたいと思っている方
- 自動テストを書いているが、うまく書けている自信がない方
- これから自動テストを導入したいと考えているが、どうやって導入していけばいいか悩んでいるマネジャー、リーダーの方
受講における必要条件
本教材は中級者向けとなっています。 以下の条件を満たすかどうか事前に確認して受講してください。
- PHP および Laravel の基礎知識
PHP や Laravel を一度も触ったことがない方は、まずは 書籍 や Techpit の他の教材で学習することをおすすめします。
これは必要条件ではありませんが、「テスト駆動開発」(ケント・ベック著)を事前にお読みになっておくと、テスト駆動開発の基礎知識を補完できるので、効率よく進められるのではないかと思います。
学ばないこと
- ソフトウェアテスト全般に関すること
- E2E テスト、受け入れテストに関すること
- 大規模システムにおけるテスト計画や実施に関すること
本教材の対応バージョン
- PHP 8.0
- Laravel 6.x, 7.x, 8.x
- MySQL 8.0
付属の PHPUnit は 8.3 ~ 9.5 です。
本教材で質問対応可能なOSや環境
- Mac OS
開発環境は Mac を前提としており、動作確認も macOS でのみしていますが、開発自体は Docker を使って行うので、Docker Desktop for Windows が動かせるのであれば、Windows でも動作させることができるはずです。
本教材の構成
0章 はじめに
本教材を進める上で必要な前提知識の解説と、設計の概要説明、環境構築を行います。
1章 テスト駆動開発の進め方
テスト駆動開発の一連の流れを説明します。簡単なユニットテスト、フィーチャーテストの実装を通して流れを体感してください。
2章 ユニットテストの作り方を学ぶ
テスト駆動による実践的なユニットテストの作り方を学びます。
3章 フィーチャーテストの作り方を学ぶ
テスト駆動による実践的なフィーチャーテストの作り方を学びます。
4章 将来のためにリファクタリングをする
中長期的な視点で、テストコードとプロダクションコードの共生関係を作っていくための、テストに対する考え方、カバレッジ、リファクタリング、などについて学びます。
Appendix
自動テストを開発プロセスに組み込むために役立つツールの紹介をします。
カリキュラム
- 2-1 ユニットテストがあると良いケース
- 2-2 要件からテストパターンを考える
- 2-3 テストしやすいモジュール構成を考える
- 2-4 ユニットテストのためのテストダブル
- 2-5 要件変更に対応する