アプリケーションの互換性テスト – 概要

新しいリリースの Windows を出荷するたびに、アプリケーションが以前のリリースの Windowsで動作していたのと同様、新しいWindowsでもちゃんと動作することを実現するためには、大きな努力を伴います。 PDC にて Windows Vista の新しい分野についてお話しましたが、その中で OS のセキュリティモデルの変更に伴い、この種の互換性レベルを下げるとお伝えしました。しかし Windows 7 ではエンジニアリングの方針を転換して、互換性を保つために注力することにしました。デバイステストもそうですが、互換性テストは、それだけを専門に行っているグループもありますが、エンジニアリングの組織全体にわたる取り組みです。この投稿は数人が執筆し、 Windows Experience チームの副社長である Grant George によってまとめられたものです。 --Steven

私たちはアプリケーションの互換性について大変積極的な取り組みをしてきました。このプロセスは最初に製品のスケジュールを計画し、設計し、Windows のコードをチェック インしたときから始まり、その後もエンジニアリング プロセスや分野全体にわたって最終的に製品をリリースするまで (そして、それ以降も) 続きます。

Windows 7 でのアプリケーション互換の目標

Windows 7 に対するアプリケーション互換の目標は、Windows Vista で動作していたほとんどすべてのアプリケーションが Windows 7 でもシームレスに使用し続けられるようにすることです。これには常時注意を払っている必要があります。なぜなら、新しい Windows リリースと並行して、頻繁に更新されるアプリケーション類があるからです。このようなアプリケーションは主にシステム ユーティリティ、診断プログラム、セキュリティ ソフトウェアなどで、共通のテーマは、Windows 内部に実装されることを前提としているので、そのため更新が必要なのです。私たちはこのようなアプリケーションを提供している数多くのソフトウェア メーカーと注意深く調整を続けています。これについては、今月の初めに Ecosystem Readiness Program を発表した際にお話させていただきましたが、以下で詳しく説明します。

製品サイクルを開始するにあたり、Windows 7 の各要素がアプリケーションの互換性を念頭においていることを確かめるために、新しい機能や変更されたデザインについてレビューしました。エンジニアリング プロセスでは、公開された API が変わっていないことを保証するための自動化された品質チェックを行います。また、テスト エンジニアは適切なツール、時間、および情報を用いてアプリケーションの問題が開発サイクルのできるだけ早期に発見できるようにしています。遠隔測定情報も、多種多様のソフトウェア カテゴリにわたってアプリケーションが新しい OS 上で期待通りに動作するように、ユーザーがいつも使用している数多くのアプリケーションを査定して優先順位を付けるために収集され、市場のデータやインストール率の情報と組み合わせて使用されます。

以下では、どのようにこの目標を達成するかについて話を広げます。

アプリケーション互換性のエンジニアリング

外部使用による情報豊かな遠隔測定や広範なソフトウェア市場は、最も人気があり重要なアプリケーションのリストを提供する重要な役割を果たしています。このリストは開発サイクル中、頻繁に更新されます。私たちのエンジニアはこれらのアプリケーションを入手し、自動化テストを構築して Windows 7 上で期待どおりに動作するか一つ一つ検証します。

アプリケーションの互換性に影響を及ぼすような変更は注意深くフォローされます。Legacy Code Removal (レガシー コードの削除) はその一例で、以前の製品リリースでは存在したコードを削除することは厳重に監視および管理されており、影響を受ける人たちとの文書による約束なしには行えないようになっています。たとえば、API コールを廃止する必要がある場合、その API に関する文書を更新し、セキュリティ問題を早急に修正しなければならない場合を除き、遠隔測定データによって削除による影響が最少だと判明するまで待ちます。

開発プロセス全体にわたり、アプリケーション互換に関係する新しいコードを継続的に検証するため、常時自動化されたテストを実行しています。コードがメインのビルドにチェックインする準備ができた際、もし自動化されたテストで互換性の不具合が見つかると、そのチェックインは中断されます。この時点でコードは既知の互換性問題がないかスキャンされ、問題が検出されると開発者は問題を修正するよう指示が出されます。もちろん、他社製ソフトウェアのカバー率を上げるため、Windows 7 の開発期間を通じて新規のテストも開発しています。

