JP5940968B2 - テストケース生成システムおよび方法 - Google Patents

テストケース生成システムおよび方法 Download PDF

Info

Publication number
JP5940968B2
JP5940968B2 JP2012264975A JP2012264975A JP5940968B2 JP 5940968 B2 JP5940968 B2 JP 5940968B2 JP 2012264975 A JP2012264975 A JP 2012264975A JP 2012264975 A JP2012264975 A JP 2012264975A JP 5940968 B2 JP5940968 B2 JP 5940968B2
Authority
JP
Japan
Prior art keywords
test case
factor
block
weight
factors
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
JP2012264975A
Other languages
English (en)
Other versions
JP2014109966A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2012264975A priority Critical patent/JP5940968B2/ja
Publication of JP2014109966A publication Critical patent/JP2014109966A/ja
Application granted granted Critical
Publication of JP5940968B2 publication Critical patent/JP5940968B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、ソフトウェアの不具合を発見するためのテストケース集合を生成するシステムおよび方法に関する。
近年、通信機器、医療機器、デジタル家電などいろいろな機器の機能をソフトウェアで実現するようになっている。ソフトウェア開発では人間による誤りが混入することがあるため、出荷するまでに、そのソフトウェアが正しく動作することを確認するテストが必要である。
テストでは許容される入力(テストケース)に対してそのソフトウェアが正しく動作することを確認する必要があり、このような入力の値の組合せは膨大になるため、できるだけ少ない工数でできるだけ多くの不具合の可能性を発見する方法が研究されてきた。
このような手法としては特許文献1で開示されるテストケース生成方法や、さらに限られた工数のなかでテスト内容の優先度を反映したテストケースを生成する非特許文献1で開示される方法がある。
これら2つの文献はどちらもペアワイズ網羅のテストケース生成の考え方によっているので、まず、この考え方を簡単に説明する。図17は、テストされるソフトウェアシステムを表した図である。ソフトウェアシステムは一般に複数の因子、因子1〜因子nの入力をとり、何らかの処理を実行し、実行結果を出力する。本来、これらの因子が取り得る値の組合せのすべてをテストすることが必要であるが、経験則から、多くの不具合は少ない因子の組合せで発生することがわかっている。図18は横軸に因子の組合せ数、縦軸に発見される不具合の累計の比率をとった、ペアワイズ網羅のテストケースの考え方を表すグラフである。図18は特定のシステムについてのものではなく、一般的にこの性質を分かりやすく表現するためのイメージ図である。曲線の立ち上がりはソフトウェアシステムに依存する。この不具合に関する経験則を活用する方法としてペアワイズ網羅のテストケース生成の考え方が利用されている。図19は因子1〜nを持つテストケースの集合を表している。この表で行は、各因子にそれが取り得る値のどれかを割り当てたものになっている。このテストケースの表で任意の因子iと因子jの2つの列を取り出したとき、これらの二つの因子の値のすべての組合せがテストケース表の中にあれば、このテストケースの表はペアワイズ網羅であるという。このようなペアワイズ網羅のテストケース表は、全部の因子の値の組合せに対してはるかに少ない行数で実現可能なので、効率的に不具合を発見するテストケースとして利用されている。また、因子の値の組合せを2つでなく、一般にm個にしたものはmワイズ網羅のテストケース集合と呼ばれる。
次にこれらの知識のもとに、2つの先行技術文献のそれぞれを説明する。
特許文献1では、従来、網羅的なテストケース集合を減らす方法として直交表によるものがあったが、一般に直交表によるテストケース集合の生成は難しいため、これを解決するためにすべてのペアを含んだテストケース集合の容易な生成方法を述べている。この手法ではテストしたいソフトウェアシステムに対して
(1)システムに影響を与える因子の集合(一般には入力)
(2)各因子に対してその因子が取りえる値の集合
(3)因子間相互関係で調べたい度合い
・因子のペアは必ず網羅する
・3組の因子の組合せは網羅する
などが与えられ、テストケースの集合を上記の因子間の値の組合せを増やすように拡張していき、要求される値の組合せを含むできるだけ少数のテストケースからなるテストケース集合を作成する。
先にペアワイズ網羅のテストケースについて述べたように、一般に、このようにして作成したテストケース集合は少数のテストケースで多くの因子間の値の組合せを網羅するため、効率のよいテストが可能である。しかし、因子が多い場合や、各因子がとりえる値が多い場合は、この方法でもテストケース集合が大きすぎて、ソフトウェアシステムのテスト費用(工数)を圧迫することがある。
非特許文献1では、このようにテストの費用(工数)が限られている場合に、限られた工数でできるだけ重要なテストケースから実施するようにテストケースに優先度をつける。この文献では、利用者は、テストするソフトウェアシステムの因子間の組合せに優先度を表す数値(重み)をつける。テストケースはそのテストケースの重みの大きい順にテストを進めていけば、先頭の方で重要な因子間の組合せのテストが実施される。
これら二つの方法により、比較的少数のテストケースで因子間の値の組合せを網羅し、また、工数が限られているとき、重要な因子間の組合せのテストケースから順にテストすることができる。
US5,542,043号公報
Renee C. Bryce and Charles J. Colbourn:"Test Prioritization for Pairwise Interaction Coverage", Proceeding A−MOST ’05 Proceedings of the 1st international workshop on Advances in model−based testing, 2005
通常、ソフトウェアシステムのテストの計画する人は、テスト対象のソフトウェアシステムについて知識がある場合がある。例えば、そのソフトウェアシステムがどんなサブシステムからなり、各因子はどのサブシステムに強く影響するかなどである。少数のテストケースで効果的なテストを行うために、この知識をテストケースの生成に反映する必要がある。
開示するテストケース生成システムは、計算機上で動作し、グループ分け・重み計算部とテストケース生成部を有し、対象システムへの動作条件項目や入力データ項目である因子の集合およびに因子が取り得る値の集合から、対象システムの動作をテストするためのテストケース集合を生成する。グループ分け・重み計算部は、因子の集合と因子が取り得る値の集合、及び、ブロックの集合と、ブロックの集合に含まれる、ブロックから他のブロック又は因子からブロックへの結線からなる、対象システムのモデルを入力し、結線により構成されるパスを同じくする因子を一つのグループとするようにグループ分けしてグループ定義とし、グループ分けしたグループ同士の重みを計算して、グループの因子から結線されたブロックの重みとした因子グループ間重み表を求める。テストケース生成部は、因子のグループ定義と因子グループ間重み表から、テストケースに含まれる因子の集合に含まれる因子間の値の組合せに対して、因子グループ間重み表の重みの値に従って評価した値の総和を最大にするテストケースを生成する。
開示するテストケース生成システムは、因子がシステムのどの部分に影響しているかというシステムモデルから、どのような因子のグループに分かれ、それらのグループ間にどのような重み付けで組み合わせを取らなければならないかという情報をテストケース集合生成に利用でき、少ないテストケース数で信頼性を向上できる。
テストケース生成システムの構成図である。 テストケース生成システムが動作する計算機システムの構成図である。 因子集合とそれらの取り得る値の集合である因子集合データを示す図である。 システムモデルの例である。 因子のグループ定義を示す図である。 因子グループ間重み表を示す図である。 最適テストケース集合を示す図である。 システムモデルの簡単な例と因子グループ間重み表を示す図である。 システムモデルの複雑な例を示す図である。 システムモデルにおける変更の影響範囲を表す図である。 因子のグループ分け・重み計算部の処理フロー図である。 因子のグループ分けの処理フロー図である。 グループ間の重み計算の処理フロー図である。 グループ間の重み計算の他の処理フロー図である。 テストケース生成部の処理フロー図である。 システムモデルの各ブロックの重みを変更する処理フロー図である。 テストされるソフトウェアシステムを表す図である。 ペアワイズ網羅のテストケースの考え方を表すグラフである。 ペアワイズ網羅のテストケースの集合を表す図である。 テストケース生成部の処理の概略を説明する図である。
図を使って本発明の実施形態を詳細に説明する。ここでは4つの実施例を説明する。
実施例1と実施例2は、テストケース生成にテスト対象のシステム構成の知識を利用する。実施例1で基本的なテストケース生成システムの構成と働きを説明し、実施例2では因子のグループ分けと重み計算の方法の別の方法を説明する。
実施例3は、テスト対象のソフトウェアシステムが、既存のテスト対象の改造である場合である。
実施例4は、テスト対象のソフトウェアシステムに関するユーザの知識を利用する例である。
図1に、本実施例のテストケース生成システムの構成を示す。テストケース生成システムは、入出力装置や記憶装置を備えた計算機上に構築され、動作する。本実施例は、因子集合とそれらが取り得る値集合である因子集合データ1001およびシステムモデル1002を利用者がテストケース生成システムに入力する。システムモデル1002は、テストするソフトウェアシステム(以下、対象システム)をモデル化したものであり、一つ以上のブロックとそのブロックの重み、ブロック間の関係を表すものであり、後述する。因子集合データ1001は、システムモデル1002への動作条件項目や入力データ項目の集合と各項目(因子)が取り得る値の集合である。
入力したシステムモデル1002を参照して、グループ分け・重み計算部1003が入力した因子集合をグループ分けして因子のグループ定義1004を求め、さらに定義した因子グループ間重み表1005を求める。これら2つのデータからテストケース生成部1006が、後述する処理により、グループ定義1004と因子グループ間重み表1005から評価値の和を最大にする最適テストケース集合1007を求める。
図2に、テストケース生成システム2001が動作する計算機システムの構成図を示す。テストケース生成システム2001は、CPU2002、記憶装置2003、ディスク装置などの補助記憶装置2004、キーボード、マウスなどの入力装置2004、およびディスプレイやプリンタなどの出力装置2005を有する。
CPU2002は、グループ分け・重み計算部1003およびテストケース生成部1006の処理を実行する。補助記憶装置2004は、因子集合データ1001、システムモデル1002、因子のグループ定義1004、因子グループ間重み表 1005、および最適テストケース集合1007を記憶し、これらはCPU2002による処理の実行に伴い、必要に応じて記憶装置2003との間でロード(読み出し)、ストア(格納)される。因子集合データ1001及びシステムモデル1002は、入力装置2004から入力され、補助記憶装置2004に格納される。最適テストケース集合1007は、格納されている補助記憶装置2004から読み出され、出力装置2005により出力される。
図3に、入力装置2005から入力され、補助記憶装置2004に格納された、因子集合とそれらが取り得る値集合である因子集合データ1001を示す。因子集合データ1001は、対象システムが入力する因子(動作条件項目や入力データ項目)の集合とそれぞれの因子が取り得る値の集合である。対象システムが関係する因子として典型的なものは、対象システムに入力するパラメータがある。また、例えば、その対象システムが動作する場所の気温をセンサで読み取って動作する対象システムなら、気温も動作条件項目としての因子である。因子集合データ1001は、図3に示すように、因子3001とその因子が取り得る値の集合(領域)3002を含む。因子3001には因子名が入力され、値の集合3002には、その因子が取り得る値が1つ以上入力される。
図4に、入力装置2005から入力され、補助記憶装置2004に格納されるシステムモデル1002の例を示す。システムモデル1002は図4に示すように1個以上のブロック4001を含む。ブロック4001は、たとえば、対象システムが一つのプログラムからなるような小規模システムの場合には、いわゆるプログラムモジュールが対応し、対象システムが多くのプログラムが連携して動作するような大規模システムの場合には、一つ一つのプログラムが対応する。
各ブロック4001には、他のブロックまたは因子FA1,…, FAn, FB1, …, FBm, FC1, …, FCk から結線されている。結線には、矢印で示す方向がある。また、各ブロックには、入力装置2005からのシステムモデル1002の入力としてブロック名BLOCK−A, BLOCK−B, … などと共に、重み w_a, w_b, … が入力される。図4では、重みをブロック内のカッコの中に表している。重みは、そのブロックへの結線間の組合せについて相対的な重要さを表す。
図5に、グループ分け・重み計算部1003が、システムモデル1002を参照して、因子集合データ1001をグループ分けした因子のグループ定義 1004を示す。グループ定義1004は、グループの名前5001とそれぞれのグループがどの因子の集合を含むかを表す因子5002からなる。図5では、グループAは因子FA1, …, Fanを含むことを表す。
図6に、グループ分け・重み計算部1003が、因子のグループ定義1004に基づいて求めた、因子グループ間重み表1005を示す。因子グループ間重み表1005は各因子グループ間の値の組合せの重み(どのような重みで必要とするか)を表している。因子グループがk個ある場合はk×kの行列で、因子グループの名前(6001、6002)が記述されている。この行列は、2つの因子グループの間の値の組合せの重みなので、三角行列になるため、対角線から下の0の要素には「−」を入れてある。
図7に、テストケース生成部1006が処理結果として生成する最適テストケース集合1007を示す。図7においてテストケース表7001がテストケース集合である。テストケース表7001の各行は、テストケース番号#と各因子が取り得る値のいずれかを表している。最適テストケース集合1007には、テストケース生成部1006がテストケース表7001の各テストケースの評価値を計算するための評価表7002がある。評価値を計算するために、テストケース表7001の1行の中にある二つの因子の値の組合せを、因子名とその値の対で評価表7002に入れる。また、テストケース生成部1006は、二つの因子の値の組合せを評価表7002に入れるとき、すでに存在する値の組合せを二重に入れない。このようにしてすべて評価表7002に入れ終わったら、テストケース生成部1006は、因子の値の各組み合わせの評価値Eを計算する。
評価表7002の1行に示す組合せレコード rに対して、その二つの因子をFac1, Fac2 とし、それぞれの因子Fに対してそれが属するグループをGr(F)、二つのグループG1, G2 の間の重みをweight(G1, G2)とするとき、その組合せレコードrの評価値を、
E(r) = weight(Gr(Fac1(r)), Gr(Fac2(r)))
とする。また、テストケース全体の評価値Eは、これをすべてのレコードについて加えたものであり、
E = Σ E(r)
ただし、r は評価表7002の1行に示す組合せレコードである。本実施例では、テストケース数が限定されたときに、テストケース生成部1006が、この評価値Eを最大にするようなテストケース集合を生成する。
ここでは、分かりやすいようにテストケース表7001の評価値を計算するための評価表7002を示したが、実際には補助記憶装置2004にデータとして格納せずに、テストケース生成部1006による処理結果としてのテストケース全体の評価値Eを利用することもできる。
図8は、システムモデル1002と因子グループ間重み表1005の例である。図8(a)に示すシステムモデル1002は、図4に示すシステムモデルの一部である。ここでは、この簡単なシステムモデル1002を使って、因子のグループ分け・重み計算部1003の処理を説明する。より複雑なシステムモデルに対する因子のグループ分け・重み計算部1003の処理は、ここで述べる処理の拡張である。
図8(a)に示すシステムモデル1002は、3つのブロックを含み、ブロック BLOCK_A に結線されている因子の集合 FA1, …, FAn とブロック BLOCK_B に結線されている因子の集合 FB1, …, FBm があり、さらにBLOCK_A と BLOCK_B の出力がBLOCK_Dの入力となっている(結線されている)。
この場合、同じ条件で処理される因子に分けると、BLOCK_A に結線されている因子の集合 FA1, …, FAnとBLOCK_B に結線されている因子の集合 FB1, …, FBmの2つのグループに分けられる。これら因子の集合の2つのグループを次式で表す。
G1: FA1, …, FAn
G2: FB1, …, FBm
それぞれのブロックに付けた重み w_a, w_b, w_d を、それぞれのブロックへの入力の間の関係をどれくらい重視するかという数値とする場合(ブロックへの入力に対する、そのブロックの処理の重要性(たとえば処理の複雑さ)を重要視する場合)、グループ分け・重み計算部1003は、図8(b)に示すグループ間重み表を得る。また、ブロックに到達するまでに通ったブロックの重みも算入する場合(ブロックへの入力に対する、そのブロックの処理の重要性だけでなく、入力の重要性(たとえば、そのブロックが予定している値域を外れた入力に対する異常処理)も重要視する場合)、グループ分け・重み計算部1003は、図8(c)に示すグループ間重み付け表を得る。図8(b)、図8(c)のグループ間重み付け表を得る各処理については後述する。
図8(a)に示す単純なシステムモデルの場合を、一般の複雑なシステムモデルの場合に拡張する。図9に、図8(a)より複雑なシステムモデルの例を示している。このシステムモデルは、図4のシステムモデルにブロック9001の BLOCK_F を追加したものである。図4のシステムモデルの場合、因子のグループ分け・重み計算部1003は、同じブロックに入力される因子の集合として、
G1: FA1, …, FAn
G2: FB1, …, FBm
G3: FC1, …, FCk
に因子の集合をグループ分けするが、図9のシステムモデルの場合、グループ分け・重み計算部1003は、グループG1のFA1, …, GAnを、さらにグループ分けし、
G1A:FA1
G1B:FA2, …, FAn
G2:FB1, …, FBm
G3:FC1, …, FCk
とする。
図11に、因子のグループ分け・重み計算部1003の処理フロー(PAD図)を示す。この処理フローは、因子のグループ分け(S11001)を行い、次にグループ間の重み付け(S11002)を行う。次に図12と図13を用いて、これらの処理を詳しく述べる。
図12に、因子のグループ分けの処理フロー(PAD図)を示す。この処理では各因子に対して、どのブロックにどの経路で到達しているかをすべて列挙し、その経路の集合が同じものを1つのグループとする。すべての因子Fについて、処理S12002を繰り返す(S12001)。システムモデルへの入力のFから有向な結線を辿った最長のパスの集合Paths(F)を求める(S12002)。Paths(F) は F→ブロック→・・・→ブロックの形のパスの集合である。
次に、因子の集合を、Paths(F)が等しい因子の集合を一つの因子グループに分解する。因子グループをG1, ..., Gmとし、Gi に属する因子Fの集合をfactors(Gi)とする。また、F∈factors(Gi)に対してPaths(F)はすべて同じなので、それをPaths(Gi)と表す(S12003)。最後に、{G1, ..., Gm}が、グループ分け・重み計算部1003によるグループ分けの結果であり、それぞれのグループGiに属する因子をfactors(Gi)とする(S12004)。
図13に、グループ分け・重み計算部1003によるグループ間の重み計算の処理フロー(PAD図)を示す。ここでのグループ分け・重み計算部1003によるグループ間の重み計算の処理は、それぞれのブロックに付けた重みを、それぞれのブロックへの入力の間の関係をどれくらい重視するかという数値とする場合の処理であり、図8(b)に示したようなグループ間重み付け表を得る処理である。
まず、2つの因子グループの因子が入力されるブロックの重みweight(Gi, Gj)をその2つの因子グループ間の重みとする(S13001)。以下の一連の処理でweight(Gi, Gj)にこの2つのグループGiとGjの間の重みが計算され、設定されていくようにする。それには、すべての因子グループGi, Gj (i<j)のペアに対して、処理S13003以下の処理を繰り返す(S13002)。因子グループGi, Gj (i<j)間の重みweight(Gi, Gj)=0 に初期化する(S13003)。そして、因子グループGi に対応するパスの集合Paths(Gi) と因子グループGj に対応するパスの集合Paths(Gj) に対して、S13005以下の処理を繰り返す(S13004)。Paths(Gi)とPaths(Gj)が入力されるブロックをCとする(S13005)。weight(Gi, Gj) に ブロックC の重みを加える(S13006)。このweight(Gi, Gj) を因子グループGi と因子グループGjの間の重みとする。
テストケース数が限定されたときに、テストケース生成部1006が、この評価値Eを最大にするようなテストケース集合を生成する 次に、テストケース数が限定されたときに、各テストケースの評価値の和を最大にするテストケース集合を生成するテストケース生成部1006の処理を説明する。ここでは、遺伝的アルゴリズムによって、テストケース数の上限Nが与えられたとき、評価値を最大にするようにテストケース集合を生成する。
図15に、テストケース生成部1006の処理フロー(PAD図)を示す。テストケース生成部1006は、評価値の和を最大にするテストケース集合を生成する。図15を用いた説明の前に、図20を用いて、テストケース生成部1006の処理の概略を直感的に説明し、次に図15を用いて処理のフロー(PAD図)を説明する。
テストケース生成部1006の処理は、遺伝的アルゴリズムを利用したものである。図20に示すように、処理20001により、テストケース集合の集まり(個体群)20002をランダムに生成する。生成した個体群20002にM個の個体(テストケース集合)7001が含まれ、各個体(テストケース集合)7001にはN個のテストケースが含まれる。
次に、進化手続き20003で、個体群20002から2つの個体(テストケース集合)7001を取り出し、この2つの個体7001から新たな個体(テストケース集合)7001を2つ生成する。2つの個体(テストケース集合)A、Bを基に2つの個体(テストケース集合)C、Dを生成する例を示す。
個体Aの1〜k(k<N)番目のテストケース(図20のA1)と個体Bのk+1〜N番目のテストケース(図20のB2)とを組み合わせたテストケース集合を個体Cとし、個体Bの1〜k番目のテストケース(図20のB1)と個体Aのk+1〜N番目のテストケース(図20のA2)とを組み合わせたテストケース集合を個体Dとする。それら(上例の個体(テストケース集合)C、D)を突然変異(後述)させ、元の個体群20002に含む。
さらに、個体群20002に含まれるM+2個の個体(テストケース集合)からテストケース集合の評価値の小さいものを2つ捨てるという処理を繰り返す。これにより、次第に評価値の大きなテストケース集合だけが個体群20002に残るようになり、所定の世代数(上述の処理の繰り返し回数)だけこの処理を繰り返すか、または、評価値が十分に高い個体(テストケース集合)ができるまで、この処理を繰り返す。このアルゴリズムは生物進化のアナロジーから個体群を次第に評価値の高い個体の集合に進化させていくことから遺伝的アルゴリズムと呼ばれる。
図20の上述の説明を補足する。初期個体群を生成する手続き20001では、テストケース集合の中に入る最大テストケース数をNとし、個体群の中の個体数をMとするとき、例えば、それぞれの個体は各因子に対して、その因子が取り得る値をランダムに割り当ててN個の行からなるテストケース集合をM個作ればよい。
進化手続き20003は個体群20002からそれぞれのテストケース集合の評価値eの大きさに応じた確率で2個のテストケース集合を選び出すようにする。ここで常に評価値の大きいものだけ取り出すようにすると、進化しなくなることがあるので、確率的に取り出すようにする。次にこれらを手続き20004で交差(上述の入れ替え)させて2つの子供の個体を生成する。これには例えば、それぞれの親の個体でN個の行(テストケース)があるので、ランダムに1からN−1までの数kを生成し、1からkまでとk+1からNまでの行に分け、これらを図20のように交換して子供を作成する。最後に手続き20005で、これらの子供の個体をある低い確率で突然変異させる。突然変異は、それらの個体の行をランダムに選び、また、選んだ行の、ランダムに選んだ因子の値をその因子が取り得る値の集合からランダムに選び直す。
このようにして新たな個体を2つ生成したあと、これを元の個体群2002に返す。しかし、追加するたけでは個体数がどんどん多くなってしまうので、評価値eの低い個体を2つ選んで捨てて、個体数をMに保つ。個体を捨てるときは一般には評価値の低いものを捨てるが、一番小さなものだけを捨てていては進化が止まる場合があることが知られているため、下の方の2割程度に位置する個体を捨てる。
図20を用いて直感的にわかるように説明した処理を、図15のフロー(PAD図)を用いて、評価値の和を最大にするテストケース生成の処理フローとして詳細に説明する。N をテストケース数の上限、M を遺伝的アルゴリズムでの1世代の個体数とする(S15001)。また、遺伝的アルゴリズムの個体群が変数GROUPに格納されているとする。N 個のテストケースからなる個体が M個存在する初期個体群 GROUP を生成する(S15002)。GROUPに属するテストケースの集合PSET、それぞれについて重みを加味した評価値e(PSET)を計算して対応させる(S15003)。PSETが、図20を用いて説明した遺伝的アルゴリズムの個体に対応する。次に、予め決められた世代数または評価値が十分に高いよいテストケース集合が見つかるまでの、所定の繰り返し回数、処理S15005以下の処理を繰り返す(S15004)。GROUP内のPSETについて、評価値 e(PSET) に従って、親となるテストケース集合を2つ選択し、それらを PSET1, PSET2 とする(S15005)。この選び方は、図20を用いた遺伝的アルゴリズムの説明で述べたように、個体となるテストケース集合の評価値e(PSET)に応じた確率で選ぶ。次に、PSET1 と PSET2 を交差させて、子供のテストケース集合CSET1, CSET2とする(S15006)。ある確率で図20ので説明したようにランダムに) CSET1 と CSET2 を突然変異させる(S15007)。GROUP にCSET1 と CSET2を含み、GROUP=GROUP ∪ {CSET1, CSET2} とする(S15008)。GROUP から評価値e(PSET)の低い2つ個体を消去する(S15009)。所定の繰り返し数の処理の結果として残ったGROUP から最も評価値e(PSET)が良いテストケースを取り出す(S15010)。
これらによりシステムモデル1002を用いて、因子のグループ分けとグループ間に重みを付け、テストケースで実現されるペアの重みの和を最大にするテストケース集合を求めることができる。
実施例2として、実施例1の変形例としてのグループ分け・重み計算部1003によるグループ間の重み計算の処理を説明する。ここでのグループ分け・重み計算部1003によるグループ間の重み計算の処理は、ブロックに到達するまでに通ったブロックの重みを算入する場合の処理であり、図8(c)に示したようなグループ間重み付け表を得る処理である。
図14に、グループ分け・重み計算部1003によるグループ間の重み計算の処理フロー(PAD図)を示す。重みweight(Gi, Gj)をその2つのグループ間の重みとする(S14001)。すべての因子グループGi, Gj (i<j)のペアに対して、処理14003以下の処理を繰り返す(S14002)。因子グループGi, Gj (i<j)間の重みweight(Gi, Gj)=0に初期化(S14003)し、以下の一連の処理でGiとGjの間の重みを追加していく。因子グループGj に対応するパスの集合Paths(Gi) と因子グループGj に対応するパスの集合Paths(Gj) に対して、S14005以下の処理を繰り返す(S14004)。Paths(Gi)とPaths(Gj)が入力されるブロックをCとする(S14005)。ブロックCに至る Paths(Gi)が通過するブロックを(BL1, ..., BLs,C)、ブロックCに至る Paths(Gj)が通過するブロックを(CL1, ..., CLt,C)とする(S14006)。最後に、処理14007で、weight(Gi, Gj) にブロックCに至るまでに Paths(Gi)が通過する各ブロックの重みの積w(BL1)×...×w(BLs)とブロックCに至るまでに Paths(Gj)が通過する各ブロックの重みの積w(CL1)×...×w(CLt)とブロックCの重みとしてシステムモデルに入力された w(C)、すなわちw(BL1)×...×w(BLs)×w(CL1)×...×w(CLt)×w(C)を求め、weight(Gi, Gj)に加える(S14007)。このweight(Gi, Gj) を因子グループGi と因子グループGjの間の重みとする。
実施例3は、従来のソフトウェアシステムを改造した新しいシステムを対象システムとする場合のテストケース集合の生成方法を述べる。すなわち、実施例3は、実施例1のシステムモデル1002を補助記憶装置2004に構築する場合の変形例である。従来のソフトウェアシステムを改造した、対象システムのシステムモデルにおいて変更(改造)したブロックにマークを付ける。たとえば、対象システムのシステムモデルのブロックの定義中にマークとしてフラグを立てる。
図16に、システムモデルの一部を変更したときの各ブロックの重みを変更する処理フロー(PAD図)を示す。変更のマークのついたブロックから結線を逆に(有向矢印の逆方向に)辿り、通過または到達するブロックにマークをつける(S16001)。変更のマークのついたブロックから結線を(有向矢印の方向に)辿り、通過または到達するブロックにマークをつける(S16002)。マークのついていないブロックの重みを非常に小さい値に変更する(S16003)。
図10を用いて、図16の処理フローの説明を補足する。ここでは、ブロックBLOCK−Dが変更されたとする。ブロックBLOCK−Dから結線を逆に辿り、ブロックBLOCK−AおよびBLOCK−Bにマーク(三角)を付ける。次にブロックBLOCK−Dから有向矢印の方向に辿り、ブロックBLOCK−Eにマーク(円)をつける。変更されたすべてのブロックに関して、同様にマークを付ける。そして、マークが付けられていないブロックの重みを極端に小さくする。例えば、他のブロックの1/100とか、あるいは0にする。従来のソフトウェアシステムのシステムモデルを、改造(変更)に対応させて変更して対象システムのシステムモデルとして利用するので、システムモデルの変更入力時に、マークが付けられていないブロックの重みを変更する。このようにしてブロックの重みを変更した後で、実施例1で述べたようにテストケース集合を作成すれば、変更されたブロックにかかわるブロックに重みをつけた(変更されないブロックにかかわらないブロックの重みを小さくした)テストケース集合を生成できる。
本実施例では、システムモデルにおいてブロックの重みを「過去にバグの多かったところ」、「開発にかかわった人数」、「改造の回数」のパラメータの一部あるいは全部を使って設定する。
まず、これらの値が入れられるようにシステムモデル1002を拡張する。それには図4において各ブロック4001に、「過去にバグの多かったところ」、「開発にかかわった人数」、「改造の回数」の値を記憶することができるように拡張すればよい。次にこれらの値をテストケース生成に反映させる。反映させる1つの方法としては、各ブロックの重み w_a, w_b, … をこれらのパラメータの値で増減させる。そのような式としては、BLをブロック、w(BL)をその重み、p(BL) を上記のパラメータの値で、標準を1.0 として正規化する。このとき、
w(BL) を p(BL)*w(BL)
に変えてやることで、これらの従来の不具合の頻出する度合いをテストケース集合の生成に反映させることができる。
以上説明した実施形態によれば、因子が対象システムのどの部分に影響しているかというシステムモデルから、どのような因子のグループに分かれ、それらのグループ間にどのような重み付けで組み合わせを取らなければならないかという情報をテストケース集合生成に利用でき、少ないテストケース数で信頼性を向上するという利点がある。
また、改造(変更)による開発の場合に、システムモデルのどこが変化したかという情報から、再テストすべき箇所を同定し、それをテストケース集合生成に利用することができ、少ないテストケース数で信頼性を向上するという利点がある。
また、システムモデルにおいて、不具合発生に関係の深い「過去にバグの多かったところ」、「開発にかかわった人数」、「改造の回数」のパラメータをテストケース集合生成に利用することができ、少ない個数のテストケース数で信頼性を向上するという利点がある。
1001:因子集合データ、1002:システムモデル、1003:グループ分け・重み計算部、1004:因子グループ定義、1005:因子グループ間重み表、1006:テストケース生成部、1007:最適テストケース集合。

