クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/s6.pdf ·...
TRANSCRIPT
![Page 1: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/1.jpg)
クックパッドとテスト自動化JaSST’14 Tohoku
![Page 2: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/2.jpg)
高井 直人クックパッド株式会社
![Page 3: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/3.jpg)
私の履歴書
2000年~ メーカー系販社 2001年~ ウェブ制作会社 2007年~ 大手システムインテグレーター 2011年~ ネットサービス運営会社
![Page 4: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/4.jpg)
ソフトウェア品質との出会いウェブ制作会社で受託開発に従事していた私はRubyの普及・発展のために大手システムインテグレータへと転職したのだが、何の因果かソフトウェア標準化部門に配属されることになったのだった……。
![Page 5: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/5.jpg)
![Page 6: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/6.jpg)
![Page 7: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/7.jpg)
月間ユニークブラウザ数
0万
1,000万
2,000万
3,000万
4,000万
5,000万
1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 1月
PCモバイル 4,134万UB
(2014年4月期 第3四半期決算補足説明資料)
![Page 8: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/8.jpg)
スマホアプリ累計DL数
パズドラ 2,700万、黒猫 2,500万
iOS 1,010万 Android 990万(2014年4月時点)
![Page 9: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/9.jpg)
投稿レシピ数
0万
30万
60万
90万
120万
150万
180万
7月 10月 1月 4月 7月 10月 1月
レシピ数
163万品
(2014年4月期 第3四半期決算補足説明資料)
![Page 10: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/10.jpg)
クックパッドのユーザー
男性
13.2%
女性
86.8%
女性男性
性別
50代以上
5.2%
40代
18.1%
30代
34.8%
20代
33.3%
10代以下
8.5%
10代以下20代30代40代50代以上
年代(女性)(2013年8月時点)
![Page 11: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/11.jpg)
0M
450M
900M
1,350M
1,800M
2011Q1 Q2 Q3 Q4 2012Q1 Q2 Q3 Q4 2013Q1 Q2 Q3 Q4 2014Q1 Q2 Q3
会員事業広告事業その他
四半期売上高1,620百万円(連結)
(2014年4月期 第3四半期決算補足説明資料)
![Page 12: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/12.jpg)
アプリケーション構成(Web)
MySQL
Redis
MemcachedUnicorn
Rails 3.2
Ruby 2.0
nginx
Amazon Web Service
Apache
![Page 13: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/13.jpg)
アプリケーション規模(Web)• モデル … 1,332クラス
• コントローラー … 386クラス
• ビューテンプレート … 3,877ファイル • ルーティング定義 … 2,865行 • RSpec Example数 … 17,966個 • デプロイ回数 … 11回以上/日
(2014年5月21日時点)
![Page 14: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/14.jpg)
![Page 15: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/15.jpg)
最高においしい「チョコレートケーキ」は
どうやったらできるかを考えてください。
![Page 16: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/16.jpg)
![Page 17: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/17.jpg)
「毎日の料理を楽しみに」は
どうやったらできるかを考えてください。
![Page 18: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/18.jpg)
失敗するやり方
1. 楽しみになるための要件を定義する 2. 上記を満たす機能を設計する 3. ソフトウェアを実装し、テストする
![Page 19: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/19.jpg)
なぜ失敗するのか?
1. 楽しみになるための要件を定義する 2. 上記を満たす機能を設計する 3. ソフトウェアを実装し、テストする
「妥当性確認」のプロセスがない
![Page 20: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/20.jpg)
V&V(検証と妥当性確認)• 検証
客観的証拠を提示することによって、規定要求事項が満たされていることを確認すること。
• 妥当性確認客観的証拠を提示することによって、特定の意図された用途又は適用に関する要求事項が満たされていることを確認すること。
![Page 21: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/21.jpg)
V字モデルとV&V妥当性確認
要件定義
基本設計
詳細設計
実装・単体テスト
結合テスト
システムテスト
受け入れテスト
企画 評価
検証
![Page 22: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/22.jpg)
V字モデルと責任分界点(余談)発注側範囲
要件定義
基本設計
詳細設計
実装・単体テスト
結合テスト
システムテスト
受け入れテスト
企画 評価
受託側範囲
受託開発で妥当性確認が話題にならない理由
正確には要件定義・受け入れテストは発注側責任
![Page 23: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/23.jpg)
成功するやり方
1. ソフトウェアをつかってもらう 2. 楽しみになったかを調べる 3. どうやったらもっと楽しみになる
ソフトウェアをつくれるか考える
![Page 24: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/24.jpg)
デイブ・トーマス曰く、
A. Where do we want to be? B. Where are we? C. How do we improve our process?
This is Agility. There is no more.
![Page 25: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/25.jpg)
要求満足の事後性
ソフトウェアが要求を満たしているかは、ソフトウェアを使わないと判断できない。
![Page 26: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/26.jpg)
もし、お客さまに望むものを聞いていたら、お客さまは「もっと速い馬が欲しい」と答えていただろう。
ヘンリー・フォード[要出典]
![Page 27: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/27.jpg)
誰が顧客なのかがわからなければ、何が品質なのかもわからない。
エリック・リース『リーンスタートアップ』
品質は誰かにとっての価値である。 ジェラルド・ワインバーグ『ソフトウェア文化を創る1』
![Page 28: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/28.jpg)
構築する
計測する
学ぶ
製品データ
アイデア
構築・計測・学習のループ
このループに要する時間を最小化する
![Page 29: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/29.jpg)
ループに要する時間を最小化するには?
(=ソフトウェアのつくり方の改善)
![Page 30: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/30.jpg)
失敗するやり方
1. 開発プロセス標準を定義する。 2. 開発プロセス標準をプロジェクト毎に
テーラリングする。
![Page 31: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/31.jpg)
なぜ失敗するのか?
1. 開発プロセス標準を定義する。 2. 開発プロセス標準をプロジェクト毎に
テーラリングする。
現実の開発プロセスの改善ではない
![Page 32: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/32.jpg)
成功するやり方
1. リリース可能な状態にする 2. ソフトウェアを開発する 3. 変更を加えてからリリース可能な
状態になるまでの無駄をなくす
![Page 33: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/33.jpg)
ソフトウェア生産性ソフトウェアの生産性を向上させるための効果的な手法はおよそ三つに分類される。• 部品化 … つくらないようにする • 自動化 … しないようにする • 可視化 … わかるようにする
![Page 34: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/34.jpg)
継続的デリバリー継続的デリバリーはソフトウェア開発における規律のひとつだ。……継続的デリバリーを実現するには、開発チームがソフトウェアを継続的に統合し、実行ファイルをビルドし、 さらにそれを自動的にテストして問題を検出すればいい。
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?ContinuousDelivery
![Page 35: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/35.jpg)
自動テストと費用対効果(余談)
テスト自動化は開発プロセスのムダ取りであり、そもそもムダ取りに費用対効果という概念はうまれない(キリッ)
![Page 36: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/36.jpg)
デプロイメントパイプライン
成果物リポジトリ
バージョンコントロール
ソースコード 設定
コミットステージ 受け入れステージ
受け入れテスト環境設定、デプロイ、スモークテスト
性能テスト環境設定、デプロイ、スモークテスト
本番環境環境設定、デプロイ、スモークテスト
コンパイルコミットテスト成果物作成コード解析
環境設定デプロイスモークテスト受け入れテスト
設定
Jez Humble、 David Farley『継続的デリバリー』
![Page 37: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/37.jpg)
クックパッドのパイプライン
Sour
ce Co
de Re
view
Cont
inuou
s Int
egrat
ion
Prod
uctio
n Tes
t
Deve
lopem
ent
Prod
uctio
n
GitHub Git Repository
merg
e
pull r
eq
pull
tag deplo
y
deplo
y
![Page 38: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/38.jpg)
Developer Machine
Redis
Shared Development MySQLEC2
Ruby on Rails
memcachedRemote Spec Workersremote_spec workerremote_spec worker...
GitHub Enterprise
LAN
Tokyo Tyrant
Development App Server
push
rspec
deploy
HipChat
ローカルの開発環境
![Page 39: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/39.jpg)
開発者によるテスト1. RSpecによるテスト
単体テストツールによって、データベースも含めたテストをする
2. Capybaraによるテスト 画面なしのウェブブラウザを用いて、シナリオベースのテストをする
![Page 40: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/40.jpg)
開発者テスト・QAテスト(余談)
開発者テストとQAテストは対立的な概念ではなく、テストのある側面にすぎない。分類ありきで考えるのではなく、リリースまでに何が必要かを考えよう。
![Page 41: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/41.jpg)
RSpecの特徴ふるまい駆動開発(BDD)のためのテスティングフレームワーク。
• デファクトスタンダードである • テストコードを構造化しやすい • エコシステムが充実している
![Page 42: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/42.jpg)
RSpecによるテストdescribe SymbolStack do ... context 'when stack is empty' do subject(:empty_stack) { SymbolStack.new } describe '#size' do it { expect(empty_stack.size).to eq 0 } end
![Page 43: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/43.jpg)
Capybaraによるテスト
feature 'User login' do scenario 'successful login' do visit login_path fill_in 'Login', with: '[email protected]' fill_in 'Password', with: 'password' click_link 'Submit' expect(current_path).to root_path end
![Page 44: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/44.jpg)
LAN
EC2
CI ServerGit Repository Production Test
HipChat
tag
pullnotify
deploy
Development DB
schema
Remote Spec
distribute
Git Repository
clone pusherservice hook pull
push
Developermerge
ソースコードの流れ
![Page 45: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/45.jpg)
コードレビュー
Team
Pull Request
Owner Developer
Developer
reviewopen merge
review
コードレビューはチーム単位で行なうが、全員がレビューすることもできる。
![Page 46: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/46.jpg)
![Page 47: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/47.jpg)
![Page 48: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/48.jpg)
![Page 49: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/49.jpg)
![Page 50: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/50.jpg)
Repository
Product SupportProduct Manager
Issue
Developer UI/UX Designer
Pull Request
filefilereviewopenopen
GitHub Enterpriseの利用エンジニア以外にもデザイナー職、ディレクター職、サポート職など
![Page 51: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/51.jpg)
LAN
EC2
CI ServerGit Repository Production Test
HipChat
tag
pullnotify
deploy
Development DB
schema
Remote Spec
distribute
Git Repository
clone pusherservice hook pull
push
Developermerge
ソースコードの流れ
![Page 52: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/52.jpg)
CIサーバ「おむきんす」
https://github.com/masanobuimai/emotional-jenkins-plugin
![Page 53: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/53.jpg)
CI時間に関する経験則
開発者は十分に傲慢なので、 10分でイライラし、20分でキレる。
![Page 54: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/54.jpg)
CIを早くする工夫1. マルチプロセス化(parallel_tests) 2. 分散化
1. 第1世代 remote_spec 2. 第2世代 remote_spec 3. 第3世代 RRRSpec
![Page 55: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/55.jpg)
RRRSpecの特徴1. スポットインスタンスを利用 2. プロセス停止からの自動復帰 3. 失敗したテストの自動再実行 4. テスト実行順序の最適化 5. 長いテストの投機的実行 6. オープンソース
https://github.com/cookpad/rrrspec/blob/master/DESIGN.md
![Page 56: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/56.jpg)
Master
Slave
Worker
Slave
Slave
Worker
……
DB
RRRSpecの構成Example数 … 約18,000 スレーブ数 … 約7台 ワーカー数 … 約80並列 実行時間 … 約7分
![Page 57: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/57.jpg)
テストの品質機能の価値はリリースして初めてわかる =テストに過剰な先行投資はできない
• テスト設計工程を独立して設けない • 開発工程のあとのテスト工程はない
本番環境でのダメージコントロールが重要
![Page 58: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/58.jpg)
![Page 59: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/59.jpg)
![Page 60: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/60.jpg)
![Page 61: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/61.jpg)
![Page 62: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/62.jpg)
![Page 63: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/63.jpg)
デベロッパーとユーザーのコミュニケーションやコラボレーションを阻む壁もなくなった。バグの寿命は、数ヶ月から数分に短縮された。
J・ウィテカー、J・アーボン、J・キャローロ『テストから見えてくるグーグルのソフトウェア開発』
![Page 64: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/64.jpg)
と、いうお話だったのさ……
![Page 65: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/65.jpg)
モバイルアプリケーション• よりユーザーエクスペリエンスが重要に
• リッチなUI、複雑な状態のテスト • アプリケーションデリバリー問題が再燃
• 複数バージョンが併存 • リリースフローの再構築
• リリース期間、テストフェーズ
![Page 66: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/66.jpg)
復習問題
1万回に1回、100万円が当たるスロットマシンがあるものとします。このスロットマシンで遊ぶとき、1回あたりいくらコストをかけるべきか考えてください。
![Page 67: クックパッドとテスト自動化 - jasst.jpjasst.jp/symposium/jasst14tohoku/pdf/S6.pdf · その他 四半期売上高 ... アプリケーション構成(Web) MySQL Redis](https://reader033.vdocuments.mx/reader033/viewer/2022041523/5e2f864ecbeed301ad17fe0b/html5/thumbnails/67.jpg)
まとめ• ユーザーの要求は、リリースして初めて
分かる。 • 構築・計測・学習のループに要する時間
を最小化しなければならない。 • リリースまでのプロセスを定義し、そこ
から無駄を取り除く。