ツールボックス
クロスブラウザ テスト、モック オブジェクト、そして Raymond Chen
Scott Mitchell

目次
ブラウザ互換性テストの向上
Web 開発者は夜眠るとき、すべての Web ブラウザが HTML 標準に完全準拠する夢を見ます。彼らは、すべての Web サーファーが同じモニタ解像度、色深度、フォント サイズを使用する世界を想像します。ところが、現実はそれとはかなりかけ離れています。Web 開発者は、起きている間、膨大な数の構成で適切に機能する Web アプリケーションを設計しなければなりません。
完全な Web テスト環境の構築には、手間暇がかかり、複数のブラウザ、バージョン、オペレーティング システムをインストールする必要があります。リモート Web ベースのテスト環境は、開発者のこのような負担を取り除いてくれます。
そのためのサービスの 1 つに "Browsershots" があります。URL を指定すると、Browsershots は選択されたブラウザ、バージョン、オペレーティング システムの組み合わせでスクリーンショットを取得し、表示します。組み合わせは 53 とおりあり、さらに画面サイズ、色深度、JavaScript のサポートなどのクライアント設定を指定できます。Browsershots は無償サービスですが、処理する要求の数に応じて 1 分弱~ 30 分以上の待ち時間が生じる場合があります。1 か月あたり 15 ドルで優先処理にサインアップできます。この優先処理を利用すると、あなたの要求がキューの先頭に移動されます。
スクリーンショットは特定のブラウザでの Web サイトの表示を確認するには便利ですが、サイト上でユーザーが操作したときの動作はわかりません。この種のテストを行うには、BrowserCam を使用します。BrowserCam は Browsershots と同様にスクリーンショットを提供しますが、その他に各種オペレーティング システムやブラウザをリモートでアクセスすることもできます。この機能により、コンピュータにログインし、設定を行い、Web サイトを操作できます。
価格 : Browsershots (無償)、BrowserCam (プレミアム サービス、89.95 ドル/月)
Browsershots で撮った Microsoft.com (クリックすると拡大画像が表示されます)
注目のブログ
コンピュータをシャットダウンするために [スタート] ボタンをクリックする必要があるのはなぜだろうという疑問を抱いたことはありますか。あるいは、なぜ Windows® オペレーティング システムのデバッガを "ワトソン博士" と呼ぶのかを不思議に思ったことはありますか。コンピュータ ゲームが動作しないという問題が発生して、Windows XP SP2 のベータ版リリースが遅れる危機にさらされたことがありますが、それがどのような問題だったのかをご存知ですか。レジストリを "ハイブ" と呼ぶ理由を知っていますか。Raymond Chen は知っています。
Raymond は 1992 年に Windows 95 のソフトウェア エンジニアとして Microsoft に入社して以来、Windows の歴史的な情報に関する仮想リポジトリの役割を果たしています。ブログ「The Old New Thing」の中で、彼は前述の質問に回答し、その他の多くの Windows 従来バージョンにも取り組んでいます。Raymond は多くの Windows のデザイン決定の現場にいたので、Windows の舞台裏に関する生の情報を持っています。内部情報とドライな機知が満載の Raymond のブログは楽しくて役に立つ読み物です。
ところで、Windows レジストリを "ハイブ" (蜂の巣) と呼ぶのは、Windows NT® の開発者の中に蜂嫌いがいたからだということですが、Raymond は後でこのジョークの報いを受けることになりました。ともかく、ここでは 1 つの目標を念頭に置いた重要な決断が下されています。それは下位互換性を確保するということです。Raymond は、古い 16 ビットの Visual Basic® アプリケーションや人気のある MS-DOS® ゲームが新しいバージョンの Windows でも問題なく動作するように、下位互換性を確保するための多大な努力が費やされた場面を見事に浮き彫りにしています。
Windows の歴史に関するブログ以外に、TechNet Magazine (.com) で評判のコラム「Windows 秘話」も執筆しています。また、Windows プログラマ向けのさまざまなヒントや裏技を定期的に投稿しています。
Raymond Chen のブログ : 「The Old New Thing (古くて新しいもの)」(クリックすると拡大画像が表示されます)
モックを使用した単体テスト
優れた単体テストは、簡潔かつ実行が迅速であり、他のテストから独立しています。データベース、Web サービス、構成ファイルなどの外部依存関係のある機能をテストする場合は、これらの目標を達成するための追加手順が必要になります。1 つの選択肢として、各単体テストを実行する前に外部依存関係の状態を記録し、各テストの完了後に状態を元に戻す方法があります。ただし、このような過剰な設定や後処理を行うと単体テストの実行速度が大幅に低下する可能性があるので、重点が単体テストの作成から外部依存関係の状態管理に移ります。
もう 1 つの選択肢として、モック オブジェクトを使用して外部依存関係の呼び出しをシミュレーションする方法があります。単体テストの実行時に、モック オブジェクトは外部依存関係にアクセスするロジックに置き換えられます。テスト対象のコードが操作するのは実際の外部依存関係ではなくモック オブジェクトなので、複雑な設定や後処理のロジックは不要です。また、モック オブジェクトを使用すると、コードと外部依存関係とのやり取りを明示的にテストできます。
複数のオープンソースおよび市販のモック作成用フレームワークが存在し、オブジェクトのモックを作成するための構文要件もさまざまです。一部のフレームワークでは、モックを作成するオブジェクトを指定する文字列をハードコーディングして機能をシミュレーションします。その他に、厳密に型指定されたオブジェクトを使用するフレームワークもあります。このタイプのフレームワークは、実行時よりコンパイル時のエラーの特定に役立ちます。
Typemock Isolator (version 4.2) は、どちらの方法も使用できるモック作成フレームワークです。どちらの方法を使用しても、単体テストでモック オブジェクトを使用する場合のセマンティクスは同じです。モック オブジェクトを定義し、テスト対象コードとのやり取りの方法を指定し、コードを実行して、想定どおりの結果になることを確認します。
Typemock が他の多くのモック作成フレームワークと異なる点は、ツールと統合のサポートです。モック オブジェクトを使用した単体テストでは、どこで実際の外部依存関係の代わりにモック オブジェクトを使用しているかが必ずしも明確ではないため、デバッグが困難になる可能性があります。
このトレース ユーティリティを使用すると、モック オブジェクトがどのように使われているかを確認できるため、この困難が解消されます。このユーティリティは、モックの型と単体テストの実行中に行われたすべての呼び出しを記録して表示します。単体テストのデバッグ時に、Typemock はモックされたメンバの概要を IDE に表示して、モックされているオブジェクトの内容を明示します。また、Typemock を Visual Studio® シェルに統合してシステムの機能を強化し、NAnt および MSBuild を使用した単体テストの自動化をサポートすることもできます。
Typemock は Microsoft® .NET Framework バージョン 1.1 以降をサポートし、無償の Community Edition や、より機能が豊富な Professional Edition および Enterprise Edition を提供しています。
価格 : Community Edition (無償)、Enterprise Edition (449 ドル)
Typemock Trace Utility (クリックすると拡大画像が表示されます)
推薦図書
.NET Framework 2.0 以降のバージョンでは、コア機能を維持したままで新機能が追加されています。このことが、.NET Framework のバージョン 2.0 以降に関する書籍を執筆する著者を悩ませています。それは、新機能だけに重点を置くべきか、それとも新機能とバージョン 2.0 以降のその他の内容も盛り込むべきかという悩みです。
約 1,500 ページに及ぶ『Pro ASP.NET 3.5 in C# 2008』(Apress、2007 年) の共著者 Matthew MacDonald と Mario Szpuszta は明確に後者を選択しています。本書は 33 の章で構成され、単純な Web フォーラムの作成方法、AJAX や Silverlight™ の最新機能の使い方など、幅広いトピックを取り上げています。
Web フォーラム、Web コントロール、状態管理などの ASP.NET の基礎に関する概要から始まり、ADO.NET、LINQ、ASP.NET AJAX、Silverlight などの話題に移行していきます。ASP.NET のほとんどすべての機能が取り上げられていますが、説明はよく使われる機能に重点を置いています。
これまでに Web 開発の経験があり、ASP.NET 3.5 の習得に関心がある中級または上級の開発者には、『Pro ASP.NET 3.5 in C# 2008』をお勧めします。
価格 : 59.99 ドル
(クリックすると拡大画像が表示されます)