(57)【要約】機能が高められ、またパフォーマンスが改善されたエラー応答テストのシステムおよび方法を提供する。エラー応答テストシステムは、自動化された効率的な形で、被験アプリケーションのエラー応答をテストするために、被験アプリケーションにエラーを注入する能力を提供する。エラー応答テストシステムは、被験アプリケーション内でエラーを生み出すことが望まれるアプリケーションコードのコードセグメントを挿入することによって、被験アプリケーションに非同期エラーを注入する。エラー応答テストシステムは、被験アプリケーションのオブジェクトに、直接にエラー作成コードを挿入する。挿入されたエラー作成コードは、被験アプリケーションの、特定の挿入点で、エラーを引き起こす。エラー作成コードは、普通にはテストできない非同期エラーを実施するように設計される。さらに、エラー作成コードは、被験アプリケーション内のどの位置にも挿入することができる。したがって、被験アプリケーションを、非同期エラー応答に関して完全にテストすることができる。
2005528692.tif 000002
【特許請求の範囲】
【請求項１】
ａ）プロセッサと、
ｂ）前記プロセッサに結合されたメモリと、
ｃ）前記メモリに常駐し、前記プロセッサによって実行されるエラー応答テストプログラムであって、エラー応答テストプログラムは、ロード済みアプリケーションプログラムにエラー作成コードシーケンスを挿入することによって、前記ロード済みアプリケーションプログラムをテストし、エラー応答テストプログラムは、前記ロード済みアプリケーションプログラムを実行すると同時に、前記エラー作成コードシーケンスから生じるエラーに対する前記ロード済みアプリケーションプログラムの応答を監視する、エラー応答テストプログラムと、
を含む装置。
【請求項２】
前記エラー作成コードシーケンスから生じる前記エラーは、非同期エラーを含む、請求項１に記載の装置。
【請求項３】
前記非同期エラーにより、前記ロード済みアプリケーションプログラムに、割込みが、引き渡される、請求項２に記載の装置。
【請求項４】
前記エラー作成コードシーケンスは、オブジェクトコードシーケンスを含み、前記エラー応答テストプログラムは、前記ロード済みアプリケーションプログラムのオブジェクトコードに、前記エラー作成コードシーケンスを挿入する、請求項１に記載の装置。
【請求項５】
前記エラー応答テストプログラムは、前記ロード済みアプリケーションプログラムのうちの、ロード中に前記ロード済みアプリケーションプログラムによって指定される部分に、前記エラー作成コードシーケンスを挿入する、請求項１に記載の装置。
【請求項６】
前記エラー作成コードシーケンスは、無限ループシーケンスを含む、請求項１に記載の装置。
【請求項７】
前記エラー作成コードシーケンスは、０による除算シーケンスを含む、請求項１に記載の装置。
【請求項８】
前記エラー作成コードシーケンスは、存在しないメモリへの参照シーケンスを含む、請求項１に記載の装置。
【請求項９】
前記エラー作成コードシーケンスは、インストール済みハンドラがないソフトウェア割込みシーケンスを含む、請求項１に記載の装置。
【請求項１０】
前記エラー作成コードシーケンスが、ＥＤＡＣ（エラー検出および訂正）チェックビットを変更するシーケンスを含む、請求項１に記載の装置。
【請求項１１】
アプリケーションプログラムをテストする方法であって、
ａ）前記アプリケーションプログラムをメモリにロードする工程と、
ｂ）前記ロード済みアプリケーションプログラムに、エラー作成コードシーケンスを挿入する工程と、
ｃ）前記エラーコードシーケンスを伴う前記ロード済みアプリケーションプログラムを実行する工程と、
ｄ）前記エラー作成コードシーケンスから生じるエラーに対する前記ロード済みアプリケーションプログラムの応答を監視する工程と、
を含む方法。
【請求項１２】
前記エラー作成コードシーケンスから生じる前記エラーは、非同期エラーを含む、請求項１１に記載の方法。
【請求項１３】
前記非同期エラーにより、前記ロード済みアプリケーションプログラムに、割込みが、引き渡される、請求項１２に記載の方法。
【請求項１４】
前記挿入されたエラー作成コードシーケンスは、オブジェクトコードシーケンスを含み、前記エラー作成コードシーケンスを挿入する前記工程は、前記ロード済みアプリケーションプログラムのオブジェクトコードに、エラー作成コードオブジェクトコードを挿入することを含む、請求項１１に記載の方法。
【請求項１５】
前記エラー作成コードを挿入する、前記ロード済みアプリケーションプログラム内の位置を決定する工程をさらに含む、請求項１１に記載の方法。
【請求項１６】
位置を決定する前記工程は、前記アプリケーションプログラムをメモリにロードする前記工程中に、前記位置を登録することを含む、請求項１５に記載の方法。
【請求項１７】
前記エラー作成コードシーケンスは、無限ループシーケンスを含む、請求項１１に記載の方法。
【請求項１８】
前記エラー作成コードシーケンスは、０による除算シーケンスを含む、請求項１１に記載の方法。
【請求項１９】
前記エラー作成コードシーケンスは、存在しないメモリへの参照シーケンスを含む、請求項１１に記載の方法。
【請求項２０】
前記エラー作成コードシーケンスは、インストール済みハンドラがないソフトウェア割込みシーケンスを含む、請求項１１に記載の方法。
【請求項２１】
前記エラー作成コードシーケンスは、ＥＤＡＣチェックビットを変更するシーケンスを含む、請求項１１に記載の方法。
【請求項２２】
ａ）ロード済みアプリケーションプログラムにエラー作成コードシーケンスを挿入することによって、前記ロード済みアプリケーションプログラムをテストするエラー応答テストプログラムであって、前記ロード済みアプリケーションプログラムを実行すると同時に、前記エラー作成コードシーケンスから生じるエラーに対する前記ロード済みアプリケーションプログラムの応答を監視するエラー応答テストプログラムと、
ｂ）前記プログラムを担持する信号担持媒体と、
を含むプログラム製品。
【請求項２３】
前記信号担持媒体は、記録可能媒体を含む、請求項２２に記載のプログラム製品。
【請求項２４】
前記信号担持媒体は、伝送媒体を含む、請求項２２に記載のプログラム製品。
【請求項２５】
前記エラー作成コードシーケンスから生じる前記エラーは、非同期エラーを含む、請求項２２に記載のプログラム製品。
【請求項２６】
前記非同期エラーにより、前記ロード済みアプリケーションプログラムに、割込みが、引き渡される、請求項２５に記載のプログラム製品。
【請求項２７】
前記エラー作成コードシーケンスは、オブジェクトコードシーケンスを含み、前記エラー応答テストプログラムは、前記ロード済みアプリケーションプログラムのオブジェクトコードに、前記エラー作成コードシーケンスを挿入する、請求項２２に記載のプログラム製品。
【請求項２８】
前記エラー応答テストプログラムは、前記ロード済みアプリケーションプログラムのうちの、ロード中に前記ロード済みアプリケーションプログラムによって指定される部分に、前記エラー作成コードシーケンスを挿入する、請求項２２に記載のプログラム製品。
【請求項２９】
前記エラー作成コードシーケンスは、無限ループシーケンスを含む、請求項２２に記載のプログラム製品。
【請求項３０】
前記エラー作成コードシーケンスは、０による除算シーケンスを含む、請求項２２に記載のプログラム製品。
【請求項３１】
前記エラー作成コードシーケンスは、存在しないメモリへの参照シーケンスを含む、請求項２２に記載のプログラム製品。
【請求項３２】
前記エラー作成コードシーケンスは、インストール済みハンドラがないソフトウェア割込みシーケンスを含む、請求項２２に記載のプログラム製品。
【請求項３３】
前記エラー作成コードシーケンスは、ＥＤＡＣチェックビットを変更するシーケンスを含む、請求項２２に記載のプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、コンピュータシステムに関し、より詳細には、コンピュータシステムのテストに関する。
【背景技術】
【０００２】
（政府利益に関する記載）
米国政府は、本発明の全額支払済みのライセンスを有し、限られた状況において本発明の米国航空宇宙局（ＮＡＳＡ）によって認められた契約番号ＮＡＳ  １５−１００００、Ｂｏｅｉｎｇ下請け契約番号９４０Ｓ９００１の条件によって提供される合理的な条件で特許所有者に他者へのライセンス交付を要求する権利を有する。
【０００３】
（背景）
現代生活は、ますますコンピュータに依存するようになりつつある。コンピュータは、極端に洗練されたデバイスに進化し、多くの異なる応用例で見出すことができる。この応用例には、自動車、電話機、および他のエレクトロニクスなどの日用デバイスに見られる特定用途向けコンピュータから、ＰＤＡ、パーソナルコンピュータ、サーバ、およびメインフレームの形で見られる汎用コンピュータまでのすべてが含まれる。
【０００４】
コンピュータが、日常生活に融合されるにつれて、その信頼性が、ますます必要になる。十分な信頼性を保証するために、コンピュータシステムを完全にテストすることが必要である。完全なテストには、システムが広範囲の状況で正しく動作することを保証するために、コンピューティングシステムのハードウェアおよびソフトウェアの両方のテストが含まれる。
【０００５】
テストするのがより困難なコンピュータシステムパフォーマンスの領域の１つは、動作エラーに対するコンピュータシステムの応答である。コンピュータの非同期エラー（ａｓｙｎｃｈｒｏｎｏｕｓ  ｅｒｒｏｒ）に対する応答をテストする際の主要な問題は、システムにエラーを注入するために行う必要があるステップにある。通常、これは、侵入的な方法を用いて達成される。
【０００６】
たとえば、デバッガまたはエミュレータを使用し、ソフトウェア内に、オペレータコマンドによってエラーが注入されるブレークポイントをセットする。これらの方法は、億劫であり、時間がかかり、簡単には自動化されない。もう１つの方法は、ソースコードにエラーを起こさせることである。これには、エラーを起こすようにハードコードされた、ソフトウェアの特殊なバージョンの作成が含まれる。この手法では、複数の問題が発生する。第１の問題は、ソフトウェアの複数のバージョンを維持しなければならないことである。第２の問題は、テストされるソフトウェアが、もはや実際に動作するソフトウェアでなくなり、実際に動作するソフトウェアが、実際にテストソフトウェアと異なって応答する可能性があることである。
【０００７】
これらの理由から、コンピュータシステムの非同期エラーに対する応答は、完全にテストすることができない。その代わりに、少数の手動テストを実行することだけができ、これらは、将来にアプリケーションが修正されたとき繰り返されない可能性がある。あるいは、いくつかの場合に、障害状態が全くテストされない可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、非同期エラーに対するコンピュータシステムの応答のより完全なテストをもたらす改良されたテストのシステムおよび方法が、必要である。
【課題を解決するための手段】
【０００９】
本発明は、機能が高められ、またパフォーマンスが改善された、エラー応答テストのシステムおよび方法を提供する。エラー応答テストシステムは、被験アプリケーションに非同期エラーを注入して、自動化された効率的な形で、被験アプリケーションのエラー応答をテストする能力を提供する。
【００１０】
エラー応答テストシステムは、被験アプリケーションでエラーを生み出すことが望まれるアプリケーションオブジェクトコードのコードシーケンスを挿入することによって、被験アプリケーションに非同期エラーを注入する。エラー応答テストシステムは、被験アプリケーションのオブジェクトコードに、直接にエラー作成コードを挿入する。挿入されたエラー作成コードは、被験アプリケーション内の特定の挿入点で、エラーを引き起こす。エラー作成コードは、普通にはテストできない非同期エラーを実施するように設計される。さらに、エラー作成コードは、被験アプリケーションのどの位置にも挿入することができる。したがって、被験アプリケーションを、エラー応答について完全にテストすることができる。
【００１１】
したがって、エラー応答システムは、テストの柔軟性および機能を高め、コンピュータシステムの信頼性を改善するために、コンピュータシステムを完全にテストできるようにする。さらに、エラー応答システムおよびエラー応答方法は、普通にはテストできない非同期エラーのテストを容易にする。
【００１２】
本発明の前述および他の目的、特徴、および長所は、添付図面に示された本発明の好ましい実施形態の以下のより特定の説明から明白になる。
なお、本発明の好ましい実施形態を、添付図面に関して下で説明するが、図面では、同一の符号が同一の要素を示す。
【発明を実施するための最良の形態】
【００１３】
本発明は、機能が高められ、またパフォーマンスが改善された、エラー応答テストのシステムおよび方法を提供する。エラー応答テストシステムは、被験アプリケーションに非同期エラーを注入して、自動化され効率的な形で、被験アプリケーションのエラー応答をテストする能力を提供する。
【００１４】
エラー応答テストシステムは、被験アプリケーション内でエラーを生み出すことが望まれるアプリケーションコードのコードシーケンスを挿入することによって、被験アプリケーションにエラーを注入する。エラー応答テストシステムは、被験アプリケーションのオブジェクトコードに、直接にエラー作成コードを挿入する。挿入されたエラー作成コードは、被験アプリケーション内の特定の挿入点で、エラーを引き起こす。エラー作成コードは、普通にはテストできない非同期エラーを実施するように設計することができる。さらに、エラー作成コードは、被験アプリケーション内のどの位置にも挿入することができる。したがって、被験アプリケーションを、エラー応答について完全にテストすることができる。
【００１５】
エラー応答テストシステムは、アプリケーションプログラムが非同期エラーにどのように応答するかのテストに、特に適用可能である。非同期エラーは、アプリケーションの動作中に、事実上いつでもどこでも発生し得るタイプのシステムエラーである。これは、アプリケーションによって行われる特定のアクションに応答してのみ発生し得る同期エラーと異なる。非同期エラーは、通常は、非常にまれであり、一般に、アプリケーションが現在の制御フローを変更し、システム動作を制限する回復状態に入らなければならない、深刻な性質を有する。非同期エラーは、通常は、割込みを介してアプリケーションに明白になる。非同期エラーの性質のゆえに、アプリケーションは、このエラーの処理についてほとんどテストされない。本テストシステムは、これらのエラーを効率的にテストできるようにするので、アプリケーションソフトウェアの信頼性を改善することができる。
【００１６】
エラー応答テストシステムは、さまざまなプログラム実行状態での非同期エラーに対するアプリケーションプログラムの応答のテストをサポートする。具体的には、エラー作成コードが、アプリケーションプログラム全体に挿入できるので、アプリケーションプログラムの各区域をテストすることができる。したがって、被験アプリケーションを、システム初期化およびスタートアップ時ならびに普通の動作中に発生する非同期エラーに対する応答についてテストすることができる。
【００１７】
エラー応答テストシステムは、アプリケーションのソースコードの修正を必要としないという点で、従来の解決策に対する独自の利点を有する。これによって、ソースコードの複数のバージョンを保持する必要がなくなり、テストされるコードが実際に使用されるコードであることが保証される。これによって、やはり、テストの効率および信頼性の利点がもたらされる。
【００１８】
図１に移ると、例示的なコンピュータシステム１００が示されている。コンピュータシステム１００には、本発明を実施するのに使用できるコンピュータシステムの全般的な特徴が示されている。もちろん、これらの特徴は、単に例示であり、本発明を、より多数のまたは異なる特徴を含めることができる異なるタイプのハードウェアを使用して実施できることを理解されたい。例示的なコンピュータシステム１００には、プロセッサ１１０、ストレージインターフェース１３０、端末インターフェース１４０、ネットワークインターフェース１５０、ストレージデバイス１９０、バス１７０、およびメモリ１８０が含まれる。本発明の好ましい実施形態によれば、メモリシステム１００に、被験アプリケーションおよびエラー応答テストプログラムが含まれる。
【００１９】
プロセッサ１１０は、システム１００の計算機能および制御機能を実行する。プロセッサ１１０には、すべてのタイプのプロセッサを含めることができ、マイクロプロセッサなどの単一の集積回路を含めることができ、あるいは、処理ユニットの機能を達成するために協力して働く適切な数の集積回路デバイスおよび／または回路ボードを含めることができる。さらに、プロセッサ１１０に、第１プロセッサが最終ハードウェアシステムによく似るように設計されたターゲットコンピュータシステムに存在し、第２プロセッサがテストのためにターゲットハードウェアシステムに結合されるテストコンピュータシステムに存在するシステムなど、別々のコンピュータシステムで実施される複数のプロセッサを含めることができる。動作中に、プロセッサ１１０は、メモリ１８０に含まれるプログラムを実行し、コンピュータシステム１００の全般的な動作を制御する。
【００２０】
メモリ１８０は、あらゆるタイプの適切なメモリとすることができる。これには、ＳＤＲＡＭなどのさまざまなタイプのダイナミックランダムアクセスメモリ（ＤＲＡＭ）、さまざまなタイプのスタティックＲＡＭ（ＳＲＡＭ）、およびさまざまなタイプの不揮発性メモリ（ＰＲＯＭ、ＥＰＲＯＭ、およびフラッシュ）が含まれる。メモリ１８０を、単一のタイプのメモリコンポーネントとすることができ、あるいは、多数の異なるタイプのメモリコンポーネントからなるものとすることができることを理解されたい。さらに、メモリ１８０およびプロセッサ１１０を、集合的にシステム１００を含む複数の異なるコンピュータにまたがって分散することができる。たとえば、メモリ１８０の一部が、ターゲットハードウェアシステムにあり、別の部分が、テストシステムにあることが可能である。
【００２１】
バス１７０は、システム１００のさまざまなコンポーネントの間で、プログラム、データ、状況、および他の情報または信号を送るように働く。バス１７０は、コンピュータシステムとコンポーネントを接続する適切な物理的手段または論理的手段とすることができる。これには、直接ハードワイヤ接続、光ファイバ、赤外線、および無線のバス技術が含まれるが、これに制限はされない。
【００２２】
端末インターフェース１４０を用いると、ユーザが、システム１００と通信できるようになり、端末インターフェース１４０は、適切な方法および装置を使用して実施することができる。ネットワークインターフェース１５０を用いると、コンピュータシステム１００が他のシステムと通信できるようになり、ネットワークインターフェース１５０は、適切な方法および装置を使用して実施することができる。ストレージインターフェース１３０は、記憶装置をコンピュータシステムにインターフェースする方法を表す。ストレージデバイス１９０は、ハードディスクドライブ、フロッピディスクドライブ、および光ディスクドライブなどの直接アクセス記憶装置を含む適切なタイプの記憶装置とすることができる。図１からわかるように、ストレージデバイス１９０に、光ディスク１９５を使用してデータを記憶するＣＤタイプデバイスを含めることができる。
【００２３】
本発明の好ましい実施形態によれば、メモリシステム１００に、被験アプリケーションおよびエラー応答テストプログラムが含まれる。動作中に、被験アプリケーションおよびエラー応答テストプログラムは、メモリ１８０に記憶され、プロセッサ１１０によって実行される。エラー応答テストプログラムは、被験アプリケーション内でエラーを作成することが望まれるアプリケーションコードのコードシーケンスを挿入することによって、被験アプリケーションにエラーを注入する。エラー応答テストシステムは、被験アプリケーションのオブジェクトに直接にエラー作成コードを挿入する。挿入されたエラー作成コードは、被験アプリケーション内の特定の挿入の点でエラーを引き起こす。したがって、エラー応答テストプログラムは、エラーに対するアプリケーションの応答を監視し、評価することができ、被験アプリケーションを、エラー応答について完全にテストすることができる。このテストが、エラー応答テストプログラムによって修正された元のコードシーケンスをテストするように設計されていないことに留意されたい。そうではなく、このテストは、この位置で発生する非同期エラーに対する、被験アプリケーションの応答をテストするように設計される。
【００２４】
この場合も、コンピュータシステムの好ましい実施形態では、通常、製品コンピュータシステムをモデル化するターゲットコンピュータシステムに被験アプリケーションが存在することに留意されたい。これによって、被験アプリケーションに関して最も効果的なテストベッドが提供される。エラー応答テストプログラムは、通常は、ターゲットコンピュータシステムに結合された別々のコンピュータシステムに配置されて、エラー応答テストプログラムが、テストを制御し、かつ／または監視できるようにする。さらに、多くの一般的なアプリケーションで、ターゲットコンピュータシステムに、より大きいシステム全体の一部として一緒に統合されるハードウェアおよびソフトウェアの組合せとして設計された組込みシステムが含まれる。
【００２５】
本発明について完全に機能するコンピュータシステムに関して説明するが、本発明の機構がさまざまな形のプログラム製品として配布可能であること、また、本発明が、配布の実行に使用される信号担持媒体の特定のタイプにかかわらずに同等に適用されることを当業者なら理解することを理解されたい。信号担持媒体の例に、フロッピディスク、ハードドライブ、メモリカード、および光ディスク（たとえば光ディスク１９５）などの記録可能媒体と、無線通信リンクを含むディジタル通信リンクおよびアナログ通信リンクなどの伝送媒体が含まれる。
【００２６】
図２に移ると、エラー応答テストプログラムが、概略的に示されており、プログラムの主要な要素が、個別に図示されている。例示的実施形態では、エラー応答テストプログラムに、アプリケーションコードリーダー、アプリケーションコードライタ、テストモニタ、および複数のエラー作成コードシーケンスが含まれる。
【００２７】
アプリケーションコードライタを用いると、エラー応答テストプログラムが、被験アプリケーションを修正できるようになる。具体的には、アプリケーションコードライタは、被験アプリケーション内のオブジェクトコードシーケンスの、アプリケーション内で特定のタイプのエラーを生成するように設計された非同期エラー作成コードシーケンスとの置換を容易にする。アプリケーションコードライタは、エラー応答テストシステムが、ソフトウェアアプリケーションがその中で実行されるメモリに書き込む能力を提供する。この機能は、ソフトウェアのリアルタイム再ロードをサポートするか診断目的での内部メモリへの特殊なアクセスを可能にするシステムで、しばしば見られる。
【００２８】
テストモニタは、修正されたアプリケーションコードの実行を強制すると同時に、結果のエラーに対するアプリケーションを監視する。この機能は、多くの異なるテストドライバアプリケーションに一般的に見られ、適切なテスト機構を使用して実施することができる。
【００２９】
アプリケーションコードリーダーを用いると、テストプログラムが、アプリケーションプログラムの要素をコピーできるようになり、テストのために修正する前に、これらの要素を保存できるようになる。これによって、エラー応答テストプログラムが、被験アプリケーションを未修正の状態に戻せるようになり、プログラムのさらなるテストが容易になる。いくつかの場合に、コードリーダーを含めることが必要でないか望ましくない場合があり、この場合に、修正されたアプリケーションオブジェクトコードを、テストが完了するまで修正された状態のままにし、その後で破棄することができる。
【００３０】
エラー作成コードは、挿入され実行されたとき、アプリケーション内で特定のエラーを生み出すように設計されたシーケンスを提供する。好ましい実施形態によれば、複数の異なるタイプのエラー作成コードが提供される。異なるタイプのコードシーケンスのそれぞれが、アプリケーションコードに挿入された時に、異なるタイプの非同期エラーを生み出す。図示の実施形態では、エラー作成コードに、ウォッチドッグタイムアウトシーケンス、未処理ソフトウェア例外シーケンス、バス例外シーケンス、未処理割込みシーケンス、および訂正不能ＥＤＡＣエラーシーケンスが含まれる。これらのシーケンスは、従来はテストが非常に困難であった、深刻な非同期エラーをエミュレートするように設計されている。もちろん、当業者は、これらが、含めることのできるシーケンスのタイプの単なる例であることと、エラー応答テストプログラムにより多くのまたはより少ないタイプのエラー作成コードシーケンスを含めることができることを理解するであろう。
【００３１】
ウォッチドッグタイムアウトシーケンスは、被験アプリケーションを強制的にタイムアウト状況にする。ウォッチドッグタイマは、一般にソフトウェアアプリケーションで実施され、アプリケーションが、決定された時間の期間中に応答できなかったタイムアウト状況を監視する。ウォッチドッグタイマが０まで進んだ時に、ウォッチドッグ割込みが発生する。ウォッチドッグ割込みに対するアプリケーションの応答を評価するために、ウォッチドッグタイムアウトシーケンスは、ソフトウェアアプリケーションに無限ループを挿入する。アプリケーションが、修正されたコードを介して実行されたとき、そのアプリケーションは、無限ループに捕まり、ウォッチドッグタイマが満了し、割込みが生成される。ウォッチドッグタイムアウトシーケンスをアプリケーションプログラムに挿入することによって、この割込みに対するアプリケーションプログラムの応答を監視し、評価することができる。
【００３２】
未処理ソフトウェア例外シーケンスは、被験アプリケーションに、強制的にソフトウェア例外を送出させる。一実施形態では、未処理ソフトウェア例外シーケンスは、０による除算演算を実行することによって、このタイプのエラーをエミュレートする。未処理ソフトウェア例外シーケンスが、アプリケーションに挿入され、実行されたとき、この例外パスでのソフトウェア例外の応答を、監視し、評価することができる。
【００３３】
バス例外シーケンスは、被験アプリケーションを、強制的にバス例外にする。一実施形態では、バス例外シーケンスは、存在しないメモリへの参照を強制することによって、バス例外エラーをエミュレートする。修正されたアプリケーションが、このシーケンスを介する実行を強制されたとき、バス例外が発生し、エラー応答テストプログラムは、テストプログラムの応答を監視することができる。
【００３４】
未処理割込みシーケンスは、被験アプリケーションに、割込みハンドラがインストールされていない割込みを強制的にサービスさせる。割込みサービスルーチンは、一般に、システムアーキテクチャおよび設計の一部と期待されるさまざまな割込みをサービスするためにインストールされる。堅牢で信頼性のあるシステムは、サービスルーチンがインストールされていない予想されない割込みにも応答できなければならない。このエラーの一実施形態が、インストールされたハンドラがないソフトウェア割込みを追加することによって達成される。未処理割込みシーケンスをアプリケーションソフトウェアに挿入することによって、未処理割込みに対するアプリケーションプログラムの応答を、監視し、評価することができる。
【００３５】
訂正不能ＥＤＡＣエラーシーケンスは、被験アプリケーションプログラムを、強制的に複数ビットエラー状態にする。クリティカルなコンピュータシステムは、しばしば、メモリ内のプログラムコードのデータ保全性を検証するために、ハードウェアのエラー検出および訂正（ＥＤＡＣ、Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｏｎ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ）回路を有する。訂正不能ＥＤＡＣエラーは、プログラムの保全性が危険にさらされたことを示す非同期エラーである。堅牢で信頼性のあるシステムは、そのようなエラーに応答しなければならない。一実施形態では、訂正不能ＥＤＡＣエラーは、動作中にＥＤＡＣチェックビットを変更することによってエミュレートされる。チェックビットが変更された時に、ＥＤＡＣ修正されたプログラムコードの次の読み取りが、訂正不能ＥＤＡＣエラーを引き起こす。訂正不能ＥＤＡＣエラーシーケンスをアプリケーションプログラムに挿入することによって、訂正不能ＥＤＡＣエラーに対するアプリケーションプログラムの応答を、監視し、評価することができる。
【００３６】
図３に移ると、表３００に、複数のタイプの非同期エラー作成コードシーケンスが示されている。表３００には、ウォッチドッグタイムアウトエラー、未処理ソフトウェア例外、バス例外、未処理割込み、および訂正不能ＥＤＡＣエラーの行が含まれる。表３００には、これらの異なるタイプのエラーのそれぞれをエミュレートする例示的な方法が示され、例示的なエラー作成コードシーケンスのソースコード表現およびオブジェクトコード表現の両方が示されている。
【００３７】
たとえば、ウォッチドッグタイムアウトエラーは、アプリケーションソフトウェアのオブジェクトコードに無限ループを注入することによって提供することができる。表３００に、そのようなエラー作成コードシーケンスのソースコード表現がＪＭＰ  ＳＨＯＲＴ  ＦＥになることが示されている。そのような無限ループは、オブジェクトコードストリングＥＢ  ＦＥを所望の位置に挿入することによって、アプリケーションコードに書き込むことができる。したがって、テスト中に、エラー応答テストプログラムは、ＥＢ  ＦＥストリングを、アプリケーションオブジェクトコードの、エラーが誘導される位置に挿入する。修正されたアプリケーションが、実行され、無限ループに捕まり、ウォッチドッグタイマ割込みがアクティブ化される。この割込みに対するアプリケーションの応答が、エラー応答テストプログラムによって監視される。プログラマは、アプリケーションが正しく応答したかどうかを判定することができる。注入されるエラーが、アプリケーションに現在の制御フローを捨てさせるので、元のアプリケーションコードシーケンスの未修正のオブジェクトコードが実行されないことに留意されたい。したがって、注入されたエラーの導入によって引き起こされるアプリケーションのその部分の機能的変更は、関係ない。
【００３８】
同様に、他の例のコードシーケンスは、他の非同期エラーをアプリケーションプログラムに導入するように設計される。当業者は、さまざまなコードシーケンスのソースコード表現およびオブジェクトコード表現が、単に例示であることと、特定の応用例に応じてこれらを異なる形で実施できることを理解するであろう。
【００３９】
図４に移ると、アプリケーションをテストする方法４００が示されている。テスト方法４００では、エラー作成コードシーケンスをアプリケーションに挿入することによって、被験アプリケーションにエラーを注入する。その後、アプリケーションが、実行され、挿入されたエラーに対する応答に関して監視される。
【００４０】
方法４００の第１ステップ４０２は、被験アプリケーションをメモリにロードすることである。被験アプリケーションのメモリへのロードによって、そのアプリケーションを実行できるようになる。これによって、被験アプリケーションのロード済みオブジェクトコードを、エラーテストのために修正できるようになる。
【００４１】
被験アプリケーションのロード中に、ロードされるアプリケーション内の、テストされる特定の位置を正確に示すことが望ましい。これによって、正確な点でアプリケーションにエラー作成コードを挿入することが容易になる。特定のメモリアドレスは、さまざまな形で学習することができる。たとえば、選択されたコードアドレスを登録するために、エラーテストシステムによって読み取ることができるメモリエリアに、被験アプリケーションを書き込むことができる。これによって、エラーテストシステムが、アプリケーションフロー内の正確な位置を突き止め、この特定の位置にエラーを挿入できるようになる。エラーテストシステムがメモリアドレスを学習できるもう１つの形は、被験アプリケーションのリンクマップからメモリアドレスをハードコードすることである。
【００４２】
次のステップ４０４は、エラー作成オブジェクトコードシーケンスを提供することである。エラー作成コードシーケンスは、使用の前にいつでも生成することができるが、これは、一般に、アプリケーションソフトウェアのロードの前にプログラマによって行われる。エラー作成コードシーケンスは、当初に、エラーテストシステム開発者がアセンブリソースコードレベルで作成することができる。その後、一時的アセンブリソースコードモジュールを作成し、アセンブルすることができる。結果のオブジェクトコードバイトを、エラーテストシステム開発者が手作業で試験し、エラーテストシステムに組み込まれるオブジェクトコードシーケンスを作るために解析することができる。エラーテストシステムは、ロード済みアプリケーションプログラムに直接にエラーオブジェクトコードシーケンスを挿入する。繰り返すが、アセンブリコード表現および最終的なオブジェクトコードシーケンスの例が、図３に示されている。
【００４３】
次のステップ４０６は、エラー作成コードオブジェクトコードシーケンスをロード済みアプリケーションに挿入することである。このステップでは、アプリケーションプログラムの指定された位置にコードシーケンスを挿入することが望ましい。この位置は、上で説明したように、アプリケーションがロードされたとき提供することができる。その後、エラー作成コードシーケンスを使用して、アプリケーションプログラムの他のコードシーケンスを置換することができる。いくつかの場合に、元のアプリケーションコードを読み取り、保存して、テストの完了時に元のコードシーケンスを復元できるようにする。
【００４４】
図５に移ると、未修正のロード済みアプリケーションコードの例示的な部分が、未修正のコードの機能表現と共に示されている。未修正のアプリケーションコードは、一般的なｉｆ−ｔｈｅｎ−ｅｌｓｅステートメントである。ステップ４０６中に、未修正のコードが、エラー作成コードセグメントによって置換される。図５に、修正された後の、ストリング４Ｆ  Ｂ３をＥＢ  ＦＥに置換された、ロード済みアプリケーションコードの例示的な部分を示す。修正されたコードの機能表現からわかるように、この挿入によって、ロード済みアプリケーションコードに、無限ループが追加される。実行されたとき、この無限ループが、ウォッチドッグタイムアウトをトリガし、ウォッチドッグタイムアウトに対するアプリケーションの応答を評価することができる。やはり、これは、テストのためにアプリケーションに追加できるエラー作成コードシーケンスのタイプの１つの例にすぎない。
【００４５】
図４に戻って、次のステップ４０８は、修正されたコードパスを通ってアプリケーションに実行させることである。これは、ソフトウェアをテストするのに使用される多数の一般的な技法など、適切なコードテスト技法を使用して達成することができる。次のステップ４１０は、修正されたコードパスに対する応答についてアプリケーションを監視することである。それを行う際に、新しいコードによって作成されたエラーに対するアプリケーションの応答を、監視し、評価することができる。
【００４６】
次のステップ４１２は、元のアプリケーションコードを復元することである。これによって、プログラムがもう一度正常に機能できるようになり、さらなるテストを進行できるようになる。このさらなるテストには、エラー作成コードの追加の挿入と、これらのエラーに対するアプリケーション応答のテストを含めることができる。
【００４７】
したがって、本発明は、深刻な非同期エラーに対するアプリケーションプログラムの応答をテストするシステムおよび方法を提供する。このエラー応答テストシステムは、被験アプリケーション内でエラーを作成することが望まれるアプリケーションコードのコードシーケンスを挿入することによって、非同期エラーに対する応答をテストする能力を提供する。エラー応答テストシステムは、被験アプリケーションのオブジェクトに直接にエラー作成コードを挿入する。挿入されたエラー作成コードは、被験アプリケーション内の特定の挿入点で非同期エラーを引き起こす。エラー作成コードは、被験アプリケーションのどの位置にも挿入することができる。したがって、被験アプリケーションを、非同期エラー応答について完全にテストすることができる。さらに、この方法および装置は、特殊なデバッガまたはインサーキットエミュレータの使用を必要とせず、その代わりに、完全にソフトウェアで実施することができる。最後に、本発明は、自己検査式の自動化された繰り返し可能な形で実施することができる。これによって、定期的に実行されるテストスイートの一部としてテストを簡単に含められるようになり、そのテストをリアルタイムで実行できることが保証される。
【００４８】
本明細書に記載の実施形態および実施例は、本発明およびその特定の応用例を最もよく説明し、これによって当業者が本発明を作り、使用するのを可能にするために提示されたものである。しかし、前述の説明および例が、図示および例示のためだけに提示されたことを、当業者なら理解するであろう。示された説明は、網羅的であること、または開示された正確な形態に本発明を制限することを意図されたものではない。請求項の趣旨から逸脱せずに、上記の教示に鑑みて、多数の修正形態および変形形態が可能である。
【図面の簡単な説明】
【００４９】
【図１】コンピュータシステムを示す概略図である。
【図２】エラー応答テストシステムを示す概略図である。
【図３】エミュレートできる非同期エラーのタイプと、例示的なエラー作成コードシーケンスを示す表である。
【図４】アプリケーションのエラー応答をテストする方法を示す流れ図である。
【図５】エラー作成コードシーケンスの挿入の前と後のアプリケーションコードシーケンスを示す概略図である。
【図１】
2005528692.tif 000003
【図２】
2005528692.tif 000004
【図３】
2005528692.tif 000005
【図４】
2005528692.tif 000006
【図５】
2005528692.tif 000007
【手続補正書】
【提出日】平成17年1月14日(2005.1.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
アプリケーションプログラムをテストする方法であって、
ａ）前記アプリケーションプログラムをメモリ（１８０）にロードする工程と、
ｂ）前記ロード済みアプリケーションプログラムに、エラー作成コードシーケンスを挿入する工程と、
ｃ）前記エラーコードシーケンスを伴う前記ロード済みアプリケーションプログラムを実行する工程と、
ｄ）前記エラー作成コードシーケンスから生じるエラーに対する前記ロード済みアプリケーションプログラムの応答を監視する工程と、
を含む方法。
【請求項２】
アプリケーションプログラムをテストする方法であって、
ａ）前記アプリケーションプログラムをメモリ（１８０）にロードする工程と、
ｂ）前記ロード済みアプリケーションプログラムに、エラー作成コードシーケンスを挿入する工程であって、前記挿入されたエラー作成コードシーケンスは、オブジェクトコードシーケンスを含み、前記エラー作成コードシーケンスを挿入する前記工程は、前記ロード済みアプリケーションプログラムのオブジェクトコードに、エラー作成コードオブジェクトコードを挿入することを含む、工程と、
ｃ）前記エラーコードシーケンスを伴う前記ロード済みアプリケーションプログラムを実行する工程と、
ｄ）前記エラー作成コードシーケンスから生じるエラーに対する前記ロード済みアプリケーションプログラムの応答を監視する工程と、
を含む方法。
【請求項３】
アプリケーションプログラムをテストする方法であって、
ａ）前記アプリケーションプログラムをメモリ（１８０）にロードする工程と、
ｂ）前記ロード済みアプリケーションプログラムに、エラー作成コードシーケンスを挿入する工程であって、前記エラー作成コードシーケンスは、無限ループシーケンス、０による除算シーケンス、存在しないメモリへの参照シーケンス、インストール済みハンドラがないソフトウェア割込みシーケンス、及び、ＥＤＡＣ（エラー検出および訂正）チェックビットを変更するシーケンスからなるグループから選択される、工程と、
ｃ）前記エラーコードシーケンスを伴う前記ロード済みアプリケーションプログラムを実行する工程と、
ｄ）前記エラー作成コードシーケンスから生じるエラーに対する前記ロード済みアプリケーションプログラムの応答を監視する工程と、
を含む方法。
【国際調査報告】
2005528692.tif 000008
2005528692.tif 000009