20150621 agilesamrai basecamp tdd事例紹介
TRANSCRIPT
![Page 1: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/1.jpg)
安心してください。 テスト書いてます
ENJOJI Yasuto
![Page 2: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/2.jpg)
円城寺康人ともうします
p アジャイルサムライ横浜道場 スタッフ
p XP祭り2015 実行委員
p 認定スクラムマスター
p Twitter @yenjoji
![Page 3: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/3.jpg)
円城寺康人ともうします
p 株式会社 アットウェア Rouleur p 某大手通信会社の法人向けサービス開発プロジェクト
p アジャイル・チョット・シッテルおじさん p 開発者兼Scrumのアドバイザー的なことをやってます
p プログラミングしたいのでスクラムマスターはやってません
p 最近では Atlassian Bamboo と連動するズゴックを職場に配置したりしてます
![Page 4: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/4.jpg)
![Page 5: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/5.jpg)
おしながき
p 私の現場のはなし p TDDをはじめてから今まで
p はじめた理由 p 取っ掛かり p メンバーふえた p チームも増えた
p どんな技術をつかっているか p フレームワークとか
p で実際どうしているのか p 結果どんなかんじか
![Page 6: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/6.jpg)
私達の現場
p 某大手通信会社の法人向けクラウドサービス新規開発 p 2014年1月 スタート p 顧客社員+協力会社(マルチベンダー)の混成チーム
p 開発プロセスはScrum+XP
![Page 7: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/7.jpg)
私達の現場
p アジャイル開発経験は様々 p TDD経験も様々
p わたし自身も本格的なTDD開発経験はなし p 自動テストは書いたことはある
![Page 8: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/8.jpg)
なぜTDD
p インクリメンタルな開発 p 継続的にサービスを成長させるていく過程で品質を担保するためには自動テストが必須
p 顧客の意識 p 今どきテスト書かないなんてありえない p テストを書くコストはかける価値のあるコストとの認識
![Page 9: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/9.jpg)
TDDの導入
p 新規プロジェクト p チームメンバー
p 11人 p 1チーム p クライアント+マルチベンダー混成チーム
![Page 10: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/10.jpg)
TDDの導入
p 最初はとかく不安になることが多い p どうやればいいのか? p やり方はあっているのか?
p そこに対して“大丈夫です”と言ってくれる人の存在は大きいと思います。
p ベロシティが全然上がらない中それでもテストを書き続けた
![Page 11: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/11.jpg)
TDDの導入
p TDD師匠の存在 p @setoazusa 氏の存在
p ペアプロ p お互いにフォローしながら p TDDのプロセスについてティーチング&コーチングしながら
p (いい意味で)意識高い系人材が集まった p 品質への意識
![Page 12: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/12.jpg)
チームのスケールアップ
p チーム人数増加 p 11人ー>21人 p 1チームー>2チーム
![Page 13: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/13.jpg)
チームのスケールアップ
p 人が増えると、また違った価値観の人が増えてきます。 p ペアプロしたくないとか p テスト書きたくないとか
p ただ、私達のチームにはそういう人がいなかったため、新しいメンバーにチームのやり方を教えればOKでした。
![Page 14: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/14.jpg)
チームのスケールアップ
p ペアプロ p テストを書くことに慣れていない人のトレーニング
p 周りが自然にテストを書いている風景 p 巻き込まれ感・長いものに巻かれる感 p そもそもメンバーみんな意識高い系?
p 完成(Done)の定義に明記!
![Page 15: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/15.jpg)
チームのスケールアウト
p 隣のグループにヨコ展開 p 新規に2チーム追加 p 全部で4チームに
![Page 16: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/16.jpg)
チームのスケールアウト
p 更にチームを増やす p アジャイル開発経験のないメンバー p そもそもやったことないです!!!
p 何も知らない人にはうまく言いくるめてTDDでやってもらってみました。
p 最初につまずかないように気をつけました。
![Page 17: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/17.jpg)
チームのスケールアウト
p すでにあるチームからメンバー加入 p 取っ掛かりの障害排除 p 相談できる環境を用意する
p ペアプロ p 軌道に乗るまではがっちりと p やっぱり直接コーチング・ティーチング
p 当然 完成(Done)の定義に! p ベロシティに一喜一憂しない
![Page 18: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/18.jpg)
システムのアーキテクチャ
p フロントエンド p Backbone.js or Angular.js のどちらか(チームによる)
p バックエンド p Java (Spring) でのRESTful API p Spring Batch を利用したバッチ処理 p 永続化は JPA(Hibernate)
![Page 19: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/19.jpg)
フロントのテスト
p Backbone.js p Mocha+chaiでのユニットテスト p Casper.jsでの機能テスト
p Angular.js p Karma+jasmineでのユニットテスト p ProtractorでのE2Eテスト
![Page 20: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/20.jpg)
バックエンドのテスト
p Controllerのテスト p Spring MVC Test を利用したHTTP経由でのアクセスをエミュレートしたテスト
p ビジネスロジックはJmockitでモック p ビジネスロジックのテスト
p データベースアクセスを実施 p DBUnitを使用 p 外部サービスなどはJmockitでモック
![Page 21: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/21.jpg)
リグレッションテスト
p Geb+Spockで自動化 p 一部手動テストもあり p 導入していないチームもある
p 毎朝9時にAtlassian Bambooから自動実行 p エラーがあったらHipChatに通知
![Page 22: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/22.jpg)
テストを取り巻く環境
p 開発管理ツールはAtlassian p Jira + Jira Agile
p BTS/ITS p Confluence
p Wiki p Stash
p Gitリポジトリ管理 p Bamboo
p CIサーバー p テストケース管理はTestlinkかRedmine+Impasse p メトリクスはSonarQube
![Page 23: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/23.jpg)
テストを取り巻く環境
p 現場がツールの導入に積極的 p Atlassianとか p Dockerとか p ChefとかServerspecとか p SonarQubeとか
p 新しい技術もいいと思ったら積極的に採用 p Gebとか
p Scrumの検査と適用による継続的なカイゼン
![Page 24: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/24.jpg)
こういう環境で 日々TDDに励んでます!
![Page 25: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/25.jpg)
![Page 26: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/26.jpg)
![Page 27: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/27.jpg)
残 念
![Page 28: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/28.jpg)
残 念
![Page 29: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/29.jpg)
実際問題TDDしてません
p やっていないこと p “Red -> Green -> Refactor” p いわゆる3原則への準拠
p やっていること p “Coding -> Test ー> Refactor” p 安心してください。テスト書いてます。
![Page 30: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/30.jpg)
それでも僕は(TDD)やってない
p チームの合意のもと p 形にこだわらない p 自動テストちゃんとは書くということについては合意
p チケットのススメ方として結合テストケース(手動)は最初に書く p 広義ではテストファースト?
![Page 31: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/31.jpg)
Not dogma followers
p TDDにメリットがあることを認めつつもチームがよりやりやすい方法を選択
p プラクティスに縛られて嫌になるよりはテストがある方が嬉しいという結論
p チームが最終的に品質を担保できることが目標 p 自動テスト、手動テスト、QAチームが相互に補完しあう関係
p 定期的にふりかえりを行うことによりその時の最適解を模索する
![Page 32: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/32.jpg)
わたしがTDD自動テストで得たもの
![Page 33: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/33.jpg)
アパティア
![Page 34: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/34.jpg)
心の平穏
p テストがあることの安心感 p 常に実行され続けている p 自分の目以外でチェックされる
p リファクタリングできる p 壊していないことの確認 p 健全なコード=バグりにくい
![Page 35: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/35.jpg)
心の平穏
p デグレ怖いからの開放 p ファーストリリース(2014/7)から6回のアップデートリリースを行うも大きな障害なし
p リリース前には次のリリースの開発に専念出来る p 虫つぶしに追われていません
p むしろリリース作業をサクッと終わらせて飲みに行ける!
![Page 36: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/36.jpg)
私達がやった、やっていること
p チームがその時のベターと思われることを選択しました p TDDを強制しない p 自動テストは書く
p 定期的にふりかえって見なおしてます p チームの成熟度とかメンバーによって今後やり方は変わっていくと思います
![Page 37: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/37.jpg)
ご静聴ありがとうございました
![Page 38: 20150621 Agilesamrai Basecamp TDD事例紹介](https://reader033.vdocuments.net/reader033/viewer/2022052913/55c7862bbb61ebd2348b47ed/html5/thumbnails/38.jpg)
参考URL
p 私の現場での技術的な課題とその解決について p http://www.slideshare.net/setoazusa/jug-2014-fall-how-to-intoroduce-tdd/
p 私達がテストファーストしないことについての技術的バックグラウンドについての考察 p http://blog.fieldnotes.jp/entry/2014/05/07/225129