Submit Search
Upload
組織にテストを書く文化を根付かせる戦略と戦術
•
246 likes
•
76,565 views
Takuto Wada
Follow
組織にテストを書く文化を根付かせる戦略と戦術 Feb 16, 2016 @ 日本OSS推進フォーラム
Read less
Read more
Technology
Report
Share
Report
Share
1 of 33
Download now
Download to read offline
Recommended
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
TDD のこころ
TDD のこころ
Takuto Wada
私にとってのテスト
私にとってのテスト
Takuto Wada
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Recommended
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
TDD のこころ
TDD のこころ
Takuto Wada
私にとってのテスト
私にとってのテスト
Takuto Wada
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
例外設計における大罪
例外設計における大罪
Takuto Wada
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
Tokoroten Nakayama
Agile Quality アジャイル品質パターン (QA2AQ)
Agile Quality アジャイル品質パターン (QA2AQ)
Hironori Washizaki
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
Serverless時代のJavaについて
Serverless時代のJavaについて
Amazon Web Services Japan
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
トランクベース開発を活用して爆速に開発した話
トランクベース開発を活用して爆速に開発した話
Tier_IV
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。
toshihiro ichitani
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
MLOps入門
MLOps入門
Hiro Mura
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
増田 亨
Oss貢献超入門
Oss貢献超入門
Michihito Shigemura
事例 アジャイルと自動化 後半(ヤフオク!アプリでの自動テストの事例紹介) at Ques vol.7( #ques7 ) 11/20/2015
事例 アジャイルと自動化 後半(ヤフオク!アプリでの自動テストの事例紹介) at Ques vol.7( #ques7 ) 11/20/2015
Yahoo!デベロッパーネットワーク
OSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係について
Takuto Wada
More Related Content
What's hot
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
例外設計における大罪
例外設計における大罪
Takuto Wada
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
Tokoroten Nakayama
Agile Quality アジャイル品質パターン (QA2AQ)
Agile Quality アジャイル品質パターン (QA2AQ)
Hironori Washizaki
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
Serverless時代のJavaについて
Serverless時代のJavaについて
Amazon Web Services Japan
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
トランクベース開発を活用して爆速に開発した話
トランクベース開発を活用して爆速に開発した話
Tier_IV
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。
toshihiro ichitani
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
MLOps入門
MLOps入門
Hiro Mura
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
増田 亨
Oss貢献超入門
Oss貢献超入門
Michihito Shigemura
What's hot
(20)
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
例外設計における大罪
例外設計における大罪
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
Agile Quality アジャイル品質パターン (QA2AQ)
Agile Quality アジャイル品質パターン (QA2AQ)
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Serverless時代のJavaについて
Serverless時代のJavaについて
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
トランクベース開発を活用して爆速に開発した話
トランクベース開発を活用して爆速に開発した話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
MLOps入門
MLOps入門
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
Oss貢献超入門
Oss貢献超入門
Viewers also liked
事例 アジャイルと自動化 後半(ヤフオク!アプリでの自動テストの事例紹介) at Ques vol.7( #ques7 ) 11/20/2015
事例 アジャイルと自動化 後半(ヤフオク!アプリでの自動テストの事例紹介) at Ques vol.7( #ques7 ) 11/20/2015
Yahoo!デベロッパーネットワーク
OSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係について
Takuto Wada
SQiP2016 SIG8
SQiP2016 SIG8
Masanori Kaneko
テストを書く文化を育てる戦略と戦術
テストを書く文化を育てる戦略と戦術
Takuto Wada
愛せないコードを書くには人生はあまりにも短い
愛せないコードを書くには人生はあまりにも短い
Takuto Wada
コミュニティ活動と企業の相互作用 ~コミュニティへの貢献と組織活動への還元~
コミュニティ活動と企業の相互作用 ~コミュニティへの貢献と組織活動への還元~
Masahiro Hidaka
「機械学習 By スタンフォード大学」勉強会 2015.09.11
「機械学習 By スタンフォード大学」勉強会 2015.09.11
Minoru Chikamune
Viewers also liked
(7)
事例 アジャイルと自動化 後半(ヤフオク!アプリでの自動テストの事例紹介) at Ques vol.7( #ques7 ) 11/20/2015
事例 アジャイルと自動化 後半(ヤフオク!アプリでの自動テストの事例紹介) at Ques vol.7( #ques7 ) 11/20/2015
OSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係について
SQiP2016 SIG8
SQiP2016 SIG8
テストを書く文化を育てる戦略と戦術
テストを書く文化を育てる戦略と戦術
愛せないコードを書くには人生はあまりにも短い
愛せないコードを書くには人生はあまりにも短い
コミュニティ活動と企業の相互作用 ~コミュニティへの貢献と組織活動への還元~
コミュニティ活動と企業の相互作用 ~コミュニティへの貢献と組織活動への還元~
「機械学習 By スタンフォード大学」勉強会 2015.09.11
「機械学習 By スタンフォード大学」勉強会 2015.09.11
More from Takuto Wada
unassert - encourage reliable programming by writing assertions in production
unassert - encourage reliable programming by writing assertions in production
Takuto Wada
OSS についてあれこれ
OSS についてあれこれ
Takuto Wada
power-assert, mechanism and philosophy
power-assert, mechanism and philosophy
Takuto Wada
アジャイルサムライの次に読む技術書
アジャイルサムライの次に読む技術書
Takuto Wada
テスト用ライブラリ power-assert
テスト用ライブラリ power-assert
Takuto Wada
Reviewing RESTful Web Apps
Reviewing RESTful Web Apps
Takuto Wada
power-assert in JavaScript
power-assert in JavaScript
Takuto Wada
TDD のこころ @ OSH2014
TDD のこころ @ OSH2014
Takuto Wada
SQLアンチパターン - 開発者を待ち受ける25の落とし穴
SQLアンチパターン - 開発者を待ち受ける25の落とし穴
Takuto Wada
ペアプログラミング ホントのところ
ペアプログラミング ホントのところ
Takuto Wada
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
Takuto Wada
TDDBC お題
TDDBC お題
Takuto Wada
DevLOVE DDDBC
DevLOVE DDDBC
Takuto Wada
TDDBC Fukuoka Day1
TDDBC Fukuoka Day1
Takuto Wada
js テスト放浪記
js テスト放浪記
Takuto Wada
xUTP Chapter19 (2). Testcase Class
xUTP Chapter19 (2). Testcase Class
Takuto Wada
xUTP Chapter26. Dependency Injection
xUTP Chapter26. Dependency Injection
Takuto Wada
xUTP Chapter27 Generated Value
xUTP Chapter27 Generated Value
Takuto Wada
The only one big thing every programmer should know
The only one big thing every programmer should know
Takuto Wada
10+1 Things you should know about JavaScript testing
10+1 Things you should know about JavaScript testing
Takuto Wada
More from Takuto Wada
(20)
unassert - encourage reliable programming by writing assertions in production
unassert - encourage reliable programming by writing assertions in production
OSS についてあれこれ
OSS についてあれこれ
power-assert, mechanism and philosophy
power-assert, mechanism and philosophy
アジャイルサムライの次に読む技術書
アジャイルサムライの次に読む技術書
テスト用ライブラリ power-assert
テスト用ライブラリ power-assert
Reviewing RESTful Web Apps
Reviewing RESTful Web Apps
power-assert in JavaScript
power-assert in JavaScript
TDD のこころ @ OSH2014
TDD のこころ @ OSH2014
SQLアンチパターン - 開発者を待ち受ける25の落とし穴
SQLアンチパターン - 開発者を待ち受ける25の落とし穴
ペアプログラミング ホントのところ
ペアプログラミング ホントのところ
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
TDDBC お題
TDDBC お題
DevLOVE DDDBC
DevLOVE DDDBC
TDDBC Fukuoka Day1
TDDBC Fukuoka Day1
js テスト放浪記
js テスト放浪記
xUTP Chapter19 (2). Testcase Class
xUTP Chapter19 (2). Testcase Class
xUTP Chapter26. Dependency Injection
xUTP Chapter26. Dependency Injection
xUTP Chapter27 Generated Value
xUTP Chapter27 Generated Value
The only one big thing every programmer should know
The only one big thing every programmer should know
10+1 Things you should know about JavaScript testing
10+1 Things you should know about JavaScript testing
Recently uploaded
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
Recently uploaded
(9)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
組織にテストを書く文化を根付かせる戦略と戦術
1.
組織にテストを書く 文化を根付かせる 戦略と戦術 和田 卓人 (@t_wada) Feb
16, 2016 @ 日本OSS推進フォーラム
2.
和田 卓人 id: t-wada @t_wada github:
twada
3.
gihyo.jpの連載 『[動画で解説]和田卓人の テスト駆動開発 講座』 http://gihyo.jp/dev/serial/01/tdd/ 全20回すべて動画付き解説 ニコニコ動画でも見れます WEB+DB過去記事の特設サイトと動画も
4.
5.
Do you write
tests?
6.
戦略編
7.
• レガシーコード改善に正解はない • テスト自動化は銀の弾丸ではない •
導入方法にも銀の弾丸はない • 導入を目的にしてはならない • 状況は現場によって全て異なる 銀の弾丸は無い
8.
ストレス テスト
9.
自動テスト ストレス
10.
テストを書く時間がないので はなく、テストを書かないか ら時間がなくなるのです。 James Grenning
11.
• 文化の醸成は年単位の事業になる • 「テストを書く時間がない」のでは なく「テストを書かないから時間が なくなる」 •
「動くコードに触れるな」と戦う。 触れなければコードは緩やかに死ん でいく 文化を変える
12.
動くコードに触れなければ死あるのみ
13.
• ToBe ではなく
AsIs と NotToBe からはじめる • 隣の芝は青い。気にしないこと • 人は自分の速度でしか成長できない • プロジェクトもプロジェクトの速度でしか成長 できない • 「まわりはもうみんなやっていますよ」は劇薬 なので用法用量を守って使うこと イマココから始める
14.
• 快不快で動く人、損得で動く人 • リファクタリングの快感 •
回帰テストのお得感 • メトリクスの達成感 • そしてビジネス価値 人を知る
15.
• 人はそれぞれの度合いで変化に対して 身構える • 前例がない、事例がない •
「リファクタリングのジレンマ」 • リファクタリングを独立タスクにす ると、そのタスクは着手されない 変えることの難しさ
16.
事前に許可を得るより、あと で許してもらう方が楽 Grace Hopper It is
easier to ask forgiveness than it is to get permission
17.
• 仕様が固まることはない • 開発が終わることはない •
理解は常に深化する • スキルも常に深化する • 技術も常に進化する すべては変化する
18.
技術的負債の四象限 設計する時間がないん だからしょうがない 今すぐリリースしない といけない。あとでど うにかしよう レイヤー化? なにそ れ? もっとこうすべきだっ たなぁ 無鉄砲 慎重 意図的 不注意 http://bliki-ja.github.io/TechnicalDebtQuadrant/
19.
• 品質が「わかる」ようになる • わかることこそ大事 •
体重計に乗るだけでは痩せない • テストを書くだけでは、良くはならない • 品質を上げるのは設計とプログラミング • 再設計とリファクタリングをテストで支える テストは品質を上げない
20.
戦術編
21.
• 「何が一番やばいですか?」 • 最も困っているところから •
お金、個人情報、…… • 新機能開発から • バグ修正のところから • 静的解析でピンポイントに どこからやるか
22.
• リスク • 手動テストのコスト •
自動化コスト 塹壕からのテスト戦術
23.
• 一度に多くの人を変えるのは難しい • 育てるのではなく、自ら育つように •
教えられる人を増やす • ペアプロで一人ずつ • 若手のホープか、ベテランからか だれとやるか
24.
• 最初から全部やろうとしない • テスト駆動にこだわるな •
テストファーストにこだわるな • 「ユニット」テストにこだわるな • テストの実行速度にこだわるな • テストの網羅性にこだわるな こだわるな
25.
• 良いユニットテストの指標にも優先 度がある • 再現、繰り返し可能
(Repeatable) • 独立している (Independent) • 他はそれからでいい こだわろう
26.
• 何はなくとも読むべし • 「仕様化テスト」のススメ •
「絞り込み点」を探す レガシーコード改善ガイド
27.
• 割れ窓理論 • メトリクスを取ろう •
カバレッジが低いうちは測定は効果大 • 小うるさいツールを乗りこなす • 分母分子を見ない。時間を追った変化 を見る。傾きを見る。 見える化
28.
• 動的テストと静的テスト • 全体のメトリクスを計測して俯瞰の 視点を得る •
部分的なメトリクスを計測し続けて 傾向を見る • PMD, rubocop, Coverity,… 静的解析を使いこなす
29.
• コードレビューのインフラに投資す る • github,
gitlab, gitbucket • WIP pull request • コードを見る文化、見られる文化を 育てる コードレビュー
30.
• テストがないのは既に設計が悪い兆候 • 設計/実装を変えるのが前提 •
実装のテストを書かないこと • テストがカバーする範囲に遊びを持た せ、カバー範囲内をリファクタリング • 状況に応じて E2E テストを使いこなす 設計の可動域を確保する
31.
• サンプルとデモが大事 • 真似してもらう土台を作る •
最初はサンプルのコピペでも良い • テストのある生活を体験してもらう ことが大事 • 次にテストのメンテナンスを学ぶ 背中を見せる
32.
• できるからやるのではない • やるからできるようになる •
あなたが書けるようにならなければ、 誰も書けるようにはならない Social Change starts with YOU
33.
テストはプロの嗜み ご清聴ありがとうございました
Download now