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
フロントエンドのテストコード何を書くか
Search
Watanabe Yuito
February 24, 2024
Technology
0
75
フロントエンドのテストコード何を書くか
Watanabe Yuito
February 24, 2024
Tweet
Share
More Decks by Watanabe Yuito
See All by Watanabe Yuito
異世界転生したら俺の「JavaScriptランタイム」がアイドルになっていた件
wwwy
0
6
推しの Serverless DB について語りたい
wwwy
0
150
ケモインフォマティクス
wwwy
0
38
Other Decks in Technology
See All in Technology
Wasmの気になる最新情報
askua
0
180
ストレージエンジニアの仕事と、近年の計算機について / 第58回 情報科学若手の会
pfn
PRO
3
550
会社を支える Pythonという言語戦略 ~なぜPythonを主要言語にしているのか?~
curekoshimizu
3
630
OCIjp_Oracle AI World_Recap
shinpy
1
170
[2025年10月版] Databricks Data + AI Boot Camp
databricksjapan
1
250
Digitization部 紹介資料
sansan33
PRO
1
5.7k
AWS DMS で SQL Server を移行してみた/aws-dms-sql-server-migration
emiki
0
170
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
20k
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
9k
Dylib Hijacking on macOS: Dead or Alive?
patrickwardle
0
460
Databricks AI/BI Genie の「値ディクショナリー」をAmazonの奥地(S3)まで見に行く
kameitomohiro
1
400
From Natural Language to K8s Operations: The MCP Architecture and Practice of kubectl-ai
appleboy
0
170
Featured
See All Featured
Gamification - CAS2011
davidbonilla
81
5.5k
Producing Creativity
orderedlist
PRO
347
40k
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
Context Engineering - Making Every Token Count
addyosmani
8
300
How STYLIGHT went responsive
nonsquared
100
5.8k
GitHub's CSS Performance
jonrohan
1032
470k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Docker and Python
trallard
46
3.6k
The Cult of Friendly URLs
andyhume
79
6.6k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
A Tale of Four Properties
chriscoyier
161
23k
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