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

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

Info

Publication number
JP2012181782A
JP2012181782A JP2011045688A JP2011045688A JP2012181782A JP 2012181782 A JP2012181782 A JP 2012181782A JP 2011045688 A JP2011045688 A JP 2011045688A JP 2011045688 A JP2011045688 A JP 2011045688A JP 2012181782 A JP2012181782 A JP 2012181782A
Authority
JP
Japan
Prior art keywords
domain
condition
character string
conditions
data generation
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
JP2011045688A
Other languages
English (en)
Other versions
JP5478540B2 (ja
Inventor
Akimasa Cho
暁晶 張
Haruto Tanno
治門 丹野
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.)
NTT Inc
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 JP2011045688A priority Critical patent/JP5478540B2/ja
Publication of JP2012181782A publication Critical patent/JP2012181782A/ja
Application granted granted Critical
Publication of JP5478540B2 publication Critical patent/JP5478540B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】 複数の条件を同時に満たした所望する文字列型の入力データの生成、および、設計誤りの検出を可能とする。
【解決手段】 本発明は、ユーザ端末より、設計書で記述した設計情報を読み込み、内部形式である設計モデルに変換し、設計モデルから画面と処理間のインタラクションをテスト対象として抽出し、テスト対象から実行経路を抽出し、実行経路記憶手段に格納し、実行経路記憶手段から各実行経路を読み込んで、該各実行経路の始点から終点までを走査することにより入力データが満たすべきテストデータ生成条件を抽出する。テストデータ生成条件を変数毎に整理し、入力データを構成する値候補を生成するための定義域を作成し、定義域記憶手段に格納し、定義域記憶手段から定義域を読み込み、該定義域が表す範囲の中から値候補を生成し、ユーザ端末に出力する。
【選択図】 図3

Description

