JP2010267023A - テストデータ生成方法及び装置及びプログラム - Google Patents

テストデータ生成方法及び装置及びプログラム Download PDF

Info

Publication number
JP2010267023A
JP2010267023A JP2009116917A JP2009116917A JP2010267023A JP 2010267023 A JP2010267023 A JP 2010267023A JP 2009116917 A JP2009116917 A JP 2009116917A JP 2009116917 A JP2009116917 A JP 2009116917A JP 2010267023 A JP2010267023 A JP 2010267023A
Authority
JP
Japan
Prior art keywords
test data
level
data specification
factor
input
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.)
Granted
Application number
JP2009116917A
Other languages
English (en)
Other versions
JP5164919B2 (ja
Inventor
Akimasa Cho
暁晶 張
Takashi Hoshino
隆 星野
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2009116917A priority Critical patent/JP5164919B2/ja
Publication of JP2010267023A publication Critical patent/JP2010267023A/ja
Application granted granted Critical
Publication of JP5164919B2 publication Critical patent/JP5164919B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】 テストデータを自動生成し、さらに、設計モデルの記述労力を削減する。
【解決手段】 本発明は、ユーザ端末より、UMLクラス図とアクティビティ図のみで記述した設計モデルを読み込み、設計モデルからアクティビティ図をテスト対象として抽出し、テスト対象から実行経路を抽出する。抽出された各実行経路の制約条件に基づいて、テストデータ仕様を更新する。テストデータ仕様を読み込み、因子毎に、「水準」を生成し、因子と水準の組み合わせである「入力」に対する実行経路を取得し、「入力」が実行経路にとって許容する入力である正常入力、または、該実行経路にとって許容しない入力である異常入力のいずれであるか、及び、実行経路中に事後条件が含まれるか否かにより期待値を求め、「入力」に該期待値を付与したテストデータを生成する。
【選択図】 図1

Description

本発明は、テストデータ生成方法及び装置及びプログラムに係り、特に、プログラム開発工程において、設計モデルに記述された設計意図の通りにシステムが構築されたか否かを確認するためのテストで用いるテストデータを人手により作成するのではなく、設計モデルにより自動的に作成するためのテストデータ生成方法及び装置及びプログラムに関する。
プログラム開発工程におけるテストでは、システムが設計どおりに構築されたか否かという確認を行うため、テストデータを用いる。当該テストデータを構築するために、人手に依らず自動でテストデータを準備できれば開発コストの改善が期待できる。
そのためのテストデータの自動生成技術として、プログラム中で扱う数値や論理値などの基本データ型に対応させてテストデータを生成する技術がある(例えば、非特許文献1参照)。しかし、当該技術では、階層構造を持つデータ型を多用する現実的なシステムへの適用には隔たりがある。そこで、階層構造を持つ複雑なデータ型を基本型にまで分解し、その各基本型に対して所定の値を与えることによりテストデータを生成する技術がある(例えば、特許文献1参照)。しかし、当該技術では、システム内部の実行経路を考慮していないため、効果的なテストデータが生成できないという問題がある。
また、設計モデルに基づいてテストデータを自動生成する技術がある(例えば、非特許文献2参照)。しかし、当該技術は、テストデータ自動生成の入力となる設計モデルを、利用者にとって難解な記法や独自の記法を用いて作成しなければならないため、利用障壁が高いという問題がある。
さらに、テストデータの自動生成の入力が、設計モデルであるか否かによらず、一般的に、特定実行経路をテストするためのテストデータ生成は、解くのが難しいとされる「制約充足問題」の一種である。動的な探索により適切な解を見つける手法がある(例えば、非特許文献3参照)。しかし、探索を用いた手法ではトライアンドエラーによる生成であるため、テストデータの網羅性を確保できないのが難点である。
特開平9−121103号公報
Jon Edvardsson. "A Survey on Automatic Test Data Generation". In Proceedings of the 2nd Conference on Computer Science and engineering, pages 21-28, 1999. http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.20.963 Eddie, Jaffuel, Bruno Legeard, "LEIRIOS Test Generator: Automated Test Generation from B Models", Lecture Notes in computer Science, Volume 4355, pages 277-280, 2006. http://www.springerlink.com/content/026252518x28211h/ Mark Harman, "Automated Test Data Generation using Search Based software Engineering, In Proceedings of the Second international Workshop on Automation of Software Test, International Conference on Software engineering. IEEE Computer Society, 2007. http://portal.acm.org/citation. cfm?id=127230.1270255
上記のように、従来の設計モデルを用いて特定実行経路のためのテストデータを生成する技術は、トライアンドエラーによる生成手法を用いるため、確実にテストデータの網羅性を保証できないという問題は解決できない。
本発明は、上記の点に鑑みなされたもので、構造体やオブジェクト型データを含む設計モデルに基づくシステムへのテストデータを自動生成することが可能で、さらに、設計モデルの記述労力の削減を可能とするテストデータ生成方法及び装置及びプログラムを提供することを目的とする。
図1は、本発明の原理構成図である。
本発明(請求項1)は、システムの設計情報を形式的な言語で記述した設計モデルの設計意図に沿って、システムが構築されたか否かを確認するためのテストデータを生成するテストデータ生成装置であって、
ユーザ端末より、UMLクラス図とアクティビティ図のみで記述した設計モデルを読み込む設計モデル読込手段1と、
読み込まれた設計モデルからアクティビティ図をテスト対象として抽出する設計モデル分析手段2と、
テスト対象から実行経路を抽出する実行経路抽出手段3と、
実行経路抽出手段3から抽出された各実行経路を持つアクティビティの入力パラメータを変数(実験計画法でいう「因子」)とし、該変数が満たすべき制約条件を実行経路の始点ノードから終点ノードを走査することで抽出し、該制約条件及び変数の型に基づいて、テストデータ仕様記憶手段8に格納されているテストデータ仕様を更新するテストデータ仕様生成手段4と、
テストデータ仕様記憶手段8からテストデータ仕様を読み込み、該テストデータ仕様毎に、因子のとる値(実験計画法でいう「水準」)を生成し、該因子と該水準を記憶手段に格納する水準生成手段5と、
因子と水準を取得して、該因子と該水準の組み合わせである「入力」に対する実行経路を取得し、該「入力」が実行経路にとって許容する入力である正常入力、または、該実行経路にとって許容しない入力である異常入力のいずれであるか、及び、実行経路中に事後条件が含まれるか否かにより期待値を求め、該「入力」に該期待値を付与したテストデータを生成する組み合わせ手段6と、
テストデータをユーザ端末に出力する出力手段7と、を有する。
また、本発明(請求項2)のテストデータ仕様生成手段3は、
テストデータ仕様が、オブジェクト型であるとき、
制約条件に含まれるオペレータが「null(ヌル)でない」の場合は、テストデータ仕様記憶手段のオブジェクト型テストデータ仕様に「Nullを許容しない」ことを記録する手段と、
制約条件に含まれるオペレータが「nullである」の場合は、テストデータ仕様記憶手段のオブジェクト型テストデータ仕様に「nullを許容する」ことを記録する手段と、
制約条件に含まれるオペレータが上記以外である場合は、テストデータ仕様記憶手段のテストデータ仕様に含まれる各属性の仕様の列を取得して、該テストデータ仕様の因子名と制約条件に含まれる因子名を比較して、一致する場合には、該制約条件を用いて該テストデータ仕様を更新する手段と、を含む。
また、本発明(請求項3)の水準生成手段5は、
テストデータ仕様が、オブジェクト型であるとき、水準を生成せず、
組み合わせ生成手段6は、
テストデータ仕様が、オブジェクト型であるとき、
オブジェクト型の階層構造を展開した際に、リーフのいずれかに異常を含む組み合わせをオブジェクト型の異常水準として生成し、全て正常である組み合わせを正常水準として生成する手段を含む。
また、本発明(請求項4)の組み合わせ生成手段6は、
水準生成手段5で求められた全因子の全ての正常水準を取得し、全因子の中で最も正常水準を多く持つ因子Aの正常水準数を特定し、該因子Aの正常水準を該正常水準数だけテストデータの正常入力に設定し、該因子A以外の各因子については、該因子の正常水準をテストデータに設定する手段と、
水準生成手段5で求められた全因子の全ての異常水準を取得し、該異常水準数を特定し、生成した正常入力を異常入力に上書きする手段と、を含む。
図2は、本発明の原理を説明するための図である。
本発明(請求項5)は、システムの設計情報を形式的な言語で記述した設計モデルの設計意図に沿って、システムが構築されたか否かを確認するためのテストデータを生成するテストデータ生成方法であって、
ユーザ端末より、UMLクラス図とアクティビティ図のみで記述した設計モデルを読み込む設計モデル読込ステップ(ステップ1)と、
読み込まれた設計モデルからアクティビティ図をテスト対象として抽出する設計モデル分析ステップ(ステップ2)と、
テスト対象から実行経路を抽出する実行経路抽出ステップ(ステップ3)と、
抽出された各実行経路を持つアクティビティの入力パラメータを変数(実験計画法でいう「因子」)とし、該変数が満たすべき制約条件を実行経路の始点ノードから終点ノードを走査することで抽出し、該制約条件及び変数の型に基づいて、テストデータ仕様記憶手段に格納されているテストデータ仕様を更新するテストデータ仕様生成ステップ(ステップ4)と、
テストデータ仕様記憶手段からテストデータ仕様を読み込み、該テストデータ仕様毎に、因子のとる値(実験計画法でいう「水準」)を生成し、該因子と該水準を記憶手段に格納する水準生成ステップ(ステップ5)と、
因子と水準を取得して、該因子と該水準の組み合わせである「入力」に対する実行経路を取得し、該「入力」が実行経路にとって許容する入力である正常入力、または、該実行経路にとって許容しない入力である異常入力のいずれであるか、及び、実行経路中に事後条件が含まれるか否かにより期待値を求め、該「入力」に該期待値を付与したテストデータを生成する組み合わせステップ(ステップ6)と、
テストデータをユーザ端末に出力する出力ステップ(ステップ7)と、を行う。
また、本発明(請求項6)は、テストデータ仕様生成ステップにおいて、
テストデータ仕様が、オブジェクト型であるとき、
制約条件に含まれるオペレータが「null(ヌル)でない」の場合は、テストデータ仕様記憶手段のオブジェクト型テストデータ仕様に「Nullを許容しない」ことを記録し、
制約条件に含まれるオペレータが「nullである」の場合は、テストデータ仕様記憶手段のオブジェクト型テストデータ仕様に「nullを許容する」ことを記録し、
制約条件に含まれるオペレータが上記以外である場合は、テストデータ仕様記憶手段のテストデータ仕様に含まれる各属性の仕様の列を取得して、該テストデータ仕様の因子名と制約条件に含まれる因子名を比較して、一致する場合には、該制約条件を用いて該テストデータ仕様を更新する。
また、本発明(請求項7)は、水準生成ステップにおいて、テストデータ仕様が、オブジェクト型であるとき、水準は生成せずに、
組み合わせ生成ステップにおいて、オブジェクト型の階層構造を展開した際に、リーフのいずれかに異常を含む組み合わせをオブジェクト型の異常水準として生成し、全て正常である組み合わせを正常水準として生成する。
また、本発明(請求項8)は、組み合わせステップにおいて、
水準生成ステップで求められた全因子の全ての正常水準を取得し、全因子の中で最も正常水準を多く持つ因子Aの正常水準数を特定し、該因子Aの正常水準を該正常水準数だけテストデータの正常入力に設定し、該因子A以外の各因子については、該因子の正常水準をテストデータに設定し、
全因子の全ての異常水準を取得し、該異常水準数を特定し、生成した正常入力を異常入力に上書きする。
本発明(請求項9)は、請求項1乃至4記載のいずれか1項記載のテストデータ生成装置を構成する各手段としてコンピュータを機能させるためのテストデータ生成プログラムである。
上記のように本発明によれば、基本データ型(Boolean型、Enum型、Integer型、String型)に対するテストデータ仕様を作成すると共に、それらを組み合わせたオブジェクト型テストデータ仕様を定義することで、複雑なデータ構造にも対応可能となる。これにより、階層構造を扱った現実的なシステムにおいてもテストデータ生成が利用可能である。
また、特殊な言語を使わずに、入力となる設計モデルを標準的なUMLのクラス図とアクティビティ図のみとし、アクティビティ図を走査し、実行経路途中の制約条件に従ってテストデータ仕様を更新することで、テストデータ生成の適用障壁を低減させることが可能となる。
本発明の原理構成図である。 本発明の原理を説明するための図である。 本発明で用いるUML設計モデルのイメージを示す図である。 本発明の一実施の形態におけるテストデータ生成装置の構成図である。 本発明の一実施の形態におけるテストデータ仕様のフォーマットを示す図である。 本発明の一実施の形態におけるテストデータ生成装置の入出力イメージである。 本発明の一実施の形態におけるテストデータ生成処理概要のフローチャートである。 本発明の一実施の形態における実行経路抽出部で抽出される実行経路の例である。 本発明の一実施の形態におけるテストデータ仕様生成部のフローチャートである。 本発明の一実施の形態における実行経路を説明するための図である。 本発明の一実施の形態におけるテストデータ仕様の初期化の例である。 本発明の一実施の形態におけるテストデータ仕様の初期化時のデフォルト値である。 本発明の一実施の形態におけるテストデータ仕様生成部のテストデータ仕様の更新のフローチャートである。 本発明の一実施の形態における制約条件によるテストデータ仕様の更新のフローチャートである。 本発明の一実施の形態におけるステップ520の詳細なフローチャートである。 本発明の一実施の形態におけるBoolean型テストデータ仕様の更新のフローチャートである。 本発明の一実施の形態におけるEnum型テストデータ仕様の更新のフローチャートである。 本発明の一実施の形態におけるInteger型テストデータ仕様の更新のフローチャートである。 本発明の一実施の形態におけるString型テストデータ仕様の更新のフローチャートである。 本発明の一実施の形態におけるObject型テストデータ仕様の更新のフローチャートである。 本発明の一実施の形態におけるObject型テストデータ仕様の更新の例である。 本発明の一実施の形態における水準生成のフローチャートである。 本発明の一実施の形態におけるBoolean型テストデータ仕様からの水準生成のフローチャートである。 本発明の一実施の形態におけるEnum型テストデータ仕様からの水準生成のフローチャートである。 本発明の一実施の形態におけるInteger型テストデータ仕様からの水準生成のフローチャートである。 本発明の一実施の形態におけるString型テストデータ仕様からの水準生成のフローチャートである。 本発明の一実施の形態におけるステップ1642の詳細な動作のフローチャートである。 本発明の一実施の形態におけるステップ1643の詳細な動作のフローチャートである。 本発明の一実施の形態におけるObject型テストデータ仕様からの水準生成のフローチャートである。 本発明の一実施の形態におけるステップ1657の詳細なフローチャートである。 本発明の一実施の形態における水準設定の例である。 本発明の一実施の形態における組み合わせ生成部の処理のフローチャートである。 本発明の一実施の形態における正常入力の生成のフローチャートである。 本発明の一実施の形態における異常入力の生成のフローチャートである。 本発明の一実施の形態における入力に期待値を付与する処理のフローチャートである。
以下、図面と共に本発明の実施の形態を説明する。
最初に、以下の説明で用いられる用語について説明する。
「設計モデル」とは、図3に示すように、システムの設計情報を、曖昧性を持つ自然言語ではなく、何らかの形式的な記述言語により厳密的・形式的に記述したものである。図3は、UML設計モデルの例であり、クラス図とアクティビティ図を示しており、これがユーザ端末側からモデリングツールによりXMLファイルにエクスポートされる。
「制約条件」とは、『a>3』のようなある因子(ここではa)の取り得る値に関する条件を指す。『a>3』の例では、制約条件は因子の名前(a)、オペレータ(>)、オペランド(3)から成り、当該制約条件が付けられている場所により、「不変条件」、「事前条件」、「分岐条件」の3種類に分かれる。制約条件のオペレータには、不等号や文字列比較等通常使われる記法を用いる。
「テストデータ仕様」とは、設計モデル中の特定の実行経路を通るための因子(変数)が満たすべき性質を集めたもので、テストデータが満たすべき「仕様」を指す。
「テストデータ仕様の更新」とは、テストデータ仕様を、生成直後の初期値から実行経路中の制約条件の処理に従って上書きしていくことである。
図4は、本発明の一実施の形態におけるテストデータ生成装置の構成を示す。
同図に示すテストデータ装置は、設計モデル読込部1、設計モデル分析部2、実行経路抽出部3、テストデータ仕様生成部4、水準生成部5、テストデータ生成部6、出力部7、実行経路・水準記憶部11、テストデータ仕様記憶部12、テストデータ記憶部13から構成される。当該構成において、設計モデル読込部1、設計モデル分析部2、実行経路抽出部3、テストデータ仕様生成部4、水準生成部5、テストデータ生成部6、出力部7は、CPU上の機能であり、実行経路・水準記憶部11、テストデータ仕様記憶部12、テストデータ記憶部13は、ハードディスク装置等の記憶媒体である。また、図示しないが各構成要素内に一時的データを記憶するメモリを備えているものとする。
設計モデル読込部1は、ユーザ端末20のモデリングツール21からエクスポートされた図3に示すようなXML形式のUMLモデル(クラス図、アクティビティ図)を読み込む。
設計モデル分析部2は、読み込まれたUMLモデルを分析して、アクティビティをテスト対象として抽出する。
実行経路抽出部3は、テスト対象から実行経路(Path)を抽出し、テストデータ仕様生成部4及び実行経路・水準記憶部11に出力する。
テストデータ仕様生成部4は、実行経路抽出部3で抽出された全実行経路のうちの、各実行経路に対して当該実行経路を通るための、変数(実験計画法でいう「因子」)が満たすべき性質を集め、テストデータ仕様記憶部12に格納する。オブジェクト型テストデータ仕様は、その内部に因子の属性(アトリビュート)のそれぞれのテストデータ仕様を再帰的に持つ。テストデータ仕様は、図5に示すように、データ型毎に異なり、因子を規定するドメインをもつ。ドメインは更新(上書き)されるに従い、範囲が狭められていくものとする。また、データ型は、Integer型、Enum型、Object型、Boolean型、String型、Collection型等がある。但し、Object型テストデータ仕様は、階層構造に対応するため、当該因子の属性のテストデータ仕様を含む。
水準生成部5は、テストデータ仕様記憶部12からテストデータ仕様を読み込み、因子のとる値(実験計画法でいう「水準」)を生成し、実行経路・水準記憶部11に格納する。なお、オブジェクト型テストデータ仕様からの水準の生成は、各属性(アトリビュート)がとる値の組み合わせを決める必要があるため、テストデータ生成部6で行う。
テストデータ生成部6は、実行経路・水準記憶部11から実行経路と水準を取得し、入力と期待値のペアを含むテストデータを生成し、図6(B)に示すようなフォーマットでテストデータ記憶部13に格納する。テストデータは、図6(B)に示すように、実行経路名、テストデータID、水準(値)、因子(変数)、期待値、正常入力または異常入力区別、テスト結果の項目からなる。なお、「入力」とは、因子と水準の組み合わせである。オブジェクト型テストデータ仕様からの水準の生成は、当該テストデータ生成部6の入力生成を利用する。オブジェクト型の階層構造を展開した際に、(リーフ)のどこかに異常を含むような組み合わせを、オブジェクト型の「異常水準」として生成し、全て正常であるような組み合わせを、オブジェクト型の「正常水準」として生成する。ここで「正常水準」とは、実行経路にとって許容する入力値であり、「異常水準」とは、実行経路にとって許容しない入力値をさす。
出力部7は、テストデータ生成部6で生成されたテストデータをテストデータ記憶部13から読み出してユーザ端末20に出力する。ここでは、CSV形式で出力するものとする。
上記の構成における動作を説明する。
図7は、本発明の一実施の形態におけるテストデータ生成処理概要のフローチャートである。
ステップ100) 設計モデル読込部1は、ユーザ端末20から図6(A)に示すようなUML設計モデルを読み込む。
ステップ110) 設計モデル分析部2は、UML設計モデルを分解し、アクティビティをテスト対象として抽出する。
ステップ120) 実行経路抽出部3は、図8に示すように、アクティビティについて開始ノードから終了ノードまで走査し、実行経路を抽出し、テストデータ仕様生成部4と実行経路・水準記憶部11に出力する。
ステップ130) テストデータ仕様生成部4は、実行経路抽出部3から取得した実行経路を内部のメモリ(図示せず)に格納し、図9に示す処理を行い、生成されたテストデータ仕様をテストデータ仕様記憶部12に格納する。当該処理については後述する。
ステップ140) 水準生成部5は、テストデータ仕様記憶部12からテストデータ仕様を読み込んで、各テストデータ仕様について図22に示す処理を行うことにより水準を生成する。詳細については後述する。なお、水準生成部5は、生成された水準と、テストデータ仕様記憶部12から取得したテストデータ仕様の「実行経路」の情報を関連付けて実行経路・水準記憶部11に格納しておくものとする。
ステップ150) テストデータ生成部6は、水準生成部5で求められた実行経路に関連付けられた水準を実行経路・水準記憶部11から取得して、図32に示す処理を行い、テストデータをテストデータ記憶部13に格納する。
ステップ160) 出力部7は、テストデータ記憶部13からテストデータを取得してユーザ端末20のビューア22に出力する。
以下、テストデータ生成装置の各構成要素の動作を説明する。
<テストデータ仕様生成部4>
次に、上記のステップ130のテストデータ仕様生成部4の動作を説明する。
図9は、本発明の一実施の形態におけるテストデータ仕様生成部のフローチャートである。
ステップ300) テストデータ仕様生成部4は、実行経路抽出部3から実行経路を取得しメモリ(図示せず)に格納する。
ステップ310) ステップ300で取得した実行経路を持つアクティビティを取得する。
ステップ320) 取得したアクティビティの入力パラメータ(図10の例では、「p:People」と「flag:Boolean」)を因子として抽出する。
ステップ330) 抽出した各因子に対して、テストデータ仕様記憶部12に、テストデータ仕様のレコードを生成し、初期値を設定する。図11は、本発明の一実施の形態におけるテストデータ仕様の初期化の例を示す。同図の例は、String型テストデータとInteger型テストデータ仕様を有する因子名「p」のObject型テストデータ仕様の例である。初期化時は、同図(A)に示すように、デフォルト値を埋めておく。また、因子の型(同図の例ではPeople)に付与される。不変条件があれば、同図(B)に示すようにテストデータ仕様の該当する箇所を不変条件で初期化する。各テストデータ仕様の型毎のデフォルト値を図12に示す。なお、デフォルト値のMIN、MAXはInteger型がとり得る最大値、最小値を示す。また、nullは特に規定しないことを表す。
ステップ340) テストデータ仕様の更新を行う。以下にその詳細を説明する。
図13は、本発明の一実施の形態におけるテストデータ仕様生成部のテストデータ仕様の更新のフローチャートである。
ステップ400) 実行経路を取得する。当該実行経路は、図10に示すように、ノードとエッジから構成される。
ステップ410) 実行経路中の全制約条件を取得する。
ステップ420) 制約条件に基づいてテストデータ仕様記憶部12のテストデータ仕様を更新する。詳細については、以下図14に沿って説明する。
図14は、本発明の一実施の形態における制約条件によるテストデータ仕様の更新のフローチャートである。
ステップ500) 実行経路抽出部3から取得した実行経路から制約条件を取得する。
ステップ510) テストデータ仕様記憶部12より1件のテストデータ仕様を取得し、全て取得済みであれば、当該処理を終了する。
ステップ520) 未取得のテストデータ仕様がある場合は、テストデータ仕様の因子名と、制約条件に含まれる因子名を比較する。因子名が一致すれば、ステップ530に移行し、一致しなければステップ510に戻る。
ステップ530) テストデータ仕様記憶部12のテストデータ仕様を、制約条件を用いて更新する。当該制約条件による更新処理については、図15に沿って説明する。
図15は、本発明の一実施の形態におけるステップ520の詳細なフローチャートである。
ステップ600) テストデータ仕様記憶部12から制約条件とテストデータ仕様を取得し、テストデータ仕様の型がどれであるか判断し、各テストデータ仕様の型に基づいて、以下の処理を行う。
ステップ610) テストデータ仕様の型が、Boolean型である場合は、制約条件に基づくBoolean型テストデータ仕様の更新を行う。当該処理の詳細については、以下図16に沿って説明する。Boolean型のテストデータ仕様のフォーマットは図5に示す通りである。
ステップ611) 実行経路抽出部3から取得した実行経路から制約条件を取得し、制約条件に含まれるオペレータが、『≠』、『=』、『その他』のいずれであるか判定する。
ステップ612) オペレータが『≠』の場合は、後続するオペランドを取得する。
ステップ613) オペランドが「true」か「false」のいずれかであれば、Boolean型テストデータ仕様の『値v』をオペランドの値の「否定」にして更新し、処理を終了する。「true」か「false」のいずれでもない場合はステップ616に移行する。
ステップ614) 制約条件に含まれるオペレータが『=』の場合は、後続するオペランドを取得する。
ステップ615) オペランドが「true」か「false」のいずれかであれば、Boolean型テストデータ仕様の『値v』をオペランドの値にして更新し、ステップ616にする。「true」か「false」のいずれでもない場合は処理を終了する。
ステップ616) ステップ611において、制約条件に含まれるオペレータが「≠」か「=」でない場合、及びオペランドが「true」か「false」のいずれでもない場合は、「異常状態」で停止する。
ステップ620) テストデータ仕様の型が、Enum型である場合は、制約条件に基づくEnum型テストデータ仕様の更新を行う。当該処理の詳細については、以下図17に沿って説明する。図17は、本発明の一実施の形態におけるEnum型テストデータ仕様の更新のフローチャートである。Enum型のテストデータ仕様のフォーマットは図5に示す通りである。
ステップ621) 実行経路抽出部3から取得した実行経路から制約条件を取得して、制約条件に含まれるオペレータが『≠』である場合は、ステップ622に移行し、『=』である場合はステップ623に移行し、それ以外の場合はステップ626に移行する。
ステップ622) 後続するオペランドを取得して、オペランドの値が、テストデータ仕様の「許容する要素S」に含まれるかを判定し、含まれる場合はステップ623に移行し、含まれない場合は、ステップ626に移行する。
ステップ623) Enum型テストデータ仕様の「許容する要素S」を、Sから「オペランドの値」を除いたものに更新し、処理を終了する。
ステップ624) 後続するオペランドを取得して、オペランドの値がテストデータ仕様の「許容する要素S」に含まれるかを判定し、含まれる場合はステップ625に移行し、含まれない場合は、ステップ626に移行する。
ステップ625) Enum型テストデータ仕様の「許容する要素sの集合S」を「オペランドの値」に更新し、処理を終了する。
ステップ626) ステップ621で制約条件に含まれるオペレータが「≠」、「=」のいずれでもない場合、または、ステップ622,624において、オペランドの値が、テストデータの「許容する要素S」に含まれない場合は、「異常状態」で停止する。
ステップ630) テストデータ仕様の型が、Integer型である場合は、制約条件に基づくInteger型テストデータ仕様の更新を行う。当該処理の詳細については、以下図18に沿って説明する。図18は、本発明の一実施の形態におけるInteger型テストデータ仕様の更新のフローチャートである。Integer型のテストデータ仕様のフォーマットは図5に示す通りである。
ステップ631) 制約条件を取得し、制約条件に含まれるオペレータを判定する。
ステップ632) オペレータが「=」の場合は、後続するオペランドを取得して、Integer型テストデータ仕様の「下限L」と「上限U」をオペランドの値に更新し、処理を終了する。
ステップ633) オペレータが「>」の場合は、後続するオペランドを取得して、Integer型テストデータ仕様の「下限L」をオペランドの値+1に更新し、処理を終了する。
ステップ634) オペレータが「≧」の場合は、後続するオペランドを取得して、Integer型テストデータ仕様の「下限L」をオペランドの値に更新し、処理を終了する。
ステップ635) オペレータが「<」の場合は、後続するオペランドを取得して、Integer型テストデータ仕様の「上限U」をオペランドの値−1に更新し、処理を終了する。
ステップ636) オペレータが「≦」の場合は、後続するオペランドを取得して、Integer型テストデータ仕様の「上限U」をオペランドの値に更新し、処理を終了する。
ステップ637) ステップ631で制約条件に含まれるオペレータが「=」「>」「≧」「<」「≦」のいずれでもない場合には、「異常状態」で停止する。
ステップ640) テストデータ仕様の型が、String型である場合は、制約条件に基づくString型テストデータ仕様の更新を行う。当該処理の詳細については、以下、図19に沿って説明する。図19は、本発明の一実施の形態におけるString型テストデータ仕様の更新のフローチャートである。String型のテストデータ仕様のフォーマットは図5に示す通りである。
ステップ641) 制約条件を取得して、制約条件に含まれるオペレータが「contains」、「=」、「length」、または、それ以外かを判定する。
ステップ642) オペレータが「contains」の場合は、後続するオペランドを取得して、String型テストデータ仕様の「部分文字列c」をオペランドの値に更新する。そして、オペランドの長さがテストデータ仕様の「長さ下限L」より大きい場合は、String型テストデータ仕様の「長さ下限L」をオペランドの長さに更新する。
ステップ643) オペレータが「=」の場合は、後続するオペランドを取得して、String型テストデータ仕様の「等しい文字列E」をオペランドの値に更新する。そして、String型テストデータ仕様の「長さ下限L」と「長さ上限U」をオペランドの長さに更新する。
ステップ644) オペレータが「length」であり、制約条件に更に含まれるオペレータが「=」の場合は、後続するオペランドを取得して、String型テストデータ仕様の「長さ下限L」と「長さ上限U」をオペランドの値に更新する。
ステップ645) オペレータが「length」であり、制約条件に更に含まれるオペレータが『>』の場合は、後続するオペランドを取得して、String型テストデータ仕様の「長さ下限L」をオペランドの値+1に更新する。
ステップ646) オペレータが「length」であり、制約条件に更に含まれるオペレータが『≧』の場合は、後続するオペランドを取得して、String型テストデータ仕様の「長さ下限L」をオペランドの値に更新する。
ステップ647) オペレータが「length」であり、制約条件に更に含まれるオペレータが『<』の場合は、後続するオペランドを取得して、String型テストデータ仕様の「長さ上限U」をオペランドの値−1に更新する。
ステップ648) オペレータが「length」であり、制約条件に更に含まれるオペレータが『≦』の場合は、後続するオペランドを取得して、String型テストデータ仕様の「長さ上限U」をオペランドの値に更新する。
ステップ649) 制約条件に含まれるオペレータが「contains」、「=」、「length」のいずれでもなく、または、オペレータが「length」であっても、制約条件に更に含まれるオペレータが『=』『>』『≧』『<』『≦』以外であれば、「異常状態」で停止する。
ステップ650) テストデータ仕様の型が、Object型である場合は、制約条件に基づくObject型テストデータ仕様の更新を行う。当該処理の詳細については、以下、図20に沿って説明する。図20は、本発明の一実施の形態におけるObject型テストデータ仕様の更新のフローチャートである。Object型のテストデータ仕様のフォーマットは図5に示す通りである。
ステップ651) 制約条件を取得し、当該制約条件に含まれるオペレータを判定する。
ステップ652) オペレータが「≠null」(nullでない)」の場合は、Object型テストデータ仕様の「ヌルかn」を「false」に更新する。
ステップ653) オペレータが「=null」(nullである)」の場合は、Object型テストデータ仕様の「ヌルかn」を「true」に更新する。
ステップ654) オペレータが上記の「≠null」「=null」のいずれでもない場合は、テストデータ仕様の「属性の仕様A」より1件のテストデータ仕様を取得する。
ステップ655) 全ての取得済みである場合は、処理を終了し、全て取得済みでない場合は、テストデータ仕様の因子名と、制約条件に含まれる因子名を比較し、一致する場合はステップ656に移行し、一致しない場合は、ステップ654に移行する。
ステップ656) テストデータ仕様を制約条件を用いて更新する。
以下にObject型テストデータ仕様の更新の例を示す。
図21は、本発明の一実施の形態におけるObject型テストデータ仕様の更新の例を示す。
同図(A)のような入力されたUMLモデル(クラス(因子の型)とアクティビティ)から開始ノードから終了ノードまでの実行経路を取得し、制約条件「p.age>=20」を取得し、オペレータが「≠null」でも「=null」でもないので、因子名p自身ではなく、pの属性に関する制約条件であると判断し、テストデータ仕様記憶部12からpのテストデータ仕様のうち、各属性の仕様Aの列要素の1つ1つを取得し、1件目の「name」のテストデータ仕様を見ると、因子名は不一致である。2件目の「age」のテストデータ仕様を見ると因子名が一致するので、当該テストデータ仕様を更新する。
<水準生成部4>
次に、図7のステップ140の水準生成部4の処理について説明する。
図22は、本発明の一実施の形態における水準生成処理のフローチャートである。
ステップ1600) テストデータ仕様記憶部12からテストデータ仕様を取得して、テストデータの種類が、Boolean型、Enum型、Integer型、String型、Object型のいずれであるかを判定する。
ステップ1610) テストデータ仕様がBoolean型である場合は、図23の処理により水準を生成し、実行経路に対応付けて実行経路・水準記憶部11に格納する。図23は、本発明の一実施の形態におけるBoolean型テストデータ仕様からの水準生成のフローチャートである。
ステップ1611) Boolean型テストデータ仕様の「値v」を取得し、「値v」が初期値であるかを判定する。
ステップ1612) 初期値である場合は、水準のtrue、falseを正常水準として生成し、実行経路と対応付けて実行経路・水準記憶部11に格納し、ステップ1615に移行する。
ステップ1613) 初期値でない場合は、値vを正常水準として格納する。
ステップ1614) 値vの否定を異常水準として格納する。
ステップ1615) null、Boolean型でない値を異常水準として格納する。
ステップ1620) テストデータ仕様がEnum型である場合は、図24の処理によりEnum型のテストデータ仕様からの水準を生成し、実行経路に対応付けて実行経路・水準記憶部11に格納する。図24は、本発明の一実施の形態におけるEnum型テストデータ仕様からの水準生成のフローチャートである。
ステップ1621) Enum型テストデータ仕様の許容する要素sの集合Sを取得する。
ステップ1622) 許容する要素sの集合S内の各要素sを正常水準として格納する。
ステップ1623) 因子の全選択肢のうち、許容する要素sの集合に属さない各要素s'を異常水準として格納する。
ステップ1624) null、Enum型でない値を異常水準として格納する。
ステップ1630) テストデータ仕様がInteger型である場合は、図25の処理によりInteger型のテストデータ仕様からの水準を生成し、実行経路と対応付けて実行経路・水準記憶部11に格納する。図25は、本発明の一実施の形態におけるInteger型テストデータ仕様からの水準生成のフローチャートである。
ステップ1631) Integer型テストデータ仕様の「下限L」、「上限U」を取得する。
ステップ1632) L,L+1,U−1,Uを正常水準としてに格納する。
ステップ1633) ランダム値x(L≦x≦U)を正常水準として格納する。
ステップ1634) L−1,U+1を異常水準として格納する。
ステップ1635) 正、負でオーバーフローとなる値を異常水準として格納する。
ステップ1636) null、Integer型でない値を異常水準として格納する。
ステップ1640) テストデータ仕様がString型である場合は、図26の処理によりString型テストデータ仕様からの水準を生成し、実行経路と対応付けて実行経路・水準記憶部11に格納する。図26は、本発明の一実施の形態におけるString型テストデータ仕様からの水準生成のフローチャートである。
ステップ1641) String型テストデータ仕様の「長さ下限L」、「長さ上限U」、「部分文字列C」、「等しい文字列E」を取得する。
ステップ1642) 上記の「長さ下限L」、「長さ上限U」、「部分文字列C」、「等しい文字列E」に基づいて正常水準を生成し、実行経路と対応付けて実行経路・水準記憶部11に格納する。以下、図27を用いて詳細な処理を説明する。本発明の一実施の形態におけるステップ1642の詳細な処理のフローチャートである。
ステップ2200) 「等しい文字列E」が設定済みの場合は、Eを正常水準として格納し、当該水準生成部の5の処理を終了する。
ステップ2210) 「等しい文字列E」が未設定であり、「部分文字列C」が設定済みの場合は、長さLのCを含むランダム文字列を正常水準として格納する。
ステップ2220) 長さL+1の部分文字列Cを含むランダム文字列を正常水準として格納する。
ステップ2230) 長さU−1の部分文字列Cを含むランダム文字列を正常水準として格納する。
ステップ2240) 長さUの部分文字列Cを含むランダム文字列を正常水準として格納し、当該水準生成部5の処理を終了する。
ステップ2250) 「等しい文字列E」が設定済みで、「部分文字列C」が設定済みである場合は、長さLのランダム文字列を正常水準として格納する。
ステップ2260) 長さL+1のランダム文字列を正常水準として格納する。
ステップ2270) 長さU−1のランダム文字列を正常水準として格納する。
ステップ2280) 長さUのランダム文字列を正常水準として格納し、当該水準生成部5の処理を終了する。
ステップ1643) 上記の「長さ下限L」、「長さ上限U」、「部分文字列C」、「等しい文字列E」に基づいて異常水準を生成し、実行経路と対応付けて実行経路・水準記憶部11に格納する。以下に、図28を用いて当該処理を詳細な処理について説明する。図28は、本発明の一実施の形態におけるステップ1643の詳細な動作のフローチャートである。
ステップ2300) 「等しい文字列E」が設定済みであり、長さLの部分文字列Cでない文字列を異常水準として格納する。
ステップ2305) 長さU+1の等しい文字列Eでない文字列を異常水準としてメモリ(図示せず)に格納する。
ステップ2310) 長さL−1の等しい文字列Eでない文字列を異常水準として格納し、ステップ2360に移行する。
ステップ2320) 「等しい文字列E」が未設定であり、「部分文字列C」が設定済みである場合は、長さLの部分文字列Cを含まない文字列を異常水準として格納する。
ステップ2325) 長さUの部分文字列Cを含まない文字列を異常水準として格納する。
ステップ2330) 長さL−1の部分文字列Cを含まない文字列を異常水準として格納する。
ステップ2335) 長さU+1の部分文字列Cを含まない文字列を異常水準として格納する。
ステップ2350) 長さL−1の部分文字列Cを含む文字列を異常水準として格納する。
ステップ2345) 長さU+1の部分文字列Cを含む文字列を異常水準として格納し、ステップ2360に移行する。
ステップ2350) 等しい文字列Eが未設定で、部分文字列Cが未設定である場合は、長さL−1のランダム文字列を異常水準として格納する。
ステップ2355) 長さL+1のランダム文字列を異常水準として格納し、ステップ2360に移行する。
ステップ1650) テストデータ仕様がObject型である場合、図29の処理により、Object型テストデータ仕様から水準を生成し、実行経路と対応づけて実行経路・水準記憶部11に格納する。図29は、本発明の一実施の形態におけるObject型テストデータ仕様からの水準生成のフローチャートである。
ステップ1651) Object型テストデータ仕様の「nullかn」、「属性の仕様A」を取得する。
ステップ1652) 「nullかn」が未設定であり、「属性の仕様A」が空である場合は、任意のObjectを正常水準としてメモリ(図示せず)に格納し、当該処理を終了する。
ステップ1653) 「nullかn」が"true"である場合は、「null」を正常水準として格納する。
ステップ1654) 任意のObject(non-null)を異常水準として格納し、当該処理を終了する。
ステップ1655) 「nullかn」が"false"であり、「属性の仕様A」が空である場合は、任意のObject(non-null)を正常水準として格納する。
ステップ1656) 「null」を異常水準として格納して当該処理を終了する。
ステップ1657) 「nullかn」が"false"であり、「属性の仕様A」が空でない場合は、仕様Aに含まれるテストデータ仕様に基づく水準を実行経路と対応付けて実行経路・水準記憶部11に格納し、当該処理を終了する。当該処理の詳細については、図30に沿って説明する。図30は、本発明の一実施の形態におけるステップ1657の詳細なフローチャートである。
ステップ2400) Object型テストデータ仕様から「属性の仕様A」を取得する。
ステップ2410) 取得した属性の仕様Aに含まれる各テストデータ仕様に対して、前述の図19に示す方法により水準を生成し、格納する。
ステップ2420) テストデータ生成部6において、組み合わせを生成する。詳細な処理については、図32で詳述する。
ステップ2430) テストデータ生成部6で生成された1つの組合せを1つの水準として実行経路・水準記憶部11に格納する。
上記のようにして、特定実行経路に関する各因子の水準が決定され、図31に示す内容が実行経路・水準記憶部11に格納される。
<組み合わせ生成部>
次に、図7のステップ150におけるテストデータ生成部6の動作について説明する。
図32は、本発明の一実施の形態における組み合わせ生成部の処理のフローチャートである。
ステップ1200) テストデータ生成部6は、水準生成部5で求められた全因子の全水準を実行経路・水準記憶部11から取得する。なお、ここで取得した水準には、実行経路が関連付けられている。
ステップ1210) 正常入力の生成を図33に示す手法により行う。
ステップ1211) 全因子より、最も正常水準を多く持つ因子Aの正常水準数Mを特定する。
ステップ1212) テストデータ記憶部13上に、M件の空の正常入力を生成する。
ステップ1213) 因子Aの正常水準を順番に正常入力に埋める。
ステップ1214) 因子A以外の因子については、因子の正常水準を繰り返し正常入力に埋める。
ステップ1220) 異常入力の生成を図34に示す手法により行う。
ステップ1221) 全因子より、各因子の異常水準数の合計Nを特定する。
ステップ1222) テストデータ記憶部13上に、N件の空の異常入力を生成する。
ステップ1223) 生成した正常入力を繰り返し異常入力に上書きする。
ステップ1224) 各異常水準について、どの因子のものかに基づいて、異常水準を異常入力の該当箇所に上書きする。
ステップ1230) 上記のステップ1210で生成された正常入力及び、ステップ1220で生成された異常入力に対して、以下の図35に示す方法により、入力の期待値を付与する。
ステップ1231) 入力に対応する実行経路を取得する。なお、当該実行経路は、水準生成部5で生成された水準と相互に関連付けられているため、当該入力に含まれる水準から実行経路を取得することができる。
ステップ1232) 実行経路中の全事後条件を取得する。実行経路はノードとエッジが数珠繋ぎになっているため、当該実行経路の先頭から順にノードをチェックし、当該ノードに事後条件があれば取得する。
ステップ1233) 入力が「正常入力」であり、事後条件がある場合は、期待値を事後条件の集合として、テストデータ記憶部13に格納する。
ステップ1234) 入力が「正常入力」であり、事後条件がない場合は、期待値を「未定義」として、テストデータ記憶部13に格納する。
ステップ1235) 入力が「異常入力」である場合は、期待値を「不定」として、テストデータ記憶部13に格納する。
なお、図4に示すテストデータ生成装置の構成要素の動作をプログラムとして構築し、テストデータ生成装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
また、構築されたプログラムをハードディスクや、フレキシブルディスク・CD−ROM等の可搬記憶媒体に格納し、コンピュータにインストールする、または、配布することが可能である。
なお、本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
1 設計モデル読込手段、設計モデル読込部
2 設計モデル分析手段、設計モデル分析部
3 実行経路抽出手段、実行経路抽出部
4 テストデータ仕様生成手段、テストデータ仕様生成部
5 水準生成手段、水準生成部
6 組み合わせ手段、データ生成部
7 出力手段、出力部
8 テストデータ仕様記憶手段、テストデータ仕様記憶部
11 実行経路・水準記憶部
12 テストデータ仕様記憶部
13 テストデータ記憶部

Claims (9)

  1. システムの設計情報を形式的な言語で記述した設計モデルの設計意図に沿って、システムが構築されたか否かを確認するためのテストデータを生成するテストデータ生成装置であって、
    ユーザ端末より、UMLクラス図とアクティビティ図のみで記述した設計モデルを読み込む設計モデル読込手段と、
    読み込まれた前記設計モデルからアクティビティ図をテスト対象として抽出する設計モデル分析手段と、
    前記テスト対象から実行経路を抽出する実行経路抽出手段と、
    前記実行経路抽出手段から抽出された各実行経路を持つアクティビティの入力パラメータを変数(実験計画法でいう「因子」)とし、変数が満たすべき制約条件を実行経路の始点ノードから終点ノードを走査することで抽出し、該制約条件及び変数の型に基づいて、テストデータ仕様記憶手段に格納されているテストデータ仕様を更新するテストデータ仕様生成手段と、
    前記テストデータ仕様記憶手段から前記テストデータ仕様を読み込み、該テストデータ仕様毎に、前記因子のとる値(実験計画法でいう「水準」)を生成し、該因子と該水準を記憶手段に格納する水準生成手段と、
    前記因子と前記水準を取得して、該因子と該水準の組み合わせである「入力」に対する実行経路を取得し、該「入力」が実行経路にとって許容する入力である正常入力、または、該実行経路にとって許容しない入力である異常入力のいずれであるか、及び、実行経路中に事後条件が含まれるか否かにより期待値を求め、該「入力」に該期待値を付与したテストデータを生成する組み合わせ手段と、
    前記テストデータを前記ユーザ端末に出力する出力手段と、
    を有することを特徴とするテストデータ生成装置。
  2. 前記テストデータ仕様生成手段は、
    前記テストデータ仕様が、オブジェクト型であるとき、
    前記制約条件に含まれるオペレータが「null(ヌル)でない」の場合は、前記テストデータ仕様記憶手段のオブジェクト型テストデータ仕様に「Nullを許容しない」ことを記録する手段と、
    前記制約条件に含まれるオペレータが「nullである」の場合は、前記テストデータ仕様記憶手段のオブジェクト型テストデータ仕様に「nullを許容する」ことを記録する手段と、
    前記前記制約条件に含まれるオペレータが上記以外である場合は、前記テストデータ仕様記憶手段のテストデータ仕様に含まれる各属性の仕様の列を取得して、該テストデータ仕様の因子名と前記制約条件に含まれる因子名を比較して、一致する場合には、該制約条件を用いて該テストデータ仕様を更新する手段と、を含む
    請求項2記載のテストデータ生成装置。
  3. 前記水準生成手段は、
    前記テストデータ仕様が、オブジェクト型であるとき、前記水準を生成せず、
    前記組み合わせ生成手段は、
    前記テストデータ仕様が、オブジェクト型であるとき、
    オブジェクト型の階層構造を展開した際に、リーフのいずれかに異常を含む組み合わせをオブジェクト型の異常水準として生成し、全て正常である組み合わせを正常水準として生成する手段を含む
    請求項1記載のテストデータ生成装置。
  4. 前記組み合わせ生成手段は、
    前記水準生成手段で求められた全因子の全ての正常水準を取得し、全因子の中で最も正常水準を多く持つ因子Aの正常水準数を特定し、該因子Aの正常水準を該正常水準数だけテストデータの正常入力に設定し、該因子A以外の各因子については、該因子の正常水準をテストデータに設定する手段と、
    前記水準生成手段で求められた全因子の全ての異常水準を取得し、該異常水準数を特定し、生成した前記正常入力を異常入力に上書きする手段と、
    を含む請求項1記載のテストデータ生成装置。
  5. システムの設計情報を形式的な言語で記述した設計モデルの設計意図に沿って、システムが構築されたか否かを確認するためのテストデータを生成するテストデータ生成方法であって、
    ユーザ端末より、UMLクラス図とアクティビティ図のみで記述した設計モデルを読み込む設計モデル読込ステップと、
    読み込まれた前記設計モデルからアクティビティ図をテスト対象として抽出する設計モデル分析ステップと、
    前記テスト対象から実行経路を抽出する実行経路抽出ステップと、
    抽出された各実行経路を持つアクティビティの入力パラメータを変数(実験計画法でいう「因子」)とし、該変数が満たすべき制約条件を実行経路の始点ノードから終点ノードを走査することで抽出し、該制約条件及び変数の型に基づいて、テストデータ仕様記憶手段に格納されているテストデータ仕様を更新するテストデータ仕様生成ステップと、
    前記テストデータ仕様記憶手段から前記テストデータ仕様を読み込み、該テストデータ仕様毎に、前記因子のとる値(実験計画法でいう「水準」)を生成し、該因子と該水準を記憶手段に格納する水準生成ステップと、
    前記因子と前記水準を取得して、該因子と該水準の組み合わせである「入力」に対する実行経路を取得し、該「入力」が実行経路にとって許容する入力である正常入力、または、該実行経路にとって許容しない入力である異常入力のいずれであるか、及び、実行経路中に事後条件が含まれるか否かにより期待値を求め、該「入力」に該期待値を付与したテストデータを生成する組み合わせステップと、
    前記テストデータを前記ユーザ端末に出力する出力ステップと、
    を行うことを特徴とするテストデータ生成方法。
  6. 前記テストデータ仕様生成ステップにおいて、
    前記テストデータ仕様が、オブジェクト型であるとき、
    前記制約条件に含まれるオペレータが「null(ヌル)でない」の場合は、前記テストデータ仕様記憶手段のオブジェクト型テストデータ仕様に「Nullを許容しない」ことを記録し、
    前記制約条件に含まれるオペレータが「nullである」の場合は、前記テストデータ仕様記憶手段に「nullを許容する」ことを記録する、
    前記前記制約条件に含まれるオペレータが上記以外である場合は、前記テストデータ仕様記憶手段のテストデータ仕様に含まれる各属性の仕様の列を取得して、該テストデータ仕様の因子名と前記制約条件に含まれる因子名を比較して、一致する場合には、該制約条件を用いて該テストデータ仕様を更新する
    請求項5記載のテストデータ生成方法。
  7. 前記水準生成ステップにおいて、前記テストデータ仕様が、オブジェクト型であるとき、前記水準は生成せずに、
    前記組み合わせ生成ステップにおいて、オブジェクト型の階層構造を展開した際に、リーフのいずれかに異常を含む組み合わせをオブジェクト型の異常水準として生成し、全て正常である組み合わせを正常水準として生成する
    請求項5記載のテストデータ生成方法。
  8. 前記組み合わせステップにおいて、
    前記水準生成ステップで求められた全因子の全ての正常水準を取得し、全因子の中で最も正常水準を多く持つ因子Aの正常水準数を特定し、該因子Aの正常水準を該正常水準数だけテストデータの正常入力に設定し、該因子A以外の各因子については、該因子の正常水準をテストデータに設定し、
    全因子の全ての異常水準を取得し、該異常水準数を特定し、生成した前記正常入力を異常入力に上書きする
    請求項5記載のテストデータ生成方法。
  9. 請求項1乃至4記載のいずれか1項記載のテストデータ生成装置を構成する各手段としてコンピュータを機能させるためのテストデータ生成プログラム。
JP2009116917A 2009-05-13 2009-05-13 テストデータ生成方法及び装置及びプログラム Active JP5164919B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009116917A JP5164919B2 (ja) 2009-05-13 2009-05-13 テストデータ生成方法及び装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009116917A JP5164919B2 (ja) 2009-05-13 2009-05-13 テストデータ生成方法及び装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2010267023A true JP2010267023A (ja) 2010-11-25
JP5164919B2 JP5164919B2 (ja) 2013-03-21

Family

ID=43363956

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009116917A Active JP5164919B2 (ja) 2009-05-13 2009-05-13 テストデータ生成方法及び装置及びプログラム

Country Status (1)

Country Link
JP (1) JP5164919B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015204065A (ja) * 2014-04-16 2015-11-16 株式会社日立製作所 テストケース生成装置及びテストケース生成方法
JP2016018390A (ja) * 2014-07-08 2016-02-01 株式会社エヌ・ティ・ティ・データ 検証支援方法、検証支援装置、及びプログラム
JP2019066987A (ja) * 2017-09-29 2019-04-25 富士通株式会社 解析装置および解析方法
WO2019242868A1 (en) 2018-12-12 2019-12-26 Mitsubishi Electric Corporation Software testing device, software testing method, and software testing program
CN112965909A (zh) * 2021-03-19 2021-06-15 湖南大学 测试数据、测试用例生成方法及系统、存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04276835A (ja) * 1991-03-04 1992-10-01 Nippon Telegr & Teleph Corp <Ntt> プログラム単体テストデータ生成方法
JP2001282536A (ja) * 2000-03-29 2001-10-12 Hitachi Software Eng Co Ltd テスト項目抽出装置
JP2004151884A (ja) * 2002-10-29 2004-05-27 Cats Kk 試験項目抽出プログラム
JP2005085182A (ja) * 2003-09-11 2005-03-31 Fujitsu Ltd 試験支援システム
JP2007018378A (ja) * 2005-07-08 2007-01-25 I L C:Kk デバッグ支援システム、デバッグ支援方法、デバッグ支援ターゲットプログラムおよびデバッグ支援ホストプログラム
JP2007249826A (ja) * 2006-03-17 2007-09-27 Mitsubishi Electric Corp テスト項目生成装置
JP2007323573A (ja) * 2006-06-05 2007-12-13 Internatl Business Mach Corp <Ibm> 機能テスト・スクリプト生成装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04276835A (ja) * 1991-03-04 1992-10-01 Nippon Telegr & Teleph Corp <Ntt> プログラム単体テストデータ生成方法
JP2001282536A (ja) * 2000-03-29 2001-10-12 Hitachi Software Eng Co Ltd テスト項目抽出装置
JP2004151884A (ja) * 2002-10-29 2004-05-27 Cats Kk 試験項目抽出プログラム
JP2005085182A (ja) * 2003-09-11 2005-03-31 Fujitsu Ltd 試験支援システム
JP2007018378A (ja) * 2005-07-08 2007-01-25 I L C:Kk デバッグ支援システム、デバッグ支援方法、デバッグ支援ターゲットプログラムおよびデバッグ支援ホストプログラム
JP2007249826A (ja) * 2006-03-17 2007-09-27 Mitsubishi Electric Corp テスト項目生成装置
JP2007323573A (ja) * 2006-06-05 2007-12-13 Internatl Business Mach Corp <Ibm> 機能テスト・スクリプト生成装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015204065A (ja) * 2014-04-16 2015-11-16 株式会社日立製作所 テストケース生成装置及びテストケース生成方法
JP2016018390A (ja) * 2014-07-08 2016-02-01 株式会社エヌ・ティ・ティ・データ 検証支援方法、検証支援装置、及びプログラム
JP2019066987A (ja) * 2017-09-29 2019-04-25 富士通株式会社 解析装置および解析方法
WO2019242868A1 (en) 2018-12-12 2019-12-26 Mitsubishi Electric Corporation Software testing device, software testing method, and software testing program
CN112965909A (zh) * 2021-03-19 2021-06-15 湖南大学 测试数据、测试用例生成方法及系统、存储介质
CN112965909B (zh) * 2021-03-19 2024-04-09 湖南大学 测试数据、测试用例生成方法及系统、存储介质

Also Published As

Publication number Publication date
JP5164919B2 (ja) 2013-03-21

Similar Documents

Publication Publication Date Title
CN102449598B (zh) 包设计和生成
JP5350428B2 (ja) 自動プログラム生成装置、方法及びコンピュータプログラム
WO2012032890A1 (ja) ソースコード変換方法およびソースコード変換プログラム
Verbeek et al. Verifying workflows with cancellation regions and or-joins: An approach based on relaxed soundness and invariants
US20150094997A1 (en) Explaining partially illegal combinations in combinatorial models
JP5164919B2 (ja) テストデータ生成方法及び装置及びプログラム
JP2007265089A (ja) ソフトウェア保守支援プログラム,処理方法および装置
Gabmeyer et al. A feature-based classification of formal verification techniques for software models
CN108595187A (zh) 安卓安装包集成软件开发工具包的法、装置及存储介质
Lu et al. Model-based incremental conformance checking to enable interactive product configuration
JP5164920B2 (ja) テストデータ生成方法及び装置及びプログラム
US8196093B2 (en) Apparatus and method for componentizing legacy system
JP5164918B2 (ja) テストデータ生成方法及び装置及びプログラム
JP2020060919A (ja) システム移行支援装置、システム移行支援方法及びプログラム
JP5106447B2 (ja) テストケース生成装置およびその生成方法、ならびにコンピュータプログラム
Hue et al. A transformation-based method for test case automatic generation from use cases
CN109189688A (zh) 一种测试用例脚本的生成方法、生成装置及电子设备
Farinier et al. Mergeable persistent data structures
Bergenthum et al. Synthesis of Petri nets from scenarios with VipTool
Boucher et al. Transforming workflow models into automated end-to-end acceptance test cases
CN104737125B (zh) 用于维护代码生成器输出的完整性的方法和系统
Lai et al. Defining and verifying behaviour of domain specific language with fUML
EP4030723A1 (en) Internet-of-things model-based virtual internet-of-things device generation method and apparatus
JP2011159202A (ja) テスト項目生成方法及び装置及びプログラム
JP2015022356A (ja) テストシナリオバリエーション生成装置及び方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110202

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120305

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120731

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120925

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121218

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

Free format text: PAYMENT UNTIL: 20151228

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5164919

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350