JPH03290740A - テストデータ自動生成システム - Google Patents

テストデータ自動生成システム

Info

Publication number
JPH03290740A
JPH03290740A JP2093464A JP9346490A JPH03290740A JP H03290740 A JPH03290740 A JP H03290740A JP 2093464 A JP2093464 A JP 2093464A JP 9346490 A JP9346490 A JP 9346490A JP H03290740 A JPH03290740 A JP H03290740A
Authority
JP
Japan
Prior art keywords
test data
generated
data
test
features
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.)
Pending
Application number
JP2093464A
Other languages
English (en)
Inventor
Hirobumi Hotta
堀田 博文
Tatsunori Hashimoto
橋本 辰範
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 JP2093464A priority Critical patent/JPH03290740A/ja
Publication of JPH03290740A publication Critical patent/JPH03290740A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、ソフトウェアのブラックボックステストに用
いるためのテストデータの作成技術に関するものである
〔従来技術〕
従来、ソフトウェアのブラックボックステストに用いる
テストデータは、人手で作成されてきた。
人手でテストデータを作成することにより生じる大きな
欠点は、考え間違いや考慮抜け、不要な冗長性が入りや
すいということである。特に、プログラム作成者自身が
テストを実施する場合にはこの現象は顕著である。この
ような人為的なミスをなくするために、入力データの様
々な組合せを計算機で作り出すことにより、数多くのテ
ストデータを自動的に生成する方式が提案されている。
〔発明が解決しようとする課題〕
しかしながら、従来のテストデータ自動生成の方式では
、入力データしか作成できないためにテスト結果の検証
に時間がかかったり、すでにテストが終っている項目で
あるにもかかわらず、それをテストするためのテストデ
ータも生成してしまうといった課題が残っている。
また、大規模なソフトウェアに対しその一部分をテスト
するための手法を特に用意していない。
本発明は、前記課題点を解決するためになされたもので
あり、その課題は、ソフトウェアのブラックボックステ
ストに用いるためのテストデータを自動的に能率良く作
成することが可能な技術を提供することにある。
本発明の前記ならびにその他の課題と新規な特徴は1本
明細書の記述及び添付図面によって明らかになるであろ
う。
〔課題を解決するための手段〕
前記原題を解決するために1本発明は、ソフトウェアの
ブラックボックステストに用いるためのテストデータを
自動的に生成するテストデータ自動生成システムであっ
て、推論装置を用いソフトウェアの仕様に対する形成的
記述から、テストデータ候補となるテスト入出力を生成
する手段と、そのとき生成されるテストデータ候補の大
きさや性質を制御する手段と、生成されたテストデータ
候補や既存テストデータの特徴を解析し、その特徴をデ
ータベースに登録する手段と、生成されたテストデータ
候補がデータベースに登録されていない特徴を有する場
合だけ、そのテストデータとして出力する手段を備えた
ことを最も主要な特徴とする。
〔作用〕
前述の手段によれば、推論装置を用いソフトウェアの仕
様の形式的記述からテストデータを生成する。このとき
、入力データだけでなく、それに対応する正しい出力デ
ータも生威し、次に、既存のテストデータでチエツクで
きていない項目だけをチエツクするデータを選んで生成
するために、チエツク済みのテスト項目を特徴データベ
ースに登録する。
次に、推論装置に対し、仕様を構成する個々の規則の組
合せ方を制御することにより、網羅的な組合せ、ランダ
ムな組合せ、そして人間の指示による組合せが可能とな
る。また、生成されるテストデータの大きさの制限や、
部分仕様に対するテストデータを生成することができる
以下1本発明の一実施例を図面を用いて具体的に説明す
る。
〔実施例1〕 第1図は、本発明の実施例工のテストデータ生成システ
ムの概略構成を示すブロック図、第2図及び第3図は、
加算プログラム用テストデータの生成に関する説明図で
あり、第2図は仕様記述例を示す図、第3図は第2図の
仕様から生成されたテストデータを示す図である。
第1図に示すように、本実施例1のテストデータ生成シ
ステム100は、テストデータ生成器101、テストデ
ータ解析器102.特徴データベースファイル103で
構成されている。
第1図において、点線矢印は既存テストデータ解析の情
報の流れを示し、実線矢印はテストデータの情報の流れ
を示す。串印は特徴データベースファイル103に登録
されていない特徴をもつものである。
前記テストデータ生成器101は、テストデータ生成の
前準備として、ソフトウェアの仕様をその実現とは独立
に、規則の集合として形式的に記述しておく。このとき
期待される出力データを規定する規則も併せ記述する。
これらの規則を推論装置(図示していない)を用いて組
合わせることにより、規則を満たす入力系列が生成され
る。これがテストデータとなる。また、テストの目的に
応し、テストデータの大きさや各規則の適用回数の制限
値を設定しておく。
前記特徴データベースl○3に、それまでに生成された
テストデータのもつ特徴をすべて登録しておき、その後
の生成では、仮に生成されたテストデータの特徴を抽出
し、それが特徴データベース内に格納されている特徴と
同一の特徴をもたないことをテストデータ解析器102
で確認した後テストデータとして正式に生成・出力する
ようになっている。
また、新たに生成したテストデータが持つ特徴は、特徴
データベース103に追加登録する。
−射的に、以下に示す手順でテストデータ集合の生成を
行う。
(1)テスト済のテストデータがある場合ステップ1:
既存のテストデータを解析し、構文、その特徴を抽出す
る。
ステップ2:前もって抽出された以外の特徴をもつテス
トデータ集合を生成する。
(2)既存のテストデータがない場合 すべての特徴をテストするテストデータ集合を生成する
前記(2)は、前記(1)のステップ2で前もって抽出
された特徴が存在しない場合に相当する。
次に、具体的な例を用いて本実施例1の処理動作を説明
する。
〔加算プログラムの場合〕
整数の1か2を何回でも加算できるという仕様をもつプ
ログラムのテストデータを生成する。このプログラムの
仕様記述を第2図に示す、この例では、推論装置として
論理プログラミング言語であるP rologの処理系
を、仕様記述言語としてPP rologで直接実行す
ることのできるDCG(Definite C1aus
e Grammar)を用いている。DCGによる仕様
記述においては、規則の区切りは′で表される。
この仕様記述を推論装置であるP rolog処理系上
に構築されたテストデータをテストデータ生成器101
に取り込み、各規則を組み合わせてテストデータを生成
する。テストデータ生成器101の動作は、p rol
ogのもつパターンマツチングとバックトラックの機能
を利用している。P rologまたはDCGで記述さ
れた仕様は、任意の入力データが記述した仕様に合って
いるかどうかをチエツクするチエッカとして動作する。
このとき、パターンマツチング機能により、この逆、す
なわち、仕様チエッカに合格する入力データを生成する
こともできる。
さらに、バックトラック機能により、仕様チエッカに合
格する入力データを次々に生成することができる。つま
り、この例では、DCG記述中の[]でくくられた文字
で構成された加算式が入力データとして、また、その入
力データに対応した加算結果が出力データとして得られ
る。
このとき、規則適用回数(ある入力データを生成すると
きに組合わされた規則ののべ個数)を制限することでテ
ストデータの大きさ、すなわち。
最大演算回数を制限することができる。
また、各規則の適用回数にも制限を与えることができ、
例えば、最終行の規則の最大適用回数をII O++と
指示すれば、整数″1”だけの加算をテストするための
テストデータを生成することができる。
規則を組合わせる際、この例におけるrestadde
rやconstのように複数候補が存在する場合がある
このとき、候補の選択について、順次行う人間に問い合
わせるという3つの方法を適用することができる。
規則適用回数を5、組合わせ方法は順次行うとした場合
の生成例を第3図に示す。−〉の左辺は入力データを右
辺は出力データを表す。
〔実施例2〕 本発明の実施例2では、特徴データベース103を利用
したテストデータの生成例として、Cコンパイラの言語
仕様準拠性をテストする場合を考える。
この場合、テストデータはCプログラムということにな
る。また、コンパイラのテストにおいては、式の構造パ
ターン、変数の型の種類、制御構造の種類など、人手で
テストを行う場合のテスト項目として考慮される要素を
特徴とみなす。
C言語仕様は、構文側と意味則からなり、さらに意味則
は字句間の関係や制限を規定する静的意味側とプログラ
ムが実行されたときの動作を規定する動的意味則からな
る。
この実施例2では、Cコンパイラがプログラムの文法(
すなわち、構文側と静的意味側)上の正当性を正しくチ
エツクできるか否かをテストするシステムの概略構成を
示すにとどめる。
第4図乃至第7図は、本実施例2のCコンパイラ用テス
トデータの生成を説明するための図であり、第4図はシ
ステム概略構成を示すブロック図。
第5図は特徴の一つと考えられるgoto文とラベル付
文との関係水の例を示す図、第6図は特徴を利用したテ
ストデータ生成方式を示す図、第7図は生成されたテス
トデータの例を示す図である。
第4図に示すように、本実施例2のCコンパイラ用テス
トデータ生成システム200は、字句列生成器201A
と静的意味側チエッカ201Bからなるテストデータ生
成器201、構文解析器202Aと特徴抽出器202B
からなるテストデータ解析$202.特徴データベース
ファイル203で構成されている。第4図において、2
04は字句解析器、205はプログラム整形器である。
また、点線矢印は既存テストデータ解析の情報の流れ、
実線矢印はテストデータの情報の流れである。
次に、個々の構成要素について以下に説明する。
なお、本実施例2中の記号、用語は次の意味を持つ。
+:入力パラメタ :出力パラメタ ?:入出力バラメタ SP:ソースプログラム TL:字句列 ST:構文木 (1)テストデータ生成器201の槽底要素字句列生成
器[: lex gen(−TL)コ201Aは、構文
側の仕様記述をもとに、構文上圧しい字句列を次々に生
成する。
静的意味側チエッカ[:semantics(+TL、
−TL)コ202Bは、生成された字句列の静的意味側
が満足していないものはここで棄却する。
(2)テストデータ解析器202の構成要素構文解析器
[: 5yntax(−5T、?TL)コ202Aは、
字句列を解析し構文木を作成する。
特徴抽出器[: characteristics(+
ST、?TL)1202Bは、構文木を解析し、対応す
るプログラムが持つ特徴を抽出する。抽出された特徴が
特徴データベースファイルに未登録ならば登録する。テ
ストデータ生成時において、生成された字句列のもつ特
徴のすべてが登録済みである場合、その字句列はここで
棄却する。
(3)その他 字句解析器[: 1 ex(+SP、−TL)コ204
はCプログラムを字句列に分解する。
プログラム整形Ji E : Prog−gen(+T
L、−3P)コ205は字句列をCソースプログラムの
形に変換する。
ここで用いている特徴データベースについて、goto
文による分岐が正しく処理されていることをテストする
ためのテストデータ生成を例にとり説明する。
goto文の特徴は、構文木上でgoto文自身の存在
す°る位置と、対応する分岐先ラベルの位置との関係を
とらえることができる。すなわち、goto文とラベル
付文との間の関係を表わす木を特徴とみなすことができ
る。第5図にその例を示す。
この場合、異なるプログラムであっても、got。
文とラベル付文の間の位置関係が同じならば、goto
文の分岐に関するテストのテストデータとしては冗長で
あると判断すべきである。そのために、テストデータ生
成器201により生成された字句列(すなわち、プログ
ラム)のもつgoto文とラベル付文との間の関係木を
特徴抽出器202Bで解析し、特徴データベースに登録
する。以後生成されたテストデータの持つ特徴がこの特
徴と同しとき、そのテストデータは冗長であると判断し
採用しない。
また、既存のテストデータがある場合、既存テストデー
タ解析機能によりそれらの特徴を解析し、特徴データに
登録する。すなわち、ここでは、テストデータであるプ
ログラムを構文解析することでgoto文とラベル付文
の間の関係木を抽出し、特徴データベースを用いてテス
トデータを生成すると、goto文の分岐に関しテスト
されていない構文をもつテストデータだけを得ることが
できる。
第6図にgoto文に関する特徴に着目して、本システ
ム内の情報の流れを示す。第6図において、点線矢印は
既存テストデータ解析の情報の流れ、実線矢印はテスト
データの情報の流れを示すものであり、・印は生成時登
録済みの特徴、O印は生成時未登録の特徴を示すもので
ある。
以下の条件でCコンパイラのgoto文の処理をテスト
するためのテストデータの生成を実際に行った。
(1)構文側適用回数に上限を設定する。
(2)ラベル、 goto文は王回しか現われない。
(3)構成のネストは2以下とする。
その結果、74種のテストデータが生成された。
実際にあるCコンパイラの開発時に人手で作成された6
種のテストデータがもつ特徴は、すべてこの中に含まれ
ていた。
また、残り68個の中には、第7図に示すような、人間
が思いつきにくいと思われるテストデータも存在する。
以上、本発明を実施例にもとづき具体的に説明したが、
本発明は、前記実施例に限定されるものではなく、その
要旨を逸脱しない範囲において種々変更可能であること
は言うまでもない。
〔発明の効果〕
以上、説明したように、本発明によれば、以下の効果を
奏することができる。
・テストデータを少ない工数で作成できる。
・テスト項目に抜けがなく冗長性が少ない。
・出力データも生成でき、テストデータに対する動作確
認を容易にすることができる。
・未テスト項目をテストするテストデータだけを選んで
生成することができる。
・仕様の一部をテストするためのテストデータを容易に
生成することができる。
これらにより、一定期間で行えるテストの精度を向上さ
せることができ、ソフトウェア製品の品質保証を高める
ことができる。
【図面の簡単な説明】
第1図は、本発明の実施例1のテストデータ生成システ
ムの概略構成を示すブロック図、第2図及び3図は、加
算プログラム用テストデータの生成について説明するた
めの図、第4図は、実施例2のシステム概略構成を示す
ブロック図、 第5図は、特徴の一つと考えられるgoto文とラベル
付文との関係木の例を示す図、 第6図は、特徴を利用したテストデータ生成方式を示す
図、 第7図は、生成されたテストデータの例を示す図である
。 図中、100,200・・テストデータ生成システム、
101,201・・テストデータ生成器、102.20
2・・・テストデータ解析器、103,203・・・特
徴データベースファイル、201A  字句列生成器、
201B・・静的意味側チエッカ、202A・テストデ
ータ生成器、204・・字句解析器、205・・・プロ
グラム整形器。

Claims (1)

    【特許請求の範囲】
  1.  ソフトウェアのブラックボックステストに用いるため
    のテストデータを自動的に生成するテストデータ自動生
    成システムであって、推論装置を用いソフトウェアの仕
    様に対する形成的記述から、テストデータ候補となるテ
    スト入出力を生成する手段と、そのとき生成されるテス
    トデータ候補の大きさや性質を制御する手段と、生成さ
    れたテストデータ候補や既存テストデータの特徴を解析
    し、その特徴をデータベースに登録する手段と、生成さ
    れたテストデータ候補がデータベースに登録されていな
    い特徴を有する場合だけ、そのテストデータとして出力
    する手段を備えたことを特徴とするテストデータ自動生
    成システム。
JP2093464A 1990-04-09 1990-04-09 テストデータ自動生成システム Pending JPH03290740A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2093464A JPH03290740A (ja) 1990-04-09 1990-04-09 テストデータ自動生成システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2093464A JPH03290740A (ja) 1990-04-09 1990-04-09 テストデータ自動生成システム

Publications (1)

Publication Number Publication Date
JPH03290740A true JPH03290740A (ja) 1991-12-20

Family

ID=14083060

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2093464A Pending JPH03290740A (ja) 1990-04-09 1990-04-09 テストデータ自動生成システム

Country Status (1)

Country Link
JP (1) JPH03290740A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022129520A (ja) * 2021-02-25 2022-09-06 アミフィアブル株式会社 テスト支援システム、テスト支援方法及びプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022129520A (ja) * 2021-02-25 2022-09-06 アミフィアブル株式会社 テスト支援システム、テスト支援方法及びプログラム

Similar Documents

Publication Publication Date Title
US8875110B2 (en) Code inspection executing system for performing a code inspection of ABAP source codes
US5920830A (en) Methods and apparatus for generating test vectors and validating ASIC designs
US10459829B2 (en) Overall test tool migration pipeline
JPS6375835A (ja) 目的コ−ド、プログラム・リスト及び設計文書を生成する装置
CN109857641A (zh) 对程序源文件进行缺陷检测的方法及装置
Rask et al. Visual studio code vdm support
CN117331836A (zh) 一种基于代码语法树分析的评测方法
KR102546424B1 (ko) 학습용 데이터 생성 장치, 소스 코드 오류 분석 장치 및 방법
CN109359055B (zh) 一种数据测试的方法和设备
Mernik et al. LISA: A tool for automatic language implementation
US11119740B2 (en) Parsability of code snippets
Sauvé et al. Easyaccept: a tool to easily create, run and drive development with automated acceptance tests
CN109471637B (zh) 电路图的审查脚本调试方法
CN109032946B (zh) 一种测试方法和装置、计算机可读存储介质
JPH03290740A (ja) テストデータ自動生成システム
Yusuf et al. An automatic approach to measure and visualize coupling in object-oriented programs
Golemanov et al. A set of tools to teach language processors construction
Arcaini et al. Unified syntax for abstract state machines
H. Padmanabha et al. Advances in Automated Pedagogical Compile-time Error Repair
RU2672786C1 (ru) Способ верификации программного обеспечения по естественной семантике идентификаторов исходного кода программы при статическом анализе
Friedman-Hill Software verification and functional testing with XML documentation
CN117520191B (zh) 一种基于程序路径的测试完备性检查方法、设备及存储介质
Cunningham et al. Implementing a sense tagger in a general architecture for text engineering
JP2011221656A (ja) 実行コードの生成方法、コンパイラ及びコンパイル装置
Hadiwijaya et al. A domain-specific language for automatic generation of checkers