Upload
satoshi-kubo
View
19.146
Download
5
Embed Size (px)
DESCRIPTION
Citation preview
JUnitを使ったJavaのテスト入門@megascus
13年6月20日木曜日
•名前: 久保 智
•twitter id: @megascus
•JJUG幹事
•JJUG幹事募集中です!
自己紹介
13年6月20日木曜日
注意
13年6月20日木曜日
本日はJava初心者向けです
13年6月20日木曜日
高度な内容はでてきません
13年6月20日木曜日
アジェンダ
•なぜJUnitを使うのか
•JUnitの使い方
•JUnitを効果的に使うために
13年6月20日木曜日
アジェンダ
•なぜJUnitを使うのか
•JUnitの使い方
•JUnitを効果的に使うために
13年6月20日木曜日
なぜJUnitを使うのか
13年6月20日木曜日
動かない時の確認方法
13年6月20日木曜日
どうしていますか?
13年6月20日木曜日
デバッグプリント
13年6月20日木曜日
System.out.println()
13年6月20日木曜日
デバッグプリント
public void doSomething (Human human) {
System.out.println(human.getFamillyName()); //変数の中に何が入ってるのかを //標準出力に出力する }
13年6月20日木曜日
デバッカー
13年6月20日木曜日
動いているプログラムに介入する
13年6月20日木曜日
デバッカー
13年6月20日木曜日
よくやる(はず)
13年6月20日木曜日
これらの問題点
13年6月20日木曜日
記録・再生ができない
13年6月20日木曜日
問題点
•テストした結果を他の人が簡単に参照することが出来ない。(画面キャプチャとかとれば出来る)
•もう一度テストしたいときは、改めて人間が操作しないといけない。(あらためてデバッグする)
13年6月20日木曜日
ここで考えて下さい
13年6月20日木曜日
本当に問題ですか?
13年6月20日木曜日
本当に問題ですか?
•一回動いたら動かなくなること無いから最初に一回だけ確認すればいいよね。
13年6月20日木曜日
そんなことはないです
13年6月20日木曜日
例えばWindows
13年6月20日木曜日
例えばWindows
http://www.theverge.com/2012/7/4/3136851/windows-logo-backwards-evolution
13年6月20日木曜日
例えばWindows
•数年に一度のメジャーアップデート(XPとかVistaとか7とか8とか)
•それより短い期間でのサービスパック(SP1とかSP2とか)
•毎月のセキュリティパッチ
13年6月20日木曜日
動かなくなった例
http://itpro.nikkeibp.co.jp/article/NEWS/20130416/471121/
13年6月20日木曜日
ここでソフトウェアについて
13年6月20日木曜日
ソフトウェア
•一度リリースしたソフトウェアを更新しないで済むことはあまりない
•最近のソフトウェアは複雑なので、修正した内容がどこに影響を与えるか判りにくい
•更新後にすでにある機能が動作するかを確認すること(回帰テスト)は必須
13年6月20日木曜日
回帰テスト
13年6月20日木曜日
回帰テスト
•ソフトウェアプログラムに変更を加えた際、それによって新たな不具合が起きていないかを検証するテストのこと
•今までのテストをやり直すため、人手でやるとすごい時間がかかる
•一ヶ月単位のリリースだと、毎月回帰テストが必要で大変
13年6月20日木曜日
ここまで説明した上で
13年6月20日木曜日
JUnitができることは何か
13年6月20日木曜日
JUnitができること
•特定のメソッドの引数と戻り値が期待された値と同じかを確認するプログラムを書くことができる
13年6月20日木曜日
なぜJUnitを使うのか
13年6月20日木曜日
なぜJUnitを使うのか
•テストした内容を記録・再生するため
•いつでも再生できるようにしておくことで、デグレード(元々動いた機能が動かなくなること)を防ぎやすくなる
•回帰テストの自動化
13年6月20日木曜日
なぜJUnitを使うのか
•人手でやることを機械が勝手にやってくれるようになれば楽ですよね
13年6月20日木曜日
逆にJUnitを使わない場合
•使い捨てソフトウェア
•数年に一度しかリリースされないソフトウェア
•JUnitでやりたい内容を人力でがんばる場合
13年6月20日木曜日
アジェンダ
•なぜJUnitを使うのか
•JUnitの使い方
•JUnitを効果的に使うために
13年6月20日木曜日
JUnitの使い方
13年6月20日木曜日
JUnitの入手方法
13年6月20日木曜日
IDE使ってればすでに入ってます
※Eclipse、NetBeans、IntelliJなど
13年6月20日木曜日
JUnitができること
13年6月20日木曜日
JUnitができること
•特定のメソッドの引数と戻り値が期待された値と同じかを確認するプログラムを書くことができる
13年6月20日木曜日
JUnitを実際に書いてみる
※ここから先はEclipseでやってみます
13年6月20日木曜日
テスト対象を書く(Math.java)
13年6月20日木曜日
右クリックからJUnit Test Caseを選択
13年6月20日木曜日
そのままnextを押す
13年6月20日木曜日
テストしたいメソッドを選択してFinish
13年6月20日木曜日
初回はライブラリを追加するか聞かれるのでOK
13年6月20日木曜日
テストのテンプレート完成
13年6月20日木曜日
テストのライブラリをインポート
13年6月20日木曜日
テスト対象メソッドに@Testアノテーション
13年6月20日木曜日
動かしてみる
作成したテストクラスを右クリックしてRun AsからJUnitTestを選択するだけ
13年6月20日木曜日
動いた
けれども失敗
13年6月20日木曜日
failメソッドはテストを失敗させる
13年6月20日木曜日
テストを成功させる
13年6月20日木曜日
テストを成功させる
13年6月20日木曜日
テストを失敗させる(2)
13年6月20日木曜日
テストを失敗させる(2)
なぜ失敗したのかのメッセージがでる
13年6月20日木曜日
assertEquals(expected, actual)
•expected(推定した値)がactual(実際の値)と等しければテストが成功、等しくなければ失敗
•JUnitに慣れるまではこれを書くのがお仕事になる
13年6月20日木曜日
今までのを並べてみる
13年6月20日木曜日
(補足)Exceptionのテスト
13年6月20日木曜日
JUnitの使い方
•IDEが適当にテンプレートを作ってくれるので細かい書き方は覚えなくてもOK
•基本はassertEquals
•Exceptionが発生するかは@Test(expected=〜)
13年6月20日木曜日
アジェンダ
•なぜJUnitを使うのか
•JUnitの使い方
•JUnitを効果的に使うために
13年6月20日木曜日
JUnitを効果的に使うために
13年6月20日木曜日
JUnitの高度な使い方を学びたいなら
ここからCMです。ただし、登壇者にはお金は入ってこない
13年6月20日木曜日
JUnit実践入門
JUnitのしっかりとした書き方を知りたいなら。JUnitの書き方の最適化からJUnitを使ったテストの自動化まで。
Javaプログラマのみなさま必須の品です。
http://goo.gl/P8Bph13年6月20日木曜日
実践テスト駆動開発
JUnitを開発手法のメインにしてみた。テストを設計ととらえて、テストと実装を交互に行うことでバグの発生率を格段に下げることの出来る開発手法、テスト駆動開発に関する本。
http://goo.gl/3O4UE13年6月20日木曜日
テスト駆動開発
13年6月20日木曜日
バグが半分以下になることで有名です
13年6月20日木曜日
http://www.slideshare.net/t_wada/tddbc-fukuoka-day1
13年6月20日木曜日
そんなTDDが学べるイベント
13年6月20日木曜日
TDDBCテスト駆動開発ブートキャンプ
13年6月20日木曜日
次回、7月楽天タワーにてComming soon....
http://devtesting.jp/tddbc/
ただし、登壇者とは関係がありません。参加者として参加してるかもしれない。
13年6月20日木曜日
以上ありがとうございました
13年6月20日木曜日