Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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
100
チームで壁をひとつ越えるためにインテグラル理論を使ってみよう
yattom
1
470
ペアプログラミング復習スライド
yattom
0
600
TDD Boot Camp 2020 Online #1 基調講演/ライブコーディング 復習
yattom
0
440
モブプログラミング 復習スライド
yattom
0
370
アジャイルとスクラムとは ~価値、原則、プラクティス~
yattom
0
15k
テストの自動化とテスト駆動開発
yattom
37
17k
アジャイルの風味をお持ち帰り
yattom
1
330
Happy! Lucky! XP!
yattom
4
1.7k
Other Decks in Programming
See All in Programming
今だからこそ入門する Server-Sent Events (SSE)
nearme_tech
PRO
3
260
ProxyによるWindow間RPC機構の構築
syumai
3
1.2k
ファインディ株式会社におけるMCP活用とサービス開発
starfish719
0
2.1k
Improving my own Ruby thereafter
sisshiki1969
1
160
Updates on MLS on Ruby (and maybe more)
sylph01
1
180
250830 IaCの選定~AWS SAMのLambdaをECSに乗り換えたときの備忘録~
east_takumi
0
400
Zendeskのチケットを Amazon Bedrockで 解析した
ryokosuge
3
320
ユーザーも開発者も悩ませない TV アプリ開発 ~Compose の内部実装から学ぶフォーカス制御~
taked137
0
190
プロポーザル駆動学習 / Proposal-Driven Learning
mackey0225
2
1.3k
パッケージ設計の黒魔術/Kyoto.go#63
lufia
3
440
@Environment(\.keyPath)那么好我不允许你们不知道! / atEnvironment keyPath is so good and you should know it!
lovee
0
130
2025 年のコーディングエージェントの現在地とエンジニアの仕事の変化について
azukiazusa1
24
12k
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
The Invisible Side of Design
smashingmag
301
51k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
113
20k
Mobile First: as difficult as doing things right
swwweet
224
9.9k
Six Lessons from altMBA
skipperchong
28
4k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
Docker and Python
trallard
46
3.6k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.1k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Agile that works and the tools we love
rasmusluckow
330
21k
Thoughts on Productivity
jonyablonski
70
4.8k
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
上司は大きな目標 や方向を与えて、具 体的なアプローチ や手法は現場に任 せる 戦略 ←上司 戦術 作戦←現場
複雑な領域では 仮説検証を高速 に回したい。テス トの自動化はス ピードが落ちる要 因となり得る。ど んどん変わる前 提なので、テスト の資産価値が低く なりがち。