(57)【要約】【課題】テスト番号を割り当てる方法を提供する。【解決手段】テスト番号を割り当てる方法（１００）において、テストフロー２００の実行中、現在のテストフローコンテキスト情報３００を維持する（１０２）。現在のテストフローコンテキスト３００の１つまたは複数のレベルに対して１つまたは複数のテスト番号ファクタが指定されている場合、テスト番号ファクタを使用して（１０４）、現在のテスト番号範囲のベース番号を決定する。そうでない場合、ベース番号はデフォルトのベース番号に設定する。テストフロー２００内のサブテストが実行されると、サブテストの結果に、現在のテスト番号範囲内の次のテスト番号を割り当てる（１０６）。ついで、テスト番号データベース６００内で、（１）サブテストの識別子、（２）現在のテストフローコンテキスト情報３００、（３）テスト番号、（４）ベース番号、の各項目を関連づける（１０８）。【選択図】図１
2005321398.tif 000002
【特許請求の範囲】
【請求項１】
テスト番号を割り当てる方法であって、
テストフローを実行する間、現在のテストフローコンテキスト情報を維持するステップと、
現在のテストフローコンテキストの１つまたは複数のレベルに対して１つまたは複数のテスト番号ファクタが指定されている場合、該テスト番号ファクタを使用して現在のテスト番号範囲に関するベース番号を決定し、そうでない場合は、ベース番号をデフォルトのベース番号に設定するステップと、
前記テストフロー内のサブテストが実行されると、該サブテストの結果に、前記現在のテスト番号範囲内の次のテスト番号を割り当てるステップと、
テスト番号データベース内において、（ｉ）前記サブテストの識別子、（ｉｉ）前記現在のテストフローコンテキスト情報、（ｉｉｉ）前記テスト番号、（ｉｖ）前記ベース番号、を関連づけ、これにより、前記データベース内に記憶されたベース番号が、対応するテスト番号に関する指定番号として機能するステップと、
を含む、方法。
【請求項２】
前記テスト番号データベース内の情報を複数のリンクされたデータノードとして記憶するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記リンクされたデータノードのうちの１つはテスト番号データノードであり、該テスト番号データノードは、テスト番号とベース番号とを記憶し、前記テスト番号データノードは、第２のデータノードの子であり、該第２のノードは少なくとも前記サブテストの識別子を記憶する、請求項２に記載の方法。
【請求項４】
複数のテスト番号ファクタが前記現在のテストフローコンテキストの種々のレベルについて指定されている場合、前記現在のテスト番号範囲に関するベース番号を決定するステップが、前記複数のテスト番号ファクタを合計するステップを含む、請求項１に記載の方法。
【請求項５】
テスト番号を割り当てる方法であって、
テストフローを実行する間、現在のテストフローコンテキスト情報を維持するステップと、
現在のテストフローコンテキストの１つまたは複数のレベルに対して１つまたは複数のテスト番号ファクタが指定されている場合、該テスト番号ファクタを使用して現在のテスト番号範囲に関するベース番号を決定し、そうでない場合は、ベース番号をデフォルトのベース番号に設定するステップと、
前記テストフロー内のサブテストが実行されると、（ｉ）該サブテストの識別子と（ｉｉ）前記現在のテストフローコンテキスト情報とを含むインデックス情報を使用してテスト番号データベースにインデックスをつけるステップと、
前記インデックス情報に対応するテスト番号が前記データベース内に存在する場合、前記ベース番号を前記テスト番号に関連づけられた指定番号と比較するステップと、
前記ベース番号と前記指定番号とが一致する場合、前記テスト番号を前記サブテストの結果に割り当てるステップと、
前記インデックス情報に対応するテスト番号が前記データベース内に存在しないかまたは前記ベース番号と前記指定番号とが一致しない場合、新しいテスト番号を前記サブテストの結果に割り当てるステップと、
を含む、方法。
【請求項６】
前記ベース番号と前記指定番号が一致しない場合、
前記テスト番号を前記新しいテスト番号に置き換えるステップと、
前記指定番号を前記ベース番号に置き換えるステップと、
をさらに含む、請求項５に記載の方法。
【請求項７】
前記新しいテスト番号が、該新しいテスト番号を前記現在のテスト番号範囲内の次のテスト番号に設定することによって割り当てられる、請求項５に記載の方法。
【請求項８】
前記テスト番号データベース内において、（ｉ）前記インデックス情報、（ｉｉ）前記新しいテスト番号、（ｉｉｉ）前記ベース番号、を関連づけるステップであって、これにより、前記ベース番号が、対応するテスト番号の指定番号として機能する、ステップ、
をさらに含む、請求項５に記載の方法。
【請求項９】
コンピュータ読み取り可能媒体と、
前記コンピュータ読み取り可能媒体上に記憶されたプログラムコードと、
を含み、前記プログラムコードは、
テスト番号のコールに応答して、（ｉ）サブテストの数値識別子と（ｉｉ）１つまたは複数の現在のテストフローコンテキスト値のアレイとから形成されるキーを使用して、リンクされたデータノードのマップにインデックスを付けるコードと、
テスト番号と関連づけられたデータノードにインデックスを付けると、該テスト番号に関連づけられた指定番号を前記コールに関連づけられたベース番号と比較するコードと、
前記ベース番号と前記指定番号とが一致する場合、前記テスト番号を戻すことにより前記コールを満足させるコードと、
前記マップのインデックス付けにおいてミスがある場合かまたは前記ベース番号と前記指定番号との間にミスマッチがある場合、新しいテスト番号を生成し、該新しいテスト番号を戻すことによってコールを満足させ、該新しいテスト番号を前記マップ内でリンクされたデータノードと関連づけるコードと、
を含む、テスト番号エンジン。
【請求項１０】
前記ベース番号と前記指定番号との間にミスマッチがある場合、１つまたは複数の現在のテストフローコンテキスト値のアレイを使用して、前記マップの共通データノードにリンクされたテスト番号のグループを自動的に再生成するコードをさらに含む、請求項９に記載のテスト番号エンジン。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、テスト番号の割り当てに関し、特に、コンテクスチュアル・テスト番号ファクタを使用した、テスト番号の割り当てに関する。
【背景技術】
【０００２】
一部の形式の回路テストは技術者に多数のテスト結果を提供する。技術者がこれらのテスト結果を管理、参照することを支援するために、各テスト結果をテスト番号と関連づけることができる。
Ｒｏｂｅｒｔ  Ｓ．Ｋｏｌｍａｎらの米国特許出願「コンテクスチュアル・テスト番号ファクタを使用してテスト番号を割り当てる方法および装置（Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｔｈａｔ  ｕｓｅ  Ｃｏｎｔｅｘｔｕａｌ  Ｔｅｓｔ  Ｎｕｍｂｅｒ  Ｆａｃｔｏｒｓ  ｔｏ  Ａｓｓｉｇｎ  Ｔｅｓｔ  Ｎｕｍｂｅｒｓ）」（代理人整理番号第１００４０４５８−１号、本出願と同じ日に提出されている）は、テストフローを実行する間、現在のテストフローコンテキスト情報を維持する、テスト番号を割り当てる方法を開示している。現在のテストフローコンテキストの１つまたは複数のレベルについて１つまたは複数のテスト番号ファクタが指定されている場合、テスト番号ファクタを使用して現在のテスト番号範囲のベース番号を決定する。そうでない場合は、ベース番号はデフォルトのベース番号に設定する。テストフロー内のサブテストが実行されると、サブテストの結果に、現在のテスト番号範囲中の次のテスト番号を割り当てる。
【発明の開示】
【０００３】
本発明の１つの態様は、テスト番号を割り当てる第１の方法で具体化される。本方法によると、テストフローを実行する間、現在のテストフローコンテキスト情報を維持する。現在のテストフローコンテキストの１つまたは複数のレベルに対して１つまたは複数のテスト番号ファクタが指定されている場合、テスト番号ファクタを使用して現在のテスト番号範囲のベース番号を決定する。そうでない場合、ベース番号はデフォルトのベース番号に設定する。テストフロー内のサブテストが実行されると、サブテストの結果に、現在のテスト番号範囲内の次のテスト番号を割り当てる。ついでテスト番号データベース内で、（１）サブテストの識別子、（２）現在のテストフローコンテキスト情報、（３）テスト番号、（４）ベース番号、の各項目を関連づける。ベース番号は、データベースに記憶されると、対応するテスト番号の指定番号として機能する。
【０００４】
本発明の別の態様は、テスト番号を割り当てる第２の方法で具体化される。本方法によると、テストフローを実行する間、現在のテストフローコンテキスト情報を維持する。現在のテストフローコンテキストの１つまたは複数のレベルに対して１つまたは複数のテスト番号ファクタが指定されている場合、テスト番号ファクタを使用して現在のテスト番号範囲のベース番号を決定する。これ以外の場合は、ベース番号はデフォルトのベース番号に設定する。サブテストが実行されると、（ｉ）サブテストの識別子および（ｉｉ）現在のテストフローコンテキスト情報を含むインデックス情報を使用して、テスト番号データベースにインデックスを付ける。インデックス情報に対応するテスト番号がデータベースに存在する場合、ベース番号を、テスト番号と関連づけられた指定番号と比較する。ベース番号と指定番号が一致する場合、そのテスト番号をサブテストの結果に割り当てる。インデックス情報に対応するテスト番号がデータベースに存在しない場合またはベース番号と指定番号が一致しない場合、新しいテスト番号をサブテストの結果に割り当てる。
【０００５】
本発明のさらに別の態様はテスト番号エンジンで具体化される。テスト番号エンジンは、コンピュータ読み取り可能媒体、および、コンピュータ読み取り可能媒体上に記憶されたプログラムコードを含む。プログラムコードは、テスト番号のコールに応答して、（１）サブテストの数値識別子および（２）１つまたは複数の現在のテストフローコンテキスト値のアレイから形成されたキーを使用して、リンクされたデータノードのマップにインデックスを付けるコードを含む。またプログラムコードは、テスト番号に関連づけられたデータノードにインデックスをつけると、テスト番号に関連づけられた指定番号とコールに関連づけられたベース番号を比較するコードを含む。プログラムコードはさらに、ベース番号と指定番号が一致した場合、テスト番号を戻すことによってコールを満足させるコードも含む。さらに、プログラムコードは、マップのインデックスにミスがある場合またはベース番号と指定番号の間にミスマッチがある場合、新しいテスト番号を生成し、新しいテスト番号を戻すことによってコールを満足させ、新しいテスト番号をマップ内でリンクされたデータノードに関連づけるコードを含む。
【０００６】
本発明の他の実施例も開示する。
【発明を実施するための最良の形態】
【０００７】
本発明の例示的な現在好ましい実施形態を図面に示す。
【０００８】
図１は、テスト番号を割り当てる第１の例としての方法１００を示す。方法１００によれば、現在のテストフローコンテキスト情報はテストフローの実行中維持される（１０２）。
【０００９】
本明細書では、「テストフロー」という用語は、回路テストの間に実行できるテストのタイプ、番号、または順序を指定するために使用するテストプログラムの任意の部分であると定義する。テストフローコンテキスト情報は、テストプログラムのどの部分が実行されているかを定義することを補助する任意の情報を含むことができる。例として、テストフローコンテキスト情報は、テストスイート（test suite）指定子、または、ポート指定子、ベクトルラベル、ベクトル指定子、ピン指定子などの情報を含むことができる。また、テストフローコンテキスト情報は、テストフロー実行中に入力された、たとえばネストループなどのいくつかのループレイヤの各々についてループ指定子および／またはループ反復指定子を含むこともできる。本明細書では、「指定子」という用語は、テストスイート、ループ、または他のテストフローコンテキストを指定するのに使用することのできる、文字列、番号、または任意の他の手段を包含する。
【００１０】
現在のテストフローコンテキストの１つまたは複数のレベルに対して１つまたは複数のテスト番号ファクタが指定されている場合には、方法１００はテスト番号ファクタを使用し、現在のテスト番号範囲について、たとえば開始番号または基準番号であるベース番号を決定する（１０４）。それ以外の場合には、ベース番号はデフォルトのベース番号に設定される。
【００１１】
方法１００の一実施形態では、ベース番号は、現在のテストフローコンテキストの種々のレベルについて指定された複数のテスト番号ファクタを総計（たとえば合計または乗算）することによってコンパイルされる（compiled）。例として、テスト番号ファクタは、ループレベル、テストスイートレベル、サブテストレベルのうち任意のレベルまたはすべてのレベルで指定されるインクリメントまたは加数を含むことができる。
【００１２】
方法１００の別の実施形態では、ユーザは、テストフローコンテキストごとに単一のベース番号しか指定できない。この実施形態では、現在のテスト番号範囲に関するベース番号は、ユーザ指定ベース番号と等しいベース番号を設定するだけで決定される。この方法では、テスト番号ファクタの集合はない。しかしたとえばユーザは、テストフロー中の種々のポイントでベース番号を提供し、これによって、一部のテスト番号をグループ化することができる。さらに、ベース番号がコンテキストで（contextually）設定されるので、後のテストスイートに割り当てられるテスト番号は、前のテストスイートに割り当てられたテスト番号から続いている必要はない。さらに、ベース番号が１つのテストスイートに対して指定される場合、そのベース番号は、次のテストスイートでの使用のために自動的に保存されることはない。
【００１３】
テストフロー中のサブテストが実行されると、現在のテスト番号範囲内の次のテスト番号をサブテストの結果に割り当てる（１０６）。本明細書では「サブテスト」という用語は、多数のテスト結果を生成するテストであってもよいが、好ましくは単一のテスト結果だけを生成するテストまたはテストの一部として定義することができる。ついで、テスト番号データベースの中で次の項目を関連づける（１０８）。（１）サブテストの識別子、（２）現在のテストフローコンテキスト情報、（３）テスト番号、（４）ベース番号。データベースにベース番号を含めることによって、ベース番号は、現在のテストフローコンテキストと関連づけられたテスト番号ファクタが変わったかどうかを決定する「指定番号」として機能する。すなわち、サブテスト識別子と現在のテストフローコンテキスト情報を使用してテスト番号データベースにインデックスを付けた場合、テスト番号とその指定番号の両方が戻される。データベース内の「ヒット」は、戻されたテスト番号が一意的であることを示す。しかし、ユーザがテストフローまたはそのテストフローに対して指定されたテスト番号ファクタを編集した場合、戻されるテスト番号は、現在のテストフローコンテキストの指定された範囲に対応しなくなる場合がある。現在生成されたベース番号と戻された指定番号を比較することによって、テスト番号を計算するために以前に使用されたベース番号が現在のベース番号に対応するかどうかを決定することができ、また、テスト番号の再生成を、新しい異なるテスト番号を生成する場合に限ることもできる。
【００１４】
図２は、テストフローコンテキスト情報を維持できる、例としてのテストフロー２００を示す。例として、テストフロー２００は、アジレント９３０００ＳＯＣシリーズテスタのシステムオンチップテストフローであることができる。これは、米国カリフォルニア州パロアルトのアジレントテクノロジー社が製造するものである。テストフロー２００は、それぞれ、ＡＡＡ、ＢＢＢ、ＣＣＣ、ＤＤＤ、ＥＥＥと名づけられた５つのテストスイート２０２、２０４、２０６、２０８、２１０を含む。テストスイート２０２から２１０の各々は、いくつかのサブテストを含むおよび／または指定する役割を果たし、たとえばテスト方法、テスト機能、ユーザプロシージャなど１つまたは複数のテスト制御を含むことができる。さらにテストフロー２００は、それぞれＬｏｏｐ＿Ｘ、Ｌｏｏｐ＿Ｙと名づけられた２つのループ２１２、２１４を含む。例として、各ループ２１２、２１４は、そのループを３回（すなわち１から３）繰り返すべきことを指定する。
【００１５】
図３は、テストフロー２００を実行する間、方法１００が維持することができるテストフローコンテキスト情報３００の進行を示す。最初のテストフローコンテキスト３０２は単に「ＡＡＡ」、あるいは最初に遭遇したテストスイートの名前であることに注意されたい。テストスイートＡＡＡが実行された後、ついで、テストフローコンテキストは「Ｌ１」に変わり、Ｌｏｏｐ＿Ｘの第１の反復を示す。
【００１６】
テストスイートＢＢＢに入ると、テストフローコンテキストは「ＢＢＢ：Ｌ１」に変わる。読み取りやすくするために、図３に示されるテストフローコンテキストは、現在のテストスイートの名前を常にコンテキストの最初におくという慣例を採用することに注意されたい。しかし、方法１００では必ずこうしなければならないということではないし、又その必要もない。
【００１７】
最初にＬｏｏｐ＿Ｙに入ると、テストフローコンテキストは「Ｌ１：Ｌ１」に変わる。したがってＬｏｏｐ＿ＸとＬｏｏｐ＿Ｙのアイデンティティは、テストフローコンテキストの中で維持されているループの繰り返しの数および順序から推論される。しかし、ループのアイデンティティは、コンテキストを「Ｘ１：Ｙ１」と示すなどして、特定性によって呼び出すこともできる。
【００１８】
テストフロー２００の種々のコンテキストはテスト番号ファクタに関連づけられる。すなわち、Ｌｏｏｐ＿Ｘは加数１００００、テストスイートＢＢＢは加数２００、テストスイートＣＣＣは加数２２０、Ｌｏｏｐ＿Ｙは加数２０００、テストスイートＤＤＤはインクリメント５と、それぞれ関連づけられる。図３では各テストフローコンテキストに隣接して、コンテキストに関する合計のベース番号を示す。したがって、テストスイートＢＢＢのベース番号は１０２００（１００００＋２００）、Ｌｏｏｐ＿Ｘの第１の反復中のテストスイートＣＣＣのベース番号は１０２２０（１００００＋２２０）、Ｌｏｏｐ＿Ｘの第１の反復とＬｏｏｐ＿Ｙの第１の反復中のテストスイートＤＤＤのベース番号は１２０００（１００００＋２０００）、テストスイートＥＥＥのベース番号は１２００である。しかし、テストスイートＡＡＡのベース番号は１であり、デフォルトのベース番号である。
【００１９】
テスト番号ファクタが、たとえばＬｏｏｐ＿Ｘに関連づけられた加数１００００などループレベルで提供される場合、このループのテスト番号ファクタはベース番号反復回数に掛けられる（factored into）ことができる。たとえば、Ｌｏｏｐ＿Ｘの第２の反復とＬｏｏｐ＿Ｙの第３の反復中にテストスイートＤＤＤが実行された場合を考える。このコンテキストのベース番号は（１００００＊２）＋（２０００＊３）、すなわち２６０００として計算することができる。
【００２０】
次に、図２に示すテストスイート２０２から２１０の各々が、Ｓｕｂｔｅｓｔ１、Ｓｕｂｔｅｓｔ２、Ｓｕｂｔｅｓｔ３と識別される３つのサブテストを含むと仮定する。同じ名前のサブテストが各テストスイート２０２から２１０の中で現れることはあるが、これらは同じサブテストである必要がなく、またその可能性も低いことに注意されたい。テストフロー２００の実行中に、テストスイートＡＡＡに割り当てられるテスト番号は１、２、３である。Ｌｏｏｐ＿Ｘの第１の反復中にテストスイートＢＢＢに割り当てられるテスト番号は、１０２００、１０２０１、１０２０２となる。同様に、Ｌｏｏｐ＿Ｘの第１の反復中にテストスイートＣＣＣに割り当てられるテスト番号は、１０２２０、１０２２１、１０２２２となる。Ｌｏｏｐ＿ＸとＬｏｏｐ＿Ｙの第１の反復中にテストスイートＤＤＤに割り当てられるテスト番号は、１２０００、１２００５、１２０１０、すなわち５ずつインクリメントされた数になる。最後に、テストスイートＥＥＥに割り当てられるテスト番号は整数１２００、１２０１、１２０２を含む。
【００２１】
一部のテストフローについては、テストフロー中の異なるコンテキストが故意または故意ではなく、同じテスト番号範囲を共有してもよいことに注意されたい。他のテストスイートがすでに範囲から番号を引き出したかどうかにかかわらず、各サブテストは範囲から「次の数」を引き出すので、２つのテストスイートに割り当てられるテスト番号は衝突しない。
【００２２】
さらに、２つまたは２つ以上のテストスイートは同じベース番号を有してよいだけでなく、重なるかまたは挟み込まれたテスト番号範囲と関連づけてもよいことに注意されたい。たとえば、２つのテストスイートがそれぞれベース番号１２００と１２０１に関連づけられ、インクリメントが５である場合、１つのテストスイートはテスト番号１２００、１２０５、１２１０と関連づけられ、別のテストスイートは１２０１、１２０６、１２１１と関連づけられる。ベース番号１２００と１３０１にそれぞれ関連づけられ、インクリメントが２であるテストスイートでも、同様なテスト番号の重なりが起きる。
【００２３】
現在のテスト番号範囲向けにコンパイルされるベース番号が新しい場合、ベース番号を使用して、テスト番号範囲のデータベース４００中の新しいテスト番号範囲を初期化することができる。ついで、データベース４００中の各テスト番号範囲について、テスト番号範囲から割り当てられたテスト番号をトラッキングすることができる。これを行う１つの方法は、各範囲４０２を、その範囲から割り当てられた最大のテスト番号４０４と共に記憶することである。ついで、新しいテスト番号が範囲から割り当てられるごとに、その前の最大のテスト番号をインクリメントすることができる。ユーザがテストフローに割り当てたテストファクタに依存して、インクリメントはデフォルトのインクリメントであってもよいし、テストフローの特定のレベル（複数可）についてユーザが指定したインクリメントであってもよい。たとえば、インクリメントは現在のテストフローコンテキストのレベルと関連づけてもよい。
【００２４】
一実施形態では、方法１００は、Ｒｏｂｅｒｔ  Ｓ．Ｋｏｌｍａｎらによる「テスト番号を割り当てる方法および装置」（代理人整理番号第１００４０４３３−１、本出願と同じ日に提出された）という米国特許出願に開示された、テスト番号を割り当てる方法と組み合わせることができる。図５はこの組合せによる、テスト番号を割り当てる第２の例としての方法５００を示す。方法５００では、テストフローを実行している間、現在のテストフローコンテキスト情報を維持する（５０２）。現在のテストフローコンテキストの１つまたは複数のレベルについて１つまたは複数のテスト番号ファクタが指定されている場合、方法５００はテスト番号ファクタを使用して、現在のテスト番号範囲についてベース番号を決定する（５０４）。そうでない場合は、ベース番号はデフォルトのベース番号に設定する。
【００２５】
テストフロー内のサブテストが実行されると、テスト番号のデータベースに、（１）サブテストの識別子と（２）現在のテストフローコンテキスト情報とを含むインデックス情報を使用してインデックスを付ける（５０６）。データベース内の各テスト番号は「指定番号」と関連づけられ、「指定番号」は上記のように、最初にテスト番号を決定するために使用された「ベース番号」を示す。インデックス情報に対応するテスト番号がデータベースに存在する場合、以前に決定されたベース番号を、テスト番号の「指定番号」と比較する（５０８）。ベース番号と指定番号が一致する場合、そのテスト番号をサブテストの結果に割り当てる（５１０）。インデックス情報に対応するテスト番号がデータベースに存在しない場合またはベース番号と指定番号が一致しない場合、サブテストの結果には新しいテスト番号を割り当てる（５１２）。新しいテスト番号は、新しいテスト番号を現在のテスト番号範囲内の次のテスト番号と等しい値に設定することによって割り当てることができる。
【００２６】
例としてのテストフロー２００に戻ると、テストフロー２００内の第１のサブテストを実行すると、サブテストの識別子（Ｓｕｂｔｅｓｔ１）と現在のテストフローコンテキスト情報（ＡＡＡ）を含むインデックス情報を使用して、テスト番号のデータベースにインデックスを付ける。これがテストフロー２００の第１の実行である場合、データベースは空なので、新しいテスト番号（例えば１）をＳｕｂｔｅｓｔ１の結果に割り当てる。また、新しいテスト番号（１）とインデックス情報（ＡＡＡ：Ｓｕｂｔｅｓｔ１）をデータベースの中で関連づける。テストフロー２００の第１の実行中、データベース「ミス（ｍｉｓｓ）」が生ずることになる各連続したインデックスを使用して、これらのステップは継続し、新しいテスト番号、これに関連づけられたインデックス情報がデータベースに追加される。したがって、テストフロー２００が最初に実行されると、図６に示すテスト番号のデータベース６００を生成することができる。同時に、各新しく生成されたテスト番号は、対応するサブテストのテスト結果に割り当てられ、図７に示すテスト結果のデータベース７００が生成される。図７に示すすべてのテスト結果は「ｐａｓｓ（合格）」「ｆａｉｌ（不合格）」の用語で表されているが、実際のテストを実行した結果は電圧値、電流値、インピーダンス測定値、その他の種類のテスト結果を追加または代替として含んでいてよい。
【００２７】
データベース６００内の各テスト番号６０２はインデックス情報６０４に関連づける他に、導出元のベース番号６０６と関連づけることができる。
【００２８】
ユーザがテストフロー２００を編集し、テストスイートＥＥＥと関連づけられたテストファクタ番号を「＋３０００」に変更すると仮定する。編集後、テストフロー２００の第２の実行の間、テストフローの結果に割り当てられたほとんどすべてのテスト番号がデータベース６００から取り出される。しかし、テストスイートＥＥＥに入ると、スイートのサブテストに関する新しいベース番号は「３０００」となる。したがって、データベース６００にインデックスを付け、テストスイートＥＥＥの結果に関するテスト番号を検索する時、ベース番号「３０００」は指定番号「１２００」と一致しない。このミスマッチにより、新しいテスト番号の生成がトリガされる。新しいテスト番号はテストスイートＥＥＥのサブテストのうちの１つの結果に割り当てられるだけでなく、データベース６００内の「１２００シリーズ」テスト番号と置き換えるために使用することができる。同様に、新しいテスト番号に関連づけられた指定番号は、ベース番号「３０００」に置き換わる。
【００２９】
オプションとしては、図１と図５に示された方法のいずれかを、Ｒｏｂｅｒｔ  Ｓ．Ｋｏｌｍａｎらの「リンクされたデータノードのマップを使用してテスト番号を記憶する方法、装置、データベース」という題名の米国特許出願（代理人整理番号第１００４０４３４−１。本出願と同じ日に提出される）に開示された方法および装置と組み合わせることができる。この組み合わせに従うと、テストフローコンテキスト情報３００に含まれる文字列をコンテキスト値のアレイ内に記憶されるコンテキスト値に変換することができる。したがって、新しいテストフローコンテキスト情報を方法１００、５００によって維持する必要があるたびに、情報が文字列であるかどうかを決定し、文字列である場合、文字列の数値で表した等価物をルックアップする。
【００３０】
図８は、数値で表した等価物を、〔ＴｅｓｔＳｕｉｔｅＮａｍｅｓ〕、〔ＳｕｂｔｅｓｔＮａｍｅｓ〕、〔ＶｅｃｔｏｒＮａｍｅｓ〕、〔ＰｉｎＮａｍｅｓ〕のタイプのテストフローコンテキスト情報に対して提供するルックアップテーブルのデータベース８００を示す。例としてのテストフロー２００とテストフローコンテキスト情報３００は、ベクトル名またはピン名を提供せず、したがって、データベース８００はこれらのテーブルの中でエントリを示さないことに注意されたい。好ましくは、ルックアップテーブル８００は適応的である。すなわち、対応するルックアップテーブル内にまだ現れていない文字列には数値で表した等価物を割り当て、ついでこれは対応するルックアップテーブルに追加される。
【００３１】
テストフローコンテキスト文字列を数値で表した等価物に変換すると、図９に示すように、方法１００または５００によって形成された「キー」のうちの１つが現われることがある。キー９００のインデックスアレイ９０２は、「Ｓｕｂｔｅｓｔ１」という名前の付いたサブテストの数値識別子（すなわち０）を、テストフローコンテキスト「ＢＢＢ：Ｌ１」を表すコンテキスト値のアレイに追加することによって形成する。従ってインデックスアレイ９０２は〔１，１，０〕と示される。
【００３２】
図では、キー９００は、コンテキストタイプ、すなわち〔ＴｅｓｔＳｕｉｔｅ，Ｌｏｏｐ，Ｓｕｂｔｅｓｔ〕のアレイ９０４を含む。各コンテキストタイプは、インデックスアレイ９０２内のコンテキスト値に１対１対応を有する。別法としては、コンテキストタイプはインデックスアレイ９０２内の値の数字および位置から推論することができるが、コンテキストタイプのアレイ９０４は、リンクされたデータノードのマップにインデックスをつける際に有用である。これについては後述する。
【００３３】
オプションとしては、キー９００のタイプアレイ９０４内の文字列は、テストフローコンテキスト文字列を数値で表した等価物に変換する方法と同様な方法で、数値で表した等価物に変換することができる。したがって図１０は、これらの変換のためのコンテキストタイプのルックアップテーブル１０００を示す。テーブル１０００はスタンドアロンのテーブルであってもよいし、ルックアップテーブルのデータベース８００に付随してもよいことに注意されたい。テーブル１０００を使用して、「コンテキストタイプ」値のアレイ１１００、すなわち〔０，１，２〕を含むキー９００ａを導出することができる。
【００３４】
方法１００、５００による現在のテストフローコンテキスト情報の維持は、深さ数（depth number）の維持を含む。このような深さ数９０６を、図９と図１１のキー９００とキー９００ａに示す。深さ数９０６（すなわちｎｕｍＬａｙｅｒｓ＝３）は、インデックスアレイ９０２とタイプアレイ９０４内に維持される値の数と等しく、この深さ数を用いて確実にキー９００を使用して同じマップ内の固定された数のデータノードだけを横断するようにする。深さ数９０６の目的および使用法については後述する。
【００３５】
図１２は、キー９００ａによってインデックスを付けることができる例としてのテスト番号データベース１２００を示す。例として、データベース１２００は、リンクされたデータノード、たとえばノード１２０２、１２０４、１２０６、１２０８、１２１０、１２１２、１２１４のマップを含む。このうち少なくとも１つは、少なくとも１つの他のデータノード１２０４〜１２０８をポイントするテストスイートノード１２０２であり、また、少なくとも１つは、別のデータノード１２１０によってポイントされるテスト番号ノード１２１２である。１つまたは複数のテスト番号１２１６、１２１８は各々、テスト番号ノード１２１２、１２１４のうちの１つと関連づけられる。
【００３６】
好ましくは、データベース１２００のデータノード１２０２〜１２１４は均質の構造を有する。例として、均質の構造はノードタイプフィールド（Ｔｙｐｅ）１２２０および子ノードインデックスのアレイ（Ｉｎｄｉｃｅｓ）１２２２を含んでいてもよい。ノードタイプフィールド１２２０は、テーブル１０００（図１０）で見つかったコンテキストタイプのうちの１つを指定することができる。子ノードインデックスのアレイ１２２２は、親データノード１２０２がリンクされた子データノード１２０４〜１２０８を指すことができる。
【００３７】
有用であれば、各データノード（例えば１２０２）は、データノードにどれだけの子ノード、例えば１２０４から１２０８が割り当てられたかを指定するフィールド（ＮｕｍＡｌｌｏｃ）１２２４を含んでもよい。各データノード１２０２〜１２１４はさらに、テスト番号フィールド（ＴｅｓｔＮｕｍ）１２２６と指定番号フィールド（ＳｐｅｃＮｕｍ）１２２８を含んでもよい。しかし、少なくともテスト番号データノード１２１２、１２１４はそのようなフィールドを含む。
【００３８】
キー９００ａのインデックスアレイ９０２を使用し、マップ１２００の多くのノード１２０２、１２０８、１２１０、１２１２を横断することができる。すでにキー９００ａを使用してマップが横断されている場合、最終的にキー９００ａはテスト番号データノード１２１２にインデックスを付ける。ついで、ノード１２１２に関連づけられた指定番号１２３０を検索し、現在のテストフローコンテキストのベース番号と比較することができる。２つの番号が一致すれば、データノード１２１２のテスト番号１２１６はテストフローの中で対応するサブテストの結果と関連づけることができる。一致しない場合は、新しいテスト番号を生成し、また、データノード１２１２のテスト番号と指定番号を更新することができる。
【００３９】
ある点では、キー９００ａのタイプアレイ１１００と深さ数９０６を使用して、正しいタイプと数のノードを確実に横切っていることを一貫してチェックすることができる。さらに、キー９００ａが無効なノード、例えばまだ作成されていないノード、割り当てられていないノード、空のノードの横断を指定する場合、タイプアレイ１１００と深さ数９０６をインデックスアレイ９０２と組み合わせて使用し、たとえば、データノードを、作成、割付、満たすなどによって、無効なノードを有効にすることができる。
【００４０】
図７は、テスト結果７００の例としてのデータベースを示す。ここでデータベース内の各テスト結果は、方法１００または５００によって得られたテスト番号とテスト番号データベース１２００に関連づけられる。
【００４１】
たとえばテストフロー２００（図２）などのテストフローの第１の実行中に、データベース１２００とルックアップテーブルの８００、１０００のすべてではないがほとんどが作成される。ついで、同じテストフロー、またはたとえばテストフロー２００の編集されたバージョンなど同様なテストフローが続いて実行されると、データベース１２００とテーブル８００と１０００とを使用してテスト番号生成を合理化し、新しいサブテストの識別の要求に従って追加するように、データベース１２００とテーブル８００、１０００を記憶することができる。
【００４２】
好ましくは、テストスイート内の各サブテストに一意的なサブテスト名を与え、十分なテストフローコンテキスト情報を維持して、テスト番号６００のデータベースへの各インデックスが一意的なサブテスト識別子を確実に形成するようにする。また、データベース６００内に入った各新しいテスト番号が、データベース内のすべての他のテスト番号と異なって一意的であると望ましい。しかし、上記のコントロールが維持されない場合でも、方法１００、５００はしばしば有用なテスト番号を提供することができる。
【００４３】
図１３はテスト番号エンジン１３００を示す。テスト番号エンジン１３００は、たとえば磁気ディスクまたは光ディスク、固定ディスクまたはリムーバブルディスク、または、ランダムアクセスメモリまたはリードオンリーメモリ（ＲＡＭまたはＲＯＭ）などのコンピュータ読み取り可能媒体上に記憶されたプログラムコードで具体化される。いくつかの実施形態では、テスト番号エンジン１３００のプログラムコードは、１つまたは複数のコンピュータシステムに関連づけられた種々のコンピュータ読み取り可能媒体の中に分配することもできる。
【００４４】
図示されるように、テスト番号エンジン１３００は、テスト番号のコールに応答して、（１）サブテストの数値識別子および（２）１つまたは複数の現在のテストフローコンテキスト値のアレイから形成されるキーを使用して、リンクされたデータノードのマップ１３０４にインデックスをつけるコード１３０２を含むことができる。プログラムコードはさらに、テスト番号に関連づけられたデータノードにインデックスをつけると、テスト番号に関連づけられた指定番号とコールに関連付けられたべース番号を比較するコード１３０６を含む。プログラムコードはさらに、ベース番号と指定番号が一致した場合に、テスト番号を戻すことによってコールを満足させるコード１３０８を含む。さらに、プログラムコードは、マップ内のインデックスにミスがあるかまたはベース番号と指定番号の間にミスマッチがあると、新しいテスト番号を生成し、新しいテスト番号を戻すことによりコールを満たし、新しいテスト番号を、マップ中でリンクされたデータノードに関連づけるコード１３１０を含む。
【００４５】
テスト番号エンジンはさらに、ベース番号と指定番号の間にミスマッチがあると、１つまたは複数の現在のテストフローコンテキスト値を使用して、マップの共通データノードにリンクされるテスト番号のグループを自動的に再生成するコード１３１２を含むことができる（たとえばマップ１２００内の共通データノード１２１０にリンクされるデータノード１２１２、１２１４）。
【００４６】
オプションとしては、テスト番号エンジン１３００は現在のテストフローコンテキスト値のアレイを維持するコード１３１４を含んでいてもよい。アレイ維持の一部として、コード１３１４は、受信されたテストフローコンテキスト文字列を使用し、文字列の数値で表した等価物をルッアップすることができる。
【００４７】
本明細書では本発明を例示する、現在好ましい実施形態を詳細に記述したが、本発明の概念は他の種々の方法でも具体化および使用することができ、付随する請求項は、関連技術による限定を除いてはこれらの変形例も含めることを意図していることを理解されたい。
【図面の簡単な説明】
【００４８】
【図１】テスト番号を割り当てる第１の例としての方法を示す図である。
【図２】例としてのテストフローを示す図である。
【図３】図２のテストフローに関するテストフローコンテキスト情報の経過を示す図である。
【図４】テスト番号範囲の例としてのデータベースを示す図である。
【図５】テスト番号を割り当てる第２の例としての方法を示す図である。
【図６】図２のテストフローが実行されたことに応答して生成されるテスト番号のデータベースを示す図である。
【図７】図２のテストフローが実行されたことに応答して生成されるテスト結果のデータベースを示す図である。
【図８】図２のテストフローに関するテストフローコンテキスト情報の文字列を数値で表した等価物に変換するルックアップテーブルのデータベースを示す図である。
【図９】リンクされたデータノードのマップにインデックスを付ける例としてのキーを示す図である。
【図１０】図９のキーのタイプアレイ内の文字列を数値で表した等価物に変換するルックアップテーブルを示す図である。
【図１１】図９のキーの代替実施形態を示す図である。
【図１２】図１１のキーによってインデックスを付けることができる例としてのテスト番号データベースを示す図である。
【図１３】例としてのテスト番号エンジンを示す図である。
【符号の説明】
【００４９】
２００：テストフロー
２０２：テストスイート
２０４：テストスイート
２０６：テストスイート
２０８：テストスイート
２１０：テストスイート
２１２：ループ
２１４：ループ
３００：テストフローコンテキスト情報
【図１】
2005321398.tif 000003
【図２】
2005321398.tif 000004
【図３】
2005321398.tif 000005
【図４】
2005321398.tif 000006
【図５】
2005321398.tif 000007
【図６】
2005321398.tif 000008
【図７】
2005321398.tif 000009
【図８】
2005321398.tif 000010
【図９】
2005321398.tif 000011
【図１０】
2005321398.tif 000012
【図１１】
2005321398.tif 000013
【図１２】
2005321398.tif 000014
【図１３】
2005321398.tif 000015