Claims (6)

  1. 対象システムへの動作条件項目や入力データ項目である因子の集合およびに前記因子が取り得る値の集合から、前記対象システムの動作をテストするためのテストケース集合を生成する、計算機上で動作するテストケース生成システムであって、
    前記因子の集合と前記因子が取り得る前記値の集合、及び、ブロックの集合と、前記ブロックの集合に含まれる、ブロックから他のブロック又は前記因子から前記ブロックへの結線からなる、前記対象システムのモデルを入力し、前記結線により構成されるパスを同じくする前記因子を一つのグループとするようにグループ分けしてグループ定義とし、グループ分けしたグループ同士の重みを計算して、前記グループの前記因子から結線された前記ブロックの重みとした因子グループ間重み表を求めるグループ分け・重み計算部、並びに
    前記因子の前記グループ定義と前記因子グループ間重み表から、テストケースに含まれる前記因子の集合に含まれる因子間の前記値の組合せに対して、前記因子グループ間重み表の重みの値に従って評価した値の総和を最大にする前記テストケースを生成するテストケース生成部を持つことを特徴とするテストケース生成システム。
  2. 請求項1記載のテストケース生成システムにおいて、前記対象システムの前記モデルには変化のあったブロックの指定に応答して、前記グループ分け・重み計算部は、前記変化のあったブロックへ結線しているブロックと前記変化のあったブロックから結線しているブロックを識別し、前記モデルを構成する前記ブロックの集合に含まれ、識別されなかったブロックの前記重みを小さくして前記因子グループ間重み表を求めることを特徴とするテストケース生成システム。
  3. 請求項1記載のテストケース生成システムにおいて、ユーザによる前記ブロックへの、「過去にバグの多かったところ」、「開発にかかわった人数」、「改造の回数」のパラメータの少なくとも一つの指定に応答して、前記グループ分け・重み計算部は、前記パラメータに基づいて、前記ブロックの前記重みを調整した前記因子グループ間重み表を求めることを特徴とするテストケース生成システム。
  4. 対象システムへの動作条件項目や入力データ項目である因子の集合およびに前記因子が取り得る値の集合から、前記対象システムの動作をテストするためのテストケース集合を生成する、計算機上で動作するテストケース生成システムによるテストケース生成方法であって、
    前記テストケース生成システムのグループ分け・重み計算部が、前記因子の集合と前記因子が取り得る前記値の集合、及び、ブロックの集合と、前記ブロックの集合に含まれる、ブロックから他のブロック又は前記因子から前記ブロックへの結線からなる、前記対象システムのモデルを入力し、前記結線により構成されるパスを同じくする前記因子を一つのグループとするようにグループ分けしてグループ定義とし、グループ分けしたグループ同士の重みを計算して、前記グループの前記因子から結線された前記ブロックの重みとした因子グループ間重み表を求め、
    前記テストケース生成システムのテストケース生成部は、前記因子の前記グループ定義と前記因子グループ間重み表から、テストケースに含まれる前記因子の集合に含まれる因子間の前記値の組合せに対して、前記因子グループ間重み表の重みの値に従って評価した値の総和を最大にする前記テストケースを生成することを特徴とするテストケース生成方法。
  5. 請求項4記載のテストケース生成方法において、前記対象システムの前記モデルには変化のあったブロックの指定に応答して、前記グループ分け・重み計算部は、前記変化のあったブロックへ結線しているブロックと前記変化のあったブロックから結線しているブロックを識別し、前記モデルを構成する前記ブロックの集合に含まれ、識別されなかったブロックの前記重みを小さくして前記因子グループ間重み表を求めることを特徴とするテストケース生成方法。
  6. 請求項4記載のテストケース生成方法において、ユーザによる前記ブロックへの、「過去にバグの多かったところ」、「開発にかかわった人数」、「改造の回数」のパラメータの少なくとも一つの指定に応答して、前記グループ分け・重み計算部は、前記パラメータに基づいて、前記ブロックの前記重みを調整した前記因子グループ間重み表を求めることを特徴とするテストケース生成方法。
