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
ryounasso
January 11, 2024
Programming
510
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
テストゼロの個人開発プロジェクトにテストを導入した話
ryounasso
January 11, 2024
More Decks by ryounasso
See All by ryounasso
明日から始めるリファクタリング
ryounasso
0
280
駆け足で Google から学ぶテスト設計の指針
ryounasso
0
220
React inside basics: learn from “build own react"
ryounasso
0
240
抽象データ型について学んだ
ryounasso
0
460
開発効率向上のためのリファクタリングの一歩目の選択肢 ~コード分割~ / JJUG CCC 2024 Fall
ryounasso
0
4.2k
Clean Architecture by TypeScript & NestJS
ryounasso
0
1.2k
Fast API を用いた Web API の開発
ryounasso
1
630
簡易 DI コンテナを作って DI コンテナを知る
ryounasso
1
1.4k
TypeScript_コンパイラの内側に片足を入れる
ryounasso
3
1.1k
Other Decks in Programming
See All in Programming
ソフトウェアラスタライザ
fadis
0
170
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
440
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
5
490
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
170
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.9k
これって Effect でできたのでは? / TSKaigi Mashup Kansai #2
susisu
0
250
不幸な GC
chencmd
0
300
「つくるAI」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
120
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
160
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
230
Dockerfile CMD for Node.js
grazie1999
0
110
Hono + Inertia + React で LP を構築した話
oukayuka
2
110
Featured
See All Featured
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
500
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
370
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Site-Speed That Sticks
csswizardry
13
1.5k
Music & Morning Musume
bryan
47
7.3k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
410
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
280
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Chasing Engaging Ingredients in Design
codingconduct
0
280
Transcript
テストゼロの 個人開発プロジェクトに テストを導入した話 ryounasso
テストコードが存在しなかった個人開発プロジェクト 個人開発で Web アプリを作成 利用者はほぼ自分のみ、致命的なバグがない限りは問題になりづらい → テストコードを書かずに開発を続けてきた しかし、時々予想していなかった部分で意図していない挙動をするケースがあった 提供済みの機能が正しく機能していることを事前に確認できるようにしたい 欲しいものを欲しいままに創っている個人開発
| Qiita https://qiita.com/ryounasso/items/0df8c1e42dde97a9dbf2
テストを書く障壁 - テストを書く習慣がなく、どのように書けばいいかわからない - テスト書く時間より、新機能の追加を...
テストを書く障壁 - テストを書く習慣がなく、どのように書けばいいかわからない → 後述の進め方でハードルを少し下げる - テスト書く時間より、新機能の追加を... → 冬休みの期間にチャレンジすることでカバー!
リリース済みの機能をリストアップ まずリリース済みの機能をリストアップし、テスト対象を把握 上記以外にもあり、思ったより対象機能があった
闇雲に書くのではなく、適切なテストを 「範囲」と「目的」の組み合わせを理解して、適切なテストを書いていくことが重要だと学習 https://testingjavascript.com/ Unit Test モジュール単体が提供する機能に着目 コーナーケースの検証に向いている Integration Test 複数モジュールが連動する機能に着目
複数のモジュールが適切に動作し、予期した機能を 提供するか確認 End to End Test 外部ストレージや連携するサブシステムを含むテスト
闇雲に書くのではなく、適切なテストを 機能テスト 意図した通りに機能が使えるかテストする フロントエンドにおいてはインタラクションテストが主になる 非機能テスト 機能要件以外の要素に関するテスト フロントエンドではアクセシビリティがよく例で挙がる ビジュアルリグレッションテスト 見た目のリグレッションが発生していないかを確認するテスト 「範囲」と「目的」の組み合わせを理解して、適切なテストを書いていくことが重要だと学習
闇雲に書くのではなく、適切なテストを 今回の動機 : 提供済みの機能が正しく機能していることを事前に確認できるようにしたい Integration テストを拡充し、機能テストを目的とする
一つの機能でカバーする範囲をまず広げる 方針として、まず 1 つの機能のテストを充実させることに - 環境構築が終わる - テストの例を作ることができる - テストを書く際の観点のコツを掴むことができる
→ 結果、全体のテスト導入のスピードが上がる テストの障壁の 1 つ目を 改善
Storybook を使用 Storybook とは UI コンポーネントを一覧表示したり、実際の見た目や動作のプレビューが可能 また、テストツールとして使用も可能 Storybook を選んだ理由 -
実際の UI を確認しながらテストを実装できる - test-runner で CLI や CI でテストを実行することができる - VRT も実装することができる - アクセシビリティの確認も可能 (@storybook/addon-a11y)
Storybook を使用
test-runner とは Storybookの各ストーリーをテストケースに変換し、実行するためのツール test-runner を用いることで CLI や CI でテスト実行が可能に CI
で自動化 → 変更を加えた際に、Story が壊れていないか確認が可能に!
まとめ テストゼロの個人開発プロジェクトにテストを導入した Storybook を活用することで、目的を達成することができた 感じているメリット - 今後、テストコードを拡充するためのベースを作れた - リファクタリングが行いやすくなった
参考資料 - StorybookでMock Service Worker (MSW) を使えるようにする。 https://zenn.dev/rabbit/articles/dd9b04940b93fe - Run
against non-deployed Storybooks https://storybook.js.org/docs/writing-tests/test-runner#run-a gainst-non-deployed-storybooks - Interaction tests | Storybook https://storybook.js.org/docs/writing-tests/interaction-testing
None