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

複雑な領域では 仮説検証を高速 に回したい。テス トの自動化はス ピードが落ちる要 因となり得る。ど んどん変わる前 提なので、テスト の資産価値が低く なりがち。