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
teamLab
PRO
January 22, 2025
Programming
0
46
半年開発してわかった自動テストの価値
teamLab
PRO
January 22, 2025
Tweet
Share
More Decks by teamLab
See All by teamLab
ぴよぴよFlutterエンジニアから見た 会社の楽しいところをありったけ
teamlab
PRO
0
24
社内のFlutterテンプレートをリニューアルした話
teamlab
PRO
0
31
"ほどよい自動化"はあなたの開発を豊かにする
teamlab
PRO
0
75
History APIの魅力と危険性
teamlab
PRO
0
50
レビュー経験ほぼ0だった自分が レビューで心掛けていること
teamlab
PRO
0
46
Web関連の仕様書を読むモチベーション
teamlab
PRO
0
46
[FlutterKaigi2024]ステートマシンで実現する高品質なFlutterアプリ開発
teamlab
PRO
3
900
[iOSDC 2024]クロスプラットフォーム普及増加。SwiftでiOS開発はもうやらないのか....?
teamlab
PRO
0
1k
チームラボの画像処理エンジニアチーム
teamlab
PRO
2
260
Other Decks in Programming
See All in Programming
Kotlinの開発でも AIをいい感じに使いたい / Making the Most of AI in Kotlin Development
kohii00
5
1.1k
第3回関東Kaggler会_AtCoderはKaggleの役に立つ
chettub
3
1.2k
How mixi2 Uses TiDB for SNS Scalability and Performance
kanmo
40
16k
SwiftUI Viewの責務分離
elmetal
PRO
2
270
PRレビューのお供にDanger
stoticdev
1
230
「個人開発マネタイズ大全」が教えてくれたこと
bani24884
1
180
Rails 1.0 のコードで学ぶ find_by* と method_missing の仕組み / Learn how find_by_* and method_missing work in Rails 1.0 code
maimux2x
1
170
Better Code Design in PHP
afilina
0
160
pylint custom ruleで始めるレビュー自動化
shogoujiie
0
150
もう少しテストを書きたいんじゃ〜 #phpstudy
o0h
PRO
17
3.9k
PHPカンファレンス名古屋2025 タスク分解の試行錯誤〜レビュー負荷を下げるために〜
soichi
1
670
Unity Android XR入門
sakutama_11
0
180
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
Git: the NoSQL Database
bkeepers
PRO
427
65k
KATA
mclloyd
29
14k
Building an army of robots
kneath
303
45k
Bootstrapping a Software Product
garrettdimon
PRO
306
110k
Why Our Code Smells
bkeepers
PRO
336
57k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1k
The Pragmatic Product Professional
lauravandoore
32
6.4k
Code Reviewing Like a Champion
maltzj
521
39k
Thoughts on Productivity
jonyablonski
69
4.5k
Transcript
半年開発してわかった⾃動テストの価値 【学⽣向け勉強会】teamLab×DMM tech meetup ~frontend~ 宇根 昇汰
© teamLab Inc ⾃⼰紹介 宇根 昇汰 Une Shota 2024年 新卒⼊社
パッケージチーム フロントエンド班 和歌⼭⾼専 専攻科卒業
© teamLab Inc ⾃動テストについてどう思いますか
© teamLab Inc 良くない?笑
© teamLab Inc ⾃動テストって 俺は「開発」がしたいんだ! ちまちま細かくて楽しくなさそう めんどくさそう 「品質保証」をラクにするやつね...俺はいいかな
© teamLab Inc ⾃動テストは開発をラクにしてくれる
© teamLab Inc Case 1:新規実装 実装時にログ出⼒などで動作確認する const func = (arg:
string) => { if(arg === '') { return 'empty' }; return arg; } - console.log(func('lab')) > lab - console.log(func('')) > empty 全て消した状態でPR作成 レビュワーも動作確認するかも 無駄じゃない?
© teamLab Inc Case 2:改修 既存の共通処理を修正する デグレードを引き起こしていないか確認 • 共通処理が使⽤されている画⾯を探す •
ローカルでサーバーを⽴ち上げる • 該当画⾯のさまざまな機能を⼿動で確認 めんどくさい...
© teamLab Inc 動作確認の証跡を残したままPR作成 & ⾃分の改修による他機能への影響を検知したいナ〜...
© teamLab Inc ⾃動テスト‧‧‧やりたくね?
© teamLab Inc デバッグの減少 テストコードによってコードの機能が保証される バグもテストコードによって検出される 変更への信頼の増⼤ リファクタリングなどによる変更が既存機能に影響 を与えたかを検知可能 ドキュメンテーションの改善
テストコードがコードの挙動を明確に⽰してくれる ドキュメントが古くなっているということもない レビューの単純化 レビュワーは、コードが適切に機能していることを テストが通っている事実だけで判断可能 思慮に富む設計 テストコードを書きやすいように設計することは適 切にモジュール化し、密結合を避けることに繋がる ⾼速で⾼品質なリリース ⼿動テストの⼯数を減らし、新機能だけでなく既存 機能に対しても何回でもテスト可能 Pros Googleのソフトウェアエンジニアリング p249-250
© 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… デバッグの減少 レビューの単純化
© teamLab Inc Case 2:改修 変更への信頼の増⼤ 既存の共通処理を修正する デグレードを引き起こしていないか確認 • 既存のテストが通っているかを確認
Wonderful…
© teamLab Inc 品質保証の⽂脈だけでなく 開発者体験を⾼める⾯でも⾃動テストは良い!
おわり teamLab×DMM tech meetup ~frontend~ 宇根 昇汰