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.3k
テスト苦労開発 あるいはTDDの夢
Tech-on Meetup #03の講演資料です
yattom
November 12, 2018
Tweet
Share
More Decks by yattom
See All by yattom
テストのスライド(内容なし)
yattom
0
58
チームで壁をひとつ越えるためにインテグラル理論を使ってみよう
yattom
1
430
ペアプログラミング復習スライド
yattom
0
480
TDD Boot Camp 2020 Online #1 基調講演/ライブコーディング 復習
yattom
0
360
モブプログラミング 復習スライド
yattom
0
300
アジャイルとスクラムとは ~価値、原則、プラクティス~
yattom
0
14k
テストの自動化とテスト駆動開発
yattom
37
16k
アジャイルの風味をお持ち帰り
yattom
1
300
Happy! Lucky! XP!
yattom
4
1.5k
Other Decks in Programming
See All in Programming
Haze - Real time background blurring
chrisbanes
1
510
Итераторы в Go 1.23: зачем они нужны, как использовать, и насколько они быстрые?
lamodatech
0
770
これが俺の”自分戦略” プロセスを楽しんでいこう! - Developers CAREER Boost 2024
niftycorp
PRO
0
190
フロントエンドのディレクトリ構成どうしてる? Feature-Sliced Design 導入体験談
osakatechlab
8
4.1k
create_tableをしただけなのに〜囚われのuuid編〜
daisukeshinoku
0
250
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
3
360
KMP와 kotlinx.rpc로 서버와 클라이언트 동기화
kwakeuijin
0
140
たのしいparse.y
ydah
3
120
CQRS+ES の力を使って効果を感じる / Feel the effects of using the power of CQRS+ES
seike460
PRO
0
130
Effective Signals in Angular 19+: Rules and Helpers @ngbe2024
manfredsteyer
PRO
0
140
Spatial Rendering for Apple Vision Pro
warrenm
0
110
生成AIでGitHubソースコード取得して仕様書を作成
shukob
0
410
Featured
See All Featured
Unsuck your backbone
ammeep
669
57k
Designing for humans not robots
tammielis
250
25k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5k
Optimising Largest Contentful Paint
csswizardry
33
3k
Code Review Best Practice
trishagee
65
17k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
Building Applications with DynamoDB
mza
91
6.1k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Automating Front-end Workflow
addyosmani
1366
200k
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
上司は大きな目標 や方向を与えて、具 体的なアプローチ や手法は現場に任 せる 戦略 ←上司 戦術 作戦←現場
複雑な領域では 仮説検証を高速 に回したい。テス トの自動化はス ピードが落ちる要 因となり得る。ど んどん変わる前 提なので、テスト の資産価値が低く なりがち。