実践テスト駆動開発 テストに導かれてオブジェクト指向ソフトウェアを育てる(和智 右桂 和智 右桂 髙木 正弘 髙木 正弘 Steve Freeman Nat Pryce)|翔泳社の本
  1. ホーム >
  2. 書籍 >
  3. 実践テスト駆動開発 テストに導かれてオブジェクト指向ソフトウェアを育てる

実践テスト駆動開発 テストに導かれてオブジェクト指向ソフトウェアを育てる

翻訳
原著
翻訳
原著


形式:
書籍
発売日:
ISBN:
9784798124582
定価:
4,620(本体4,200円+税10%)
仕様:
B5変・400ページ
カテゴリ:
開発管理
キーワード:
#開発環境,#開発手法,#プログラミング,#システム運用

20年来の経験に裏打ちされた、実践的“テスト駆動開発”書

本書では、「いかにしてテスト駆動開発をプロジェクトに適合させればよいか」「どこから手を付けるか」「ユニットテストとエンドツーエンドテストを両方とも書かねばならないのはなぜか」「テストに開発を“駆動”させるとはどういう意味か」といった、プロジェクトで遭遇しがちな疑問や混乱に道筋を与え、ソフトウェアを“肥大化”ではなく“育てる”方法を伝授する。プロフェッショナルを目指す、あるいは自認する開発者必読の書です。

まえがき
推薦のことば
序文
著者について
翻訳者について
『実践テスト駆動開発』への賛辞

第I部 導入

第1章 テスト駆動開発のポイントとは?

学習プロセスとしてのソフトウェア開発
フィードバックは欠かせないツールである
変化を支えるプラクティス
テスト駆動開発ひとめぐり
全体像
エンドツーエンドでテストする
テストのレベル
外側の質と内側の質

第2章 オブジェクトをテスト駆動開発する

オブジェクトの網の目
“値”と“オブジェクト”
メッセージに従うこと
命じよ、訊ねるな
しかし、時には訊ねることもある
協力しあうオブジェクトのユニットテスト
モックオブジェクトを用いてTDD をサポートする

第3章 ツールの紹介

すでに知っているなら飛ばしても大丈夫
JUnit 4 の簡単な紹介
Hamcrest のマッチャーとassertThat()
jMock2:モックオブジェクト

第II部 テスト駆動開発のプロセス

第4章 テスト駆動のサイクルに火を入れる

序論
まずは動くスケルトンをテストする
動くスケルトンのかたちを定める
フィードバックの源泉を構築する
不確かなことを早めに明らかにする

第5章 テスト駆動のサイクルを保つ

序論
フィーチャの実装を受け入れテストから始める
進捗を測るテストとリグレッションを検出するテストを区別する
もっともシンプルな正常ケースからテストを始める
読みたいテストを書く
テストが失敗するのを確認する
入力から始め、出力に向けて開発する
振る舞いのユニットテストを行えメソッドをテストするのではない
テストの声を聴く
サイクルを回す

第6章 オブジェクト指向スタイル

導入
保守を考えて設計する
内部構造vs. ピア
AND やOR、BUT は禁止
オブジェクトピアのステレオタイプ
コンポジットは構成要素の総体よりもシンプルにせよ
コンテキストからの独立
適切な情報を隠蔽する
自分たちなりの見方

第7章 オブジェクト指向設計を実現する

テストファーストは設計にどう役立つか
分類よりもコミュニケーションを
値型
オブジェクトはどこから来るのか?
インターフェイスを用いて関係性を特定する
インターフェイスもリファクタリングする
オブジェクトを複数組み合わせてシステムの振る舞いを記述する
抽象レベルのプログラミングを組み上げる
クラスはどう考えればよいか?

第8章 サードパーティーコードの上に構築する

導入
モックするのは自分の持っている型だけ
インテグレーションテスト内でアプリケーションオブジェクトをモックする

第III部 動くサンプル

第9章 オークションスナイパーを作動させる

最初から始める
オークションと通信する
安全に作る
現実はこうはいかない

第10章 動くスケルトン

スケルトンの全貌を明らかにする
一番最初のテスト
いくつかの最初の選択

第11章 最初のテストを通す

テスト装置を構築する
テストを失敗させ、そして、通るようにする
必要最小限

第12章 入札を準備する

マーケットへの参入
入札のテスト
AuctionMessageTranslator
価格メッセージを解析する
作業を終わらせる

第13章 スナイパーが入札する

AuctionSniper を導入する
入札メッセージを送信する
実装を整える
意思決定を後回しにする
創発的設計

第14章 スナイパーがオークションで落札する

まずは失敗するテストから
入札者については誰が知っているのか?
スナイパーのやるべきことは他にもある
スナイパーに状態をいくつか加える
スナイパーが落札する
安定して進捗させる

第15章 実際のユーザーインターフェイスに向けて

より現実的な実装
価格の詳細を表示する
スナイパーイベントをシンプルにする
最後までやり切る
最後の仕上げ
所見

第16章 複数の商品をスナイプする

複数の商品のためのテスト
ユーザーインターフェイスから商品を追加する
所見

