Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
フロントエンドのテストコード何を書くか
Search
Watanabe Yuito
February 24, 2024
Technology
81
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
フロントエンドのテストコード何を書くか
Watanabe Yuito
February 24, 2024
More Decks by Watanabe Yuito
See All by Watanabe Yuito
2026 opendata lt
wwwy
0
10
異世界転生したら俺の「JavaScriptランタイム」がアイドルになっていた件
wwwy
0
31
推しの Serverless DB について語りたい
wwwy
0
160
ケモインフォマティクス
wwwy
0
44
Other Decks in Technology
See All in Technology
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
2.6k
beyond jj: config & tools ecosystem
indirect
0
5.6k
CLIライブラリ開発を支える技術
htnabe
0
140
あけおめLINE 傾向とその対策
nasa9084
0
180
Genieを崇めよ
kameitomohiro
0
170
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
What the customer really needed
kawaguti
PRO
3
210
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
9
1k
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
2
990
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
積み重なった技術負債への挑戦 〜初手としての全社ゴト化〜
techtekt
PRO
0
1.4k
ADKで始める業務改善 - AIエージェント開発時の考えと設計
harappa80
2
250
Featured
See All Featured
Writing Fast Ruby
sferik
630
63k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
250
WCS-LA-2024
lcolladotor
0
830
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
710
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
530
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
700
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
530
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Google's AI Overviews - The New Search
badams
0
1.6k
Utilizing Notion as your number one productivity tool
mfonobong
4
590
Transcript
フロントエンドのテストコード何を書くか 梅田LT @www_yto
自己紹介 @www_yto(watanabe yuito) フロントエンドエンジニア SaaS の開発 React, Next.js, TypeScript フロントエンドのテストコード何を書くか
@www_yto
話したいこと フロントエンドのテスト不要説 テストの対象/レベル/種類 どこに張るか フロントエンドのテストコード何を書くか @www_yto
フロントエンドのテスト不要説 フロントエンドのテストコード何を書くか @www_yto
テスト不要の考え フロントエンドはクリーンアーキ テクチャで言う所の一番外側 ドメインがない テスト対象(≒ ドメイン)が存在しな い/ROI が低い フロントエンドのテスト不要説 @www_yto
テストはドメインに対して書きたい フロントエンドにはドメインがない フロントエンドのテスト不要説 @www_yto
ドメインとは 知識、影響力、または活動の領域。 ユーザーがプログラムを適用する対象エリアは、ソフトウェアのドメインである。 A sphere of knowledge, influence, or activity.
The subject area to which the user applies a program is the domain of the software. —Eric Evans フロントエンドのテスト不要説 @www_yto
> ユーザーがプログラムを適用する対象エリア ユーザーがブラウザ上で操作する UI ユーザーが入力するフォームやデータ ユーザーが発生させるイベントやアクション ユーザーが経験する画面遷移と情報表示の流れ フロントエンドのテスト不要説 @www_yto
フロントエンドにはドメインがない UI 操作フローのデザイン 表示状態の遷移 フロントエンドのテスト不要説 @www_yto
フロントエンドのドメイ ン ユーザーの操作と状態管理 WEB フロントエンドにおけるソフ トウェア設計の考察 フロントエンドのテスト不要説 @www_yto
フロントエンドのドメイン ui = f(state) フロントエンドのテスト不要説 @www_yto
ドメインに対してテストを書きたい! 何を? どこに? どのレベルで? フロントエンドのテスト不要説 @www_yto
テストの対象/レベル/種類 @www_yto
テストの対象 1. ライブラリが提供する関数 2. ロジックを担う関数 3. UI を表現する関数 4. Web
API クライアント 5. API サーバー 6. DB サーバー テストの対象/レベル/種類 @www_yto
テスト種類 1. 機能テスト 2. 非機能テスト 3. ホワイトボックステスト 4. リグレッションテスト テストの対象/レベル/種類
@www_yto
テストレベル 1. 静的テスト(Static) typo や型エラー 2. ユニットテスト(Unit) 依存関係を持たない 3. 結合テスト(Integration)
複数の unit を統合。(できるだけモックを使用しない) 4. E2E テスト(End to End) モックを使用しない テストの対象/レベル/種類 @www_yto
トレードオフ 壊れやすさ 速さ 信頼性 テストの対象/レベル/種類 @www_yto
どこに張るか @www_yto
(再掲)フロントエンドの ドメイン ユーザーの操作と状態管理 WEB フロントエンドにおけるソフ トウェア設計の考察 どこに張るか @www_yto
静的テスト ドメインのテストはできない 単体テスト 適切に呼び出されているかわからな い https://x.com/erinfranmc/status/1 148986961207730176?s=20 E2E テスト 壊れやすい
どこに張るか @www_yto
統合テスト ユーザー操作(ユースケース)を網羅でき る テスティングトロフィー https://www.testingjavascript.co m/ どこに張るか @www_yto
統合テスト例 1. セレクトボックスの操作する 2. URL の検索クエリが変化する 3. 検索クエリの変化により、データ取得 API が呼ばれる
4. 一覧表示内容が更新される どこに張るか @www_yto
まとめ フロントエンドにもドメインはある ユーザーの操作 状態管理 統合テストを厚く書く ユーザー操作を網羅 信頼性,スピード,コストのトレードオフのバランスが良い フロントエンドのテストコード何を書くか @www_yto
参考 WEB フロントエンドにおけるソフトウェア設計の考察 フロントエンドアプリケーションの静的、単体、結合、E2E テスト Write tests. Not too many.
Mostly integration. Clean Architecture フロントエンド開発のためのテスト入門 今からでも知っておきたい自動テスト戦略の必 須知識 フロントエンドのテストコード何を書くか @www_yto