$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
フロントエンドのテストコード何を書くか
Search
Watanabe Yuito
February 24, 2024
Technology
0
77
フロントエンドのテストコード何を書くか
Watanabe Yuito
February 24, 2024
Tweet
Share
More Decks by Watanabe Yuito
See All by Watanabe Yuito
異世界転生したら俺の「JavaScriptランタイム」がアイドルになっていた件
wwwy
0
12
推しの Serverless DB について語りたい
wwwy
0
150
ケモインフォマティクス
wwwy
0
39
Other Decks in Technology
See All in Technology
NIKKEI Tech Talk #41: セキュア・バイ・デザインからクラウド管理を考える
sekido
PRO
0
200
SQLだけでマイグレーションしたい!
makki_d
0
1.2k
Agent Skillsがハーネスの垣根を超える日
gotalab555
6
4k
20251203_AIxIoTビジネス共創ラボ_第4回勉強会_BP山崎.pdf
iotcomjpadmin
0
130
Snowflake導入から1年、LayerXのデータ活用の現在 / One Year into Snowflake: How LayerX Uses Data Today
civitaspo
0
2.3k
子育てで想像してなかった「見えないダメージ」 / Unforeseen "hidden burdens" of raising children.
pauli
2
320
"人"が頑張るAI駆動開発
yokomachi
1
110
Microsoft Agent Frameworkの可観測性
tomokusaba
1
100
事業の財務責任に向き合うリクルートデータプラットフォームのFinOps
recruitengineers
PRO
2
190
2025-12-18_AI駆動開発推進プロジェクト運営について / AIDD-Promotion project management
yayoi_dd
0
150
LayerX QA Night#1
koyaman2
0
250
Amazon Quick Suite で始める手軽な AI エージェント
shimy
1
1.7k
Featured
See All Featured
Between Models and Reality
mayunak
0
150
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
170
AI: The stuff that nobody shows you
jnunemaker
PRO
1
12
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
510
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
How Software Deployment tools have changed in the past 20 years
geshan
0
30k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
BBQ
matthewcrist
89
9.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
6.7k
Site-Speed That Sticks
csswizardry
13
1k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
0
130
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