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
25
単体テストのすすめ
身内勉強会で使用。
uesho
April 18, 2020
Tweet
Share
More Decks by uesho
See All by uesho
AIによるコードレビューで個人開発の質を高める
uesho
0
800
Other Decks in Programming
See All in Programming
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
5.1k
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
240
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
350
AIエージェントの設計で注意するべきポイント6選
har1101
6
3.1k
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
150
CSC307 Lecture 01
javiergs
PRO
0
670
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
2k
ゆくKotlin くるRust
exoego
1
200
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.2k
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
210
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
3
1.4k
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
650
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
sira's awesome portfolio website redesign presentation
elsirapls
0
110
Ruling the World: When Life Gets Gamed
codingconduct
0
120
The Art of Programming - Codeland 2020
erikaheidi
57
14k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
30 Presentation Tips
portentint
PRO
1
190
Making Projects Easy
brettharned
120
6.5k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.1k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
1
350
Designing for Timeless Needs
cassininazir
0
110
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
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 というものもある
テストコードは、品質をあげるものではなく維 持するもの!!!! サービス提供のスピードが要求される昨今、テストコードは必要不可欠 もし、現在テストがなく今後サービスを成長させていくのであれば、少しづつでもテストを書いていこう