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
24
単体テストのすすめ
身内勉強会で使用。
uesho
April 18, 2020
Tweet
Share
More Decks by uesho
See All by uesho
AIによるコードレビューで個人開発の質を高める
uesho
0
780
Other Decks in Programming
See All in Programming
CSC305 Lecture 04
javiergs
PRO
0
270
After go func(): Goroutines Through a Beginner’s Eye
97vaibhav
0
380
育てるアーキテクチャ:戦い抜くPythonマイクロサービスの設計と進化戦略
fujidomoe
1
170
CSC305 Lecture 03
javiergs
PRO
0
240
iOSエンジニア向けの英語学習アプリを作る!
yukawashouhei
0
190
SpecKitでどこまでできる? コストはどれくらい?
leveragestech
0
730
Foundation Modelsを実装日本語学習アプリを作ってみた!
hypebeans
0
110
Leading Effective Engineering Teams in the AI Era
addyosmani
2
320
Your Perfect Project Setup for Angular @BASTA! 2025 in Mainz
manfredsteyer
PRO
0
170
デミカツ切り抜きで面倒くさいことはPythonにやらせよう
aokswork3
0
230
Web Components で実現する Hotwire とフロントエンドフレームワークの橋渡し / Bridging with Web Components
da1chi
3
2.2k
タスクの特性や不確実性に応じた最適な作業スタイルの選択(ペアプロ・モブプロ・ソロプロ)と実践 / Optimal Work Style Selection: Pair, Mob, or Solo Programming.
honyanya
3
160
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Writing Fast Ruby
sferik
629
62k
Automating Front-end Workflow
addyosmani
1371
200k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Code Review Best Practice
trishagee
72
19k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
870
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
Speed Design
sergeychernyshev
32
1.2k
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 というものもある
テストコードは、品質をあげるものではなく維 持するもの!!!! サービス提供のスピードが要求される昨今、テストコードは必要不可欠 もし、現在テストがなく今後サービスを成長させていくのであれば、少しづつでもテストを書いていこう