JP5107131B2 - テストケース生成装置およびその生成方法、ならびにテストケース生成のためのプログラム - Google Patents

テストケース生成装置およびその生成方法、ならびにテストケース生成のためのプログラム Download PDF

Info

Publication number
JP5107131B2
JP5107131B2 JP2008117173A JP2008117173A JP5107131B2 JP 5107131 B2 JP5107131 B2 JP 5107131B2 JP 2008117173 A JP2008117173 A JP 2008117173A JP 2008117173 A JP2008117173 A JP 2008117173A JP 5107131 B2 JP5107131 B2 JP 5107131B2
Authority
JP
Japan
Prior art keywords
transition
state
path
states
test case
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
JP2008117173A
Other languages
English (en)
Other versions
JP2009266092A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2008117173A priority Critical patent/JP5107131B2/ja
Priority to US12/397,602 priority patent/US8219573B2/en
Publication of JP2009266092A publication Critical patent/JP2009266092A/ja
Application granted granted Critical
Publication of JP5107131B2 publication Critical patent/JP5107131B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/3684Test management for test design, e.g. generating new test cases

Landscapes

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

Description

本発明は、テストケース生成装置およびその生成方法、ならびにテストケース生成のためのプログラムに関し、たとえばプログラムの検証技術に関する。
状態遷移図を用いたテストケースの設計方法は、系統的なテストケースを作り出す有効な方法として知られている。計算機システムの計算過程を状態遷移系に抽象化すると、網羅的なテストケースは状態または遷移を網羅するパスとなる。状態遷移系は有向グラフと見なせるため、テストケースの生成問題は有向グラフのノードまたはアークを網羅する最短パスの生成問題(巡回セールスマン問題、中国人郵便配達夫問題など)へ帰着することにより各種の近似解法が公知である。
Harold W. Thimbleby: "The directed Chinese Postman Problem", In Software - Practice and Experience (SPE), Volume 33, pp.1081-1096, 2003. Harold Abelson and Gerald Jay Sussman with Julie Sussman: "Structure and Interpretation of Computer Programs", MIT Press, 1996.
現実の計算機システムは内部状態が複雑なため、状態遷移系の抽象度が低ければ状態数が極めて大きくなり、対応するテストケースも極めて大きくなる。一方、状態遷移系の抽象度が高ければ状態数が抑えられて、対応するテストケースも小さくなるが、テストの目的に応じて抽象化を適用した状態遷移系を作成する必要がある。
本発明は、所望の網羅性を保証する効率的なテストケースを自動生成するテストケース生成装置その生成方法ならびにテストケースを生成するためのプログラムを提供する。
本発明の一態様としてのテストケース生成装置は、
複数の状態間の第1遷移を表す第1の状態遷移系の入力を受け付ける第1の入力受付手段と、
複数の状態を定義域とし、前記状態をある値域内の値へ写像する写像関数の入力を受け付ける第2の入力受付手段と、
前記第1の状態遷移系に含まれる前記複数の状態を、前記写像関数によりそれぞれ写像して複数の写像値を取得し、取得された複数の写像値に基づいて前記複数の状態をグループ化するグループ化手段と、
2つの前記グループにおいて一方のグループに含まれる状態から他方のグループに含まれる状態への前記第1遷移が少なくとも1つ存在するときは前記一方のグループから前記他方のグループへの第2遷移を設定することにより、複数の前記グループ間の第2遷移を表す第2の状態遷移系を生成する状態遷移系生成手段と、
前記第2の状態遷移系の前記第2遷移を網羅する遷移パスを生成する遷移パス生成手段と、
生成された遷移パスに含まれる第2遷移を遷移順に特定し、特定された第2遷移の各々について、前記特定された第2遷移に対応する第1遷移の中から、1つ前に特定された第2遷移について選択された第1遷移の遷移先に対し遷移元が一致する第1遷移を順次選択することにより、前記生成された遷移パスを前記第1の状態遷移系上の遷移パスに変換する遷移パス変換部と、
変換された遷移パスを、前記第1の状態遷移系をテストするためのテストケースとして出力する出力手段と、
を備える。
本発明の一態様としてのテストケース生成方法は、
複数の状態間の第1遷移を表す第1の状態遷移系の入力を受け付ける第1の入力受付ステップと、
複数の状態を定義域とし、前記状態をある値域内の値へ写像する写像関数の入力を受け付ける第2の入力受付ステップと、
前記第1の状態遷移系に含まれる前記複数の状態を、前記写像関数によりそれぞれ写像して複数の写像値を取得し、取得された複数の写像値に基づいて前記複数の状態をグループ化するグループ化ステップと、
2つの前記グループにおいて一方のグループに含まれる状態から他方のグループに含まれる状態への前記第1遷移が少なくとも1つ存在するときは前記一方のグループから前記他方のグループへの第2遷移を設定することにより、複数の前記グループ間の第2遷移を表す第2の状態遷移系を生成する状態遷移系生成ステップと、
前記第2の状態遷移系の前記第2遷移を網羅する遷移パスを生成する遷移パス生成ステップと、
生成された遷移パスに含まれる第2遷移を遷移順に特定し、特定された第2遷移の各々について、前記特定された第2遷移に対応する第1遷移の中から、1つ前に特定された第2遷移について選択された第1遷移の遷移先に対し遷移元が一致する第1遷移を順次選択することにより、前記生成された遷移パスを前記第1の状態遷移系上の遷移パスに変換する遷移パス変換ステップと、
変換された遷移パスを、前記第1の状態遷移系をテストするためのテストケースとして出力する出力ステップと、
を備える。
本発明により、所望の網羅性を保証する効率的なテストケースを自動生成することができる。
以下、図面を参照しながら、本発明の実施の形態について説明する。
図1は、本発明の実施の形態としてのテストケース生成装置の構成を示すブロック図である。
このテストケース生成装置は、テスト対象となるシステムが取りうる複数の状態間の遷移(第1遷移)を表す状態遷移系(第1の状態遷移系)21と、複数の状態を定義域としてもち、当該状態をある値域内の値へ写像する状態抽象化写像(写像関数)22とを入力とし、状態遷移系21のテストケースとしての遷移パス26を効率的に生成し、出力するものである。
ここでは、状態遷移系21として、タスク制御モニタの状態遷移系を例題として解説するが、本実施形態は本例題以外に対しても有効である。ここでタスク制御モニタについて説明する。
<タスク制御モニタ>
複数のタスクが存在する情報システムで、タスクの実行状態を制御するモニタ機能を考える。図2に示すように、モニタ上の各タスクは、実行(RUN)状態と実行可能(RDY)状態とスリープ(WAI)状態の三つの状態を有する。
モニタは各タスクに、自発的なCPU譲り渡し(yield)操作と自発的なスリープ状態への遷移(sleep)操作とスリープ状態のタスクの実行可能状態への変更(wakeup)操作の三つのAPI(Application Programming Interface)関数を提供する。これらの関数は実行(RUN)状態のタスクにより呼び出される。
タスク数が三個の場合にタスク制御モニタがとり得る状態と状態間の遷移を表した状態遷移系を図3に示す。図3の状態遷移系は、図8に示す表1の状態と、図9に示す表2の遷移とで記述される有向グラフであり、初期状態は状態s0である。
より詳細に、表1は各状態の識別子(SID:State ID)と内容(ステート)を示しており、表2は各遷移の識別子(TID:Transition ID)と遷移元の状態識別子(SID0)と遷移先の状態識別子(SID1)と遷移の内容(イベント)を示している。ただし表1の写像結果は後述の状態同値関係定義部11の処理で付加されるものであり、本装置への表1の入力時にはまだ存在しない。
<テストケースの事例>
この状態遷移系(図3、表1と表2)で記述されるタスク制御モニタの動作を確認するには、システムの初期状態から各タスクの遷移に対応するAPI関数を順番に呼び出して、遷移先の状態に対応したタスクの切り替えが起きることを確認すれば良い。たとえば、初期状態s0からタスク1が(sleep 1)を呼ぶとタスク2が実行中となり、次にタスク2が(sleep 2)を呼ぶとタスク2が実行中となり、次にタスク3が(yield 3)を呼ぶとタスク3が実行可能となり、という風な手順で動作を確認する。この確認手順は状態遷移系の上の状態s0から出発して状態s5へ至る遷移パスt0→t5→t18に対応する。
システムの動作確認を網羅的かつ最短の手順で実施するには、状態遷移系を有向グラフと見なすと、有向グラフの遷移を網羅する最短の遷移パスを計算して、最短の遷移列に対応する遷移に対応するイベントでシステムを動作させれば良い。
有向グラフの遷移を網羅する最短の遷移列の生成問題は中国人郵便配達夫問題(CPP: Chinese Postman Problem)としてグラフアルゴリズムの分野で公知であり、網羅を保証した遷移列を求める近似アルゴリズム(非特許文献1)が存在する。なお、この場合のアルゴリズムの近似性は、最小の遷移列に近い遷移列を生成するという意味である。
状態遷移系(図3:16状態、42遷移)の遷移を網羅する遷移列を近似アルゴリズム(非特許文献1)で求めた結果を図10の表3に記す。初期状態から始まるこれら4本の遷移列に沿ってシステムを駆動すれば、50回の連続的な遷移で42個の遷移を網羅できる。このような遷移列をシステムのテストケースと呼ぶ。なお、この遷移列は必ず初期状態s0から開始するものとする。遷移列が1本でない理由は、状態s12が遷移先の存在しない状態であり、状態s12に入るとその後の遷移が続かなくなるからである。
<テストケースの削減>
ここでシステムの全ての遷移を網羅するテストは、一般にシステムの規模が大きくなるとテストケースのサイズが指数関数的に増大するため現実的でない。実行可能なテストとするため、一定のテスト基準を与えてテストケースのサイズを減らす必要が生ずる。たとえば、例題のタスク制御モニタは16の状態を有するが、これらの状態はタスク識別子の番号の並び替えにより一致する状態を含む。たとえば状態s0と状態s2はタスク識別子の順番を並び替えると一致するが、状態s0と状態s1はタスク識別子の順番を変えても一致しない状態であるなどの区別が考えられる。一定のテスト基準の例として「タスク識別子の番号を並び変えて一致する状態を等価な状態と見なし、等価でない状態間の遷移のみを動作確認する」などが考えられる。
本実施形態では、このような一定のテスト基準を後述の状態抽象化写像22の形に表現して入力することで、指定したテスト基準を満たす効率的なテストケース(遷移パス)26を自動的に生成する。
<状態遷移系と剰余状態遷移系>
ここで状態遷移系と剰余状態遷移系について説明する。
状態遷移系(第1の状態遷移系)Fは、状態の有限集合S、遷移の有限集合T(⊆S×S)、初期状態s0の組み合わせにより定義する。剰余状態遷移系(第2の状態遷移系)F/〜は、状態遷移系FおよびFの状態に関する同値関係”〜”を与えると定義できる。剰余状態遷移系F/〜の状態は、状態遷移系Fの状態を同値関係”〜”により同値分割(グループ化)した際の同値クラス(グループ)とする。剰余状態遷移系F/〜の遷移は、Fの状態sと状態s'の間に遷移が存在する場合に各状態を含む同値クラスの間にも遷移([s],[s'])が存在するとして同値クラスの間の遷移関係を定める。

