SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
テストの自動化を考える前に
bleis-tift
January 11, 2015
自己紹介
id:bleis-tift / @bleis
なごやではたらくゆるふわ Fer
最近の Java はわからない人
言語仕様であればそれなりに
今日話さないこと
特定のツールに関する話
特定の言語に過度に依存した話
各話題の詳細
今日話すこと
テストの自動化を考える前に
考えてほしいことについて
前職で実際にあった出来事
マネージャ 今回はテストファーストでやります
ぐるぐる はい!
マネージャ なので、実装に入る前に
テスト仕様書を完成させます
ぐるぐる はい?
マネージャ テスト仕様書は実装開始までに
Fix され、以降の変更は認めません
ぐるぐる はいぃぃぃぃ?
不幸になるパターン
現状のコードのまま自動単体テストを
追加しようとする
とりあえず、単体テスト (画面のテスト) から
自動化する
自動化の労力を軽視した状態で
自動化を推し進める
現状のコードのまま自動単体テストを追加?
画面から DB まで結合したクソコード
テストコードを追加できないコード
テストコードが書きやすいコードを書くのは
難しい
現状のままで自動化できるとは思わないこと!
どうすればいいか
テストコードが書きやすいコードを勉強し、
実践しよう!
テストコードが書きやすいコードの勉強
Java であれば、オブジェクト指向プログラミング
その他の言語は今日はいいでしょう
テストコードが書きやすいコードの実践
テストコードを先に書く
後から書く?そんな時間作れない
TDD の実践
既存のコードにテストコードを
書きたい場合は?
しかも、テストコードが書きにくい場合は?
テストコードが書けるように変更
してからテストを書く?
それでコードを壊してしまったら・・・
どうすればいいか
立ち向かう意義があるかどうか考える
あるなら、武器を増やし、
人数をそろえて立ち向かう
レガシーコードに立ち向かう意義
どちらのデメリットの方が大きいか考える
コードを壊してしまうこと
テストコードがない状況が今後続くこと
前者の方が大きい場合はあえて立ち向かう必要は
ないのでは?
レガシーコードと戦う武器
人数をそろえる
Q. コードを壊してしまう可能性を下げるには?
A. 常にペアで作業しましょう
他にも、統合テスト等を自動化してから、
それを安全ネットにして進めるという方法も
併用できるなら併用する
とりあえず、
単体テスト画面のテスト から自動化?
画面のテストはテストの自動化の中でも
難しい部類に入る
ちょっとした仕様変更で、
大量のテストを直す羽目に・・・
タイミングが絡むと少ない量でも実行時間が・・・
(主に工数的に) 痛い目を見て、テスト自動化
に拒絶反応を示すようになったら最悪
画面のテストは難しいので、
最初に手を出すのはやめておこう!
何から手を出すのがいいか
画面のテストより
粒度の小さいテストから始めましょう!
粒度の小さいテスト
JUnit 等の単体テストのためのツールでやる
ようなテスト
一つの画面単位のテストを「単体テスト」と
呼ばないようにする
(政治的な理由等で) 難しいなら、JUnit 等で
やるテストを「ユニットテスト」とかして分
ける
そもそもの話
画面ありきで開発するスタイルを見直してみると
いいかも?
画面ありきの開発スタイルは DDD 本にある
「Smart UI アンチパターン」に陥りやすい
今までのやり方を変え、ドメインモデルを
構築
テストは、ドメインモデルに対してやる
ロジックに関するテストを
画面のテストでやらない
自動化の労力
テストの自動化には労力が必要
今まで見てきたとおり、そもそもテストの自動
化は簡単ではない
更に、自動化のための作業自体も多い
単体テストであればテストコードを書く必要がある
これを軽く見ていると、思ったより効果がな
いと感じる
「大変な割にあまり効果なかったから、
次からは今まで通りで」
闇雲に自動化せず、
効率も考えて自動化の戦略を立てよう!
チームの状況は様々
そもそも、誰もテストの自動化をしたことが
ないチーム
実力が低く、NPE などのバグばかり
出しているチーム
綺麗なコードは書けるが、仕様と違う動きを
出すことが多いチーム
などなど
誰もテストの自動化をしたことがないチーム
いきなり実プロジェクトでやるのはリスクが
高すぎる
誰かが自動化を勉強してからにする
そのための時間を作ってもらえるようにする
働きかけ
テスト自動化の重要性をひたすら上に説くとか
実力の低いチーム
単体テストに重点を置く
NPE などのバグを早期解決できるようにする
バグを埋め込んでから見つけるまでの時間が
早ければ早いほど、修正にかかるコストは
低い
仕様と違う動きを出してしまうチーム
統合テストやシステムテストに重点を置く
仕様との差異をチェックできる仕組みの構築
もちろん、ハードルは高い
まとめ
現状、テストの自動化は簡単とは
言えないので心してかかりましょう
テストの自動化を
より気軽にできる世界にしたいものです
おわり

Weitere ähnliche Inhalte

Was ist angesagt?

価値あるシステムテスト自動化の実現By friendly
価値あるシステムテスト自動化の実現By friendly価値あるシステムテスト自動化の実現By friendly
価値あるシステムテスト自動化の実現By friendly
Tatsuya Ishikawa
 

Was ist angesagt? (20)

20121019 jenkins勉強会lt資料
20121019 jenkins勉強会lt資料20121019 jenkins勉強会lt資料
20121019 jenkins勉強会lt資料
 
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
 
Automation test.ssf alpha
Automation test.ssf alphaAutomation test.ssf alpha
Automation test.ssf alpha
 
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
 
iOSアプリ開発でもTravis CI #eytokyo
iOSアプリ開発でもTravis CI #eytokyoiOSアプリ開発でもTravis CI #eytokyo
iOSアプリ開発でもTravis CI #eytokyo
 
価値あるシステムテスト自動化の実現By friendly
価値あるシステムテスト自動化の実現By friendly価値あるシステムテスト自動化の実現By friendly
価値あるシステムテスト自動化の実現By friendly
 
ノンプログラマのためのSelenium de DDTはじめの一歩
ノンプログラマのためのSelenium de DDTはじめの一歩ノンプログラマのためのSelenium de DDTはじめの一歩
ノンプログラマのためのSelenium de DDTはじめの一歩
 
Selenium boot campの紹介
Selenium boot campの紹介Selenium boot campの紹介
Selenium boot campの紹介
 
Azureを使って手軽にブラウザテストの自動化をはじめよう
Azureを使って手軽にブラウザテストの自動化をはじめようAzureを使って手軽にブラウザテストの自動化をはじめよう
Azureを使って手軽にブラウザテストの自動化をはじめよう
 
1時間で分かるSTA (Software Test Automation) #stac2014
1時間で分かるSTA (Software Test Automation) #stac20141時間で分かるSTA (Software Test Automation) #stac2014
1時間で分かるSTA (Software Test Automation) #stac2014
 
20150418 システムテスト自動化 第二章
20150418 システムテスト自動化 第二章20150418 システムテスト自動化 第二章
20150418 システムテスト自動化 第二章
 
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
 
異業種でのテスト自動化の実際
異業種でのテスト自動化の実際異業種でのテスト自動化の実際
異業種でのテスト自動化の実際
 
20150418 システムテスト自動化 第一章
20150418 システムテスト自動化 第一章20150418 システムテスト自動化 第一章
20150418 システムテスト自動化 第一章
 
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
 
20161218 selenium study4
20161218 selenium study420161218 selenium study4
20161218 selenium study4
 
SI-Toolkitでテスト自動化を実現する現場で遭遇したこと
SI-Toolkitでテスト自動化を実現する現場で遭遇したことSI-Toolkitでテスト自動化を実現する現場で遭遇したこと
SI-Toolkitでテスト自動化を実現する現場で遭遇したこと
 
手動テストからの移行大作戦
手動テストからの移行大作戦手動テストからの移行大作戦
手動テストからの移行大作戦
 
詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasst詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasst
 
JavaScript Unit Test Why? What? How?
JavaScript Unit Test Why? What? How?JavaScript Unit Test Why? What? How?
JavaScript Unit Test Why? What? How?
 

Andere mochten auch (9)

効果の低いテストの話
効果の低いテストの話効果の低いテストの話
効果の低いテストの話
 
札束でExcelを殴る
札束でExcelを殴る札束でExcelを殴る
札束でExcelを殴る
 
Lean & Agile ♥ UX Design
Lean & Agile ♥ UX DesignLean & Agile ♥ UX Design
Lean & Agile ♥ UX Design
 
lua_nginx_module JSON-RPC 2.0 Batch Request
lua_nginx_module JSON-RPC 2.0 Batch Requestlua_nginx_module JSON-RPC 2.0 Batch Request
lua_nginx_module JSON-RPC 2.0 Batch Request
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
 
Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析
 
TDDのこれまで、そしてこれから
TDDのこれまで、そしてこれからTDDのこれまで、そしてこれから
TDDのこれまで、そしてこれから
 
Redmineって何ができるの?
Redmineって何ができるの?Redmineって何ができるの?
Redmineって何ができるの?
 
TDDBC Fukuoka Day1
TDDBC Fukuoka Day1TDDBC Fukuoka Day1
TDDBC Fukuoka Day1
 

Ähnlich wie テストの自動化を考える前に

Node塾 講義その6 テスト駆動java script 読書会 1回目
Node塾 講義その6 テスト駆動java script 読書会 1回目Node塾 講義その6 テスト駆動java script 読書会 1回目
Node塾 講義その6 テスト駆動java script 読書会 1回目
Nomo Kiyoshi
 
デグレを防ぐテストの書き方
デグレを防ぐテストの書き方デグレを防ぐテストの書き方
デグレを防ぐテストの書き方
Wataru Terada
 
APIテスト自動化とテストピラミッド
APIテスト自動化とテストピラミッドAPIテスト自動化とテストピラミッド
APIテスト自動化とテストピラミッド
友隆 浅黄
 
第2回nseg slideshare
第2回nseg slideshare第2回nseg slideshare
第2回nseg slideshare
ko ty
 

Ähnlich wie テストの自動化を考える前に (11)

Node塾 講義その6 テスト駆動java script 読書会 1回目
Node塾 講義その6 テスト駆動java script 読書会 1回目Node塾 講義その6 テスト駆動java script 読書会 1回目
Node塾 講義その6 テスト駆動java script 読書会 1回目
 
デグレを防ぐテストの書き方
デグレを防ぐテストの書き方デグレを防ぐテストの書き方
デグレを防ぐテストの書き方
 
.Netconf
.Netconf.Netconf
.Netconf
 
Selenium WebDriver + python で E2Eテスト自動化
Selenium WebDriver + python で E2Eテスト自動化Selenium WebDriver + python で E2Eテスト自動化
Selenium WebDriver + python で E2Eテスト自動化
 
APIテスト自動化とテストピラミッド
APIテスト自動化とテストピラミッドAPIテスト自動化とテストピラミッド
APIテスト自動化とテストピラミッド
 
第2回nseg slideshare
第2回nseg slideshare第2回nseg slideshare
第2回nseg slideshare
 
失敗から学ぶテスト自動化導入で大切なこと
失敗から学ぶテスト自動化導入で大切なこと失敗から学ぶテスト自動化導入で大切なこと
失敗から学ぶテスト自動化導入で大切なこと
 
JBehaveの導入やってみたよ!
JBehaveの導入やってみたよ!JBehaveの導入やってみたよ!
JBehaveの導入やってみたよ!
 
Testandcooking
TestandcookingTestandcooking
Testandcooking
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前に
 
Reducing the operational load of rpa
Reducing the operational load of rpaReducing the operational load of rpa
Reducing the operational load of rpa
 

Mehr von bleis tift

yield and return (poor English ver)
yield and return (poor English ver)yield and return (poor English ver)
yield and return (poor English ver)
bleis tift
 
F#で始めるスマートフォンアプリ
F#で始めるスマートフォンアプリF#で始めるスマートフォンアプリ
F#で始めるスマートフォンアプリ
bleis tift
 

Mehr von bleis tift (20)

PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。
 
F#の基礎(?)
F#の基礎(?)F#の基礎(?)
F#の基礎(?)
 
No more Legacy documents
No more Legacy documentsNo more Legacy documents
No more Legacy documents
 
解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compiler解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compiler
 
.NET系開発者から見たJava
.NET系開発者から見たJava.NET系開発者から見たJava
.NET系開発者から見たJava
 
SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~
 
F#事例発表
F#事例発表F#事例発表
F#事例発表
 
yield and return (poor English ver)
yield and return (poor English ver)yield and return (poor English ver)
yield and return (poor English ver)
 
yieldとreturnの話
yieldとreturnの話yieldとreturnの話
yieldとreturnの話
 
F#の基礎(嘘)
F#の基礎(嘘)F#の基礎(嘘)
F#の基礎(嘘)
 
現実(えくせる)と戦う話
現実(えくせる)と戦う話現実(えくせる)と戦う話
現実(えくせる)と戦う話
 
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
 
async/await不要論
async/await不要論async/await不要論
async/await不要論
 
F#によるFunctional Programming入門
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門
 
VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)
 
Better C#の脱却を目指して
Better C#の脱却を目指してBetter C#の脱却を目指して
Better C#の脱却を目指して
 
モナドハンズオン前座
モナドハンズオン前座モナドハンズオン前座
モナドハンズオン前座
 
JSX / Haxe / TypeScript
JSX / Haxe / TypeScriptJSX / Haxe / TypeScript
JSX / Haxe / TypeScript
 
自分戦略
自分戦略自分戦略
自分戦略
 
F#で始めるスマートフォンアプリ
F#で始めるスマートフォンアプリF#で始めるスマートフォンアプリ
F#で始めるスマートフォンアプリ
 

Kürzlich hochgeladen

Kürzlich hochgeladen (11)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

テストの自動化を考える前に