Slide 1

Slide 1 text

半年開発してわかった⾃動テストの価値 【学⽣向け勉強会】teamLab×DMM tech meetup ~frontend~ 宇根 昇汰

Slide 2

Slide 2 text

© teamLab Inc ⾃⼰紹介 宇根 昇汰 Une Shota 2024年 新卒⼊社 パッケージチーム フロントエンド班 和歌⼭⾼専 専攻科卒業

Slide 3

Slide 3 text

© teamLab Inc ⾃動テストについてどう思いますか

Slide 4

Slide 4 text

© teamLab Inc 良くない?笑

Slide 5

Slide 5 text

© teamLab Inc ⾃動テストって 俺は「開発」がしたいんだ! ちまちま細かくて楽しくなさそう めんどくさそう 「品質保証」をラクにするやつね...俺はいいかな

Slide 6

Slide 6 text

© teamLab Inc ⾃動テストは開発をラクにしてくれる

Slide 7

Slide 7 text

© teamLab Inc Case 1:新規実装 実装時にログ出⼒などで動作確認する const func = (arg: string) => { if(arg === '') { return 'empty' }; return arg; } - console.log(func('lab')) > lab - console.log(func('')) > empty 全て消した状態でPR作成 レビュワーも動作確認するかも 無駄じゃない?

Slide 8

Slide 8 text

© teamLab Inc Case 2:改修 既存の共通処理を修正する デグレードを引き起こしていないか確認 ● 共通処理が使⽤されている画⾯を探す ● ローカルでサーバーを⽴ち上げる ● 該当画⾯のさまざまな機能を⼿動で確認 めんどくさい...

Slide 9

Slide 9 text

© teamLab Inc 動作確認の証跡を残したままPR作成 & ⾃分の改修による他機能への影響を検知したいナ〜...

Slide 10

Slide 10 text

© teamLab Inc ⾃動テスト‧‧‧やりたくね?

Slide 11

Slide 11 text

© teamLab Inc デバッグの減少 テストコードによってコードの機能が保証される バグもテストコードによって検出される 変更への信頼の増⼤ リファクタリングなどによる変更が既存機能に影響 を与えたかを検知可能 ドキュメンテーションの改善 テストコードがコードの挙動を明確に⽰してくれる ドキュメントが古くなっているということもない レビューの単純化 レビュワーは、コードが適切に機能していることを テストが通っている事実だけで判断可能 思慮に富む設計 テストコードを書きやすいように設計することは適 切にモジュール化し、密結合を避けることに繋がる ⾼速で⾼品質なリリース ⼿動テストの⼯数を減らし、新機能だけでなく既存 機能に対しても何回でもテスト可能 Pros Googleのソフトウェアエンジニアリング  p249-250

Slide 12

Slide 12 text

© teamLab Inc Case 1:新規実装 実装時にテストコードを書いて動作確認 const func = (arg: string) => { if(arg === '') { return 'empty' }; return arg; } test('普通の文字列の場合', () => { expect(func('lab')).toBe('lab') }) test('空文字の場合', () => { expect(func('')).toBe('empty') }) テストコードもコミットしてPR作成 レビュワーはテスト結果で動作を確認 Happy… デバッグの減少 レビューの単純化

Slide 13

Slide 13 text

© teamLab Inc Case 2:改修 変更への信頼の増⼤ 既存の共通処理を修正する デグレードを引き起こしていないか確認 ● 既存のテストが通っているかを確認 Wonderful…

Slide 14

Slide 14 text

© teamLab Inc 品質保証の⽂脈だけでなく 開発者体験を⾼める⾯でも⾃動テストは良い!

Slide 15

Slide 15 text

おわり teamLab×DMM tech meetup ~frontend~ 宇根 昇汰