Test-Driven Development using FIT 北野 弘治 オブジェクト倶楽部.

Slides:



Advertisements
Similar presentations
アルゴリズムとプログラミン グ (Algorithms and Programming) 第6回:クラスとインスタンス クラスの宣言 アクセス修飾子 インスタンスの生成 (new キーワード) this キーワード フィールドとメソッドの実際の定義と使い 方 クラスの宣言 アクセス修飾子 インスタンスの生成.
Advertisements

オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
独習JAVA Chapter 6 6.6 クラスの修飾子 6.7 変数の修飾子 結城 隆. 6.6 クラスの修飾 abstract インスタンス化できないクラス。1つまたは複数のサブクラスで 実装してはじめてインスタンス化できる。 final 継承されたくないことを明示する。これ以上機能拡張 / 変更でき.
テストについて 近畿大学大学院 田中大介 資料:
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
Scala + Liftフレームワーク その2.
Remote Method Invocation
PROCESS 14:一般情報(2) InstallShieldLecture
情報理工学部 情報システム工学科 ラシキアゼミ 3年 H 井奈波 和也
JPAを利用した RESTful Webサービスの開発
2006年11月15日 植田龍男 Webサービス II (第8回) 年11月15日 植田龍男.
東京工科大学 コンピュータサイエンス学部 亀田弘之
自社製ミドルウエアをDalvikと連携させることが可能になる
プログラミング基礎I(再) 山元進.
Ex8. Search for Vacuum Problem(2)
Accessによる SQLの操作 ~実際にテーブルを操作してみよう!~.
Servlet J2EE I 第8回 /
JAVA GUIプログラミング 第1回 JAVAの実行 絵を描こう.
アプレット (Applet)について.
Iアプリプログラミング その1  鳥居秀徳.
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
e ポートフォリオ(Mahara)の使い方
JAVA.
JavaServlet&JSP入門 01K0018 中村太一.
キャンパスクラウドによる 実験環境の構築 情報ネットワーク特論 講義資料.
社会人学習講座 「Javaプログラミング概論」
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
RMI ソフトウェア特論 第6回 /
Titanium Studioを使った アプリ開発 Vol.1
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
細かい粒度で コードの再利用を可能とする メソッド内メソッドと その効率の良い実装方法の提案
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
TDDとメソッドの外部設計 テストファーストの秘訣 2009/08 biac.
Javaプログラムの変更を支援する 影響波及解析システム
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
Java8について 2014/03/07.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
WinSCPのインストール方法
7-0.SWORD Client for WEKO インストールマニュアル Version 2.2
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
Fortranについて 高エネルギー加速器研究機構 平山 英夫.
パッケージ,アクセス修飾子 2008年4月27日 海谷 治彦.
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
静的情報と動的情報を用いた Javaプログラムスライス計算法
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
サブゼミ第7回 実装編① オブジェクト型とキャスト.
ソフトウェア制作論 平成30年11月28日.
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
統合開発環境のための プログラミング言語拡張 フレームワーク
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
2006年10月18日 植田龍男 Webサービス II (第4回) 年10月18日 植田龍男.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
Presentation transcript:

Test-Driven Development using FIT 北野 弘治 オブジェクト倶楽部

この資料について この資料は、 Agile Development Conference 2003 において、 Ward Cunningham 氏が行っ たチュートリアル資料を参考に北野弘治が翻 訳追記を行って作成しております。

Test-Driven Development このチュートリアルは、 FIT(Framework for Integrated Test) を利用したテスト駆動開発 のテクニックについて紹介する FIT とは、ユニットテストや受け入れテスト を行うためのフレームワークであり、プログ ラミング言語に依存しない形式でテストの記 述が行える

Guide Development FIT は、テストの結果が正しくなるようにプログラミ ングをガイドします いわば、標識を確認しながら道をすすんでいくようなイ メージ

Refactoring TDD をすることにより、 Test-Driven-Design が得られ、それは Refactoring された奇麗なデ ザインとなる テストしやすいデザイン

FIT FIT は、言語に依存していない test-table と言 語に依存した test-fixture とで構成されている Test-table は、ユーザや顧客でも容易に記述する ことが可能 Test-fixture は、製品と test-table とのインターフェ イスである

FIT をより美味く召し上がるため に FITNESSE を利用する FITNESSE とは、 FIT + Wiki で、 Wiki 上でテストの 記述、テスト実行、テスト結果参照が行える ダウンロード後、解凍のみで Wiki サーバが立ち上 がるためインストールが容易

Install FIT ( NESSE )

FITNESSE をダウンロード よりダウンロードする 実際には、 sourceforge にある 最新は v 版 Fitnesse zip (バイナリ) Fitnesse_src zip (ソース) ここではバイナリをダウンロード

FITNESSE の設定 ダウンロードしたファイ ルを Zip 解凍する。 Java が入っている PC は、 解凍後の run.bat を実行す る Java は からダウンロード にアクセ ス

Fit Tasks

FIT: Test 30/360 Calendar 金融機関のいくつかは、1ヶ月を30日、1 年を360日として扱っている ( 30/360Calendar とする) 30/360Calendar として日付計算をするテスト を記述する カラムとしては、 form, to, days() days() は from から to までの経過日数を int とし て返す ColumnFixture のサブクラスとして実装する こと 次のページにあるテストをパスすること

FIT: Test 30/360 Calendar fitsample.ThirtyThreeSixty fromtodays() 2001/01/102001/01/ /01/102001/02/ /01/102002/01/ /01/102002/12/25705

FIT: 1. create new page 30/360 カレンダーのテストを 記述するため、 Wiki 上に新し いページを作成します。 FrontPage にお いて、 [Edit] をクリックし、 FrontPage を編集モードにしま す。 最後の行に 『 ThirtyThreeSixty 』と書き、 [Save] します。 FrontPage の 『 ThirtyThreeSixty 』の所の 『?』をクリックすると、新 しいページが作成されます。

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 ThirtyThreeSixty ページの [Properties] をクリッ クし、 [Test] にチェックし、 [Save] します。

FIT: 4. Add ClassPath テスト実行に必要なクラスパスを編集します。 ThirtyThreeSixty ページの ClassPath をクリッ クし、 Classpath ページの [Edit] を実行します。 [Save] をし、 FrontPage より ThirtyThreeSixty ページに戻ります。 !path fit.jar !path fitnesse.jar !path sample

FIT: 5. Run Test 一度テストを走らせて みましょう。 テスト対象のクラス (ThirtyThreeSixty クラ ス)がないというメッ セージがでます。 → (ガイド) ThirtyThreeSixty クラス を作れ!!

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: 7. Re Run Test

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 再びテストを実行しま す。 days() メソッドが無 い!とエラーメッセー ジが出ています。

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 再度テストを実行しま す。 赤になっている部分が テストが失敗している 部分となる。 全て期待している値と異 なる(今は単に 0 を返す ため)ため赤の表示にな る。

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: 14. Implementation 今までのように、細か い周期で実装 → テスト → 実装 → テストをして 全てのテストを通るよ うにしてみましょう。

考察 actualDays() を追加し、テストしてみましょ う。 オブジェクト指向の観点から考え、クラス分 割してみましょう。 FIT の ColumnFixture クラスの特徴について調 べてみましょう。