カテゴリー「*コラム」の35件の記事

2013年12月13日 (金)

MSTest‐Windows ストア アプリ開発の暗黒大陸 #win8dev_jp #tddadventjp #tddnet

このエントリーは、 TDD Advent Calendar 2013 の 13日目です。
このエントリーは、 Windows Store App Advent Calendar 2013 の 13日目です。
13日の金曜日です。
 

暗黒大陸 - それは内部がほとんど知られず、地図も無い世界
20131213_tddadvent01
※ この画像は広辞苑

Windows ストア アプリを開発するのに使う Visual Studio 2012 / 2013 には、 テスト ハーネス フレームワークとして MSTest が標準装備されています。 これは無償の Express エディションにも搭載されているので、 Windows ストア アプリを開発するときに TDD しない訳にはいきません。 (← TDD の話はこれだけw)

てことで、 テスト コードを書き始めましょうか。
MSTest とは長い付き合いですからね、 サクサク書けますよ。

でもまぁ、 たまにはヘルプを見ましょうか。
20131213_tddadvent02

…へ!?

20131213_tddadvent03

「このトピックはこのライブラリには含まれていません」

ぉひぉひ… (@_@;)

使っている Assert クラスは、 Microsoft.VisualStudio.TestPlatform.UnitTestFramework 名前空間のもの。
20131213_tddadvent04

この名前空間をぐぐってみる

……ほぇ!?

MSDN に載ってない!! (・_・)

つまり、

20131213_tddadvent05

Windows ストア アプリ開発で使ってる MSTest は、 地図の無い暗黒大陸だった!

# いや~、 VS2012 が出てから丸1年以上経ってるんですからね、 まさかまだドキュメントが公開されてないとは思わなかったよw

続きを読む "MSTest‐Windows ストア アプリ開発の暗黒大陸 #win8dev_jp #tddadventjp #tddnet"

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

2013年12月 6日 (金)

TDD って何だっけ? #tddadventjp

このエントリーは、TDD Advent Calendar 2013 の 6日目です。

TDD Advent Calendar を読んでる人の中には 「TDD って何?」 という初心者もいらっしゃることでしょう。 そこで、 TDD の定義をきちんと調べておきましょう。

まずは何の略語なんだか調べてみましょうか。
Acronym Finder「TDD」 を検索すると、 44件が見つかりました。
20131205_tdd01

