JP5514143B2 - テストデータ生成装置及び方法 - Google Patents

テストデータ生成装置及び方法 Download PDF

Info

Publication number
JP5514143B2
JP5514143B2 JP2011087672A JP2011087672A JP5514143B2 JP 5514143 B2 JP5514143 B2 JP 5514143B2 JP 2011087672 A JP2011087672 A JP 2011087672A JP 2011087672 A JP2011087672 A JP 2011087672A JP 5514143 B2 JP5514143 B2 JP 5514143B2
Authority
JP
Japan
Prior art keywords
constraints
character string
test case
variables
constraint
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.)
Active
Application number
JP2011087672A
Other languages
English (en)
Other versions
JP2012221311A (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.)
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 JP2011087672A priority Critical patent/JP5514143B2/ja
Publication of JP2012221311A publication Critical patent/JP2012221311A/ja
Application granted granted Critical
Publication of JP5514143B2 publication Critical patent/JP5514143B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、テストデータ生成装置及び方法に係り、特に、ビジネスロジックとデータベース(DB)を結合されたときのプログラムの動作を確認するためのテストを行うためのテストデータを自動的に生成するためのテストデータ生成装置及び方法に関する。
一般に、ビジネスロジックとDBを結合させたときの動作を確認するためのテストである結合テストは、プログラムの一部を制御可能なダミー(スタブ、モック)に置き換えて行う単体テストと異なり、プログラム全体がテスト対象となるため、プログラムの内部を改変することができない。このため、テストで確認したいプログラムの振る舞いを引き起こすためには、適切に設定したパラメータをテスト対象プログラムに外部から与える必要がある。しかし、ビジネスロジックへの入力値と、DBレコード初期値を人手で用意するには手間が係り、効率的ではない。
自動的にテストデータを生成する第1の技術として、入力値定義と処理フローを入力とし、特定のテストパスを通すための整数型、文字列型の入力値を生成することによりテストデータを生成する手法がある(例えば、非特許文献1参照)。
また、第2の技術として、DB定義を入力として、DB定義を満たし、かつ指定されたレコード数を持つDB初期状態(主に性能テスト向け)を生成する手法がある。
また、第3の技術として、入力値定義、DB定義、DB事前条件を入力として、入力値、DB初期状態を生成する手法がある(例えば、非特許文献2参照)。
張暁晶、星野隆"設計モデルを用いたテスト項目抽出とテストデータ生成手法",信学技報,第109巻 of SS2009-7. pp.37-42. 2009. 藤原翔一郎、宗像一樹、片山朝子、前田芳晴、大木憲二、上原忠弘、山本里枝子. Smt solverを利用したwebアプリケーション用テストデータの生成.情報処理学会創立50周年記念(第72回)全国大会講演論文集.2010.
しかしながら、上記従来の第1の技術は、DBの初期状態(DBテーブル型)のデータを生成することができない。また、DB検索条件を設計書から読み取っていないため特定のテストのパスを通すために入力値とDB初期状態が満たすべき制約に抜けがある。また、複雑なデータ構造(配列)や変数の複雑な相互依存関係があった場合に適切なテストデータが生成できない、という問題がある。
また、仮に、従来の第1の技術と第2の技術を組み合わせて用いても、DB検索条件を設計情報として扱っていないため、DBのレコード検索結果の件数に依存する処理の分岐を制御するテストデータは生成することができない。また、第2の技術では、入力値とDB初期状態を個別に生成し、検索結果の件数が上限値、下限値で指定される範囲に収まるまで繰り返す方法もあるが、実用的な時間内で解くことができないという問題がある。
また、第3の技術では、フロー図を扱うことができないため、特定のテストパスを通す入力値、DB初期状態を生成できない。さらに、DB初期状態に関する必要不可欠な制約(例えば、主キーに関する制約)で抜けがある。また、文字列変数同士の包含関係を扱うことができない、という問題がある。
本発明は、上記の点に鑑みなされたもので、入力値定義、処理フロー図、DE定義などのソフトウェア設計情報を入力とし、処理の分岐を制御可能なテストデータを生成するテストデータ生成装置及び方法及びプログラムを提供することを目的とする。
上記の課題を解決するために、本発明は、データベース(DB)に格納されているデータの読み出し操作を伴う機能性テストを実施するためのテストデータを生成するテストデータ生成装置であって、
テストケースを格納するテストケース記憶手段と、
設計情報として、ソフトウェアの入力値の定義域を表す入力値定義、ソフトウェアの処理の流れを表す処理フロー図、データベースの設計情報であるDB定義を取得し、入力変数、DBテーブル変数、及び該ソフトウェアの特定の振る舞いを引き起こすようにテストデータが満たすべき条件である制約を抽出し、前記テストケース記憶手段に格納するテストケース抽出手段と、
前記テストケース記憶手段から取得した、前記DBテーブル変数のレコード件数に関する制約を解き、該DBテーブル変数のレコード件数を決定し、前記テストケース記憶手段に格納するDBレコード件数決定手段と、
前記テストケース記憶手段から取得した、文字列型変数同士の包含関係に関する制約から、文字列長に関する制約を導出し、文字列型変数の文字列長と整数型変数に関する制約を解き、文字列長変数と整数型変数を前記テストケース記憶手段に格納する整数・文字列長決定手段と、
前記文字列型変数に関する制約を解き、該文字列型変数を構成する文字の値を決定し、前記テストケース記憶手段に格納する文字決定手段と、
前記テストケース記憶手段に格納されている前記入力変数、前記DBテーブル変数をテストデータとして出力する出力手段と、を有することを特徴とする。
また、前記テストケース抽出手段は、
前記入力値定義及び前記処理フロー図から「入力値に対する制約」を抽出し、該処理フロー図のDB検索条件から、「検索ヒット数、入力値、DB初期状態依存関係に関する制約」を抽出し、前記DB定義より「DB初期状態に対する制約」を抽出する手段を含む。
また、前記レコード件数決定手段は、
入れ子の配列に相当する複雑なDBテーブルのレコード群を検出した場合に、前記「検索ヒット数、入力値、DB初期状態依存関係に関する制約」に含まれる不等式で表された「DBテーブルのレコード群の件数に関する制約」を選択し、連立不等式として解くことでDBテーブル変数のDBレコード件数を決定する手段を含み、
前記整数・文字列長決定手段は、
入れ子の配列に相当する複雑なDBテーブルのレコード群を検出した場合に、前記テストケース抽出手段で抽出された前記「入力値に対する制約」、前記「検索ヒット数、入力値、DB初期状態依存関係に関する制約」、前記「DB初期状態に対する制約」のいずれかに含まれる、不等式で表された「文字列の長さに関する制約」を選択し、連立不等式として解くことで配列の長さを決定する手段を含む。
また、前記レコード件数決定手段は、
前記「DB初期状態に対する制約」のうち、DBレコードの主キー、外部キーに関する制約を選び、整数変数同士比較、または、文字列変数同士の比較とする制約に変形する手段を含む。
また、前記整数・文字列長決定手段は、
前記「DB初期状態に対する制約」の中から、DBレコードの主キー、外部キーに関する制約を選び、整数変数同士比較に変換した制約、前記「入力値に対する制約」、前記「検索ヒット数、入力値、DB初期状態依存関係に関する制約」、前記「DB初期状態に対する制約」のいずれかに含まれる、不等式で表された「整数に関する制約」を選択し、選択された整数に関する制約を連立不等式として解き、制約群を満たす値を求める手段を含む。
また、前記文字決定手段は、
前記「入力値に対する制約」、前記「検索ヒット数、入力値、DB初期状態依存関係に関する制約」のいずれかに含まれる、文字列変数同士の包含関係に基づいて、該文字列変数同士の対応する位置に存在する文字がそれぞれ一致する文字を前記文字の値と決定する手段を含む。
上記のように、本発明によれば、処理の分岐を制御するためのテストデータが満たすべき条件を、制約充足問題における解くべき制約群として設計情報からもれなく抽出し、集約することで、処理の分岐を制御できるような入力値とDB初期状態の組合せを実用的な時間内で特定することができる。
また、本発明では、入れ子配列のような複雑なデータ構造を含むようなソフトウェアであっても、適切にテストデータを生成することができる。
また、整数変数同士の比較、文字列変数同士の包含関係(等価、前方一致、部分一致、後方一致)等の変数の複雑な相互関係を扱うテストデータを生成することができる。
本発明で用いられるフロー図の例である。 本発明で用いられるテストパスの例である。 本発明で用いられる入力値定義の例である。 本発明で用いられるDB定義の例である。 本発明で用いられる制約の例である。 本発明で用いられる制約の定義を示す図である。 本発明の一実施の形態におけるテストデータ生成装置の構成図である。 本発明の一実施の形態におけるテストケース記憶部に格納されるデータである。 本発明の一実施の形態におけるテストデータ生成装置の全体の処理のフローチャートである。 本発明の一実施の形態における図9のS110の詳細フローチャートである。 本発明の一実施の形態における経路リスト生成処理のフローチャートである。 本発明の一実施の形態における図11のS206の詳細フローチャートである。 本発明の一実施の形態における図11のS211の詳細フローチャートである。 本発明の一実施の形態における図10のS240の詳細フローチャートである。 本発明の一実施の形態におけるDB検索条件から制約への変換例である。 本発明の一実施の形態における図9のS120の詳細フローチャートである。 本発明の一実施の形態における図13のS370の詳細フローチャートである。 本発明の一実施の形態における図13のS380の詳細フローチャートである。 本発明の一実施の形態における図9のS130の詳細フローチャートである。 本発明の一実施の形態における文字列長を決定する処理の例である。 本発明の一実施の形態における文字列比較演算子テーブルである。 本発明の一実施の形態における図15のS450の詳細フローチャートである。 本発明の一実施の形態における図9のS140の詳細フローチャートである。 本発明の一実施の形態における文字決定部の処理を示す図である。 本発明の一実施の形態における図20のS540の詳細フローチャートである。 本発明の一実施の形態における図22のS1070の詳細フローチャートである。
以下図面と共に、本発明の実施の形態を説明する。
まず、本明細書で使用する用語について説明する。
処理フロー図:ソフトウェア設計情報の一種であり、振る舞い(ソフトウェアの処理の流れ)を表す。処理フロー図には、フローチャート、UML(Uniformed Modeling Language)アクティビティ図等の種類がある。処理フロー図の例を図1に示す。処理フロー図には、ノードとエッジからなる処理フロー図、ノード、ノードの内容、DB検索条件、検索結果レコード件数、Where句条件群、次ノード接続エッジ群、エッジ、ガード条件を含む。
テストパス:処理フロー図の中の特定のパスである。経路網羅性を確保するためには、処理フロー図の中の全てのテストパスに対し、テストパスを通す適切なテストデータを作成する必要がある。テストパスの例を図2に示す。テストパスは、ノードとエッジの情報からなる。
入力値定義:ソフトウェア設計情報の一種であり、ソフトウェアの入力値の定義域を表す。入力値定義の例を図3に示す。
DB定義:データベース設計情報であり、テーブル名、各テーブルにおけるカラム名、カラムの型、カラムの値の定義域が記述されている。DB定義の例を図4に示す。DB定義は、定義対象のDBテーブル、DBテーブルのレコード、カラム、型と定義域、整数定義域、文字列定義息、カラムの種類、参照先カラムを含む。
制約:「ソフトウェアの特定の振る舞い」を引き起こせるテストデータが満たすべき複数の条件のうちの1つであり、制約の種類は、図5に示すように、
(1)入力値に対する制約:入力値定義、処理フロー図より取得;
(2)検索ヒット数、入力値、DB初期状態の対応に関する制約:処理フロー図に記述されたDB検索条件より取得;
(3)DB初期状態に対する制約:DB定義より取得;
があり、上記の(1)〜(3)に含まれる各制約は図6に示すようにBNFで定義されている。制約は、設計情報に含まれる後述するテストケース抽出部で抽出される制約(図6(A))と、テストデータ生成処理中に導出される制約(図6(B))がある。制約には、整数制約、文字列制約、一意制約がある。整数制約には、整数算術式、整数比較演算子、整数算術式に関する制約が含まれる。文字列制約には、文字列因子、文字列比較演算子、文字列因子に関する制約が含まれる。一意制約は、distinctカラム全称参照で表される。
図7は、本発明の一実施の形態におけるテストデータ生成装置の構成を示す。
テストデータ生成装置100は、ユーザ端末10と接続されている。
テストデータ生成装置は、テストケース抽出部110、DBレコード件数決定部120、整数・文字列長決定部130、文字決定部140、テストデータ出力部150、テストケース記憶部160から構成される。
上記の構成のうち、テストケース抽出部110、DBレコード件数決定部120、整数・文字列長決定部130、文字決定部140、テストデータ出力部150は、CPU内で機能し、テストケース記憶部160は、メモリ、ハードディスク等の記憶媒体である。
テストケース抽出部110は、ユーザ端末10からXML形式の設計情報を取得して、当該設計情報から入力変数、DBテーブル変数、制約を抽出し、テストケースaとしてテストケース記憶部160に格納する。テストケースaは、設計情報の図1の処理フロー図、図2のテストパス、図3の入力値定義、図4のDB定義、抽出された入力変数、DBテーブル変数、制約(図6(A))を含む。
DBレコード件数決定部120は、テストケース記憶部160からテストケースaを読み出して、当該テストケースaに含まれるDBテーブル変数からDBレコードの件数の値を決定し、テストケースaをコピーし、そのメンバであるDBテーブル変数のレコード件数にその値を設定したものをテストケースbとし、当該テストケースbをテストケース記憶部160に格納する。また、DBテーブル変数のカラムに関する制約を各レコードのフィールドに対して展開する。
整数・文字列長決定部130は、テストケース記憶部160からテストケースb(変数、文字列同士の包含関係に関する制約(図6(A))を読み出して、文字列型変数同士の包含関係に関する制約から文字列長に関する制約(図6(B))を導出し、文字列型変数の文字列長に関する制約と整数型変数に関する制約(図6(A))を解き、それらの値(文字列型変数、文字列長変数、整数型変数)を決定し、それらの値とテストケースbをコピーした内容をテストケースcとし、当該テストケースcをテストケース記憶部160に格納する。
文字決定部140は、テストケース記憶部160からテストケースcを読み出して、文字列型変数に関する制約(図6(A))を解き、文字列型変数を構成する文字の値を決定し、その値とテストケースcをコピーした内容をテストケースdとし、当該テストケースdをテストケース記憶部160に格納する。
テストデータ出力部150は、テストケース記憶部160から入力変数、DBテーブル変数の値をテキスト形式でユーザ端末10に出力する。
テストケース記憶部160は、図8に示すような上記の各構成から出力される中間データとしてのテストケース、文字列包含関係木、文字列親子ノード及び図6に示す制約等を格納する。テストケース抽出部110からは、テストケースaとして、{制約、変数}が格納される。DBレコード件数決定部120からは、テストケースbとして、{テストケースa+DBテーブル変数、DBレコード件数変数、DBレコード変数、DBフィールド変数}が格納される。整数・文字列長決定部130からは、テストケースcとして、{テストケースb+文字列型変数、文字列長変数、整数型変数、文字列包含関係木、文字列親子ノード}が格納される。文字決定部140からはテストケースdとして、{テストケースc+文字型変数、値決定済み変数}が格納される。
以下に、上記の構成における動作を詳細に説明する。
最初に、テストデータ生成装置100の全体の動作を説明する。
図9は、本発明の一実施の形態におけるテストデータ生成装置の全体処理のフローチャートである。
ステップ110) テストケース抽出部110において、設計情報を取得する。設計情報は、
・DB定義(DBテーブル変数、DBテーブルの各カラムに対する制約、DBテーブルの主キー、外部キー);
・入力値定義;
・処理フロー図;
が含まれる。当該設計情報から変数(入力変数、DBテーブル変数)及び、制約を抽出し、これらをテストケースaとしてテストケース記憶部160に格納する。当該ステップの詳細については、図10にて後述する。
ステップ120) DBレコード件数決定部120において、テストケース記憶部160からテストケースaを読み込み、DBテーブル変数のレコード件数に関する制約を解き、DBテーブル変数のレコード件数を決定し、DB、テーブル変数のカラムに関する制約を各レコードのフィールドに対して展開し、テストケースaをコピーし、そのメンバであるDBテーブル変数のレコード件数にその値を設定したものをテストケースbとし、当該テストケースbをテストケース記憶部160に格納する。テストケースbとしてテストケース記憶部160に格納する。詳細については図13で後述する。
ステップ130) 整数・文字列長決定部130において、テストケース記憶部160からテストケースbを取得し、文字列型変数同士の包含関係に関する制約から文字列長に関する制約を導出し、テストケース記憶部160の制約集合に追加した後、ステップ120で導出された文字列型変数の文字列長とステップ110で抽出された整数型変数に関する制約を解き、それぞれの値を決定する。テストケースbをコピーし、文字列型の変数の文字列長変数の値と、整数型変数の値を設定したものをテストケースcとしてテストケース記憶部160に格納する。
ステップ140) テストケース記憶部160からテストケースcを取得し、文字決定部140において、文字列型変数に関する制約を解き、文字列型変数を構成する文字の値を決定し、テストケースcをコピーしたものに設定し、テストケースdとしてテストケース記憶部160に格納する。
詳細は図20で後述する。
ステップ150) テストデータ出力部150において、テストケース記憶部160のテストケースdから入力変数(図8,9行目)、DBテーブル変数(図8,5行目)の値を取得してユーザ端末10にダンプ出力する。
上記のステップ120,130では、入れ子の配列に相当する複雑なデータ構造(DBテーブルのレコード群、文字列)を検出した際に、入れ子でいう「外側」の配列の長さ(DBテーブルのレコード群の件数、文字列の長さ)に関する制約を、図5に示す条件(1)、(2)、(3)から選び出して、それらを優先して解くことで配列の要素より先に配列の長さを決定する。
次に、上記のステップ110のテストケース抽出部110における設計情報から変数、制約を抽出する処理について説明する。
図10は、本発明の一実施の形態における図7のS110の詳細フローチャートである。
ステップ210) テストケース抽出部110は、設計情報からDB定義(図4)を読み込み、変数、制約を抽出する。詳しくは、DB定義から、DBテーブル変数とDBテーブルの各カラムに対する制約(図5の(3))を抽出し、変数と制約を出力する。
ステップ220) 次に、設計情報から、入力値定義(図3)を読み込み、変数、制約を抽出する。詳しくは、入力値定義から入力変数と入力値に対する制約(図5、(1))を抽出する。
ステップ230) 次に、処理フロー図(図1)を読み込み、C1カバレッジを満たすよう、全てのテストパス(図2)を抽出する。ここで、テストパスの抽出方法を説明する。テストパスの抽出は、テストケース抽出部110内に具備される経路抽出機能で実行する。
経路抽出機能は、読み込んだフロー図からテストすべき実行経路を抽出するために、ループ最大通過回数で指定された回数のループを通るような経路のリストを生成する。
経路抽出機能は、フロー図内の全ノード情報(ノードID,ノード内テキスト、次展開エッジ群)と、エッジ情報(エッジID,始点接続ノードID,終点接続ノードID,遷移条件)を読み込み、経路リストを生成する。当該経路リスト生成処理を以下に示す。
図11は、本発明の一実施の形態における経路リスト生成処理のフローチャートである。
ステップ2010) 経路抽出部130は、読み込まれた開始エッジを次展開エッジ群用スタックに積む。なお、当該経路抽出機能に内部にバッファを備え、当該バッファにスタックの領域を設けるものとする。
ステップ2020) 次展開エッジ群用スタックは空であるかを判定し、空である場合は当該処理を終了する。
ステップ2030) 次展開エッジ群用スタックの最上位にある次展開エッジ群に要素があるかを判定し、ない場合はステップ2120に移行する。
ステップ2040) 次展開エッジ群スタックの最上位にある要素(現在次展開エッジ群)から、ひとつエッジを得て現在エッジとする。
ステップ2050) 現在次展開エッジ群から現在エッジを取り除く。
ステップ2060) 経路(エッジ用スタックに積まれているエッジの列)内のループ出現回数を計算する。当該処理は、探索途中経路に存在する現在ループ経路の数(ループ出現回数)を計算するものである。当該処理の詳細については図12で後述する。
ステップ2070) ループの出現回数(ループ最大出現回数)がユーザ端末10より入力されたユーザ指定ループ最大通過数に1を加えた値より大きければ、ステップ2020に移行する。当該処理は、探索途中の経路のループ最大出現回数が異常値(ユーザ指定ループ最大通過数+1)を超えたらその経路の探索を打ち切ることである。なお、「ループ最大出現回数」とは、探索途中経路に含まれる複数のループ経路のうちループ出現回数が最大であるループ経路のループ出現回数である。
ステップ2080) 現在エッジをエッジ用スタックに積み、ループ出現回数をループ出現回数用スタックに積む。
ステップ2090) 現在のエッジのもつ終点ノードIDに基づいて、フロー図からノードを取得し、そのノードのエッジ(始点との接続)群を取得し、その取得したエッジ(始点との接続)群を、次展開エッジとして、次展開エッジ群スタックに積む。
ステップ2100) 現在のエッジが終了ノードに接続していない場合はステップ2020に移行する。
ステップ2110) 経路のループ最大出現回数に応じて、上限値、異常値、近傍値とラベルを付与し、経路(エッジ用スタックに積まれているエッジの列)を出力する。また、上限値、異常値、近傍値のどれにも相当しない経路に関しては出力しない。当該処理の詳細については図13で後述する。
ステップ2120) 次展開エッジ群用スタックをポップする。
ステップ2130) ポップしたエッジ用スタックが空である場合は、当該処理を終了する。
ステップ2140) エッジ用スタックとループ出現回数スタックをポップして、処理を終了する。
次に、上記の図11のステップ206の経路(エッジ用スタックに積まれているエッジの列)内の現在ループ経路の出現回数を計算する処理について詳述する。
図12は、本発明の一実施の形態における図11のS2060の詳細フローチャートである。
ステップ3010) 経路抽出機能は、バッファから現在エッジを読み込む。
ステップ3020) 経路(エッジ用スタックに積まれているエッジの列)を読み込む。
ステップ3030) 探索途中経路を生成する。具体的には、経路を複製し、複製した経路を探索途中経路とする。
ステップ3040) 探索途中経路の先頭から、先頭に一番近い現在エッジまでを現在ループ経路が何回出現するか計算する。
ステップ3050) 探索途中経路内で現在ループ経路が何回出現するか(ループ出現回数)を求める。当該ループ出現回数を求める手法として、文献1「R.S. boyer: J. S. Moore (1997). "A fast string searching algorithm". Comm. ACM 20: 762-772」等の技術を用いることができる。当該文献1の手法は、文字列照合のアルゴリズムであるが、ひとつのエッジをひとつの文字とみなし、経路(エッジの列)を文字列とみなせば適用可能である。
次に、上記の図11のステップ2110のエッジ用スタックの中身を経路として出力する処理について詳述する。
図13は、本発明の一実施の形態における図11のステップ2110の詳細フローチャートである。
ステップ4010) 経路抽出機能は、経路のループ最大出現回数を計算する。具体的には、ループ出現回数用スタックに積まれているループ出現回数の最大値を取得し、ループ最大出現回数とする。
ステップ4020) ループ最大出現回数(M)とユーザ指定ループ最大通過数(N)が等しいか(M=N)を判定し、等しい場合にはステップ4030に移行し、等しくない場合はステップ4040に移行する。
ステップ4030) M=Nの場合は「上限値」ラベルを付与して経路を出力し、当該処理を終了する。M=N以外の場合はステップ4040に移行する。
ステップ4040) ループ最大出現回数とユーザ指定ループ最大通過数に1を加算した値と等しければ(M=N+1)、ステップ4050に移行し、等しくない場合はステップ4060に移行する。
ステップ4050) M=N+1である場合は「異常値」ラベルを付与して経路を出力し、当該処理を終了する。
ステップ4060) ループ最大出現回数とユーザ指定ループ最大通過数から1を引いた値とが等しければ(M=N−1)ステップ4070に移行し、等しくなければ当該処理を終了する。
ステップ4070) M=N−1である場合は「近傍値」ラベルを付与して経路を出力し、当該処理を終了する。
以下、図10の処理の説明に戻る。
ステップ240) 次に、処理フロー図から抽出されたテストパスから、入力値に対する制約(図5(3))、処理フロー図のDB検索条件に記述された制約(図5(2))を抽出する。入力値に対する制約の制約種類タグに「入力条件タグ」を設定する。DB検索条件に記述された制約の制約種類タグは「検索条件タグ」を設定する。テストパスから制約を抽出する処理については、図14にて後述する。
ステップ250) 上記のステップ210,220,240で抽出された変数及び制約を取得し、これらを纏めた制約集合をメンバとしてもつテストケース(オリジナルテストケース)aを作成し、テストケース記憶部160に格納する。
次に、上記のステップ240のテストパスから制約を抽出する処理について説明する。
図14は、本発明の一実施の形態における図10のS240の詳細フローチャートであり、図15は、DB検索条件から制約への変換例を示す。
まず、テストパスの各ノードに対して以下の処理を行う。
ステップ600) テストケース抽出部110は、ステップ230で抽出されたテストパスの各ノードにDB検索条件があるかを、処理フロー図(図1)を参照して判定し、ある場合にはステップ610に移行し、ない場合は次のノードの処理に移行する。
ステップ610) ノードにDB検索条件がある場合は、当該DB検索条件の"Where句条件群にある制約"を抽出する。図15の例では、設計情報
WHERE (ID>=検索ID)
AND(名前subString社員名)
が抽出される。
ステップ620) DB検索条件の検索結果レコード件数(検索ヒット数)におけるMin count(図1)を、Min Count<=Count(From TableId)制約、Max Count(図1)を、MAX>=Count (From TableId)制約へと変換して出力する。
ここまでの処理をノード数分繰り返す。
次に、テストパスの各エッジに対して以下の処理を行う。
ステップ630) 次に、各テストパスの各エッジに対する処理として、テストケースaの処理フロー図(図1)を参照してエッジガード条件があるかを判定し、ある場合には、エッジガード条件から制約(整数制約、文字列制約)を抽出する。当該処理をテストパスの各ノードに対して行う。
上記の処理から検索ヒット数、入力値、DB初期状態の依存関係に関する制約、DB初期状態に対する制約が抽出される。これにより、処理の分岐を制御できるような条件(図5(1)(2)(3))を設計書から漏れなく抽出して集約しているため、これらの制約を後述する処理により連立不等式に変換し、既存技術で解くことができる。
次に、DBレコード件数決定部120における、図9のステップ120のDBレコード件数の値を決定する処理について説明する。
図16は、本発明の一実施の形態における図9のS120の詳細フローチャートである。
ステップ310) DBレコード件数決定部120は、テストケース記憶部160からテストケースaを読み込む。
ステップ320) ユーザから指定されたDBレコード件数デフォルト値を取得し、以下、ステップ370までの処理を、テストケースの各DBテーブル変数に対して行う。なお、当該デフォルト値はメモリ(図示せず)に予め記憶されているものとする。
ステップ330) ステップ310で読み込んだテストケースaに含まれるDBテーブル変数、制約集合を取得し、制約の中でレコード件数参照を含む制約を全て取得し、出力する。図6の例では、「レコード件数参照=Count(DBテーブル変数)」を出力する。
ステップ340) 上記のレコード件数に関する制約が1つ以上存在する場合は、図8に示すテストケースの制約集合の中からDBレコード変数及びDBテーブル変数のレコード件数変数に関する制約を取得する。図8の例では、"DBレコード変数=Id DBフィールド変数+"、"DBレコード件数変数=Id 整数型変数"を取得する。DBレコード変数のDBレコード件数に関する制約を解き、レコード件数の値を決定する。このとき、DBレコード変数のレコード件数に関する制約は、整数の不等式となっているため、これらを連立させ連立不等式として既存技術(SMT Arithmetic Theory, シンプレックス法)を用いて解き、制約を満たすレコード件数の値を求める。ステップ360に移行する。
ステップ350) 制約集合にレコード件数に関する制約がない場合は、ユーザ指定DBレコード件数デフォルト値をレコード件数の値として設定する。このとき、テストケースに含まれるテストパスから入力変数に対する制約(図5(3))と、DB検索条件に記述された制約(図5(2))を抽出する。
ステップ360) テストケース記憶部160のテストケース領域からDBテーブル変数を取得し、当該DBテーブル変数の値の分だけDBレコード変数を生成し、テストケース領域のDBテーブル変数のメンバとして追加する。
ステップ370) テストケース記憶部160から制約集合を取得し、DBテーブルのカラムに対する制約(図6(A)「カラム参照」)を、DBフィールド変数への制約として展開する。このとき、カラム全称参照(∀)を含む制約(図6(A))を選び出し、DBフィールド変数(図8)への制約として展開する。詳細は図17にて後述する。
ステップ380) テストケース記憶部160から制約集合を取得し、外部キーに関する制約をテストケース記憶部160の制約集合に追加する。このとき、カラム存在参照を含む制約を選び出し、DBフィールド変数への制約として展開する。詳細は図18にて後述する。
上記の図16のステップ370のDBテーブルのカラムに対する制約をDBフィールド変数への制約として展開する処理について説明する。
図17は、本発明の一実施の形態における図16のS370の詳細フローチャートである。
ステップ710) DBレコード件数決定部120は、制約集合を取得し、カラム全称参照を含む制約を選び出す。
ステップ720) ステップ710で選び出された制約が一意制約でない場合は、DBテーブルのカラムに対する制約を、DBフィールド変数への制約として展開する。このとき、カラム全称参照(図6(A))で参照しているDBテーブルに対応するDBテーブル変数のDBレコード件数変数の値(図6(A))「レコード件数参照」)の分だけ制約を複製する。そして、複製した制約のカラム全称参照部分をDBテーブル変数が保持する各DBレコード変数のカラムに対応するDBフィールド変数で置き換え、DBフィールド変数を含む制約を出力する。
ステップ730) ステップ710で選び出されたカラム全称参照を含む制約が一意制約であり、カラム型がInt型(整数型)である場合は、整数型の一意制約をDBフィールド変数への制約として展開する。このとき、"distinct ∀ columX"という一意制約に対し、columX、DBフィールド変数をそれぞれfieldX1, fieldX2,…, fieldXnとする。fieldXi>fieldX(i+1)(ここで、i = 1〜n−1)という整数制約を生成し、x<yという形の整数制約を出力する。
ステップ740) ステップ710で選び出された制約が一意制約であり、カラム型がString型(文字列型)である場合は、文字列型の一意制約を、DBフィールド変数への制約として展開する。このとき、カラムに対応する各DBフィールド変数(文字列型)に対して、"id1 subString c1, id1 subString c2, …, idn substring cn"という文字列制約を追加し、「x substring c」という形の文字列制約を出力する。ここで、c1〜cnは定数文字列であり、これらは一意になるように文字列の値を決めておく。例えば、c1="01"、c2="02"などとすればよい。
次に、図16のS380の外部キーに関する制約を追加する処理について説明する。
図18は、本発明の一実施の形態におけるS380の詳細フローチャートである。
ステップ810) DBレコード件数決定部120は、テストケース記憶部160からテストケースaを読み込む。
ステップ820) テストケースaに含まれる制約集合からカラム存在参照を含む制約を選び出す。
ステップ830) 各カラム存在参照(∃)を含む制約のカラム型がInt(整数型)(図6(A))である場合は、外部キーに関する制約をDBフィールド変数に対する制約として展開し、x==yという形の整数制約を出力する。ここで、制約を展開するとは、入力された整数型外部キーに関する∃columX == ∃columYという制約に対し、columX, columYに対応するDBフィールド変数をそれぞれ、
fieldX1, FieldX2, …,fieldXn, filedY1, fieldY2, …,fieldXm
とする。ここで、fieldXi == any FieldY (但し、i = 1〜m, any FieldYmのいずれか)という整数制約を生成し、整数変数同士の比較という制約に変形することを指す。
ステップ840) 各カラム存在参照を含む制約のカラム型がString型(文字列型)(図6(A))である場合は、文字列型の外部キーに関する制約をDBフィールド変数に対する制約として展開する。この制約の展開とは、入力された文字列型外部キーに関する∃columX == ∃columYという制約に対し、columX, columYに対応するDBフィールド変数をそれぞれ、
fieldX1, fieldX2, …, filedXn, fieldY1, fieldY2, …, fieldXm
とする。ここで、fieldXi equalsString anyFieldY(但し、i = 1〜m, anyFieldYはfieldY1〜fieldYmのいずれ)という整数制約を生成し、文字列変数同士の比較という制約に変形することを指す。
上記のDBレコード件数決定部120の、図5の条件(3)(DB初期状態に対する制約)に含まれる制約のうち、DBレコードの主キー、外部キーに関する制約を選び出し、整数変数同士の比較、文字列変数同士の比較という種類の制約に変形させることにより、主キー、外部キー制約を、整数型変数同士の比較、文字列型同士の比較という制約に変換する。図5の条件(1)、条件(2)の制約と連立させて解いているため、DB定義を満たし、かつ、処理の分岐を制御できるDB初期状態値を生成できる。
次に、整数・文字列長決定部130の図9のS130の処理について説明する。
図19は、本発明の一実施の形態における図9のS130の詳細フローチャートである。
ステップ410) 整数・文字列長決定部130は、テストケース記憶部160からテストケースbを読み込む。
ステップ420) 取得したテストケースbに含まれる制約集合から文字列型変数同士の包含関係に関係する文字列制約を選び出す。文字列制約の例を図20(a)に示す。
ステップ430) ステップ420で選択された文字列制約における左側の文字列因子を文字列親ノードとし、右側の文字列因子を文字列子ノードとする文字列包含関係木を作成する。文字列演算子別子ノード群は、文字列演算子が図21に示す文字列比較演算子テーブルの前方一致、部分一致、後方一致、等価に登録されている順に並べ、文字列包含関係木リストを作成する。文字列包含関係木リストの例を図20(b)に示す。
ステップ440) 文字列包含関係木リストを取得すると、空のリストを生成し、各文字列包含関係木リストに対し、深さ優先順で探索を行い、各文字列親子ノードをリストに入れていき、文字列親子ノードリストを作成する。文字列親子ノードリストの例を図20(c)に示す。
ステップ450) ステップ440において生成された文字列親子ノードリストから文字列変数の文字列長に関する制約を抽出する。抽出例を図20(d)に示す。図20の例において、同図(c)の文字列C、Dの文字列長の関係はC>=Dであり、文字列A,B,Cの文字列長の関係はA>=C+Bであり、文字列EとFの文字列長の関係はE=Fであることから、文字列長に関する制約として、
Length(A) >= Length(C)+Length(B)
Length(C) >= Length(D)
Length(E )== Length(F)
を得る(図6(B))。当該処理を文字列親子ノードのリストの各文字列親子ノードに対して行う。詳細については図22で後述する。
ステップ460) 上記の制約集合の中から整数制約(文字列長に関する制約も整数制約であるのでこれに含まれる)を全て選び出す。
ステップ470) 選び出された整数制約の整数の不等式となっているため、これを連立不等式として既存技術(SMT Arithmetic Theory, シンプレックス法)を用いて解き、制約を満たすレコード件数の値を求める。当該シンプレックス法の他に、SMTやSolver等を用いてもよい。これらの解法は高速であるため、実用的な時間で制約を解き、入力値とDB初期状態の組み合わせを特定できる。
次に、上記のステップ450の動作を説明する。
図22は、本発明の一実施の形態における図19のS450の詳細フローチャートである。
ステップ910) 整数・文字列長決定部130は、ステップ440で生成された文字列親子ノードリストを読み込む。
ステップ920) 読み込まれた文字列親子ノードリストの文字列親子ノードの文字列因子をs0、文字列比較演算子が文字列比較演算子テーブルの等価に属する文字列比較演算子別ノード群の文字列子ノードの文字列因子をs1とおく。Length(s0)==Length(s1)という整数制約を全ての文字列子ノードに対して生成する。
ステップ930) 次に、文字列同士の部分一致に関する文字列長制約(図6(A))を抽出する。具体的には、ステップ910で読み込まれた文字列親子ノードのうち、文字列親ノードの文字列因子をs0、文字列比較演算子が文字列比較演算子テーブル(図21)の前方一致に含まれる文字列比較演算子別ノード群の文字列子ノードの文字列因子をshとする。文字列比較演算子が文字列比較演算テーブルの部分一致に含まれる文字列比較演算子別ノード群の文字列子ノードの文字列因子をs1,s2,…,snとする。文字列比較演算子が文字列比較演算子テーブルの前方一致に含まれる文字列比較演算子別ノード群の文字列子ノードの文字列因子をstとおき、
Length(s0)>=Length(sh)+Length(s1)+…+Length(sn)+Length(st)
という整数制約を生成し、これを文字列長に関する整数制約(図6(B))として出力する。
上記の整数・文字列長決定部130の処理により、入れ子の外側の配列から順に、その配列の長さを決めていくことにより、最終的に整数に関する制約について連立不等式として解ける状態になり、配列の要素を求めることが可能となり、分割して管理されている複雑なデータ構造(入れ子の配列)に対して適切にテストデータを生成することが可能となる。
また、文字列の長さに関する制約を残さず抽出することで、文字列の長さを先に求めることができ、文字決定部140において解ける状態になるため、文字列同士の包含関係を満たしたテストデータを生成することが可能となる。
次に、文字決定部140における図9のS140の処理を詳細に説明する。
図23は、本発明の一実施の形態における図9のS140の詳細フローチャートであり、図24は、本発明の一実施の形態における文字決定部の処理を示す。
ステップ510) 文字決定部140は、テストケース記憶部160から読み込んだテストケースcの変数集合から文字列型変数を選ぶ。
ステップ520) ステップ520で選択された文字列型変数の文字列長変数の値の分だけ文字列型変数を生成し、文字列型変数のメンバとする。文字列型変数のSymbolには全ての文字列型変数で異なる一意性のある記号(図24では「σ1」、「σ2」を割り当てる(図24(a))。
ステップ530) 文字列親子ノードリスト(図24(c))を読み込む。なお、文字列親子ノードリストは、対応する文字型変数のSymbol(図24の例では「σ」)が揃えてある。
ステップ540) 文字列親子ノード(図24(c))と文字列子ノードの対応する文字を同じ変数で揃える(図24(d))。当該処理は、文字列変数同士の対応する位置に存在する文字を一致させる処理であるため、文字列同士の包含関係を満たしたテストデータを生成することができる。当該処理を文字列親子ノードリストの各文字列親子ノードに対して行う。詳細については、図25で後述する。
ステップ550) 文字変数に具体的な文字値を割り当てる。例えば、"a"〜"z"の範囲のアルファベットからランダムに選んだ文字を当てはめていくという方法がある。このようにして割り当てられた文字変数の値をテストケース記憶部160に出力する。
次に、上記の図23のS540の処理について説明する。
図25は、本発明の一実施の形態における図23のS540の詳細フローチャートである。
ステップ1010) 文字列決定部140は、文字列親子ノードを読み込む。
ステップ1020) 文字列現在位置を0に設定する。
以下の処理を文字列親子ノードの各文字列比較演算子別子ノード群の各文字列子ノードに対して行う。
ステップ1030) 読み込まれた文字列親子ノードの各文字列比較演算子別子ノード群に対して、当該文字列比較演算子ノード群の各文字列子ノードの文字列比較演算子の種類が、前方一致または部分一致、等価、後方一致のいずれであるかを判定する。前方一致または部分一致の場合はステップ1040へ、等価の場合はステップ1050へ、後方一致の場合はステップ1060の処理に移行する。
ステップ1040) 前方一致、部分一致要の文字列型変数ペアリストを生成する。詳しくは、文字列親ノードの文字列をps、文字列子ノードの文字列をcsとおき、
[(ps[文字列現在位置],cs[0]),…,(ps[文字列現在位置+1],cs[Length(cs)-1])
という文字列変数ペアリストを作成する。そして、文字列現在位置にLength(cs)を加え、ステップ1070に移行する。
ステップ1050) 等価用の文字型変数ペアリストを作成する。詳しくは、文字列親ノード及び文字列子ノードを取得し、文字列親ノードの文字列をps、文字列子ノードのm時列をcsとおき、
[ps[0], cs[0], …, (ps[Length(ps)−1], cs[Length(cs)−1])
という文字列変数ペアリストを作成する。そして文字列現在位置にLength(cs)を加え、ステップ1070の処理に移行する。
ステップ1060) 後方一致用の文字列型変数のペアリストを作成する。詳しくは、文字列親ノード及び文字列子ノードを取得し、文字列親ノードの文字列をps、文字列子ノードの文字列をcsとおき、
[(ps)[Length(ps)−Length(cs)], cs[0]], …, (ps[Length(ps)−1], cs[Length(cs)−1])
という文字列変数ペアリストを作成し、ステップ1070の処理に移行する。
ステップ1070) 上記のステップ1040,1050,1060で生成された文字型変数ペアリストの各文字型変形ペアの文字を揃える。詳しくは、文字列比較演算子、及び、ステップ1060で生成された文字型変数ペアリストを取得し、文字列比較演算子に基づき文字列型変形ペアの文字を揃える。当該処理を文字型変数ペアリストの各文字型変数ペアに対して行う。詳細について以下に示す。
図26は、本発明の一実施の形態における図25のS1070の詳細フローチャートである。
ステップ1110) ステップ1040,1050,1060で生成された文字型変形ペアを読み込む。
ステップ1120) 読み込んだ文字型変数ペアの組は、文字型変数同士、文字型変数と定数文字(もしくは値の決まった文字型変数)、定数文字同士のいずれであるかを判断する。
文字型変数同士であればステップ1130の処理に移行し、文字型変数と定数文字であればステップ1140の処理に移行し、定数文字同士であればステップ1150の処理に移行する。
ステップ1130) 文字型変数ペアの組が文字型変数同士の場合は、字変数型ペアを構成する2つの文字型変数のSymbolに割り当てられている記号をそれぞれX, Yとおく。テストケースで用いられている全文字型変数のうちSymbolがX, Yであるもの全てに対し、SymbolをXに置換した文字型変数ペアを出力する。
ステップ1140) 文字型変数ペアの組が文字型変数と定数文字であれば、文字変数の値を定数文字に置き換えた文字型変数ペアを出力する。
ステップ1150) 文字型変数ペアの組が定数文字同士であれば定数同士が等価であることを確認し、定数同士が等価でない場合はテストデータ生成不可エラーを出力する。
上記の文字決定部140の、図5に示す条件(1)、条件(2)、条件(3)に含まれる制約のうち、文字列変数同士の包含関係に基づき、文字列変数同士の対応する位置に存在する文字がそれぞれ一致するように文字を決定することにより、文字列変数同士の対応する位置に存在する文字が一致するようになるため、文字列同士の包含関係を満たしたテストデータを生成することが可能となる。
なお、上記のテストデータ生成装置の各構成の動作をプログラムとして構築し、テストデータ生成装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
本発明は上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
10 ユーザ端末
100 テストデータ生成装置
110 テストケース抽出部
120 DBレコード件数決定部
130 整数・文字列長決定部
140 文字決定部
150 テストデータ出力部

