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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
DDDのエッセンスを取り入れたAIでの開発
ak2ie
0
170
システム思考で問題に対処する
yussak
0
360
社内の7割が使うデータ基盤を、 データチーム2人で回すためにやったこと
koh_yoshi
4
1.5k
ホームラボ紹介
y_sera15
0
220
Bits Agent Builder の⼊⾨と活⽤事例
nulabinc
PRO
0
250
AI-DLC実践録_フルサイクル開発への挑戦
miyuc
0
310
コーチングの奥義 何もしないテクニック
jinwatanabe
0
140
案件に一番詳しいAIを Amazon Bedrock AgentCore で作る ― 知見が知見を生むチームへ / Compounding Knowledge with AgentCore
yusukeshimizu
1
160
猫付きpingコマンドを自作
uyuki234
0
270
私がブラウザを自作したくなった理由
supurazako
1
270
tamachi.go 誕生の裏側
rymiyamoto
1
180
[potatotips #96] Give Your AI Agent the Flutter Playbook
korodroid
0
120
Featured
See All Featured
Crafting Experiences
bethany
1
260
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
620
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How STYLIGHT went responsive
nonsquared
100
6.2k
A better future with KSS
kneath
240
18k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
RailsConf 2023
tenderlove
30
1.5k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
440
Technical Leadership for Architectural Decision Making
baasie
3
510
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 ・ぜひ皆さんとお話ししたいです! 最後に