説明

テスト・ケース生成方法、プログラム及びシステム

【課題】入力として与えられた既存のテスト・ケースの集合と一致するものを多く含み、なるべく小さいサイズの集合を、高速に生成する。
【解決手段】いくつかのパラメータに対して、テストケース候補が持っているべき値を決定する(718)。入力テスト・ケースの集合に含まれるテストケースのうち、上記で決定した値を持っているものを候補とする(712)。従来手法によって生成されたひとつ又は複数のテストケース候補と、入力テスト・ケースの集合から選択されたひとつまたは複数のテストケース候補のうち、最もスコアが高いものを出力テスト・ケースの集合に追加する(716)。この処理を、出力テスト・ケースの集合が目的の性質を満たすまで繰り返す。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、コンピュータ・システムなどのテストを行うためのテスト・ケースの生成方法、プログラム及びシステムに関するものである。
【背景技術】
【0002】
コンピュータ・システムや制御装置は、設定可能なさまざまなパラメータをもち、それらのパラメータの組み合わせによって、挙動が変化する。例えば、コンピュータ・システムにおけるパラメータとして、導入するオペレーティング・システムの種類、使用するウェブ・ブラウザの種類、ネットワーク・カードの種類、主記憶容量、ハードディスク容量、CPUの種類やコアの数などがある。
【0003】
そのようなシステムや装置のテストでは、パラメータの組み合わせを網羅するように設計することが望ましい。しかし、全てのパラメータの組み合わせをテストしようとすると、テスト・ケースの数が、パラメータの数に対して、指数的に増加するので、処理時間的に許容できなくなってしまう。そこで、なるべく少ない数で効率的なテストを行うためのテスト・ケースの集合を生成する手法が従来より提案されている。
【0004】
1つの例として、ペアワイズ(pair-wise)、すなわち対でのテストが知られている。ペアワイズ・テストでは、任意の2つのパラメータに対して、取りえる全ての値のペアを網羅するように、テスト・ケースの集合が作成される。これは、多くのバグは、少数のパラメータの組み合わせによって発現するという知見に基づいている。
【0005】
例えば、テスト項目としてn個のパラメータがあった場合、ペアワイズ・テストでは、そのn個から2個を選ぶのは、nC2という場合の数となる。そして、選んだ2個のパラメータk1、k2の各々にそれぞれm1、m2とおりの場合があるとすると、ペアの数は、
nC2×m1×m2となる。
【0006】
ところで、この分野の従来技術の特許文献として、以下のものが知られている。
【0007】
特開2003−256206号公報は、ソフトウェアシステムのプログラムモジュールごとの品質情報を設定する工程と、前記品質情報から前記プログラムモジュールの不具合検出工数を予測する工程と、前記モジュールと前記ソフトウェアシステムの仕様書から抽出される仕様項目との対応関係を表すモジュール・仕様項目対応関係情報を作成する工程22と、前記不具合検出工数と前記モジュール・仕様項目対応関係情報とから仕様項目不具合検出工数を予測する工程と、前記仕様項目不具合検出工数に基づいて、前記ソフトウェアシステムのテストに利用可能なテストリソースを配分するテスト計画を作成する工程とを備えた、テスト計画の作成を支援する方法を開示する。
【0008】
特表2007−535723号公報は、相互に関連するシステムコンポーネント間のリンケージを判断するための「自動多次元追跡可能性行列」システム、相互に関連するシステムコンポーネントの1つ又はそれよりも多くにおける変更を識別するための手段、「自動多次元追跡可能性行列」を適用するための手段、変更によって影響を受ける場合がある相互に関連するシステムコンポーネントに関連した試験シナリオの全て又はその部分集合を実行するための手段、及び実行された試験シナリオの結果を評価するための手段を含む試験ツールを開示する。
【0009】
特願2003−406478号公報は、ペアワイズ・パーティシパントを有するバスを監視する方法において、バス上の第1および第2のパーティシパントの間のトランザクション中に問題を検出すること、および、どのパーティシパントがこの問題について故障しているか、または、この問題がシステミックなバス問題を含むかどうかを決定することを開示する。
【0010】
特表2010−532894号公報は、タイムスロットサンプルにコンテンツの複数小片が割り当てられて、その割り当てられたコンテンツの効果が測定され、システム及び方法により、コンテンツの各小片をコンテンツの他の複数小片と比較して実験コンテンツ小片又は対照コンテンツ小片として識別するペアワイズによるコンテンツ相関性データが受け取られ、コンテンツ相関性データを使用して、タイムスロットサンプルに実験又は対照コンテンツの複数小片がアルゴリズム的に割り当てられ、特定のタイムスロットサンプルに割り当てられた付加的なコンテンツの複数小片は、その特定のタイムスロットサンプルに既に割り当てられていた実験コンテンツの複数小片に対して規定される、同一でない関連する実験コンテンツの複数小片を除外することを開示する。
【0011】
Cohen et al., The ATEG System: An Approach to Testing Based on Combinational Design. '97は、ペアワイズ・テストを、Greedyに生成する方法を開示する。
【0012】
以上のように、従来技術では、ペアワイズ法を含む、さまざまなテスト方法が知られており、実用レベルにある。
【0013】
ところで本願発明者らは、上記のようなテストを開始する前に、テスト・ケースの集合を既に持っているという状況に遭遇した。既存のテスト・ケースの集合は、今まで手作業などで妥当性を検証したテスト・ケースを含むものであった。そこで、本願発明者らは、既存のテスト・ケースの集合を利用しつつ、この結果も含めて妥当なサイズのテスト・ケースの集合を得ることができれば有利であると考えた。
【0014】
しかし、上記従来のテスト方法は、テスト・ケースの集合を得る際に、既存のテスト・ケースの集合を活用して、テスト・ケースを生成する技法を示唆するものではなかった。
【先行技術文献】
【特許文献】
【0015】
【特許文献1】特開2003−256206号公報
【特許文献2】特表2007−535723号公報
【特許文献3】特願2003−406478号公報
【特許文献4】特表2010−532894号公報
【非特許文献】
【0016】
【非特許文献1】Cohen et al., The ATEG System: An Approach to Testing Based on Combinational Design. '97
【発明の概要】
【発明が解決しようとする課題】
【0017】
従って、本発明の目的は、入力として与えられた既存のテスト・ケースの集合と一致するものを多く含み、且つ、例えばペアワイズのような目的の性質をみたす、なるべく小さいサイズの集合を、高速に生成する技法を提供することにある。
【課題を解決するための手段】
【0018】
出力テスト・ケースの集合が目的の性質を満たすようになるまで、順次テストケースを生成して出力テスト・ケースの集合に追加していく手法は既に知られている。そこで本発明に従うシステムは、従来手法によって生成されるテストケースに加えて、既存の入力テスト・ケースの集合に含まれるテストケースを候補として利用することにより、既存の入力テスト・ケースの集合と一致するものをなるべく多く含み、かつサイズの小さな出力テスト・ケースの集合を生成する。
【0019】
本発明は、入力テスト・ケースの集合から利用する候補は、以下のようにして決定する。
1.いくつかのパラメータに対して、テストケース候補が持っているべき値を決定する。
2.入力テスト・ケースの集合に含まれるテストケースのうち、上記で決定した値を持っているものを候補とする。
【0020】
従来手法によって生成されたひとつ又は複数のテストケース候補と、入力テスト・ケースの集合から選択されたひとつまたは複数のテスト・ケース候補のうち、最もスコアが高いものを出力テスト・ケースの集合に追加する。この処理を、出力テスト・ケースの集合が目的の性質を満たすまで繰り返す。ここで、テスト・ケースのスコアとは例えば、ペアワイズ法を想定すると、テスト・ケースに含まれるパラメータと変数の組み合わせからなるペアのうち、まだ出現していないペアの数である。これを従来手法におけるスコアと呼ぶことにする。
【0021】
本発明に従うシステムによれば、スコアは、以下のように計算される。
− 従来手法によって生成されたテストケース候補に対しては、従来手法におけるスコアを利用する。
− 入力テスト・ケースの集合から選択されたテストケース候補に対しては、従来手法におけるスコアに1以上の定数をかけたものを利用する。
【0022】
このとき、定数を大きくすればするほど、既存の入力テスト・ケースの集合と一致するテストケースをより多く含むようになるが、出力テスト・ケースの集合のサイズがより大きくなる可能性があるので、定数の値は妥当に選ぶ必要がある。
【発明の効果】
【0023】
この発明によれば、既存の入力テスト・ケースの集合のデータを含めることによって、既存の入力テスト・ケースの集合となるべく整合性を保ちつつ、可能な限り小さいサイズのテスト・ケースの集合を高速に生成することが可能となる。
【図面の簡単な説明】
【0024】
【図1】本発明を実施するための一例のハードウェア構成のブロック図である。
【図2】従来の典型的なテスト・ケース生成処理のフローチャートを示す図である。
【図3】従来の技法において、候補を生成して追加する処理のフローチャートを示す図である。
【図4】従来の技法において、候補のうちスコアが最大のものを選ぶ処理のフローチャートを示す図である。
【図5】本発明を実施するための機能構成のブロック図である。
【図6】本発明の処理全体のフローチャートを示す図である。
【図7】本発明において、候補を生成して追加する処理のフローチャートを示す図である。
【図8】本発明において、テスト・ケースのスコアを取得する処理のフローチャートを示す図である。
【発明を実施するための形態】
【0025】
以下、図面に基づき、この発明の実施例を説明する。特に断わらない限り、同一の参照番号は、図面を通して、同一の対象を指すものとする。尚、以下で説明するのは、本発明の一実施形態であり、この発明を、この実施例で説明する内容に限定する意図はないことを理解されたい。
【0026】
図1を参照すると、本発明の一実施例に係るシステム構成及び処理を実現するためのコンピュータ・ハードウェアのブロック図が示されている。図1において、システム・パス102には、CPU104と、主記憶(RAM)106と、ハードディスク・ドライブ(HDD)108と、キーボード110と、マウス112と、ディスプレイ114が接続されている。CPU104は、好適には、32ビットまたは64ビットのアーキテクチャに基づくものであり、例えば、インテル社のPentium(商標) 4、Core(商標)2 Duo、Xeon(商標)、AMD社のAthlon(商標)などを使用することができる。主記憶106は、好適には、4GB以上の容量をもつものである。ハードディスク・ドライブ108は、大量のデータを格納できるように、例えば、500GB以上の容量をもつものであることが望ましい。
【0027】
ハードディスク・ドライブ108には、個々に図示しないが、オペレーティング・システムが、予め格納されている。オペレーティング・システムは、Linux(商標)、マイクロソフト社のWindows XP(商標)、Windows(商標)7、アップルコンピュータのMac OS(商標)などの、CPU104に適合する任意のものでよい。
【0028】
ハードディスク・ドライブ108はさらに、既存のテスト結果の集合、テストのため組み合わせるパラメータの集合、及び本発明の処理のための処理ルーチンなどが格納されている。これらのパラメータや処理ルーチンの詳細は、図5を参照して後で説明する。
【0029】
キーボード110及びマウス112は、オペレーティング・システムまたは、ハードディスク・ドライブ108から主記憶106にロードされ、ディスプレイ114に表示されたプログラム(図示しない)を起動したり、文字を打ち込んだりするために使用される。
【0030】
ディスプレイ114は、好適には液晶ディスプレイであり、例えば、XGA(1024×768の解像度)、またはUXGA(1600×1200の解像度)などの任意の解像度のものを使用することができる。ディスプレイ114は、図示しないが、本発明の処理を開始するための操作ウインドウや、テスト結果等を表示するために使用される。
【0031】
そこで、本発明の処理について説明する前に、本発明の処理の理解を助けるために、従来より、ペアワイズのテスト・ケースを自動的に生成するための方法として知られているGreedyなアルゴリズムについて図2乃至図4のフローチャートを参照して説明する。その後、本発明の処理が、このGreedyなアルゴリズムの改良として説明される。
【0032】
図2は、従来のGreedyなペアワイズ・テスト・アルゴリズムのメインの処理のフローチャートである。図2のステップ202では、outという集合変数に、空集合がセットされる。
【0033】
ステップ204では、outが、テスト・パラメータのペアワイズのすべてのペアを網羅したかどうかが判断される。
【0034】
そうでないなら、ステップ206に進んで、そこで、Candidatesという集合変数に、空集合がセットされる。
【0035】
次のステップ208では、Candidatesの要素の数がNより小さいかどうかが判断され、そうでないなら、ステップ210で候補が1つ生成され、Candidatesに追加される。ステップ210の処理は、図3のフローチャートを参照して、後でより詳細に説明する。
【0036】
ステップ208とステップ210のループの繰り返しで、Candidatesの要素の数がNに達すると、処理はステップ208からステップ212に進み、そこで、Candidatesのうちスコアが最も高いものが選ばれる。ここでスコアとは、テスト・ケースのスコアであり、例えば、そのテスト・ケースによってカバーされるペアのうち、新しくカバーされるペアの数、すなわち、今までのテスト・ケースでカバーされていないペアの数である。ステップ212の処理は、図4のフローチャートを参照して、後でより詳細に説明する。
【0037】
ステップ214では、ステップ212で選ばれた候補がoutに追加される。そうして処理はステップ204に戻る。
【0038】
ステップ204からステップ214を回るうちに、outには候補が蓄積される。ステップ204ですべてのペアが網羅されたと判断されると、処理は終了する。こうしてoutに蓄積された候補が利用される。
【0039】
次に、図3のフローチャートを参照して、ステップ210の、候補を生成してCandidatesに追加する処理を説明する。
【0040】
図3において、ステップ302では、paramsという集合変数に、空集合がセットされる。次のステップ304では、パラメータの数が、全パラメータ数よりも小さいかどうか判断される。もしそうなら、ステップ306に進み、ヒューリステックと乱数を利用して、パラメータとその値が1つ決定される。次のステップ308では、決定したパラメータとその値がparamsに追加され、ステップ304の判断に戻る。
【0041】
ステップ304からステップ308までが回って、ステップ304での判断が否定的になると、パラメータがすべて埋まったことになるので、ステップ310に進んでそこで、設定したパラメータ、すなわちparamsの組み合わせでテスト・ケースが生成され、ステップ312で、生成したテスト・ケースがCandidatesに追加されて、処理は戻る。
【0042】
次に、図4のフローチャートを参照して、ステップ212の、Candidatesに含まれるテスト・ケースのうちスコアが最も高いものを選ぶ処理について説明する。
【0043】
ステップ402では、scoreという変数に、十分に大きい絶対値の負の値として-∞がセットされる。
【0044】
次のステップ404からステップ412までは、Candidatesに含まれるテスト・ケースである要素cすべてに亘って順次行われる処理である。
【0045】
ステップ406では、cのスコアがscoreより大きいかどうかの判断が行われる。ここでスコアとは、そのテスト・ケースに基づき生成されるペアによって新規にカバーされるペアの数である。
【0046】
そうして、cのスコアがscoreより大きいなら、ステップ408で、cのスコアがscoreにセットされる。ステップ410では、cがretに格納される。
【0047】
もし、cのスコアがscoreより大きくないなら、ステップ408とステップ410は、単にスキップされる。こうして、Candidatesの要素cすべてに亘って、ステップ404からステップ412までが完了すると、retを返して、図4のフローチャートの処理は終わる。
【0048】
以上の説明を前提として、本発明の説明を行う。先ず、図5の機能構成のブロック図を参照して、本発明を実行するための処理ルーチン等について説明する。これらの処理ルーチンはC、C++、Java(R)などの既存のプログラム言語で予め作成されて、実行可能な形式でハードディスク・ドライブ108に保存され、オペレーティング・システムの動作で主記憶106にロードされて実行される。
【0049】
図5において、メイン・ルーチン502は、本発明の全体の動作を統合するためのプログラムであり、図示しないが、ディスプレイ114に操作ウインドウを表示したり、ユーザの操作を受け付けて処理を開始したりする機能を有する。
【0050】
入力ルーチン504は、ハードディスク・ドライブ108に保存されている、テストのパラメータ/候補値を含むファイル506や、既存の入力テスト・ケースの集合を含むファイル508から、メイン・ルーチン502からの指示に従い、適宜データを読み取る機能を有する。
【0051】
ここで、テストのパラメータ/候補値とは、例えば、以下のようなものである。実際のケースは、もっと多くのパラメータを含むが、便宜上、簡単なケースで説明する。
OS = {Windows XP, 2003Server, AIX, Linux}
Browser = {FireFox, IE, Opera}
Level = {L1, L2, L3, L4}
Restriction = {true, false}
【0052】
また、既存の入力テスト・ケースの集合の要素、すなわちテスト・ケースとは、例えば、次のように、各パラメータに、候補値としての変数値を1つずつ埋めたものである。
テスト・ケース1
OS => Windows XP
Browser => IE
Level => L1
Restriction => true
------------------------------
テスト・ケース2
OS => AIX
Browser => FireFox
Level => L1
Restriction => false
------------------------------
テスト・ケース3
OS => Linux
Browser => IE
Level => L3
Restriction => false
------------------------------
... ...
【0053】
候補追加ルーチン510は、従来技術として説明した図3のフローチャートに対応する処理を実行するが、その一部が、本発明に従い変更されている。候補追加ルーチン510については、図7のフローチャートを参照して、後で説明する。
【0054】
候補選択ルーチン512は、従来技術として説明した図4のフローチャートに対応する処理を実行するが、Candidatesの要素cのスコアを取得する処理が、本発明に従い変更されている。
【0055】
スコア取得ルーチン514は、候補選択ルーチン512によって呼び出される、スコアを取得する処理を実行するものであり、図8のフローチャートを参照して、後で説明する。
【0056】
出力ルーチン516は、結果として得られたテスト・ケースの集合を、好適にはファイルとして、ハードディスク・ドライブ108に書き込む。
【0057】
次に、メイン・ルーチン502の処理を、図6のフローチャートを参照して説明する。図6のフローチャートの処理は、従来技術の図2のフローチャートの処理の一部を変更したものであり、改めて図6のフローチャートに基づき説明する。なお、図6において、太線で囲まれているステップ610とステップ612は、特に従来技術の図2のフローチャートとの差異を示すものである。
【0058】
図6において、メイン・ルーチン502は、ステップ602で、outという集合変数に、空集合をセットする。
【0059】
ステップ604では、メイン・ルーチン502は、outが、テスト・パラメータのペアワイズのすべてのペアを網羅したかどうかを判断する。ここでの判定は例えば、予めすべてのペアからなる集合変数をコンピュータ・システム的に用意しておいて、ステップ614で選ばれたテスト・ケースによって生成されるペアに該当する要素を、その集合から除去していくことにより達成される。このような処理によれば、ステップ604の判断は、その集合が空集合になったことに基づき、ペアワイズのすべてのペアを網羅したと判断するように行われる。
【0060】
そうでないなら、メイン・ルーチン502は、ステップ606に進んで、そこで、Candidatesという集合変数に、空集合をセットする。
【0061】
次のステップ608では、メイン・ルーチン502は、Candidatesの要素の数がNより小さいかどうかを判断し、そうでないなら、ステップ610で候補を1つ生成し、Candidatesに追加する。ステップ610の処理は、候補追加ルーチン510を呼び出すことによって実行される。候補追加ルーチン510は、図7のフローチャートを参照して、後でより詳細に説明する。ステップ610は、図2のステップ210に対応するが、ステップ212に対するステップ612の違いは、既存のテスト・ケースの集合508に含まれているテスト・ケースが考慮され、条件に応じて取り込まれることである。
【0062】
ステップ608とステップ610のループの繰り返しで、Candidatesの要素の数がNに達すると、処理はステップ608からステップ612に進み、そこで、Candidatesのうちスコアが最も高いものが選ばれる。ここでスコアとは、そのテスト・ケースに基づき生成されるペアによって新規にカバーされるペアの数である。ステップ612の処理は、候補選択ルーチン512を呼び出すことによって行われる。候補選択ルーチン512の処理内容は、図4のフローチャートで説明したのと実質的に同じであるが、図4のフローチャートのステップ406における、Candidatesの要素であるテスト・ケースcのスコアを取得する処理が異なっている。
【0063】
既に述べたように、テスト・ケースのスコアとは、本発明では、スコアを取得する処理は、図8のフローチャートに示される、スコア取得ルーチン514により実行される。すなわち、図8において、スコア取得ルーチン514は、ステップ802で、その値を、テスト・ケースに基づき生成されるペアによって新規にカバーされるペアの数として取得し、変数scoreに格納する。そして、スコア取得ルーチン514は、次のステップ804で、テスト・ケースが、既存のテスト・ケースの集合508から取得されたものかどうかを判断し、もしそうなら、scoreに、a ≧ 1である定数aを掛けて、scoreの値を増加させる。テスト・ケースが、既存のテスト・ケースの集合508から取得されたものでないなら、scoreの値はそのままである。このように、テスト・ケースが既存のテスト・ケースの集合508から取得されたものである場合にscoreの値を増加させることは、図4のフローチャートで示される、最大スコアのテスト・ケースを選ぶ処理で、テスト・ケースが既存のテスト・ケースの集合508から取得されたテスト・ケースを勝ち残りやすくする。
【0064】
ステップ614では、メイン・ルーチン502は、ステップ612で選ばれた候補をoutに追加する。メイン・ルーチン502はさらに、outに追加したテスト・ケースから生成されるペアを、ステップ604での判断に使用される集合変数から取り去る。そうして処理はステップ604に戻る。尚ここで、outに追加したテスト・ケースが次のようなものであったとする。
OS => AIX
Browser => FireFox
Level => L1
Restriction => false
すると、これに基づき集合変数から要素を取り去るために使用されるペアは、以下の6通りである。
- OS=AIX, Browser=FireFox
- OS=AIX, Level=L1
- OS=AIX, Restriction=false
- Browser=FireFox, Level=L1
- Browser=FireFox, Restriction=false
- Level=L1, Restriction=false
【0065】
ステップ604からステップ614を回るうちに、outには候補が蓄積される。ステップ604でまだ選ばれていないペアがもうないと、ステップ604での判断が否定的になって、処理は終了する。こうして、最終的にoutに蓄積された候補が利用される。
【0066】
次に、図7のフローチャートを参照して、図6のステップ610に対応する、候補追加ルーチン510の処理について説明する。
【0067】
候補追加ルーチン510は、図7のステップ702で、paramsという集合変数を空集合にセットし、ステップ704で、S'という集合変数を空集合にセットする。
【0068】
ステップ706では、候補追加ルーチン510は、パラメータの数 < 全パラメータの数がとうかを判断し、もしそうなら、ステップ708に進み、ヒューリステックと乱数を利用して、パラメータとその値を1つ決定する。次のステップ710では、候補追加ルーチン510は、決定したパラメータとその値をparamsに追加する。すなわち、ここでparamsに追加されるのは、OS=Windows XPのようなデータである。
【0069】
ここでヒューリステックとは例えば、生成するテストケースが目的の性質を満たしやすくする(スコアをより大きくする)ためのものであり、例えばペアワイズの場合は以下のようなものが考えられる。
- その時点で生成されたテストケース(out)でまだカバーされていないペアの中にもっとも多く出現するものを選ぶ。
- 選択したパラメータ・値を、既に選択されているパラメータ・値(params)と組み合わせたときにできるペアのうち、outでまだカバーされていないものの数がもっとも多いものを選ぶ。
【0070】
例えば、まだカバーされていないペアとして以下のようなものがあった場合、
・ OS=Windows XP, Browser=Firefox
・ OS=Windows XP, Network=modem
・ OS=Windows XP, Level=L1
・ OS=AIX, Level=L2
・ Browser=IE, Level=L2
params が空なら、一つ目のヒューリスティクスに従い OS=WindowsXP を選択する(先頭の3つのペアに含まれるため)。
params が{OS=AIX, Browser=IE} であった場合には、二つ目のヒューリスティクスに従い Level=L2を選択する(paramsと組み合わせて、最後の2つのペアを新たにカバーするため)。変数決定には、ヒューリスティクス以外に、乱数も適宜使用される。
【0071】
次のステップ712で、候補追加ルーチン510は、Sという集合変数に、既存のテスト・ケースの集合のうち、paramsにセットされているパラメータと変数を含むものをセットする。paramsにセットされているパラメータがまだ全てのパラメータをカバーしていない場合は、ここでは、パラメータにセットされている変数に部分一致する既存のテスト・ケースの集合のテスト・ケースが選ばれる。
【0072】
例えば、簡単のためパラメータがOS、Browser、Level、Restrictionの4つだとして、
paramsが、{OS = Windows XP}と{Browser = Opera}を含むとき、ここまでのパラメータと変数の組み合わせに一致するパラメータと変数の組み合わせをもつ既存のテスト・ケースの集合のテスト・ケースが選ばれる。
【0073】
そうして、Sという集合変数に既存のテスト・ケースの集合からテスト・ケースがセットされると、候補追加ルーチン510は、ステップ714で、Sが空で且つ、S'が空でないかどうかを判断する。ステップ706からステップ718までの最初のループでは、ステップ704でS'に空集合がセットされていることにより、ステップ714での判断は必ず否定的になる。ステップ718でS' = Sとセットされることにより、ステップ706からステップ718までの2回目以降のループでは、Sが空で且つ、S'が空でない場合がありえ、その場合はステップ714の判断が肯定的になるので、処理はステップ716に進む。このとき、S'には、既存のテスト・ケースの集合のうち、paramsにセットされているパラメータと変数を含むものがなくなった場合の直前の、テスト・ケースの集合から選択されたテスト・ケースが格納されている。
【0074】
すると、候補追加ルーチン510は、ステップ716で、S'のうち、スコアが最も高いテスト・ケースをCandidatesに追加する。このことは、図4のフローチャートに処理において、CandidatesをS'に読み替えて実行した処理に対応する。
【0075】
ここで、テスト・ケースのスコアについて説明を補足する。例えば、前に述べたテスト・ケース1をここで再掲する。
OS => Windows XP
Browser => IE
Level => L1
Restriction => true
【0076】
これから組み合わせによって得られるペアは、下記の6とおりである。
- OS=Windows XP, Browser=IE
- OS=Windows XP, Level=L1
- OS=WindowsXP, Restriction=true
- Browser=IE, Level=L1
- Browser=IE, Restriction=true
- Level=L1, Restriction=true
すると、こうして得られたペアは、既に現れてたものと、まだ現れていないものに分かれる。このとき、まだ現れていないペアの個数をもって、スコアと呼ぶことにする。ペアが既に現れたかどうかの判定は、例えば、ステップ604に関連して言及した、ペアの集合を使って行うことができる。すなわち、あるペアがこの集合にまだ含まれていれば、そのペアはまだ現れておらず、一方、あるペアがこの集合に見つからなければ、そのペアは既に現れて、この集合から取り去れたということを意味する。
【0077】
こうして、ステップ718でS' = Sとセットした後、ステップ706の判断に戻って、候補追加ルーチン510が、パラメータの数が、全パラメータの数に達したと判断すると、候補追加ルーチン510は、ステップ720で、paramsに従いテスト・ケースを生成し、ステップ722で、生成したテスト・ケースをCandidatesに追加し、図6のフローチャートのステップ612に戻る。
【0078】
図7のフローチャートに示す候補追加ルーチン510の処理を要約すると、ステップ716で、所定の条件を満たす、既存のテスト・ケースの集合からテスト・ケースがCandidatesに追加され、また、ステップ722で、paramsのパラメータと値に従い生成されたテスト・ケースがCandidatesに追加され、すなわち、ステップ612に戻ったときは、Candidatesは、既存のテスト・ケースの集合から追加されたテスト・ケースと、paramsのパラメータと値に従い生成されたテスト・ケースの両方を含むことになる。
【0079】
そのCandidatesの集合要素としてのテスト・ケースは、ステップ612で、スコアの高さで選別されるが、その際、図8のフローチャートから見て取れるように、既存のテスト・ケースの集合から追加されたテスト・ケースの方がスコアが高くなるように操作されるので、そのような操作がない場合よりも、既存のテスト・ケースの集合から追加されたテスト・ケースが優先的に、出力ルーチン516によって出力されることになる。
【0080】
以上、テスト・ケースのパラメータの組み合わせを与える方法として、上記実施例では、ペアワイズ方法を用いるようにしたが、本発明はこれには限定されず、従来から知られている任意の組み合わせテスト技法を使用することができる。例えば、パラメータと変数のペアではなく、パラメータと変数の三つ組みを用いてもよい。
【0081】
さらに本発明は、コンピュータの特定のハードウェア、ソフトウェアに限定されず、また、スタンドアロンやネットワーク環境のどちらであるかにもかかわらず、任意のプラットフォーム上で実施可能であることをこの分野の当業者なら理解するであろう。
【符号の説明】
【0082】
102 システム・パス
104 CPU
106 主記憶
108 ハードディスク・ドライブ
110 キーボード
112 マウス
114 ディスプレイ
502 メイン・ルーチン
504 入力ルーチン
506 パラメータ/候補値のファイル
508 既存のテスト・ケースの集合
510 候補追加ルーチン
512 候補選択ルーチン
514 スコア取得ルーチン
516 出力ルーチン

【特許請求の範囲】
【請求項1】
複数のパラメータと、そのパラメータに入れられる1つ以上の変数値をもち、該パラメータに入れられる変数値の組み合わせに応じて、異なる性能指標を示すシステムのテスト・ケースを、コンピュータの処理により生成する方法であって、
テスト済のテスト・ケースを含むテスト・ケースの集合を、前記コンピュータが読み出し可能に、記憶手段に保持するステップと、
下記のステップ(a)乃至(c)を含むループを、前記パラメータと前記変数値の組み合わせが全てのパラメータに対して揃うまで実行するステップと、
(a) 前記パラメータと前記変数値の組み合わせを、変数値が格納されたパラメータを次第に増やすように生成するステップ
(b) 前記発生された範囲の前記パラメータと前記変数値の組み合わせに部分的に一致するパラメータと変数値の組み合わせをもつテスト・ケースを前記テスト済のテスト・ケースを含むテスト・ケースの集合において見出して集合変数に格納するステップ
(c) 前記集合変数が空集合になったことに応答して、ループの一回前の前記の集合変数に含まれるテスト・ケースを候補集合に追加するステップ、
前記パラメータと前記変数値の組み合わせが全てのパラメータに対して揃ったことに応答して、該揃った前記パラメータと前記変数値の組み合わせにより生成したテスト・ケースを前記候補集合に追加するステップと、
前記パラメータと前記変数値の異なる複数の組み合わせに対して前記候補集合に前記テスト・ケースが蓄積された段階で、前記システムの性能指標値であるスコアの高さに従い、前記候補集合から前記テスト・ケースを選んで出力するステップであって、前記テスト済のテスト・ケースを含むテスト・ケースの集合に属する前記テスト・ケースの前記スコアは割り増しして計算される、ステップとを有する、
テスト・ケース生成方法。
【請求項2】
前記パラメータと前記変数値の異なる複数の組み合わせは、ペアワイズ法で生成される、請求項1に記載の方法。
【請求項3】
前記テスト・ケースの前記スコアは、前記テスト・ケースに基づき生成されるペアのうち、まだ今まで出現していないペアの数によって決定される、請求項2に記載の方法。
【請求項4】
前記スコアの割り増しは、前記スコアに、1以上の数を掛けることよって行われる、請求項1に記載の方法。
【請求項5】
複数のパラメータと、そのパラメータに入れられる1つ以上の変数値をもち、該パラメータに入れられる変数値の組み合わせに応じて、異なる性能指標を示すシステムのテスト・ケースを、コンピュータの処理により生成するプログラムであって、
前記コンピュータに、
テスト済のテスト・ケースを含むテスト・ケースの集合を、前記コンピュータが読み出し可能に、記憶手段に保持するステップと、
下記のステップ(a)乃至(c)を含むループを、前記パラメータと前記変数値の組み合わせが全てのパラメータに対して揃うまで実行するステップと、
(a) 前記パラメータと前記変数値の組み合わせを、変数値が格納されたパラメータを次第に増やすように生成するステップ
(b) 前記発生された範囲の前記パラメータと前記変数値の組み合わせに部分的に一致するパラメータと変数値の組み合わせをもつテスト・ケースを前記テスト済のテスト・ケースを含むテスト・ケースの集合において見出して集合変数に格納するステップ
(c) 前記集合変数が空集合になったことに応答して、ループの一回前の前記の集合変数に含まれるテスト・ケースを候補集合に追加するステップ、
前記パラメータと前記変数値の組み合わせが全てのパラメータに対して揃ったことに応答して、該揃った前記パラメータと前記変数値の組み合わせにより生成したテスト・ケースを前記候補集合に追加するステップと、
前記パラメータと前記変数値の異なる複数の組み合わせに対して前記候補集合に前記テスト・ケースが蓄積された段階で、前記システムの性能指標値であるスコアの高さに従い、前記候補集合から前記テスト・ケースを選んで出力するステップであって、前記テスト済のテスト・ケースを含むテスト・ケースの集合に属する前記テスト・ケースの前記スコアは割り増しして計算される、ステップを実行させる、
テスト・ケース生成プログラム。
【請求項6】
前記パラメータと前記変数値の異なる複数の組み合わせは、ペアワイズ法で生成される、請求項5に記載のプログラム。
【請求項7】
前記テスト・ケースの前記スコアは、前記テスト・ケースに基づき生成されるペアのうち、まだ今まで出現していないペアの数によって決定される、請求項6に記載のプログラム。
【請求項8】
前記スコアの割り増しは、前記スコアに、1以上の数を掛けることよって行われる、請求項5に記載のプログラム。
【請求項9】
複数のパラメータと、そのパラメータに入れられる1つ以上の変数値をもち、該パラメータに入れられる変数値の組み合わせに応じて、異なる性能指標を示すシステムのテスト・ケースを、コンピュータの処理により生成するシステムであって、
テスト済のテスト・ケースを含むテスト・ケースの集合を、前記コンピュータが読み出し可能に、記憶手段に保持する手段と、
下記のステップ(a)乃至(c)を含むループを、前記パラメータと前記変数値の組み合わせが全てのパラメータに対して揃うまで実行する手段と、
(a) 前記パラメータと前記変数値の組み合わせを、変数値が格納されたパラメータを次第に増やすように生成するステップ
(b) 前記発生された範囲の前記パラメータと前記変数値の組み合わせに部分的に一致するパラメータと変数値の組み合わせをもつテスト・ケースを前記テスト済のテスト・ケースを含むテスト・ケースの集合において見出して集合変数に格納するステップ
(c) 前記集合変数が空集合になったことに応答して、ループの一回前の前記の集合変数に含まれるテスト・ケースを候補集合に追加するステップ、
前記パラメータと前記変数値の組み合わせが全てのパラメータに対して揃ったことに応答して、該揃った前記パラメータと前記変数値の組み合わせにより生成したテスト・ケースを前記候補集合に追加する手段と、
前記パラメータと前記変数値の異なる複数の組み合わせに対して前記候補集合に前記テスト・ケースが蓄積された段階で、前記システムの性能指標値であるスコアの高さに従い、前記候補集合から前記テスト・ケースを選んで出力するステップであって、前記テスト済のテスト・ケースを含むテスト・ケースの集合に属する前記テスト・ケースの前記スコアは割り増しして計算される、手段を有する、
テスト・ケース生成システム。
【請求項10】
前記パラメータと前記変数値の異なる複数の組み合わせは、ペアワイズ法で生成される、請求項9に記載のシステム。
【請求項11】
前記テスト・ケースの前記スコアは、前記テスト・ケースに基づき生成されるペアのうち、まだ今まで出現していないペアの数によって決定される、請求項10に記載のシステム。
【請求項12】
前記スコアの割り増しは、前記スコアに、1以上の数を掛けることよって行われる、請求項9に記載のシステム。
【請求項13】
複数のパラメータと、そのパラメータに入れられる1つ以上の変数値をもち、該パラメータに入れられる変数値の組み合わせに応じて、異なる性能指標を示すシステムのテスト・ケースを、コンピュータの処理により生成する方法であって、
テスト済のテスト・ケースを含むテスト・ケースの集合を、前記コンピュータが読み出し可能に、記憶手段に保持するステップと、
前記パラメータと前記変数値を組み合わせを生成するステップと、
前記パラメータと前記変数値を組み合わせをもつテスト・ケースを前記テスト済のテスト・ケースを含むテスト・ケースの集合において見出して集合変数に格納するステップと、
前記パラメータと前記変数値の組み合わせにより生成したテスト・ケースを前記候補集合に追加するステップと、
前記パラメータと前記変数値の異なる複数の組み合わせに対して前記候補集合に前記テスト・ケースが蓄積された段階で、前記システムの性能指標値であるスコアの高さに従い、前記候補集合から前記テスト・ケースを選んで出力するステップであって、前記テスト済のテスト・ケースを含むテスト・ケースの集合に属する前記テスト・ケースの前記スコアは割り増しして計算される、ステップとを有する、
テスト・ケース生成方法。
【請求項14】
前記パラメータと前記変数値の異なる複数の組み合わせは、ペアワイズ法で生成される、請求項13に記載の方法。
【請求項15】
前記テスト・ケースの前記スコアは、前記テスト・ケースに基づき生成されるペアのうち、まだ今まで出現していないペアの数によって決定される、請求項14に記載の方法。
【請求項16】
前記スコアの割り増しは、前記スコアに、1以上の数を掛けることよって行われる、請求項13記載の方法。
【請求項17】
複数のパラメータと、そのパラメータに入れられる1つ以上の変数値をもち、該パラメータに入れられる変数値の組み合わせに応じて、異なる性能指標を示すシステムのテスト・ケースを、コンピュータの処理により生成するプログラムであって、
前記コンピュータに、
テスト済のテスト・ケースを含むテスト・ケースの集合を、前記コンピュータが読み出し可能に、記憶手段に保持するステップと、
前記パラメータと前記変数値を組み合わせを生成するステップと、
前記パラメータと前記変数値を組み合わせをもつテスト・ケースを前記テスト済のテスト・ケースを含むテスト・ケースの集合において見出して集合変数に格納するステップと、
前記パラメータと前記変数値の組み合わせにより生成したテスト・ケースを前記候補集合に追加するステップと、
前記パラメータと前記変数値の異なる複数の組み合わせに対して前記候補集合に前記テスト・ケースが蓄積された段階で、前記システムの性能指標値であるスコアの高さに従い、前記候補集合から前記テスト・ケースを選んで出力するステップであって、前記テスト済のテスト・ケースを含むテスト・ケースの集合に属する前記テスト・ケースの前記スコアは割り増しして計算される、ステップを実行させる、
テスト・ケース生成プログラム。
【請求項18】
前記パラメータと前記変数値の異なる複数の組み合わせは、ペアワイズ法で生成される、請求項17に記載のプログラム。
【請求項19】
前記テスト・ケースの前記スコアは、前記テスト・ケースに基づき生成されるペアのうち、まだ今まで出現していないペアの数によって決定される、請求項18に記載のプログラム。
【請求項20】
前記スコアの割り増しは、前記スコアに、1以上の数を掛けることよって行われる、請求項17記載のプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−185642(P2012−185642A)
【公開日】平成24年9月27日(2012.9.27)
【国際特許分類】
【出願番号】特願2011−47829(P2011−47829)
【出願日】平成23年3月4日(2011.3.4)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】