エンジニアリングおよびテストの戦略

Windows 開発の取り組みの一部として、アプリケーションの互換性を専門的に担当しているチームがいくつかあります。これらのチームは、どのようにアプリケーション互換を念頭において構築すればよいかのアドバイスや、Windows プラットフォームへの特定の変更に対してどのアプリケーションが影響を受けそうかという情報を提供しています。チームはまた、開発チームがアプリケーションの互換性を完全に考慮に入れ、「Windows 7 で既存のアプリケーションを動かす」という目標になるべく近づけるようにするため、新しい機能のデザインやその他の計画された変更のレビューもします。

内部の Windows 開発チームとの協働に加え、Windows アプリケーションを書いている他社の開発者にも働きかけ、パートナーが彼らのソリューションが Windows Vista や Windows 7 と完全に互換性を保つために必要な情報がすべて入手できるようにしています。さらに、他社の開発者による解決が必要であるような問題を発見した場合、私たちはすべての情報、リソース、アドバイスを集め、外部の開発者が問題を理解して修正するのを助けるために会話しながら一緒に取り組んでいます。

最近、私たちはWindows 7 Ecosystem Readiness Program について発表しました。このプログラムはパートナーに対し Windows 7 のビルドへのアクセスや Windows 7、Windows Vista、Windows Server 2008、および Windows Server 2008 R2 用のソリューションをテストするのに必要なツールを提供します。Ecosystem Readiness Program はまた、エコシステムの複数のコンポーネントを一緒にテストすることを促進し、その結果、全体的なユーザー エクスペリエンスを向上させます。特定の OEM (PC メーカー) の製品、ソフトウェア アプリケーション、認証されたハードウェア デバイスのみにフォーカスするのではなく、さまざまなコンポーネントを一緒に組み合わせ、品質、信頼性、パフォーマンス、および新機能の採用による革新をもたらすような豊かなユーザー エクスペリエンスを検証します。

前述のように、遠隔測定データやマーケット シェア情報を用いて、互換性の取り組みの一環として私たちが直接テストするアプリケーションを選んでいます。下記はテストでフォーカスしているユーザー シナリオの一例です:

  • コミュニケーション
  • ゲーム
  • セットアップ、セキュリティ、パフォーマンスといった基礎的なこと
  • メモリ
  • 音楽
  • 生産性
  • TV/映画
  • データのバックアップ/セキュリティ
  • モビリティ
  • 財務管理

対象のアプリケーションカテゴリの完全なリストを参照するには、この投稿の最後にある付録セクションをご覧ください。ぜひとも製品の詳細なリストを提供したいのですが、この情報源のいくつかは第三者が所有する調査に基づいています。

テストをする上でもうひとつの大変重要なテクノロジは、Java、.Net Framework といった中間階層のテクノロジで、このようなテクノロジを使用するアプリケーションが期待通りに動作し続けるか確認する必要があります。

単独で動作する他社製アプリケーションに加え、PC にプレインストールされているソフトウェアや最初から組み込まれているアプリケーションの一部についても互換性をテストしています。テストするソフトウェアは、 OEM パートナーとの契約および提出されたインストール イメージによって提供され、 Windows 7 のクリーン インストール環境および OEM の一般的なハードウェアでの Windows Vista からのアップグレード環境でテストされます。この種のテスト カバレージは、多くのユーザーにとっての Windows 7 での初期体験を最もよく再現するものです。このようなアプリケーションの多くは OS やハードウェア、ドライバと密接に連携しているので、通常 OEM は新しい OS のリリースにあわせてソフトウェアの更新プログラムを提供します。

これまでに述べたテストのやり方に加え、マイクロソフトの IT 部門では約 1,500 種類のアプリケーションの製品群を保持しています。これらのアプリケーションは、マイクロソフト社内でソフトウェアを展開する前にテストされるべきものです。

