テスト苦労開発 あるいはTDDの夢

Acd2f6f7498ea41881e161e191aa7c02?s=47 yattom
November 12, 2018

テスト苦労開発 あるいはTDDの夢

Tech-on Meetup #03の講演資料です

Acd2f6f7498ea41881e161e191aa7c02?s=128

yattom

November 12, 2018
Tweet

Transcript

  1. テスト苦労開発 Test Dreaming Development あるいはTDDの夢

  2. None
  3. https://minna-de-ochakai.connpass.com/event/105897/

  4. None
  5. None
  6. とあるITサービス企業

  7. 今期目標: 自動テストカバレッジ100% • サービスが多数 • 小規模なチーム(2~5名)が多数 • 歴史、言語、FWなどさまざま • テストの自動化はほとんど進んでいない

    • 上司「今期の部署目標は、 自動テストカバレッジ100%とします」 http://villains.wikia.com/wiki/Pointy-Haired_Boss ※この話はフィクションです
  8. オレンジジュース100% と 自動テストカバレッジ100% の違いは? A. 本質的には同じ B. オレンジジュースは甘いがテストカバレッジは苦い C. その他

  9. オレンジジュース100% • ユーザーの価値に つながる • 外部品質である • 基準(コンプライアンス)が ある •

    測定方法と実現方法(プロ セス)がある 自動テストカバレッジ100% • 開発チームの価値/勝ちに つながる • 内部品質である • 基準は自分たちで定める • 測定方法と実現方法(プロ セス)がある
  10. https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 自動テストゼロに 比べれば どんな 自動テストでも ないよりマシ Yattom says:

  11. カバレッジの戦略 モダン (Ruby on Rails, Java) • ユニットテスト • JUnit,

    RSpec • テストカバレッジ=コードカバレッジ どレガシー (素PHP) • エンドツーエンドテスト • ブラウザ(Selenium IDE) • テストカバレッジ=画面・機能カバレッジ
  12. https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 最初のテスト自動化は やりやすいところから • 開発者がテストするという 習慣、プロセス、文化を作る • 自動テストを動かせる環境が生 まれる •

    あくまでとっかかり 100%は目指さない (近くない将来の夢くらいで) Yattom says:
  13. 上司の言うことは 都合よく聞く • 上司の意向と目的を理解 • そのうえで 自分たちに価値があることを する 上司は現場が勝手に 判断したらいい感じに

    なるよう指示を出す https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html Yattom says:
  14. 私が プログラマーだった頃

  15. ※この話はフィクションです 金融系開発 各社からの混成部隊 テスト期間のバグ修正祭り 締め切り前夜 終電間際 「安井さんこれ直してください!」

  16. ※この話はフィクションです 各社からの混成部隊 テスト期間のバグ修正祭り 締め切り前夜 終電間際 「安井さんこれ直してください!」 「直しました!」

  17. ※この話はフィクションです 締め切り前夜 終電間際 「安井さんこれ直してください!」 「直しました!」 「テストチームが確認するまで 待っててください!!!」

  18. None
  19. https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 開発者は自分のために テストをする • 責任と自信を持って 「できました」と言う 唯一の方法 自分が死なないために テストを自動化する •

    責任取って死ぬのは嫌だ • いつでも安全な状況を 自分で作る Yattom says:
  20. https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 開発チームは チームが楽しく働く ためにテストを書く • 全員がお互いに責任を持つ • 人の尻拭いはしたくないし 人に尻を拭かれたくない •

    チームの外に対して 「できました」と自信を持つ • イコール、お客様へ価値を 届けられる Yattom says:
  21. 無事ローンチを迎えた 新規サービス

  22. リリース前 リリース絶対間に合わせたい! 機能もできるだけ盛り込みたい! 些細な問題はリリース後に修正しましょう! がんばってください! がんばって開発しましょう! 機能もできるだけ作り込みますね! テストもちゃんとやるけど、 自動化する余裕はないですね…… https://www.braintrustgroup.com/2014/roles-scrum-attitudes-traits/

  23. リリース やったー! おつかれさまでした!

  24. リリース後 ユーザー獲得できてますね! 利便性あげる機能追加バンバンやりたい! 目立つ障害も対応しましょう! がんばってください! バンバン機能開発しましょう! 障害対応もしっかりしないとね! テストもちゃんとやるけど、 自動化する余裕はないですね……

  25. 自動化する余裕は ないですね…… ※この話はフィクションです

  26. それでもテストを自動化したかった • 高速にレガシー化するコード • 人の入れ替わりも多い (多くなる) • 機能追加で仕様がごちゃごちゃしてきた • リリース頻繁だと手動テストたいへん

    • テスト駆動開発したい ←ちょっと夢が入ってる
  27. なのでテストを自動化してみた 立ち上がる有志 プログラマの数名が自動化 に着手 メリットとコストをPOに説明 最初の自動テストは やりやすいところから 苦難 CIはあってもテストを 実行する環境がない

    データベースが絡む テストの方法がない ログインパズルを 越えられない (他システムとの連携) 脱落する同志 「俺はここまでだ」 壁を越えて 少しずつテストが増える CIで自動実行、レポート 有志の限定的活動から、 チームの取り組みに 完成の定義(DoD)にも 盛り込む
  28. https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 最初からテスト書くのは つらい あとからテスト書くのは もっとずっとつらい Yattom says:

  29. https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 開発者は自分のために テストをする • テストのROIを判断する • テストを自動化すべき? • どのテストを? •

    テスト駆動開発は使うべき? 「何を作ればいいのか手探り」 という状況では、 資産価値の高いテストを書くのは 困難 Yattom says:
  30. https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html テスト自動化は 自動テストを書く プラス 環境を整備する • テスティングフレームワーク ライブラリ • 開発環境、ローカル実行環境

    • CI環境 • 分析とレポート Yattom says:
  31. https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 1. どこでもいいから 書けるところから 2. 薄く細くレイヤーを つらぬくテスト (「曳光弾開発」) 3. 正常パターンを1つ

    エンドツーエンドで (ハッピーパス) Yattom says:
  32. RDB Model (Java) ブラウザ (HTML/CSS) ブラウザ (JS) 箱のラベルはあくまで一例 基本的な考え方

  33. RDB Model (Java) ブラウザ (HTML/CSS) ブラウザ (JS) 箱のラベルはあくまで一例 基本的な考え方 ①

    ② ③ ① ④ これが エンドツーエンド
  34. https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html プロダクトリスクが 大きいところに テストを書く • お金まわり • 獲得まわり(応答時間) • 複雑なロジックの

    確からしさ(確率的) • などなど Yattom says:
  35. https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 別サービスのテスト戦略 • しない • テスト用サービスを 提供してもらう • 自前でスタブを作る •

    テスト用データを 提供してもらう Yattom says:
  36. テスト用 スタブサーバ

  37. https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html いつテストを 自動化するか • できるなら最初から • 後からであれば、テスト可能性 (テスタビリティ)を設計で考慮す る •

    考慮できないなら、やっぱり最初 から小さくてもいいから早期に書 いて維持する Yattom says:
  38. https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html チームの成長に テスト技術も含める Yattom says: 実装 テスト 実装 テスト

  39. 四方山話

  40. ユーザー獲得に苦しんでいるサービス もうちょっと速くならないですか… われわれは責任あるプログラマーとして 品質を最重視します! きっちりテスト書くしCIも回すし コードレビューもするしDoDも完璧!

  41. https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 求められる内部品質は 自分たちで定める • いま求められるのは どんなレベル? • 保守的になりすぎ? 前衛的になりすぎ? •

    基本的には SLAから導かれる Yattom says:
  42. https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 開発者は自分のために テストをする QAチーム任せ バグの傾向と対策を 怠る プロダクトの品質 (外部品質)を把握しない Yattom says:

  43. https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 開発者は自分のために テストをする テストエンジニアは 開発者に協力する • 自動化の手法、ツール • テスト技法、設計手法 •

    ペアプロで双方学びながら Yattom says:
  44. None
  45. 上司は大きな目標 や方向を与えて、具 体的なアプローチ や手法は現場に任 せる 戦略 ←上司 戦術 作戦←現場

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