Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
テスト苦労開発 あるいはTDDの夢
Search
yattom
November 12, 2018
Programming
8
4.5k
テスト苦労開発 あるいはTDDの夢
Tech-on Meetup #03の講演資料です
yattom
November 12, 2018
Tweet
Share
More Decks by yattom
See All by yattom
テストのスライド(内容なし)
yattom
0
120
チームで壁をひとつ越えるためにインテグラル理論を使ってみよう
yattom
1
480
ペアプログラミング復習スライド
yattom
0
650
TDD Boot Camp 2020 Online #1 基調講演/ライブコーディング 復習
yattom
0
470
モブプログラミング 復習スライド
yattom
0
390
アジャイルとスクラムとは ~価値、原則、プラクティス~
yattom
0
15k
テストの自動化とテスト駆動開発
yattom
37
17k
アジャイルの風味をお持ち帰り
yattom
1
340
Happy! Lucky! XP!
yattom
4
1.7k
Other Decks in Programming
See All in Programming
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
360
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
380
【CA.ai #3】ワークフローから見直すAIエージェント — 必要な場面と“選ばない”判断
satoaoaka
0
230
ローターアクトEクラブ アメリカンナイト:川端 柚菜 氏(Japan O.K. ローターアクトEクラブ 会長):2720 Japan O.K. ロータリーEクラブ2025年12月1日卓話
2720japanoke
0
720
Why Kotlin? 電子カルテを Kotlin で開発する理由 / Why Kotlin? at Henry
agatan
2
6.9k
モデル駆動設計をやってみようワークショップ開催報告(Modeling Forum2025) / model driven design workshop report
haru860
0
260
非同期処理の迷宮を抜ける: 初学者がつまづく構造的な原因
pd1xx
1
700
How Software Deployment tools have changed in the past 20 years
geshan
0
28k
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
110
DSPy Meetup Tokyo #1 - はじめてのDSPy
masahiro_nishimi
1
160
配送計画の均等化機能を提供する取り組みについて(⽩⾦鉱業 Meetup Vol.21@六本⽊(数理最適化編))
izu_nori
0
140
30分でDoctrineの仕組みと使い方を完全にマスターする / phpconkagawa 2025 Doctrine
ttskch
3
790
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1032
470k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.6k
What's in a price? How to price your products and services
michaelherold
246
12k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
GraphQLとの向き合い方2022年版
quramy
50
14k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
121
20k
Thoughts on Productivity
jonyablonski
73
5k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Producing Creativity
orderedlist
PRO
348
40k
Transcript
テスト苦労開発 Test Dreaming Development あるいはTDDの夢
None
https://minna-de-ochakai.connpass.com/event/105897/
None
None
とあるITサービス企業
今期目標: 自動テストカバレッジ100% • サービスが多数 • 小規模なチーム(2~5名)が多数 • 歴史、言語、FWなどさまざま • テストの自動化はほとんど進んでいない
• 上司「今期の部署目標は、 自動テストカバレッジ100%とします」 http://villains.wikia.com/wiki/Pointy-Haired_Boss ※この話はフィクションです
オレンジジュース100% と 自動テストカバレッジ100% の違いは? A. 本質的には同じ B. オレンジジュースは甘いがテストカバレッジは苦い C. その他
オレンジジュース100% • ユーザーの価値に つながる • 外部品質である • 基準(コンプライアンス)が ある •
測定方法と実現方法(プロ セス)がある 自動テストカバレッジ100% • 開発チームの価値/勝ちに つながる • 内部品質である • 基準は自分たちで定める • 測定方法と実現方法(プロ セス)がある
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 自動テストゼロに 比べれば どんな 自動テストでも ないよりマシ Yattom says:
カバレッジの戦略 モダン (Ruby on Rails, Java) • ユニットテスト • JUnit,
RSpec • テストカバレッジ=コードカバレッジ どレガシー (素PHP) • エンドツーエンドテスト • ブラウザ(Selenium IDE) • テストカバレッジ=画面・機能カバレッジ
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 最初のテスト自動化は やりやすいところから • 開発者がテストするという 習慣、プロセス、文化を作る • 自動テストを動かせる環境が生 まれる •
あくまでとっかかり 100%は目指さない (近くない将来の夢くらいで) Yattom says:
上司の言うことは 都合よく聞く • 上司の意向と目的を理解 • そのうえで 自分たちに価値があることを する 上司は現場が勝手に 判断したらいい感じに
なるよう指示を出す https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html Yattom says:
私が プログラマーだった頃
※この話はフィクションです 金融系開発 各社からの混成部隊 テスト期間のバグ修正祭り 締め切り前夜 終電間際 「安井さんこれ直してください!」
※この話はフィクションです 各社からの混成部隊 テスト期間のバグ修正祭り 締め切り前夜 終電間際 「安井さんこれ直してください!」 「直しました!」
※この話はフィクションです 締め切り前夜 終電間際 「安井さんこれ直してください!」 「直しました!」 「テストチームが確認するまで 待っててください!!!」
None
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 開発者は自分のために テストをする • 責任と自信を持って 「できました」と言う 唯一の方法 自分が死なないために テストを自動化する •
責任取って死ぬのは嫌だ • いつでも安全な状況を 自分で作る Yattom says:
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 開発チームは チームが楽しく働く ためにテストを書く • 全員がお互いに責任を持つ • 人の尻拭いはしたくないし 人に尻を拭かれたくない •
チームの外に対して 「できました」と自信を持つ • イコール、お客様へ価値を 届けられる Yattom says:
無事ローンチを迎えた 新規サービス
リリース前 リリース絶対間に合わせたい! 機能もできるだけ盛り込みたい! 些細な問題はリリース後に修正しましょう! がんばってください! がんばって開発しましょう! 機能もできるだけ作り込みますね! テストもちゃんとやるけど、 自動化する余裕はないですね…… https://www.braintrustgroup.com/2014/roles-scrum-attitudes-traits/
リリース やったー! おつかれさまでした!
リリース後 ユーザー獲得できてますね! 利便性あげる機能追加バンバンやりたい! 目立つ障害も対応しましょう! がんばってください! バンバン機能開発しましょう! 障害対応もしっかりしないとね! テストもちゃんとやるけど、 自動化する余裕はないですね……
自動化する余裕は ないですね…… ※この話はフィクションです
それでもテストを自動化したかった • 高速にレガシー化するコード • 人の入れ替わりも多い (多くなる) • 機能追加で仕様がごちゃごちゃしてきた • リリース頻繁だと手動テストたいへん
• テスト駆動開発したい ←ちょっと夢が入ってる
なのでテストを自動化してみた 立ち上がる有志 プログラマの数名が自動化 に着手 メリットとコストをPOに説明 最初の自動テストは やりやすいところから 苦難 CIはあってもテストを 実行する環境がない
データベースが絡む テストの方法がない ログインパズルを 越えられない (他システムとの連携) 脱落する同志 「俺はここまでだ」 壁を越えて 少しずつテストが増える CIで自動実行、レポート 有志の限定的活動から、 チームの取り組みに 完成の定義(DoD)にも 盛り込む
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 最初からテスト書くのは つらい あとからテスト書くのは もっとずっとつらい Yattom says:
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 開発者は自分のために テストをする • テストのROIを判断する • テストを自動化すべき? • どのテストを? •
テスト駆動開発は使うべき? 「何を作ればいいのか手探り」 という状況では、 資産価値の高いテストを書くのは 困難 Yattom says:
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html テスト自動化は 自動テストを書く プラス 環境を整備する • テスティングフレームワーク ライブラリ • 開発環境、ローカル実行環境
• CI環境 • 分析とレポート Yattom says:
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 1. どこでもいいから 書けるところから 2. 薄く細くレイヤーを つらぬくテスト (「曳光弾開発」) 3. 正常パターンを1つ
エンドツーエンドで (ハッピーパス) Yattom says:
RDB Model (Java) ブラウザ (HTML/CSS) ブラウザ (JS) 箱のラベルはあくまで一例 基本的な考え方
RDB Model (Java) ブラウザ (HTML/CSS) ブラウザ (JS) 箱のラベルはあくまで一例 基本的な考え方 ①
② ③ ① ④ これが エンドツーエンド
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html プロダクトリスクが 大きいところに テストを書く • お金まわり • 獲得まわり(応答時間) • 複雑なロジックの
確からしさ(確率的) • などなど Yattom says:
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 別サービスのテスト戦略 • しない • テスト用サービスを 提供してもらう • 自前でスタブを作る •
テスト用データを 提供してもらう Yattom says:
テスト用 スタブサーバ
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html いつテストを 自動化するか • できるなら最初から • 後からであれば、テスト可能性 (テスタビリティ)を設計で考慮す る •
考慮できないなら、やっぱり最初 から小さくてもいいから早期に書 いて維持する Yattom says:
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html チームの成長に テスト技術も含める Yattom says: 実装 テスト 実装 テスト
四方山話
ユーザー獲得に苦しんでいるサービス もうちょっと速くならないですか… われわれは責任あるプログラマーとして 品質を最重視します! きっちりテスト書くしCIも回すし コードレビューもするしDoDも完璧!
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 求められる内部品質は 自分たちで定める • いま求められるのは どんなレベル? • 保守的になりすぎ? 前衛的になりすぎ? •
基本的には SLAから導かれる Yattom says:
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 開発者は自分のために テストをする QAチーム任せ バグの傾向と対策を 怠る プロダクトの品質 (外部品質)を把握しない Yattom says:
https://all-free-download.com/free-vector/download/creative-scroll-paper-background-vector-set_544278.html 開発者は自分のために テストをする テストエンジニアは 開発者に協力する • 自動化の手法、ツール • テスト技法、設計手法 •
ペアプロで双方学びながら Yattom says:
None
上司は大きな目標 や方向を与えて、具 体的なアプローチ や手法は現場に任 せる 戦略 ←上司 戦術 作戦←現場
複雑な領域では 仮説検証を高速 に回したい。テス トの自動化はス ピードが落ちる要 因となり得る。ど んどん変わる前 提なので、テスト の資産価値が低く なりがち。