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
TDDと今まで
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
kanayannet
March 09, 2024
Programming
740
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TDDと今まで
kanayannet
March 09, 2024
More Decks by kanayannet
See All by kanayannet
リファクタリング ハーネス
kanayannet
1
110
厳密な定義
kanayannet
0
130
Mcp Training
kanayannet
0
250
MCP で「こいつ動くぞ」
kanayannet
0
180
無関心の谷
kanayannet
0
1.3k
生成AIの使いどころ
kanayannet
0
270
github copilot と 心理的安全性
kanayannet
0
290
FW と ライブラリ の考え方
kanayannet
0
280
個人開発 稼げなくてもいいアプリ
kanayannet
0
620
Other Decks in Programming
See All in Programming
Swift愛好会と私(ウホーイ) / Swift Fan Club and Uhooi
uhooi
0
140
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
860
FastAPI の並行処理モデルを完全に理解する
hoto17296
9
3.8k
業務時間外もAIに働いてもらう話
colorful12
3
10k
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
6
2.4k
ソフトウェアラスタライザ
fadis
1
790
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
2
340
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
260
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
560
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
120
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
170
アクセシビリティから考える情報設計
high_g_engineer
0
200
Featured
See All Featured
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.9k
Designing Experiences People Love
moore
143
24k
The Cult of Friendly URLs
andyhume
79
7k
Designing Powerful Visuals for Engaging Learning
tmiket
1
530
Building an army of robots
kneath
306
46k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
200
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
270
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
590
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
520
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
GraphQLとの向き合い方2022年版
quramy
50
15k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.2k
Transcript
TDD と 今まで Gunma.web #52 @kanayannet
大前提 この資料は後ほど公開します メモらなくてもOK twitter で賑やかし歓迎 #gunmaweb
アジェンダ 1. どこで知った? 2. その後どうした? 3. 仕事にどう繋げた? 4. どうっだった? 5.
今はどうしてる? 6. まとめ
どこで知った? 2010 RubyKaigi in Tsukuba アジャイル開発 手法の一つとして知る https://rubykaigi.org/2010/ja/events/23/ https://www.slideshare.net/nawoto/head-first-ordinary- system-development
Rspec BDD という単語も知る
やってみないと 解らないね
感想 進めるとともに頭がスッキリしてきた感ある とはいえ他の人どうやってるんだろ?
その後どうした?
TDDBC TDD Boot Camp という存在を知る 参加してみたかったが...tokyo はあっという間に満員 隣の NSEG( 長野県)
がやってくださったので参加 TDDBC 長野0.1
どんな内容? 自販機のアルゴリズムの課題
千円札と硬貨を投入することができる(1 円玉5 円玉は使 えない。Exception を投げる) それ以外を投入された場合、Exception を投げる 現在投入されている合計金額を算出できる
ID1 コーラ5 本120 円を在庫として保持する お金を投入すると、現在購入できるID を算出する 購入できるID を指定して、ジュースを買うとコーラの在 庫が減る 現在の売上金額が算出される
現在の在庫数が算出される 在庫切れを考慮する
千円札5 枚、硬貨はそれぞれ10 枚保持する ジュースが1 つ購入されるとお釣りとして、お金が減算 される お釣りが足らなくて購入できない状態を考慮する 現在のお釣り用のお金が算出される
ID2 レッドブル 5 本 200 円 を追加 ID3 水 5
本 100 円を追加
前提が整った感 他の人がどうやってるか?見れた Ruby C# PHP JS
案外他の人も一緒 お互いどうやってるの?質問したり見させてもらったり 何かの技術、出始めあるある話
仕事にどう繋げた?
TDD に向かない組織 (NSEG TDD の発表より ) プログラム設計, 実装, 単体テストの担当が別 単体テストでバグ検出率を求められる
幸いかな? 一人が任される環境 クロスチェックしてもらうことも可 ある意味ハードだがある意味やりやすい
いつやるか?
心構え 他社さん( 勉強会で出会った人たち) も手探り感MAX でや ってるんだから 自分もこれでいんじゃない? 最早、パーフェクトを求めない
とりあえず、やってみる Ruby Rspec Perl prove use Test::More
他の人がやらない時 目の前で見せる どのくらい細かくテストケースを整えるのか? どのくらい細かくライブラリ関数切るのか? どのくらいのスピード感で進むのか?
どうだった?
最重要 どのくらいのスピード感で進むのか? TDD やってない人と比較して
やっぱ結果が出ないとね やってる人がいい結果を出す 興味を持つキッカケに 特に同じチームだと顕著に出る
何をテストするか? 自覚している事が重要 何のために、どのテストをするのか? 意外と疎かにしがち ここが整わないと...
間違ったゴールを 目指してしまう
あるある話 TDD = 自動テスト TDD = テストフレームワーク
違う
TDD TDD = テストを事前に書く テストを事前に書く = テスト内容を事前に決める テストフレームワーク苦手なら debug コードでもいいん
じゃない? なれた後に テストフレームワークを使うでも
あるある話 2 テストを先に決めていたら実装するまで時間がかかるよ 遅くなるんじゃない?
そんな事はない 順番の問題なだけ
WHY?
最後に動作確認してもらうよね? どんな案件でも一人で終わることはない
つまり 後にやるか?先にやるか?の違い
先にやる際の利点 テスト内容 = 要求内容 = ゴール これがハッキリ見えるの大きい テスト内容の時点で依頼者・関係者( 非エンジニア) に
確認できる
ライブラリ関数の粒 テストケースが整うと自然と決まってくる感ある テスト時の役割ごとに関数切る事が基本 これって...DDD の感覚に似てくるかも? 用語を決めて -> 関数名に繋がる -> ユビキタス言語
業務で使う役割ごとに切ってコードに -> ドメインオブ ジェクト
結果 同じチーム内外で情報が共有される 同じものを見ながら進む事重要 考慮漏れを発見しやすくなる
今はどうしてる?
新入社員に広めてます
重要 指示ではなく体験してもらう 命令は意味がない 同じものを見れるようにする 「仕方ないTDD やるか」は意味がない
感覚は DEBUG? 「テスト」と名前を聞くと... 実行結果の精度を求めがちだが 実際の本質は違う 理解度の確認 画面に出力しながら...
重要 感覚の話をします。 いきなりパーフェクトな回答は求めない 理解度の確認します 質問によるチェックテスト 効果も話します 人間の脳の記憶のされ方について 反復練習の重要さ
まとめ
体感しないと価値が解りずらい 精度は求めない -> やってみる事大事 精度よりも Debug -> 探索する感覚 理屈で理解するより反復練習( 手を動かす)
した方が理解 できるよ 正しいゴール = 正しいテストケース = 先に書けば? = TDD
ご清聴 ありがとう ございました