マイクロソフト プロダクト ディベロップメント リミテッド
ディベロッパー製品開発統括部テスティンググループ
テスト リード
福崎 博文
Visual Studio 2002から開発に携わっています。最近は,3歳になる愛娘と携帯電話でのおしゃべりにはまっています。


連載のバックナンバーはこちら


 われわれVisual Studioのテスト・チームが行っているテスト作業には,製品テスト以外にも,テスト環境の構築,テストの自動化,バグ・レポートの作成など,様々なものがあり,それぞれに効率化すべきことがあります。今回は,その中のテスト環境の構築を取り上げましょう。


イラスト:岡本 敏

 テスト環境の構築とは,製品をテストするうえで必要になるOSやアプリケーション・ソフトをインストールして,いつでも対象製品をテストできる状態を作ることです。一見して単純なことのように思えるかもしれませんが,少しずつ異なった条件を用意したり,テストのたびにクリーンな状態を何度も用意する必要があります。OSを最初からインストールしていると,気が遠くなるほど時間がかかってしまいます。そこでテスト環境を効率的に構築する必要があるのです。

 皆さんの中には市販のバックアップ・ソフトなどを使ってイメージ化している方もいらっしゃることでしょう。イメージ化とは,一度コンピュータにOSやその他テストに必要なファイルなどをインストールしたら,そのハードディスクの内容を丸ごとコピー(バックアップ)しておくことです。その環境が必要になったら,そのイメージをハードディスクに復元することで,すぐにテスト環境を構築できます。

イメージ・ファイル作成だけでは追い付かない
 マイクロソフトのテスト・チームでも,以前から社内ツールを使ってイメージ化の方法を利用していました。すべてのOSに関して,各マシンごとにイメージ・ファイルを作るのです。Windows 2000,Windows XP,Windows Server 2003などのOS,ProfessionalやHome Editionなどのエディション,適用するサービス・バックの種類などの組み合わせが必要です。さらに,コンピュータの機種が異なれば,グラフィックスやサウンドなどのハードウエア構成が異なり,デバイス・ドライバを変えなければならないため,機種ごとにも各OSのイメージが必要でした。結果として,そろえなければならないイメージの数は,数百にも上りました。

 しかしながら,この手法は破綻してしまったのです。きっかけは,Microsoftが2002年1月に発表した「Trustworthy Computing(信頼できるコンピューティング)」です(該当サイト)。これ以降,セキュリティに関する社内ルールが厳しくなり,テスト・マシンとはいえ常に最新のセキュリティ・パッチを当てる必要が出てきたのです。

 当初は,セキュリティ・アップデートが公開されるたびに,それを適用したイメージを作り直すことで対処していました。Visual Studioのテスト・チームには,80台近いコンピュータがあります。それらは機種も異なります。すべてのイメージ・ファイルに最新のセキュリティ・アップデートを適用し,作り直すのに,膨大な時間がかかってしまいます。製品のテストに時間を多くかけるはずが,次第にテスト環境構築のためのイメージ・ファイルのメンテナンスに時間をとられるようになってしまいました。これでは本末転倒です。


△ 図をクリックすると拡大されます
図1●Sysprep(システム準備ツール)の画面

Sysprepを使うことで
機種依存をなくし,復元時に最新パッチをあてる

 そこで現在われわれが利用しているのは,「Sysprep(System Preparation Tool:システム準備ツール)」と呼ぶツールを併用する方法です(図1 )。この方法は,MSDNオペレーティング・システム・サブスクリプション以上のライセンスを所有するユーザーでしたら,ライセンスに抵触することなく使用できます。

 Sysprepはイメージ化ツールというよりも,他のツールでイメージ化するときにSysprepで前処理をするもので,以下のようなことが実現できます。
●特定の機種に依存したドライバを含まないOSのひな型を作成する。
●イメージの復元中に,デバイス・ドライバを自動的にインストールする。
●イメージの復元中に,セキュリティ・アップデートを自動的にインストールする。

 つまり,単純なイメージ化ではなく,最新のセキュリティ・アップデート(パッチ)が適用された安全なテスト環境を,短時間で用意できるので,メンテナンス・コストが抑えられるのです。


