Slide 1

Slide 1 text

書評 : 単体テストの考え方 / 使い方 HACK.BAR 福岡 08/26 mikan( 一瀬喜弘)

Slide 2

Slide 2 text

自己紹介 object Mikan { val name = " 一瀬喜弘" val company = "karabiner.tech" val hobby = listOf( " 漫画", " アニメ", " ゲーム", " 折り紙", "OSS 開発・コントリビュート", ) }

Slide 3

Slide 3 text

今日は この本の 紹介をします

Slide 4

Slide 4 text

まず始めに

Slide 5

Slide 5 text

エンジニア 全員 読んだほうがいい

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

t_wada さんもニッコリ 「この本を読めば私が言いそうなことが結構 載っている」 「失職の危機その1 」

Slide 8

Slide 8 text

この本を読むと以下のような疑問を解決してくれます " 単体" テストってどういう粒度なんだ? テストメソッドの命名ってなにが正しいんだ? " 良い" 単体テストを書くためには何を意識すればいいのか? モックとかスタブの使って良いとき/ 悪いときっていつだ?

Slide 9

Slide 9 text

前提認識 プロダクションコードもテストコードも全て 負債 書けば書くほど保守性は下がる = 次の開発はより時間がかかる確立が高くなる

Slide 10

Slide 10 text

テストの必要性

Slide 11

Slide 11 text

テストの必要性 開発を持続可能にする

Slide 12

Slide 12 text

持続可能とは?

Slide 13

Slide 13 text

持続不可能な状態 = 次の開発に 掛かるコストが無限大

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

無限大に発散しないようにする 戦略が 自動 テスト ` `

Slide 16

Slide 16 text

単体テストとは ?

Slide 17

Slide 17 text

単体と呼ばれる少量のコードを検証する 実行時間が短い 隔離された状態で実行可能

Slide 18

Slide 18 text

" 隔離された状態 " ?

Slide 19

Slide 19 text

" 単体 " ?

Slide 20

Slide 20 text

古典学派 vs ロンドン学派

Slide 21

Slide 21 text

古典学派

Slide 22

Slide 22 text

隔離 = 他のテストケースが影響 を与えないように隔離する 順番を変えても結果が同じ 依存はテストケース実行前に毎回作る

Slide 23

Slide 23 text

単体 = 振る舞い あるインプットを与えたときに期待したアウ トプットが出てくることを検証する 戻り値 or 状態 を検証

Slide 24

Slide 24 text

ロンドン学派

Slide 25

Slide 25 text

隔離 = テスト対象をそれ以外の 依存から隔離する 依存はすべてモックにする

Slide 26

Slide 26 text

単体 = クラス アウトプットが期待通りか 協力者オブジェクトのメソッドを決った回数 実行したか

Slide 27

Slide 27 text

この本は古典学派の立場を取っています → 理由は読んだら書いてあります

Slide 28

Slide 28 text

良いテストコードは 4 つの性質を持っている リファクタリング耐性 リグレッションに対する保護 迅速なフィードバック 保守性 → どのようなバランスで持つべきなのかが解説してある

Slide 29

Slide 29 text

最後に

Slide 30

Slide 30 text

全員読みましょう