web-dev-qa-db-ja.com

64ビットWindowsで32ビットソフトウェアをテストする必要がありますか?

私はソフトウェア開発チームとしてソフトウェア開発者として働いています。私は同じプロジェクトに3年間取り組んできました。ソフトウェアは.NET 4の32ビットデスクトップベースのC#アプリケーションです。Windows7のターゲットプラットフォーム(Windowsをサポートする必要がありましたXP昨年まで)。ソフトウェアはさまざまなカスタムハードウェアと通信しますカスタムドライバが記述されているハードウェアの製造とドライバソフトウェアは、クライアントによって記述されています。32ビット版と64ビット版のWindowsには、もちろん異なるドライバがあります。

システムテストフェーズでは、32ビットと64ビットの両方のWindows 7ですべて/ほとんどのテストケースを実行します。ソフトウェアのバグが1種類のWindowsにのみ存在するかどうかは思い出せません。私がこのような経験をしたので、64ビットWindowsで32ビットソフトウェアをテストする必要があるのでしょうか。

業界標準とは何ですか?

31
Donotalo

64ビットウィンドウで32ビットソフトウェアを実行するときに発生したほとんどのバグは、ソフトウェアの場所(_Program Files_ではなくProgram Files (x86))、レジストリキーの場所(一部はWow6432Nodeにあります)。これらの問題は主に、他のソフトウェア(32ビット)と通信する必要があり、32ビットと64ビットの両方でソフトウェアをテストする必要があったためです...

これらの問題がなかったときは、32ビットモードで明示的にコンパイルするときに、両方のプラットフォームでテストしないことは非常に安全だと思います。 32ビットでコンパイルすると、.NETランタイムはすべてを32ビットモードで実行し、32ビットプラットフォームの32ビットモードと同じように動作します。

64ビットアプリケーション[〜#〜] msdn [〜#〜] )、32ビットアプリケーションはWow64モードで実行され、2ビットアプリケーションの実行(MSDN)はこのモードをさらに詳しく説明します詳細。

31
David Perfors

ハードウェアの製造とドライバーソフトウェアは、クライアントが作成します。もちろん32ビット版と64ビット版のWindowsには異なるドライバがあります。

したがって、32ビットWindowsでは、ソフトウェアは1つのドライバーと通信し、64ビットWindowsでは、別のドライバーと通信しますか?これらのドライバーの新しいバージョンが時々あると仮定します。したがって、32ビットWindowsでソフトウェアをテストするだけの場合、64ビットドライバーにいくつかの違いがあり、ソフトウェア+ 64ビットドライバーの組み合わせが失敗することはありません。そして、ユーザーの観点から、誰に責任があるかは関係ありません(あなたまたはドライバーの作成者)、彼らが見るすべては非稼働システムです。したがって、たとえyourコードにバグがない場合でも、テストによって64ビットドライバーのバグが明らかになる可能性があり、そのようなバグを見つけると、適切な対策(バグレポートを作成者に送信するなど)に役立つ可能性がありますドライバーの)。

もちろん、これら2つのドライバーを何年も使用していて、動作がまったく同じであると確信している場合は、@ DavidPerforsの回答の引数に従って、1つのプラットフォームのテストをスキップすることができます。妥協案として、新しいドライバーバージョンが利用可能になったときのみ、64ビットWindowsでテストを実行することができます。実際、これはドライバーの複雑さ、ドライバーの経験、ドライバーへの自信に依存します。

考慮すべきいくつかの追加事項:

  • ユーザーベースが最も使用しているOSタイプは何ですか? 32ビットまたは64ビットWindows? 1つのプラットフォームのみでテストする場合は、ユーザーが最も頻繁に使用するものを選択します。
  • 使用頻度の低いプラットフォームでソフトウェアの新しいリリースが機能しない場合、どれくらい深刻ですか?たとえば、顧客はすぐに前の作業リリースに戻ってインストールできますか?これにより、彼らはいくつかの不便さや実際の経済的損失を持っていますか?前者の場合、1つのプラットフォームでのテストだけで十分です。後者の場合は、明らかにそうではありません。
23
Doc Brown

啓発されたQAサークルのデフォルトの仮定は、「テストしなかった場合、機能しない」です。

アプリケーションエンジニアがすべてのユニットテストを実行するのと同じ方法で努力するのは、通常、達成不可能な目標です。しかし、彼らはそれが到達し、スケジュールどおりにリリースされるとは信じていません。

ただし、ご質問への回答は、セールスおよびマーケティングのみが可能です。あなたは彼らにテストするためのコストを提供し、彼らは市場の利益の分析を提供します。 both側の推定が十分に正確である場合、答えは簡単になります

if B > C:
    test_32bit_version()

私の経験では、全員のコスト見積もりは不正確です。方程式の反対側については、ディルバートはかつて「猫、ミトンに聞いたところ」でそこでの意思決定をパロディ化していました。はるかに良いことをするには、人類学のフィールド法のトレーニングが必要になります。

16
msw

Windows 7以降のすべてのWindowsインストールの99%、およびVistaのかなりの部分は64ビットであると考えられているのに、なぜそのプラットフォームのテストを行わないことを検討するのでしょうか。
32ビットWindowsを使用していて、製品の寿命が続く限り使用しているごく限られたユーザーグループのために特別に作成しない限り、これは非常に簡単です。

そうです、64ビットの問題をテストします。実際、64ビットプラットフォームで開発し、おそらく64ビットバージョンを標準で提供します。過去6〜8年以内に新しいコンピューターとOSにアップグレードしていない少数の顧客向けに、オプションとして32ビットコンパイルバージョンを提供します。 。

6
jwenting

私の経験から、インストーラーはさまざまなシステムで失敗する可能性が最も高いので、できるだけ多くのさまざまなWindowsセットアップでインストーラーをテストします。

それ以外の場合は、あなたが知っているから経験から与えられたソフトウェアを使用すると、バグが発生する可能性はほとんどありませんだけが表示されます32ビットまたは64ビット。計算されたリスクを負う可能性があります。

まず、出荷に近づくにつれ、後のサイクル間で変更されるコードがほとんどなく、多くのテストサイクルが必要です。保存できるときはいつでも、を使用してより多くのテストケースを作成したり、より多くの(したがってより小さな)サイクルを許可したりして、より迅速なフィードバックを提供できます。 (Xのテストに時間をかけるリスクは、Xをテストしすぎるため、Yをテストしないリスクよりも高くなる可能性があります。)

したがって

  • 進行中のテストサイクルで使用した「その他のビットネス」でテストしてみます。
  • 開発者が使用する「ビットネス」がわかっている場合は、他のものでテストすることから始めます。
  • テストケースを「ビットネス」の間で分割して、それぞれをカバーします
  • ただし、各テストサイクルで「ビン」間でそれらを交換します。
2
Ian

いいえ。同様に、FDAがマウスとラットで新薬のテストを行ったとき、彼らはサルでのテストをスキップして、人間が消費するために販売するだけです。

</皮肉>

はい、はいはいはいはいはい。できる限りすべてのプラットフォームをテストしないと、ソフトウェアの悲しみしかありません。物事は常に異なっており、プロジェクト中のデザイナー/コーダーの頭の仮定は、通常、実際の生活をモデル化することにかなり近くなるだけです。だから、あなたのソフトウェアをテストしてください。お願いします。

2
kmort