マイクロソフトの IT 部門は、サンプル ベースのテストにおいてアプリケーションの選定プロセスを単純化するために、アプリケーションの追跡方法を開発しました。似通ったデータ処理、コントロール、根底にあるテクノロジ、および方法を持つアプリケーション群を識別することにより、マイクロソフトの IT 部門は全アプリケーションの約 4~6% をテストすることができ、全体の互換性についての合理的な保証を得られます。

詳細については、LOB Application Compatibility Technical のホワイトペーパーをお読みください。

検証の戦略

テスト プロセスの一部に、他社製アプリケーションを検証する際のシナリオを作成する作業があります。私たちはアプリケーションの意図された機能性を確認しつつ、OS の変更点や新しい機能性、リスクを伴う統合された分野に対して注意を払いながら、これに取り組んでいます。手動および自動化テスト パスは、識別されたシナリオをカバーしてユーザー エクスペリエンスを検証するようにスケジュールを組まれます。アプリケーションは異なるハードウェアのセットでテストされ、x86、x64、インテル、AMD、タッチ、マルチ タッチなどたくさんの異なる機器構成を網羅するようにしています。

テストするアプリケーションの互換性を測定する際、私たちは特定のカテゴリを使用しています:

  • Excellent ( ) – 互換性の問題はない
  • Poor ( ) - マイナーな機能が動作していない
  • Failure (regression) ( 退行による不可 ) – Windows Vistaでは動いていたが、今は正しく動作していない
  • Failures (non-regression) ( 退行ではない不可 ) – アプリケーションは Windows 7 上で動作しないが、Windows Vista の時も動作していなかった
  • Accepted Regression ( 認められた退行 ) – OS の変更がアプリケーションに影響を及ぼしたであろうことを認識しており、アプリケーション メーカーと共に問題の軽減に努めた/努めているものです。バージョン番号がその一例で、特定のバージョンでのみ動作するようにハード コードされているアプリケーションは、新しい OS のバージョンがわからないのでインストールできません。

このカテゴリの詳細については、今後投稿する予定のブログにて、どのように私たちがアプリケーションの互換性を管理しているかについて取り上げる予定です。

テストの一環として、アプリケーションの側で解決されなければならないような問題を見つけることがあります。私たちはすべての関係する技術情報、リソース、アドバイスを集め、外部のパートナーが問題修正するのを助けるためにコミュニケーションをしながら取り組んでいます。もちろん、私たちがテストするのと同時に、彼らも自社製品と Windows 7 の互換性をテストできるよう、テクニカル ベータ プログラムに参加してもらっています。

最後に

アプリケーションの互換性は Windows チームにとって大変重要です。私たちは Windows が次のリリースへ移る際に、みなさんのアプリケーションでのエクスペリエンスが向上するよう絶えず努力しています。ぜひ Windows 7 のベータ版を試して、アプリケーションの互換性の分野における改良を体験し、ご意見をお聞かせください。

アプリケーションの互換性を支援するためエンド ユーザーの立場で行ってきた取り組みは、お話しするに値するものです。アプリケーション互換の失敗の多くはインストール時に発生しますが、これを支援するために Windows 7 では失敗したインストールの検出を改善し、ステップ バイ ステップ ウィザードを提供してアプリケーションの「互換性モード」が適切に設定されるようにしました。また、リアルタイムで問題の報告とソリューションを提供し、ユーザーが更新されたバージョンやパッチを見つける手助けをします。みなさんの多くは Skype を現在のバージョンへアップグレードまたはインストール後に実行しようとした際に体験されたかと思いますが、いずれのケースでもベータ版のダウンロード サイトが自動的に参照されるようになっています。

付録

Microsoft がカバーしたユーザーシナリオおよびアプリケーションカテゴリ

Table of Microsoft Covered Consumer Scenarios and Application Categories 

リストには過去 24ヶ月の間に最もよく売れたアプリケーションのトップ 50 が含まれています。このデータの一部はいくつかの有名な第三者調査機関により収集および集計されたものです。