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

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

Info

Publication number
JP5407727B2
JP5407727B2 JP2009235937A JP2009235937A JP5407727B2 JP 5407727 B2 JP5407727 B2 JP 5407727B2 JP 2009235937 A JP2009235937 A JP 2009235937A JP 2009235937 A JP2009235937 A JP 2009235937A JP 5407727 B2 JP5407727 B2 JP 5407727B2
Authority
JP
Japan
Prior art keywords
data
character string
storage unit
type
conversion
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
JP2009235937A
Other languages
English (en)
Other versions
JP2011085967A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2009235937A priority Critical patent/JP5407727B2/ja
Publication of JP2011085967A publication Critical patent/JP2011085967A/ja
Application granted granted Critical
Publication of JP5407727B2 publication Critical patent/JP5407727B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本技術は、業務アプリケーションのテストで使用されるテストデータを自動生成する分野の技術に関する。
業務アプリケーションのテストを行う際には、例えば図1に示すように、テスト項目の内容、業務アプリケーションにおける画面項目定義や画面遷移定義、テーブル定義、ER図(Entity Relationship Diagram)などの様々な制約を全て満たすテストデータを準備する必要がある。例えば、商品の在庫が足りない場合には、受注できないようになっている業務アプリケーションに対して、「発注入力画面で確認ボタン押下時に、入力された担当者及び商品に対応するレコードが担当者テーブルに存在し、かつ入力された発注数が在庫テーブル内の対応する商品の在庫数を超えている場合、発注確認画面でエラー表示されることを確認」というテストを行う際には、これらの制約を満たす発注入力画面、担当者テーブル及び在庫テーブルのデータを準備する必要がある。また、業務アプリケーションでは、文字列型のデータを扱うため、文字列を含むテストデータを生成することが必須となってくる。例えば図1では、発注入力画面の「担当者」「商品」、担当者テーブルの「担当」「商品」「承認者」、在庫テーブルの「商品」などが、文字列型のデータとなる。
一方、様々な制約を同時に満たすデータを生成する技術として、充足可能性問題を解くSMT(Satisfiability Modulo Theories:充足可能性モジュロ理論)ソルバを利用したデータ生成技術が存在する。なお、SMTソルバの詳細については非特許文献2及び3などを参照のこと。また、SMTソルバを利用した文字列データ生成技術として、例えば非特許文献1記載の技術などが存在している。
この従来技術では、数値型配列を用いて、各文字をASCII(American Standards Committee for Information Interchange)コードで表すことにより、1つの文字列を表現するようになっている。また、この従来技術では、図2に示すような流れで文字列データを生成するようになっている。具体的には、図2に示すように、「文字列A=文字列B かつ 文字列Aの長さ>=5」という制約があった場合、文字列Aと文字列Bとは同一文字列であることから、文字列Aと文字列Bの長さは同一となる。従って、「A.length=B.length and A.length>=5」という論理式が導き出される。なお、「A.length」は文字列Aの長さを意味する。そして、SMTソルバを利用して、この論理式を満たす解(すなわち、文字列の長さ)を特定する。ここでは、文字列の長さが5に特定されたものとする。この場合、文字列Aは、数値型配列A[0]〜A[4]によって表され、文字列Bは、数値型配列B[0]〜B[4]によって表される。
そして、上で述べたように文字列Aと文字列Bとは同一文字列であることから、A[i]=B[i]となる(i=0〜4)。従って、「A[0]=B[0] and A[1]=B[1] and A[2]=B[2] and A[3]=B[3] and A[4]=B[4]」という論理式が導き出される。そして、SMTソルバを利用して、この論理式を満たす解を1つ特定する。ここでは、論理式を満たす解として、A[0]=B[0]=65(すなわち、文字「A」)、A[1]=B[1]=66(すなわち、文字「B」)、A[2]=B[2]=67(すなわち、文字「C」)、A[3]=B[3]=68(すなわち、文字「D」)、A[4]=B[4]=69(すなわち、文字「E」)が特定されたものとする。その後、ASCIIコードを文字に置き換え、文字列に変換することにより、文字列A=文字列B=“ABCDE”という文字列データが生成される。
WO2005/071609公報 特開平8−329165号公報
Nikolaj Bjorner, Nikolai Tillmann and Andrei Voronkov, "Path Feasibility Analysis for String-Manipulating Programs", Proc. of TACAS 2009, Tools and Algorithms for the Construction and Analysis of Systems, LNCS, vol 5505, pages 307-321, March 2009. Armin Biere, Marijn Heule, Hans Van Maaren, Toby Walsh, "Handbook of Satisfiability(Frontiers in Artificial Intelligence and Applications)", IOS Press, 2009/2 R.E. Bryant, Daniel Kroening, Ofer Strichman, "Decision Procedures: An Algorithmic Point of View(Texts in Theoretical Computer Science. An EATCS Series)", Springer, 2008/7/7
以上述べたように、従来技術では、1つの文字列を数値型配列で表現するようになっているため、1つの文字列につき、数値型配列の要素数分の値をSMTソルバによって求めなければならない。例えば、1つの文字列の文字数が数十から数百であったとすると、数千もの文字列を生成するためには、数万から数十万もの値をSMTソルバによって求めなければならない。この場合、SMTソルバによる計算量が膨大になり、実用的な時間で計算することができない。従って、多くの文字列を生成する場合には、あまり実現的な技術ではない。また、大量のメモリを消費することになり、メモリ不足などの問題が生じる可能性もある。
従って、本技術の目的は、多くの文字列を生成する場合でも、計算量を最小限に抑えつつ、文字列を含むテストデータを自動生成することである。
本テストデータ生成方法は、データ定義文を含み且つテストデータに関する制約を格納する制約データ格納部に格納されている制約におけるデータ定義文に含まれる文字列型のデータ項目を数値型のデータ項目に変換し、変換したデータ項目を変換項目一覧格納部に格納する型変換ステップと、型変換後の制約を満たすデータを求め、制約充足解データとして記憶装置に格納する制約充足解算出ステップと、記憶装置に格納されている制約充足解データから、変換項目一覧格納部に格納されているデータ項目に係る数値を収集するステップと、収集した各数値について、当該数値に対応する文字列を生成し、生成した文字列を当該数値と対応付けて対応表データ格納部に格納する対応表生成ステップと、記憶装置に格納されている制約充足解データにおいて、変換項目一覧格納部に格納されているデータ項目に係る各数値を、対応表データ格納部に格納され且つ当該数値に対応する文字列で置換することにより、型変換前の制約を満たすテストデータを生成するステップとを含む。
多くの文字列を生成する場合でも、計算量を最小限に抑えつつ、文字列を含むテストデータを自動生成できる。
図1は、テストデータの概要を説明するための図である。 図2は、従来手法の流れを示す図である。 図3は、本技術の第1の実施の形態に係るテストデータ生成装置の機能ブロック図である。 図4は、制約データ格納部に格納される制約の一例を示す図である。 図5は、対応表データ格納部に格納される対応表の一例を示す図である。 図6は、テストデータ生成装置のメインの処理フローを示す図である。 図7は、型変換処理の処理フローを示す図である。 図8は、型変換処理により生成される制約と変換項目一覧の一例を示す図である。 図9は、制約充足解データの一例を示す図である。 図10は、対応表生成処理の処理フローを示す図である。 図11は、対応表生成処理により生成される対応表の一例を示す図である。 図12は、文字列置換処理の処理フローを示す図である。 図13は、文字列置換処理により生成されるテストデータの一例を示す図である。 図14は、本技術の第2の実施の形態に係るテストデータ生成装置の機能ブロック図である。 図15は、値域一覧データ格納部に格納される値域一覧の一例を示す図である。 図16は、型変換処理2の処理フローを示す図である。 図17は、型変換処理2により生成される制約と変換項目一覧の一例を示す図である。 図18は、制約充足解データの一例を示す図である。 図19は、対応表生成処理2の処理フローを示す図である。 図20は、対応表生成処理2により生成される対応表の一例を示す図である。 図21は、文字列置換処理により生成されるテストデータの一例を示す図である。 図22は、コンピュータの機能ブロック図である。 図23は、本技術の第1の態様に係るテストデータ生成方法の処理フローを示す図である。 図24は、本技術の第2の態様に係るテストデータ生成装置の機能ブロック図である。
[実施の形態1]
本技術の第1の実施の形態に係るテストデータ生成装置100の機能ブロック図を図3に示す。本実施の形態に係るテストデータ生成装置100は、制約データ格納部1と、型変換部3と、変換後制約データ格納部5と、変換項目一覧データ格納部7と、SMTソルバ実行部9と、制約充足解データ格納部11と、対応表生成部13と、対応表データ格納部15と、文字列置換部17と、テストデータ格納部19とを有する。なお、ネットワークを介して接続される他のコンピュータにテストデータ格納部19が含まれるような場合もあり、その場合には、テストデータ生成装置100が、後で説明する処理によって生成したテストデータをネットワークを介して他のコンピュータに出力する。
型変換部3は、制約データ格納部1に格納されているデータを用いて、後で説明する型変換処理を実施し、処理結果を変換後制約データ格納部5に格納する。また、変換項目一覧データ格納部7には、型変換部3による型変換処理によって、文字列型から数値型に変換されたデータ項目の一覧が格納される。SMTソルバ実行部9は、変換後制約データ格納部5に格納されているデータを用いて、制約充足解データを求めるための処理を実施し、処理結果を制約充足解データ格納部11に格納する。対応表生成部13は、変換項目一覧データ格納部7と制約充足解データ格納部11とに格納されているデータを用いて、後で説明する対応表生成処理を実施し、処理結果を対応表データ格納部15に格納する。文字列置換部17は、変換項目一覧データ格納部7と制約充足解データ格納部11と対応表データ格納部15とに格納されているデータを用いて、後で説明する文字列置換処理を実施し、処理結果をテストデータ格納部19に格納する。
制約データ格納部1には、テストデータに関する制約が格納される。図4に、制約データ格納部1に格納される制約の一例を示す。図4において、第1行目の「define 担当者T(担当者record, 担当者record, 担当者record)」は、4つの担当者recordを含む担当者テーブルを定義しており、第2行目の「define 担当者record(担当:String, 商品:String, 承認者:String)」は、「担当」、「商品」及び「承認者」を含む担当者recordを定義している。なお、「担当」、「商品」及び「承認者」は、文字列(String)型のデータ(変数と呼ぶ場合もある)となっている。また、第3行目の「define 発注入力画面(担当者:String, 商品:String, 発注数:int)」は、「担当者」、「商品」及び「発注数」を含む発注入力画面を定義している。なお、「担当者」及び「商品」は、文字列型のデータとなっており、「発注数」は、数値(int)型のデータとなっている。さらに、第4行目以降は、制約条件を規定する論理式となっている。例えば、第4行目以降の「numOf(filter(rec in 担当者T, rec.担当 == 発注入力画面.担当者 and rec.商品 == 発注入力画面.商品)) > 0)」は、「担当者recordの担当と発注入力画面の担当者とが一致し、且つ担当者recordの商品と発注入力画面の商品とが一致する」という条件で、担当者テーブルからレコードの絞り込みを行い、該当するレコードの数が1以上になるという制約を表している。なお、これは簡単な制約の一例であるから、制約の内容はこのようなものに限定されるものではない。
対応表データ格納部15には、図5に示すような対応表が格納される。図5の例では、対応表には、数値の列と、文字列の列とが含まれ、各数値に対応する文字列が格納される。
次に、図6乃至図13を用いて、本実施の形態に係るテストデータ生成装置100の処理について説明する。まず、型変換部3は、制約データ格納部1からテストデータに関する制約を読み出し(図6:ステップS1)、読み出したデータを用いて型変換処理を実施する(ステップS3)。型変換処理については図7及び図8を用いて説明する。
まず、型変換部3は、事前処理として、読み出した制約を変換後制約データ格納部5にコピーする。そして、型変換部3は、制約に含まれる定義文(図4の例では、define文)の中から未処理の定義文を1つ特定する(図7:ステップS11)。そして、型変換部3は、特定した定義文中に、文字列型のデータ項目が含まれているか判断する(ステップS13)。例えば文字列検索を行い、文字列「String」が含まれているか判断する。特定した定義文中に、文字列型のデータ項目が含まれていなければ(ステップS13:Noルート)、処理は、ステップS23の処理に移行する。
一方、特定した定義文中に、文字列型のデータ項目が含まれている場合(ステップS13:Yesルート)、型変換部3は、特定した定義文中に含まれる文字列型のデータ項目のうち未処理のデータ項目を1つ特定する(ステップS15)。そして、型変換部3は、変換後制約データ格納部5に格納されている制約において、特定したデータ項目のデータ型を文字列型から数値型に変換する(ステップS17)。すなわち、String型のデータ項目が、int型のデータ項目に変換される。そして、型変換部3は、変換したデータ項目を変換項目一覧データ格納部7に登録する(ステップS19)。
そして、型変換部3は、特定した定義文中に含まれる文字列型のデータ項目全てについて処理が完了したか判断する(ステップS21)。特定した定義文中に、文字列型の未処理のデータ項目がある場合(ステップS21:Noルート)、ステップS15の処理に戻り、型変換部3は、ステップS15乃至ステップS21の処理を繰り返す。
一方、特定した定義文中に含まれる文字列型のデータ項目全てについて処理が完了した場合(ステップS21:Yesルート)、ステップS23の処理に移行する。
そして、型変換部3は、制約に含まれる全ての定義文について処理が完了したか判断する(ステップS23)。未処理の定義文がある場合(ステップS23:Noルート)、ステップS11の処理に戻り、型変換部3は、ステップS11乃至ステップS23の処理を繰り返す。
一方、制約に含まれる全ての定義文について処理が完了した場合(ステップS23:Yesルート)、本処理を終了し、元の処理に戻る。
例えば図4に示した制約に対して型変換処理を実施すると、図8に示すような型変換後の制約のデータが変換後制約データ格納部5に格納される。型変換後の制約では、第2行目の「担当」、「商品」及び「承認者」と、第3行目の「担当者」及び「商品」とが、String型からint型に変換されている。また、型変換処理を実施すると、String型からint型に変換された5つのデータ項目(「担当者record.担当」、「担当者record.商品」、「担当者record.承認者」、「発注入力画面.担当者」及び「発注入力画面.商品」)を含む変換項目一覧が変換項目一覧データ格納部7に格納される。
図6の説明に戻って、型変換処理(ステップS3)を実施した後、SMTソルバ実行部9が、変換後制約データ格納部5に格納されている型変換後の制約に対してSMTソルバを実行し、型変換後の制約を満たす解を算出し、制約充足解データ格納部11に格納する(ステップS5)。これにより、各データ項目の値の組み合わせの中から、型変換後の制約を満たす1の組み合わせが特定される。
例えば図8に示したような型変換後の制約に対してSMTソルバを実行した場合、制約充足解データとして、図9に示すような発注入力画面及び担当者テーブルのデータが算出される。図9では、担当者recordの担当と発注入力画面の担当者とが一致し、且つ担当者recordの商品と発注入力画面の商品とが一致するレコードが担当者テーブルに1つ存在しており、型変換後の制約を満たしている。なお、SMTソルバ自体は周知であるからこれ以上述べない。
その後、対応表生成部13が、変換項目一覧データ格納部7と制約充足解データ格納部11とに格納されているデータを用いて、対応表生成処理を実施する(ステップS7)。対応表生成処理については図10及び図11を用いて説明する。
まず、対応表生成部13は、変換項目一覧データ格納部7において未処理のデータ項目を1つ特定する(図10:ステップS31)。そして、対応表生成部13は、制約充足解データ格納部11から、特定したデータ項目に対応する数値を収集する(ステップS33)。例えば図8に示したような変換項目一覧が変換項目一覧データ格納部7に格納され、図9に示したような制約充足解データが制約充足解データ格納部11に格納されていた際に、ステップS31において「担当者record.担当」が特定された場合、当該データ項目に対応する数値として「0」「1」「1」「2」が収集される。
そして、対応表生成部13は、収集した各数値について当該数値を含むレコードを対応表データ格納部15における対応表に登録する(ステップS35)。なお、同一数値が複数存在する場合は、当該数値について1レコードだけ登録する。すなわち、収集した数値が「0」「1」「1」「2」であった場合には、3つのレコードを登録する。
そして、対応表生成部13は、変換項目一覧データ格納部7における全てのデータ項目について処理が完了したか判断する(ステップS37)。変換項目一覧データ格納部7における全てのデータ項目について処理が完了していなければ(ステップS37:Noルート)、ステップS31に戻り、対応表生成部13は、ステップS31乃至ステップS37の処理を繰り返す。この際、同一数値を含むレコードが対応表に既に登録されている場合には、ステップS35において、その数値についてレコードを登録する必要はない。
一方、変換項目一覧データ格納部7における全てのデータ項目について処理が完了した場合(ステップS37:Yesルート)、対応表生成部13は、対応表データ格納部15の対応表から未処理のレコードを1つ特定する(ステップS39)。そして、対応表生成部13は、特定したレコードに含まれる数値と予め設定されている固定文字列とを用いて、当該数値に対応する文字列を生成し、そのレコードに登録する(ステップS41)。なお、文字列の生成方法については、他の数値の文字列と区別できるような文字列を生成できれば、他の手法を採用してもよい。
そして、対応表生成部13は、対応表データ格納部15の対応表における全てのレコードについて処理が完了したか判断する(ステップS43)。対応表における全てのレコードについて処理が完了していなければ(ステップS43:Noルート)、ステップS39の処理に戻り、対応表生成部13は、ステップS39及びステップS43の処理を繰り返す。
一方、対応表における全てのレコードについて処理が完了した場合(ステップS43:Yesルート)、本処理を終了し、元の処理に戻る。
例えば文字列「abcd」が固定文字列であった場合に、図8に示した変換項目一覧と図9に示した制約充足解データとを用いて対応表生成処理を実施すると、図11に示すような対応表が生成される。図11に示すように、対応表には、数値「0」から「8」までの9つのレコードが登録され、各レコードには、数値の前に固定文字列が付加された文字列(「abcd0」、「abcd1」、「abcd2」、・・・、「abcd8」)が設定されている。
図6の説明に戻って、対応表生成処理(ステップS7)を実施した後、文字列置換部17が、変換項目一覧データ格納部7と制約充足解データ格納部11と対応表データ格納部15とに格納されているデータを用いて、文字列置換処理を実施する(ステップS9)。その後、処理を終了する。なお、文字列置換処理については図12及び図13を用いて説明する。
まず、文字列置換部17は、事前処理として、制約充足解データ格納部11に格納されている制約充足解データをテストデータ格納部19にコピーする。そして、文字列置換部17は、変換項目一覧データ格納部7において未処理のデータ項目を1つ特定する(図12:ステップS51)。そして、文字列置換部17は、制約充足解データから、特定したデータ項目に設定されている数値を特定する(ステップS53)。なお、そのデータ項目について、複数の数値が設定されている場合には、全て特定する。例えば制約充足解データが図9に示したようなデータであり、ステップS51において「担当者record.担当」が特定された場合には、担当者テーブルの担当の列に設定されている「0」「1」「1」「2」が特定される。
そして、文字列置換部17は、対応表データ格納部15の対応表から、特定した数値に対応する文字列を取得する(ステップS55)。例えば、図11に示したような対応表が対応表データ格納部15に格納されており、ステップS53において数値「0」「1」「1」「2」が特定された場合には、本ステップでは、文字列「abcd0」、「abcd1」及び「abcd2」が取得される。そして、文字列置換部17は、テストデータ格納部19に格納されている制約充足解データにおいて、特定したデータ項目に設定されている数値を、対応する文字列で置換する(ステップS57)。例えば、図9に示したような制約充足解データにおいて、担当者テーブルの担当の列に設定されている「0」「1」「1」「2」は、「abcd0」「abcd1」「abcd1」「abcd2」に置換される。
そして、文字列置換部17は、変換項目一覧データ格納部7における全てのデータ項目について処理が完了したか判断する(ステップS59)。変換項目一覧データ格納部7における全てのデータ項目について処理が完了していなければ(ステップS59:Noルート)、ステップS51の処理に戻り、文字列置換部17は、ステップS51乃至ステップS59の処理を繰り返す。
一方、変換項目一覧データ格納部7における全てのデータ項目について処理が完了した場合(ステップS59:Yesルート)、本処理を終了し、元の処理に戻る。
このように、制約充足解データに含まれる値のうち、型変換が行われたデータ項目の値を、対応する文字列で置換することにより、テストデータを生成する。例えば図8に示した変換項目一覧と図9に示した制約充足解データ(すなわち、発注入力画面及び担当者テーブルのデータ)と図11に示した対応表とを用いて文字列置換処理を実施すると、図13の下側に示すような発注入力画面及び担当者テーブルのデータがテストデータとして生成される。図13に示すように、発注入力画面の担当者及び商品と、担当者テーブルの担当、商品及び承認者とに設定されていた数値が、対応表に従って文字列に置換されている。そして、これは、型変換前の制約を満たすテストデータとなっている。
以上のような処理を実施することにより、SMTソルバを実行する前に、文字列型を単なる数値型に変換するので、SMTソルバで求めるのは、1つの文字列当たり1つの数値だけになる。また、SMTソルバを実行した後で、データ型を変換したデータ項目の数値については、対応する文字列に置換するので、文字列を含むテストデータを生成できる。例えば、1つの文字列の文字数が数十から数百であった場合、SMTソルバによって求めるべき値の数は、1つの文字列を数値型配列で表現する場合に比べて、数十〜数百分の1となり、大幅に削減される。すなわち、計算量を抑えることができるので、業務アプリケーションのテストで使用されるテストデータを実用的な時間で生成できるようになる。
[実施の形態2]
例えば、業務アプリケーションにおいて、文字種や文字列の長さなどの条件が定められた文字列型(以下、条件付き文字列型と呼ぶ)のデータを扱う場合がある。その場合には、文字種や文字列の長さなどの条件を満たすような文字列を含むテストデータを生成する必要がある。そこで、第2の実施の形態では、文字種や文字列の長さなどの条件を満たすような文字列を含むテストデータを自動生成する。
図14に、第2の実施の形態に係るテストデータ生成装置100の機能ブロック図を示す。本実施の形態に係るテストデータ生成装置100は、制約データ格納部1と、型変換部3と、変換後制約データ格納部5と、変換項目一覧データ格納部7と、SMTソルバ実行部9と、制約充足解データ格納部11と、対応表生成部13と、対応表データ格納部15と、文字列置換部17と、テストデータ格納部19と、値域一覧データ格納部21を有する。すなわち、図3に示した機能ブロック図に対して、値域一覧データ格納部21が追加されている。本実施の形態では、型変換部3は、制約データ格納部1と値域一覧データ格納部21とに格納されているデータを用いて処理を実施する。また、本実施の形態では、対応表生成部13は、変換項目一覧データ格納部7と制約充足解データ格納部11と値域一覧データ格納部21とに格納されているデータを用いて処理を実施する。なお、それ以外は、図3に示したものと同じである。
値域一覧データ格納部21には、条件付き文字列型に対応する数値型の値域の一覧が予め格納される。図15に、値域一覧データ格納部21に格納される値域一覧の一例を示す。図15の例では、値域一覧データ格納部21には、条件付き文字列型の列と、値域の列とが含まれる。例えば、図15において、条件付き文字列型「全角文字列」に対応する数値型の値域は、1000<=c<2000となっている。また、条件付き文字列型「StringLen3」に対応する数値型の値域は、2000<=c<3000となっている。例えば制約の作成と共に、ユーザが制約に含まれる条件付き文字列型を値域一覧データ格納部21に登録するなどし、重ならないような値域を予め設定しておく。なお、「全角文字列」は、全角文字の文字列型であり、「StringLen3」は、文字列の長さが3の文字列型であるものとする。
次に、本実施の形態に係るテストデータ生成装置100の処理について説明する。なお、全体の処理フローは、図6に示した処理フローと基本的に同じであるが、本実施の形態では、ステップS3(図6)において、型変換部3が図16に示すような型変換処理2を実施し、ステップS7(図6)において、対応表生成部13が図19に示すような対応表生成処理2を実施する。以下、型変換処理2及び対応表生成処理2についてそれぞれ説明する。
最初に、図16乃至図18を用いて、型変換処理2について説明する。まず、型変換部3は、事前処理として、ステップS1において読み出した制約を変換後制約データ格納部5にコピーする。そして、型変換部3は、制約に含まれる定義文(図4の例では、define文)の中から未処理の定義文を1つ特定する(図16:ステップS61)。そして、型変換部3は、特定した定義文中に、文字列型又は条件付き文字列型のデータ項目が含まれているか判断する(ステップS63)。例えば文字列検索を行い、値域一覧データ格納部21に設定されている条件付き文字列型や文字列型が含まれているか判断する。特定した定義文中に、文字列型又は条件付き文字列型のデータ項目が含まれていなければ(ステップS63:Noルート)、処理は、ステップS79の処理に移行する。
一方、特定した定義文中に、文字列型又は条件付き文字列型のデータ項目が含まれている場合(ステップS63:Yesルート)、型変換部3は、特定した定義文中に含まれる文字列型又は条件付き文字列型のデータ項目のうち未処理のデータ項目を1つ特定する(ステップS65)。そして、型変換部3は、特定したデータ項目が条件付き文字列型であるか判断する(ステップS67)。特定したデータ項目が条件付き文字列型ではない場合(ステップS67:Noルート)、すなわち文字列型である場合には、型変換部3は、変換後制約データ格納部5に格納されている制約において、特定したデータ項目のデータ型を文字列型から数値型に変換する(ステップS69)。なお、本ステップの処理は、ステップS17(図7)の処理と同じである。その後、処理は、ステップS75の処理に移行する。
一方、特定したデータ項目が条件付き文字列型である場合(ステップS67:Yesルート)、型変換部3は、変換後制約データ格納部5に格納されている制約において、特定したデータ項目のデータ型を、条件付き文字列型に対応する数値型に変換する(ステップS71)。本実施の形態では、値域一覧データ格納部21に設定されている条件付き文字列型に「int」を付加したものを、当該条件付き文字列型に対応する数値型とする。従って、「全角文字列」であれば、対応する数値型は「全角文字列int」となる。また、「StringLen3」であれば、対応する数値型は「StringLen3int」となる。
そして、型変換部3は、予め値域一覧データ格納部21に設定されている値域に従って、変換先の数値型のサブタイプの定義文を、変換後制約データ格納部5に格納されている制約に追加する(ステップS73)。例えば図15に示したような値域一覧に従って「全角文字列int」、「StringLen3int」に変換した場合には、「definetype 全角文字列int subtype (c:int and 1000<=c<2000)」、「definetype StringLen3int subtype (c:int and 2000<=c<3000)」といったサブタイプの定義文を追加する。なお、前者の定義文では、全角文字列int型の値域が、1000以上且つ2000未満であることを定義している。また、後者の定義文では、StringLen3int型の値域が、2000以上且つ3000未満であることを定義している。その後、処理は、ステップS75の処理に移行する。
そして、ステップS75の処理に移行して、型変換部3は、変換したデータ項目を変換項目一覧データ格納部7に登録する(ステップS75)。なお、本ステップの処理は、ステップS19の処理と同じである。
そして、型変換部3は、特定した定義文中に含まれる文字列型又は条件付き文字列型のデータ項目全てについて処理が完了したか判断する(ステップS77)。特定した定義文中に、文字列型又は条件付き文字列型の未処理のデータ項目がある場合(ステップS77:Noルート)、ステップS65の処理に戻り、型変換部3は、ステップS65乃至ステップS77の処理を繰り返す。
一方、特定した定義文中に含まれる文字列型又は条件付き文字列型のデータ項目全てについて処理が完了した場合(ステップS77:Yesルート)、ステップS79の処理に移行する。
そして、型変換部3は、制約に含まれる全ての定義文について処理が完了したか判断する(ステップS79)。未処理の定義文がある場合(ステップS79:Noルート)、ステップS61の処理に戻り、型変換部3は、ステップS61乃至ステップS79の処理を繰り返す。
一方、制約に含まれる全ての定義文について処理が完了した場合(ステップS79:Yesルート)、本処理を終了し、元の処理に戻る。
図17に、条件付き文字列型を含む制約に対して型変換処理2を実施した場合の一例を示す。図17に示す制約は、基本的には図4に示した制約と同じであるが、第2行目において、担当者recordの「担当」が全角文字列String型になっており、「商品」がStringLen3型になっている。また、第3行目において、発注入力画面の「担当者」が全角文字列String型になっており、「商品」がStringLen3型になっている。このような制約に対して型変換処理2を実施すると、同じく図17に示すような型変換後の制約が生成される。具体的には、型変換後の制約では、第2行目の「担当」と第3行目の「担当者」とが、全角文字列String型から全角文字列int型に変換され、第2行目の「商品」と第3行目の「商品」とが、StringLen3型からStringLen3int型に変換され、第2行目の「承認者」が、String型からint型に変換されている。さらに、型変換後の制約には、第4行目及び第5行目に、上で述べたような、サブタイプの定義文が追加されている。また、図17に示すように、数値型に変換された5つのデータ項目(「担当者record.担当」、「担当者record.商品」、「担当者record.承認者」、「発注入力画面.担当者」及び「発注入力画面.商品」)を含む変換項目一覧が変換項目一覧データ格納部7に格納される。
そして、ステップS3において型変換処理2を実施した後、図6に示したように、処理はステップS5に移行する。なお、例えば図17に示したような型変換後の制約に対して、ステップS5の処理を実施すると、図18に示すような発注入力画面及び担当者テーブルのデータが制約充足解データとして算出される。図17に示した型変換後の制約では、担当者recordの担当と発注入力画面の担当者とが全角文字列int型になっているので、図18に示すように、発注入力画面の担当者と担当者テーブルの担当の列には、1000以上且つ2000未満の数値が設定されている。また、型変換後の制約では、担当者recordの商品と発注入力画面の商品とがStringLen3int型になっているので、図18に示すように、発注入力画面の商品と担当者テーブルの商品の列には、2000以上且つ3000未満の数値が設定されている。なお、図18において、一点鎖線で囲まれている部分は、全角文字列int型であることを示しており、二点鎖線で囲まれている部分は、StringLen3int型であることを示している(以下、同様)。また、担当者recordの担当と発注入力画面の担当者とが一致し、且つ担当者recordの商品と発注入力画面の商品とが一致するレコードが担当者テーブルに1つ存在しており、型変換後の制約を満たしている。
次に、図19及び図20を用いて、対応表生成処理2について説明する。まず、対応表生成部13は、変換項目一覧データ格納部7において未処理のデータ項目を1つ特定する(図19:ステップS81)。そして、対応表生成部13は、制約充足解データ格納部11から、特定したデータ項目に対応する数値を収集する(ステップS83)。そして、対応表生成部13は、収集した各数値について当該数値を含むレコードを対応表データ格納部15における対応表に登録する(ステップS85)。
そして、対応表生成部13は、変換項目一覧データ格納部7における全てのデータ項目について処理が完了したか判断する(ステップS87)。変換項目一覧データ格納部7における全てのデータ項目について処理が完了していなければ(ステップS87:Noルート)、ステップS81に戻り、対応表生成部13は、ステップS81乃至ステップS87の処理を繰り返す。この際、同一数値を含むレコードが対応表に既に登録されている場合には、ステップS85において、その数値についてレコードを登録する必要はない。
一方、変換項目一覧データ格納部7における全てのデータ項目について処理が完了した場合(ステップS87:Yesルート)、対応表生成部13は、対応表データ格納部15の対応表から未処理のレコードを1つ特定する(ステップS89)。なお、ここまでの処理は、上で説明した対応表生成処理(図10)におけるステップS31乃至ステップS39の処理と同じである。
そして、対応表生成部13は、特定したレコードに含まれる数値が、値域一覧データ格納部21に格納されている値域一覧におけるいずれかの値域に属しているか判断する(ステップS91)。特定したレコードに含まれる数値が、値域一覧におけるいずれの値域にも属していなければ(ステップS91:Noルート)、対応表生成部13は、特定したレコードに含まれる数値と予め設定されている固定文字列とを用いて、当該数値に対応する文字列を生成し、そのレコードに登録する(ステップS93)。なお、本ステップの処理は、ステップS41の処理と同じである。その後、処理は、ステップS99の処理に移行する。
一方、特定したレコードに含まれる数値が、値域一覧のいずれかの値域に属している場合(ステップS91:Yesルート)、対応表生成部13は、値域一覧データ格納部21に格納されている値域一覧から、当該数値に対応する条件付き文字列型を特定する(ステップS95)。すなわち、レコードに含まれる数値を基に値域一覧を検索して、当該数値が該当する値域を特定し、その値域に対応付けられている条件付き文字列型を特定する。そして、対応表生成部13は、特定した条件付き文字列型に適合し且つ当該数値に対応する文字列を生成し、レコードに登録する(ステップS97)。例えば、全角文字列であれば、全角の文字列「あいうえお」を予め定めておき、全角に変換した数値(例えば2桁以上の場合は一の位の値など)を付加することで全角の文字列を生成する。また、例えば、StringLen3であれば、長さ2の文字列「AB」を予め定めておき、数値(例えば2桁以上の場合は一の位の値など)を付加することで長さ3の文字列を生成する。なお、文字列の生成方法については、他の数値の文字列と区別でき、なおかつ条件付き文字列型に適合する文字列を生成できれば、他の手法を採用してもよい。その後、処理は、ステップS99の処理に移行する。
そして、対応表生成部13は、対応表データ格納部15の対応表における全てのレコードについて処理が完了したか判断する(ステップS99)。対応表における全てのレコードについて処理が完了していなければ(ステップS99:Noルート)、ステップS89の処理に戻り、対応表生成部13は、ステップS89及びステップS99の処理を繰り返す。
一方、対応表における全てのレコードについて処理が完了した場合(ステップS99:Yesルート)、本処理を終了し、元の処理に戻る。
例えば図15に示した値域一覧と図17に示した変換項目一覧と図18に示した制約充足解データとを用いて対応表生成処理2を実施すると、図20に示すような対応表が生成される。図20に示すように、対応表には、数値「1000」「1001」「1002」「2001」「2002」「2003」「2004」「5」「6」「7」「8」についての11レコードが登録されている。また、値域一覧において、1000以上且つ2000未満の数値は条件付き文字列型「全角文字列」に対応しているので、数値「1000」「1001」「1002」に係るレコードには、「あいうえお0」「あいうえお1」「あいうえお2」といった全角の文字列がそれぞれ設定されている。また、値域一覧において、2000以上且つ3000未満の数値は条件付き文字列型「StringLen3」に対応しているので、数値「2001」「2002」「2003」「2004」に係るレコードには、「AB1」「AB2」「AB3」「AB4」といった長さ3の文字列がそれぞれ設定されている。なお、値域一覧におけるいずれの値域にも属していない数値に係るレコードには、数値の前に固定文字列が付加された文字列(「abcd5」「abcd6」「abcd7」「abcd8」)がそれぞれ設定されている。
そして、ステップS7において対応表生成処理2を実施した後、図6に示したように、処理はステップS9に移行する。例えば、図17に示した変換項目一覧と図18に示した制約充足解データと図20に示した対応表とを用いて文字列置換処理(図6:ステップS9)を実施すると、図21の下側に示すようなテストデータが生成される。なお、文字列置換処理自体は、第1の実施の形態の処理と変わらないので説明は省略する。図21に示すように、発注入力画面の担当者及び商品と、担当者テーブルの担当、商品及び承認者とに設定されていた数値が、対応表に従って文字列に置換されている。図21に示すように、発注入力画面の担当者と担当者テーブルの担当の列には、全角の文字列が設定されている。また、発注入力画面の商品と担当者テーブルの商品の列には、長さ3の文字列が設定されている。そして、これは、型変換前の制約を満たすテストデータとなっている。
以上のような処理を実施することにより、条件付き文字列型のデータを扱う業務アプリケーションのテストで使用されるテストデータを自動生成することができる。なお、第1の実施の形態と同様に、本実施の形態においても、SMTソルバによって求めるべき値の数を大幅に削減できるので、計算量を抑えられる。
以上本技術の実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、図3及び図14に示したテストデータ生成装置100の機能ブロックは必ずしも実際のプログラムモジュール構成と一致するわけではない。データ格納部の構成も同様に一例にすぎない。また、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしてもよい。
また、ステップS41、ステップS93及びステップS97については、所定の文字列に数値を付加して文字列を生成するような処理例を示したが、重複しないように文字列を生成できれば、他の手法を採用するようにしてもよい。
なお、上で述べたテストデータ生成装置100は、コンピュータ装置であって、図22に示すように、メモリ2501とCPU2503とハードディスク・ドライブ(HDD)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。必要に応じてCPU2503は、表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ2501に格納され、必要があればHDD2505に格納される。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本実施の形態をまとめると、以下のようになる。
第1の態様に係るテストデータ生成方法は、データ定義文を含み且つテストデータに関する制約を格納する制約データ格納部に格納されている制約におけるデータ定義文に含まれる文字列型のデータ項目を数値型のデータ項目に変換し、変換したデータ項目を変換項目一覧格納部に格納する型変換ステップ(図23:S1001)と、型変換後の制約を満たすデータを求め、制約充足解データとして記憶装置に格納する制約充足解算出ステップ(図23:S1003)と、記憶装置に格納されている制約充足解データから、変換項目一覧格納部に格納されているデータ項目に係る数値を収集するステップ(図23:S1005)と、収集した各数値について、当該数値に対応する文字列を生成し、生成した文字列を当該数値と対応付けて対応表データ格納部に格納する対応表生成ステップ(図23:S1007)と、記憶装置に格納されている制約充足解データにおいて、変換項目一覧格納部に格納されているデータ項目に係る各数値を、対応表データ格納部に格納され且つ当該数値に対応する文字列で置換することにより、型変換前の制約を満たすテストデータを生成するステップ(図23:S1009)とを含む。
このようにすれば、文字列型のデータ項目は単なる数値型のデータ項目に変換され、制約充足解データを求めた後で、変換されたデータ項目の各数値は、対応する文字列に置換されるので、1つの文字列につき、複数の数値を計算する必要がなくなる。従って、多くの文字列を生成する場合でも、計算量を抑えつつ、テストデータを自動生成できるようになる。
また、上で述べた型変換ステップが、条件付き文字列型のデータ項目がデータ定義文に含まれる場合、当該条件付き文字列型のデータ項目を、当該条件付き文字列型に対応する数値型のデータ項目に変換するステップと、条件付き文字列型毎に当該条件付き文字列型に対応する数値型の値域を格納する値域一覧格納部から、変換したデータ項目に係る数値型の値域を抽出し、条件付き文字列型に対応する数値型と抽出した値域とを含むデータ定義文を制約に追加するステップとを含むようにしてもよい。そして、上で述べた対応表生成ステップが、収集した各数値について、当該数値を基に値域一覧格納部を検索し、値域一覧格納部に格納されているいずれかの値域内の数値であるか判断するステップと、収集した数値のうち、値域一覧格納部に格納されているいずれかの値域内であると判断された数値について、値域一覧格納部から、当該数値に対応する条件付き文字列型を特定し、特定した条件付き文字列型に適合し且つ当該数値に対応する文字列を生成するステップとを含むようにしてもよい。このようにすれば、例えば文字種や文字数などの定められた条件付き文字列型についても、当該条件付き文字列型に適合する文字列を自動生成できるようになる。
さらに、上で述べた制約充足解算出ステップが、充足可能性モジュロ理論ソルバを用いて、制約に含まれる各データ項目の値の組み合わせの中から制約を満たす1の組み合わせを制約充足解データとして特定するステップを含むようにしてもよい。1つの文字列につき、複数の数値を求める必要はないので、充足可能性モジュロ理論(SMT)ソルバの計算時間を抑えることができる。
また、上で述べた対応表生成ステップが、収集した各数値について、当該数値に所定の文字列を付加することにより、当該数値に対応する文字列を生成するステップを含むようにしてもよい。このようにすれば、数値毎の文字列を容易に生成することができる。
なお、条件付き文字列型が、文字種及び文字数の少なくともいずれかが定められた文字列型である場合もある。
第2の態様に係るテストデータ生成装置は、データ定義文を含み且つテストデータに関する制約を格納する制約データ格納部(図24:1501)と、変換項目一覧格納部(図24:1503)と、対応表データ格納部(図24:1505)と、制約データ格納部に格納されている制約におけるデータ定義文に含まれる文字列型のデータ項目を数値型のデータ項目に変換し、変換したデータ項目を変換項目一覧格納部に格納する型変換手段(図24:型変換部1509)と、型変換後の制約を満たすデータを求め、制約充足解データとして記憶装置(図24:1507)に格納する制約充足解算出手段(図24:制約充足解算出部1511)と、記憶装置に格納されている制約充足解データから、変換項目一覧格納部に格納されているデータ項目に係る数値を収集する収集手段(図24:収集部1513)と、収集した各数値について、当該数値に対応する文字列を生成し、生成した文字列を当該数値と対応付けて対応表データ格納部に格納する対応表生成手段(図24:対応表生成部1515)と、記憶装置に格納されている制約充足解データにおいて、変換項目一覧格納部に格納されているデータ項目に係る各数値を、対応表データ格納部に格納され且つ当該数値に対応する文字列で置換することにより、型変換前の制約を満たすテストデータを生成する文字列置換手段(図24:文字列置換部1517)とを有する。
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、コンピュータのメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
データ定義文を含み且つテストデータに関する制約を格納する制約データ格納部に格納されている前記制約における前記データ定義文に含まれる文字列型のデータ項目を数値型のデータ項目に変換し、変換した前記データ項目を変換項目一覧格納部に格納する型変換ステップと、
型変換後の前記制約を満たすデータを求め、制約充足解データとして記憶装置に格納する制約充足解算出ステップと、
前記記憶装置に格納されている前記制約充足解データから、前記変換項目一覧格納部に格納されている前記データ項目に係る数値を収集するステップと、
収集した各数値について、当該数値に対応する文字列を生成し、生成した前記文字列を当該数値と対応付けて対応表データ格納部に格納する対応表生成ステップと、
前記記憶装置に格納されている前記制約充足解データにおいて、前記変換項目一覧格納部に格納されている前記データ項目に係る各数値を、前記対応表データ格納部に格納され且つ当該数値に対応する前記文字列で置換することにより、型変換前の前記制約を満たすテストデータを生成するステップと、
をコンピュータに実行させるためのテストデータ生成プログラム。
(付記2)
前記型変換ステップが、
条件付き文字列型のデータ項目が前記データ定義文に含まれる場合、当該条件付き文字列型のデータ項目を、当該条件付き文字列型に対応する数値型のデータ項目に変換するステップと、
前記条件付き文字列型毎に当該条件付き文字列型に対応する数値型の値域を格納する値域一覧格納部から、変換した前記データ項目に係る数値型の値域を抽出し、前記条件付き文字列型に対応する数値型と抽出した値域とを含むデータ定義文を前記制約に追加するステップと、
を含み、
前記対応表生成ステップが、
収集した各数値について、当該数値を基に前記値域一覧格納部を検索し、前記値域一覧格納部に格納されているいずれかの値域内の数値であるか判断するステップと、
収集した数値のうち、前記値域一覧格納部に格納されているいずれかの値域内であると判断された数値について、前記値域一覧格納部から、当該数値に対応する前記条件付き文字列型を特定し、特定した前記条件付き文字列型に適合し且つ当該数値に対応する文字列を生成するステップと、
を含む、付記1記載のテストデータ生成プログラム。
(付記3)
前記制約充足解算出ステップが、
充足可能性モジュロ理論ソルバを用いて、前記制約に含まれる各前記データ項目の値の組み合わせの中から前記制約を満たす1の組み合わせを前記制約充足解データとして特定するステップ
を含む、付記1又は2記載のテストデータ生成プログラム。
(付記4)
前記対応表生成ステップが、
収集した各数値について、当該数値に所定の文字列を付加することにより、当該数値に対応する文字列を生成するステップ
を含む、付記1のテストデータ生成プログラム。
(付記5)
前記条件付き文字列型が、文字種及び文字数の少なくともいずれかが定められた文字列型である
付記2記載のテストデータ生成プログラム。
(付記6)
データ定義文を含み且つテストデータに関する制約を格納する制約データ格納部に格納されている前記制約における前記データ定義文に含まれる文字列型のデータ項目を数値型のデータ項目に変換し、変換した前記データ項目を変換項目一覧格納部に格納する型変換ステップと、
型変換後の前記制約を満たすデータを求め、制約充足解データとして記憶装置に格納する制約充足解算出ステップと、
前記記憶装置に格納されている前記制約充足解データから、前記変換項目一覧格納部に格納されている前記データ項目に係る数値を収集するステップと、
収集した各数値について、当該数値に対応する文字列を生成し、生成した前記文字列を当該数値と対応付けて対応表データ格納部に格納する対応表生成ステップと、
前記記憶装置に格納されている前記制約充足解データにおいて、前記変換項目一覧格納部に格納されている前記データ項目に係る各数値を、前記対応表データ格納部に格納され且つ当該数値に対応する前記文字列で置換することにより、型変換前の前記制約を満たすテストデータを生成するステップと、
を含み、コンピュータにより実行されるテストデータ生成方法。
(付記7)
データ定義文を含み且つテストデータに関する制約を格納する制約データ格納部と、
変換項目一覧格納部と、
対応表データ格納部と、
前記制約データ格納部に格納されている前記制約における前記データ定義文に含まれる文字列型のデータ項目を数値型のデータ項目に変換し、変換した前記データ項目を前記変換項目一覧格納部に格納する型変換手段と、
型変換後の前記制約を満たすデータを求め、制約充足解データとして記憶装置に格納する制約充足解算出手段と、
前記記憶装置に格納されている前記制約充足解データから、前記変換項目一覧格納部に格納されている前記データ項目に係る数値を収集する収集手段と、
収集した各数値について、当該数値に対応する文字列を生成し、生成した前記文字列を当該数値と対応付けて前記対応表データ格納部に格納する対応表生成手段と、
前記記憶装置に格納されている前記制約充足解データにおいて、前記変換項目一覧格納部に格納されている前記データ項目に係る各数値を、前記対応表データ格納部に格納され且つ当該数値に対応する前記文字列で置換することにより、型変換前の前記制約を満たすテストデータを生成する文字列置換手段と、
を有するテストデータ生成装置。
1 制約データ格納部 3 型変換部
5 変換後制約データ格納部 7 変換項目一覧データ格納部
9 SMTソルバ実行部 11 制約充足解データ格納部
13 対応表生成部 15 対応表データ格納部
17 文字列置換部 19 テストデータ格納部
21 値域一覧データ格納部
100 テストデータ生成装置

Claims (5)

  1. データ定義文を含み且つテストデータに関する制約を格納する制約データ格納部に格納されている前記制約における前記データ定義文に含まれる文字列型のデータ項目を数値型のデータ項目に変換し、変換した前記データ項目を変換項目一覧格納部に格納する型変換ステップと、
    型変換後の前記制約を満たすデータを求め、制約充足解データとして記憶装置に格納する制約充足解算出ステップと、
    前記記憶装置に格納されている前記制約充足解データから、前記変換項目一覧格納部に格納されている前記データ項目に係る数値を収集するステップと、
    収集した各数値について、当該数値に対応する文字列を生成し、生成した前記文字列を当該数値と対応付けて対応表データ格納部に格納する対応表生成ステップと、
    前記記憶装置に格納されている前記制約充足解データにおいて、前記変換項目一覧格納部に格納されている前記データ項目に係る各数値を、前記対応表データ格納部に格納され且つ当該数値に対応する前記文字列で置換することにより、型変換前の前記制約を満たすテストデータを生成するステップと、
    をコンピュータに実行させるためのテストデータ生成プログラム。
  2. 前記型変換ステップが、
    条件付き文字列型のデータ項目が前記データ定義文に含まれる場合、当該条件付き文字列型のデータ項目を、当該条件付き文字列型に対応する数値型のデータ項目に変換するステップと、
    前記条件付き文字列型毎に当該条件付き文字列型に対応する数値型の値域を格納する値域一覧格納部から、変換した前記データ項目に係る数値型の値域を抽出し、前記条件付き文字列型に対応する数値型と抽出した値域とを含むデータ定義文を前記制約に追加するステップと、
    を含み、
    前記対応表生成ステップが、
    収集した各数値について、当該数値を基に前記値域一覧格納部を検索し、前記値域一覧格納部に格納されているいずれかの値域内の数値であるか判断するステップと、
    収集した数値のうち、前記値域一覧格納部に格納されているいずれかの値域内であると判断された数値について、前記値域一覧格納部から、当該数値に対応する前記条件付き文字列型を特定し、特定した前記条件付き文字列型に適合し且つ当該数値に対応する文字列を生成するステップと、
    を含む、請求項1記載のテストデータ生成プログラム。
  3. 前記対応表生成ステップが、
    収集した各数値について、当該数値に所定の文字列を付加することにより、当該数値に対応する文字列を生成するステップ
    を含む、請求項1のテストデータ生成プログラム。
  4. データ定義文を含み且つテストデータに関する制約を格納する制約データ格納部に格納されている前記制約における前記データ定義文に含まれる文字列型のデータ項目を数値型のデータ項目に変換し、変換した前記データ項目を変換項目一覧格納部に格納する型変換ステップと、
    型変換後の前記制約を満たすデータを求め、制約充足解データとして記憶装置に格納する制約充足解算出ステップと、
    前記記憶装置に格納されている前記制約充足解データから、前記変換項目一覧格納部に格納されている前記データ項目に係る数値を収集するステップと、
    収集した各数値について、当該数値に対応する文字列を生成し、生成した前記文字列を当該数値と対応付けて対応表データ格納部に格納する対応表生成ステップと、
    前記記憶装置に格納されている前記制約充足解データにおいて、前記変換項目一覧格納部に格納されている前記データ項目に係る各数値を、前記対応表データ格納部に格納され且つ当該数値に対応する前記文字列で置換することにより、型変換前の前記制約を満たすテストデータを生成するステップと、
    を含み、コンピュータにより実行されるテストデータ生成方法。
  5. データ定義文を含み且つテストデータに関する制約を格納する制約データ格納部と、
    変換項目一覧格納部と、
    対応表データ格納部と、
    前記制約データ格納部に格納されている前記制約における前記データ定義文に含まれる文字列型のデータ項目を数値型のデータ項目に変換し、変換した前記データ項目を前記変換項目一覧格納部に格納する型変換手段と、
    型変換後の前記制約を満たすデータを求め、制約充足解データとして記憶装置に格納する制約充足解算出手段と、
    前記記憶装置に格納されている前記制約充足解データから、前記変換項目一覧格納部に格納されている前記データ項目に係る数値を収集する収集手段と、
    収集した各数値について、当該数値に対応する文字列を生成し、生成した前記文字列を当該数値と対応付けて前記対応表データ格納部に格納する対応表生成手段と、
    前記記憶装置に格納されている前記制約充足解データにおいて、前記変換項目一覧格納部に格納されている前記データ項目に係る各数値を、前記対応表データ格納部に格納され且つ当該数値に対応する前記文字列で置換することにより、型変換前の前記制約を満たすテストデータを生成する文字列置換手段と、
    を有するテストデータ生成装置。
JP2009235937A 2009-10-13 2009-10-13 テストデータ生成プログラム、方法及び装置 Active JP5407727B2 (ja)

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2011085967A JP2011085967A (ja) 2011-04-28
JP5407727B2 true JP5407727B2 (ja) 2014-02-05

Family

ID=44078887

Family Applications (1)

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

Country Status (1)

Country Link
JP (1) JP5407727B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5673395B2 (ja) * 2011-06-30 2015-02-18 富士通株式会社 テストデータ生成プログラム、テストデータ生成方法、テストデータ生成装置
JP5928733B2 (ja) * 2013-09-06 2016-06-01 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 文字列からなるテストデータを自動的に生成する方法及び文字列からなるテストデータ中に埋め込まれたシグネチャーを識別する方法、並びに、それらのコンピュータ及びコンピュータ・プログラム
CN110711389B (zh) * 2019-09-29 2023-03-07 上海莉莉丝科技股份有限公司 数据处理的方法、装置、设备和计算机可读介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4878527B2 (ja) * 2006-09-08 2012-02-15 富士通株式会社 テストデータ作成装置

Also Published As

Publication number Publication date
JP2011085967A (ja) 2011-04-28

Similar Documents

Publication Publication Date Title
JP4097263B2 (ja) ウェブアプリケーションモデル生成装置、ウェブアプリケーション生成支援方法及びプログラム
CN102959578B (zh) 取证系统、取证方法及取证程序
CN104252521A (zh) 使用预定项目模板的Web内容管理的方法和系统
TW200839508A (en) System and method for dynamic generation of environmental operational models
US10671631B2 (en) Method, apparatus, and computer-readable medium for non-structured data profiling
JP5407727B2 (ja) テストデータ生成プログラム、方法及び装置
JP2008282305A (ja) コメントデータを関連付ける方法
CN112507230A (zh) 基于浏览器的网页推荐方法、装置、电子设备及存储介质
JP4393404B2 (ja) データベース管理装置およびデータベース管理方法
Khan MEGA-core of phylogenetic analysis in molecular evolutionary genetics
TWI621952B (zh) 比較表格自動產生方法、裝置及其電腦程式產品
JP5447054B2 (ja) データ生成方法,データ生成装置,およびデータ生成プログラム
Chehreghani et al. OInduced: an efficient algorithm for mining induced patterns from rooted ordered trees
CN103678355B (zh) 文本挖掘方法和文本挖掘装置
JP5609681B2 (ja) テストデータ生成プログラム、方法及び装置
CN107844464A (zh) 基于数据插入的文件生成系统及方法
CN103713864B (zh) 帐票输出装置和帐票输出方法
CN107408104A (zh) 样式的声明级联重新排序
Mou et al. Visual orchestration and autonomous execution of distributed and heterogeneous computational biology pipelines
Zhang et al. Patentdom: Analyzing patent relationships on multi-view patent graphs
JP2007183823A (ja) マッピングシステム、マッピング方法、及びマッピングプログラム
Gu et al. Plan, Generate and Match: Scientific Workflow Recommendation with Large Language Models
Wang et al. A Fixed‐Point Theorem for Ordered Contraction‐Type Decreasing Operators in Banach Space with Lattice Structure
US11893048B1 (en) Automated indexing and extraction of multiple information fields in digital records
CN110879853A (zh) 信息向量化方法与计算机可读存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120720

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130911

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131021

R150 Certificate of patent or registration of utility model

Ref document number: 5407727

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150