77
JUnitを使ったJavaのテスト入門 @megascus 13620日木曜日

Junitを使ったjavaのテスト入門

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Junitを使ったjavaのテスト入門

JUnitを使ったJavaのテスト入門@megascus

13年6月20日木曜日

Page 2: Junitを使ったjavaのテスト入門

•名前: 久保 智

•twitter id: @megascus

•JJUG幹事

•JJUG幹事募集中です!

自己紹介

13年6月20日木曜日

Page 3: Junitを使ったjavaのテスト入門

注意

13年6月20日木曜日

Page 4: Junitを使ったjavaのテスト入門

本日はJava初心者向けです

13年6月20日木曜日

Page 5: Junitを使ったjavaのテスト入門

高度な内容はでてきません

13年6月20日木曜日

Page 6: Junitを使ったjavaのテスト入門

アジェンダ

•なぜJUnitを使うのか

•JUnitの使い方

•JUnitを効果的に使うために

13年6月20日木曜日

Page 7: Junitを使ったjavaのテスト入門

アジェンダ

•なぜJUnitを使うのか

•JUnitの使い方

•JUnitを効果的に使うために

13年6月20日木曜日

Page 8: Junitを使ったjavaのテスト入門

なぜJUnitを使うのか

13年6月20日木曜日

Page 9: Junitを使ったjavaのテスト入門

動かない時の確認方法

13年6月20日木曜日

Page 10: Junitを使ったjavaのテスト入門

どうしていますか?

13年6月20日木曜日

Page 11: Junitを使ったjavaのテスト入門

デバッグプリント

13年6月20日木曜日

Page 12: Junitを使ったjavaのテスト入門

System.out.println()

13年6月20日木曜日

Page 13: Junitを使ったjavaのテスト入門

デバッグプリント

