Slide 1

Slide 1 text

テストコード文化を創る Ryo Yoneyama LiB, Inc.

Slide 2

Slide 2 text

“Geek Suit” Ryo Yoneyama 株式会社LiB(リブ)

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

なぜ、プログラミングはつらいのか?

Slide 5

Slide 5 text

プログラミングの悲しい事実 - コードを書いた分だけバグが出る - コードは触らないと腐っていく - 今は素晴らしいコードもいつか邪魔になる - 仕様変更は簡単だけど、同じ手軽さでコードは変わらない

Slide 6

Slide 6 text

テストを書いても変わらない悲しい事実 - テストを書いてもバグは出る - テストが書いてあってもコードは腐敗していく - テストが書いてあっても、素晴らしいコードを維持できるわけではない - テストがあっても仕様変更に伴うコードの改修は容易じゃない

Slide 7

Slide 7 text

テストはモニタリング手法であり、 コードの品質は設計と実装が決める

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

LiBzCAREER の変遷

Slide 13

Slide 13 text

Phase 1 : 初期ローンチ Phase 2 : ひとりで開発 Phase 3 : チームで開発

Slide 14

Slide 14 text

初期ローンチ ; rake stats

Slide 15

Slide 15 text

俺が書いたコードが 正しく動いているはずがない! けど、テストを書く時間がない

Slide 16

Slide 16 text

Not RSpec but factory_girl

Slide 17

Slide 17 text

! ランダムにデータ生成 ! !

Slide 18

Slide 18 text

正しいデータを ランダムに大量生成して ポチポチと手動テスト 一部Spec はありますが、 メインは手動テストでした・・・

Slide 19

Slide 19 text

[WARNING] たまにfail するテスト 放置すると テストがfail することに慣れてしまうので注意!

Slide 20

Slide 20 text

ひとりで開発 ; rake stats

Slide 21

Slide 21 text

Controllers Views Models Routes

Slide 22

Slide 22 text

Controller でrender_views を使う !

Slide 23

Slide 23 text

Controller を叩けば 少ないコードで 広い範囲のコードが動く

Slide 24

Slide 24 text

そのテストコードは正しいのか? - そもそもテスト駆動じゃない - ユニットテストじゃない - render_views しているのでテストの実効速度は遅い - 間接的にModel やView も動くがテストケースを網羅しているわけじゃない

Slide 25

Slide 25 text

コードの品質モニタリングのために テストを書いている。 細かいことは置いといて、 ある程度デグレに気づけたらOK! (ドヤッ

Slide 26

Slide 26 text

[WARNING] 実装変更に弱いテストコード - いろんなコードに依存してるため、ちょっと変えるとテストが落ちまくる - 実装コードがダメだから、テストコードの依存関係を取り除けない そのテストコード捨てましょう! テストがなくても、サービスは動きます。

Slide 27

Slide 27 text

チームで開発 ; rake stats

Slide 28

Slide 28 text

Model のSpec を継ぎ足しながら、 テストの独立性を高めてます・・・ 紆余曲折あったけど、 『テストコードはあるのが当たり前』ということが チームの共通認識になったのは良かったかと。

Slide 29

Slide 29 text

RuboCop やBrakeman でコード品質の劣化を防ぐ

Slide 30

Slide 30 text

ビジネスにコードをフィットさせよう