本発明は、テスト用入力データ生成装置及び方法及びプログラムに係り、特に、システムの振る舞いが設計情報に記述された通りになっているか否かを確認するためのテストで用いる、テストケースに含まれる入力データを人手により作成するのではなく、設計情報により自動的に作成するためのテスト用入力データ生成装置及び方法及びプログラムに関する。
詳しくは、文字列型の入力データの作成、及び、設計情報に存在する設計誤りを検出するためのテスト用入力データ生成装置及び方法及びプログラムに関する。
プログラム開発工程におけるテストでは、テスト対象システムの振る舞いが設計された通りになっているか、振る舞いのバリエーションをそれぞれ確認する。この個々のバリエーションを「テストケース」と呼ぶ。
テスト対象システムの特定の振る舞いは、設計情報中に実行経路として記述される。特定のテストケースを実施するためには、該当の振る舞いを引き起こせる、つまり、該当の実行経路を通ることができる、テストデータが必要になる。テストデータは入力データと期待結果からなる。人手に代わり、自動でテストデータを準備できれば、開発のコスト改善につながる。
また、テストは「設計通りか否か」の確認であるため、設計情報に誤りがある場合、テストの結果も信頼できないものとなる。テストケースやテストデータを作成する際には、設計誤りが無いという前提で行う必要がある。
テストデータの自動生成技術としては、設計情報に基づくテストデータ生成手法がある(例えば、特許文献1参照)。特許文献1の技術は、統一モデル言語のUMLクラス図とアクティビティ図で記述した設計モデルから、実行経路を抽出し、特定の実行経路に対して、許容する正常な入力データ、および、許容しない異常な入力データを生成する。
また、プログラム動作履歴を入力とするテストデータ生成手法がある。この技術は、テスト対象のプログラムと変数が満たすべき制約条件から、プログラムの未検証領域に到達するためのテストデータを生成する。
また、設計情報に基づくテストデータ生成手法がある(例えば、特許文献2参照)。特許文献2の技術は、変数のデータ型を二種類に分類し、異なるポリシーでテストデータを生成することで、トータルのテストデータの生成件数を軽減する。
特開2010−267023号公報 特許3105279号公報
しかしながら、上記のテストデータ自動生成の技術は、以下のような問題がある。
プログラム動作履歴を入力とするテストデータ生成手法では、条件に従って数値型の変数に対する値を決定できるのみで、システムでよく使われる文字列型のテストデータ生成については言及していない。
特許文献2では、数値に加え、扱えるデータ型として1文字であるCHAR型を挙げているが、文字の羅列である文字列型のデータ生成では、1文字ずつを単純に並べるだけでは所望する性質を有するテストデータは得られない。
特許文献1では、文字列型の入力データ生成ができるが、単一の条件を満たした入力データしか生成できない。文字列の長さ、文字種、部分文字列などの、複数の相互に関連する条件がある場合、特許文献1の手法を用いて逐次的に1つずつの条件を満たしていっても、所望する入力データは得られない。つまり複数条件を「同時に」満たした生成ができないことが問題である。
また、設計情報を入力とする特許文献1と特許文献2の技術では、設計情報が正しいと仮定してテストデータを生成するため、設計誤りの検出ができない。
本発明は、上記の点に鑑みなされたもので、複数の条件を同時に満たした所望する文字列型の入力データの生成、および、設計誤りの検出を可能とするテスト用入力データ生成装置及び方法及びプログラムを提供することを目的とする。
上記の課題を解決するため、本発明は、特定のテストケースを実施する際の、確認したいシステムの振る舞いを引き起こせる、テスト用入力データを生成するテスト用入力データ生成装置であって、
ユーザ端末より、設計書で記述した設計情報を読み込み内部形式である設計モデルに変換する設計情報読込手段と、
前記設計モデルから画面と処理間のインタラクションをテスト対象として抽出する設計モデル分析手段と、
前記テスト対象から実行経路を抽出し、実行経路記憶手段に格納する実行経路抽出手段と、
前記実行経路記憶手段から各実行経路を読み込んで、該各実行経路の始点から終点までを走査することにより入力データが満たすべきテストデータ生成条件を抽出する条件抽出手段と、
前記テストデータ生成条件を変数毎に整理し、前記入力データを構成する値候補を生成するための定義域を作成し、定義域記憶手段に格納する定義域生成手段と、
前記定義域記憶手段から前記定義域を読み込み、該定義域が表す範囲の中から値候補を生成する値候補生成手段と、
複数の変数のそれぞれに前記値候補を割り当てて組み合わせを生成し、入力データとして前記ユーザ端末に出力する組み合わせ生成手段と、
を有することを特徴とする。
また、本発明は、前記定義域生成手段において、
前記定義域記憶手段の定義域に、前記テストデータ生成条件を順次格納していき、
前記条件抽出手段で抽出されたテストデータ生成条件に含まれる各条件と、既に該定義域記憶手段に格納されているテストデータ生成条件の各条件との相互矛盾を検出するチェック手段と、
前記チェック手段において、前記条件抽出手段で抽出されたテストデータ生成条件に含まれる各条件と矛盾があると判断された場合には、設計誤りとして前記ユーザ端末に通知し、矛盾がないと判断された場合には、前記定義域に前記条件を追加する通知手段と、を含む。
また、本発明は、前記定義域記憶手段に、
文字列の長さ、文字種、包含文字列の各属性をもつ文字列型の定義域と、数値型の定義域を備え、
前記定義域生成手段において、
前記テストデータ生成条件の変数のデータ型が文字列型である場合は、前記条件抽出手段で抽出されたテストデータ生成条件の変数毎に条件を振り分け、各条件の文字列の長さ、文字種、包含文字列の各属性を識別し、該属性毎に前記文字列型の定義域に該条件を格納し、該データ型が数値型の場合は、該数値型の定義域に該条件を格納する条件格納手段を含み、
前記条件格納手段は、
前記包含文字列について、文字列の長さの条件を新規に生成し、前記定義域に格納し、全ての条件の保存終了後に、前記文字列の長さに属する複数の条件をマージし、前記文字種に属する複数の条件をマージする手段を含む。
また、本発明は、前記チェック手段において、
前記定義域記憶手段の前記文字列型の定義域に格納されている、文字列型の入力データ生成における、異なる属性の条件間の相互矛盾、および、同じ属性の相反する条件の存在をチェックする手段を含み、
前記異なる属性の条件間の相互矛盾として、包含文字列と文字列の長さの間の相互矛盾及び包含文字列と文字種の間の相互矛盾を検証し、
前記同じ属性の相反する条件の存在として、複数の文字種の指定、及び、複数の文字列の長さの指定、及び、複数の包含文字列の指定を検証することにより、相互矛盾を検出する手段を含む。
上記のように本発明によれば、相互に関連する複数の条件を同時に満たす、文字列型の入力データを生成する。すなわち文字列の長さ、文字種、包含文字列の3つの属性に分類できる複数の条件を同時に満たした、文字列型の入力データを生成することで、プログラム開発工程におけるテストでの入力データ作成をより効率的に行う。
また、本発明によれば、ソフトウェア設計情報に存在する設計誤りを検出する。すなわち、入力データ生成の過程での満たせない条件の検出により、通りえない実行経路が誤って設計されたことを検出できる。満たせない条件とは、文字列型の入力データ生成における、異なる属性の条件間の相互矛盾、および、同じ属性の相反する条件の存在を指し、以下のタイプがある。異なる属性の条件間の相互矛盾としては、
・包含文字列と文字列の長さの間の相互矛盾;
・包含文字列と文字種の間の相互矛盾;
がある。
同じ属性の相反する条件の存在としては、
・複数の文字種の指定;
・複数の文字列の長さの指定
・複数の包含文字列の指定
を指す。包含文字列は、完全一致、前方部分一致、中間部分一致、後方部分一致を含む。文字種は、全角、半角、英数字、かな、を含む。
本発明は、文字列型の入力データを生成することでテストケースの作成を効率化し、設計誤りを検出することで設計の品質を向上させることが可能となる。
本発明の一実施の形態におけるテストデータ生成条件のデータ構造である。 本発明の一実施の形態における定義域記憶部の定義域のデータ構造である。 本発明の一実施の形態における装置構成図である。 本発明の一実施の形態におけるテスト用入力データ生成装置のフローチャートである。 本発明の一実施の形態における定義域生成部のフローチャートである。 本発明の一実施の形態における図5のS230の詳細なフローチャートである。 本発明の一実施の形態における図6のS240の詳細なフローチャートである。 本発明の一実施の形態における図7のS420の詳細なフローチャートである。 本発明の一実施の形態における図8のS530の詳細なフローチャートである。 本発明の一実施の形態における図8のS540の詳細なフローチャートである。 本発明の一実施の形態における図8のS550の詳細なフローチャートである。 本発明の一実施の形態における図9のS630の詳細なフローチャートである。 本発明の一実施の形態における図9のS620、図10のS720の詳細なフローチャートである。 本発明の一実施の形態における図9のS610の詳細なフローチャートである。 本発明の一実施の形態における図9のS640、図11のS810の詳細なフローチャートである。 本発明の一実施の形態における図10のS710の詳細なフローチャートである。 本発明の一実施の形態における図5のS250の詳細なフローチャートである。 本発明の一実施の形態における値候補生成部のフローチャートである。 本発明の一実施の形態における図18のS1530の詳細なフローチャートである。
以下図面と共に、本発明の実施の形態を説明する。
最初に、以下の実施の形態で用いる用語について説明する。
「テストケース」とは、テスト対象システムの特定の振る舞いが正しいかを確認するためのものである。テストケースは、実行経路とテストデータを含む。
「テストデータ」とは、テスト対象システムへ与える刺激である。該当するテストケースで確認したい振る舞いを引き起こせる、言い換えれば、実行経路を通るものでなければならない。テストデータは、入力データと期待結果を含む。
「入力データ」とは、個々の入力変数がとる値の組み合わせである。変数には、文字列型、数値型、などのデータ型が定義されている。
「テストデータ生成条件」とは、設計モデルから抽出された実行経路に含まれ、図1(a)に示すように、『a>3』のような変数(ここではa)の取り得る値に関する条件の羅列を指す。条件は変数の名前"a"、条件種別">"、定数"3"から成る。図1(b)に示すように、「条件種別」には、不等号や文字列の長さ等通常使われる記法を用いる。
「定義域」とは、変数がとりうる値の「許容される範囲」を示すものである。定義域は、図2に示すように、変数名、属性の配列、(各属性の中に)条件、設計誤り検出時のフラグをもつ。文字列型の定義域は、属性として、文字列の長さ、文字種、包含文字列の3つをもつ。
「包含文字列」とは、特定の文字列を含む文字列であり、完全一致、前方部分一致、中間部分一致、後方部分一致を含む。
「文字種」とは、使用可能な文字の集合を表すものである。選択肢として指定可能な文字種の一覧、およびそれらの包含関係は図1(c)に示すように木構造で保持される。リーフにある候補は、包含する文字の一覧をもつ(例:[半角数字]であれば[0,1,2,・・・9]をもつ)。
「設計情報」とは、システムをどのような構成で実現するかを示す仕様である。本発明では、以下の設計書一式を設計情報として扱う。
・画面遷移図:機能内における各画面間の遷移を示すドキュメントを指す;
・画面要素一覧:画面内の各構成要素について入出力可否や属性(テキスト、プルダウンリスト等)に関して定義を記述したもの;
・入力制約定義書:入力となる画面要素単体についての制約事項を記述したもの;
・処理イベント定義書:画面上で発生したイベント(主にユーザ操作)に起因する処理の呼び出しを記述したもの;
・処理概要フロー定義書:処理の振る舞いを明確にするためのフロー:
・「処理詳細定義書」処理が終了した後の振る舞いを記述したもの:
図3は、本発明の一実施の形態におけるテスト用入力データ生成装置の構成を示す。
同図に示すテスト用入力データ生成装置は、設計情報読込部1、設計モデル分析部2、実行経路抽出部3、実行経路記憶部4、条件抽出部5、定義域生成部6、定義域記憶部7、値候補生成部8、組合せ生成部9、設計モデル記憶部10から構成される。
このうち、設計情報読込部1、設計モデル分析部2、実行経路抽出部3、条件抽出部5、定義域生成部6、値候補生成部8、組合せ生成部9、設計モデル記憶部10は、CPU上の機能であり、実行経路記憶部4、定義域記憶部7は、ハードディスク装置等の記憶媒体である。
ユーザ端末は、設計情報をテスト用入力データ生成装置の設計情報読込部1に与える。また、テスト用入力データ生成装置から入力データを取得し、場合によっては設計誤りの通知を受け取る。
設計情報読込部1は、ユーザ端末から以下の設計書一式が与えられる。
・画面遷移図:機能内における各画面間の遷移を示す;
・画面要素定義書:画面内の各構成要素について入出力可否や属性に関する定義が記載されている;
・入力制約定義書:入力となる画面要素単体についての制約事項;
・処理イベント定義書:画面上で発生したイベントに起因する処理の呼び出しを記載;
・処理概要フロー定義書:処理の振る舞いを明確にするための処理フローを記載;
・処理詳細定義書:処理終了後の振る舞いを記述;
上記の設計書一式を読み込み、単一の中間形式の言語に変換したオブジェクトを、単一の設計モデルに統合し、設計モデル記憶部10に保持する。ここでは、画面遷移図、処理概要フロー定義書はMS Visio(登録商標)形式、画面要素定義書、入力制約定義書、処理イベント定義書、処理詳細定義書はMS Excel(登録商標)形式で入力されるものとする。
設計モデル分析部2は、画面と処理のインタラクションを単位に、設計モデル記憶部10に格納されている設計モデルから該当するアクティビティをテスト対象として抽出する。
実行経路抽出部3は、アクティビティから実行経路を抽出する。
実行経路記憶部4は、抽出された実行経路を保持する。
条件抽出部5は、実行経路記憶部4より実行経路を取得し、経路の始端から終端までを走査することで経路上の条件を順に集め、テストデータ生成条件として保持する。
定義域生成部6は、テストデータ生成条件を読み込み、変数毎に条件を分類した後、変数毎にその変数のデータ型に合った定義域を生成し、該当する変数に関する条件を1つずつ定義域に追加していき、矛盾を検出した時点で定義域に設計誤りフラグを立てて定義域記憶部7に保存し、残りの条件をスキップする。矛盾なくすべての条件の追加が終了したら定義域を定義域記憶部7に保存する。図2に示すようなフォーマットで定義域記憶部7に保存する。
定義域記憶部7は、図2に示すように、文字列型の変数の定義域、数値型の変数の定義域の2種類の定義域を保持する。
値候補生成部8は、定義域記憶部7より定義域を読み込み、定義域が表す範囲の中から境界値分析により値候補を複数生成する。
組合せ生成部9は、変数のそれぞれに、その変数に対し生成された値候補から1つ選び割り当てることで組合せを生成し、これを入力データとしてユーザ端末に出力する。ここでは、入力データはMS Excel形式で出力するものとする。
以下に、上記の構成における動作を説明する。
図4は、本発明の一実施の形態におけるテスト用入力データ生成装置の動作のフローチャートである。
ステップ100) 設計情報読込部1は、ユーザ端末から与えられる一式の設計書を読み込み、単一の中間言語(Java Object)に変換し、単一の設計モデル(XMI形式UML)に変換し、設計モデル記憶部10に格納する。
ステップ110) 設計モデル分析部2は、設計モデル記憶部10から取得した設計モデルを分解してアクティビティをテスト対象として抽出し、実行経路抽出部3に渡す。
ステップ120) 実行経路抽出部3は、取得した各テスト対象(アクティビティ)の開始ノードから終了ノードまで走査して実行経路を抽出し、全ての実行経路を実行経路記憶部4に渡す。実行経路は分岐条件、事後条件を含む。具体的な実行経路の抽出方法としては、前述の特許文献1の技術を適用することが可能である。
ステップ130) 条件生成部5は、実行経路記憶部4から実行経路を読み出し、各実行経路から該当実行経路を通るために満たすべき条件(分岐条件)を逐一集めてテストデータ生成条件として定義域生成部6に渡す。本ステップのテストデータの生成条件の集約方法としては、前述の特許文献1の技術を用いることができる。
ステップ140) 定義域生成部6は、テストデータ生成条件を構成する個々の条件を変数毎に振り分け、条件の属性(文字列の長さ、文字種、包含文字列)を識別し、変数毎の定義域にこれら条件を保存し、定義域記憶部7に保存する。条件を定義域に保存する際に条件間の矛盾が存在すれば、設計誤りを検出したとして定義域記憶部7の定義域(図2の「設計誤りがあるか」の欄)にフラグを立てて残りの条件をスキップする。
以下に、定義域生成部6の動作を説明する。図5は、本発明の一実施の形態における定義域生成部のフローチャートであり、上記のステップ140(変数毎に定義域を生成し記憶部に保存)の詳細な動作を示す。
ステップ200) 定義域生成部6は、条件生成部5からテストデータ生成条件を取得し、メモリ(図示せず)に格納する。
ステップ210) メモリ(図示せず)から条件を取得して、条件から変数名を抽出する。
ステップ220) 変数名毎にソートした条件を、メモリ(図示せず)に格納する。
ステップ230) 変数のデータ型を取得し、データ型に応じた定義域を生成し、メモリ(図示せず)に格納する。当該処理の詳細については、図6に沿って説明する。図6は、本発明の一実施の形態におけるステップ230の詳細なフローチャートである。
ステップ300) 条件から対象とする変数を特定する。変数のデータ型が数値型、または、文字列型のいずれであるかを判定し、数値型の場合はステップ310に、文字列型の場合はステップ330に移行する。
ステップ310) 変数のデータ型が数値型である場合、空白の数値型の定義域を生成しメモリ(図示せず)に格納する。
ステップ320) 数値型の定義域に該当変数の変数名を設定する。
ステップ330) 変数のデータ型が文字列型である場合、空白の文字列型の定義域を生成しメモリ(図示せず)に格納する。
ステップ340) 文字列型の定義域に該当変数の変数名を設定する。
ステップ240) 定義域生成部6は、メモリ(図示せず)からステップ230で格納された数値型、文字列型の条件を取得して、条件の属性に応じて定義域記憶部7の定義域の該当位置に保存する。当該処理の詳細については、図7に沿って説明する。図7は、本発明の一実施の形態におけるステップ240(定義域に保存)の詳細なフローチャートである。
ステップ400) メモリ(図示せず)から条件と定義域を取得し、定義域のデータ型を文字列型、数値型のいずれであるかを判定する。
ステップ410) 定義域に変数名があれば、数値型として条件を定義域記憶部7の数値型の定義域(図2(b))へ保存する。
ステップ420) 定義域が空白であれば、文字列型として条件を定義域記憶部7の文字列型の定義域(図2(a))へ保存する。当該処理の詳細については、図8に沿って説明する。図8は、本発明の一実施の形態におけるステップ420の詳細なフローチャートである。
ステップ500) メモリ(図示せず)から条件を取り込む。
ステップ505) 条件をパースし条件種別を抽出。
ステップ510) 属性毎の許容される条件種別の一覧を読み込む。
ステップ515) 属性毎の許容される条件種別の一覧に載っていない、解読できない条件種別があれば、誤って記述されたと判断し、定義域に設計誤りのフラグを付与する。
ステップ520) 条件種別が包含文字列(例えば、[X Contains"あいうえお"])の条件ならば、定義域の包含文字列属性に条件を追加する。
ステップ535) 条件種別が文字種の条件(例えば、[X UseSet"半角数字"])ならば、定義域の文字種属性に条件を追加する。
ステップ545) 条件種別が文字列の長さの条件(例えば、[X Length>=10])であるような条件ならば、定義域の文字列の長さ属性に条件を追加する。
ステップ530) 包含文字列の条件追加による矛盾検出を行う。当該処理の詳細については、図9に沿って後述する。
ステップ540) 文字種の条件追加による矛盾検出を行う。当該処理の詳細については、図10に沿って後述する。
ステップ550) 文字列の長さの条件追加による矛盾検出を行う。当該処理の詳細については、図11に沿って後述する。
以降、条件追加時の矛盾検出について図9、図10、図11で説明する。
図9は、本発明の一実施の形態におけるステップ530の詳細なフローチャートである。
ステップ600) 包含文字列の条件と定義域を取得する。
ステップ610) 包含文字列の条件同士の矛盾検出を行う。当該処理の詳細については、図14に沿って後述する。
ステップ620) 包含文字列と文字種の矛盾検出を行う。当該処理の詳細については、図13に沿って後述する。
ステップ630) 包含文字列の条件から暗黙的に読み取れる文字列の長さ属性の条件(最小値)を生成し追加する。当該処理の詳細については、図13に沿って後述する。
ステップ640) 文字列の長さの条件同士の矛盾検出を行う。当該処理の詳細については、図12に沿って後述する。
図10は、本発明の一実施の形態におけるステップ540の詳細なフローチャートである。
ステップ700) 文字種の条件と定義域を取得する。
ステップ710) 文字種の条件同士の矛盾検出を行う。当該処理の詳細については、図13に沿って後述する。
ステップ720) 包含文字列と文字種の矛盾検出を行う。当該処理の詳細については、図10に沿って後述する。
図11は、本発明の一実施の形態におけるステップ550の詳細なフローチャートである。
ステップ800) 文字列の長さの条件と定義域を取得する。
ステップ810) 文字列の長さの条件同士の矛盾検出を行う。当該処理の詳細については、図12に沿って後述する。
以降、矛盾検出の仕方について図12、図13、図14で説明する。
図12は、本発明の一実施の形態におけるステップ630の詳細なフローチャートである。
ステップ900) 包含文字列属性の条件をすべて取得する。
ステップ910) Containsで指定された文字列に重なりがなければ、文字列の文字数をカウントし、すべて足し合わせた数をmaxとする。
ステップ920) Containsで指定された文字列に重なりがあれば、他と重ならない部分文字列の文字数をカウントし、足し合わせた数をmaxとする。
ステップ930) 条件 [変数 Length>= max] を生成し、定義域記憶部7の定義域の文字列の長さ属性に追加する。
図13は、本発明の一実施の形態におけるステップ620、ステップ720に共通する(包含文字列と文字種の矛盾検出)詳細なフローチャートである。
ステップ1000) 包含文字列属性の条件、文字種属性の条件をすべて定義域から取得する。
ステップ1010) 文字種属性の条件はあるかを判定する。なければ終了する。
ステップ1020) もし文字種属性の条件があれば、包含文字列Containsで指定された文字列群Cを取得する。
ステップ1030) Cに含まれる各文字列をそれぞれ、1文字ずつに分割し、メモリ(図示せず)内の文字種指定の文字一覧に含まれるか照合する。なお、文字種指定の文字一覧とは、数字なら"0,1,…,9"、ひらがなであれば、"あ〜を"、アルファベットであれば"A〜Z"などである。
ステップ1040) 含まれない文字があるかを判定し、もしなければ終了する。
ステップ1050) 含まれない文字があれば、矛盾を検出したとして、定義域に設計誤りのフラグを付与する。検出される矛盾の例を示す。条件[X Contains "123あ45"]と条件[X UseSet "半角数字"]が共に定義域に存在すれば、文字"あ"は半角数字に含まれないため設計誤りとなる。
図14は、本発明の一実施の形態におけるステップ610(包含文字列の条件同士の矛盾検出)の詳細なフローチャートである。
ステップ1100)定義域記憶部7の定義域から包含文字列属性の条件をすべて取得する。
ステップ1110) 条件種別がNotContains(包含文字列ではない)の条件はあるか判定する。なければ終了する。
ステップ1120) NotContainsで指定された文字列群Nを取得する。
ステップ1130) 条件種別がContains(包含文字列)である条件はあるかを判断し、なければ終了する。
ステップ1140) Containsで指定された文字列群Cを取得する。
ステップ1150) 文字列群Cの要素CiがNの要素Niを部分文字列として包含するか、つまり、Ni⊂Ciが成立するようなNiとCiのペアが存在するかを逐次判定する。存在しなければ終了する。
ステップ1160) 存在すれば、矛盾を検出したとして、定義域記憶部7の定義域に設計誤りのフラグを付与する。検出される矛盾の例を示す。条件[X NotContains "あい"]と条件[X Contains"あいうえお"]が共に定義域に存在すれば、"あいうえお"は"あい"を包含するため設計誤りとなる。
図15は、本発明の一実施の形態におけるステップ640、ステップ810(文字列の長さの条件同士の矛盾検出)に共通する詳細なフローチャートである。
ステップ1200) 文字列の長さの条件をすべて取得する。
ステップ1210) 条件を一次連立不等式として見なし、解の存在を判定する。
ステップ1220) 解が存在するか。存在すれば終了する。
ステップ1230) 解が存在しなければ、矛盾を検出したとして、定義域に設計誤りのフラグを付与する。検出される矛盾の例を示す。条件[X Length<= 6]と条件[X Length>= 4]と条件[X Length!= 5]が共に定義域に存在すれば、連立不等式の解がない(重なる範囲が無い)ため設計誤りとなる。
図16は、本発明の一実施の形態におけるステップ710(文字種の条件同士の矛盾検出)の詳細なフローチャートである。
ステップ1300) 文字種属性の条件をすべて取得する。
ステップ1310) 条件種別がUseSetである条件で指定された文字種候補をすべて集め、図1(c)に示す文字種候補の一覧を照らし合わせて包含関係にあるかを判定する。包含関係であれば終了する。判定は木構造における親子関係の走査で行う。例えば、全角と全角かなは包含関係にあるが、全角と半角数字は包含関係にない。
ステップ1320) 包含関係にない文字種候補のペアがあれば、矛盾を検出したとして、定義域に設計誤りのフラグを付与する。検出される矛盾の例を示す。条件[X UseSet "全角"]と条件[X UseSet "半角英数字"]が共に定義域に存在すれば、重なりが無いため設計誤りとなる。
以上の処理により、定義域への条件の保存が完了した。引き続き図5の説明に戻る。
ステップ250) 定義域に設計誤りのフラグがついているかを判定し、フラグがついていなければ定義域を単純化し、フラグがついていれば終了する。当該処理の詳細については、図17に沿って説明する。図17は、本発明の一実施の形態におけるステップ250(定義域を単純化)の詳細なフローチャートである。
ステップ1400) 文字列の長さの条件をすべて取得する。
ステップ1410) 文字列の長さの条件を、2つの条件(最大値と最小値)にまで単純化する。例えば、
・条件[X Length>= 5];
・条件[X Length< 20];
・条件[X Length> 3];
・条件[X Length<= 10];
が存在する場合、最大値を示す条件[X Length<= 10]と最小値を示す条件[X Length>= 5]だけを残して他の条件を定義域から削除する。
ステップ1420) 文字種の条件をすべて取得する。
ステップ1430) 文字種の条件を、1つの条件(包含関係における最下位の文字種候補)にまで単純化する。例えば、
・条件[X UseSet "半角数字"];
・条件[X UseSet "半角英数字"];
・条件[X UseSet "半角"];
が存在する場合、半角⊃半角英数字⊃半角数字であるため、条件[X UseSet"半角数字"]だけを残して他の条件を定義域から削除する。
当該図17に示す処理を行なうことで複数の条件を構造化、一元化し、単一の定義域が生成されるため、変数のとりうる値の範囲が明確になり、後述する値候補生成部8において全ての条件を同時に満たした値を生成が可能となる。
以上の処理により、これにより冗長な情報が削除され、定義域が完全に生成された。
引き続き、図4の説明に戻る。
ステップ150) 値候補生成部8は、定義域を取得し設計誤りフラグがついているか判定し、ついていなければ値候補を生成する。
ステップ160) 値候補生成部8は、定義域に設計誤りフラグがついていれば該当定義域を破棄し、ユーザ端末へ設計誤りの存在を通知する。
以下に、値候補生成部8の動作を説明する。図18は、本発明の一実施の形態における値候補生成部のフローチャートであり、図4のS150(値候補生成)の詳細なフローを示す。
ステップ1500) 値候補生成部8は、定義域記憶部7の定義域を取得する。
ステップ1510) 定義域のデータ型を文字列型、数値型のいずれであるかを判定する。
ステップ1520) 定義域のデータ型が数値型である場合は数値型の値候補を生成する。
ステップ1530) 定義域のデータ型が文字列型である場合は、文字列型の値候補を生成する。当該処理の詳細については、図19に沿って後述する。
図19は、本発明の一実施の形態におけるステップ1530(文字列型の値候補の生成)の詳細なフローチャートである。
ステップ1600) 値候補生成部8は、定義域記憶部7から定義域を取得する。
ステップ1610) 文字列の長さの条件をもとに、長さの最大値と最小値を求める。
ステップ1620) 長さの最大値と最小値に基づき、最大値、最大値−1、最小値+1、最小値の4パターンの長さをもつ空白の文字列Tを作成する。
ステップ1630) 包含文字列の条件で指定された包含文字列をそれぞれ、Tのランダムな位置に埋め込む。
ステップ1640) 文字種の条件で指定された文字種に属する文字をランダムに生成し、Tの残りの位置を補完する。
上記のように、値候補生成部8は、定義域記憶部7から取得した矛盾がないと保証された定義域の条件に基づいて、文字列の長さ、文字種、包含文字列の3つの属性をそれぞれ満足するように文字列を構成することで、複数条件を同時に満たした文字列型の入力データを生成することができる。
以上の処理により、入力データを構成する変数のとる値候補が生成された。引き続き、図4の説明に戻る。
ステップ170) 組合せ生成部9は、変数のそれぞれに、その変数に対し値候補生成部8で生成された値候補から1つ選び割り当てることで組合せを生成し、これを入力データとしてユーザ端末に出力する。
上記の処理により、テストデータ生成条件を満たす文字列型の入力データを生成できる。
本発明では、定義域記憶部7に定義域というデータ構造を設け、入力データが満たすべき条件を一元化することで、すべての条件を同時に満たした文字列型の入力データを生成し、テストケースの作成の効率が向上する。また、定義域の生成時に条件間の矛盾を検出することにより、設計誤りを検出し、設計の品質が向上する。
なお、上記の図3に示すテスト用入力データ生成装置の構成要素の動作をプログラムとして構築し、テスト用入力データ生成装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
また、構築されたプログラムをハードディスクや、フレキシブルディスク・CD−ROM等の可搬記憶媒体に格納し、コンピュータにインストールする、または、配布することが可能である。
なお、本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
1 設計情報読込部
2 設計モデル分析部
3 実行経路抽出部
4 実行経路記憶部
5 条件抽出部
6 定義域生成部
7 定義域記憶部
8 値候補生成部
9 組合せ生成部
10 設計モデル記憶部

