Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
アジャイル開発のテスト -自動化でしょうか。いいえ、戦略勝ちです。-
Search
kyonmm
PRO
September 10, 2016
Technology
4.6k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
アジャイル開発のテスト -自動化でしょうか。いいえ、戦略勝ちです。-
Hacker Tackle 2016で講演したアジャイルテストにおけるアンチパターンをまとめたものです。個人の見解です。
kyonmm
PRO
September 10, 2016
More Decks by kyonmm
See All by kyonmm
AI時代の品質はテストプロセスの作り直し #scrumniigata
kyonmm
PRO
4
3k
生成AIはソフトウェア開発の革命か、ソフトウェア工学の宿題再提出なのか -ソフトウェア品質特性の追加提案-
kyonmm
PRO
2
1.3k
品質を経営にどう語るか #jassttokyo / Communicating the Strategic Value of Quality to Executive Leadership
kyonmm
PRO
4
2.2k
RALGO : AIを組織に組み込む方法 -アルゴリズム中心組織設計- #RSGT2026 / RALGO: How to Integrate AI into an Organization – Algorithm-Centric Organizational Design
kyonmm
PRO
5
4.8k
AIのグローバルトレンド2025 #scrummikawa / global ai trend
kyonmm
PRO
1
770
IT子会社のグローバルトレンド #scrumsendai / Global Trends in IT Subsidiaries
kyonmm
PRO
3
1.6k
AIのグローバルトレンド 2025 / ai global trend 2025
kyonmm
PRO
1
390
AI時代における変革の入口-100年後も語られる25年のために- #scrumosaka / The entry point to transformation in the AI era For 25 years that will be talked about 100 years from now
kyonmm
PRO
6
2.5k
地方中小企業のエンジニアから大企業の執行役員になるまで #phpcon_niigata / road to executive
kyonmm
PRO
7
15k
Other Decks in Technology
See All in Technology
株式会社シーエーシー エンジニア向け会社紹介資料
cac
0
57k
データ_AIの事業の勝敗をわけるもの
nek0128
1
470
Claude Codeを「使うほど育つ」AI秘書にするノウハウ
minorun365
PRO
33
30k
Making AI Agents Safe and Fast- Jev, Obsidian, and the Meta-Harness
x5gtrn
PRO
0
110
ソフトウェアDNAとクラウドエージェントのススメ
cloudace
0
120
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
2.7k
AIによるクリエイティブ生成を行う上での試行錯誤
plaidtech
PRO
0
170
作って終わりじゃないサーバーレス 〜9年運用する大規模EC物流API基盤の設計・運用のリアル〜
zozotech
PRO
0
430
30座EKS, 180次升級淬煉的EKS Upgrade Skill 的歷程
eric8230
0
210
ユーザー価値を届け続けるためにウォンテッドリーが大切にしている文化
kotaminato
0
190
SREは、MCPとAutopilotをこう使え!
kazumax55
3
940
Goodbye ShellScript, Hello File-based App
shunsock
0
630
Featured
See All Featured
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
460
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
280
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
940
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Writing Fast Ruby
sferik
630
63k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
580
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
700
Transcript
ΞδϟΠϧ։ൃͷςετ -ࣗಈԽͰ͠ΐ͏͔ɻ͍͍͑ɺઓུউͪͰ͢ɻ- kyon_mm in HACKER TACKLE 2016/09/10
Self Introduction • ͖ΐΜ kyon_mm @ גࣜձࣾΦϯβϩʔυ • ςετΞʔΩςΫτɺεΫϥϜɺڭҭ •
Groovy, F#, C# • TDD/BDDΤΩεύʔτ
Agenda • എܠ • ςετΞϯνύλʔϯ/Ξϯνύλʔϯͷର ࡦ • ؆୯ͳ·ͱΊ • QA
/ Discussion
kyon_mm ͷഎܠ • डୗΞδϟΠϧ։ൃ 4ਓνʔϜ • .NET ܥͷϑϨʔϜϫʔΫɺϥΠϒϥϦ։ൃ͕ϝΠ ϯɻͨ·ʹWebAPI, WebGUIɻ
• ςετࣗಈԽͷॻ੶Λڞஶɺ@IT ʹͯTDDهࣄ࿈ࡌ • εΫϥϜΛத৺ʹࠃΧϯϑΝϨϯεͰࣄྫൃද
Agenda • എܠ • ςετΞϯνύλʔϯ/Ξϯνύλʔϯͷର ࡦ • ؆୯ͳ·ͱΊ • QA
/ Discussion
ςετΞϯνύλʔϯ • Α͔Εͱ͓͚ͬͯͬͨͲɺ͍ͭͷ·ʹ͔ ࠔͬͯ͠·͏ςετʹؔ͢Δύλʔϯ
ςετͷཧͬͯͳΜ͚ͩͬ? • ςετ͕ͳ͍͜ͱɻςετ͠ͳͯ͘ཉ͍͠ ใ͕खʹ͍͍ͬͯΔ͜ͱɻ • ຖճςετ࣮ߦͰόάΛΈ͚ͭΒΕΔ͜ͱɻ
ςετΞϯνύλʔϯ • աࣗಈԽ • ϞοΫਲ͍ • TDDෆཁ
աࣗಈԽ • ςετʹݶΒͣࣗಈԽ͕ա͗ΕͭΒ͍ ͷͰ͢ɻ • ͳʹ͕աͷϥΠϯʹͳΔ͔νʔϜϓϩ μΫτ࣍ୈͰ͢ɻ • ࣗୡͷؚΊͨϦλʔϯΛߟྀͨ͠ROI Λߟ͑·͠ΐ͏ɻ
աࣗಈԽ ίϯςΩετ • खಈͷGUIૢ࡞ίϚϯυૢ࡞͕ଟͯͬͯ͘ ΒΕͳ͍ɻ • खಈͰͰ͖ͳ͍͜ͱΛಋೖ͍ͨ͠ɻ • ࡞ۀ࣭͕͘ਓؒͷखಈΛ৴༻Ͱ͖ͳ͍ɻ •
ͳΜͲ܁Γฦ͢͜ͱ͕͓͓͍ɻ
աࣗಈԽ ίϯςΩετ • ςετσϓϩΠΛࣗಈԽͨ͠ɻ • GUIͷςετࣗಈԽͨ͠ɻ • ڥߏஙࣗಈԽͨ͠ɻ
աࣗಈԽ ՝ • όάΛະવʹ͍ͩΓɺݟ͚ͭͨΓ͢Δ͜ͱ ͕Ͱ͖͍ͯͳ͍ɻ • ϓϩμΫτίʔυͷमਖ਼ʹରͯ͠ςετίʔ υͷमਖ਼ྔ͕ଟ͗ͯ͢ɺ؆୯ʹमਖ਼Ͱ͖ͳ͍ɻ • ࣗಈԽͨ͠ͷΛϝϯςͰ͖Δਓ͕͍ͳ͍ɻ
աࣗಈԽ ݪҼ1 • όάΛະવʹ͍ͩΓɺݟ͚ͭͨΓ͢Δ͜ͱ ͕Ͱ͖͍ͯͳ͍ɻ • త͕ཧ͞Ε͍ͯͳ͍ɻ • ؆୯ʹͰ͖Δ͜ͱ͚ͩΛେྔʹࣗಈԽͯ͠ ͍Δɻ
աࣗಈԽ ݪҼ2 • ϓϩμΫτίʔυͷमਖ਼ʹରͯ͠ςετίʔυ ͷमਖ਼ྔ͕ଟ͗ͯ͢ɺ؆୯ʹमਖ਼Ͱ͖ͳ͍ɻ • ݟ͚͍ͭͨόάɺ༷Խ͖͢ςετͷॏෳ ͕ଟ͍ɻ • ςετͳ͍ΑΓ͋ͬͨ΄͏͕͍͍ͱ͍͏ࢥ
͍ࠐΈɻ
աࣗಈԽ ݪҼ3 • ࣗಈԽͨ͠ͷΛϝϯςͰ͖Δਓ͕͍ͳ͍ɻ • ࣗಈԽ͢Δ͜ͱ͕తʹͳͬͯ͠·͍ͬͯΔɻ • ࠷ॳͷత͔ΒͣΕͨӡ༻Λͯ͠͠·͍ͬͯΔɻ • ࣗಈԽͨ͜͠ͱʹΑࣦͬͯͬͨͷΛݟΑ͏ͱ
͍ͯ͠ͳ͍ɻ
աࣗಈԽ ݪҼ·ͱΊ • ࣗಈԽΛ͢͢Ί͍ͯ͘ɺࣗಈԽ͞ΕͨͷΛͬ ͍ͯ͘ͳ͔Ͱɺࣗୡͷཁٻ͕มΘ͍ͬͯΔ͜ ͱʹؾ͍͍ͮͯͳ͍ɻ • ࣗୡͷݱͳΒͰͷɺࣗಈԽͷϝϦοτɺ σϝϦοτΛߟ͍͑ͯͳ͍ɻ •
ͳ͍ΑΓ͋ͬͨ΄͏͕͍͍ɻͱࢥ͍ࠐΜͰ͍Δɻ
աࣗಈԽ ରࡦ • ࣗಈԽͷཁٻΛϓϩοτ͍ͯ͘͠ɺҰ࣮ݱ͚ͨ͠Ͳ ෆཁʹͳͬͨͷͲΜͲΜࣺͯͨΓɺมߋ͢Δɻ • ͦͷཁٻΛୡ͢Δ͜ͱͰͷϓϥεͷϦλʔϯɺϚΠ φεͷϦλʔϯΛߟ͑Δɻ • ෆ͔҆ͩΒࣗಈԽ͢Δɻ͔ΒҰา౿ΈࠐΜͰɺৗʹʮͳ
ͥෆ҆ͳͷ͔ʯΛ͖ͭͭΊͯɺຊʹ΄͍͠ͷΛ࣮ ݱ͢Δɻ
ςετΞϯνύλʔϯ • աࣗಈԽ • ϞοΫਲ͍ • TDDෆཁ
ϞοΫਲ͍ • ϞοΫ : ςετରͷҰ෦ͰຊΛΘͣʹ ҙͷಈ࡞ͤ͞Δख๏ɻ • ςετͷϝϯςφϯεΛ͍ͯ͠Δഺ͕ɺϞο Ϋͷϝϯςφϯε͕ϝΠϯʹͳͬͨΓɺϓϩ μΫτίʔυͷίϐϖʹͳͬͨΓɻ
ϞοΫਲ͍ ίϯςΩετ • ςετͷ࣮ߦ͕͍࣌ؒɻ(DBWebAPIΛ ͍ͬͯΔ) • ҟৗͳঢ়ଶΛͭ͘Γ͍ͨɻ
ϞοΫਲ͍ ίϯςΩετ • DBWebAPIΛར༻͍ͯ͠Δ෦ΛϢχοτ ςετͰ͖ΔΑ͏ʹɺϞοΫΛར༻ͨ͠ɻ • ϞοΫରͷͲͷAPIΛԿճ࣮ߦ͔ͨ͠ݕࠪ ͢Δɻ • ߴͳϢχοτςετΛ࣮ݱͨ͠ɻ
ϞοΫਲ͍ ՝ • ϓϩμΫτίʔυ/ςετίʔυΛมߋ͢Δͨ ΊʹେྔͷϞοΫίʔυΛมߋ͠ͳ͚Ε͍ ͚ͳ͍ɻ • ϞοΫͱຊ͕ဃ͍͗ͯͯ͢͠ɺςετ͕ ৴༻Ͱ͖ͳ͍ɻ
ϞοΫਲ͍ ݪҼ1 • ϓϩμΫτίʔυ/ςετίʔυΛมߋ͢Δͨ ΊʹେྔͷϞοΫίʔυΛมߋ͠ͳ͚Ε͍ ͚ͳ͍ɻ • ϞοΫίʔυͷॏෳ͕ଟ͍ɻ • ϞοΫ͠ͳͯ͘ςετͰ͖Δͷ·ͰϞο
Ϋ͍ͯ͠Δɻ
ϞοΫਲ͍ ݪҼ2 • ϞοΫͱຊ͕ဃ͍͗ͯͯ͢͠ɺςετ͕৴༻ Ͱ͖ͳ͍ɻ • Φʔφʔ͕ҟͳΔϓϩμΫτʹରͯ͠ϞοΫ͠ ͍ͯΔͱɺόʔδϣϯΞοϓʹ͍͍͔ͭͯͳ͍ ͱ͍͚ͳ͍ɻ •
ϞοΫͱϞοΫର͕Ұக͍ͯ͠Δ͔ͷςετ Λ͍ͯ͠ͳ͍ɻ
ϞοΫਲ͍ ݪҼ2 • ςετͷͨΊʹϞοΫΛͭͬͯ͘ɺϞοΫ͕ ͍͋ͬͯΔ͔ͷͨΊʹςετΛͭͬͯ͘ɺɺɺ • ΊΜͲ͍͘͞ɻ
ϞοΫਲ͍ ݪҼ·ͱΊ • ϞοΫͨ͠Βͷલͷςετ͕ਐΉɻ͔Βͱ Γ͋͑ͣϞοΫͬͯ͠·͏ͱ͖͕͋Δɻ • ϞοΫͷઃܭΛૄ͔ʹ͕ͪ͠ɻ • ϞοΫ͕ਖ਼͍͔͠Λ֬ೝ͍ͯ͠ͳ͍ɻ
ϞοΫਲ͍ ରࡦ • ϞοΫͰςετߴԽ͢ΔͷͰͳ͘ɺςε τڥͷෳߏஙɺࢄ࣮ߦʹΑͬͯߴԽ ͢Δ • ϞοΫΛͲͷΑ͏ʹϝϯςφϯε͢Δ͔Λߟ ͑Δ
ςετΞϯνύλʔϯ • աࣗಈԽ • ϞοΫਲ͍ • TDDෆཁ
TDD(ςετۦಈ։ൃ)ෆཁ • TDD : ςετίʔυฤू -> ϓϩμΫτίʔυ ฤू -> ϦϑΝΫλϦϯά
Λ܁Γฦ͢ੳɺઃ ܭٕ๏ • TDDΔͷϢχοτςετΛ֮͑ΔͨΊ͘ Β͍ͷͷͰɺTDDͬͯ։ൃ͕Ճͯ͠ ͍ͳ͍ɻ
TDDෆཁ ίϯςΩετ • ෳࡶͳγεςϜͳͷͰςετ͕ͳ͍ͱਖ਼͍͠ มߋΛͰ͖ͳ͍ɻ • ͲΜͳಈ͖Λ͢Δͷ͔·ͬͨ͘Θ͔Βͳ͍ɻ • ͦ͜ͰTDDΛ͠ͳ͕ΒɺςετΛ֦ॆ͍ͯ͠ ͘ɻ
TDDෆཁ ίϯςΩετ • ϢχοτςετۃྗTDDͰ͕ͬͨςετ ՄೳͳઃܭΛ࠷ॳ͔ΒͰ͖ΔΑ͏ʹͳͬͨͷ Ͱɺ͏Βͳ͍͍ͯ͘ͱஅͨ͠ɻ • ϢχοτςετͷTDDΛ͠ͳͯ͘Ϣχοτ ςετ࣌ʹΘ͔ΔόάͰͳ͍͔Βɺ͏ Βͳ͍͍ͯ͘ͱஅͨ͠ɻ
TDDෆཁ ՝ • ͋ͱ͔Β࣮ߦ͢Δςετͷ͓͓͕͘ॏཁͳϢʔ εέʔεΛදݱ͍ͯ͠Δ͚Ͳɺϝϯςφϯε ͍͢͠ܗͰͷ͍ͬͯ͜ͳ͍ɻ • ͍͍ͨιϑτΣΞͰ͋Δ͔?Θ͔Δͷ͕ ͍ɻ
TDDෆཁ ݪҼ1 • ͦͯͦ͠ͷ෦͕ͬͱॏཁͳϢʔεέʔεΛ දݱ͍ͯ͠Δ͚Ͳɺϝϯςφϯε͍͢͠ܗͰͷ ͍ͬͯ͜ͳ͍ɻ • ͓͍ͯͨ͠΄͏͕͍͍ςετ͔Ͳ͏͔ޙʹ ͳΒͳ͍ͱΘ͔Βͳ͍ɻ •
׳Ε͍ͯͳ͍ͱͳ͔ͳ͔εΫϦϓςουʹ͢Δ ؾྗ͕Θ͔ͳ͍ɻ
TDDෆཁ ݪҼ2 • ͍͍ͨιϑτΣΞͰ͋Δ͔?Θ͔Δͷ͕ ͍ɻ • ࣮͔ͯ͠Β౷߹ςετɺγεςϜςετɺ ϢʔβϏϦςΟςετͱ͍͏ϓϩηε͕ී ௨ͩͱࢥ͍͜ΜͰ͍Δɻ
TDDෆཁ ݪҼ·ͱΊ • Test as Documentationͷײ͕֮ͳ͍ɻ • ৗʹΰʔϧΛҙࣝͨ͠։ൃ͕Ͱ͖ͳ͍ɻ • ςετݏ͚ͩͲɺςετࣗମΛվળ͢Δؾ
͕ͳ͍ɻ
TDDෆཁ ରࡦ • ཁٻ༷ςετίʔυͱܕͰ֬ೝ͢Δɻ • ࠷ॳʹςετͰ͜Μͳ͍ํ͕Ͱ͖ΔιϑτΣ Ξ͕΄͍͠ͱఆٛ͢Δ΄͏͕ɺظͱͷζϨΛͳ ͤ͘Δɻ • खಈͰ͍͍͔Βɺઌʹ͓͓·͔ͳςετέʔε
Λͭ͘Γ͡ΊͯɺϦϑΝΫλϦϯά͠ͳ͕Βͭ ͘Γ͜Ήɻ
Agenda • എܠ • ςετΞϯνύλʔϯ/Ξϯνύλʔϯͷର ࡦ • ؆୯ͳ·ͱΊ • QA
/ Discussion
͖ͬ͞·Ͱͷ·ͱΊ • ࣗಈԽΛ͢ΕେৎͳͷͰͳ͍ͷͰ͢ɻ ॏཁͳͷɺνʔϜϓϩμΫτͷʹ͋ ΘͤͨࣗಈԽͰ͢ɻ • ͳΜͱͳ͘ͰࣗಈԽ͢ΔݶΓͳΜͱͳ͘ͷ Ռ͔͑͠ΒΕͳ͍͠ɺͳΜͱͳ͘ΞδϟΠ ϧ͍ͬͯͯɺͳΜͱͳ͘ςετ͍ͬͯΔɻͬ ͯͳͬͯ͠·͍·͢ɻ
ͯ͞ɺkyon_mm? • ςετΛઃܭ͔ͯ͠Β࣮ࢪ͢Δ·Ͱͷ࣌ؒ 0.1h ͔Β 2.0h • ςετظؒͳ͠ • εϓϦϯτظؒ
2days • खಈςετΨγΨγΓ·͢
ͯ͞ɺkyon_mm? • ࣗಈςετBDD෩ʹهड़͍ͯ͠·͢ɻ • खಈςετIgnoreͳࣗಈςετͱͯ͠ɺ WikiʹBDD෩ʹهड़͍ͯ͠·͢ɻ • ͦͦςετΛݮΒ͢ɻͲ͏͢Ε࠷খͷς ετͰϦϦʔεͰ͖Δͷ͔ɻ
Agenda • എܠ • ςετΞϯνύλʔϯ/Ξϯνύλʔϯͷର ࡦ • ؆୯ͳ·ͱΊ • QA
/ Discussion
QA
·ͱΊ • ཧʹۙ͘ʹྗ͕ඞཁͰ͢ɻ • ͷલͷࣄΛղܾ͢Δ͜ͱ͚ͩʹनΘΕͯ ͍͚·ͤΜɻνʔϜͱϓϩμΫτΛͲͷΑ ͏ʹ͍ͤͯ͘͞ͷ͔ɺৗʹঢ়گʹԠͯ͡ มԽ͢Δ͜ͱ͕େͰ͢ɻ • ॱԠ͢Δ͜ͱ͕ΞδϟΠϧͰ͔͢ΒͶɻ