Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
What is TDD?
Search
浦川仁成
September 25, 2024
Programming
1
760
What is TDD?
新規PJでTDDを導入することになったので、チームメンバーにTDDのメリットを説明するため、ChatGPTにMarpでスライドを作ってもらいました。
浦川仁成
September 25, 2024
Tweet
Share
More Decks by 浦川仁成
See All by 浦川仁成
Raycastを使いこなせ!
urakawa_jinsei
0
63
Other Decks in Programming
See All in Programming
状態遷移図を書こう / Sequence Chart vs State Diagram
orgachem
PRO
3
300
DMMを支える決済基盤の技術的負債にどう立ち向かうか / Addressing Technical Debt in Payment Infrastructure
yoshiyoshifujii
4
660
副作用と戦う PHP リファクタリング ─ ドメインイベントでビジネスロジックを解きほぐす
kajitack
3
490
AI コーディングエージェントの時代へ:JetBrains が描く開発の未来
masaruhr
2
220
Amazon Q CLI開発で学んだAIコーディングツールの使い方
licux
3
120
Jakarta EE Meets AI
ivargrimstad
0
410
AIのメモリー
watany
11
1.1k
Gemini CLIの"強み"を知る! Gemini CLIとClaude Codeを比較してみた!
kotahisafuru
2
210
Git Sync を超える!OSS で実現する CDK Pull 型デプロイ / Deploying CDK with PipeCD in Pull-style
tkikuc
4
480
AIコーディングエージェント全社導入とセキュリティ対策
hikaruegashira
15
8.6k
11年かかって やっとVibe Codingに 時代が追いつきましたね
yimajo
0
220
階層化自動テストで開発に機動力を
ickx
1
440
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
70
11k
A better future with KSS
kneath
238
17k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
Making Projects Easy
brettharned
117
6.3k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Producing Creativity
orderedlist
PRO
346
40k
Music & Morning Musume
bryan
46
6.7k
Writing Fast Ruby
sferik
628
62k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.5k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Being A Developer After 40
akosma
90
590k
Transcript
テスト駆動開発( TDD)について ソフトウェア開発における手法 1
テスト駆動開発( TDD)とは? TDD( Test Driven Development) は、ソフトウェアの機能をテストケースから始 める開発手法 3つのステップで進行: i.
テストを書く ii. コードを書く iii. リファクタリング 2
TDDのメリット コードの品質が向上する バグが早期に発見されやすい 小さなステップで開発が進むため、修正が容易 設計が洗練される 3
TDDの 3つのサイクル 1. Red: 失敗するテストを書く 2. Green: テストを通すために最小限のコードを書く 3. Refactor:
コードを整理し改善する 4
Red: 失敗するテストを書く まず、期待する動作を定義するテストを書きます。 // calculator_test.go package calculator import "testing" func
TestAdd(t *testing.T) { result := Add(2, 3) expected := 5 if result != expected { t.Errorf("expected '%d', but got '%d'", expected, result) } } 5
Green: 最小限のコードを書く 意図的にバグのあるコードを書き、テストが失敗することを確認します。 // calculator.go package calculator func Add(a, b
int) int { return a - b // 足し算ではなく、間違って引き算を実装 } この時点でテストは失敗します。これが TDDによってバグが早期に発見される例 です。 6
テスト失敗の確認 テストを実行すると、以下のエラーが表示されます: calculator_test.go:10: expected '5', but got '-1' テストがバグを早期にキャッチしました。バグがプロダクション環境に入る前に 修正可能です。
7
Green: 正しいコードを書く バグを修正して、正しい足し算を行うコードにします。 // calculator.go package calculator func Add(a, b
int) int { return a + b } 8
Refactor: コードを整理する テストが通ったら、コードの重複や無駄を取り除き、整理します。 リファクタリングの例はここでは省略しますが、機能を壊さないように注意しつつコ ードの改善を行います。 9
TDDのメリット : バグの早期発見 TDDを使用することで、コードを書いてすぐにテストが実行されるため、バグが 早期に発見されやすくなります。 例えば、間違ったコードを書いたとしても、テストがすぐに失敗を教えてくれま す。 バグが本番環境に入る前に修正できるので、品質が大幅に向上します。 10
まとめ TDDの 3つのサイクル Red: テストを書く Green: コードを書く Refactor: コードを改善する 継続的にテストを作成・実行することで、安定した品質のコードを提供できま
す。 11
最後に TDDは最初は難しく感じるかもしれませんが、繰り返すことで強力な開発手法に なります。 最初の一歩はテストを書くことから始めましょう! 12