状態遷移系:F = <S, T, s0>
状態集合:S
遷移集合:T ⊆ S×S
初期状態:s0 ∈ S

剰余状態遷移系:F/〜 = <S/〜,T/〜,[s0]>
剰余状態:S/〜 = { [s] | s ∈ S }
剰余遷移:T/〜 = { ([s],[s’]) | (s,s’) ∈ T }
関係”〜”は上記の同値関係equivを意味し、同値クラス[s]は状態sを代表元とし同値関係の上で等価な状態を集めた集合とする。

同値クラス: [s] = { s’ ∈ S | equiv(s,s’) = true }
なお、状態遷移系の各遷移t=(s,s’)∈Tにつき遷移tの前後の状態を参照する関数src(t)=sおよびdst(t)=s’と表記して以下で用いる。

遷移元の状態: dst: T → S
遷移先の状態: src: T → S
<状態同値関係の定義>
状態遷移系から剰余遷移系を計算するには状態間の同値関係を定義する必要がある。状態間の同値関係equiv(s,s’)は、同値関係の定義として反射律、対称律、推移律を満たす必要がある。なおBは真または偽を表すブルーム値(真偽値)の集合を表す。s,s’が同値のとき、equiv(s,s)は真を返す。

同値関係 equiv: S×S → B
反射律:∀s∈S. equiv(s,s)
対称律:∀s∈S.∀s’∈S. equiv(s,s’) ⇒ equiv(s’,s)
推移律:∀s∈S.∀s’∈S. equiv(s,s’)∧equiv(s’,s’’) ⇒ equiv(s,s’’)
<状態同値関係の構成>
一般に二つの状態から真偽値を返す関数は必ずしも上記の同値関係の公理を満たさない。剰余遷移系の生成において利用者に同値関係を二状態の述語関数として書かせると同値関係とならない述語関数を記述する可能性があり望ましくない。
そこで、利用者は状態を抽象化する写像mapを記述し、これを状態抽象化写像22として本装置に入力する。本装置での状態同値関係定義部11は、状態抽象化写像22と状態遷移系21とから、剰余遷移系24の生成に利用される状態同値関係23(後述する図11の表4)を定義する。なお、関数equal?は写像mapの値域V上の等号関係とする。

状態写像 map: S → V
同値関係 equiv(s,s’) = equal?(map(s), map(s’))
図5は、状態間の同値関係を定義する手順を示すフローチャートである。この手順に従った処理は状態同値関係定義部11により行われる。状態遷移系21から2つの状態s1,s2を取り出し、これらを状態抽象化写像22に与えてそれぞれ写像値を計算し(A11)、写像値が一致すれば(A12のYES)s1,s2は同値であると判断し(A13)、一致しなければ(A12のNO)s1,s2は同値でないと判断する(A14)。
例題:タスク制御モニタ
テスト基準から決まるタスク識別子の入れ替えで一致する状態を同一視する状態写像22の事例を以下に示す。なお、この写像例は公知のプログラミング言語Scheme(非特許文献2)の書式で記述している。

写像例:
(define (len s)
(map (lambda (v) (length (getval s v))) '(RUN RDY WAI)))

作用例:
s = ((RUN (1)) (RDY (2 3)) (WAI ())) のとき (len s) => (1 2 0)
s = ((RUN ()) (RDY ()) (WAI (1 2 3))) のとき (len s) => (0 0 3)
上記では、図8の表1の状態の内容(ステート)がプログラミング言語Scheme(非特許文献2)のリスト形式で変数sに格納されるとして、各タスクの状態を管理する変数(RUN、RDY、WAI)のリストの長さを返す関数を用いている。なお、関数getvalは変数の名前から対応する値を取得する関数とする。この関数を各状態へ適用した結果を図8の表1の一番右側の列(写像結果あるいは写像値)に示す。この写像による値が一致する状態を同値と見なして同値クラス(グループ)へ分割した結果を図11の表4に示す。同値クラスを代表する状態を状態識別子が最小の状態とすると、同値クラスの代表状態[SID]はs0、s1、s5、s12の4種類となる。
剰余状態遷移系の状態は、状態の同値クラス(以下、状態クラス)となり、剰余状態遷移系の遷移は状態クラス間の遷移となり、2つの状態クラスの含む状態間に遷移関係が存在するとき、当該状態クラス間に遷移関係が存在するとする。
この剰余状態遷移系の生成アルゴリズムを以下に記す。またこのアルゴリズムに対応する処理の流れを図6のフローチャートに示す。このアルゴリズムは、剰余状態遷移系生成部12により実行される。剰余状態遷移系生成部12は、状態同値関係23(図11の表4)と、状態遷移系21とを入力とし、下記のアルゴリズムに従い、剰余状態遷移系24を生成する。
<剰余状態遷移系の生成アルゴリズム>
入力:状態遷移系F、同値関係equiv
出力:剰余状態遷移系F/〜
変数:
SMAP: S → P(S)
TMAP: S×S → P(T)
REPL: S → S

ステップ1:状態の同値分割(図6のフローチャートの符号B11)
事前:SMAPが空
事後:SMAPが状態の同値分割結果
SMAP ← φ
for each s ∈ S do
if ∃s' ∈ KEYS(SMAP). equiv(s,s') then
SMAP(s') ← SMAP(s')∪{s}
else
SMAP(s) ← {s}
end if
end do

ステップ2:代表状態の決定(図6のフローチャートの符号B12)
事前:SMAPが状態の同値分割
事後:REPLが代表状態の検索表
REPL ← φ
for each s ∈KEYS(SMAP) do
for each s' ∈ SMAP(s) do
REPL(s') ← s
end do
end do

ステップ3:遷移の同値分割(図6のフローチャートの符号B13)
事前:TMAPが空、REPLが代表状態の対応表
事後:TMAPが遷移の同値分割結果
for each t ∈ T do
key ← (REPL(src(t)),REPL(dst(t)))
if ∃t' ∈ KEYS(TMAP). key=t' do
TMAP(t') ← TMAP(t')∪{t}
else
TMAP(key) ← {t}
end if
end do

ステップ4:結果出力(図6のフローチャートの符号B14)
状態分割SMAPからS/〜、遷移分割TMAPからT/〜を決め、
剰余遷移系F/〜=<S/〜, T/〜, [s0]>を出力して停止
例題:タスク制御モニタ
状態同値関係定義部11において状態の同値クラスへの分割が済めば各状態SIDに対して代表状態[SID]が定まる(図11の表4の一番左の列)。剰余遷移系の状態となる状態クラスは代表状態の識別子でラベルする。
また剰余遷移系の遷移は、遷移表(図12の表5)に示すように各遷移の遷移元と遷移先の状態(SID0とSID1)の所属する状態クラスの代表状態([SID0]と[SID1])を求めて、代表状態の組が同じ遷移を同値クラスに分割する(図13の表6)。遷移のクラスの中で識別子TIDが最小の遷移を代表遷移[TID]として遷移クラスの識別に用いる。この例は遷移クラスがt0、t1、t4、t5、t6、t15、t17、t18の8個となる。
図4は、最終的に得られた状態遷移系(4状態、8遷移)を示す。これは図13の表6に相当するものである。この状態遷移系の状態および遷移は、元の状態遷移系の状態および遷移を含む。図4の状態のステートや遷移のイベントとしては、代表状態のステートや代表遷移のイベントを記している。
図6のステップ1(B11)終了時点のSMAPは以下の通りとなる。

SMAP(s0) = {s0,s2,s4,s10,s14,s15}
SMAP(s1) = {s1,s3,s6,s7,s9,s13}
SMAP(s5) = {s5,s8,s11}
SMAP(s12) = {s12}
図6のステップ2(B12)終了時点のREPLは以下の通りとなる。

REPL(s0) = s0
REPL(s1) = s1
REPL(s2) = s0
... 中略
REPL(s14) = s0
REPL(s15) = s0
図6のステップ3(B13)終了時点のTMAPは以下の通りとなる。

TMAP((s0,s0)) = {t1,t3,t8,t34,t39,t41}
TMAP((s0,s1)) = {t0,t2,t7,t33,t38,t40}
... 中略
TMAP((s5,s5)) = {t18,t28,t32}
なお、アルゴリズムの記述において記号φは空集合の意味とし、記号←は右辺の左辺への代入を意味する。KEYSは写像の値域を取得する手順とし、上記のSMAPの例でKEYSの働きを例示するとKEYS(SMAP)={s0,s1,s5,s12}となる。
<遷移パスの変換方法>
遷移パス生成部13は、剰余状態遷移系24(図4)の遷移を網羅するパス25(代表状態または代表遷移イベントで表現された代表遷移パス25)を求める。これにはたとえば公知のアルゴリズム(非特許文献1)を用いることができる。ここでテストとして実行可能な遷移パスは初期状態s0から始まる連続な遷移パスである。連続な遷移パスとは遷移系列の中で、現在の遷移の遷移先の状態と、次の遷移の遷移元の状態とが一致することを意味する。剰余状態遷移系の上で連続な代表遷移パス25をそのまま状態遷移系の上の遷移パスと見なすと、連続な遷移パスになるとは限らない。したがって、剰余状態遷移系24を網羅する最短の代表遷移パス25を生成した後、これが元の状態遷移系上で連続したパスにならないときは、この代表遷移パス25を手がかりに連続な遷移パスに変換する必要がある。このパス変換の手順を以下に示す。またこの変換手順に対応する処理の流れを図7のフローチャートに示す。この処理は遷移パス変換部14により行われる。なおこの処理は、元の状態遷移系上で代表遷移パス25が連続したパスにならないと遷移パス変換部14が判断したときのみ行うようにしてもよいし、代表遷移パス25が元の状態遷移系上で連続したパスになるか否かの判断を行うことなく、常に行うようにすることも可能である。

遷移選択 SELECT: T/〜 × S → P(T)
機能: 遷移クラス[t]の中で状態sを始点とする遷移を選択する。
詳細: SELECT([t],s) = { t’ ∈ [t] | src(t’) = s }

状態選択 SOURCE: T/〜 → P(S)
機能: 遷移クラス[t]に含まれる遷移の始点を列挙する。
詳細: SOURCE([t]) = { src(t’) ∈ S | t’ ∈ [t] }

パス生成 SHORTP: S × P(S) → [T]
機能: 状態sから状態集合dstsへ至るパスの中で最短のパスを選択する
詳細: SHORTP(s,dsts) = DIJKSTRA(s,s’)
ただしDIJKSTRAは公知の最短パス計算手順(例:ダイクストラ法)とし
状態s’∈dstsはパス長|DIJKSTRA(s,s’')|が状態s''∈dstsの中で最小とする
<遷移パスの変換アルゴリズム>
入力:開始状態s0、代表遷移列tin=([t0],[t1],...)
出力:遷移列tout=(t0’,t1’,...)
手順:

ステップ1:初期化(図7のフローチャートのC11)
s ← 開始状態s0
todo ← 代表遷移列tin
tout ← 空列
ステップ2:遷移選択(図7のフローチャートのC12、C13)
next ← SELECT(todoの先頭, s)
if 集合nextが空 then
ステップ3:選択による連結不可(図7のフローチャートのC15)
dsts ← SOURCE(todoの先頭)
path ← SHORTP(s,dsts)
s ← パスpathの最後の状態
tout ← tout + path
else
ステップ4:選択による連結可能(図7のフローチャートのC14)
t ← 遷移集合nextから一つ遷移を選択
s ← dst(t)
todo ← todoの末尾
tout ← tout + t
end if
ステップ5:終了判定(図7のフローチャートのC16)
if リストtodoが空 then
(ステップ6)へ
else
(ステップ2)へ
end if
ステップ6:結果出力
遷移パスtoutを出力して停止
例題:タスク制御モニタ
剰余状態遷移系24(図4)の遷移を網羅するパスを公知のアルゴリズム(非特許文献1)を用いて遷移パス生成部13により求めると図14の表7に示す遷移系列(代表遷移パス25)が得られる。この遷移系列は剰余状態遷移系24(図4)の上では連結したパスとなるが、元の状態遷移系(図3)の上では連結したパスとなるとは限らない。その場合、そのままでは実行可能なテストケースとならない。
たとえば図14の表7の二本目のパスの代表遷移に沿う遷移系列はt0→t6→t5→t15→t4→t1となるが、遷移先と遷移元の状態が連続的に繋がらない。たとえば状態s1と状態s6は状態クラスが一致するため、剰余状態遷移系(図4)上では同じ状態だが、元の状態遷移系(図3)上で異なる状態である。
遷移パス変換部14は、代表遷移パス25が元の状態遷移系(図3)の上では連結したパスにならないときは、代表遷移パス25を元に、遷移パス変換を行うことにより実行可能な遷移パス26を得る。具体的には、遷移パス変換部14は、代表遷移パス25における遷移クラスの中から上手く遷移を選んで、元の状態遷移系上で状態の遷移が連続的となるようにパスを生成する。遷移の選択だけで状態の遷移を連続的となるパスを生成できない場合は、最短パスの計算アルゴリズムを利用してパスの状態を連続化する(ステップ3(図7のC15))。すなわち、連続的となるパスの生成ができない対象遷移クラスについては、1つ前の遷移クラスについて選択された遷移の遷移先状態から、対象遷移クラスの遷移先の状態クラスに含まれるいずれかの状態へのパスを生成し、生成したパスを採用する。
ここで剰余状態遷移系のパスを入力として元の状態遷移系上で状態が連続に遷移するパスを計算する操作をパス変換(あるいはパス復元)と命名する。パス変換(パス復元)のアルゴリズムは上に図7を用いて記述した通りである。
図14の表7の遷移パスと、初期状態s0とを入力として、パス変換(パス復元)アルゴリズムを適用した結果を図15の表8に記す。表8の遷移パスは初期状態を状態s0とし、図14の表7の遷移クラスから一度ずつ遷移を選んだ遷移パスであり、元の状態遷移系の上で状態が連続的に遷移する実行可能なパスとなる。図15の表8の遷移パスは、最初に設定したテスト基準「タスク識別子を区別しない範囲で全ての状態と状態間の遷移を網羅する」を満たす最小のテストケースとなる。
以上に説明した本実施の形態によれば以下の効果を得ることができる。
テストの目的に応じた抽象度の状態遷移系を作成する必要がなく、また、状態間の同値関係の代わりに状態の抽象化写像を用いることで、同値関係の記述時の誤り(反射律、対称律、推移律を満たさない関係の入力)を防止できる。
また抽象化写像で同値クラスに分割した状態空間を網羅する最短パスを生成するため、所望の網羅率を有する効率的なテストケースを生成できる。
また剰余状態遷移系の遷移パスを元の状態遷移系の遷移パスに自動変換することができる。
なお、以上に説明した本実施形態におけるテストケース生成装置は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。すなわち、テストケース生成装置における状態同値関係定義部、剰余状態遷移系生成部、遷移パス生成部、遷移パス変換部は、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現することができる。このとき、テストケース生成装置は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、CD−ROMなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現してもよい。
本発明の一実施形態としてのテストケース生成装置の構成を示すブロック図。 タスク制御モニタを説明する図。 状態遷移系(第1の状態遷移系)を示す図。 剰余状態遷移系(第2の状態遷移系)を示す図。 状態同値関係定義手順を説明するフローチャート。 剰余状態遷移系生成手順を説明するフローチャート。 遷移パス変換手順を説明するフローチャート。 図3の状態遷移系に対応する状態表を表1として示す図。 図3の状態遷移系に対応する遷移表を表2として示す図。 図3の状態遷移系における遷移パスを表3として示す図。 図3の表1を同値分割した結果を表4(剰余状態遷移系に対応する状態表)として示す図。 剰余状態遷移系に対応する遷移表を表5として示す図。 図12の遷移表を同値分割した結果を表6として示す図。 剰余状態遷移系の代表遷移パスを表7として示す図。 代表遷移パスを元に復元した、図3の状態遷移上の遷移パスを表8として示す図。
符号の説明
11:状態同値関係定義部
12:剰余状態遷移系生成部
13:遷移パス生成部
14:遷移パス変換部
21:状態遷移系
22:状態抽象化写像
23:状態同値関係
24:剰余状態遷移系
25:代表遷移パス
26:遷移パス

Claims (7)

  1. 複数の状態間の第1遷移を表す第1の状態遷移系の入力を受け付ける第1の入力受付手段と、
    複数の状態を定義域とし、前記状態をある値域内の値へ写像する写像関数の入力を受け付ける第2の入力受付手段と、
    前記第1の状態遷移系に含まれる前記複数の状態を、前記写像関数によりそれぞれ写像して複数の写像値を取得し、取得された複数の写像値に基づいて前記複数の状態をグループ化するグループ化手段と、
    2つの前記グループにおいて一方のグループに含まれる状態から他方のグループに含まれる状態への前記第1遷移が少なくとも1つ存在するときは前記一方のグループから前記他方のグループへの第2遷移を設定することにより、複数の前記グループ間の第2遷移を表す第2の状態遷移系を生成する状態遷移系生成手段と、
    前記第2の状態遷移系の前記第2遷移を網羅する遷移パスを生成する遷移パス生成手段と、
    生成された遷移パスに含まれる第2遷移を遷移順に特定し、特定された第2遷移の各々について、前記特定された第2遷移に対応する第1遷移の中から、1つ前に特定された第2遷移について選択された第1遷移の遷移先に対し遷移元が一致する第1遷移を順次選択することにより、前記生成された遷移パスを前記第1の状態遷移系上の遷移パスに変換する遷移パス変換部と、
    変換された遷移パスを、前記第1の状態遷移系をテストするためのテストケースとして出力する出力手段と、
    を備えたテストケース生成装置。
  2. 前記遷移パス変換部は、選択するべき第1遷移が存在しない第2遷移について、その遷移先のグループに含まれる状態のいずれかに対し、前記1つ前に特定された第2遷移について選択された前記第1遷移の遷移先からのパスを生成する
    ことを特徴とする請求項1に記載のテストケース生成装置。
  3. 前記遷移パス変換部は、前記パスとして、最短パスを生成することを特徴とする請求項2に記載のテストケース生成装置。
  4. 複数の状態間の第1遷移を表す第1の状態遷移系の入力を受け付ける第1の入力受付ステップと、
    複数の状態を定義域とし、前記状態をある値域内の値へ写像する写像関数の入力を受け付ける第2の入力受付ステップと、
    前記第1の状態遷移系に含まれる前記複数の状態を、前記写像関数によりそれぞれ写像して複数の写像値を取得し、取得された複数の写像値に基づいて前記複数の状態をグループ化するグループ化ステップと、
    2つの前記グループにおいて一方のグループに含まれる状態から他方のグループに含まれる状態への前記第1遷移が少なくとも1つ存在するときは前記一方のグループから前記他方のグループへの第2遷移を設定することにより、複数の前記グループ間の第2遷移を表す第2の状態遷移系を生成する状態遷移系生成ステップと、
    前記第2の状態遷移系の前記第2遷移を網羅する遷移パスを生成する遷移パス生成ステップと、
    生成された遷移パスに含まれる第2遷移を遷移順に特定し、特定された第2遷移の各々について、前記特定された第2遷移に対応する第1遷移の中から、1つ前に特定された第2遷移について選択された第1遷移の遷移先に対し遷移元が一致する第1遷移を順次選択することにより、前記生成された遷移パスを前記第1の状態遷移系上の遷移パスに変換する遷移パス変換ステップと、
    変換された遷移パスを、前記第1の状態遷移系をテストするためのテストケースとして出力する出力ステップと、
    を備えたテストケース生成方法。
  5. 前記遷移パス変換ステップは、選択するべき第1遷移が存在しない第2遷移について、その遷移先のグループに含まれる状態のいずれかに対し、前記1つ前に特定された第2遷移について選択された前記第1遷移の遷移先からのパスを生成する
    ことを特徴とする請求項4に記載のテストケース生成方法。
  6. 前記遷移パス変換ステップは、前記パスとして、最短パスを生成することを特徴とする請求項5に記載のテストケース生成方法。
  7. 請求項4ないし6のいずれか一項に記載の各ステップをコンピュータに実行させるためのプログラム。
JP2008117173A 2008-04-28 2008-04-28 テストケース生成装置およびその生成方法、ならびにテストケース生成のためのプログラム Expired - Fee Related JP5107131B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008117173A JP5107131B2 (ja) 2008-04-28 2008-04-28 テストケース生成装置およびその生成方法、ならびにテストケース生成のためのプログラム
US12/397,602 US8219573B2 (en) 2008-04-28 2009-03-04 Test case generation apparatus, generation method therefor, and program storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008117173A JP5107131B2 (ja) 2008-04-28 2008-04-28 テストケース生成装置およびその生成方法、ならびにテストケース生成のためのプログラム

Publications (2)

Publication Number Publication Date
JP2009266092A JP2009266092A (ja) 2009-11-12
JP5107131B2 true JP5107131B2 (ja) 2012-12-26

Family

ID=41215841

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008117173A Expired - Fee Related JP5107131B2 (ja) 2008-04-28 2008-04-28 テストケース生成装置およびその生成方法、ならびにテストケース生成のためのプログラム

Country Status (2)

Country Link
US (1) US8219573B2 (ja)
JP (1) JP5107131B2 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5106447B2 (ja) * 2009-03-10 2012-12-26 株式会社東芝 テストケース生成装置およびその生成方法、ならびにコンピュータプログラム
JP5149225B2 (ja) * 2009-03-16 2013-02-20 株式会社東芝 テストケース生成装置およびテストケース生成方法
CN102193858B (zh) * 2010-03-02 2013-11-06 中国科学院软件研究所 一种测试用例集生成方法
CN102654842B (zh) * 2011-03-02 2014-07-30 深圳市金蝶中间件有限公司 一种判断流程图中是否存在循环回路的方法和装置
JP6102448B2 (ja) * 2013-04-10 2017-03-29 富士通株式会社 検証支援プログラム、検証支援装置、および検証支援方法
US9286195B2 (en) * 2013-09-23 2016-03-15 Globalfoundries Inc. Derivation of generalized test cases
CN104850494B (zh) * 2015-04-29 2018-05-25 百度在线网络技术(北京)有限公司 一种用于存储系统测试的方法与设备
CN106681903B (zh) * 2015-11-11 2020-05-12 阿里巴巴集团控股有限公司 生成测试用例的方法及装置
CN106776260B (zh) * 2015-11-19 2019-04-19 北京计算机技术及应用研究所 两两组合测试用例生成的遍历搜索方法
CN107239398B (zh) * 2017-05-24 2020-01-31 四川长虹电器股份有限公司 一种基于Postman的接口测试用例自动生成系统及方法
CN109656801B (zh) * 2017-10-10 2022-05-13 大商所飞泰测试技术有限公司 一种基于路径自适应技术的业务流测试用例自动生成系统
CN108563580B (zh) * 2017-12-27 2024-02-23 贵阳忆芯科技有限公司 介质接口控制器微码执行路径提取方法
CN108595295B (zh) * 2017-12-27 2023-09-12 贵阳忆芯科技有限公司 微指令序列的测试方法与系统
CN109117363B (zh) * 2018-06-28 2020-09-25 腾讯科技(深圳)有限公司 一种测试用例生成方法、装置及服务器
FR3091106B1 (fr) * 2018-12-20 2021-02-12 Commissariat Energie Atomique Système de supervision formelle de communications
CN109977005B (zh) * 2019-02-13 2022-11-25 网易(杭州)网络有限公司 端到端测试方法、介质、装置和计算设备
CN115098362B (zh) * 2022-06-16 2023-04-28 北京百度网讯科技有限公司 页面测试方法、装置、电子设备以及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3415310B2 (ja) * 1994-01-26 2003-06-09 株式会社東芝 テストケース作成装置
JPH07271568A (ja) * 1994-03-31 1995-10-20 Toshiba Corp プログラム生成装置
JPH1117777A (ja) * 1997-06-20 1999-01-22 Mitsubishi Electric Corp 相互運用性試験仕様生成方法
US6557119B1 (en) * 1999-10-01 2003-04-29 Stmicroelectronics Limited Microcomputer debug architecture and method
US6675125B2 (en) * 1999-11-29 2004-01-06 Syfx Statistics generator system and method
JP2008243122A (ja) * 2007-03-29 2008-10-09 Fukuoka Pref Gov Sangyo Kagaku Gijutsu Shinko Zaidan 検証装置、検証方法、プログラム、及び、記録媒体
JP2009134360A (ja) * 2007-11-28 2009-06-18 Nec Corp モデル検査システム、モデル検査方法およびモデル検査用プログラム
JP2009211503A (ja) * 2008-03-05 2009-09-17 Nec Corp ソースコード検証装置、及びソースコード検証方法

Also Published As

Publication number Publication date
US20090271139A1 (en) 2009-10-29
JP2009266092A (ja) 2009-11-12
US8219573B2 (en) 2012-07-10

Similar Documents

Publication Publication Date Title
JP5107131B2 (ja) テストケース生成装置およびその生成方法、ならびにテストケース生成のためのプログラム
JP5149225B2 (ja) テストケース生成装置およびテストケース生成方法
US10540350B2 (en) Source code search engine
US10929294B2 (en) Using caching techniques to improve graph embedding performance
US9912610B2 (en) Data-plane stateful processing units in packet processing pipelines
US9262213B1 (en) Dynamic suggestion of next task based on task navigation information
JP6253521B2 (ja) プログラム可視化装置、プログラム可視化方法、及びプログラム可視化プログラム
KR20200093441A (ko) 지식 그래프 중의 데이터 모델을 획득하는 방법, 장치, 기기 및 저장 매체
US10592304B2 (en) Suggesting application programming interfaces based on feature and context analysis
JP2017146846A (ja) 作業手順生成支援装置、作業手順生成支援方法、およびプログラム
CN110352417A (zh) 本体构建辅助装置
KR20150128711A (ko) 컴퓨터 시스템 활동의 트레이스 타임라인을 분석하기 위한 방법 및 시스템
WO2020230043A1 (en) Feature vector feasibilty estimation
US20230140365A1 (en) Automated circuit topology selection and configuration
KR101053897B1 (ko) 상황 정보 관리 시스템 및 방법과 상황 정보 생성 방법
CN116432185A (zh) 一种异常检测方法、装置、可读存储介质及电子设备
CN109242168A (zh) 确定最短路径的方法、装置、设备和计算机可读存储介质
CN114265846A (zh) 一种数据操作方法、装置、电子设备和存储介质
JP2009163662A (ja) 情報処理装置、情報処理装置の制御方法、および情報処理装置の制御プログラム
CN106155898B (zh) 一种流程图的路径获取方法及装置
JP7127686B2 (ja) 仮説推論装置、仮説推論方法、及びプログラム
US8843896B2 (en) Metamodeling contextual navigation of computer software applications
CN113779311A (zh) 一种数据处理的方法、装置和存储介质
JP2009075738A (ja) 検索結果絞り込みシステム、検索結果絞り込み方法、及び検索結果絞り込みプログラム
US20190036768A1 (en) Alteration procedure generation system, alteration procedure generation method, and program storage medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110323

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120822

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

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

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

Free format text: PAYMENT UNTIL: 20151012

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees