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
uesho
April 18, 2020
Programming
0
23
単体テストのすすめ
身内勉強会で使用。
uesho
April 18, 2020
Tweet
Share
More Decks by uesho
See All by uesho
AIによるコードレビューで個人開発の質を高める
uesho
0
720
Other Decks in Programming
See All in Programming
Systèmes distribués, pour le meilleur et pour le pire - BreizhCamp 2025 - Conférence
slecache
0
120
#QiitaBash MCPのセキュリティ
ryosukedtomita
0
670
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
2
330
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
370
Goで作る、開発・CI環境
sin392
0
190
第9回 情シス転職ミートアップ 株式会社IVRy(アイブリー)の紹介
ivry_presentationmaterials
1
260
AIコーディング道場勉強会#2 君(エンジニア)たちはどう生きるか
misakiotb
1
270
#kanrk08 / 公開版 PicoRubyとマイコンでの自作トレーニング計測装置を用いたワークアウトの理想と現実
bash0c7
1
660
WebViewの現在地 - SwiftUI時代のWebKit - / The Current State Of WebView
marcy731
0
110
ニーリーにおけるプロダクトエンジニア
nealle
0
710
初学者でも今すぐできる、Claude Codeの生産性を10倍上げるTips
s4yuba
2
880
deno-redisの紹介とJSRパッケージの運用について (toranoana.deno #21)
uki00a
0
170
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
42
7.6k
Adopting Sorbet at Scale
ufuk
77
9.4k
A Tale of Four Properties
chriscoyier
160
23k
The Cost Of JavaScript in 2023
addyosmani
51
8.5k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
What's in a price? How to price your products and services
michaelherold
246
12k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Statistics for Hackers
jakevdp
799
220k
The Cult of Friendly URLs
andyhume
79
6.5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
800
Transcript
単体テストのすすめ uesho
単体テスト(Unit Test)とは? • ユニット(モジュール、クラス、メソッド) 単位でテストするからユニット テストと言う • アプリケーションを横断的・全体的にテストする結合テストに比べ て、非常に小さい、軽量なテスト
原則 モジュールの数だけ、テストコードを書く Module1 Module2 Module3 Test for Module1 Test for
Module1 Test for Module1 Application Test for Application
原則 パターンの数だけ、テストコードを書く Function パターン1 パターン2 パターン3 Test for Function
例
ポイント • テストコードは正常形だけでなく、異常系も書く • テストコードは、適切な粒度で書く ◦ パターンを意識しすぎると、冗長で無駄なテストが増えていく (保守性が低下する) • テストコードは実装ではなく仕様に基づいて書く
• テストコードが書きづらい関数は、よくない関数 ◦ 何をするか不明瞭 ◦ やっていることが多すぎる などなど
メリット • 仕様が明確になる ◦ OSSとかもテストコードを見ると挙動がわかったりする • 機能追加やリファクタリングが容易になる ◦ これ本当に楽になる!!!!!!!
原則 テストコードはこまめに書く!!!TDDが理想 • 「アプリケーションを作って最後に書く」これはアカン ◦ テストによって見つけられるはずの早期不具合が見つけられ なくなる ◦ 一気にテストコードを書くのは苦痛...
原則 テストコードは常にアップデートする • テストコードを見て仕様が分かるのが理想 • 仕様がアップデートされるたびにテストコードがアップデートされる べき • そうしないとテストコードが腐る →
自動テスト(CI)を活用する
ユニットテストライブラリ プログラミング言語ごとに主要なユニットテストライブラリがあるので、言語・ 開発環境に合わせ選択する 書き方も大体どのライブラリも似ているが、ライブラリごとに異なる記法もあ るので、これは覚えましょう
単体テストを書くにあったって • 「何を確認するか」がWhat • それを確認するための具体的なテストコードがHow ◦ Whatがないと、「色々書いてあるけど何を確認しているん だ?」となる • テスト観点をテストメソッド名に書く
Given-When-Then • GIVEN : テストの前提条件を表す。 • WHEN : 操作 •
THEN : 期待する結果 を明示的に記述する ※似たようなものに、Arrange-Act-Assert というものもある
テストコードは、品質をあげるものではなく維 持するもの!!!! サービス提供のスピードが要求される昨今、テストコードは必要不可欠 もし、現在テストがなく今後サービスを成長させていくのであれば、少しづつでもテストを書いていこう