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
テスト苦労開発 Test Dreaming Development あるいはTDDの夢
Slide 2
Slide 2 text
No content
Slide 3
Slide 3 text
https://minna-de-ochakai.connpass.com/event/105897/
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
No content
Slide 6
Slide 6 text
とあるITサービス企業
Slide 7
Slide 7 text
今期目標: 自動テストカバレッジ100% ● サービスが多数 ● 小規模なチーム(2~5名)が多数 ● 歴史、言語、FWなどさまざま ● テストの自動化はほとんど進んでいない ● 上司「今期の部署目標は、 自動テストカバレッジ100%とします」 http://villains.wikia.com/wiki/Pointy-Haired_Boss ※この話はフィクションです
Slide 8
Slide 8 text
オレンジジュース100% と 自動テストカバレッジ100% の違いは? A. 本質的には同じ B. オレンジジュースは甘いがテストカバレッジは苦い C. その他
Slide 9
Slide 9 text
オレンジジュース100% ● ユーザーの価値に つながる ● 外部品質である ● 基準(コンプライアンス)が ある ● 測定方法と実現方法(プロ セス)がある 自動テストカバレッジ100% ● 開発チームの価値/勝ちに つながる ● 内部品質である ● 基準は自分たちで定める ● 測定方法と実現方法(プロ セス)がある
Slide 10
Slide 10 text
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 自動テストゼロに 比べれば どんな 自動テストでも ないよりマシ Yattom says:
Slide 11
Slide 11 text
カバレッジの戦略 モダン (Ruby on Rails, Java) ● ユニットテスト ● JUnit, RSpec ● テストカバレッジ=コードカバレッジ どレガシー (素PHP) ● エンドツーエンドテスト ● ブラウザ(Selenium IDE) ● テストカバレッジ=画面・機能カバレッジ
Slide 12
Slide 12 text
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 最初のテスト自動化は やりやすいところから ● 開発者がテストするという 習慣、プロセス、文化を作る ● 自動テストを動かせる環境が生 まれる ● あくまでとっかかり 100%は目指さない (近くない将来の夢くらいで) Yattom says:
Slide 13
Slide 13 text
上司の言うことは 都合よく聞く ● 上司の意向と目的を理解 ● そのうえで 自分たちに価値があることを する 上司は現場が勝手に 判断したらいい感じに なるよう指示を出す https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html Yattom says:
Slide 14
Slide 14 text
私が プログラマーだった頃
Slide 15
Slide 15 text
※この話はフィクションです 金融系開発 各社からの混成部隊 テスト期間のバグ修正祭り 締め切り前夜 終電間際 「安井さんこれ直してください!」
Slide 16
Slide 16 text
※この話はフィクションです 各社からの混成部隊 テスト期間のバグ修正祭り 締め切り前夜 終電間際 「安井さんこれ直してください!」 「直しました!」
Slide 17
Slide 17 text
※この話はフィクションです 締め切り前夜 終電間際 「安井さんこれ直してください!」 「直しました!」 「テストチームが確認するまで 待っててください!!!」
Slide 18
Slide 18 text
No content
Slide 19
Slide 19 text
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 開発者は自分のために テストをする ● 責任と自信を持って 「できました」と言う 唯一の方法 自分が死なないために テストを自動化する ● 責任取って死ぬのは嫌だ ● いつでも安全な状況を 自分で作る Yattom says:
Slide 20
Slide 20 text
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 開発チームは チームが楽しく働く ためにテストを書く ● 全員がお互いに責任を持つ ● 人の尻拭いはしたくないし 人に尻を拭かれたくない ● チームの外に対して 「できました」と自信を持つ ● イコール、お客様へ価値を 届けられる Yattom says:
Slide 21
Slide 21 text
無事ローンチを迎えた 新規サービス
Slide 22
Slide 22 text
リリース前 リリース絶対間に合わせたい! 機能もできるだけ盛り込みたい! 些細な問題はリリース後に修正しましょう! がんばってください! がんばって開発しましょう! 機能もできるだけ作り込みますね! テストもちゃんとやるけど、 自動化する余裕はないですね…… https://www.braintrustgroup.com/2014/roles-scrum-attitudes-traits/
Slide 23
Slide 23 text
リリース やったー! おつかれさまでした!
Slide 24
Slide 24 text
リリース後 ユーザー獲得できてますね! 利便性あげる機能追加バンバンやりたい! 目立つ障害も対応しましょう! がんばってください! バンバン機能開発しましょう! 障害対応もしっかりしないとね! テストもちゃんとやるけど、 自動化する余裕はないですね……
Slide 25
Slide 25 text
自動化する余裕は ないですね…… ※この話はフィクションです
Slide 26
Slide 26 text
それでもテストを自動化したかった ● 高速にレガシー化するコード ● 人の入れ替わりも多い (多くなる) ● 機能追加で仕様がごちゃごちゃしてきた ● リリース頻繁だと手動テストたいへん ● テスト駆動開発したい ←ちょっと夢が入ってる
Slide 27
Slide 27 text
なのでテストを自動化してみた 立ち上がる有志 プログラマの数名が自動化 に着手 メリットとコストをPOに説明 最初の自動テストは やりやすいところから 苦難 CIはあってもテストを 実行する環境がない データベースが絡む テストの方法がない ログインパズルを 越えられない (他システムとの連携) 脱落する同志 「俺はここまでだ」 壁を越えて 少しずつテストが増える CIで自動実行、レポート 有志の限定的活動から、 チームの取り組みに 完成の定義(DoD)にも 盛り込む
Slide 28
Slide 28 text
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 最初からテスト書くのは つらい あとからテスト書くのは もっとずっとつらい Yattom says:
Slide 29
Slide 29 text
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 開発者は自分のために テストをする ● テストのROIを判断する ● テストを自動化すべき? ● どのテストを? ● テスト駆動開発は使うべき? 「何を作ればいいのか手探り」 という状況では、 資産価値の高いテストを書くのは 困難 Yattom says:
Slide 30
Slide 30 text
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html テスト自動化は 自動テストを書く プラス 環境を整備する ● テスティングフレームワーク ライブラリ ● 開発環境、ローカル実行環境 ● CI環境 ● 分析とレポート Yattom says:
Slide 31
Slide 31 text
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 1. どこでもいいから 書けるところから 2. 薄く細くレイヤーを つらぬくテスト (「曳光弾開発」) 3. 正常パターンを1つ エンドツーエンドで (ハッピーパス) Yattom says:
Slide 32
Slide 32 text
RDB Model (Java) ブラウザ (HTML/CSS) ブラウザ (JS) 箱のラベルはあくまで一例 基本的な考え方
Slide 33
Slide 33 text
RDB Model (Java) ブラウザ (HTML/CSS) ブラウザ (JS) 箱のラベルはあくまで一例 基本的な考え方 ① ② ③ ① ④ これが エンドツーエンド
Slide 34
Slide 34 text
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html プロダクトリスクが 大きいところに テストを書く ● お金まわり ● 獲得まわり(応答時間) ● 複雑なロジックの 確からしさ(確率的) ● などなど Yattom says:
Slide 35
Slide 35 text
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 別サービスのテスト戦略 ● しない ● テスト用サービスを 提供してもらう ● 自前でスタブを作る ● テスト用データを 提供してもらう Yattom says:
Slide 36
Slide 36 text
テスト用 スタブサーバ
Slide 37
Slide 37 text
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html いつテストを 自動化するか ● できるなら最初から ● 後からであれば、テスト可能性 (テスタビリティ)を設計で考慮す る ● 考慮できないなら、やっぱり最初 から小さくてもいいから早期に書 いて維持する Yattom says:
Slide 38
Slide 38 text
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html チームの成長に テスト技術も含める Yattom says: 実装 テスト 実装 テスト
Slide 39
Slide 39 text
四方山話
Slide 40
Slide 40 text
ユーザー獲得に苦しんでいるサービス もうちょっと速くならないですか… われわれは責任あるプログラマーとして 品質を最重視します! きっちりテスト書くしCIも回すし コードレビューもするしDoDも完璧!
Slide 41
Slide 41 text
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 求められる内部品質は 自分たちで定める ● いま求められるのは どんなレベル? ● 保守的になりすぎ? 前衛的になりすぎ? ● 基本的には SLAから導かれる Yattom says:
Slide 42
Slide 42 text
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 開発者は自分のために テストをする QAチーム任せ バグの傾向と対策を 怠る プロダクトの品質 (外部品質)を把握しない Yattom says:
Slide 43
Slide 43 text
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 開発者は自分のために テストをする テストエンジニアは 開発者に協力する ● 自動化の手法、ツール ● テスト技法、設計手法 ● ペアプロで双方学びながら Yattom says:
Slide 44
Slide 44 text
No content
Slide 45
Slide 45 text
上司は大きな目標 や方向を与えて、具 体的なアプローチ や手法は現場に任 せる 戦略 ←上司 戦術 作戦←現場
Slide 46
Slide 46 text
複雑な領域では 仮説検証を高速 に回したい。テス トの自動化はス ピードが落ちる要 因となり得る。ど んどん変わる前 提なので、テスト の資産価値が低く なりがち。