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

研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
atsushi061452
 

Kürzlich hochgeladen (12)

ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
 
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
 
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルLoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイント
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltd
 

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