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
210
What is TDD?
新規PJでTDDを導入することになったので、チームメンバーにTDDのメリットを説明するため、ChatGPTにMarpでスライドを作ってもらいました。
浦川仁成
September 25, 2024
Tweet
Share
More Decks by 浦川仁成
See All by 浦川仁成
Raycastを使いこなせ!
urakawa_jinsei
0
10
Other Decks in Programming
See All in Programming
5年分のツケを一気に払った話
soogie
3
1.2k
自分だけの世界を創るクリエイティブコーディング / Creative Coding: Creating Your Own World
chobishiba
2
680
CDKを活用した 大規模コンテナ移行 プロジェクトの紹介
yoyoyopg
0
240
色んなオートローダーを覗き見る #phpcon_okinawa
o0h
PRO
5
370
Remix × Cloudflare Pages × Sentry 奮闘記 / remix-pages-sentry
nkzn
1
380
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
1.1k
Iteratorでページネーションを実現する
sonatard
3
700
Unlocking Python's Core Magic
leew
0
120
標準ライブラリの動向とイテレータのパフォーマンス
makki_d
3
190
Vue :: Better Testing 2024
up1
1
380
複数プロダクトの技術改善・クラウド移行に向き合うチームのフレキシブルなペア・モブプログラミングの実践 / Flexible Pair Programming And Mob Programming
honyanya
0
180
Pythonによるイベントソーシングへの挑戦と現状に対する考察 / Challenging Event Sourcing with Python and Reflections on the Current State
nrslib
3
940
Featured
See All Featured
Robots, Beer and Maslow
schacon
PRO
157
8.2k
Pencils Down: Stop Designing & Start Developing
hursman
119
11k
Optimizing for Happiness
mojombo
375
69k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
26
1.9k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
22k
Art, The Web, and Tiny UX
lynnandtonic
295
20k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
38
2.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
7.5k
Agile that works and the tools we love
rasmusluckow
327
21k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Designing on Purpose - Digital PM Summit 2013
jponch
114
6.9k
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