JP2012264975A 2012-12-04 2012-12-04 テストケース生成システムおよび方法 Expired - Fee Related JP5940968B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012264975A JP5940968B2 (ja) 2012-12-04 2012-12-04 テストケース生成システムおよび方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012264975A JP5940968B2 (ja) 2012-12-04 2012-12-04 テストケース生成システムおよび方法

Publications (2)

Publication Number Publication Date
JP2014109966A JP2014109966A (ja) 2014-06-12
JP5940968B2 true JP5940968B2 (ja) 2016-06-29

Family

ID=51030547

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012264975A Expired - Fee Related JP5940968B2 (ja) 2012-12-04 2012-12-04 テストケース生成システムおよび方法

Country Status (1)

Country Link
JP (1) JP5940968B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104407970A (zh) * 2014-11-06 2015-03-11 国云科技股份有限公司 一种新型软件测试用例设计编写方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06131214A (ja) * 1992-10-20 1994-05-13 Matsushita Electric Ind Co Ltd テスト項目重要度評価装置
JP2009104252A (ja) * 2007-10-19 2009-05-14 Toshiba Corp デバッグ支援装置およびデバッグ支援方法
JP5444939B2 (ja) * 2009-08-24 2014-03-19 富士通セミコンダクター株式会社 ソフトウェアのテスト方法及びプログラム

