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
570
地域の子どもを地域で育てる
culvert
0
250
モヤモヤと向き合う
culvert
0
610
デブサミに行ってきた話
culvert
0
160
Other Decks in Technology
See All in Technology
「ミスを許さない手順書」を作ってみた 〜 個人的にはこれ以上できることはあまりなさそう/20260827-ssmjp-operation-procedure-update
opelab
14
13k
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.3k
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3.2k
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
1
890
APIセキュリティを組織で実現するには~注力する点と設計・実装に入れたい対策~
riiimparm
2
750
現場の暗黙知を継承するAIエージェント — 対話から生まれる長期記憶と Skills
atsukish
0
160
サーバー常駐型の 簡易障害調査AI エージェントを作ってみた話
masayoshi
1
410
サービス内で複数のOP・ASを連鎖させる(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
370
AI駆動開発はどこまで来たのか? ファインディの最新実態調査で読み解く現在地 Devin Con Tokyo
akiratom
4
2k
最新技術に積極チャレンジ!EKS共通基盤のこれまでとこれから
daitak
0
250
Cloudflare製品を活用した AIガバナンス実践入門 / AI governance with Cloudflare Service
delta_tech
1
120
Digital Credentials API × OpenID4VP ブラウザ完結型本人確認の実装知見(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
350
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
225
10k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Music & Morning Musume
bryan
47
7.3k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
Color Theory Basics | Prateek | Gurzu
gurzu
0
440
30 Presentation Tips
portentint
PRO
1
380
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
410
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
550
Done Done
chrislema
186
16k
How to Talk to Developers About Accessibility
jct
2
530
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 ・ぜひ皆さんとお話ししたいです! 最後に