Claims (10)

  1. データベース(DB)に格納されているデータの読み出し操作を伴う機能性テストを実施するためのテストデータを生成するテストデータ生成装置であって、
    テストケースを格納するテストケース記憶手段と、
    設計情報として、ソフトウェアの入力値の定義域を表す入力値定義、ソフトウェアの処理の流れを表す処理フロー図、データベースの設計情報であるDB定義を取得し、入力変数、DBテーブル変数、及び該ソフトウェアの特定の振る舞いを引き起こすようにテストデータが満たすべき条件である制約を抽出し、前記テストケース記憶手段に格納するテストケース抽出手段と、
    前記テストケース記憶手段から取得した、前記DBテーブル変数のレコード件数に関する制約を解き、該DBテーブル変数のレコード件数を決定し、該レコード件数分のDBレコード変数を生成し、前記テストケース記憶手段に格納するDBレコード件数決定手段と、
    前記テストケース記憶手段から取得した、文字列型変数同士の包含関係に関する制約から、文字列長に関する制約を導出し、文字列型変数の文字列長と整数型変数に関する制約を解き、文字列長変数と整数型変数を前記テストケース記憶手段に格納する整数・文字列長決定手段と、
    前記テストケース記憶手段から取得した文字列型変数に関する制約を解き、文字列型変数を構成する文字の値を決定し、前記テストケース記憶手段に格納する文字決定手段と、
    前記テストケース記憶手段に格納されている前記入力変数、前記DBテーブル変数をテストデータとして出力する出力手段と、
    を有することを特徴とするテストデータ生成装置。
  2. 前記テストケース抽出手段は、
    前記入力値定義及び前記処理フロー図から「入力値に対する制約」を抽出し、該処理フロー図のDB検索条件から、「検索ヒット数、入力値、DB初期状態依存関係に関する制約」を抽出し、前記DB定義より「DB初期状態に対する制約」を抽出する手段を含む
    請求項1記載のテストデータ生成装置。
  3. 前記レコード件数決定手段は、
    入れ子の配列に相当する複雑なDBテーブルのレコード群を検出した場合に、前記「検索ヒット数、入力値、DB初期状態依存関係に関する制約」に含まれる不等式で表された「DBテーブルのレコード群の件数に関する制約」を選択し、連立不等式として解くことでDBテーブル変数のDBレコード件数を決定する手段を含み、
    前記整数・文字列長決定手段は、
    入れ子の配列に相当する複雑なDBテーブルのレコード群を検出した場合に、前記テストケース抽出手段で抽出された前記「入力値に対する制約」、前記「検索ヒット数、入力値、DB初期状態依存関係に関する制約」、前記「DB初期状態に対する制約」のいずれかに含まれる、不等式で表された「文字列の長さに関する制約」を選択し、連立不等式として解くことで配列の長さを決定する手段を含む
    請求項2記載のテストデータ生成装置。
  4. 前記レコード件数決定手段は、
    前記「DB初期状態に対する制約」のうち、DBレコードの主キー、外部キーに関する制約を選び、整数変数同士比較、または、文字列変数同士の比較とする制約に変形する手段を含む
    請求項3記載のテストデータ生成装置。
  5. 前記整数・文字列長決定手段は、
    前記「DB初期状態に対する制約」のうち、DBレコードの主キー、外部キーに関する制約を選び、整数変数同士比較に変換した制約、前記「入力値に対する制約」、前記「検索ヒット数、入力値、DB初期状態依存関係に関する制約」、前記「DB初期状態に対する制約」のいずれかに含まれる、不等式で表された「整数に関する制約」を選択し、選択された整数に関する制約を連立不等式として解き、制約群を満たす値を求める手段を含む
    請求項3記載のテストデータ生成装置。
  6. 前記文字決定手段は、
    前記「入力値に対する制約」、前記「検索ヒット数、入力値、DB初期状態依存関係に関する制約」のいずれかに含まれる、文字列変数同士の包含関係に基づいて、該文字列変数同士の対応する位置に存在する文字がそれぞれ一致する文字を前記文字の値と決定する手段を含む
    請求項2記載のテストデータ生成装置。
  7. データベース(DB)に格納されているデータの読み出し操作を伴う機能性テストを実施するためのテストデータを生成するテストデータ生成方法であって、
    テストケース抽出手段が、設計情報として、ソフトウェアの入力値の定義域を表す入力値定義、ソフトウェアの処理の流れを表す処理フロー図、データベースの設計情報であるDB定義を取得し、入力変数、DBテーブル変数、及び該ソフトウェアの特定の振る舞いを引き起こすようにテストデータが満たすべき条件である制約を抽出し、テストケース記憶手段に格納するテストケース抽出ステップと、
    DBレコード件数決定手段が、前記テストケース記憶手段から取得した、前記DBテーブル変数のレコード件数に関する制約を解き、該DBテーブル変数のレコード件数を決定し、前記テストケース記憶手段に格納するDBレコード件数決定ステップと、
    整数・文字列長決定手段が、前記テストケース記憶手段から取得した、文字列型変数同士の包含関係に関する制約から、文字列長に関する制約を導出し、文字列型変数の文字列長と整数型変数に関する制約を解き、文字列長変数と整数型変数を前記テストケース記憶手段に格納する整数・文字列長決定ステップと、
    文字決定手段が、前記文字列型変数に関する制約を解き、該文字列型変数を構成する文字の値を決定し、前記テストケース記憶手段に格納する文字決定ステップと、
    出力手段が、前記テストケース記憶手段に格納されている前記入力変数、前記DBテーブル変数をテストデータとして出力する出力ステップと、
    を行うことを特徴とするテストデータ生成方法。
  8. 前記テストケース抽出ステップにおいて、
    前記入力値定義及び前記処理フロー図から「入力値に対する制約」を抽出し、該処理フロー図のDB検索条件から、「検索ヒット数、入力値、DB初期状態依存関係に関する制約」を抽出し、前記DB定義より「DB初期状態に対する制約」を抽出し、
    前記レコード件数決定ステップにおいて、
    入れ子の配列に相当する複雑なDBテーブルのレコード群を検出した場合に、前記「検索ヒット数、入力値、DB初期状態依存関係に関する制約」に含まれる不等式で表された「DBテーブルのレコード群の件数に関する制約」を選択し、連立不等式として解くことでDBテーブル変数のDBレコード件数を決定し、
    前記整数・文字列長決定ステップにおいて、
    入れ子の配列に相当する複雑なDBテーブルのレコード群を検出した場合に、前記テストケース抽出手段で抽出された前記「入力値に対する制約」、前記「検索ヒット数、入力値、DB初期状態依存関係に関する制約」、前記「DB初期状態に対する制約」のいずれかに含まれる不等式で表された「文字列の長さに関する制約」を選択し、連立不等式として解くことで配列の長さを決定する
    請求項7記載のテストデータ生成方法。
  9. 前記レコード件数決定ステップにおいて、
    前記「DB初期状態に対する制約」のうち、DBレコードの主キー、外部キーに関する制約を選び、整数変数同士比較、または、文字列変数同士の比較とする制約に変形し、
    前記整数・文字列長決定ステップにおいて、
    前記「DB初期状態に対する制約」のうち、DBレコードの主キー、外部キーに関する制約を選び、整数変数同士比較に変換した制約、前記「入力値に対する制約」、前記「検索ヒット数、入力値、DB初期状態依存関係に関する制約」、前記「DB初期状態に対する制約」のいずれかに含まれる、不等式で表された「整数に関する制約」を選択し、選択された整数に関する制約を連立不等式として解き、制約群を満たす値を求める
    請求項8記載のテストデータ生成方法。
  10. 前記文字決定ステップにおいて、
    前記「入力値に対する制約」、前記「検索ヒット数、入力値、DB初期状態依存関係に関する制約」のいずれかに含まれる、文字列変数同士の包含関係に基づいて、該文字列変数同士の対応する位置に存在する文字がそれぞれ一致する文字を前記文字の値と決定する手段を含む
    請求項8記載のテストデータ生成方法。
JP2011087672A 2011-04-11 2011-04-11 テストデータ生成装置及び方法 Active JP5514143B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011087672A JP5514143B2 (ja) 2011-04-11 2011-04-11 テストデータ生成装置及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011087672A JP5514143B2 (ja) 2011-04-11 2011-04-11 テストデータ生成装置及び方法

Publications (2)

Publication Number Publication Date
JP2012221311A JP2012221311A (ja) 2012-11-12
JP5514143B2 true JP5514143B2 (ja) 2014-06-04

Family

ID=47272717

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011087672A Active JP5514143B2 (ja) 2011-04-11 2011-04-11 テストデータ生成装置及び方法

Country Status (1)

Country Link
JP (1) JP5514143B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5965455B2 (ja) * 2014-10-15 2016-08-03 日本電信電話株式会社 優先度付き境界値テストデータ生成装置、方法及びプログラム
JP6067642B2 (ja) * 2014-10-15 2017-01-25 日本電信電話株式会社 同値テストデータ生成装置、方法及びプログラム
JP6067644B2 (ja) * 2014-10-15 2017-01-25 日本電信電話株式会社 不等号誤りを検出する境界値テストデータ生成装置、方法及びプログラム
JP6067643B2 (ja) * 2014-10-15 2017-01-25 日本電信電話株式会社 境界値テストデータ生成装置、方法及びプログラム
JP6684233B2 (ja) * 2017-01-12 2020-04-22 株式会社日立製作所 テスト入力情報検索装置及び方法

Also Published As

Publication number Publication date
JP2012221311A (ja) 2012-11-12

Similar Documents

Publication Publication Date Title
JP5514143B2 (ja) テストデータ生成装置及び方法
Korman et al. Distributed verification of minimum spanning trees
CN106897352B (zh) 在拓展中进行修改的区块链的生成方法及***
JP5040925B2 (ja) 情報抽出規則作成支援システム、情報抽出規則作成支援方法及び情報抽出規則作成支援プログラム
US10445428B2 (en) Information object extraction using combination of classifiers
CN102388595A (zh) Vpc迁移中的资源匹配方法及装置
US20180039890A1 (en) Adaptive knowledge base construction method and system
CN107066495B (zh) 沿纵向拓展的区块链的生成方法及***
CN104077228A (zh) 一种基于谓词依赖图的efsm可执行测试序列生成方法
CN114077534A (zh) 测试用例生成方法、装置和计算机可读存储介质
JP5514144B2 (ja) テストデータ生成装置及び方法
Ďuračík et al. Searching source code fragments using incremental clustering
Álvarez-Miranda et al. The recoverable robust two-level network design problem
JP5514145B2 (ja) テストデータ生成装置及び方法
JP5514146B2 (ja) テストデータ生成装置及び方法
JP5718166B2 (ja) 設計検証方法及びプログラム
JP5523526B2 (ja) テストパス中に複数の参照アクセスをもつテスト用のデータ生成装置及び方法及びプログラム
CN109558521A (zh) 大规模关键词多模匹配方法、装置以及设备
JP5555238B2 (ja) ベイジアンネットワーク構造学習のための情報処理装置及びプログラム
Gnecco et al. Sparse solutions to the average consensus problem via various regularizations of the fastest mixing Markov-chain problem
Stepien et al. Challenges of composing XACML policies
Gupta et al. Fast dynamic programming in trees in the mpc model
Blanché et al. Hereditary graph classes: When the complexities of coloring and clique cover coincide
CN114201199A (zh) 基于信息安全大数据的防护升级方法及信息安全***
CN110750449A (zh) 一种测试驱动的网页构件功能抽取方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121022

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20131007

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131112

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131227

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140328

R150 Certificate of patent or registration of utility model

Ref document number: 5514143

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150