Claims (9)

  1. 特定のテストケースを実施する際の、確認したいシステムの振る舞いを引き起こせる、テスト用入力データを生成するテスト用入力データ生成装置であって、
    ユーザ端末より、設計書で記述した設計情報を読み込み内部形式である設計モデルに変換する設計情報読込手段と、
    前記設計モデルから画面と処理間のインタラクションをテスト対象として抽出する設計モデル分析手段と、
    前記テスト対象から実行経路を抽出し、実行経路記憶手段に格納する実行経路抽出手段と、
    前記実行経路記憶手段から各実行経路を読み込んで、該各実行経路の始点から終点までを走査することにより入力データが満たすべきテストデータ生成条件を抽出する条件抽出手段と、
    前記テストデータ生成条件を変数毎に整理し、前記入力データを構成する値候補を生成するための定義域を作成し、定義域記憶手段に格納する定義域生成手段と、
    前記定義域記憶手段から前記定義域を読み込み、該定義域が表す範囲の中から値候補を生成する値候補生成手段と、
    複数の変数のそれぞれに前記値候補を割り当てて組み合わせを生成し、入力データとして前記ユーザ端末に出力する組み合わせ生成手段と、
    を有することを特徴とするテスト用入力データ生成装置。
  2. 前記定義域生成手段は、
    前記定義域記憶手段の定義域に、前記テストデータ生成条件を順次格納していき、
    前記条件抽出手段で抽出されたテストデータ生成条件に含まれる各条件と、既に該定義域記憶手段に格納されているテストデータ生成条件の各条件との相互矛盾を検出するチェック手段と、
    前記チェック手段において、前記条件抽出手段で抽出されたテストデータ生成条件に含まれる各条件と矛盾があると判断された場合には、設計誤りとして前記ユーザ端末に通知し、矛盾がないと判断された場合には、前記定義域に前記条件を追加する通知手段と、
    を含む請求項1記載のテスト用入力データ生成装置。
  3. 前記定義域記憶手段は、
    文字列の長さ、文字種、包含文字列の各属性をもつ文字列型の定義域と、数値型の定義域を有し、
    前記定義域生成手段は、
    前記テストデータ生成条件の変数のデータ型が文字列型である場合は、前記条件抽出手段で抽出されたテストデータ生成条件の変数毎に条件を振り分け、各条件の文字列の長さ、文字種、包含文字列の各属性を識別し、該属性毎に前記文字列型の定義域に該条件を格納し、該データ型が数値型の場合は、該数値型の定義域に該条件を格納する条件格納手段を含み、
    前記条件格納手段は、
    前記包含文字列について、文字列の長さの条件を新規に生成し、前記定義域に格納し、全ての条件の保存終了後に、前記文字列の長さに属する複数の条件をマージし、前記文字種に属する複数の条件をマージする手段を含む
    請求項1または2記載のテスト用データ生成装置。
  4. 前記チェック手段は、
    前記定義域記憶手段の前記文字列型の定義域に格納されている、文字列型の入力データ生成における、異なる属性の条件間の相互矛盾、および、同じ属性の相反する条件の存在をチェックする手段を含み、
    前記異なる属性の条件間の相互矛盾として、包含文字列と文字列の長さの間の相互矛盾及び包含文字列と文字種の間の相互矛盾を検証し、
    前記同じ属性の相反する条件の存在として、複数の文字種の指定、及び、複数の文字列の長さの指定、及び、複数の包含文字列の指定を検証することにより、相互矛盾を検出する手段を含む
    請求項2または3記載のテスト用データ生成装置。
  5. 特定のテストケースを実施する際の、確認したいシステムの振る舞いを引き起こせる、テスト用入力データを生成するテスト用入力データ生成方法であって、
    設計情報読込手段が、ユーザ端末より、設計書で記述した設計情報を読み込み内部形式である設計モデルに変換する設計情報読込ステップと、
    設計モデル分析手段が、前記設計モデルから画面と処理間のインタラクションをテスト対象として抽出する設計モデル分析ステップと、
    実行経路抽出手段が、前記テスト対象から実行経路を抽出し、実行経路記憶手段に格納する実行経路抽出ステップと、
    条件抽出手段が、前記実行経路記憶手段から各実行経路を読み込んで、該各実行経路の始点から終点までを走査することにより入力データが満たすべきテストデータ生成条件を抽出する条件抽出ステップと、
    定義域生成手段が、前記テストデータ生成条件を変数毎に整理し、前記入力データを構成する値候補を生成するための定義域を作成し、定義域記憶手段に格納する定義域生成ステップと、
    値候補生成手段が、前記定義域記憶手段から前記定義域を読み込み、該定義域が表す範囲の中から値候補を生成する値候補生成ステップと、
    組み合わせ生成手段が、複数の変数のそれぞれに前記値候補を割り当てて組み合わせを生成し、入力データとして前記ユーザ端末に出力する組み合わせ生成ステップと、
    を行うことを特徴とするテスト用入力データ生成方法。
  6. 前記定義域生成ステップにおいて、
    前記定義域記憶手段の定義域に、前記テストデータ生成条件を順次格納していき、
    前記条件抽出ステップで抽出されたテストデータ生成条件に含まれる各条件が、既に該定義域記憶手段に格納されているテストデータ生成条件の各条件との相互矛盾を検出するチェックステップと、
    前記チェックステップにおいて、前記条件抽出ステップで抽出されたテストデータ生成条件に含まれる各条件と矛盾があると判断された場合には、設計誤りとして前記ユーザ端末に通知し、矛盾がないと判断された場合には、前記定義域に前記条件を追加する通知ステップと、
    を行う請求項5記載のテスト用入力データ生成方法。
  7. 前記定義域生成ステップにおいて、
    前記テストデータ生成条件の変数のデータ型が文字列型である場合は、前記条件抽出ステップで抽出されたテストデータ生成条件の変数毎に条件を振り分け、各条件の文字列の長さ、文字種、包含文字列の各属性を識別し、該属性毎に、前記定義域記憶手段上の文字列型の定義域に該条件を格納し、該データ型が数値型の場合は、該数値型の定義域に該条件を格納する条件格納ステップを行い、
    前記条件格納ステップにおいて、
    前記包含文字列について、文字列の長さの条件を新規に生成し、前記定義域に格納し、全ての条件の保存終了後に、前記文字列の長さに属する複数の条件をマージし、前記文字種に属する複数の条件をマージする
    請求項5または6記載のテスト用データ生成方法。
  8. 前記チェックステップにおいて、
    前記定義域記憶手段の前記文字列型の定義域に格納されている、文字列型の入力データ生成における、異なる属性の条件間の相互矛盾、および、同じ属性の相反する条件の存在をチェックする条件チェックステップを行い、
    前記条件チェックステップでは、
    前記異なる属性の条件間の相互矛盾として、包含文字列と文字列の長さの間の相互矛盾及び包含文字列と文字種の間の相互矛盾を検証し、
    前記同じ属性の相反する条件の存在として、複数の文字種の指定、及び、複数の文字列の長さの指定、及び、複数の包含文字列の指定を検証することにより、相互矛盾を検出する
    請求項6または7記載のテスト用データ生成方法。
  9. コンピュータを、
    請求項1乃至4記載のテスト用データ生成装置の各手段として機能させるためのテスト用データ生成プログラム。
