Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Shuji Watanabe
KEY, PPTX
7,148 views
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
オープンソースカンファレンス2012北海道 札幌Javaコミュニティでの講演資料
Technology
◦
Read more
30
Save
Share
Embed
Embed presentation
Download
Download as KEY, PPTX
1
/ 51
2
/ 51
3
/ 51
4
/ 51
5
/ 51
6
/ 51
7
/ 51
8
/ 51
9
/ 51
10
/ 51
11
/ 51
12
/ 51
13
/ 51
14
/ 51
15
/ 51
16
/ 51
17
/ 51
18
/ 51
19
/ 51
20
/ 51
21
/ 51
22
/ 51
23
/ 51
24
/ 51
25
/ 51
26
/ 51
27
/ 51
28
/ 51
29
/ 51
30
/ 51
31
/ 51
32
/ 51
33
/ 51
34
/ 51
35
/ 51
36
/ 51
37
/ 51
38
/ 51
39
/ 51
40
/ 51
41
/ 51
42
/ 51
43
/ 51
44
/ 51
45
/ 51
46
/ 51
47
/ 51
48
/ 51
49
/ 51
50
/ 51
51
/ 51
More Related Content
PDF
Εικόνες με λέξεις για τετράδιο αντιγραφής
by
theodora tz
PPT
Capuchinho Vermelho Contado Por NóS
by
curiososavista
PDF
Μου χαρίζεις την ουρά σου
by
http://users.sch.gr/violetastaurou/
PDF
Ένα ζιζάνιο στη ζύμη
by
http://users.sch.gr/violetastaurou/
PDF
Επαναληπτική δοκιμασία, Γλώσσα Α τάξης Ενότητα "Το χαμένο κλειδί"
by
Σπύρος Κυριαζίδης
PDF
El Arte de la Presentación (III) - El diseño
by
Alberto de Vega Luna
PPTX
η ευχή
by
Ioanna Chats
PDF
Χάσαμε τη γάτα
by
http://users.sch.gr/violetastaurou/
Εικόνες με λέξεις για τετράδιο αντιγραφής
by
theodora tz
Capuchinho Vermelho Contado Por NóS
by
curiososavista
Μου χαρίζεις την ουρά σου
by
http://users.sch.gr/violetastaurou/
Ένα ζιζάνιο στη ζύμη
by
http://users.sch.gr/violetastaurou/
Επαναληπτική δοκιμασία, Γλώσσα Α τάξης Ενότητα "Το χαμένο κλειδί"
by
Σπύρος Κυριαζίδης
El Arte de la Presentación (III) - El diseño
by
Alberto de Vega Luna
η ευχή
by
Ioanna Chats
Χάσαμε τη γάτα
by
http://users.sch.gr/violetastaurou/
Viewers also liked
PDF
モックライブラリを使ってきちんとユニットテストする #Objective-C
by
Shoichi Matsuda
PDF
第4回勉強会 単体テストのすすめ
by
hakoika-itwg
PPTX
Team Foundation Server 2015 Update 2.1アップグレード 手順書~ Team Foundation Server 2...
by
Masaki Takeda
PPTX
Team Foundation Server 2015 Update 1インストール 手順書
by
Masaki Takeda
PDF
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
by
貴志 上坂
PDF
SSMでマネージドEC2 #reinvent #cmdevio
by
Shuji Watanabe
PPTX
iOSテスト自動化勉強会 -やはり俺達の回帰テストは間違っている-
by
Yusuke Hosonuma
PPTX
もう怖くない!Team Foundation Server 2015 Update 1 ワークアイテム管理とテンプレートのカスタマイズ 概要
by
Masaki Takeda
PDF
テスト駆動開発のはじめ方
by
Shuji Watanabe
PPTX
Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー...
by
Masaki Takeda
PPTX
Visual Studio と Team Foundation Server / Visual Studio Team Services で実現するビル...
by
Masaki Takeda
PPTX
Team Foundation Server /Visual Studio Team Services 手順書
by
Masaki Takeda
PPTX
Visual Studio 2017 とTeam Foundation Server /Visual Studio Team Services で実現...
by
Masaki Takeda
PPTX
Visual Studio とTeam Foundation Server /Visual Studio Team Services で実現するビル...
by
Masaki Takeda
PDF
Nds#24 単体テスト
by
Kazumune Katagiri
PPTX
Team Foundation Server 2015 によるテスト工数削減
by
Masaki Takeda
モックライブラリを使ってきちんとユニットテストする #Objective-C
by
Shoichi Matsuda
第4回勉強会 単体テストのすすめ
by
hakoika-itwg
Team Foundation Server 2015 Update 2.1アップグレード 手順書~ Team Foundation Server 2...
by
Masaki Takeda
Team Foundation Server 2015 Update 1インストール 手順書
by
Masaki Takeda
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
by
貴志 上坂
SSMでマネージドEC2 #reinvent #cmdevio
by
Shuji Watanabe
iOSテスト自動化勉強会 -やはり俺達の回帰テストは間違っている-
by
Yusuke Hosonuma
もう怖くない!Team Foundation Server 2015 Update 1 ワークアイテム管理とテンプレートのカスタマイズ 概要
by
Masaki Takeda
テスト駆動開発のはじめ方
by
Shuji Watanabe
Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー...
by
Masaki Takeda
Visual Studio と Team Foundation Server / Visual Studio Team Services で実現するビル...
by
Masaki Takeda
Team Foundation Server /Visual Studio Team Services 手順書
by
Masaki Takeda
Visual Studio 2017 とTeam Foundation Server /Visual Studio Team Services で実現...
by
Masaki Takeda
Visual Studio とTeam Foundation Server /Visual Studio Team Services で実現するビル...
by
Masaki Takeda
Nds#24 単体テスト
by
Kazumune Katagiri
Team Foundation Server 2015 によるテスト工数削減
by
Masaki Takeda
Similar to JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
KEY
テストコードのリファクタリング
by
Shuji Watanabe
KEY
テスト初心者Androiderのためのソフトウェアテスト入門
by
Satoshi Watanabe
PDF
C# から java へのプログラム移植で体験したtddの効果は?
by
Shinichi Hirauchi
KEY
Unit testで定時帰宅!
by
Funato Takashi
PDF
アジャイル×テスト開発を考える
by
yasuohosotani
KEY
テスト駆動開発の導入ーペアプログラミングの学習効果ー
by
Shuji Watanabe
PPTX
Continuous delivery chapter4
by
favril1
PDF
SGT2013 技術トークス「アジャイルテスティング」
by
yasuohosotani
PPTX
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
by
Hideki Sugimoto
PDF
Spring bootでweb ユニットテスト編
by
なべ
PPT
ソフトウェアテストの再検討
by
ikedkana
KEY
テストとの上手な付き合い方
by
Akira Suenami
PDF
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
by
Tomoharu ASAMI
PDF
テストを分類してみよう!
by
Kenji Okumura
PDF
Code complete ch22_developper_test
by
Sho Shimauchi
PDF
最近の単体テスト
by
Ken Morishita
PPT
ユニットテスト 1日目
by
Yoshiki Shibukawa
PPTX
Junit4
by
ichikaz3
KEY
テスト駆動開発入門
by
Shuji Watanabe
PDF
ITS fidel
by
Fidel Softech P. Ltd
テストコードのリファクタリング
by
Shuji Watanabe
テスト初心者Androiderのためのソフトウェアテスト入門
by
Satoshi Watanabe
C# から java へのプログラム移植で体験したtddの効果は?
by
Shinichi Hirauchi
Unit testで定時帰宅!
by
Funato Takashi
アジャイル×テスト開発を考える
by
yasuohosotani
テスト駆動開発の導入ーペアプログラミングの学習効果ー
by
Shuji Watanabe
Continuous delivery chapter4
by
favril1
SGT2013 技術トークス「アジャイルテスティング」
by
yasuohosotani
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
by
Hideki Sugimoto
Spring bootでweb ユニットテスト編
by
なべ
ソフトウェアテストの再検討
by
ikedkana
テストとの上手な付き合い方
by
Akira Suenami
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
by
Tomoharu ASAMI
テストを分類してみよう!
by
Kenji Okumura
Code complete ch22_developper_test
by
Sho Shimauchi
最近の単体テスト
by
Ken Morishita
ユニットテスト 1日目
by
Yoshiki Shibukawa
Junit4
by
ichikaz3
テスト駆動開発入門
by
Shuji Watanabe
ITS fidel
by
Fidel Softech P. Ltd
More from Shuji Watanabe
PDF
Serverless - Developers.IO 2019
by
Shuji Watanabe
PDF
Ansible ハンズオン on AWS - DevelopersIO 2017
by
Shuji Watanabe
PDF
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
by
Shuji Watanabe
PPTX
ELBの概要と勘所
by
Shuji Watanabe
PPTX
AWSによるWebサイト構築と運用 - concrete5 編 -
by
Shuji Watanabe
PDF
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
by
Shuji Watanabe
PDF
CloudSearchによる全文検索 - CM:道 2014/08/01
by
Shuji Watanabe
PDF
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
by
Shuji Watanabe
PDF
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
by
Shuji Watanabe
PDF
s3+cloud frontによる静的コンテンツ配信 - Sphinx編 #cmdevio
by
Shuji Watanabe
PDF
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
by
Shuji Watanabe
PDF
テスト駆動開発へようこそ
by
Shuji Watanabe
PDF
ユースケースからテスト駆動開発へ
by
Shuji Watanabe
KEY
アジャイルテスティング
by
Shuji Watanabe
PDF
テストリストの見つけ方
by
Shuji Watanabe
PDF
TDDをはじめよう
by
Shuji Watanabe
KEY
Jenkins導入事例
by
Shuji Watanabe
KEY
ソフトウェア開発の3本柱
by
Shuji Watanabe
KEY
ユースケースからテスト駆動開発へ
by
Shuji Watanabe
KEY
UcDDBootCampSap0.1
by
Shuji Watanabe
Serverless - Developers.IO 2019
by
Shuji Watanabe
Ansible ハンズオン on AWS - DevelopersIO 2017
by
Shuji Watanabe
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
by
Shuji Watanabe
ELBの概要と勘所
by
Shuji Watanabe
AWSによるWebサイト構築と運用 - concrete5 編 -
by
Shuji Watanabe
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
by
Shuji Watanabe
CloudSearchによる全文検索 - CM:道 2014/08/01
by
Shuji Watanabe
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
by
Shuji Watanabe
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
by
Shuji Watanabe
s3+cloud frontによる静的コンテンツ配信 - Sphinx編 #cmdevio
by
Shuji Watanabe
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
by
Shuji Watanabe
テスト駆動開発へようこそ
by
Shuji Watanabe
ユースケースからテスト駆動開発へ
by
Shuji Watanabe
アジャイルテスティング
by
Shuji Watanabe
テストリストの見つけ方
by
Shuji Watanabe
TDDをはじめよう
by
Shuji Watanabe
Jenkins導入事例
by
Shuji Watanabe
ソフトウェア開発の3本柱
by
Shuji Watanabe
ユースケースからテスト駆動開発へ
by
Shuji Watanabe
UcDDBootCampSap0.1
by
Shuji Watanabe
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
1.
実践JUnit xUnitTestPatternsから学ぶユニットテスト
2012.06.16 OSC 2012 北海道 Shuji Watanabe (@shuji_w6e) 1
2.
本日の内容
3.
本日の内容
ユニットテストの目的
4.
本日の内容
ユニットテストの目的 ユニットテストの実践
5.
本日の内容
ユニットテストの目的 ユニットテストの実践 ユニットテストの問題
6.
SHUJI Watanabe Java デベロッパー
要件定義からテストまで全領域対応 Blog「やさしいデスマーチ」 札幌Javaコミュニティ Java, Groovy, JavaFX, MongoDB TDD, ユースケース駆動開発, テスト
7.
WEB+DB PRESS vol.69 JUnit実践入門
カスタムMatcher パラメータ化テスト テストの構造化 カスタムRule Cucumebr-junit
8.
XUnit Test Patterns
http://xunitpatterns.com/ Webで読めます(英語)
9.
ユニットテストの目的
10.
テストが
必要なワケ http://www.flickr.com/photos/essecento/4297955162/
11.
スキル不足 仕様変更
経験不足 複雑な要件 不安 http://www.flickr.com/photos/yopse/3772030400/
12.
不完全な人間
http://www.flickr.com/photos/sharynmorrow/3948100/
13.
ユニットテストとは? ソフトウェアを構成する最小部品のテスト 主にクラスやメソッドが対象 対象が期待される振る舞いをするかを検証
14.
テストの4象限モデル
ビジネス面 手動 機能テスト 受け入れテスト 製品を批評 チームを支援 ストーリーテスト ユーザビリティテスト 負荷テスト ユニットテスト パフォーマンステスト 自動 技術面
15.
テストの4象限モデル
ビジネス面 手動 機能テスト 受け入れテスト 製品を批評 チームを支援 ストーリーテスト ユーザビリティテスト 負荷テスト ユニットテスト パフォーマンステスト 自動 技術面
16.
テストの4象限モデル
ビジネス面 手動 機能テスト 受け入れテスト 製品を批評 チームを支援 ストーリーテスト ユーザビリティテスト 負荷テスト ユニットテスト パフォーマンステスト 自動 技術面
17.
チームを支援するテスト 自分のコードへの自信 積極的なリファクタリング 安心できるリリース
18.
技術面のテスト プログラマが行う プロダクションコードの作成を支援する ビジネス的価値 < 技術的負債の低減
19.
ユニットテストの特徴 プログラマが行い、 開発チームを支援し、 技術面に属し、 自動化が可能。
20.
セーフティネット
http://www.flickr.com/photos/32010000@N08/2987901256/
22.
品質とユニットテスト ユニットテストで直接の品質はあがらない 品質を高めるにはビジネス面のテストが必要 要件を満たしているか?(受け入れテスト) 使いやすいか?(ユーザビリティテスト) ユニットテストにより技術的負債が減る 変化や追加要求に強くなる
23.
ユニットテストの実践
24.
テストケースとは? テスト対象(sut: System Under
Test)に 特定の操作を行い、 実測値(Actual Value)が 期待値(Expected Value)となることを 検証(Verify)する
25.
テストデータのサンプリング 「完璧なテスト」はできない 少ない入力値で効率良くテストを行う 様々なテスト技法 境界値分析 同値クラス ペア構成テスト
26.
テストケースの条件 再現性がある 曖昧さがない 自動化されたテスト(Automated Test)
27.
4フェイズ テスト 初期化処理(SetUp) 実行(Exercise)
@Test public void test() { 検証(Verify) // SetUp // Exercise 後処理(TearDown) // Verify // TearDown }
28.
アサーション アサーションとは「こうなる」という表明 assertThat(actual, is(expected));
static importされたメソッド 自然言語風の記述 assert that actual is expected 変数名(actual, expected)
29.
Matcher API JUnit4の機能
一致する条件を定義したオブジェクト assertThat(actual, is(expected)); isはIsオブジェクトを返す Isはequalsを使った一致を行うMatcher 他にも多くのMatcherがある
30.
リファクタリング ユニットテストの主目的はリファクタリング 技術的負債を蓄積させない 安心してプロダクションコードを修正できる 内部実装に依存するテストは避けること
31.
ユニットテストと設計 ユニットテストはサンプルコード 自分が最初のユーザー(Eat your own
dog food) APIが使いやすいかをテストする テストできないAPIは再設計する
32.
例)計算機クラス public class Calculator
{ // 割り算を行うメソッド public int divide(int x, int y) { return x / y; } }
33.
例)テストコード @Test public void test()
{ // SetUp Calculator sut = new Calculator(); float expected = 1.5; // Exercise float actual = sut.divide(6, 4); // Verify assertThat(actual, is(expected)); }
34.
例)APIの設計ミス public class Calculator
{ // 割り算を行うメソッド public float divide(float x, float y) { return x / y; } }
35.
API設計とユニットテスト テストコードでAPI設計を検証出来る 期待値が検証出来ないAPI 使いにくい/解りにくいAPI テストコードを意識してAPIを設計する 突き詰めるとテスト駆動開発(TDD)
テストを先に書く(テストファースト)
36.
TDDのサイクル
1.設計する 5.リファクタリング Heuristics 2.テストを書く 4.テストを成功させる 3.コードを書く
37.
ドキュメントとしてのテスト テストコードは動作するドキュメント 具体的なサンプルコード 具体的な入力値と期待値 テスト成功による保証 JavaDocや仕様書より正確なドキュメント
38.
ユニットテストの問題
39.
不安定なテスト テスト結果が不定 ランダム性やシステム時間に依存したテスト 環境に依存したテスト テスト結果が一定でないと信頼できない オオカミ少年問題 常にすべてのテストが成功することを維持
40.
脆いテスト 少しの変更で多くのテストに影響する 疎結合になっていない データの影響範囲が大きい インターフェイス(API)の設計が甘い いずれもテストのメンテナンスコストを増大
41.
増えるテストコード 重複 DRY原則(Don t Repeat
Yourself) やり過ぎると可読性が落ちる テストはテストケースで独立すべき ネストしたクラスの利用(Enclosed) パラメータ化テスト
42.
Enclosedテストクラス テストクラスの構造化 テストをコンテキスト(文脈)で整理 @RunWiht(Enclosed.class) public
void ArrayListTest { public static class 初期状態のとき { @Test public void test() {} } public static class 要素が1つのとき { @Test public void test() {} } }
43.
Enclosedテストクラス テストクラスの構造化 テストをコンテキスト(文脈)で整理 @RunWiht(Enclosed.class) public
void ArrayListTest { public static class 初期状態のとき { @Test public void test() {} } public static class 要素が1つのとき { @Test public void test() {} } }
44.
パラメータ化テスト テストデータとテストメソッドを分離 @RunWiht(Theories.class) public void
CalculatorTest { @DataPoints public static Param[] PARAMS = { new Param(3, 4, 12), new Param(1, 5, 5), .... }; @Theory public void divideのテスト(Param p) { // } }
45.
パラメータ化テスト テストデータとテストメソッドを分離 @RunWiht(Theories.class) public void
CalculatorTest { @DataPoints public static Param[] PARAMS = { new Param(3, 4, 12), new Param(1, 5, 5), .... }; @Theory public void divideのテスト(Param p) { // } }
46.
詳しくはWEB+DB vol.69で JUnit実践入門 カスタムMatcher
パラメータ化テスト テストの構造化 カスタムRule Cucumebr-junit
47.
テストしにくいオブジェクト システム時間や外部API モックやスタブの活用 多用は禁物 内部実装に依存しないように注意して使う mockito, EasyMock
48.
まとめ
49.
ユニットテストを学ぼう 目的は開発の支援 基本となる「型」を習得(4フェイズテスト) テスト技法を学び効率良くサンプリング パターンを学ぶ API設計とテストは密な関係(TDD) テスティングフレームワークを活用する
50.
ユニットテストを超えて... 継続的インテグレーション(テスト) テストによる実行網羅率(カバレッジ) テスト駆動開発 自動化された受け入れテスト 振る舞い駆動開発 探索的テスト
51.
おしまい
Editor's Notes
#2
\n
#3
\n
#4
\n
#5
\n
#6
\n
#7
\n
#8
\n
#9
\n
#10
\n
#11
\n
#12
\n
#13
\n
#14
\n
#15
\n
#16
\n
#17
\n
#18
\n
#19
\n
#20
\n
#21
\n
#22
\n
#23
\n
#24
\n
#25
\n
#26
\n
#27
\n
#28
\n
#29
\n
#30
\n
#31
\n
#32
\n
#33
\n
#34
\n
#35
\n
#36
\n
#37
\n
#38
\n
#39
\n
#40
\n
#41
\n
#42
\n
#43
\n
#44
\n
#45
\n
#46
\n
#47
\n
#48
\n
Download