[お知らせ] ようこそ、 TDD.NET へ

TDD = テストファースト + リファクタリング

TDD というコーディング技法について、 詳しくは… ⇒ TDD とは?, VB2010 Express + NUnit 2.5 で、 初めてのTDD Step by Step

このサイトでは、 .NET Framework での開発、 その中でも主に C# / VB.NET を使って TDD するときに役立つ日本語の情報を集めていきます。 VC++ については門外漢なので、 ほとんど載らないと思います。

このサイトは、 独立した記事と、 blog と、 掲示板から構成されています。 左サイドバーの [ コンテンツ ] からご利用くださると便利かと思います。

ご意見・ご要望等がございましたら、 掲示板に書いていただくなり、 この記事にコメントを付けるなりトラックバック打つなり、 に直メールするなりしていただけると嬉しいです。

※ トラックバックは、 フィッシングサイトや営利目的のものはお断りします。 そのために、 承認制としておりますので、 トラックバックが反映されるまでしばらく掛かります。

|

2011年12月29日 (木)

[イベント] 告知 - わんくま同盟 勉強会 #20 「テスト & TDD ワークショップ」 (1/14, 名古屋)

Nenga_hanko_wankuma_b1

 

2012年、 年明け最初のわんくま勉強会では、 TDD ワークショップを開催します。

わんくま同盟 名古屋勉強会 #20 & 第39回 名古屋アジャイル勉強会 & TEF東海 勉強会

2012年最初のわんくま勉強会は、 名古屋アジャイル勉強会及び TEF 東海と 3つのコミュニティが合同でお贈りする、 テスト & TDD ワークショップ!
 ※ワークショップ・・・参加者の方が実際に手を動かして学習を行うスタイルの勉強会の事。
ソフトウェア開発におけるテストってなんなのか、 テストを行う事で品質は上がるのか、 また開発手法の1つである TDD (テスト駆動開発) ってどうやるのか、 参加者の皆さんも一緒に手を動かし・考え・体験してみませんか。

TDD ワークショップは 3時間ほどを予定しています。

「TDD 入門」 について喋らせてもらったあと、 みなさんで実際に TDD と、作ったコードのレビューをやってもらいます。
「いっぺんくらい TDD を体験しとくのもいいか~」 レベルのワークショップですので、 すでに TDD を実践されている人には物足りないかもしれません (ので、 そういう人はグループ内で教える側に回ってくれると嬉しい)。
TDD の面白さの体験や、 「こんなやり方もあるんだ!」 という感動を、 ぜひお持ち帰りいただきたいと思います。

ワークショップの時間は TDDBC を名乗れるほど長くはありませんが、 東海地方では久々の TDD 体験イベントです。 名古屋近辺のかた、 ぜひご参加ください。
なお、 ワークショップで参加者の皆さんに挑戦していただく 「お題」 は、 こちらにあります。 ⇒ [わんくま同盟 名古屋勉強会 #20] TDD ワークショップのお題

| | コメント (0) | トラックバック (0)

2011年12月25日 (日)

[TDD Advent Calendar jp: 2011] TDD とアジャイルを支えるバックボーン #TddAdventJp

このエントリは、TDD Advent Calendar jp: 2011の12/25 最終日のエントリーです。

前日は @aoki1210 さんのエントリ 「TDDに関する記事のリンク集」 です。
初日は @setoazusa さんの 「#tddbc の作り方」 でした。
全記事の一覧は、 ATND の募集ページ にあります。


はじめに、 ちょっと全体の感想やイキサツなどを。

こんな素晴らしい Advent Calendar になるなんて、 夢のようです。 取りまとめ役をやらせてもらった幸運に感謝、 です。
良記事ばかりですが、 その中であえてひとつ選ぶとするなら、 TDD する / しない (テストファーストする / しない)、 あるいは、 やるならどこまでやるか、 といったことをパターン化しようという @kyon_mm さんの試み 「TDD戦略 -TDDを導入し進化させる方法-」(12/23) を挙げたいです。 私にはまったくなかった発想なので。 (TDD の定義が Kent Beck のと違っている点は難ですが。)

さて、 そんな素晴らしい TDD Advent Calendar jp: 2011 ですが…

そもそもの発端は bleis 伯爵にダマされたんですよね~w

bleis: @aoo_niku TDD Advent Calendar?
posted at 2011/11/11 13:44:13
bleis: @linerlock んじゃぁ立てますか
posted at 2011/11/11 13:56:53
biac: で、これはどこ? w QT @gab_km: RT @bleis: @aoo_niku TDD Advent Calendar?
posted at 2011/11/11 20:11:43

てっきり bleis さんが立ち上げてくれてると信じたのに~~~ f(^^;


昨日までの記事で TDD の中身に関しては語りつくされた感もあるので、 最終日にあたるこの記事では、 TDD を支えるバックボーンの話をしてみたいと思います。

TDD は (それとアジャイルソフトウェア開発プロセスも)、 ソフトウェアの開発に特有の技法です。
ハードウェアの開発 (機械、 電子機器、 建築など) では、 できません。

» 続きを読む

| | コメント (0) | トラックバック (0)

2011年12月17日 (土)

[記事紹介] MSDN マガジンの TDD 関連記事

Microsoft の月刊誌 「MSDN マガジン」 (昔は紙の雑誌でした。 今は Web で読めます。) に掲載された記事から、 TDD に関連するものをいくつか挙げておきます。

2011年 6月号: Visual Studio と TFS でアジャイル C++ 開発とテストを行う
John Socha-Leialoha

今回の記事では、マイクロソフト所属のチームがアプリケーション開発に使用している数多くの手法を紹介します。

2010年 12月号: BDD 入門 ~ SpecFlow と WatiN によるビヘイビア駆動開発
Brandon Satrom

今回の記事では、BDD の概要を簡単に紹介し、単体レベルの実装につながる機能レベルのテストによって、BDD サイクルに従来のテスト駆動開発 (TDD) サイクルがどのように組み込まれるかを説明します。

2009年 6月号: テスト駆動型設計 ~ モックとテストを使用して役割に基づいたオブジェクトを設計する
Isaiah Perumalla

この記事では、次の内容について説明します。

  • 実装ではなく対話をテストする
  • 役割を見極め、相互のやり取りを抽象化する
  • 相互のやり取りを抽象化する
  • コードをリファクタリングして意図を明確化する

2009年 2月号: IronRuby と RSpec の概要 (第1部)
Ben Hall

この記事では、次の内容について説明します。

  • Ruby とアヒル型定義
  • Ruby と Microsoft .NET Framework
  • IronRuby と RSpec を使用する

» 続きを読む

| | コメント (0) | トラックバック (0)

2011年12月13日 (火)

[コラム] TDD の原点 ~ Kent Beck による定義

テスト駆動開発入門
2003/9 (原著は 2002/11)
著者: ケント ベック
翻訳: 長瀬 嘉秀
ISBN: 978-4894717114


Kent Beck が提唱した TDD。 彼はどのように TDD を定義しているでしょうか?
まだ 「テスト駆動開発入門」 を読んでいない人のために、 あるいは読んだけど前書きに書いてあったことまでは忘れてしまった方のために、 おさらいしておきます。

「テスト駆動開発入門」 は、 Kent Beck が TDD について初めて書いた本です。 その本の先頭にある 「まえがき」 より引用します。 (「まえがき」 の全文は、 Amazon の 「なか見! 検索」 で読むことができます。)

自動テスト、 TDD (テスト駆動開発) と呼ばれる開発スタイルにより、  不安を少なくして開発できる。 TDD では以下を実現する。

  • 自動テストが失敗した場合だけ、 新しいコードを書く。
  • 重複を取り除く。

これらはシンプルな規則である。

2つの規則はプログラミングのタスクにおける順番を意味する。

  1. レッド ‐ 動作しないテストを少しだけ作成する。 おそらく最初はコンパイルできない。
  2. グリーン ‐ テストをすぐに動作させる。 そのためには、 どのようなコードでもよい。
  3. リファクタリング ‐ テストを動作させるためだけに作成された重複をすべて取り除く。

「RED → GREEN → リファクタリング」という手順は、 TDD の説明としていつも言われることですが、 それは引用したように上記の 2つのシンプルな規則から導かれたものなのです。

この 2つの規則に則っていない技法は、 Kent Beck が定義した TDD ではないということです。

» 続きを読む

| | コメント (0) | トラックバック (0)

2011年12月12日 (月)

[記事紹介] CodeZine ~ C#で始めるテスト駆動開発

CodeZine に記事を書かせていただきました。

CodeZine: C#で始めるテスト駆動開発 ~ TDDBC横浜の課題をやってみよう
2011/12/12

本サイトで書いていること*1と同様の内容ですが、 細かい手順の説明などは省いて読みやすくしました。 ご感想や、 ツッコミ・要望などを、 ここのコメント欄か掲示板にいただけると幸いです。

*1: 「VB2010 Express + NUnit 2.5 で、 初めてのTDD Step by Step」 や 「C# 2008 Express + NUnit 2.5 で、 初めてのテストファースト Step by Step」 など。

 

はてなブックマーク - C#で始めるテスト駆動開発(1/7):CodeZine

| | コメント (0) | トラックバック (0)

2011年11月21日 (月)

[NEWS] NUnit 2.6.0 beta2 リリース

11月 20日付けで、 NUnit Version 2.6.0.11324 (beta2) が公開されました。

リリースノート ⇒ NUnit.org : Release Notes (英文)
ダウンロード ⇒ Launchpad : NUnit V2 2.6.0b2

beta1(2011/8)のときに比べると、 けっこう盛り沢山の機能追加があります。
便利そうな新機能をいくつかピックアップしておきます。

20111121_nunit260b2

» 続きを読む

| | コメント (0) | トラックバック (0)

2011年11月 9日 (水)

[ブログ紹介] Writing Unit Tests in F#

NUnit を使って F# でテストファーストするのは、 それほど難しくはありません。 ( ⇒ 「[コラム] F# で NUnit するには」(2011/1/9) )
では、 MSTest (Visual Studio Pro. 版以上に付属のテストフレームワーク) の場合は? テストマネージャーを「騙して」やらないといけないので、 これがけっこう面倒なのですよ。

TIM Labs: Writing Unit Tests in F#
Masayuki Muto 2011/8/8

Visual Studio は組み込みのユニットテストの仕組みを持っており、.NET開発を行う際にはテストプロジェクトを追加するだけで簡単にユニットテストを書いたり実行したりすることができます。

F# でもその恩恵に与りたいわけですが、残念ながら VisualStudio で F# のテストプロジェクトを作ることはできません。

これを回避する方法を紹介しているブログがあったので紹介します。

» 続きを読む

| | コメント (0) | トラックバック (0)

2011年11月 3日 (木)

[コラム] TDD は止めて、 DbE (例示による設計) と呼ぼう!

2年前に、 "It’s Not TDD, It’s Design By Example" (TDD じゃない、例示による設計だ!) というブログ記事が書かれています。
いちおう URL を挙げておきますが、 英文です。

Brad Wilson: It’s Not TDD, It’s Design By Example
April 18, 2009

記事の趣旨は、 TDD という名前が TDD の目的を表していない (だから、 改名しようよ) ということです。
「テスト駆動」という言葉からは、 その目的がテストによる品質保証であると誤解されかねません。 しかし TDD は、 メソッドの外部設計を自動化されたユニットテストという形で例示し (具体例で外部設計を説明する、と言っても良い)、 それを満たす実装を作り、 そしてリファクタリングによって内部設計を改善します (読みやすく理解しやすいコードにします)。 TDD の目的はユニットテストのレベルでプログラムの一部分を設計することにあり、 それは外部設計の例示から始まるので、 "Design By Example" (例示による設計) なんだ、 というわけです。

» 続きを読む

| | コメント (0) | トラックバック (0)

2011年11月 1日 (火)

[記事紹介] Visual Studio のインテリセンスって、テストファースト中には邪魔だよね

テストケースを書いているときに、 これから作る (まだ存在しない) クラスやメソッドの名前を入力すると、 Visual Studio のインテリセンスが「邪魔」をしてくれて、 イラつくこと甚だしいのですが…。

長沢智治のライフサイクルブログ: Visual Studio 2010 言語別ショートカット一覧とテスト駆動開発用の便利な使い方
31 Oct 2011

普段は、非常に便利な IntelliSence も、テスト駆動開発 (TDD) では、存在しないクラスやメソッドを呼び出すテストコードを最初に記述するため、IntelliSence の強力なコード補完能力がものすごく邪魔になりますw

そんな時は、「Ctrl + Alt + Space」 で、モードを切り替えれば、存在しないクラスやメソッドを簡単に記述できますし、候補にも表示されるようになります:

image

※通常、存在しないクラスなどを記述し Space キーを押すと一番近い存在するクラスを補完してくれますが、モード切替で、それを無効にすると、上記のように、自然な流れで記述でき、かつ、new とかすれば、候補として最適なものが選択もできてしまいます。

画面上は、 new の右下、 候補リストの上に、テキストボックスのような四角が表示されているところが違います。 これは、 IntelliSense の "候補提示モード" (suggestion mode) と呼ばれる状態で、 以前からの動作は "入力候補モード" (completion mode) と呼ばれます。
詳しくは MSDN の解説をどうぞ。 ⇒ http://msdn.microsoft.com/ja-jp/library/exbffbc2.aspx

| | コメント (0) | トラックバック (0)

2011年10月31日 (月)

[コラム] NUnit の CollectionAssert で、 配列やリストを比較・検証する

NUnit (2.4.6以降) には、 コレクションを調べるための CollectionAssert があります。
簡単な動作説明用のコードを載せておきます。 (NotEqual系は省略)

» 続きを読む

| | コメント (0) | トラックバック (0)

«[イベント] TDD 道場 ~場外乱闘編~ (2011/10/29)