JP4684573B2 - 無効なコールシーケンスを識別するための方法およびプログラム - Google Patents

無効なコールシーケンスを識別するための方法およびプログラム Download PDF

Info

Publication number
JP4684573B2
JP4684573B2 JP2004119505A JP2004119505A JP4684573B2 JP 4684573 B2 JP4684573 B2 JP 4684573B2 JP 2004119505 A JP2004119505 A JP 2004119505A JP 2004119505 A JP2004119505 A JP 2004119505A JP 4684573 B2 JP4684573 B2 JP 4684573B2
Authority
JP
Japan
Prior art keywords
exception
call sequence
parameter
operations
invalid
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004119505A
Other languages
English (en)
Other versions
JP2004318887A (ja
Inventor
ロバート ランバート ジョン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004318887A publication Critical patent/JP2004318887A/ja
Application granted granted Critical
Publication of JP4684573B2 publication Critical patent/JP4684573B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、オブジェクトをテストするための方法に関する。より具体的に言えば、本発明は、ソフトウェア開発技術に関連し、結果的に投入された例外(thrown exception)になるコールシーケンス(call sequence)を識別する、オブジェクトをテストするメカニズムに係る、オブジェクトをテストするための方法に関する。
コンピュータは、仕事や遊びの方法に大きな変革をもたらした。ソフトウェアアプリケーションの実行に応答して、汎用コンピューティングシステムが実施することのできる、多種多様な機能およびアプリケーションがある。ただし、コンピューティングシステムの実用性および機能性は、実際にプロセッサによって実行されるバイナリ命令にコンパイルまたは解釈された、ソースコードの適切なコーディングに依拠している。コーディングエラーがあると、予想された機能から結果的に逸脱することが多い。
現在、ソフトウェアアプリケーションが市場に出荷される前後に、多くのソフトウェアプログラムでの予期せぬ機能逸脱(deviation)の数を減らすために、並々ならぬ努力が払われている。ただし、ソフトウェアプログラマおよび設計者の創造性により、ソフトウェアアプリケーションはますます複雑かつ強力になってきている。ソフトウェアアプリケーションの複雑さが増加するにつれて、ソフトウェアアプリケーションを生成するためのソースコードの行数も増やす必要がある。
より組織化された方法でソースコードを設計する方法の1つが、オブジェクト指向プログラミングを使用して、メモリ内にランタイムオブジェクトを生成させることである。これらのオブジェクトには、附随したメソッド(method)がある。たとえば、「File」と呼ばれる特定クラスのオブジェクトは、ファイル上でオペレーション可能な、附随したいくつかのメソッドを有することが可能である。たとえば、クラス「File」のオブジェクトに適切なオペレーションは、ファイルのオープン、読取り、書込み、クローズ、またはステータスチェックである。これらのメソッドは、それぞれ、附随したゼロまたはそれ以上の許可パラメータを有することができる。たとえば、「読取り」メソッドは、ファイルの何バイトを読み取るか、かつ/または、どこから読取りを開始するかなどを表すための、パラメータを含むことができる。特定のパラメータを備えたメソッドは、「オペレーション」と呼ばれることが多い。同様に、ゼロパラメータを有するメソッドは、たとえパラメータがなくとも、「オペレーション」と呼ばれることも多い。オブジェクトは、附随したデータを有することも多い。上記で紹介したファイルオブジェクトの例では、ファイルそれ自体(および「メタデータ」と呼ばれることの多い何らかの潜在的な関連データ)が、オブジェクトデータであってよい。
オブジェクト指向プログラミングによって、プログラミングタスクに有意な構造が与えられたが、少なくとも初期バージョンのソースコードに、人間のエラーが導入されることになるのは避けられないであろう。ソフトウェアアプリケーションの性能逸脱を減らすために、通常は、ソフトウェアアプリケーションをテストして、性能逸脱を識別する。具体的に言えば、オブジェクト指向プログラミングを使用して、個々のオブジェクトの正しいオペレーションをテストすることもできる。
たとえオブジェクトの通常の正しいオペレーション中であっても、オブジェクトは対処不能な状況に遭遇する可能性がある。オペレーションの特定のシーケンス(「コールシーケンス」とも呼ばれる)が、こうした状況を生じさせる可能性がある。たとえば、ファイルオブジェクトが構築された後、次のコールシーケンス、即ち、擬似コードopen(filename),close(filename),write(filename),...で表された順序で、コールシーケンスを呼び出すものとする。ファイルに書き込むためにはファイルをオープンする必要があるが、ファイルは前のオペレーションでクローズされたばかりであるため、このファイルオブジェクトは書き込みオペレーションを実施することができない。オブジェクトがコールシーケンスのオペレーションを実施できないようなコールシーケンスのことを、本明細書では「無効なコールシーケンス」と呼ぶ。
無効なコールシーケンスによってこうしたエラーが生じた場合、オブジェクトは「例外を投入する」。これは、オブジェクトが、エラーが発生したことをルーチン環境に通知し、今後の参照のために例外が表示および/または通知されることを意味する。典型的には検出されるエラーによって、例外も異なる。特定の例外タイプが、オブジェクトの特定の1つまたは複数のメソッドに対応する場合がある。
たとえば、ファイルオブジェクトのオープンメソッドは、ファイルが見つからなかったためにオープンできないことを記述する、「ファイルが見つからない」例外を有する場合がある。ファイルオブジェクトの読取り(または書込み)メソッドは、ファイルはオープンされたが、読取り(または書込み)オペレーションに関する何かが失敗したことを示す、「ファイル読取り」(または「ファイル書込み」)エラーを有する場合がある。ファイルオブジェクトの読取り(または書込み)メソッドは、ファイルがクローズされたために読み取る(または書き込む)ことができないことを示す、「ファイルがすでにクローズした」エラーを有する場合もある。ファイルオブジェクトのクローズメソッドは、ファイルがすでにクローズしたために再度クローズできないことを示す、「ファイルがすでにクローズした」エラーを有する場合がある。ファイルオブジェクトのステータスチェックメソッドは、ファイルがオープンしていないためにファイルのステータスにアクセスできないことを示す、「ファイルがオープンしていない」例外を有する場合がある。
正しい例外の投入により、プログラマは、なぜ正しいオペレーションが得られなかったかを判定することができる。適切な時点で例外が投入されないと、オブジェクトは、1つまたは複数の他のオペレーションに関するオペレーションを続行した後に、最初の問題をあまり表していない予期せぬ例外を投入することになる可能性がある。したがって、オブジェクトは、対応する検出エラーに応答して、正しい例外を投入することが重要である。ソフトウェアアプリケーションのテストに関する一態様は、オブジェクトが無効なコールシーケンスに応答して、正しい例外を投入することを保証することである。
これを実行する1つの従来の方法は、人間の試験者に手動で無効なコールシーケンスを生成させ、再度オブジェクトに対してコールシーケンスを実行させ、正しい例外が投入されたことを検証させ、他の無効なコールシーケンスに対してそのプロセスを反復させることである。これは、試験者が潜在的な無効なコールシーケンスを考え出す想像力および努力に依拠しているため、かなり時間がかかる可能性がある。さらに、試験者の優れた努力にもかかわらず、試験者が考え出す無効なコールシーケンスのセットが不完全である可能性もある。
したがって、より自動化された方法で無効なコールシーケンスを検出する、オブジェクトをテストするためのメカニズムが有利であろう。
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、ソフトウェア構成要素における無効なコールシーケンスの自動判定ができる、オブジェクトをテストするための方法を提供することにある。
当分野の従来の状況に伴う前述の問題は、例外を発生させる1つまたは複数のコールシーケンスを識別するためにオブジェクトを自動的にテストするためのメカニズムを対象とする、本発明の原理によって克服される。オブジェクトが実行することのできる可能なオペレーションのセットが生成される。それぞれのオブジェクトが、1つまたは複数のメソッドを含む。各メソッドは、附随したゼロまたはそれ以上のパラメータタイプを含む。メソッドがゼロパラメータを含む場合、そのメソッドは、オブジェクトによって実行可能なオペレーションのセットに直接含まれることが可能である。メソッドが1つまたは複数のパラメータタイプを含む場合、各パラメータタイプに対応する対象の(interesting)パラメータのセットが生成される。生成されたパラメータは、メソッドの適切なパラメータタイプの代理をするために使用され、それにより、オブジェクトによって実行可能なさらに他のオペレーションを生成する。
所与のパラメータタイプに対して生成されるパラメータは、例外を投入するよう促すように設計される。たとえば、メソッドが、読み取るバイト数を表す整数である、附随したパラメータタイプで「読み取る」ものであるとする。負数の情報を読み取ることは論理的に意味を成さないため、例外の投入を生じさせることから、整数のマイナス1(すなわち「−1」)を対象のパラメータとして使用することができる。
この可能なオペレーションのプールを使用して、コールシーケンスが自動的に構築される。次にコールシーケンスが、オブジェクトを使用して実行される。例外が投入されると、例外が正しいか否かを評価する際に役立つ情報を指定するレポートを発行することができる。情報には、例外のタイプならびに例外の投入を生じさせたコールシーケンスが含まれる場合がある。
任意選択として、1つまたは複数のオペレーションをコールシーケンスから除去すること、およびその後、同じ例外が投入されるか否かを判定することによって、コールシーケンスを最小にすることができる。その場合、最小化されたコールシーケンスをレポートすることもできる。結果として例外を投入することになるコールシーケンスを最小化することによって、試験者は、投入された例外の根本的原因をより直感的に評価することができる。
このプロセスは、おそらく試験者が最終レポートを見るだけで、自動的に発生する。したがって、メソッドは、人間が無効なコールシーケンスを生成するために必要なかなりの時間および努力に依拠せず、試験者の時間は、無効なコールシーケンスを生成および実行することではなく、投入された例外の適切さを評価することに、より好適に焦点を絞ることができる。
本発明の追加の特徴および利点については以下の説明で示し、一部は、説明から明らかになるか、または本発明を実施することによって習得できるであろう。本発明の特徴および利点は、添付の特許請求の範囲で具体的に指摘された手段および組合せを使って、実現および取得することができる。本発明のこれらおよび他の特徴は、以下の説明および添付の特許請求の範囲から、より完全に明らかになるか、または以下に述べる本発明の実施によって習得することができる。
本発明の上記および他の利点および特徴が取得可能な方法を説明するために、上記で簡単に述べた本発明について、添付の図面に示された特定の実施形態を参照しながら、より具体的に説明する。これらの図面は、本発明の典型的な実施形態を示しただけであって、その範囲を限定するものとみなされるものでないことを理解した上で、添付の図面を使用し、追加の特異性および詳細と共に、本発明について記述および説明する。
本発明によれば、ソフトウェア構成要素における無効なコールシーケンスの自動判定ができる。
以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。本発明は、例外を発生させる1つまたは複数のコールシーケンスを識別するために、オブジェクトをテストするための方法、システム、およびコンピュータプログラム製品に及ぶ。オブジェクトによって実行可能なオペレーションセットは、メソッドおよびメソッドの関連するパラメータタイプによって生成される。パラメータジェネレータは、例外の投入を生じさせる可能性がより高い特定のパラメータタイプに、対象のパラメータ値を供給することができる。オペレーションセット中のオペレーションをシーケンス中のステップとして使用し、いくつかのコールシーケンスが自動的に構築される。次に、オブジェクトの新しいインスタンスを使用して、各コールシーケンスが実行される。例外が投入されると、例外が適切であるかどうかを評価する際に役立つ情報を含むレポートが発行される。この情報には、例外タイプならびに例外投入を生じさせたコールシーケンスが含まれる場合がある。
本発明の実施形態は、以下でより詳細に論じるように、様々なコンピュータのハードウェアおよびソフトウェアを含む、特定用途向けまたは汎用のコンピュータを含むことができる。具体的に言えば、本発明の範囲内の実施形態は、その上に格納したコンピュータ実行可能命令またはデータ構造を運びまたは有する、コンピュータ読取り可能な記録媒体を含む。こうしたコンピュータ読取り可能な記録媒体は、汎用または特定用途向けのコンピュータがアクセス可能な、任意の使用可能な記録媒体であってよい。たとえば、こうしたコンピュータ読取り可能な記録媒体には、RAM、ROM、EEPROM(electrically erasable programmable read-only memory)、光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイスなどの、CD−ROMまたは他の物理記憶媒体、あるいは、コンピュータ実行可能命令またはデータ構造の形の所望のプログラムコード手段を実行または格納するために使用可能であり、汎用または特定用途向けのコンピュータがアクセス可能な、任意の他の媒体が含まれるが、これらに限定されるものではない。情報が、ネットワークまたは他の通信接続(ハードワイヤード、ワイヤレス、あるいは、ハードワイヤードまたはワイヤレスの組合せのいずれか)を介して、コンピュータに転送または提供される場合、コンピュータは、その接続をコンピュータ読取り可能な記録媒体として適切にみなす。したがって、任意のこうした接続は、適切にコンピュータ読取り可能な記録媒体と呼ばれる。上記の組合せは、コンピュータ読取り可能な記録媒体の範囲内にも含まれるはずである。たとえば、コンピュータ実行可能命令には、汎用コンピュータ、特定用途向けコンピュータ、またはGPU(Graphics Processing Unit)などの特定用途向け処理デバイスに、一定の機能または機能グループを実行させる、命令およびデータが含まれる。
必須ではないが、本発明は、ネットワーク環境でコンピュータによって実行される、プログラムモジュールなどの一般的なコンピュータ実行可能命令の状況で説明される。一般に、プログラムモジュールには、特定のタスクを実行するか、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などが含まれる。
図1は、コンピューティングシステム100、および本発明の原理に従ってオブジェクトの自動化されたテストを行うために協働して相互作用する、関連するモジュールおよびデータ構造を示す概略図である。コンピューティングシステムは、ソフトウェアオブジェクトに対してオペレーションを実行できる、任意のコンピューティングシステムであってよい。こうしたコンピューティングシステムの一例については、図4に関して以下で例示および説明する。ただし、当業者であれば、この説明を再検討した後に、任意のコンピューティングシステムが、好ましいソフトウェアおよび/またはハードウェアを使用して本発明の機能を実施できることを理解されよう。
コンピューティングシステム100は、無効なコールシーケンスを自動的に識別するために、オブジェクト105をテストしている。前述のように、オブジェクト上で実行された無効なコールシーケンスは、オブジェクトに例外を投入させる。次に試験者は、無効なコールシーケンスを生成すること、およびそれらの無効なコールシーケンスをオブジェクト上で実行することについて苦慮しなければならないのではなく、適切な例外が投入されたか否かに自分の注意を集中させることができる。
オブジェクト105は、このオブジェクトがテストされるアイテムであることを表すために、輪郭がより太い線で示されている。コンピューティングシステム100内の他の四角い要素(たとえば、オペレーション生成モジュール101、パラメータ生成モジュール102、コールシーケンス生成モジュール103、実行モジュール104、および最小化モジュール106)は、オブジェクト105のテストを容易にする、実行可能モジュールを表す。スクロール状の要素(たとえば、メソッド111、オペレーションセット114、およびコールシーケンス115)は、オブジェクト105のテストを容易にするデータを表す。オブジェクト指向プログラミングの分野で、従来から知られているように、オブジェクト105は、1つまたは複数のメソッド、およびオプションでデータも含む。たとえば、オブジェクト105は、メソッド111およびデータ116を含む。
これら様々な構成要素の協働相互作用について、本発明の原理に従って無効なコールシーケンスを識別するためにオブジェクトをテストするための方法200を示す流れ図である、図2を参照しながらさらに説明する。したがって、図2を頻繁に参照しながら、図1について説明する。
方法200には、オブジェクトに関する1つまたは複数の予測される例外セットを識別する、オプションの動作(act)(動作201)が含まれる。動作201は、動作のオプションの性質を強調するために、破線の四角を使用して示されている。たとえば、オブジェクト105がファイルである上記の例の場合、予測される例外には「ファイルが見つからない」、「ファイル読取り」、「ファイル書込み」、「ファイルがすでにクローズした」、および「ファイルがオープンしていない」という例外が含まれる。これらの例外は、単に、オブジェクトに関連付けられた例外に関するソースを信用することによって識別することができる。たとえば、マニュアル、白書、または他の文書が、例外を識別することができる。例外は、テストを行ってオブジェクトに関するソースコードを検査することにより、手動で識別することもできる。オブジェクトに関する例外は、オブジェクトに関するソースコード、中間形式コード、および2進命令のいずれかを検査するソフトウェアを使用して、自動的に識別することもできる。例外を識別するために2進命令の構造を検査するための方法は、「Non-Invasive Rule-Based Binary Analysis of Software Assemblies」と題する米国特許出願第10/413254号に記載されている。
方法200は、例外を引き起こす無効なコールシーケンスを自動的に識別するための、機能的な結果指向のステップ(ステップ202)も含む。このステップは、この結果を実施するための任意の対応する動作を含むこともできる。ただし、図2の例示された実施形態では、ステップには対応する動作203、204、205、および206が含まれる。
具体的に言えば、オブジェクトによって実行できる、可能なオペレーションのセットまたはプールが生成される(動作203)。図1を参照すると、これは、オペレーション生成モジュール101によって実施可能である。オペレーション生成モジュール101によって生成されるオペレーションは、テスト用オブジェクトによって提供されるメソッドに大きく依存する。したがって、オペレーション生成モジュール101は、オブジェクト105のメソッド111を入力として受け取る。オブジェクトによって、1つまたは複数のメソッドを提供することができる。ただし、図1に示された特定の例では、メソッド111は、メソッド111A、111B、111C、縦の省略符号111Dによって表された数ある中で潜在的にある他のメソッドを含む。
どんなパラメータも必要としない任意のメソッドの場合、メソッドは可能なオペレーションのセット114中に直接含まれる場合がある。ただし、ほとんどのメソッドは、1つまたは複数のパラメータを必要とし、各パラメータは特定のパラメータタイプを有する。たとえば、パラメータタイプには、プログラミングおよびテストの分野の技術者であれば周知であるような、整数、浮動小数点数、配列、文字列、ブール値などが含まれる。任意の所与のパラメータタイプの場合、パラメータ生成モジュールは、ランダムに選択されたそのタイプのパラメータよりも例外を発生させる見込みの高い、対象のパラメータを生成する。
たとえば、整数パラメータタイプの場合、値−1、+1、0、および+20,000,000,000が、例外を発生させる見込が高い。たとえば、ファイルオブジェクトの読取りメソッドは、読み取るバイト数を表すための整数パラメータタイプを有することができる。負数の1バイトの情報を読み取ることは、論理的に意味を成さないため、整数値「−1」は例外を発生させるはずである。ゼロバイトの情報を読み取ることは、無用な動作となるため、整数値「0」は最も例外を発生させる見込が高い。「+20,000,000,000」は、この値がファイルサイズよりも大きいと想定すると、例外を発生させるはずである。整数値「+1」(または、さらに詳しく言えば任意の他の正の整数値)は、ファイルが読取りオペレーション時にクローズされている場合、例外を発生させる可能性がある。
図3は、パラメータ値を生成するための方法300を示す図である。パラメータタイプが、方法300への入力として提供される(動作301)。その後、最初の対象のパラメータが生成される。たとえば、整数パラメータタイプの場合、「−1」、「+1」、「0」、および「+20,000,000,000」が対象の整数値タイプである。最初に生成された値は、次に、結果的に同じパラメータタイプを有するパラメータのリストを生じさせるためのオペレーションによってパラメータを変更することのできる、モディファイア(変更子;modifier)に提供される(動作303)。たとえば、整数パラメータタイプに好適なオペレーションは、加法「+」、減法「−」、除法「/」、および乗法を含むことができる。たとえば、加法演算は結果として、−2(−1+−1から)、0(−1++1から)、−1(−1+0から)、19,999,999,999(−1+20,000,000,000から)、+2(+1++1から)、+1(+1+0から)、20,000,000,001(1+20,000,000,000から)、0(0+0から)、+20,000,000,000(0+20,000,000,000から)、および40,000,000,000(20,000,000,000+20,000,000,000から)の値を生じさせることができる。次に、重複が除去される(動作304)。動作302、303、および304は、1回のみ実行可能であるか、または矢印306によって表されるように、「対象の」パラメータ値を形成する(動作305)ために反復可能である。
最初にパラメータ値を生成する動作302およびパラメータ値を変更する動作303は、どのようなパラメータタイプであるかに大きく依存する。対象のパラメータ値は、何が例外を生成する可能性があるかに関する経験を有するものによって判定することができる。たとえば、文字列タイプの場合、1つのパラメータが任意の文字列(たとえば「foo」)であり、他の文字列がかなり長い文字列、さらに他の制御文字という場合がある。特定の次元を有する配列タイプの場合、指定された次元よりも小さい配列を再帰的に生成し、特定の次元と同じサイズの配列を生成し、さらに、指定された次元よりも大きい配列を生成することができる。ブール値の場合はさらにわかりやすく、対象のブール値は単に「真」または「偽」であってよい。浮動小数点値の場合、1E1000は、オブジェクトオペレーションがそれに対して実行されると、算術(またはオーバフロー/アンダフロー)例外を生成するはずである。1E−1000は同じことを実行しないはずである。1E−1000は、その浮動小数点がオブジェクト内で分母として扱われた場合に、同じことを実行する可能性がある。
値は、結果的に同じパラメータタイプの値を生じさせるオペレーションを実行することによって、変更可能である。たとえば、文字列の場合、オペレーションはすべての大文字を小文字にし、および他のオペレーションは反対のことを実行することができる。さらに文字列は、文字列「abc」を受け取ったオペレーションが文字列「a」、「ab」、および「abc」を提供する、「すべての部分列(subsequences)を獲得」オペレーションを有することもできる。配列の場合、加法、減法、クロス乗積、ドット積がオペレーションであってよく、浮動小数点値の場合、加法、減法、除法、および乗法がオペレーションであってよい。
例外をより生成しやすいパラメータの生成プロセスは、かなり主観的である。こうしたパラメータを生成するためのどんな方法も、本発明の原理の範囲に入り、たとえ力ずくのランダム生成でも十分である。ただし、結果的に例外を投入することになりやすいパラメータを選択すると、生成される無効なコールシーケンスの割合を上げることによって、効率が上がる。
再度図1を参照すると、パラメータ生成は、オペレーション生成モジュール101がパラメータタイプ112をパラメータ生成モジュール102に供給すること、およびパラメータ生成モジュール102が、パラメータタイプ112に対応する特定の対象のパラメータ113をオペレーション生成モジュール101に戻すことによって、表されている。次にオペレーション生成モジュール101は、特定のパラメータタイプがメソッド内にある場所に、その特定のパラメータタイプの特定の値を置く。これは、オペレーションを生成するために、メソッド内の各パラメータについて実行される。次にそのオペレーションは、オブジェクト105が実行できる可能なオペレーションのプール114に含められる。
図1を参照すると、オペレーションセット114は、一例として、メソッド111A内にあるパラメータ113Aを含むオペレーション114Aと、メソッド111B内にあるパラメータ113Bを含むオペレーション114Bと、メソッド111C内にあるパラメータ113Cを含むオペレーション114Cと、メソッド111A内にあるパラメータ113Dを含むオペレーション114Dと、メソッド111B内にあるパラメータ113Eを含むオペレーション114Eと、メソッド111C内にあるパラメータ113Fを含むオペレーション114Fと、潜在的に縦の省略符号114Gによって表された多くのその他とを含む。オペレーションセットには、3つの異なるメソッド111A、111B、および111Cに関連付けられたオペレーションが含まれる。ただし、本発明の原理は、単一のメソッドを有するオブジェクトにも好適である。その場合の相違点は、オペレーションセットが、潜在的に異なるパラメータを備えた単一メソッドのオペレーションを含むことである。
オペレーションセット114が、コールシーケンス生成モジュール103に提供され、これによって方法200は、オペレーションのセットからオペレーションのコールシーケンスを自動的に構築する動作(動作204)に進むことができる。所与の長さのコールシーケンスを生成するためのストラテジには、完全ストラテジ、ランダムストラテジ、およびペア(pairwise)ストラテジの、少なくとも3つの異なるストラテジがある。
完全ストラテジは、その所与の長さを有するオペレーションシーケンスのあらゆる可能な順列に対応し、オペレーションセットに属するオペレーションから導出可能なコールシーケンスがある、十分なコールシーケンスを生成することに関係する。この完全ストラテジは、短いコールシーケンスおよび小さなオペレーションセットを引き出すのに効果的である。ただし、長いコールシーケンスおよび/または大きなオペレーションセットの場合、完全ストラテジは指数関数的に処理が集中してしまう。
ランダムストラテジは、オペレーションセットからランダムにオペレーションを選択することによって、限られた数のコールシーケンスを構築することに関係する。これにより、あらゆる可能なコールシーケンスをテストすることについて苦慮する必要なしに、コールシーケンスをテストすることができる。ただし、この利点は、このストラテジの欠点でもある。具体的に言えば、すべてのコールシーケンスがテストされるわけではないため、いくつかの例外が見逃される可能性がある。
他のストラテジは、コールシーケンスのペアテストに関係する。具体的に言えば、所与の隣接するオペレーションペアを有するコールシーケンスがいったん生成されると、その同じ隣接するオペレーションペアを有するコールシーケンスは生成されない。同じ技法を、3つ、4つなどの、隣接するペアに適用することができる。この理論の背後にある一般的な考え方は、概して、同じ隣接するペアオペレーションを有するコールシーケンスは、他のコールシーケンスよりも同じ例外を生成する可能性が高いため、テストしてもあまり有益ではないという考え方である。こうしたペアテストを実行するための方法については、「Automatic Identification of Input Values that Expose Output Failures in a Software Object」と題する米国特許出願第10/385255号に記載されている。
図1を参照すると、生成されたコールシーケンスは、たとえば、コールシーケンス115A、115B、115C、115D、115E、および115Fを含む、コールシーケンス115で表される。コールシーケンス115Fは、3オペレーション長さであるコールシーケンスの特定の例を示すために展開されている。コールシーケンス115F内のオペレーションには、オペレーション114E、114B、および114Fが含まれる。
生成された各コールシーケンスに対して、次に方法200は、オブジェクトを使用してオペレーションのコールシーケンスを実行する(動作205)。これは、実行モジュール104が、コールシーケンスを受け取り、コールシーケンスをオブジェクト105で実行し、その後いずれかの例外を検出することによって実施可能である。コールシーケンスによっては、例外を発生させない場合もある。ただし、無効なコールシーケンスの場合、方法200は、コールシーケンスを実行した結果として例外が投入されたことを自動的に識別する動作(動作206)を含む。たとえば実行モジュール104は、オブジェクト105から例外を受け取る。この受取りは、直接、または実行時環境の他の構成要素を解して間接的に、実行可能である。
オプションとして、コールシーケンスは、同じ例外を生じる結果となる長さの短いコールシーケンスを識別するために、最小化モジュール106を使用して最小化される。これは、コールシーケンス内の順次依存性を維持しながら、コールシーケンス内であらゆるオペレーションサブセットをテストすることによって実施可能である。これによって、コールシーケンス長さが長い場合、処理集中タスクを証明することができる。他のオプションは、サイズが減じられたコールシーケンスのうちのいずれかがまた、例外を生成したかどうかを判定するために、例外を生成した元のコールシーケンスから1つのオペレーションを除去することである。生成していない場合、例外を生成した元のコールシーケンスは、すでに最小化されているとみなされる。そうでない場合、減じられるときにどのオペレーションが除去されるかに関係なく例外を発生させないコールシーケンスがわかるまで、また例外を生成した1つまたは複数のサイズが減じられたコールシーケンスは、サイズが減じられたコールシーケンスのツリーを下がっていくというように、同様に1つずつ減じられていく。
次に、方法200には、例外の発生および例外を発生させたコールシーケンスを報告する動作(動作207)が含まれる。コールシーケンスが最小化される場合、報告されるのは最小化されたコールシーケンスであるか、または、例外を生成した元のコールシーケンスならびに最小化されたコール例外の両方が報告される。予測された例外が動作201で識別された場合、例外が識別された例外のうちの1つであったかどうかも報告される。
オペレーションセット中のオペレーション数を減らすために、所与のメソッドに関して予測されるすべての例外が、1つまたは複数のコールシーケンスを使用して検出されると、そのメソッドに基づくオペレーションは、潜在的に任意の他のコールシーケンスから除外される。たとえ例外が検出された後であっても、まだメソッドの報告準備が整っていない(おそらく、メソッドが報告前にコールシーケンスを最小化するものである場合など)場合、プロセスは、他のコールシーケンスがまだ構築されていなければこれを構築し、そのコールシーケンスを実行する動作に戻る。さらに、例外およびコールシーケンスを報告した後であっても、プロセスを繰り返すことができる。オプションで、そのメソッドに関連付けられた例外がすべて検出されたために、特定の関連するメソッドを有するオペレーションが除去される場合のように、オブジェクトによって実行可能なオペレーションのセットを再構築することによって、プロセスを繰り返すことができる。
以上、オブジェクトが不適切な例外を生成したことを試験者が識別するのを助けるために、無効なコールシーケンスが自動的に識別される方法を実施するための、方法、システム、およびコンピュータプログラム製品について説明してきた。当業者であれば、本発明が、パーソナルコンピュータ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含む、多くのタイプのコンピュータシステム構成を備えたネットワークコンピューティング環境で実施可能であることも理解されよう。本発明は、(ハードワイヤードリンク、ワイヤレスリンク、あるいはハードワイヤードまたはワイヤレスリンクの組合せのいずれかによって)通信ネットワークを介してリンクされたローカルおよびリモートの処理デバイスによってタスクが実行される、分散コンピューティング環境でも実施可能である。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモートのどちらのメモリ記憶デバイスにも配置することができる。
図4および以下の解説は、本発明のある種の要素を実施するのに好適なコンピューティング環境について、簡単かつ概括的に説明することを意図するものである。ただし、本発明は、必ずしも任意の特定のコンピュータ化されたシステムに限定されるものではなく、多様なコンピュータ化されたシステムで実施可能であることを強調したい。
一実施形態によれば、本発明には、コンピューティングデバイスによって実行可能なプログラムモジュールなどのコンピュータ実行可能命令を格納する、1つまたは複数のコンピュータ読取り可能な記録媒体が含まれる。通常、プログラムモジュールには、特定のタスクを実行するかまたは特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などが含まれる。コンピュータ実行可能命令、関連するデータ構造、およびプログラムモジュールは、本明細書に開示された方法のステップを実行するためのプログラムコード手段の例を表す。こうした実行可能命令または関連するデータ構造の特定のシーケンスは、こうしたステップに記載された機能を実施するための、対応する動作の例を表す。
当業者であれば、本発明が、個々のコンピューティングデバイスに加えて、パーソナルコンピュータ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、その構成要素などを含む、多くのタイプのコンピュータシステム構成を備えた、ネットワークコンピューティング環境で実施可能であることを理解されよう。本発明は、(ハードワイヤードリンク、ワイヤレスリンク、あるいはハードワイヤードまたはワイヤレスリンクの組合せのいずれかによって)通信ネットワークを介してリンクされたローカルおよびリモートの処理デバイスによってタスクが実行される、分散コンピューティング環境でも実施可能である。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモートのどちらのメモリ記憶デバイスにも配置することができる。
具体的に図4を参照すると、本発明のある種の要素を実施するためのシステム例には、プロセッサ421、コンピュータ読取り可能な記録媒体を含むシステムメモリ422、および、システムメモリ422を含む様々なシステム構成要素をプロセッサ421に結合するシステムバス423を含む、従来のコンピュータ420の形の汎用コンピューティングシステムが含まれる。システムバス423は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用するローカルバスを含む、いくつかのタイプのバス構造のうちのいずれかであってよい。システムメモリは、読取り専用メモリ(ROM)424およびランダムアクセスメモリ(RAM)425を含む。起動時などの、コンピュータ420内の要素間での情報転送を助ける基本ルーチンを含む、BIOS(Basic Input/Output System)426は、ROM 424に格納することができる。
コンピュータ420は、磁気ハードディスク439からの読取りおよびこれへの書込みのための磁気ハードディスクドライブ427、リムーバブル磁気ディスク429からの読取りおよびこれへの書込みのための磁気ディスクドライブ428、および、CD(compact disk)−ROMまたは他の光媒体などのリムーバブル光ディスク431からの読取りまたはこれへの書込みのための光ディスクドライブ430も含むことができる。磁気ハードディスクドライブ427、磁気ディスクドライブ428、および光ディスクドライブ430は、それぞれハードディスクドライブインタフェース432、磁気ディスクドライブインタフェース433、および光ドライブインタフェース434によって、システムバス423に接続される。ドライブおよびそれらに関連付けられたコンピュータ読取り可能な記録媒体は、コンピュータ実行可能命令、データ構造、プログラムモジュール、および他のデータの不揮発性ストレージを、コンピュータ420に提供する。これらの記憶媒体は、前述のように、補正係数をガンマ値に関連付けるデータ構造を格納するためにも使用可能である。本明細書に記載された例示的環境は、磁気ハードディスク439、リムーバブル磁気ディスク429、およびリムーバブル光ディスク431を使用しているが、データを格納するために、磁気カセット、フラッシュメモリカード、DVD(digital versatile disk)、ベルヌイカートリッジ、RAM、ROMなどを含む、他のタイプのコンピュータ読取り可能な記録媒体を使用することができる。
1つまたは複数のプログラムモジュールを含むプログラムコード手段を、ハードディスク439、磁気ディスク429、光ディスク431、ROM 424、あるいは、オペレーティングシステム435、1つまたは複数のアプリケーションプログラム436、他のプログラムモジュール437、およびプログラムデータ438を含む、RAM 425上に格納することができる。オペレーション生成モジュール101、パラメータ生成モジュール102、コールシーケンス生成モジュール103、実行モジュール104、および最小化モジュール106は、他のプログラムモジュール437の例を表す。さらに、メソッド111、オペレーションセット114、およびコールシーケンス115は、プログラムデータ438の例を表す。
ユーザは、キーボード440、ポインティングデバイス442、または、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ、スキャナなどの他の入力デバイス(図示せず)を介して、コンピュータ420にコマンドおよび情報を入力することができる。これらおよび他の入力デバイスは、システムバス423に結合されたシリアルポートインタフェース446を介して、プロセッサ421に接続されることが多い。あるいは、入力デバイスは、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインタフェースによって接続することができる。モニタ447または他のディスプレイデバイスも、ビデオアダプタ448などのインタフェースを介してシステムバス423に接続される。この状況では、ビデオアダプタ448は、前述のようにGPUを含むものとみなされる。パーソナルコンピュータは、典型的には、モニタに加え、スピーカおよびプリンタなどの他の周辺出力デバイス(図示せず)を含む。
コンピュータ420は、リモートコンピュータ449aおよび449bなどの1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作可能である。リモートコンピュータ449aおよび449bは、それぞれ、他のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の共通ネットワークノードであってよく、図4には、メモリ記憶デバイス450aおよび450bならびにそれらの関連するアプリケーションプログラム436aおよび436bのみが示されているが、通常は、コンピュータ420に関して上記で述べた多くのまたはすべての要素を含む。図4に示された論理接続には、例として示されたローカルエリアネットワーク(LAN)451およびワイドエリアネットワーク(WAN)452が含まれるが、これらに限定されるものではない。こうしたネットワーキング環境は、オフィス規模または企業規模のネットワーク、イントラネット、およびインターネットで普及している。
LANネットワーキング環境で使用される場合、コンピュータ420は、ネットワークインタフェースまたはアダプタ453を介してローカルネットワーク451に接続される。WANネットワーキング環境で使用される場合、コンピュータ420にはモデム454、ワイヤレスリンク、または、インターネットなどのワイドエリアネットワーク452を介して通信を確立するための他の手段が含まれる。モデム454は内蔵または外付けであってよく、シリアルポートインタフェース446を介してシステムバス423に接続される。ネットワーク化された環境では、コンピュータ420関して示されたプログラムモジュールはまたはその一部は、リモートメモリ記憶デバイスに格納することができる。図示されたネットワーク接続は例示的なものであって、ワイドエリアネットワーク452を介して通信を確立するその他の手段が使用可能であることを理解されよう。
本発明は、その趣旨または不可欠な特徴を逸脱することのない他の特定の形で実施することができる。記載された実施形態は、すべての点で例示的なものに過ぎず、限定的なものではないとみなされる。したがって本発明の範囲は、前述の説明ではなく添付の特許請求の範囲によって示される。特許請求の範囲の意味または同等の範囲内でのすべての変更は、その範囲に包含されるものである。
本発明を適用できる実施形態のオブジェクトのテストを実行する、コンピューティングシステムならびに関連するモジュールおよびデータ構造を示す概略図である。 本発明を適用できる実施形態のオブジェクトをテストするための方法を示す流れ図である。 本発明を適用できる実施形態のパラメータを自動的に生成するための方法を示す図である。 本発明を適用できる実施形態の好適なコンピューティングシステムを示す、より詳細な概略図である。
符号の説明
100 コンピューティングシステム
101 オペレーション生成モジュール
102 パラメータ生成モジュール
103 コールシーケンス生成モジュール
104 実行モジュール
105 オブジェクト
106 最小化モジュール
111 メソッド
112 パラメータタイプ
113 パラメータ
114 オペレーションセット
115 コールシーケンス
115F コールシーケンス
116 データ

Claims (10)

  1. オブジェクトを実行することのできるコンピューティングシステムにおいて、前記オブジェクトに対する適切な例外の投入のために、例外を発生させる無効なコールシーケンスを識別する方法であって、前記オブジェクトは、各メソッドがゼロまたはそれ以上のパラメータに関連付けられた、1つまたは複数のメソッドを有し、該方法は、前記コンピューティングシステムのメモリ上に格納されたプログラムモジュールが、該コンピューティングシステムのプロセッサに実行させるものであり、
    前記オブジェクトの各メソッドについて、該メソッドに関連付けられた前記パラメータのパラメータタイプに基づいて前記オブジェクトに対して投入されるべき例外を発生させる見込が高い1つまたは複数のパラメータ値を生成し、各オペレーションが前記1つまたは複数のメソッドのいずれか1つのメソッドと、該メソッドについて生成された前記1つまたは複数のパラメータ値のいずれか1つのパラメータ値とを含む、前記オブジェクトによって実行可能なオペレーションのセットを生成するステップであって、前記1つまたは複数のパラメータ値はそれぞれ、各メソッドに関連付けられた前記パラメータのうち同一のパラメータタイプのパラメータで構成されるステップと、
    前記オペレーションのセットに含まれるオペレーションのうちの1つまたは複数のオペレーションを含むコールシーケンスを構築するステップと、
    前記オブジェクトを使用して前記コールシーケンスを実行するステップと、
    前記オブジェクトを使用して前記コールシーケンスを実行した結果、前記オブジェクトにおいて例外が投入されたかどうかを判断するステップと、
    前記コールシーケンスを実行した結果、前記オブジェクトにおいて前記例外が投入されたとき、前記コールシーケンスを、前記例外を発生させた無効なコールシーケンスとして識別するステップと、
    前記例外を発生させた前記無効なコールシーケンスおよび該無効なコールシーケンスによって前記例外が発生したことを報告するステップと
    を備えることを特徴とする方法。
  2. 前記コールシーケンスを、前記例外を発生させた無効なコールシーケンスとして識別するステップは、
    前記例外を発生させた前記コールシーケンスから、少なくとも1つのオペレーションを除去して、前記コールシーケンスよりも少ないオペレーションを含む新たなコールシーケンスを構築するステップ、
    前記オブジェクトを使用して前記新たなコールシーケンスを実行するステップ、および
    前記新たなコールシーケンスが前記例外と同じ例外を発生させたかどうかを識別するステップ
    を、新たなコールシーケンスが前記例外と同じ例外を発生させないと識別されるまで反復するステップと、
    新たなコールシーケンスが前記例外と同じ例外を発生させないと識別されたとき、該新たなコールシーケンスの前に構築されたコールシーケンスを、前記例外を発生させた無効なコールシーケンスとして識別するステップと
    を含むことを特徴とする請求項1に記載の方法。
  3. 前記オペレーションのセットから、各コールシーケンスが、前記オペレーションのセットに含まれるオペレーションのうちの1つまたは複数のオペレーションを含む、複数のコールシーケンスを構築するステップと、
    構築された前記複数のコールシーケンスのそれぞれについて、前記実行するステップ、前記判断するステップ、前記識別するステップ、および前記報告するステップを反復するステップと
    をさらに備えることを特徴とする請求項1に記載の方法。
  4. 前記オブジェクトの各メソッドについて、該メソッドに関連付けられた前記パラメータのパラメータタイプに基づいて、前記オブジェクトに対して投入されるべき例外を発生させる見込が高い1つまたは複数のパラメータ値を生成することは、
    前記オブジェクトの各メソッドについて、該メソッドに関連付けられた前記パラメータのパラメータタイプに基づいて、パラメータのセットを生成することと、
    前記生成されたパラメータのセットに対して前記パラメータタイプに応じて所定の演算を実行して、前記オブジェクトに対して投入されるべき例外を発生させる見込が高い前記1つまたは複数のパラメータ値を生成することと
    を含むことを特徴とする請求項1に記載の方法。
  5. 各パラメータタイプは、整数タイプ、浮動小数点数、配列、文字列、およびブール値のいずれかであることを特徴とする請求項に記載の方法。
  6. パラメータタイプが整数タイプのとき、前記パラメータのセットは、「−1」、「+1」、「0」、および「+20,000,000,000」であり、前記所定の演算は、加法、減法、除法、および乗法の少なくとも1つであることを特徴とする請求項に記載の方法。
  7. パラメータタイプが浮動小数点数タイプのとき、前記パラメータのセットは、「1E1000」および「1E−1000」を含み、前記所定の演算は、加法、減法、除法、および乗法を含むことを特徴とする請求項に記載の方法。
  8. オブジェクトを実行することのできるコンピューティングシステムに、前記オブジェクトに対する適切な例外の投入のために、例外を発生させる無効なコールシーケンスを識別するための処理を実行させるプログラムであって、前記オブジェクトは、各メソッドがゼロまたはそれ以上のパラメータに関連付けられた、1つまたは複数のメソッドを有し、前記処理は、
    前記オブジェクトの各メソッドについて、該メソッドに関連付けられた前記パラメータのパラメータタイプに基づいて、前記オブジェクトに対して投入されるべき例外を発生させる見込が高い1つまたは複数のパラメータ値を生成し、各オペレーションが前記1つまたは複数のメソッドのいずれか1つのメソッドと、該メソッドについて生成された前記1つまたは複数のパラメータ値のいずれか1つのパラメータ値とを含む、前記オブジェクトによって実行可能なオペレーションのセットを生成するステップであって、前記1つまたは複数のパラメータ値はそれぞれ、各メソッドに関連付けられた前記パラメータのうち同一のパラメータタイプのパラメータで構成されるステップと、
    前記オペレーションのセットに含まれるオペレーションのうちの1つまたは複数のオペレーションを含むコールシーケンスを構築するステップと、
    前記オブジェクトを使用して前記コールシーケンスを実行するステップと、
    前記オブジェクトを使用して前記コールシーケンスを実行した結果、前記オブジェクトに対して例外が投入されたかどうかを判断するステップと、
    前記コールシーケンスを実行した結果、前記オブジェクトに対して例外が投入されたとき、前記コールシーケンスを、前記例外を発生させた無効なコールシーケンスとして識別するステップと、
    前記例外を発生させた前記無効なコールシーケンスおよび該無効なコールシーケンスによって前記例外が発生したことを報告するステップと
    を含むことを特徴とするプログラム。
  9. 前記コールシーケンスを、前記例外を発生させた無効なコールシーケンスとして識別するステップは、
    前記例外を発生させた前記コールシーケンスから、少なくとも1つのオペレーションを除去して、前記コールシーケンスよりも少ないオペレーションを含む新たなコールシーケンスを構築するステップ、
    前記オブジェクトを使用して前記新たなコールシーケンスを実行するステップ、および
    前記新たなコールシーケンスが前記例外と同じ例外を発生させるかどうかを識別するステップ
    を、新たなコールシーケンスが前記例外と同じ例外を発生させないと識別されるまで反復するステップと、
    新たなコールシーケンスが前記例外と同じ例外を発生させないと識別されたとき、該新たなコールシーケンスの前に構築されたコールシーケンスを、前記例外を発生させた無効なコールシーケンスとして識別するステップと
    を含むことを特徴とする請求項に記載のプログラム。
  10. 前記処理は、
    前記オペレーションのセットから、各コールシーケンスが、前記オペレーションのセットに含まれるオペレーションのうちの1つまたは複数のオペレーションを含む、複数のコールシーケンスを構築するステップと、
    構築された前記複数のコールシーケンスのそれぞれについて、前記実行するステップ、前記判断するステップ、前記識別するステップ、および前記報告するステップを反復するステップ
    をさらに備えることを特徴とする請求項に記載のプログラム。
JP2004119505A 2003-04-14 2004-04-14 無効なコールシーケンスを識別するための方法およびプログラム Expired - Fee Related JP4684573B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/413,276 US7216337B2 (en) 2003-04-14 2003-04-14 Automatic determination of invalid call sequences in software components

Publications (2)

Publication Number Publication Date
JP2004318887A JP2004318887A (ja) 2004-11-11
JP4684573B2 true JP4684573B2 (ja) 2011-05-18

Family

ID=32908296

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004119505A Expired - Fee Related JP4684573B2 (ja) 2003-04-14 2004-04-14 無効なコールシーケンスを識別するための方法およびプログラム

Country Status (5)

Country Link
US (1) US7216337B2 (ja)
EP (1) EP1469392A3 (ja)
JP (1) JP4684573B2 (ja)
KR (1) KR101066706B1 (ja)
CN (1) CN100454271C (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7334154B2 (en) * 2004-06-18 2008-02-19 Microsoft Corporation Efficient changing of replica sets in distributed fault-tolerant computing system
CN100373326C (zh) * 2005-09-13 2008-03-05 华为技术有限公司 一种自动化测试系统及其方法
CN100407668C (zh) * 2005-12-09 2008-07-30 华为技术有限公司 测试命令字测试序列调度方法
CN100405324C (zh) * 2006-05-12 2008-07-23 中国科学院计算技术研究所 在微处理器用户态随机验证中实现核心态程序验证的方法
CN100454272C (zh) * 2006-05-30 2009-01-21 上海科泰世纪科技有限公司 软件构件处理错误信息的方法
US9021417B2 (en) * 2007-07-06 2015-04-28 International Business Machines Corporation Generating a subset model from a model
US8250524B2 (en) * 2007-12-21 2012-08-21 Microsoft Corporation Contract programming for code error reduction
US8782607B2 (en) 2009-02-20 2014-07-15 Microsoft Corporation Contract failure behavior with escalation policy
US8397217B2 (en) * 2010-02-22 2013-03-12 International Business Machines Corporation Integrating templates into tests
US8589892B2 (en) * 2010-11-21 2013-11-19 International Business Machines Corporation Verification of speculative execution
US8914776B2 (en) * 2012-05-17 2014-12-16 Microsoft Corporation Assisting development tools through inserted code statements
US10055209B2 (en) * 2015-01-12 2018-08-21 Red Hat, Inc. Resource closing
CN106294164B (zh) * 2016-08-15 2019-02-19 中国银行股份有限公司 一种代码检查方法及装置
CN106874764B (zh) * 2017-01-16 2019-10-29 南开大学 一种基于回调函数建模自动生成Android应用回调序列的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08504526A (ja) * 1992-12-17 1996-05-14 シーメンス アクチエンゲゼルシヤフト コンピュータにてオブジェクト指向プログラムの少なくとも1つのクラスのテストをする方法
JP2002278795A (ja) * 2001-03-21 2002-09-27 Hitachi Software Eng Co Ltd オブジェクト指向開発用テスト支援方法および装置

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05342054A (ja) * 1992-06-05 1993-12-24 Hitachi Ltd 言語処理プロセッサのテスト方式
US5565316A (en) * 1992-10-09 1996-10-15 Educational Testing Service System and method for computer based testing
US5390325A (en) * 1992-12-23 1995-02-14 Taligent, Inc. Automated testing system
US5371883A (en) * 1993-03-26 1994-12-06 International Business Machines Corporation Method of testing programs in a distributed environment
US5737609A (en) 1994-10-18 1998-04-07 Marcam Corporation Method and apparatus for testing object-oriented programming constructs
US5740440A (en) 1995-01-06 1998-04-14 Objective Software Technology Dynamic object visualization and browsing system
JPH08212105A (ja) * 1995-02-02 1996-08-20 Casio Comput Co Ltd プログラム管理装置
US5581696A (en) * 1995-05-09 1996-12-03 Parasoft Corporation Method using a computer for automatically instrumenting a computer program for dynamic debugging
US5784553A (en) 1996-01-16 1998-07-21 Parasoft Corporation Method and system for generating a computer program test suite using dynamic symbolic execution of JAVA programs
JPH09330248A (ja) * 1996-06-12 1997-12-22 Hitachi Ltd Gui制御プログラムのイベントテスト方式
US6425118B1 (en) * 1997-07-18 2002-07-23 Compaq Computer Corporation System for automatically generating tests to ensure binary compatibility between software components produced by a source-to-source computer language translator
JPH1139169A (ja) 1997-07-18 1999-02-12 Toshiba Corp コンパイル方法,コンパイラ,例外ハンドラ及びプログラム記憶媒体
US6601018B1 (en) * 1999-02-04 2003-07-29 International Business Machines Corporation Automatic test framework system and method in software component testing
US6301701B1 (en) * 1999-11-10 2001-10-09 Tenfold Corporation Method for computer-assisted testing of software application components
US6983380B2 (en) * 2001-02-06 2006-01-03 Networks Associates Technology, Inc. Automatically generating valid behavior specifications for intrusion detection
JP2002304303A (ja) 2001-04-05 2002-10-18 Hitachi Ltd 例外処理方法
CN1184565C (zh) * 2001-04-13 2005-01-12 互慧科技股份有限公司 软件诊断系统与方法
GB2391367A (en) * 2001-04-24 2004-02-04 Wvhtc Foundation Software suitability testing system
US7017150B2 (en) 2001-08-20 2006-03-21 Sun Microsystems, Inc. Method and apparatus for automatically isolating minimal distinguishing stimuli in design verification and software development
US7150008B2 (en) * 2002-10-25 2006-12-12 Microsoft Corporation Non-invasive rule-based binary analysis of software assemblies

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08504526A (ja) * 1992-12-17 1996-05-14 シーメンス アクチエンゲゼルシヤフト コンピュータにてオブジェクト指向プログラムの少なくとも1つのクラスのテストをする方法
JP2002278795A (ja) * 2001-03-21 2002-09-27 Hitachi Software Eng Co Ltd オブジェクト指向開発用テスト支援方法および装置

Also Published As

Publication number Publication date
JP2004318887A (ja) 2004-11-11
KR101066706B1 (ko) 2011-09-21
EP1469392A2 (en) 2004-10-20
CN1542622A (zh) 2004-11-03
KR20040089583A (ko) 2004-10-21
CN100454271C (zh) 2009-01-21
US7216337B2 (en) 2007-05-08
US20040205725A1 (en) 2004-10-14
EP1469392A3 (en) 2009-03-04

Similar Documents

Publication Publication Date Title
JP4684573B2 (ja) 無効なコールシーケンスを識別するための方法およびプログラム
AU2005203386B2 (en) Test automation stack layering
US8181163B2 (en) Program synthesis and debugging using machine learning techniques
Grieco et al. QuickFuzz: An automatic random fuzzer for common file formats
US7313727B2 (en) Adaptive recovery from system failure for application instances that govern message transactions
Bastani et al. Specification inference using context-free language reachability
US7293257B2 (en) Method and system for efficient testing of sequences of computer-related operations
JP2020526814A (ja) ブロックチェーンコンパイラ
US10942718B2 (en) Systems and/or methods for type inference from machine code
US20080320336A1 (en) System and Method of Client Side Analysis for Identifying Failing RAM After a User Mode or Kernel Mode Exception
Böhme et al. Reconstruction of Z3’s bit-vector proofs in HOL4 and Isabelle/HOL
Koza Spontaneous emergence of self-replicating and evolutionarily self-improving computer programs
Luke The ECJ owner’s manual
US20100023798A1 (en) Error recovery and diagnosis for pushdown automata
JP2012525648A (ja) バイナリソフトウェア分析
GB2377283A (en) Initialising dependent modules
US7703077B2 (en) Programming model to detect deadlocks in concurrent programs
US7305653B2 (en) Standard application development framework
Constantinou The Bayesys user manual
Khan et al. Detecting wake lock leaks in android apps using machine learning
US20050060530A1 (en) Method for displaying information of updating BIOS
Olsson et al. Hard cases in source code to architecture mapping using Naive Bayes
Hsu et al. Assessment of nvshmem for high performance computing
ALhaddad Improvements of and extensions to FSMWeb: Testing mobile apps
Padhye Abstractions and Algorithms for Specializing Dynamic Program Analysis and Random Fuzz Testing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070403

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100223

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100611

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100910

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110107

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110204

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110209

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140218

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4684573

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees