Submit Search
地獄Spec
8 likes
1,709 views
Drecom Co., Ltd.
1 of 46
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
More Related Content
PDF
カンバンと朝会とわたくし
Drecom Co., Ltd.
PDF
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
Go Sueyoshi (a.k.a sue445)
PDF
社内ツールが支えるドリコムの社内勉強会文化 #metabenkyokai
Go Sueyoshi (a.k.a sue445)
PDF
ドリコムを支える課金ライブラリを支えるJenkins
Go Sueyoshi (a.k.a sue445)
PDF
Rubyの会社でPythonistaが3ヶ月生き延びた話
Tokoroten Nakayama
PDF
ドリコムのインフラCI
Go Sueyoshi (a.k.a sue445)
PDF
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
虎の穴 開発室
PDF
RSpec Performance Turning
Go Sueyoshi (a.k.a sue445)
カンバンと朝会とわたくし
Drecom Co., Ltd.
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
Go Sueyoshi (a.k.a sue445)
社内ツールが支えるドリコムの社内勉強会文化 #metabenkyokai
Go Sueyoshi (a.k.a sue445)
ドリコムを支える課金ライブラリを支えるJenkins
Go Sueyoshi (a.k.a sue445)
Rubyの会社でPythonistaが3ヶ月生き延びた話
Tokoroten Nakayama
ドリコムのインフラCI
Go Sueyoshi (a.k.a sue445)
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
虎の穴 開発室
RSpec Performance Turning
Go Sueyoshi (a.k.a sue445)
What's hot
(19)
PDF
技術書へのいざない
Go Sueyoshi (a.k.a sue445)
PDF
スペシャリストになるには
外道 父
PDF
プリキュアのRuby実装の紹介 #tqrk08
Go Sueyoshi (a.k.a sue445)
KEY
実録!Railsのはまりポイント10選
Drecom Co., Ltd.
PDF
Html5超入門
Monaca
PDF
GitHub APIとfreshで遊ぼう
虎の穴 開発室
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
PDF
こんな辛いテストはいやだ
Takuya Mikami
PPTX
C#で速度を極めるいろは
Core Concept Technologies
PPTX
Elixir-Conf-Japan-2017-session-ohr486
Tsunenori Oohara
PDF
これからはじめるインフラエンジニア
外道 父
PDF
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
PDF
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
Masahito Zembutsu
PDF
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
Go Sueyoshi (a.k.a sue445)
PDF
社内テストファースト勉強会
Go Sueyoshi (a.k.a sue445)
PDF
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
Manabu Koga
PDF
ニュースアプリで起きた不具合から学んだ 最適への一歩
Yahoo!デベロッパーネットワーク
PDF
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
Akihiro Kuwano
PDF
組込向けHaskellコンパイラAjhc / POSIX依存から脱出しよう編
Kiwamu Okabe
技術書へのいざない
Go Sueyoshi (a.k.a sue445)
スペシャリストになるには
外道 父
プリキュアのRuby実装の紹介 #tqrk08
Go Sueyoshi (a.k.a sue445)
実録!Railsのはまりポイント10選
Drecom Co., Ltd.
Html5超入門
Monaca
GitHub APIとfreshで遊ぼう
虎の穴 開発室
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
こんな辛いテストはいやだ
Takuya Mikami
C#で速度を極めるいろは
Core Concept Technologies
Elixir-Conf-Japan-2017-session-ohr486
Tsunenori Oohara
これからはじめるインフラエンジニア
外道 父
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
Masahito Zembutsu
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
Go Sueyoshi (a.k.a sue445)
社内テストファースト勉強会
Go Sueyoshi (a.k.a sue445)
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
Manabu Koga
ニュースアプリで起きた不具合から学んだ 最適への一歩
Yahoo!デベロッパーネットワーク
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
Akihiro Kuwano
組込向けHaskellコンパイラAjhc / POSIX依存から脱出しよう編
Kiwamu Okabe
Ad
Viewers also liked
(19)
PDF
ソーシャルゲームスケールアウトの歴史
Drecom Co., Ltd.
PDF
ソーシャルアプリを分析してみた
Drecom Co., Ltd.
PDF
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
Drecom Co., Ltd.
PPTX
5年後のデータサイエンティスト
Drecom Co., Ltd.
PDF
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
Drecom Co., Ltd.
KEY
エンジニア生存戦略
Drecom Co., Ltd.
KEY
activerecord-turntable
Drecom Co., Ltd.
PDF
ドリコム流。教育アプリにおけるゲーミフィケーションノウハウ
trendism
PDF
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
Drecom Co., Ltd.
PDF
フライングゲットガチャ セミナー資料
Drecom Co., Ltd.
PDF
ログ解析を支えるNoSQLの技術
Drecom Co., Ltd.
KEY
Railsによるワイルドなソフトウェア開発
Drecom Co., Ltd.
PDF
gemの複数バージョンカジュアルテスト #shibuyarb
Go Sueyoshi (a.k.a sue445)
PDF
Rubyの会社でPythonistaが三ヶ月生き延びた話
Drecom Co., Ltd.
PDF
My sql casual talks vol.6
Satoshi Suzuki
PDF
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
Drecom Co., Ltd.
PDF
ドリコムの分析環境とデータサイエンス活用事例
Yohei Sato
PPTX
Tokyor42_r_datamining_18
Yohei Sato
PPTX
DAUを評価指標から捨てた会社の話 #tokyowebmining
Tokoroten Nakayama
ソーシャルゲームスケールアウトの歴史
Drecom Co., Ltd.
ソーシャルアプリを分析してみた
Drecom Co., Ltd.
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
Drecom Co., Ltd.
5年後のデータサイエンティスト
Drecom Co., Ltd.
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
Drecom Co., Ltd.
エンジニア生存戦略
Drecom Co., Ltd.
activerecord-turntable
Drecom Co., Ltd.
ドリコム流。教育アプリにおけるゲーミフィケーションノウハウ
trendism
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
Drecom Co., Ltd.
フライングゲットガチャ セミナー資料
Drecom Co., Ltd.
ログ解析を支えるNoSQLの技術
Drecom Co., Ltd.
Railsによるワイルドなソフトウェア開発
Drecom Co., Ltd.
gemの複数バージョンカジュアルテスト #shibuyarb
Go Sueyoshi (a.k.a sue445)
Rubyの会社でPythonistaが三ヶ月生き延びた話
Drecom Co., Ltd.
My sql casual talks vol.6
Satoshi Suzuki
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
Drecom Co., Ltd.
ドリコムの分析環境とデータサイエンス活用事例
Yohei Sato
Tokyor42_r_datamining_18
Yohei Sato
DAUを評価指標から捨てた会社の話 #tokyowebmining
Tokoroten Nakayama
Ad
Similar to 地獄Spec
(20)
PPTX
R spec勉強会
Tatsunori Nishikori
PDF
今さらながらRSpecに入門してみた
zaru sakuraba
ODP
RSpecのここがすごい!
mitim
PPTX
ライトニングトーク資料 OSC東京2017秋
Shinji Tanimoto
PPTX
実は怖くないDevOps
Masanori Ishigami
PPTX
RSpecの実行速度を3.5倍にした話
Naomichi Yamakita
PPT
Kubo100903
kubo
ODP
Rails-Plugin Flexturesの紹介
baban ba-n
PDF
Tdd
Takaya Kotohata
PPT
Rspec
Yunosuke Taga
PDF
Rspec、あなたならどう書く? 20190626
Koske Kano
PPTX
Rails on rspec plactice
k-motoyan
PPTX
Rails on rspec plactice
k-motoyan
PDF
あなたの安心を高速に守る Container-based CI
Wataru MIYAGUNI
PDF
Introduction to guard + rspec
koko_u
PDF
SpockからRSpecにきたときの気づき #coedorb
Youtarou TAKAHASHI
PDF
テスト大嫌いっ娘のRSpec
Yasuko Ohba
PDF
Ruby on Railsではじめるrspecテスト
Kanako Kobayashi
PDF
RSpec と Cucumber
Masahiro Tomita
PDF
「RSpec初心者に送るRSpec最強チュートリアル」発表資料 #sg_study
Junichi Ito
R spec勉強会
Tatsunori Nishikori
今さらながらRSpecに入門してみた
zaru sakuraba
RSpecのここがすごい!
mitim
ライトニングトーク資料 OSC東京2017秋
Shinji Tanimoto
実は怖くないDevOps
Masanori Ishigami
RSpecの実行速度を3.5倍にした話
Naomichi Yamakita
Kubo100903
kubo
Rails-Plugin Flexturesの紹介
baban ba-n
Tdd
Takaya Kotohata
Rspec
Yunosuke Taga
Rspec、あなたならどう書く? 20190626
Koske Kano
Rails on rspec plactice
k-motoyan
Rails on rspec plactice
k-motoyan
あなたの安心を高速に守る Container-based CI
Wataru MIYAGUNI
Introduction to guard + rspec
koko_u
SpockからRSpecにきたときの気づき #coedorb
Youtarou TAKAHASHI
テスト大嫌いっ娘のRSpec
Yasuko Ohba
Ruby on Railsではじめるrspecテスト
Kanako Kobayashi
RSpec と Cucumber
Masahiro Tomita
「RSpec初心者に送るRSpec最強チュートリアル」発表資料 #sg_study
Junichi Ito
More from Drecom Co., Ltd.
(16)
PDF
コンテナで始める柔軟な AWS Lambda 生活
Drecom Co., Ltd.
PDF
サービスのインシデントを解決するには.pdf
Drecom Co., Ltd.
PPTX
ドリコムサマージョブ報告 by 佐々木 誠治
Drecom Co., Ltd.
PPTX
DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介
Drecom Co., Ltd.
PDF
HTML5 ゲームフレームワーク開発について
Drecom Co., Ltd.
PDF
「AROW」お披露目(導入編)
Drecom Co., Ltd.
PDF
「AROW」お披露目(実用編)
Drecom Co., Ltd.
PDF
AROW の紹介 〜概要編〜
Drecom Co., Ltd.
PDF
AROW の紹介 〜実践編〜
Drecom Co., Ltd.
PDF
rails-developers-meetup-day4
Drecom Co., Ltd.
PDF
html5conf2018-sponsor-session
Drecom Co., Ltd.
PPTX
DApps のユーザ認証に web3.eth.personal.sign を使おう!
Drecom Co., Ltd.
PPTX
3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法
Drecom Co., Ltd.
PPTX
LoveChainのスマートコントラクトを見てみよう & 非中央集権なトークンのカタチ
Drecom Co., Ltd.
PDF
今月のレッツゴー陰陽師!
Drecom Co., Ltd.
PDF
位置情報を常に取得するのはつらいよ
Drecom Co., Ltd.
コンテナで始める柔軟な AWS Lambda 生活
Drecom Co., Ltd.
サービスのインシデントを解決するには.pdf
Drecom Co., Ltd.
ドリコムサマージョブ報告 by 佐々木 誠治
Drecom Co., Ltd.
DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介
Drecom Co., Ltd.
HTML5 ゲームフレームワーク開発について
Drecom Co., Ltd.
「AROW」お披露目(導入編)
Drecom Co., Ltd.
「AROW」お披露目(実用編)
Drecom Co., Ltd.
AROW の紹介 〜概要編〜
Drecom Co., Ltd.
AROW の紹介 〜実践編〜
Drecom Co., Ltd.
rails-developers-meetup-day4
Drecom Co., Ltd.
html5conf2018-sponsor-session
Drecom Co., Ltd.
DApps のユーザ認証に web3.eth.personal.sign を使おう!
Drecom Co., Ltd.
3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法
Drecom Co., Ltd.
LoveChainのスマートコントラクトを見てみよう & 非中央集権なトークンのカタチ
Drecom Co., Ltd.
今月のレッツゴー陰陽師!
Drecom Co., Ltd.
位置情報を常に取得するのはつらいよ
Drecom Co., Ltd.
地獄Spec
1.
地獄の RSpec 逃げちゃだめだ、逃げちゃだめだ・・・
おおはら@Drecom Co., Ltd.
2.
警告 このプレゼンを見てから7日以内にspecヲ 20コGreenにしないといけません。さもなくば 貴方のプロジェクトは炎上し、メンバーは 疲れ果て疾走し行方不明になる可能性 があります。 貴方のプロジェクト、大丈夫ですか・・・?
3.
提供 DRECOM
R With entertainment
4.
自己紹介 おおはらつねのり アプリケーションエンジニア 所属:広告事業本部 twitterアカウント:@ohrdev
5.
経歴 Rails歴:2年半 札幌の会社からドリコムへ転職 元SIer(元IT亡者) ソーシャルゲームはヤった事ない(シゴトハノゾク)
7.
今日の おはなし
8.
テスト
9.
RSpec
10.
質問1 spec
11.
何
緑 時 赤 最 初 気 。 。
12.
グリーン維 持は大変
13.
質問2 グリーン維 持してる?
14.
理想的な プロジェクト なら・・・
16.
だが現実は キビシイ・・・
18.
現実
20.
うちのシステ ムでRSPEC導 入した時の話
21.
組織(広告事業部)
企画 営業 開発 受注 クライアント カスタマー サポート
22.
サービス(poncan) ソーシャルアプリ向けリワード広告サービス http://www.slideshare.net/CyLab/poncan2 リワード広告とは: ユーザーに広告を提供し、その成果に対して 一定の報酬(ポイント等)を支払うサービス
23.
システム(poncan) Rails2.3.8 + passenger Ruby1.8.7 MySQL5 Memcached(acts_as_cached) Resque/Redis
24.
運用 止めれない(サーバー停止のメンテは基本なし) Migrationは使用しない(できない) →openark kit/oak-online-alter-table (1日のリリース:2.1回) (1日コミット数:22.3回) (毎日リリース・毎週機能追加・拡張)
25.
背景 テストコード(メンテされて)なかった リリースまでに(チェックで)時間かかる 漏れや事故が多い
26.
バグ
事故 漏れ poncan 安心感 テストコード(のメンテ)不足
28.
Specを書けよ デコ助野郎!
29.
RSpec
開発メンバー
30.
①導入前の状態 有効なRSpecほぼ無し 自動生成されたtestunitが少々 誰も動かしていない 当然メンテもしていない
31.
②導入直後にやった事 メンテされていないテストコードは削除 -流用できないコード多数 -そもそも仕様が既に変わっている 自動生成されたコードも削除 テスト用データ -fixturesからFactoryGirlに移行
32.
②失敗・教訓(導入直後) とりあえず動くだけでは不十分 -実行時間が長いと流さなくなる 自動で動かさないと忘れる -autotest使うようにした テストデータを全てFactoryGirlで賄うのは面倒 -マスタデータはfixtures
-トランザクションデータはFactoryGirl
33.
③しばらく経って(1週間位)やった事 Specを書く対象を絞った -まずはmodelから書いていく事にした -controllerは後回し
34.
③失敗・教訓(しばらく経って) ビジネスロジック部分をspecの対象にすべきだった -modelだけでは不十分で、(Fat)controller のロジック部分も対象にしないと無意味 万遍なくspecを書こうとして途方に暮れた -全部書く時間ない・モチベーション下がる -修正の入った箇所から充実させていった
35.
④慣れてきた頃(1ヶ月位)にやった事 CIを導入した -手軽なBigTunaを採用 遅い処理の改善 -テストダブル(モック・スタブ)に置き換え -migrationからschema.rb読み込みに変更
36.
④失敗・教訓(慣れてきた頃) CIの失敗通知が続いてREDに慣れてしまった -失敗だけでなく失敗数も通知するようにした -オールグリーンを目標に設定 -だんだんREDが減っていくのを見てモチベ△ メンバー間のspecの書き方に統一性が無くなってきた -勉強会・共有会で書き方をある程度共有 -THE RSPEC BOOK
37.
⑤充実してきた頃(3ヶ月位)にやった事 カバレッジを指標にした -rake spec:rcov テストデータの整理 -モデル(テーブル)数80くらい
38.
⑤失敗・教訓(充実してきた頃) カバレッジは万能じゃない -「レガシーコード=テストの無いコード」なので意 味はあるが・・・ -Reekを取るようにした(お手軽/ReekViewer) https://github.com/Shinya131/reekviewer FactoryGirlがパンクした -factory.rbに全てぶっ込むのではなく、
factoriesフォルダ以下にファイル分割配置 -リレーション指定やりすぎると破綻(メンテ不能)に
39.
⑥グリーンになって(5ヶ月位)にやった事 trunkとbranchに対してそれぞれCIを回した -管理・配信・配信(mixi特化)アプリごとに、そ れぞれ計6つのCIを回す -trunkとbranchの差分を全てチェック(苦行) レッドからグリーンにするではなく、グリーンを維持する
ように目標をシフト
40.
⑥失敗・教訓(グリーンになって) Trunkはグリーンだけど、branchはレッドという状況に -息の長いbranchだと未マージ・マージ漏れが 発生しうる -特定のコードをbranchにマージする・しないで赤
だったり緑だったりするケースがある なるべくtrunkとbranchの差分を小さくするように意 識
41.
⑦そして今に至る・・・
ビフォー
42.
⑦そして今に至る・・・ アフター
43.
結果どうなった? リリース頻度が加速 -漏れ・事故が少なくなった -即リリース・即bug発見・即修正・即リリース・・・ “ある程度”安心できる trunkとbrunchの差分が減った 100%bug潰すのは無理だけど、即発見・修正はでき る
44.
今後 Rails2.3.8から、Rails3.xにVerUp -Jenkins + rvm
+ rails3.x でCI回す もうなにも怖くない(CIまわしてればある程度) Seleniumで面もチェック -目確認は(最低限しか)したくない 引き続きGREEN維持
45.
まとめ RSpecちゃんとしたら、リリース頻度あがった Specメンテ => CI導入
じゃなくて、 CI導入 => Specメンテ ってするとウマく回った BUG潰し・予防よりもBUGの早期発見・早期修正に役 立った BUGは出る時は出る、Rspec/CIは万能じゃないの で注意
46.
ドリコムメンバー募集 ドリコム広告事業本部では、テスト好きなメンバーを 募集しています。 http://www.drecom.co.jp/recruit/
Download