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
ミカイ
November 07, 2024
0
5
フロントエンドテスト導入は 「ストーリー」 を意識しよう
akihabara.any #2【ノンジャンル技術系LTイベント】
2024/11/7
https://akihabara-any.connpass.com/event/333420/
ミカイ
November 07, 2024
Tweet
Share
More Decks by ミカイ
See All by ミカイ
目標は「めいそう」が大事。漢字はどう書く?
junmikai
2
11
技術選定で迷ったら『日常』を思い出そう! 〜考え方の新発見〜
junmikai
0
51
今年最も「覚醒」したコーディングテストの舞台裏
junmikai
0
8
フリーランスから正社員に戻ったお話し
junmikai
0
9
面接で価値観が変わった件
junmikai
0
12
SQLを克服する1冊
junmikai
0
4
美と機能のバランス ~フロントエンジニアに必要なUI・UXセンス~
junmikai
0
3
React.jsの キャッチアップは 「取捨選択」が9割
junmikai
0
9
スルメとガムで考えるキャリア論.pdf
junmikai
0
5
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
49k
Building Adaptive Systems
keathley
38
2.3k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Fireside Chat
paigeccino
34
3.1k
Docker and Python
trallard
41
3.1k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.3k
Agile that works and the tools we love
rasmusluckow
328
21k
Writing Fast Ruby
sferik
628
61k
The Pragmatic Product Professional
lauravandoore
32
6.3k
What's in a price? How to price your products and services
michaelherold
243
12k
Automating Front-end Workflow
addyosmani
1366
200k
Raft: Consensus for Rubyists
vanstee
137
6.7k
Transcript
フロントエンドテスト導入は 「ストーリー」 を意識しよう 三海 純(ミカイジュン)
ミカイ ジュン • フリーランスエンジニア • 趣味: もくもく会、アニメ、ネット麻雀(雀魂)
• 好きな有名人 ◦ 後藤 ひとり ◦ 陸八魔アル ◦ 千早 愛音 ◦ 八木 唯
キャリア • 2020年 ~ 2022年 ◦ 正社員: フロントエンドエンジニア
• 2022年 ~ 2023年 ◦ 正社員: フロントエンド&バックエンドエンジニア • 現在(2024年) ◦ フリーランス: Next.js など設計&開発 • 来年(2025年 ~) ◦ 株式会社ゆめみ 正社員として入社予定
こんな話ありませんか? • フロントエンドのテストコード書く時間が あったら追加開発、改善したい • フロントエンドのテストで何を導入していい かわからない
今回は・・・ 難しい話は抜きにして ストーリー形式で 楽しくテストコードの メリットを紹介!
補足 テストを書くことが目標になっている時点で は、おそらく『今』はフロントエンドのテストを 導入するフェーズないと思う
Storybook (UIコンポーネントテスト)
export const Default: Story = { play: async ({ canvasElement,
step }) => { const canvas = within(canvasElement); const checkbox = await canvas.findByRole("checkbox"); await step("checkboxクリックでチェックがつくこと ", async () => { await userEvent.click(checkbox); await expect(checkbox).toHaveAttribute("aria-checked", "true"); }); }, }; こんなテストコード
Storybookでテスト必要なシーン 開発初期で 「このコンポーネントずっと使いそう」 と思った時
テストを書かなかった ストーリーをご覧ください
1ヶ月目:リリース準備 突然、クライアントから「チェックボックスがチェックされて いない時、ちゃんとエラーメッセージが出ない!」との報告 が。 バリデーションが発火しないバグが潜んでいた!焦りなが ら修正に取りかかるも、他のコードをいじったことで予期せ ぬ不具合がどんどん出現
2ヶ月目:追加機能の実装 今度はフォームに複数のチェックボックスを追加すること に。 「同じコンポーネントだから、簡単にいけるでしょ」と思いき や、またもや未チェック時のエラー表示が効かないどこを 直せばいいか全く分からない。
3ヶ月目:保守フェーズ 新たに加わったメンバーが「チェックボックス、どうなってま す?」と質問。 テストがないため仕様確認やバグ再現に手間取る。「あの 時、テストを書いてさえいれば…」と後悔するも、すでに遅 く、毎回リリース前に手動で大量のチェックを繰り返す羽目 に。
こうならないためにも・・・ 長期的なプロダクト開発になるのであればできるだけ早い 段階でStorybookでテストコードを導入しよう! 逆に言えば、すでにプロダクトが出来上がっていて保守運 用しない場合は他のテストの方がいいかも
Playwright
test.describe("UI操作の確認", () => { test("チェックボックスをクリックするとラベルが表示されるか確認 ", async ({ page, })
=> { await page.getByLabel("ラベル1").click(); await page.getByLabel(PREFECTURES.AOMORI).dblclick(); const label = await page.getByLabel("ラベル1"); await expect(label).toBeVisible(); }); }); こんなテストコード
Playwright でテスト必要なシーン 機能が増えて手動テストが多くなり、 開発サイクルに負担が かかり始めたタイミング
テストを書かなかった ストーリーをご覧ください
リリースして半年後 機能が増え、ユーザー認証やフォーム送信、ダッシュボー ドのリアルタイム更新などの複雑な操作が増加。手動テス トはどんどん煩雑になり、作業負荷が急増。「毎回ログイ ンして全機能を手動で確認するのは限界…」という声が漏 れ始める
機能追加リリース直前の大混乱 本番リリースを目前に、手動テストに追われる日々。新し いチェックボックス機能に不具合が発覚し、修正のたびに 他の部分が壊れる状況に。 リリース後、ユーザーから「チェックボックスが動かない」 「ダッシュボードが更新されない」などのクレームが殺到。
こうならないためにも・・・ 長期的なプロダクト開発になるとわかった段階で Playwrightでテストコードを導入しよう! 逆に言えば、1stリリース直後の機能がシンプルな状態の 時は他のテストの方がいいかも
いつ書くか? • Storybook ◦ コンポーネントの設計時にテストを書き始める のが理想 • Playwight
◦ 機能が安定し、複雑なフローが増えてきたタ イミング
具体例 • Storybook ◦ 初期のUI設計段階で、コンポーネントがデザインや要件に 合っているかを確認したい時 • Playwight
◦ 手動テストの負担が増えた時。UIの操作フローが複雑化して きた段階で、自動テストに移行することで開発効率を維持し たい時
結論 プロダクトの「課題」が生まれた時に フロントエンドのテストコードが 必要かもしれない
ご清聴ありがとうござ います!