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
受け入れテスト駆動開発で不確実性に段階的に対処する/Addressing Uncertaint...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Culvert
May 18, 2024
Technology
5
1.7k
受け入れテスト駆動開発で不確実性に段階的に対処する/Addressing Uncertainty Incrementally with Acceptance Test-Driven-Development
スクラムフェス新潟2024の発表資料です。
Culvert
May 18, 2024
Tweet
Share
More Decks by Culvert
See All by Culvert
動作する読みやすいE2Eを目指して/Aim for readable E2E
culvert
1
160
ソフトウェアの設計を学び、メンテナンスしやすいテストを作ろう / Learn software design, Create tests that are easy to maintain
culvert
3
2.7k
私が経験したアジャイルテスト
culvert
4
1.5k
NaITE__32_First_ML.pdf
culvert
0
410
naite31_jstqb_tm
culvert
0
550
地域の子どもを地域で育てる
culvert
0
230
モヤモヤと向き合う
culvert
0
590
デブサミに行ってきた話
culvert
0
150
Other Decks in Technology
See All in Technology
[CV勉強会@関東 World Model 読み会] Orbis: Overcoming Challenges of Long-Horizon Prediction in Driving World Models (Mousakhan+, NeurIPS 2025)
abemii
0
140
Introduction to Bill One Development Engineer
sansan33
PRO
0
360
CDK対応したAWS DevOps Agentを試そう_20260201
masakiokuda
1
290
Embedded SREの終わりを設計する 「なんとなく」から計画的な自立支援へ
sansantech
PRO
3
2.5k
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
450
Greatest Disaster Hits in Web Performance
guaca
0
250
茨城の思い出を振り返る ~CDKのセキュリティを添えて~ / 20260201 Mitsutoshi Matsuo
shift_evolve
PRO
1
280
プロポーザルに込める段取り八分
shoheimitani
1
270
ZOZOにおけるAI活用の現在 ~開発組織全体での取り組みと試行錯誤~
zozotech
PRO
5
5.5k
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
470
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
120
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
240
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Music & Morning Musume
bryan
47
7.1k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.1k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
280
Designing for Timeless Needs
cassininazir
0
130
How to Ace a Technical Interview
jacobian
281
24k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
240
SEO for Brand Visibility & Recognition
aleyda
0
4.2k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
940
Information Architects: The Missing Link in Design Systems
soysaucechin
0
770
Transcript
受け入れテスト駆動開発で 不確実性に段階的に対処する 2024/5/11 スクラムフェス新潟
2 ・「よくある用語」をチーム独自のニュアンスで用いる場合があります。 あらかじめご了承ください。 注意事項
3 藤原 考功(Takanori Fujiwara) ・株式会社ユーザベースの社員(テストエンジニア) ・JSTQB(Japan Software Testing Qualification Board)技術委員
・XP祭り実行委員 自己紹介
4 ・前職以前:手動テストがメイン、最後にまとめてテスト ・現職:自動テストがメイン、常に継続的にテスト 私自身の、テストへの関わり方の変遷
5 ベイビーステップでの継続的な開発活動 & 私なりの感想 今日お話しすること
不確実性 | 01 | 6
7 ・計画 が 変わらない こと この発表における「確実」
8 ・一度決めた計画は高確率で変わらない 不確実性が低い場合 新潟 自宅
9 ・計画がどんどん変わる 不確実性が高い場合 新潟 越後湯沢 あっち こっち そっち
10 ・SaaS(Software as a Service)事業 ・経済情報によって、ビジネスをする人々をアシストするサービス 私たちのビジネスについて https://www.uzabase.com/jp/about/
11 ・計画に従うことよりも変化への対応を 不確実性への対処 https://agilemanifesto.org/iso/ja/manifesto.html
12 ・ちょっとずつ進むやり方 ベイビーステップ
受け入れテスト駆動開発 | 02 | 13
14 ・受け入れテスト ・テスト駆動開発 受け入れテスト駆動開発
15 ・「何ができたら完成と言えるのか」をテストに落とし込んだもの ・開発チームが実施するテスト この発表における「受け入れテスト」
16 ・「動くものを少しずつ作りながら綺麗にする」プラクティス ・最初にユーザーストーリーをバックログとして積む ・ユーザーストーリーを選んで失敗する受け入れテストを1件だけ書き、 続いて設計と実装をする (Red→Green→Refactorの順序を守る) ・受け入れテストがすべて合格になったら、そのユーザーストーリーは完了 ・ユーザーストーリーを倒したら、 バックログを見直したうえで次のユーザーストーリーに取り掛かる
この発表における「テスト駆動開発」
17 開発活動の入れ子構造 受け入れテスト ユニットテスト ユーザーストーリー
開発の流れ | 03 | 18
19 ・ユーザーは「酒-WEB」画面で、分類を指定して検索すると、 お酒の銘柄と、その銘柄に関する最新のニュースを見ることができる ユーザーストーリーを選ぶ
20 受け入れテストの例
21 ・画面上の要素をAssertするテストコードを書く ・自然言語で記述した受け入れテストと紐付ける (私たちの場合は、GaugeとSelenideを採用) 受け入れテストを自動テストにする
22 紐付けの例
23 受け入れテストができたぞ!
24
25 受け入れテストの例(ベイビーステップ違反)
26 受け入れテストの例(ベイビーステップ)
27 ・受け入れテストが想定通りRedになったら実装に移ります 受け入れテストの作成完了
28 アーキテクチャーの例 酒-WEB 酒-BFF(※) 酒-API 銘柄 API 酒ニュース API ※BFF
: Backend For Frontend ・一気に実装だ!
29
30 ・テスト対象を1つずつ倒す ・実装は、失敗するユニットテストを起点としたTDDで進める ここでもベイビーステップ 酒-WEB 受け入れ テスト 実装 ↑まずはここだけ! Red
Refac tor Green
31 ・テスト対象を1つずつ倒す BFFやAPIも要領は同じ 酒-BFF テスト 実装 ←今はここだけ! 酒-API ←今はここだけ! テスト
実装
32 BFFやAPIのテストの例
33 外側から内側に向かって開発する 酒-WEB 酒-BFF(※) 酒-API 銘柄 API 酒ニュース API ※BFF
: Backend For Frontend 受け入れ テスト 実装 テスト 実装 テスト 実装 テスト 実装
34 外側から内側に向かって開発する 酒-WEB 酒-BFF(※) 酒-API 銘柄 API 酒ニュース API ※BFF
: Backend For Frontend 全体 E2E テスト 実装 個別 E2E テスト 実装 実装 実装 個別 E2E テスト 個別 E2E テスト
・全て本物を使った状態で 受け入れテストがGreenになればOK ・全体を通すので、私たちは 全体E2Eテストと呼んでいます 35 最後の仕上げ 酒-WEB 酒-BFF 酒-API 銘柄
API 全体 E2E テスト
36 ・個別E2Eテスト ・全体E2Eテスト ・リグレッションテスト CIで実行するテスト
37 ・人の目でないと気づけないことを探す ・自動テストの補足的な立ち位置になることが多い 手動テストについて
個人の感想 | 04 | 38
39 ・ベイビーステップは精神衛生上とても良い ・変化への対応が容易 ・テスト対象の分析が容易 受け入れテスト駆動開発について
40 ・ベイビーステップのネガティブな面 ・変化についていくことはしんどい ・意識的に全体を見ないと失敗する 受け入れテスト駆動開発について
41 ・受け入れテストを書くハードルは低いと感じた (従来の働き方の延長でこなせた) ・ユニットテストは難しかった (DDDなどの設計理論を理解する必要があった) ・CIは道半ば (kubernetesが難しい) 手動テスト業務歴の長い私が受け入れテスト駆動開発に関わってみた結果
42 ・手動テストが少ないのはちょっと寂しい ・手動テストをすると、ソフトウェアの使い方を学びやすい (手動テストがソフトウェアを学習する手段を兼ねていたことを自覚した) 手動テスト業務歴の長い私が受け入れテスト駆動開発に関わってみた結果
43 ・ぜひ皆さんとお話ししたいです! 最後に