public void doSomething (Human human) {

System.out.println(human.getFamillyName()); //変数の中に何が入ってるのかを //標準出力に出力する }

13年6月20日木曜日

Page 14: Junitを使ったjavaのテスト入門

デバッカー

13年6月20日木曜日

Page 15: Junitを使ったjavaのテスト入門

動いているプログラムに介入する

13年6月20日木曜日

Page 16: Junitを使ったjavaのテスト入門

デバッカー

13年6月20日木曜日

Page 17: Junitを使ったjavaのテスト入門

よくやる(はず)

13年6月20日木曜日

Page 18: Junitを使ったjavaのテスト入門

これらの問題点

13年6月20日木曜日

Page 19: Junitを使ったjavaのテスト入門

記録・再生ができない

13年6月20日木曜日

Page 20: Junitを使ったjavaのテスト入門

問題点

•テストした結果を他の人が簡単に参照することが出来ない。(画面キャプチャとかとれば出来る)

•もう一度テストしたいときは、改めて人間が操作しないといけない。(あらためてデバッグする)

13年6月20日木曜日

Page 21: Junitを使ったjavaのテスト入門

ここで考えて下さい

13年6月20日木曜日

Page 22: Junitを使ったjavaのテスト入門

本当に問題ですか?

13年6月20日木曜日

Page 23: Junitを使ったjavaのテスト入門

本当に問題ですか?

•一回動いたら動かなくなること無いから最初に一回だけ確認すればいいよね。

13年6月20日木曜日

Page 24: Junitを使ったjavaのテスト入門

そんなことはないです

13年6月20日木曜日

Page 25: Junitを使ったjavaのテスト入門

例えばWindows

13年6月20日木曜日

Page 26: Junitを使ったjavaのテスト入門

例えばWindows

http://www.theverge.com/2012/7/4/3136851/windows-logo-backwards-evolution

13年6月20日木曜日

Page 27: Junitを使ったjavaのテスト入門

例えばWindows

•数年に一度のメジャーアップデート(XPとかVistaとか7とか8とか)

•それより短い期間でのサービスパック(SP1とかSP2とか)

•毎月のセキュリティパッチ

13年6月20日木曜日

Page 28: Junitを使ったjavaのテスト入門

動かなくなった例

http://itpro.nikkeibp.co.jp/article/NEWS/20130416/471121/

13年6月20日木曜日

Page 29: Junitを使ったjavaのテスト入門

ここでソフトウェアについて

13年6月20日木曜日

Page 30: Junitを使ったjavaのテスト入門

ソフトウェア

•一度リリースしたソフトウェアを更新しないで済むことはあまりない

•最近のソフトウェアは複雑なので、修正した内容がどこに影響を与えるか判りにくい

•更新後にすでにある機能が動作するかを確認すること(回帰テスト)は必須

13年6月20日木曜日

Page 31: Junitを使ったjavaのテスト入門

回帰テスト

13年6月20日木曜日

Page 32: Junitを使ったjavaのテスト入門

回帰テスト

•ソフトウェアプログラムに変更を加えた際、それによって新たな不具合が起きていないかを検証するテストのこと

•今までのテストをやり直すため、人手でやるとすごい時間がかかる

•一ヶ月単位のリリースだと、毎月回帰テストが必要で大変

13年6月20日木曜日

Page 33: Junitを使ったjavaのテスト入門

ここまで説明した上で

13年6月20日木曜日

Page 34: Junitを使ったjavaのテスト入門

JUnitができることは何か

13年6月20日木曜日

Page 35: Junitを使ったjavaのテスト入門

JUnitができること

•特定のメソッドの引数と戻り値が期待された値と同じかを確認するプログラムを書くことができる

13年6月20日木曜日

Page 36: Junitを使ったjavaのテスト入門

なぜJUnitを使うのか

13年6月20日木曜日

Page 37: Junitを使ったjavaのテスト入門

なぜJUnitを使うのか

•テストした内容を記録・再生するため

•いつでも再生できるようにしておくことで、デグレード(元々動いた機能が動かなくなること)を防ぎやすくなる

•回帰テストの自動化

13年6月20日木曜日

Page 38: Junitを使ったjavaのテスト入門

なぜJUnitを使うのか

•人手でやることを機械が勝手にやってくれるようになれば楽ですよね

13年6月20日木曜日

Page 39: Junitを使ったjavaのテスト入門

逆にJUnitを使わない場合

•使い捨てソフトウェア

•数年に一度しかリリースされないソフトウェア

•JUnitでやりたい内容を人力でがんばる場合

13年6月20日木曜日

Page 40: Junitを使ったjavaのテスト入門

アジェンダ

•なぜJUnitを使うのか

•JUnitの使い方

•JUnitを効果的に使うために

13年6月20日木曜日

Page 41: Junitを使ったjavaのテスト入門

JUnitの使い方

13年6月20日木曜日

Page 42: Junitを使ったjavaのテスト入門

JUnitの入手方法

13年6月20日木曜日

Page 43: Junitを使ったjavaのテスト入門

IDE使ってればすでに入ってます

※Eclipse、NetBeans、IntelliJなど

13年6月20日木曜日

Page 44: Junitを使ったjavaのテスト入門

JUnitができること

13年6月20日木曜日

Page 45: Junitを使ったjavaのテスト入門

JUnitができること

•特定のメソッドの引数と戻り値が期待された値と同じかを確認するプログラムを書くことができる

13年6月20日木曜日

Page 46: Junitを使ったjavaのテスト入門

JUnitを実際に書いてみる

※ここから先はEclipseでやってみます

13年6月20日木曜日

Page 47: Junitを使ったjavaのテスト入門

テスト対象を書く(Math.java)

13年6月20日木曜日

Page 48: Junitを使ったjavaのテスト入門

右クリックからJUnit Test Caseを選択

13年6月20日木曜日

Page 49: Junitを使ったjavaのテスト入門

そのままnextを押す

13年6月20日木曜日

Page 50: Junitを使ったjavaのテスト入門

テストしたいメソッドを選択してFinish

13年6月20日木曜日

Page 51: Junitを使ったjavaのテスト入門

初回はライブラリを追加するか聞かれるのでOK

13年6月20日木曜日

Page 52: Junitを使ったjavaのテスト入門

テストのテンプレート完成

13年6月20日木曜日

Page 53: Junitを使ったjavaのテスト入門

テストのライブラリをインポート

13年6月20日木曜日

Page 54: Junitを使ったjavaのテスト入門

テスト対象メソッドに@Testアノテーション

13年6月20日木曜日

Page 55: Junitを使ったjavaのテスト入門

動かしてみる

作成したテストクラスを右クリックしてRun AsからJUnitTestを選択するだけ

13年6月20日木曜日

Page 56: Junitを使ったjavaのテスト入門

動いた

けれども失敗

13年6月20日木曜日

Page 57: Junitを使ったjavaのテスト入門

failメソッドはテストを失敗させる

13年6月20日木曜日

Page 58: Junitを使ったjavaのテスト入門

テストを成功させる

13年6月20日木曜日

Page 59: Junitを使ったjavaのテスト入門

テストを成功させる

13年6月20日木曜日

Page 60: Junitを使ったjavaのテスト入門

テストを失敗させる(2)

13年6月20日木曜日

Page 61: Junitを使ったjavaのテスト入門

テストを失敗させる(2)

なぜ失敗したのかのメッセージがでる

13年6月20日木曜日

Page 62: Junitを使ったjavaのテスト入門

assertEquals(expected, actual)

•expected(推定した値)がactual(実際の値)と等しければテストが成功、等しくなければ失敗

•JUnitに慣れるまではこれを書くのがお仕事になる

13年6月20日木曜日

Page 63: Junitを使ったjavaのテスト入門

今までのを並べてみる

13年6月20日木曜日

Page 64: Junitを使ったjavaのテスト入門

(補足)Exceptionのテスト

13年6月20日木曜日

Page 65: Junitを使ったjavaのテスト入門

JUnitの使い方

•IDEが適当にテンプレートを作ってくれるので細かい書き方は覚えなくてもOK

•基本はassertEquals

•Exceptionが発生するかは@Test(expected=〜)

13年6月20日木曜日

Page 66: Junitを使ったjavaのテスト入門

アジェンダ

•なぜJUnitを使うのか

•JUnitの使い方

•JUnitを効果的に使うために

13年6月20日木曜日

Page 67: Junitを使ったjavaのテスト入門

JUnitを効果的に使うために

13年6月20日木曜日

Page 68: Junitを使ったjavaのテスト入門

JUnitの高度な使い方を学びたいなら

ここからCMです。ただし、登壇者にはお金は入ってこない

13年6月20日木曜日

Page 69: Junitを使ったjavaのテスト入門

JUnit実践入門

JUnitのしっかりとした書き方を知りたいなら。JUnitの書き方の最適化からJUnitを使ったテストの自動化まで。

Javaプログラマのみなさま必須の品です。

http://goo.gl/P8Bph13年6月20日木曜日

Page 70: Junitを使ったjavaのテスト入門

実践テスト駆動開発

JUnitを開発手法のメインにしてみた。テストを設計ととらえて、テストと実装を交互に行うことでバグの発生率を格段に下げることの出来る開発手法、テスト駆動開発に関する本。

http://goo.gl/3O4UE13年6月20日木曜日

Page 71: Junitを使ったjavaのテスト入門

テスト駆動開発

13年6月20日木曜日

Page 72: Junitを使ったjavaのテスト入門

バグが半分以下になることで有名です

13年6月20日木曜日

Page 73: Junitを使ったjavaのテスト入門

http://www.slideshare.net/t_wada/tddbc-fukuoka-day1

13年6月20日木曜日

Page 74: Junitを使ったjavaのテスト入門

そんなTDDが学べるイベント

13年6月20日木曜日

Page 75: Junitを使ったjavaのテスト入門

TDDBCテスト駆動開発ブートキャンプ

13年6月20日木曜日

Page 76: Junitを使ったjavaのテスト入門

次回、7月楽天タワーにてComming soon....

http://devtesting.jp/tddbc/

ただし、登壇者とは関係がありません。参加者として参加してるかもしれない。

13年6月20日木曜日

Page 77: Junitを使ったjavaのテスト入門

以上ありがとうございました

13年6月20日木曜日