これは海の向こうの辞書なので、 Tuatha De Danann とか TOKYO DANCE DELIGHT とかは入ってませんが、 それでもこれだけあります。 「TDD!? 何のこと?」 と言われてしまうのも無理はありませんね f(^^;

で、 ソフトウェア開発者がよく使う、 そしてこの TDD Advent Calendar で話題にしている TDD とは、「Test Driven Development」(テスト駆動開発) です。

続きを読む "TDD って何だっけ? #tddadventjp"

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

2012年12月24日 (月)

[コラム] テストファーストとは何か?

今年はネタがありません。
WP8 のテストファーストでもやろうかと思っていたら、 先を越されちゃったしw  (⇒ Phone Toolkit Test Framework を使ってみる(1) )
しょうがないので、 「プログラムの作り方」を教えるとしたらどうしたらいいだろう、 なんてことを気の向くままに書き散らしてみます。 まぁ、 なぜか最後は強引に TDD ネタに話を持って行きますけど f(^^;


● "Hello, world!"

「プログラムの作り方」を教えるとしたら、最初はやはり定番の「Hello, world!」から入るのでしょうね。

int main(int argc, char* argv[]) {
  printf("hello world!\r\n");
  return 0;
}


今だと

Textbox1.Text = "Hello, world!";

…かな。

だけどこれは「プログラムの作り方」ではありません。
絵筆を使って絵具を塗る手順を学んでいるだけ。 まだ自分一人でプログラムは作れないでしょう。

続きを読む "[コラム] テストファーストとは何か?"

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

2012年3月22日 (木)

[コラム] Visual Studio 11 に統合できるテスティング フレームワーク

この2月末に公開された Visual Studio 11 beta では、 単体テスト エクスプローラーの実装がほぼ出来上がっていて、 テスト アダプターの組み込みも可能になりました。 この機能は、 昨年の夏には公表されていたのですが、 Developer Preview には入っていなかったものです。

Extensionmanager01

これにより、 テスト アダプターさえ作成すれば、 テスティング フレームワークを Visual Studio の IDE に統合することが可能になりました。 しかも、 単体テスト エクスプローラーからは、 複数のテスティング フレームワークのテストを一度に実行することができます。 たとえば次の画像では、 MSTest と NUnit のテストがまとめて実行された結果が表示されています。

続きを読む "[コラム] Visual Studio 11 に統合できるテスティング フレームワーク"

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

2012年2月 9日 (木)

[コラム] TDD のパターン: Assert First

"Assert First" (Assert 文を最初に) は、 TDD するときのパターンのひとつとして Kent Beck の 「テスト駆動開発入門」 に出てきます。

最初のテストメソッドを書くときには、 これから実装する製品コードのメソッドのシグネチャ(名称、引数、型など)や置き場所、  それから肝心なテストケースとして与える刺激と期待される反応に、 製品コードを呼び出すために準備すべきことなどと、 たくさんの事柄を決断しなければなりません。 いっぺんに考えきれないようなら… そうです、 小分けにしてちょっとずつ進みましょう。

Assert 文を最初に書けば、 まず製品コードのメソッドのシグネチャを決断し、 最初のテストケースとしてふさわしい刺激と期待される反応を決めることができます。 それからおもむろに頭を切り替えて、 「この Assert 文をコンパイルして実行できるようにするには、 どんな準備をすればよいかな?」 と、 そこだけに集中して考えることができます。

最初に Assert 文を書いて、 それから段々と上へ書いていくようにすると楽だよ、 というのがこのパターンの言わんとするところです。 準備をするコードも含めて、 全部いっぺんに考えても苦にならないような簡単なテストなら、 頭から書き下しても構いません。

続きを読む "[コラム] TDD のパターン: Assert First"

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

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

| | コメント (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 ではないということです。

続きを読む "[コラム] TDD の原点 ~ Kent Beck による定義"

| | コメント (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" (例示による設計) なんだ、 というわけです。

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

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

2011年10月31日 (月)

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

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

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

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

2011年8月30日 (火)

[コラム] TDDBC 東京 1.6 のお題を C# でやってみる (その3) ~ 2つめ、3つめの仕様変更[T16MAIN-6,7]

前回は、 [T16MAIN-5] までやりました。 今回のこの2つの仕様変更は、 機能の追加です。 ですから、 新しいメソッドをどんどん TDD していけばよいです。

 
◆ ひとつめの機能追加

■ T16MAIN-6: dump の引数に時刻を指定できるようにする。 dump 関数は時刻が指定された場合、 指定時刻以降のデータのみを表示する
・dump の引数に時刻(秒単位)を指定できるようにする。
・dump 関数は時刻が指定された場合、 指定時刻以降のデータのみを表示する

Dump() の引数には、 何を渡せば良いでしょう? 「時刻(秒単位)」 という表現は、 .NET Framework 的にはちょっと解釈に困りますね。 DateTime 型にしておきましょう。
※ 後で、 「いや、 現在時刻から遡る時間(秒単位)だ」 ということになれば、 ラッパー関数を書けば終わりますからね。

すると、 オーバーロードする Dump() メソッドのシグネチャは、 次のようになります。

public IList<KeyValueTime> Dump(DateTime time)

続きを読む "[コラム] TDDBC 東京 1.6 のお題を C# でやってみる (その3) ~ 2つめ、3つめの仕様変更[T16MAIN-6,7]"

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

より以前の記事一覧