« 2005年9月8日

2005年9月10日の投稿

2005年9月12日 »

ここでのテストは、開発者テスト、の中の、ユニットテストの話。XPとTDDの文脈において、設計を駆動するテストについてです。(※最近、テスト、と言う言葉を慎重に使わないと、いろんな他の方面から誤解を招く、ということを知って、文脈を特定しておきます。^^;;)

テスト容易性(EoT=Ease of Testing)が重要な設計品質である、ということを以前書いた。もう少し具体的な根拠を書きたい。

ユニットテストをたくさん作るということは、設計に対してどんな意味を持っているのだろう?物理的にいうと、「プログラムのエントリーポイントを増やしている」ということになる。

blog6

エントリーポイントとは、プログラムのスタート地点である。通常であれば、プログラムはmainという名前の決まったエントリーポイントから呼び出され、多くのモジュールを通過して終了する。しかし、ユニットテストを導入することによって、多くのテストメソッドが独立したエントリーポイントなる。main以外にも多数のエントリーポイントが作られ、テスト対象のモジュール(クラスやメソッド)はさまざまな道筋(文脈)で呼び出されることになる。こうして多くの道筋で使われることで、モジュールの文脈依存が小さくなり、この結果分かりやすく再利用しやすいテスト対象モジュールが取り出されることになる。さらに、モジュールの良い名前の採択が進む(文脈を表す名前でなく、責務を表すメソッド名が現れる)。そして、――これが最も大切なことなのだが―テストがあることによって以降のソフトウェアの変更が小さなコストでできるようになる(EoTは、EoC(Ease of Changing)の前提条件でもある)。

結論として、テストしやすい設計とは、「再利用性の高い設計」、「変更容易性の高い設計」を、テストというより具体的な言葉によって方針化しているといえる。以前、XPをやり始めたチームで、「このメソッドはユニットテストできません」という発言をよく聞いた。例えば、「タイマー起動である条件に合致するユーザをDBから選択し、そのユーザのアドレスにメールを送る」というメソッドをテストしようとしており、これはテストできない、という言い分である。これは典型的な間違いだ。まず、「タイマー起動」、「DBから条件に合致するユーザを選択」、「メールを送付」という3つに分けてテストできないか、と考える。テストを基点としてモジュール分割を考えるわけだ。タイマー起動のメソッドについては、時間をパラメータとし、すぐに起動されるイベントをテストしよう。メールを送付できることをテストするのは難しい。そこでMock(スタブ)を登場させる。メールの送付が他のクラスの責務であれば、自クラスのテストとしてはMailerMockを定義して、そこにメッセージが送られていることをテストすればよい。基本は、

「テストしやすいように、責務を分割する」

ことだ。この指針が、EoT(Ease of Testing)の本質だ。テストはモジュール分割のよいナイフになる。

平鍋

« 2005年9月8日

2005年9月10日の投稿

2005年9月12日 »

» このブログのTOP

» オルタナティブ・ブログTOP



プロフィール

平鍋 健児

平鍋 健児

株式会社チェンジビジョン代表取締役社長、永和システムマネジメント副社長。
オブジェクト指向開発、UMLの勘所、アジャイルな開発手法の未来、マインドマップのソフトウェア開発での利用方法、プロジェクトファシリテーション(見える化)を語ります。現在、マインドマップとUMLの融合エディタ、astah*(アスター、旧JUDE)を開発中。

詳しいプロフィール

Special

- PR -
最近のトラックバック
カレンダー
2013年4月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
hiranabe
Special オルタナトーク

仕事が嫌になった時、どう立ち直ったのですか?

カテゴリー
エンタープライズ・ピックアップ

news094.gif 顧客に“ワォ!”という体験を提供――ザッポスに学ぶ企業文化の確立
単に商品を届けるだけでなく、サービスを通じて“ワォ!”という驚きの体験を届けることを目指している。ザッポスのWebサイトには、顧客からの感謝と賞賛があふれており、きわめて高い顧客満足を実現している。(12/17)

news094.gif ちょっとした対話が成長を助ける――上司と部下が話すとき互いに学び合う
上司や先輩の背中を見て、仕事を学べ――。このように言う人がいるが、実際どのようにして学べばいいのだろうか。よく分からない人に、3つの事例を紹介しよう。(12/11)

news094.gif 悩んだときの、自己啓発書の触れ方
「自己啓発書は説教臭いから嫌い」という人もいるだろう。でも読めば元気になる本もあるので、一方的に否定するのはもったいない。今回は、悩んだときの自己啓発書の読み方を紹介しよう。(12/5)

news094.gif 考えるべきは得意なものは何かではなく、お客さまが高く評価するものは何か
自社製品と競合製品を比べた場合、自社製品が選ばれるのは価格や機能が主ではない。いかに顧客の価値を向上させることができるかが重要なポイントになる。(11/21)

news094.gif なんて素敵にフェイスブック
夏から秋にかけて行った「誠 ビジネスショートショート大賞」。吉岡編集長賞を受賞した作品が、山口陽平(応募時ペンネーム:修治)さんの「なんて素敵にフェイスブック」です。平安時代、塀に文章を書くことで交流していた貴族。「塀(へい)に嘯(うそぶ)く」ところから、それを「フェイスブック」と呼んだとか。(11/16)

news094.gif 部下を叱る2つのポイント
叱るのは難しい。上司だって人間だ、言いづらいことを言うのには勇気がいるもの。役割だと割り切り、叱ってはみたものの、部下がむっとしたら自分も嫌な気分になる。そんな時に気をつけたいポイントが2つある。(11/14)

news094.gif 第6回 幸せの創造こそ、ビジネスの使命
会社は何のために存在するのでしょうか。私の考えはシンプルです。人間のすべての営みは、幸せになるためのものです――。2012年11月発売予定の斉藤徹氏の新著「BE ソーシャル!」から、「はじめに」および、第1章「そして世界は透明になった」を6回に分けてお送りする。(11/8)

オルタナティブ・ブログは、専門スタッフにより、企画・構成されています。入力頂いた内容は、アイティメディアの他、オルタナティブ・ブログ、及び本記事執筆会社に提供されます。


サイトマップ | 利用規約 | プライバシーポリシー | 広告案内 | お問い合わせ