第17章 Main クラスを分解する

ロールを見つける
チャットを抽出する
接続を抽出する
SnipersTableModel を抽出する
所見

第18章 詳細を詰める

もっと役に立つアプリケーション
値段が上がりすぎたら入札をやめる
所見

第19章 エラー処理

うまくいかなかったらどうする?
エラーを検知する
エラーを表示する
スナイパーの接続を切る
エラーを記録する
所見

第IV部 持続可能なテスト駆動開発

第20章 テストの声を聴く

序論
オブジェクトのモックを作りたいが(裏技を使わないと)置き換えられない
ユニットテストでもプロダクションコードと同じテクニックを使って依存関係を排除する243 ログ出力はフィーチャ
具象クラスのモック
値をモックしない
肥大化したコンストラクタ
混乱したオブジェクト
多すぎる依存関係
多すぎるエクスペクテーション
(きちんと声を聴いたときに)テストが教えてくれること

第21章 テストの可読性

序論
フィーチャを表すテスト名
標準的なテストの構成
テストコードの合理化
アサーションとエクスペクテーション
リテラルと変数

第22章 複雑なテストデータの構築

序論
テストデータビルダー
よく似たオブジェクトの作成
ビルダーの組み合わせ
ファクトリーメソッドによるドメインモデルの強調
重複の削除の実例
コミュニケーションが第一

第23章 テストの診断

失敗させる設計
小さく、焦点が絞られ、適切な名前がつけられたテスト
説明的なアサーションメッセージ
マッチャーによる詳細の強調
自己説明的な値
仕込まれたことが明らかな値
トレーサーオブジェクト
エクスペクテーションを満たすことを明示的に確かめる
診断はファーストクラスのフィーチャ

第24章 テストの柔軟性

序論
情報の表現ではなく中身をテストする
的確なアサーション
的確なエクスペクテーション
「モルモット」オブジェクト

第V部 高度なトピック

第25章 永続性のテスト

序論
永続状態に影響をおよぼすテストを分離せよ
テストのトランザクション境界を明示する
永続操作を行うオブジェクトのテスト
オブジェクトが永続化できることのテスト
だけど、データベースのテストは、おそいっ

第26章 ユニットテストとスレッド

序論
機能と同時並行性ポリシーの分離
同期処理のユニットテスト
受動的なオブジェクトのストレステスト
テストのスレッドとバックグラウンドスレッドの同期
ユニットテストレベルでのストレステストの限界

第27章 非同期処理のテスト

序論
サンプリングかリスニングか
ふたつの実装
逃げ出すテスト
更新の検知漏れ
あるアクションが何も影響をおよぼさないことのテスト
同期処理とアサーションの区別
イベント発生源の切り出し

第28章 ティムマキノンによるモックオブジェクトの簡単な歴史

序論
はじまり
噂は広まる
新たな世代
さらなる強化

付録A jMock2 チートシート

序論
テストフィクスチャクラス
モックオブジェクトの生成
エクスペクテーションでテストする
エクスペクテーション

付録B Hamcrest で独自マッチャーを定義する

序論
独自のマッチャー型を定義する
マッチャーオブジェクトはステートレスであること

付録C 参考文献 付録D 訳者あとがき

索 引

本書は付属データの提供はございません。

お問い合わせ

内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。

正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。

利用許諾に関するお問い合わせ

本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。

追加情報はありません。

ご購入いただいた書籍の種類を選択してください。

書籍の刷数を選択してください。

刷数は奥付(書籍の最終ページ)に記載されています。

現在表示されている正誤表の対象書籍

書籍の種類:

書籍の刷数:

本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。

対象の書籍は正誤表がありません。

最終更新日:2012年10月01日
発生刷 ページ数 書籍改訂刷 電子書籍訂正 内容 登録日
1刷 129
図13-1および図13-2
図13-1および図13-2
図13-1の位置には、131ページ図13-2が入ります。 また、131ページの図13-2には、
が入ります。
2012.09.26
1刷 137
図13-4
図13-4
図版内の「?」は「XMPP auction」です。正しくは、
となります。
2012.10.01
1刷 138
図13-5
図13-5
図13-5の中で「Main」は「sniper state displayer」に、また、「?」は「XMPP auction」になります。
正しくは以下のようになります。
2012.10.01

感想・レビュー

reduce さん

2016-06-11

キレイで安心。コードの書き方。

Kenji Hiranabe さん

2014-08-14

TDDのテストの見取り図が良かった。ただ、JMock の解説読むのは辛い。感想こちら。 http://qiita.com/kenjihiranabe/items/b951b6d98672167347fd

Luo Yang さん

2018-02-18

ソフトウェアの外側の質と内側の質双方を高めながら、オブジェクト指向ソフトウェアを「育てて」いく方法を丁寧に綴った本です。オブジェクト指向ソフトウェアは育てられるのです。この本は、著者らのスタイルとしてjMockをフル活用して進めていくところが大きな特徴でもありますが、それを「実装の詳細」として頭の中で抽象化しながら読んでもなお、現実世界のソフトウェアのテスト駆動開発について、多くの示唆が得られます。特にIV章がよい。