test driven development using fit n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Test-Driven Development using FIT PowerPoint Presentation
Download Presentation
Test-Driven Development using FIT

Loading in 2 Seconds...

play fullscreen
1 / 28

Test-Driven Development using FIT - PowerPoint PPT Presentation


  • 159 Views
  • Uploaded on

Test-Driven Development using FIT. 北野 弘治 オブジェクト倶楽部. この資料について. この資料は、 Agile Development Conference 2003 において、 Ward Cunningham 氏が行ったチュートリアル資料を参考に北野弘治が翻訳追記を行って作成しております。. Test-Driven Development. このチュートリアルは、 FIT(Framework for Integrated Test) を利用したテスト駆動開発のテクニックについて紹介する

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Test-Driven Development using FIT' - cashlin


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
test driven development using fit

Test-Driven Development using FIT

北野 弘治

オブジェクト倶楽部

slide2
この資料について
  • この資料は、Agile Development Conference 2003において、 Ward Cunningham氏が行ったチュートリアル資料を参考に北野弘治が翻訳追記を行って作成しております。
test driven development
Test-Driven Development
  • このチュートリアルは、FIT(Framework for Integrated Test)を利用したテスト駆動開発のテクニックについて紹介する
  • FITとは、ユニットテストや受け入れテストを行うためのフレームワークであり、プログラミング言語に依存しない形式でテストの記述が行える
guide development
Guide Development
  • FITは、テストの結果が正しくなるようにプログラミングをガイドします
    • いわば、標識を確認しながら道をすすんでいくようなイメージ
refactoring
Refactoring
  • TDDをすることにより、Test-Driven-Designが得られ、それはRefactoringされた奇麗なデザインとなる
    • テストしやすいデザイン
slide6
FIT
  • FITは、言語に依存していないtest-tableと言語に依存したtest-fixtureとで構成されている
    • Test-tableは、ユーザや顧客でも容易に記述することが可能
    • Test-fixtureは、製品とtest-tableとのインターフェイスである
slide7
FITをより美味く召し上がるために
  • FITNESSEを利用する
    • FITNESSEとは、FIT+Wikiで、Wiki上でテストの記述、テスト実行、テスト結果参照が行える
    • ダウンロード後、解凍のみでWikiサーバが立ち上がるためインストールが容易
fitnesse
FITNESSEをダウンロード
  • http://fitnesse.org/よりダウンロードする
    • 実際には、sourceforgeにある
  • 最新はv20030728版
    • Fitnesse20030728.zip(バイナリ)
    • Fitnesse_src20030728.zip(ソース)
  • ここではバイナリをダウンロード
fitnesse1
FITNESSEの設定
  • ダウンロードしたファイルをZip解凍する。
  • Javaが入っているPCは、解凍後のrun.batを実行する
    • Javaはhttp://java.sun.com/からダウンロード
  • http://localhost/にアクセス
fit test 30 360 calendar
FIT: Test 30/360 Calendar
  • 金融機関のいくつかは、1ヶ月を30日、1年を360日として扱っている(30/360Calendarとする)
  • 30/360Calendarとして日付計算をするテストを記述する
  • カラムとしては、form, to, days()
  • days()はfromからtoまでの経過日数をintとして返す
  • ColumnFixtureのサブクラスとして実装すること
  • 次のページにあるテストをパスすること
fit 1 create new page
FIT: 1. create new page
  • 30/360カレンダーのテストを記述するため、Wiki上に新しいページを作成します。
  • http://localhost/ FrontPageにおいて、[Edit]をクリックし、FrontPageを編集モードにします。
  • 最後の行に『ThirtyThreeSixty』と書き、[Save]します。
  • FrontPageの『ThirtyThreeSixty』の所の『?』をクリックすると、新しいページが作成されます。
fit 2 edit test
FIT: 2. Edit Test
  • 新たに作成した、ThirtyThreeSixtyページの[Edit]をクリックし、テストを記述し、Saveします。
  • ここでは、テストの記述を行っています。
  • 一行目に指定するのは、テスト対象のFixtureクラスです。

|ThirtyThreeSixty|

|from|to|days()|

|2001/01/10|2001/01/20|10|

|2001/01/10|2001/02/10|30|

|2001/01/10|2002/12/25|705|

----

ClassPath

fit 3 config test
FIT: 3. Config Test
  • ThirtyThreeSixtyページの[Properties]をクリックし、[Test]にチェックし、[Save]します。
fit 4 add classpath
FIT: 4. Add ClassPath
  • テスト実行に必要なクラスパスを編集します。
  • ThirtyThreeSixtyページのClassPathをクリックし、Classpathページの[Edit]を実行します。
  • [Save]をし、FrontPageよりThirtyThreeSixtyページに戻ります。

!path fit.jar

!path fitnesse.jar

!path sample

fit 5 run test
FIT: 5. Run Test
  • 一度テストを走らせてみましょう。
    • テスト対象のクラス(ThirtyThreeSixtyクラス)がないというメッセージがでます。

→(ガイド) ThirtyThreeSixtyクラスを作れ!!

fit 6 create new class
FIT: 6. Create new class
  • ThirtyThreeSixtyクラスを作成します。
  • fitnesse/sample/fitsampleフォルダにThirtyThreeSixty.javaとして保存し、コンパイルします。

package fitsample;

import fit.ColumnFixture;

public class ThirtyThreeSixty extends ColumnFixture{

}

> javac -classpath fit.jar -d sample sample\fitsample\*.java

fit 8 create from to field
FIT: 8. Create from-to Field
  • from, toフィールドが無い!というエラーメッセージが出たので、ThirtyThreeSixtyクラスに追加します。
  • 保存し、コンパイルします。

package fitsample;

import fit.ColumnFixture;

import java.util.Date;

public class ThirtyThreeSixty extends ColumnFixture{

public Date from;

public Date to;

}

fit 9 re re run test
FIT: 9 Re-Re Run Test
  • 再びテストを実行します。
  • days()メソッドが無い!とエラーメッセージが出ています。
fit 10 create days method
FIT: 10. Create days() Method
  • days()メソッドを実装します。今の段階では、return 0; とし、コンパイルが通る最小限の実装とします。
  • Saveしコンパイルします。

package fitsample;

import fit.ColumnFixture;

import java.util.Date;

public class ThirtyThreeSixty extends ColumnFixture{

public Date from;

public Date to;

public int days() {

return 0;

}

}

fit 11 re re re run test
FIT: 11. Re Re Re Run Test
  • 再度テストを実行します。
  • 赤になっている部分がテストが失敗している部分となる。
    • 全て期待している値と異なる(今は単に0を返すため)ため赤の表示になる。
fit 12 fake it
FIT: 12. Fake IT
  • テストの一つのみに注目し、そのテストが通る最小のコードを実装してみる。『return 10;』とする。
  • Saveしコンパイルする。

package fitsample;

import fit.ColumnFixture;

import java.util.Date;

public class ThirtyThreeSixty extends ColumnFixture{

public Date from;

public Date to;

public int days() {

return 10;

}

}

fit 13 re 4 run test
FIT: 13. RE^4 Run Test
  • 再びテストを実行してみる。
    • 緑になっている部分がテストが成功している部分
fit 14 implementation
FIT: 14. Implementation
  • 今までのように、細かい周期で実装→テスト→実装→テストをして全てのテストを通るようにしてみましょう。
slide28
考察
  • actualDays()を追加し、テストしてみましょう。
  • オブジェクト指向の観点から考え、クラス分割してみましょう。
  • FITのColumnFixtureクラスの特徴について調べてみましょう。