24
2014/07/15 西新宿Tech-Circle 冨永 善視 (@tominaga443) チケット駆動でテスト駆動な アプリケーション開発

チケット駆動でテスト駆動なアプリケーション開発

Embed Size (px)

DESCRIPTION

社内勉強会でのLT資料

Citation preview

Page 1: チケット駆動でテスト駆動なアプリケーション開発

2014/07/15 西新宿Tech-Circle 冨永 善視 (@tominaga443)

チケット駆動でテスト駆動な アプリケーション開発

Page 2: チケット駆動でテスト駆動なアプリケーション開発

冨永 善視 (とみなが よしみ)

Twitter @tominaga443

2013年度入社 2年目

戦略技術センター(STC) スマートインフラストラクチャチーム

デザイン指向クラウドオーケストレーションソフトウェア

「CloudConductor」の開発・技術検証

最近の活動内容

Red Hat OpenStack Administration トレーニング受講中

来週からIaaSのスペシャリストとして戻ってきます

自己紹介

Page 3: チケット駆動でテスト駆動なアプリケーション開発

今日話すこと・話さないこと

Page 4: チケット駆動でテスト駆動なアプリケーション開発

CloudConductorチームの開発方針

開発で使っているツールの紹介

良い点・悪い点

今日話すこと

チケット駆動開発・テスト駆動開発とはなんぞや

ツールの詳しい説明・使い方 → Google先生に聞きましょう

今日話さないこと

Page 5: チケット駆動でテスト駆動なアプリケーション開発

CloudConductorチームのチケット駆動開発

Page 6: チケット駆動でテスト駆動なアプリケーション開発

コードに手を入れるときは先にチケットを作る

機能実装

バグ修正

リファクタリング

粒度が大きいものは子チケットに分割

1チケット=1コミットぐらい

チケット駆動開発(TiDD)

Page 7: チケット駆動でテスト駆動なアプリケーション開発

使っているツール

Page 8: チケット駆動でテスト駆動なアプリケーション開発

Git

分散型バージョン管理システム

ローカルでグチャグチャし放題なのが好き

ツール

Github(PJ的にOKなら)

ひたすら楽してバージョン管理 多分これが一番楽だと思います

Gitlab使ってます

Gitolite、GitBucket、Gitblit、Gitoriousなどご自由に

バージョン管理

Page 9: チケット駆動でテスト駆動なアプリケーション開発

Redmine

チケット管理と言えばこれ

プラグインでバージョン管理システムと連携可能

Gitとチケットを関連付ける

[#チケット番号]をブランチ名に入れてコミットする

git checkout-b bugfix/#12

git commit bugfix/#12

git push origin master

チケット管理

Page 10: チケット駆動でテスト駆動なアプリケーション開発

TiDDの嬉しいとこ・悲しいとこ

Page 11: チケット駆動でテスト駆動なアプリケーション開発

いつ誰がどの処理を書いたか分かる

嬉しいとこ

このコードを

書いたのは

誰だあっ

!!

Page 12: チケット駆動でテスト駆動なアプリケーション開発

トレーサビリティが高い

作業の見える化

タスクがコンパクトになる

嬉しいとこ

Page 13: チケット駆動でテスト駆動なアプリケーション開発

チケットはリアルタイムで増殖する

悲しいとこ

Page 14: チケット駆動でテスト駆動なアプリケーション開発

ロードマップの進捗は信じるな

作業計画・スケジュール管理は別途必要

定期的にチケットの棚卸が必要

悲しいとこ

Page 15: チケット駆動でテスト駆動なアプリケーション開発

CloudConductorチームのテスト駆動開発

Page 16: チケット駆動でテスト駆動なアプリケーション開発

機能を実装するときは先にテストコードを書く

テストを実行しながらコードを書く

事前にテストが失敗する(Red)ことを確認

とりあえずテストが成功する(Green)コードを書く

Greenを維持したままコードをきれいに修正

リポジトリにマージする時も自動でテスト

テスト駆動開発(TDD)

Page 17: チケット駆動でテスト駆動なアプリケーション開発

使っているツール

Page 18: チケット駆動でテスト駆動なアプリケーション開発

Rspec

Rubyのテスト用フレームワーク

振舞い(仕様)を記述するので振舞い駆動開発(BDD)とも

詳細は各自お調べください

テスト用フレームワーク

Page 19: チケット駆動でテスト駆動なアプリケーション開発

Guard

ファイルの変更を監視してシェル等を実行できるRubyGem

ソースファイルを監視してテストを自動実行

裏でGuardを起動してソースファイルを監視

コードの変更を保存するたびに対応するテストを自動実行

ファイル変更監視

|/|-|\ | 0M0) ニヤニヤ |⊂ / | /

Page 20: チケット駆動でテスト駆動なアプリケーション開発

Rubocop

Rubyの静的コード解析ツール

Ruby Style Guideに従ってコードをチェック

コーディングスタイルチェック

Page 21: チケット駆動でテスト駆動なアプリケーション開発

Jenkins

継続的インテグレーション(CI)と言えばこれ

更新を検知してテストを自動実行

定期的にバージョン管理システムをポーリング

新しいコミットがあればテスト用のシェルを実行

リポジトリのクローン

パッケージの最新化

Rspecの実行

Rubocopの実行

CI

Page 22: チケット駆動でテスト駆動なアプリケーション開発

TDDの嬉しいとこ・悲しいとこ

Page 23: チケット駆動でテスト駆動なアプリケーション開発

着実に動くコードが書ける

エラーを含んだコードが拡散しにくい

「私の環境では動いたんですけど(;^ω^)」を防止

嬉しいとこ

テストコード書くの めんどくさい 難しい

テストコードの動作って誰が保証するの?

テストコードのレビューも必要

悲しいとこ

Page 24: チケット駆動でテスト駆動なアプリケーション開発

上手く使ってPJをカイゼンしよう!