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
Ibuki Yoshinaga
December 20, 2022
160
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
懺悔-テストを何一つ書いていませんでした-
俺の懺悔2022
Ibuki Yoshinaga
December 20, 2022
More Decks by Ibuki Yoshinaga
See All by Ibuki Yoshinaga
テーブル全部消しちゃった笑 -ヒヤリハットから学ぶ当事者のメンタルと鎮火方法-
yoshinagaiwnl
0
83
スタートアップだからこそ考えるフロントエンドのテスト戦略
yoshinagaiwnl
4
1.3k
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
The browser strikes back
jonoalderson
0
1.3k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
250
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
850
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
Tell your own story through comics
letsgokoyo
1
960
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
860
The Cult of Friendly URLs
andyhume
79
6.9k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Transcript
懺悔 - テストを何一つ書いていませんでした- 2022/12/20 マネーフォワード フロントエンドLT 大会2022
今回話すこと ・フロントエンドのテストを書かなかったことによる愚行のお披露目 ・それによって自分の身に起こった悲劇 ・それを踏まえてどうアプローチしたか ・今後 話すこと ・具体的なコードやテスト用ライブラリの使い方 ・バックエンド向けのアプローチ 話さないこと
名前: Ibuki Yoshinaga 誕生日: 2001/02/24 Twitter: @__GGEasy フロントエンド寄り
ゲシピ株式会社に転職しました🎉 e スポーツに関するEdTech 事業を展開しているまだ小さなスタートアップ 高校生の頃からここでインターンや業務委託のエンジニアをしていた
今回の発表内容に関連するプロダクト ・主に小学生~ 大人向けの英会話レッスンを提供するtoC サービス ・ネイティブスピーカーの講師陣とFortnite やマイクラを遊びながら、英会話 を教えてもらえる ・レッスン中の報告や要望、雑談などはできるだけ英語でコミュニケーショ ンを取る ・コロナ禍で小学生のゲーム時間が増えたことから誕生した
e スポーツ英会話
使用している主な技術 ・Next.js ・styled-components ・Recoil ・Storybook フロントエンド ・Nest.js ・Prisma ・OpenApi バックエンド
・Heroku インフラ ・GitHub Actions CI/CD
皆さんはこの名言を知っていますか?
None
この男はテストを書かずに人生を歩んできた
~~~ ここから言い訳~~~
時間がなかった 当時の開発組織 (~2022/08) CTO( 設計 + 他プロダクト + マネージメント) フルタイム
ワイ( 設計 + 開発) 他2 人( 設計 + 開発) 業務委託 ・CTO への技術的な相談が気軽にでき、稼働時間に対してもかなり自由度が高かった ・業務委託中心で開発を回す仕組みが出来ており、裁量も大きかった ・スタートアップなので毎日が新規開発 よかった点 ・社内向け管理画面が多かったので、バグっててもごめんなさいで済んでしまった ・業務委託が多いので、稼働できない月はリソースが圧迫していた ・仕様変更が結構あるので、テスト書いても変更された部分は消えるしなぁ... という気持ち ・結果的にテストや保守業務よりも新規開発に充ててしまった 言い訳
2022/09 、遂にゲシピ社初のエンジニアとして転職 ワイ「開発し放題やんけ!時間もいっぱいあるしな!」
どうなったか?
さらに時間がなくなった 現在の開発組織 (2022/09~) CTO( 設計 + 他プロダクト + マネージメント) ワイ(
設計 + 開発) フルタイム メンバー2( 設計 + 開発) メンバー3( 設計 + 開発) 業務委託 ・毎日が新規開発 + 開発スピードも上がった( 楽しい) ・これまでよりもサービスに愛着が湧いてきた( 可愛い) ・会員数も増えてきた( 嬉しい) よかった点 ・改修が怖くなった ・潜在的なバグ、新規開発によるバグが怖くなった ・動作確認が大変になった ・遂にユーザー向け画面の開発が本格化した 規模が大きくなるにつれて ...
ここで、あることに気がつく
None
何故時間がなかったのか ・改修が怖くなった = 保守性が著しく下がっている ・潜在的なバグ、新規開発によるバグが怖くなった = 短期的な恩恵( 開発速度の上昇) は既にない ・動作確認が大変になった
= 開発体験/ バグによるユーザー体験を大きく損ねる 長期的に見て、テストがないこと自体が何よりもの技術負債になりえる そして、これら全てに気を遣う時間こそが最も無駄な時間だった テストがない現状 ・改修時の視野をより限定的にできる = 保守作業をより楽に、バグに気が付きやすくなる ・規模が大きくなった場合でも、機能に対する動作保証をある一定のラインで担保できる ・長期的に見て、動作確認に費やしていた時間を全て開発に充てることができる = 視野を限定することで、これまで足りないと感じていた開発時間を結果的に増やすことができる テストがあるとどうか ・エラーが起こったことをいち早く察知する → Sentry やBugsnag などでのエラー監視 ・エラーが起こらないことを担保する → テストでの監視 視野を限定的にするには
アプローチ
最低限から初めてみる ・テスト難しいや!一旦やめ!みたいなのは避けたい ・最初は雑魚狩りをしたい( 自己肯定感を上げるためにも) お気持ち ・コンポーネント/ 独自フックの最低限の動作確認 ・画面毎の挙動やSnapshot の確認 テストでやりたいこと
短期的な開発速度を落とさないことは必須。その上で一番困っている部分からテストを作り始める Sentry によるエラー監視も導入し、壊れたことに気が付きやすい状態にしていく テストの内容 ・React Testing Library Atom レベルのコンポーネントやHooks 単体から作り始 める コンポーネント /Hooks テスト ・Cypress 登録 → 初期設定ページくらいから作り始める 最初は正常系とバリデーションテストの2 種類を書く E2E テスト
開発フローの見直し 開発開始! 開発終了! 開発開始! 開発終了! を繰り返していた これまで 開発開始! 開発終了! テストを書きます...
開発開始! 開発終了! テストを書きます... テストを書く時間を踏まえたスケジュールに調整 TDD なども考えたが、まずはとにかくテストに対するモチベーションを上げることを優先 これから
現在どうなっているか PR 立ち上げ時に動作 ・eslint ・TS の型チェック 静的 ・React Testing Library
単体 / 結合 STG デプロイ時に動作 ・Cypress ・Storybook(Atom レベルだけ) UI ・Sentry での監視体制 ・他部署との連携による社内向け不具合報告フォームの設置 常時
まとめ
まとめとこれから ・テストを書いた部分の動作保証が担保されるように ・改修や仕様変更による調整が楽になった ・自分の中で保守業務に対するモチベーションが上がった ・テストを前提としたコードを考えるようになった まずは書き始めてみる、クオリティを求めるのは最低限が 揃ってからでいいという心構えを重要視する よかったこと・わかったこと ・現状クリティカルな部分に絞って作成しているので、全コンポーネント/ ページに対して適用したい
・業務委託含めたチーム全体にテスト文化を作っていく ・テストのカバレッジなどの目標を立てる ・a11y やパフォーマンス、ビジュアルリグレッションテストなども必要に応じて導入していきたい これから
2023 年も頑張ります! 副業も募集してるよ ... !人が足りないよ ... !