5

私の (かなり小さい) 会社は、人気のある Windows アプリケーションを開発していますが、私たちが常に苦労してきたことの 1 つはテストです。多くの場合、開発者が開発したシステムと同様のシステムで、更新がプッシュされたときにのみテストされます。お客様にお伝えしたいのは、Windows パッチの奇妙な機能が原因で問題が発生したり、特定の偏執的なウイルス対策アプリケーション (Comodo と Kaspersky を見ています!) が原因で問題が発生したりしている私たちの基盤のセグメントがあります。 -アプリで陽性。

ユーザーの 70% が使用しているものについて手動でテストを行っていますが、時間がかかり、手間がかかり、本来あるべきほど完全ではない場合もあります。経営陣は、私たちがもっとうまくやる必要があると主張し続けていますが、リリースの時期が来ると、彼らは問題を突きつけ続けます (テストにはどれくらいの時間がかかりますか? プッシュしてください。問題が発生した顧客にパッチを発行します!)。

VM を使用した自動テストのより優れたシステムを設計したいのですが、それを実装する方法についていくつかのアイデアを使用できます。または、COTS 製品があれば、どんな提案も素晴らしいでしょう。製品のすべての機能を「実行」する Python スクリプトを一緒にハッキングしていますが、Windows がクラッシュした場合のテスト方法がわかりません (それがまだプロセス リストにあるかどうかを確認するだけでなく)。さらに悪いことに、Comodo が何らかの愚かな理由でフラグを立てた場合。

テスト環境を最適にシミュレートするために、VM を可能な限り「純粋」に保ち、OS とウイルス対策、およびいくつかの一般的なアプリ (Acrobat Reader、Firefox など) 以外に多くのがらくたをロードしないようにしています。

どんなアイデアでも大歓迎です!

4

1 に答える 1

1

興味深い問題です。避けるべきことの 1 つは、ウイルス対策 API を使用して、アプリケーションがそれらをトリガーするかどうかを確認することです。期待されるオペレーティング システム上で、実際のライブ AV インストールを監視しながら、アプリケーションの実際のライブ展開が必要です。そうすれば、ヒューリスティック モニタリングと、API が使用する単純な「このコードはそのチェックサムに一致しますか」をトリガーできます。

あなたのアプリケーションが何で書かれているかは教えてくれませんでしたが、あなたのアプリケーションのテスト スイートが、単一のコード パスをテストするのではなく、アプリケーションの一部を実際に実行するのであれば、それは良い出発点かもしれません。統合テスト スイートは、デプロイ ターゲットの問題をチェックするために使用するテスト スイートと同じであることが理想的です。統合テストでは、ライブ環境での各テストの入力と出力を検証する必要があり、クラッシュなどをキャッチする必要があります。また、必要以上に時間がかかるものがないかどうかを確認することを忘れないでください。これは、残念ながら一般的な障害モードです。最も重要なことは、テスト スイートは、実際に製品との同期を保つために、記述、変更、および改善が十分に容易である必要があるということです。すべてをテストしていないテストは役に立たず、実行されていないテストはさらに悪いものです。

おそらく、さまざまな状態のパッチ (およびパッチ解除) で、意図したデプロイ ターゲット全体に VM イメージのスイートが必要になるでしょう。一部のアプリケーションでは、IE のバリアントごとに個別の VM が必要になります。これは、システムの他の側面を変更するためです。各 VM に含まれるものの組み合わせには十分注意してください。一度に複数の AV をテストしないでください。テストを実行する前に、スナップショットの AV を更新します。イメージに十分な大きさの組み合わせソフトウェアがある場合は、イメージの作成を自動化する必要がある場合があります。基本システム ビルドを取得し、最新のパッチ レベルに更新してから、AV とその他のアプリケーションの組み合わせのインストールをスクリプト化します。

はい、この VM のファームを維持するのは大変なことですが、アプリケーションのデプロイをスクリプト化し、適切なスナップショットとスナップショットのパッチ適用と更新の計画があれば、実際のテスト スイート自体の実行にそれほど時間がかかることはありません。適切なハードウェアが与えられます。VM ソリューションを調査する必要がありますが、私はおそらく VMWare から始めます。

于 2011-06-01T22:37:48.443 に答える