JP2011045688A 2011-03-02 2011-03-02 テスト用入力データ生成装置及び方法及びプログラム Active JP5478540B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011045688A JP5478540B2 (ja) 2011-03-02 2011-03-02 テスト用入力データ生成装置及び方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011045688A JP5478540B2 (ja) 2011-03-02 2011-03-02 テスト用入力データ生成装置及び方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2012181782A true JP2012181782A (ja) 2012-09-20
JP5478540B2 JP5478540B2 (ja) 2014-04-23

Family

ID=47012906

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011045688A Active JP5478540B2 (ja) 2011-03-02 2011-03-02 テスト用入力データ生成装置及び方法及びプログラム

Country Status (1)

Country Link
JP (1) JP5478540B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023554057A (ja) * 2020-12-15 2023-12-26 インターナショナル・ビジネス・マシーンズ・コーポレーション 隠れ変数、隠れ属性、および隠れ値検出を用いたシステム・テスト・インフラストラクチャ

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005242569A (ja) * 2004-02-25 2005-09-08 Fujitsu Ltd データ処理装置設計方法、データ処理装置設計装置及びプログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005242569A (ja) * 2004-02-25 2005-09-08 Fujitsu Ltd データ処理装置設計方法、データ処理装置設計装置及びプログラム

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CSNG200900419007; 張暁晶: '設計モデルを用いたテスト項目抽出とテストデータ生成手法' 電子情報通信学会技術研究報告 第109巻、第41号, 20090514, pp.37-42, 社団法人電子情報通信学会 *
CSNG201000898006; 丹野治門: '結合テストにおけるテスト項目自動生成手法の提案と評価' 電子情報通信学会技術研究報告 第110巻、第227号, 20101007, pp.37-42, 社団法人電子情報通信学会 *
JPN6013006643; 張暁晶: '設計モデルを用いたテスト項目抽出とテストデータ生成手法' 電子情報通信学会技術研究報告 第109巻、第41号, 20090514, pp.37-42, 社団法人電子情報通信学会 *
JPN6013006644; 丹野治門: '結合テストにおけるテスト項目自動生成手法の提案と評価' 電子情報通信学会技術研究報告 第110巻、第227号, 20101007, pp.37-42, 社団法人電子情報通信学会 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023554057A (ja) * 2020-12-15 2023-12-26 インターナショナル・ビジネス・マシーンズ・コーポレーション 隠れ変数、隠れ属性、および隠れ値検出を用いたシステム・テスト・インフラストラクチャ
JP7730256B2 (ja) 2020-12-15 2025-08-27 インターナショナル・ビジネス・マシーンズ・コーポレーション 隠れ変数、隠れ属性、および隠れ値検出を用いたシステム・テスト・インフラストラクチャ