Also Published As

Publication number Publication date
JP2014109966A (ja) 2014-06-12

Similar Documents

Publication Publication Date Title
Nan et al. Unifying the role of IT in hyperturbulence and competitive advantage via a multilevel perspective of IS strategy
US20210342699A1 (en) Cooperative execution of a genetic algorithm with an efficient training algorithm for data-driven model creation
Rahman Fahim et al. Microgrid fault detection and classification: Machine learning based approach, comparison, and reviews
Holopainen et al. Toward robust early-warning models: A horse race, ensembles and model uncertainty
US9104963B2 (en) Self organizing maps for visualizing an objective space
JP2007052744A (ja) 分類ルール作成支援方法
JP4726236B2 (ja) 人工知能を備える装置
US11403550B2 (en) Classifier
Leong et al. Robust cluster expansion of multicomponent systems using structured sparsity
Hsu Clustering ensemble for identifying defective wafer bin map in semiconductor manufacturing
KR102380501B1 (ko) 다차원 성격 검사 장치 및 방법
Bateman et al. The The Supervised Learning Workshop: A New, Interactive Approach to Understanding Supervised Learning Algorithms
do Amaral et al. Metamodeling-based simulation optimization in manufacturing problems: a comparative study
US20130336580A1 (en) Weighted feature voting for classification using a graph lattice
JP5940968B2 (ja) テストケース生成システムおよび方法
Podgorelec et al. Evolutionary design of decision trees
Simpson et al. Structural modeling
JP4882573B2 (ja) レイアウト評価装置
Wang et al. An empirical classification-based framework for the safety criticality assessment of energy production systems, in presence of inconsistent data
de Andrés et al. Bankruptcy prediction and credit scoring: A review of recent developments based on hybrid systems and some related patents
JP7450187B2 (ja) プログラム、情報処理方法、及び情報処理装置
JP2016122332A (ja) プロセス評価装置およびプロセス評価プログラム
KR102504319B1 (ko) 영상 객체 속성 분류 장치 및 방법
JP2007213441A (ja) 多変数決定木構築システム、多変数決定木構築方法および多変数決定木を構築するためのプログラム
Wang et al. Testing a decision-theoretic approach to the evaluation of information retrieval systems

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20140908

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150304

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160105

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160119

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: 20160426

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160519

R150 Certificate of patent or registration of utility model

Ref document number: 5940968

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees