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
Culvert
May 18, 2024
Technology
1.8k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
受け入れテスト駆動開発で不確実性に段階的に対処する/Addressing Uncertainty Incrementally with Acceptance Test-Driven-Development
スクラムフェス新潟2024の発表資料です。
Culvert
May 18, 2024
More Decks by Culvert
See All by Culvert
動作する読みやすいE2Eを目指して/Aim for readable E2E
culvert
1
180
ソフトウェアの設計を学び、メンテナンスしやすいテストを作ろう / Learn software design, Create tests that are easy to maintain
culvert
3
2.8k
私が経験したアジャイルテスト
culvert
4
1.5k
NaITE__32_First_ML.pdf
culvert
0
430
naite31_jstqb_tm
culvert
0
580
地域の子どもを地域で育てる
culvert
0
250
モヤモヤと向き合う
culvert
0
610
デブサミに行ってきた話
culvert
0
160
Other Decks in Technology
See All in Technology
synctest時代のhttptest Go 1.27で変わるHTTPサーバテストの裏側 / go conference2026 synctest and httptest
budougumi0617
0
120
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
150
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
1
360
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
PRO
1
300
PM領域でのAI Agentの活用
lycorptech_jp
PRO
0
280
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
120
生成AIのテナント制御とシャドーMCP対策 | AIを"止めずに"、情報を守る
yukun
0
120
Bet AI Day 2026丨バクラク Autopilot、業務システムの再設計
layerx
PRO
2
1.6k
Bet AI Day 2026丨How We Bet AI: AIとともに働く場をつくる
layerx
PRO
2
2.8k
Sony-DroidKaigi2026
sony
1
390
GoにおけるFFIのこれまでとこれから
goccy
1
530
When Does a Local Qwen Start to Break
morshoto
0
190
Featured
See All Featured
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
320
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
430
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
990
Odyssey Design
rkendrick25
PRO
2
800
WENDY [Excerpt]
tessaabrams
12
39k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
400
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
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 ・ぜひ皆さんとお話ししたいです! 最後に