Also Published As

Publication number Publication date
JP5478540B2 (ja) 2014-04-23

Similar Documents

Publication Publication Date Title
CN111259627B (zh) 文档分析方法、装置、计算机存储介质及设备
CN102804147B (zh) 执行abap源代码的代码检查的代码检查执行系统
CN110688307B (zh) JavaScript代码检测方法、装置、设备和存储介质
JP4951416B2 (ja) プログラム検証方法、プログラム検証装置
US20110307488A1 (en) Information processing apparatus, information processing method, and program
CN109726105A (zh) 测试数据构造方法、装置、设备及存储介质
US10049032B2 (en) Methods for generating a negative test input data and devices thereof
CN110018954B (zh) 代码质量检测、代码检测质量的评估方法、装置及设备
CN113110993A (zh) 自动化测试平台集成对接testlink系统的方法
CN114357918A (zh) 一种芯片验证方法及装置、电子设备、存储介质
Shihab An exploration of challenges limiting pragmatic software defect prediction
CN119645483A (zh) 开源组件漏洞升级兼容性分析方法和电子设备
CN112395199B (zh) 基于云计算的分布式软件实例测试方法及软件开发平台
CN111190880A (zh) 一种数据库检测方法、装置和计算机可读存储介质
JP5164918B2 (ja) テストデータ生成方法及び装置及びプログラム
JP2013077124A (ja) ソフトウェアテストケース生成装置
CN113641523A (zh) 一种日志处理方法及装置
CN116756021A (zh) 基于事件分析的故障定位方法、装置、电子设备及介质
CN106407104B (zh) 一种用于检测与内存空间释放相关的缺陷的方法及系统
Gruppi et al. Tell me who your friends are: Using content sharing behavior for news source veracity detection
JP5478540B2 (ja) テスト用入力データ生成装置及び方法及びプログラム
CN108388796B (zh) 动态域名验证方法、系统、计算机设备和存储介质
US12242845B2 (en) Development support device, non-transitory computer-readable medium, and development support method
CN120354408A (zh) 应用程序控件的行为异常检测方法及装置
CN119690816A (zh) 数据处理方法、装置、设备、存储介质及程序产品

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130219

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130903

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20131004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131028

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140210

R150 Certificate of patent or registration of utility model

Ref document number: 5478540

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350