×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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
ビジネスにコードをフィットさせよう