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
受け入れテスト駆動開発で不確実性に段階的に対処する/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
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
420
naite31_jstqb_tm
culvert
0
570
地域の子どもを地域で育てる
culvert
0
240
モヤモヤと向き合う
culvert
0
600
デブサミに行ってきた話
culvert
0
150
Other Decks in Technology
See All in Technology
ルール・ロール・ツールを創る / Creating Rules, Roles and Tools
ks91
PRO
0
170
『家族アルバム みてね』における インシデント対応との向き合い方 / Approach incident response in Family Album
kohbis
2
190
Python開発環境にハーネス適用を検討する
yuuka51
1
510
TROCCOで始めるクラウドコストを民主化するためのFinOps
tk3fftk
1
150
データ基盤構築・運用の現場から 〜 Snowflake Intelligence 導入で変わった、データ活用の未来 〜
wonohe
0
180
「使われるデータ基盤」を目指してデータアナリストとワークショップをやった話
jackojacko_
2
860
GitHub Copilot のこれまでとこれから: From Copilot to Collaborative Agents
yuriemori
1
190
AI時代に改めて考える、ドメイン駆動設計 - モデリングが「AIへの共通言語」になる
littlehands
7
2.4k
TypeScriptはどのようにどこまで推論できるのか ─ とにかく as は禁止で
ypresto
3
420
食べログのサーキットブレーカー導入を振り返って
atpons
0
110
コーポレートサイトのアクセシビリティ改善とJIS準拠への実践
lycorptech_jp
PRO
2
140
AIが変えた"品質の守り方"
kkakizaki
11
3.3k
Featured
See All Featured
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
It's Worth the Effort
3n
188
29k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.6k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
250
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
190
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
220
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
340
Scaling GitHub
holman
464
140k
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 ・ぜひ皆さんとお話ししたいです! 最後に