△ 図をクリックすると拡大されます
図2●Sysprepの仕組み(その1)
最初にOSとサービス・パックをインストールする(上)。これにはコンピュータを同定するためのSID(セキュリティID)や機種に依存するデバイス・ドライバなどが組み込まれている。Sysprepを実行すると,SIDやデバイス・ドライバを削除する(中)。さらにハードディスクにインストールされたイメージをそのままコピーする(下)。

 具体的にどのようにこれらを実現するのか順に見ていきましょう(図2)。まず,パソコンにOSをインストールしてひな型の環境を作ります。これにはサービス・パックもインストールします(図2上)。

 次に,マイクロソフトがWebサイトで無償提供しているSysprep.exeをダウンロードします。Windows XP用(該当サイト)とWindows 2000用(該当サイト)で異なるので,注意が必要です。また,Sysprepの本来の目的は,企業のシステム管理者やOEMメーカーなどが複数のコンピュータにOSをインストールすることです。日本語の技術文書がありますので,一度読んでおくことをお勧めします(該当サイト)。

 ダウンロードしたプログラムを,ひな型になるパソコンにインストールして,実行します(図2中)。このときSID(セキュリティID)と呼ばれるマシンごとに与えられるID番号を削除します。さらにデバイス・ドライバを削除して,機種に依存しないOSのイメージができ上がります。

 さらに,Sysprepと一緒に提供される「セットアップ・マネージャ」(Setupmgr.exe)を使い,復元時にどのようにセットアップしたいのかを記した「Sysprep.inf」という設定ファイルを生成します。これはあとから編集することでカスタマイズできます。

 Sysprepによって作られた特殊なWindowsマシンは,イメージ化のツールを使えば,まるごとハードディスク・イメージとしてファイル化されます。それをファイル・サーバーなどに保存しておきます(図2下)。


△ 図をクリックすると拡大されます
図3●Sysprepの仕組み(その2)
復元するときは,まずバックアップを取っているハードディスク・イメージをコピーしてくる(上)。コンピュータを再起動させるとMini-Setupが起動して,「SID」「デバイス・ドライバ」「セキュリティ・パッチ」「ウイルス対策ソフト」などをインストールしてくれる(下)。どのようなものを自動的にセットアップするかはSysprep.infを参照している。

 OSをパソコンに復元したい場合,ハードディスクのイメージ・ファイルをパソコンにコピーします(図3上)。そして再起動すると「Mini-Setup」と呼ばれるセットアップ・プログラムが実行されます(図3下)。これによって,SIDを組み込み,機種に依存したデバイス・ドライバもインストールします。通常のOSのインストールとは異なり,4~5分で完了します。

 さらにSysprep.infなどの設定ファイルを使えば,プラグ&プレイで済まないデバイス・ドライバのインストールや,コンピュータ・アカウントの作成,ドメインへの参加などが自動的に行えます。設定ファイルは,Mini-Setup実行後に自動実行させるアプリケーションも記述できて,セキュリティ・パッチの適用,アプリケーション・ソフトのインストールまでが行えます。

 Visual Studioのテスト・チームでは以上のような手順で,OS/エディション/サービス・パック/言語(日本語版/英語版など)ごとにイメージを作成しています。現在では開発中のOSを含めて,約300個のイメージ・ファイルを用意しています。日本語版のOSに限定すれば,21個のイメージ・ファイルで済むようになりました(表1)。

OSの種類イメージ・ファイル数
Windows 2000 Professional出荷版,SP1,SP2,SP3,SP45
Windows 2000 Server出荷版,SP1,SP2,SP3,SP45
Windows 2000 Advanced Server出荷版,SP1,SP2,SP3,SP45
Windows XP Professional出荷版,SP12
Windows XP Professional for Tablet PC SP11
Windows Server 2003, Standard Edition出荷版1
Windows Server 2003, Enterprise Edition出荷版1
Windows Server 2003, Datacenter Edition出荷版1
合計21
表1●マイクロソフトがテストのために用意しているイメージ・ファイルの種類

(次のページへ続く)