JPH02224148A - テストプログラム作成処理装置 - Google Patents

テストプログラム作成処理装置

Info

Publication number
JPH02224148A
JPH02224148A JP1046217A JP4621789A JPH02224148A JP H02224148 A JPH02224148 A JP H02224148A JP 1046217 A JP1046217 A JP 1046217A JP 4621789 A JP4621789 A JP 4621789A JP H02224148 A JPH02224148 A JP H02224148A
Authority
JP
Japan
Prior art keywords
description
test program
random number
terminal
attribute
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
JP1046217A
Other languages
English (en)
Inventor
Mutsuo Shiotani
睦男 塩谷
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 JP1046217A priority Critical patent/JPH02224148A/ja
Publication of JPH02224148A publication Critical patent/JPH02224148A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔概要〕 言語処理プログラム用のテストプログラムを属性文法記
述から自動作成するよう処理するテストプログラム作成
処理装置に関し、 属性文法記述の記述性の向上を図れるようにすることを
目的とし、 属性文法記述に従って記述された処理対象文に対しての
乱数的な選択処理により生成される乱数文と、乱数文の
実行結果の確認のためのテストルーチンを呼び出すli
I認文とを対とするテストプログラムを作成するテスト
プログラム作成処理装置であって、属性文法記述が繰り
返しと省略化の非終端記号の記述については、終端記号
との対を組として記述するよう構成し、かつ、非終端記
号の属性を構造的に管理するとともに、終端記号の付加
するものについては、該終端記号を印刷属性として管理
する構造体変数管理部と、作成されたテストプログラム
を出力するとともに、非終端記号のテキストを出力する
際に、該非終端記号が印刷属性を有するときには、該非
終端記号の出方に先立って、該印刷属性の終端記号のテ
キストを出力するライタとを備えるよう構成する。
〔産業上の利用分野〕
本発明は、言語処理プログラム用のテストプログラムを
属性文法記述から自動作成するよう処理するテストプロ
グラム作成処理装置に関し、特に、属性文法記述の記述
性の向上を図れるようにするテストプログラム作成処理
装置に関するものである。
作成した言語処理プログラム(COBOLやFORTl
?AN等のコンパイラに限られずに、コマンドを処理す
るプログラム等も含む)の機能を検査するために、マニ
ュアルに基づいて検証用のテストプログラムを作成して
、その実行結果を予想したものと比較していくという手
法がとられることになる。
しかるに、言語処理プログラムの機能の数は多(、しか
も複数の機能の組み合わせまで検査しなければならない
ことから、確認しなければならない機能の数は極めて多
くなることになる。これから、言語処理プログラムの機
能の検査のために必要とされるテストプログラムの作成
に、多大な労力が費やされているというのが現状である
。このような背景の元に、言語処理プログラム用のテス
トプログラムの自動作成処理装置の提供が望まれている
のである。
〔従来の技術〕
従来では、人手によって、言語処理プログラム用のテス
トプログラムが作成されていた。すなわち、プログラマ
等が、各種文法規則とその意味を記述したマニュアルか
ら要因分析を行ってテスト項目を設定して、テスト項目
にあった機能の実行とその結果の検証手続きとを記述し
たテストプログラムを作成していたのである。
〔発明が解決しようとする課題〕
しかしながら、この要因分析やテスト項目の設定には極
めて大きな労力がかかることから、従来技術では、テス
トプログラムの作成に極めて多大な工数がとられてしま
うという問題点があった。
そして、人手による方法では作成するテストプログラム
の内容に限度があることから、従来技術では、言語処理
プログラムの機能の検査を十分行っていないという問題
点もあったのである。
そこで、本出願人は、先に出願の「特願昭63−465
10号(昭和63年2月29日出願、“言語処理プログ
ラム検証方式”)」で、言語処理プログラム用のテスト
プログラムの自動作成処理装置の発明を案出した。次に
、第7図に従って、この特許出願の発明の概要について
説明する。
図中、1は構文・意味記述であって、言語処理プログラ
ムの処理対象文を展開規則と意味記述とからなる属性文
法記述に従って記述するもの、2はTP自動作成部であ
って、構文・意味記述lからテストプログラムを自動作
成するもの、3はTP自動作成部2が備える生成規則選
択部であって、構文・意味記述1中の展開規則に対して
乱数的な選択処理を施すことで処理対象文の一態様をな
す乱数文を作成するもの、4はTP自動作成部2が備え
る確認文挿入部であって、作成された乱数文の実行によ
り引き起こされる実行結果の確認を行うためのテストル
ーチンを呼び出す確認文を乱数文に対応付けて挿入する
もの、5はTP自動作成部2が備える記号表であって、
乱数文名等を格納するもの、6はTP自動作成部2によ
り作成される一連の検証プログラムであって、言語処理
プログラムのテストフ“ログラムをなすもの、7は自動
判定部であって、検証プログラム6の乱数文を言語処理
プログラムに実行させたときの実行結果が正しいものと
なるのか否かを、その乱数文に対応付けられている確認
文により呼び出されるテストルーチンに従って自動的に
判定するもの、8は結果−覧表であって、自動判定部7
の判定結果をプリントアウトするものである。
このように構成される先の特許出願の発明にあっては、
生成規則選択部3は、構文・意味記述1中の処理対象文
の展開規則に対して乱数的な選択処理を施すことで処理
対象文の一態様をなす乱数文を作成し、確認文挿入部4
は、乱数文の正しい実行結果を引数とする確認文を挿入
していくことで、言語処理プログラム用のテストプログ
ラムを自動生成していくよう処理することになる。
このような先の特許出願の発明の実用性を高めていくた
めには、テストプログラムの作成のために用意する属性
文法記述の記述性の向上を図っていく必要がある。属性
文法記述が記述しにくいものとなると、属性文法記述の
作成に手間がかかって、テストプログラムの作成の生産
性が著しく低下することになるからである。
本発明はかかる事情に鑑みてなされたものであって、本
出願人が出願した先の特許出願のテストプログラム作成
処理装置において、属性文法記述の記述性の向上を図る
手段を講じていくことで、先の特許出願のテストプログ
ラム作成処理装置の実用性を高めて、更に有効なものと
なるようにしていくことを目的とするものである。
〔課題を解決するための手段〕
第1図は本発明の原理構成図である。
図中、IOは属性文法記述であって、検査対象となる言
語処理プログラムの処理対象文についての属性文法を記
述するとともに、この処理対象文の実行結果の確認を行
うテストルーチンの呼び出しのための確認文を記述する
ものである。この属性文法記述10は、繰り返しと省略
化についての非終端記号の記述については、終端記号と
の対を組として記述することになる。11は属性文法記
述10をなす展開規則であって、処理対象文の展開規則
を記述するもの、12は属性文法記述10をなす意味記
述であって、処理対象文中の意味内容を記述するもの、
20は本発明を具備するテストプログラム作成処理装置
であって、言語処理プログラム用のテストプログラムを
自動作成するもの、21はリーグであって、属性文法記
述10を内部形式に変換するもの、22は翻訳処理器で
あって、リーダ21により変換された内部形式を展開し
て内部形式テストプログラムを作成する展開処理部23
と、内部形式テストプログラムの作成にあたって必要と
なる意味記述12の実行依願を行う意味記述処理依頼部
26とを備えるもの、24は展開処理部23が備える乱
数発生部であって、展開規則に関しての選択処理に必要
となる乱数を発生させるもの、25は展開処理部23が
備える構造体変数管理部であって、内部形式テストプロ
グラムの展開処理のために必要となる変数データを構造
的に管理するとともに、終端記号と組とされた非終端記
号については、付加された終端記号を印刷属性として管
理するもの、27は意味記述解釈器であって、意味記述
処理依頼部26からの起動依鯨に応じて処理要求のある
意味記述12を実行するもの、28はライタであって、
翻訳処理器22により作成された内部形式テストプログ
ラムを実行可能なテストプログラムとしてファイル等に
出力するもの、29はライク28が備える機能である印
刷属性出力部であって、出力対象の非終端記号について
のテストプログラムのテキストを出力する際に、その非
終端記号が印刷属性の終端記号を有するときには、非終
端記号のテキストの出力に先立ってその印刷属性の終端
記号のテキストを出力するよう処理するもの、30は出
力されたテストプログラムである。ここで、属性文法記
述10中に記述される非終端記号とは、展開規則11に
従って展開されてテストプログラム30のテキストとな
る記号をいい、終端記号とは、テストプログラム30の
作成にあたって展開されることのない記号をいうもので
ある。
〔作用〕
本発明では、リーダ21の処理に従って、属性文法記述
lOを翻訳処理器22が解釈し易い形式である内部形式
に変換する。この内部形式を受は取ると、展開処理部2
3は、展開規則11に従って再帰的に展開を実行してい
くことで、内部形式テストプログラムへの展開を実行す
る。この展開時に意味記述12の実行が必要となる場合
には、意味記述処理依頼部26は、意味記述解釈器27
を起動していくよう処理し、このようにして起動される
意味記述解釈器27は、構造体変数管理部25の変数値
を新たなものに更新していく処理を実行する。そして、
展開処理部23は、この更新された変数値を参照しなが
ら内部形式テストプログラムへの展開を実行していくと
ともに、この展開にあたって必要となる展開規則ll中
に含まれる選択性の規則に関しては、乱数発生部24が
発生する乱数値に従って選択対象の選択や値の選択を実
行していく。
そして、内部形式テストプログラムへの展開処理が終了
すると、属性文法記述lOに記述されている確認文中の
パラメータ部分に、処理対象文の一態様として翻訳され
た乱数文の実行結果に関しての値が設定され、言語処理
プログラム用のテストプログラムの基本単位に相当する
内部形式プログラムの作成が終了することになる。内部
形式プログラムの作成が終了すると、ライタ28は、内
部形式テストプログラムを実行可能なテストプログラム
30として出力して処理を終了する。
このテストプログラムの自動作成処理にあって、本発明
では、属性文法記述10中で記述される非終端記号につ
いての繰り返し記述と省略化記述については、終端記号
との対を組として記述できるようにする。ここで、この
繰り返し記述とは、乱数発生部24が発生する乱数値に
従って決定されることになる回数骨、記述しである非終
端記号を繰り返すという記述であり、省略化記述とは、
乱数発生部24が発生する乱数値に従って、記述しであ
る非終端記号を省略するか否かを決定するという記述で
ある。
繰り返し記述の例で説明するならば、サブルーチン呼び
出しにおけるプログラム記述は、CALL  サブ1ト
チン名(パラメタ1.パラメタ2.・・・)というよう
に、複数のパラメタが繰り返されるとともに、見易くす
るためにパラメタ間に「、」が記述されることになる。
このような繰り返しに対応するテストプログラム30を
作成する必要があるときには、属性文法記述lOでは、
このプログラム記述を、 サブルーチン呼び出し→ ’CALL” サブルーチン名”(’パラメタ (”、
′パラメタ) #どというように記述する。ここで、「
(・・・・・・)」で区切られた部分が、乱数値により
決定される回数付繰返されることを表し、「”」で区切
られる記号「、」は、そのままテストプログラム30の
テキストになる終端記号を表す。すなわち、「、」とい
う終端記号と「パラメタ」という非終端記号との対から
なる組の繰り返しを記述するのである。
また、省略化記述の例で説明するならば、ELSE文が
省略できるIF文に対応するテストプロ・グラム30を
作成する必要があるときには、属性文法記述10では、 IF文→ ’IF’条件’TIIEN’文[’E[、SE ’文]
”END−IF″というように記述する。ここで、「(
・・・・・・)」で区切られる部分が、乱数値に従って
省略の有無が決定されるところであることを表す。すな
わち、ビELSE”」というそのままテキストとなる終
端記号と「文」という非終端記号との対からなる組の記
述が省略可能であることを記述するのである。
リーダ21は、このような終端記号と組とされた非終端
記号を読み取ると、構造体変数管理部25の該当する非
終端記号名の変数の印刷という属性に、組となっている
終端記号の内部形式を代入する。この処理により、構造
体変数管理部25は、終端記号の付加された非終端記号
については、組となる終端記号を印刷属性として管理す
ることになる。展開処理部23が内部形式プログラムの
作成を完了すると、非終端記号に対応するテストプログ
ラム30のテキストが求められる。このようにして求め
られたテキストは、構造体変数管理部25の該当する非
終端記号名の変数の値属性で管理されることになる。ラ
イタ28は、属性文法記述10中の非終端記号について
は、構造体変数管理部25により管理されるこの値属性
のテキストを出力してい(ことでテストプログラム30
を出力することになるが、このとき、ライタ28の印刷
属性出力部29は、印刷属性を有する非終端記号につい
ては、非終端記号のテキストの出力に先立って、印刷属
性として管理される終端記号のテキストを出力するよう
処理する。
このようにして、終端記号との対を組とする非終端記号
の繰り返し記述を認めないときには、属性文法記述10
で、 サブルチン呼び出し→ CALL” サプトチン名”(”パラメタ (カンマと
パラメタ)′)0カンマとパラメタ→”、′パラメタ と記述しなければならなかったのに対して、このような
記述形式を認めることで、 サブルーチン呼び出し→ ”CALL’  サプトチン名“(″パラメタ じ、′
パラメタ) ”)mで足りることになることから、1行
文の記述を記述する必要がなくなって属性文法記述の記
述性の向上が図られることになる。
また、終端記号との対を組とする非終端記号の省略化記
述を認めないときには、属性文法記述IOで、 IF文→ ′1ビ条件”T)IEII”文fBLsE文)″END
−1PELSE文→”ELSE”文 と記述しなければならなかったのに対して、このような
記述形式を認めることで、 IF文→ ”IF’条件”THEN’文1”ELSE”文)”EN
D−IF”で足りることになることから、1行文の記述
を記述する必要がなくなって属性文法記述の記述性の向
上が図られることになる。
このように、本発明によれば、本出願人が出願した先の
特許出願のテストプログラム作成処理装置において、属
性文法記述の記述性の向上を図れるようになり、テスト
プログラムを効率的に生産できるようになるのである。
〔実施例〕
以下、実施例に従って本発明の詳細な説明する。
第2図に、本発明により自動作成されるテストプログラ
ムの使用方法の説明図を示す。図中、第1図で説明した
ものと同じものについては、同一の記号で示しである。
40は検査対象となる言語処理プログラムであって、属
性文法記述lOに記述されることになる処理対象文のコ
ンパイル処理を実行するもの、41はテスト用オブジェ
クトプログラムであって、言語処理プログラム40によ
りコンパイルされたテストプログラム30のオブジェク
トプログラムであるもの、42はリンカであって、テス
ト用オブジェクトプログラム41とライブラリ43のプ
ログラムとのリンクを実行するもの、44はリンカ42
によってテスト用オブジックトプログラム41とリンク
されることになるCHECKプログラムであって、テス
トプログラム30中に記述される乱数文の実行結果の確
認を行うテストルーチンであるもの、45は実行単位を
なすロードモジュール、46はロードモジュール45の
実行結果を表す実行結果出力である。
この図に示すように、本発明に係るテストプログラム作
成処理装置20は、言語処理プログラム40の機能の検
証のために必要となるテストプログラム30を作成する
ために用意されるものであり、この必要とされるテスト
プログラム30を、マニュアルに従って記述される属性
文法記述IOから自動作成するよう処理することになる
第3図に、「代入文」に関しての属性文法記述10の一
実施例を示す。この属性文法記述10は、様々な形式の
「代入文」を複数個作成して、言語処理プログラム40
がそれらの「代入文」についての計算処理を行ったとき
に、正しい数値を算出するのか否かをテストするために
プログラマ等により作成される。第4図に、この属性文
法記述10から自動作成されることになるテストプログ
ラム30の一実施例を示す、このテストプログラム30
は、「代入文」の−態様である乱数文(「代入文」の展
開規則に対しての乱数的な選択処理により生成される)
と、CHECKプログラム44を呼び出すための確認文
との対を基本単位にして、この基本単位を複数つなげる
ことで構成される。
具体的に説明するならば、第4図中の AAE=−2991448 CALL  CHECK(1,AAE、−133952
)がテストプログラム30の基本単位をなすものである
。この基本単位の意味するところは、AAE=−299
*44B という乱数文を言語処理プログラム40で処理させると
、変数名のrAAEJのところに、−133952(=
−299本448)の値がセントされていれば正しい処
理がなされたことになるので、この変数名と値とを引数
にして、CHECKプログラム44の呼び出しを行うC
A L L   CHE CK (1、A A E、−
133952)という確認文を、この乱数文と対にして
作成するのである。
本発明の詳細な説明に入る前に、第3図の属性文法記述
lOを例にしながら、本発明に係るテストプログラム作
成処理装置20が実行することになるテストプログラム
30の自動作成処理について説明する。ここで、テスト
プログラム作成処理装置20のシステム構成は第1図で
説明したものと同一である。
リーダ21は、第3図の属性文法記述10を読み取ると
、この読み取った属性文法記述10を内部形式に変換す
る。この変換された属性文法記述IOを受は取ると、翻
訳処理器22は、出発記号の「¥文法記述」に続く (設定 項番値 l) に従って、システム変数の「項番値」という変数名のと
ころに、′l”をセントする。この設定処理は、翻訳処
理器22が「設定」という記号を解釈したときに、意味
記述解釈r&27が管理する「設定」という名の関数に
起動をかけることで実行されることになる。この意味記
述解釈器27は、具体的には、例えばLISPシステム
で構成されて、定義されている関数の呼び出しがかかる
と、その関数の処理を実行して処理値を翻訳処理器22
に返すよう処理することになる。
翻訳処理器22は、続いて記述される <’aNL“ 代入文 5 10>  &により、所定
の数(この例では、5から10までの間の乱数値で指定
される)の「代入文」についてのテストプログラム30
を、1つずつ改行して作成する必要があることを知る。
この「代入文」は「“」で区切られていないので、その
ままテキストにできない非終端記号である。このような
非終端記号は、別の位置にどのようにテキストに展開し
ていけばよいかが記述されているので、翻訳処理器22
は、その展開規則11に従って展開処理を実行する。
この例では、続いて、 変数 ′=  式 と「代入文」の定義がされており、更に、この定義中の
「変数」の定義が図中の0部分で展開されていて、「式
」の定義が図中の0部分で展開されている。この■及び
0部分のrNの記号は、いずれか1つのものを乱数に従
って選択することを表している。これから、翻訳処理器
22は、乱数処理に従って1代入文」の「変数」として
、例えばrAAEJの変数名を選択し、「代入文」の「
式」として、例えば「数1本数2」の弐を選択する。こ
のとき実行する乱数による選択対象の選択処理は、具体
的には、乱数発生部24が、選択対象の前に記述されて
いる選択値(この例では、すべて“100”である)の
総和(この例では、“500”である)の内にある乱数
値を発生させて、その発生した乱数値が属する選択値の
選択対象を選ぶことで行うことになる。また、「数1本
数2」のように、更に展開されるものについては、その
展開規則に従って展開を続行していく。この例では、「
数1本数2」は、更に0部分で展開されているので、そ
の展開に従って、例えば、「数値1」として“−299
”を選択し、「数値2」として“448′を選択するこ
とになる。
このようにして、第4図のテストプログラム30の先頭
に位置する代入文の一態様であるAAE=−299*4
48 というテキストが作成されることになる。
「代入文」の定義に続いて記述される 「代入 変数 (値 式)J により、翻訳処理器22は、意味記述解釈器27が管理
する「代入」という名の関数に起動をかけることで、テ
スト対象言語変数の「変数」のところに、「式」の値を
設定するよう処理する。いまの場合、「変数」としては
rAAEJが選択されているので、このrAAEJとい
う変数名のところに「式」の値を設定する。この「弐」
の値は、具体的には、■部分の選択規則の[数1*数2
Jの後に続いて記述されている r値設定(*(値 数1)(値 数2))jで算出され
る。この算出処理も、意味記述解釈器27により実行さ
れて、いまの場合では、「数値1」の値である“−29
9″と、「数値2」の値である“448”との乗算値で
ある“−133952”が、この「式」の値として算出
される。これから、rAAEJという変数名のところに
、“−133952”が設定されることになる。
「代入文」の定義の最後では、「確認」を展開すること
が要求されている。この「rII認」がいかなるもので
あるかは、図中の0部分で展開されている。これから、
翻訳処理器22は、この0部分の展開規則に従って、「
項番」の値の“1”と、「変数」のrAAEJと、「変
数値」の“−133952”とを引数として、CHEC
Kプログラム44の呼び出しを行う CALL  CHECK(1,AAE、−133952
)という確認文の展開を実行する。このようにして、A
AE=−299*448 CALL  CHECK(1,AAE、−133952
)という内部形式テストプログラムの作成が終了するこ
とになる。ぞして、最後に、0部分の更新規則に従って
、意味記述解釈器27に起動をかけて、次の乱数文のた
めに、システム変数の「項番値」の変数名の値を1つ歩
進させる処理を行うよう処理する。
翻訳処理器22は、以下同様の処理を繰り返していくこ
とで、第4図に示したような内部形式テストプログラム
の作成を実行することになる。そして、属性文法記述I
Oに対応する内部形式テストプログラムの作成が終了す
ると、ライタ28は、この作成した内部形式テストプロ
グラムを実行可能なテストプログラムとして出力してテ
ストプログラム30の作成処理を終了する。
このように、翻訳処理器22は、属性文法記述10中の
展開規則11に従って再帰的に展開を実行していくこと
で、内部形式テストプログラムへの展開を実行する。こ
の展開時に、属性文法記述10中の意味記述12の実行
が必要となる場合には、意味記述解釈器27を起動して
いくよう処理し、この起動される意味記述解釈器27は
、構造体変数管理部25の変数データを新たなものに更
新していく処理を実行する。そして、翻訳処理器22は
、内部形式テストプログラムへの展開を、この更新され
た変数データを参照しながら実行していくとともに、展
開にあたって必要となる展開規則11中に含まれる選択
性の規則に関しては、乱数発生部24により発生される
乱数値に従って選択対象を選択することで行うことにな
る。
次に、本発明の特徴部分について説明する。本発明では
、〔作用〕の欄でも説明したように、属性文法記述10
中で記述される非終端記号についての繰り返し記述と省
略化記述については、終端記号との対を組として記述す
ることを特徴とする。
すなわち、乱数発生部24が発生する乱数値に従って決
定される回数骨、記述しである非終端記号を繰り返すと
いう記述である繰り返し記述の例で説明するならば、 !ブトチン呼び出し→ ’CALL″ サプトチン名′(″パラメタ (”、′
パラメタ) ”)′というように、「、」という終端記
号と「パラメタ」という非終端記号との対からなる組を
繰り返すというように記述する。また、乱数発生部24
が発生する乱数値に従って省略するか否かを決定すると
いう記述である省略化記述の例で説明するならば、 1F文→ IF”条件“THEN”文(”f!LSEs文]”EN
D−11というように、「”ELSE”」という終端記
号と「文」という非終端記号との対からなる組の記述が
省略可能であるというように記述するのである。
次に、第5図及び第6図に示すフローチャートに従って
、本発明が、このような記述形式に対してどのように処
理するのかについて説明する。ここで、第5図のフロー
チャートは、リーダ21が実行するフローチャートであ
り、第6図のフローチャートは、ライタ28が実行する
フローチャートである。
リーダ21は、第5図のフローチャートのステップlで
示すように、属性文法記述IOの文字を読み取って内部
形式に変換していくときに、読み取った文字が省略化記
述の先頭文字であるのか否かを判断する。上述の例に従
って説明するならば、読み取った文字が「(」であるの
か否かを判断するのである。読み取った文字が省略化記
述の先頭文字であると判断するときには、対応する関数
を起動して、ステップ2及びステップ3の処理を実行す
る。すなわち、ステップ2で示すように、省略化記述の
最終文字(上述の例では[]」である)までの読取処理
を実行するとともに、読み取った文字を内部形式に変換
して、翻訳処理器22に渡すよう処理する。このとき、
ステップ3で示すように、構造体変数管理部25の該当
する非終端記号名の変数の印刷という属性に、組となっ
ている終端記号を登録するよう処理する。この処理によ
り、上述の例で説明するならば、「(・・・・・・)」
で区切られた部分中に記述される非終端記号名の変数の
印刷属性に、「[・・・・・・]」で区切られた部分中
に記述される終端記号が登録されることになる。
一方、読み取った文字が省略化記述の先頭文字でないと
判断するときは、ステップ4で示すように、読み取った
文字が繰り返し記述の先頭文字であるのか否かを判断す
る。上述の例に従って説明するならば、読み取った文字
が「(」であるのか否かを判断するのである。読み取っ
た文字が省略化記述の先頭文字であると判断するときに
は、対応する関数を起動して、ステップ5及びステップ
6の処理を実行する。すなわち、ステップ5で示すよう
に、繰り返し記述の最終文字(上述の例では口」である
)までの読取処理を実行するとともに、読み取った文字
を内部形式に変換して、翻訳処理器22に渡すよう処理
する。このとき、ステップ5で示すように、構造体変数
管理部25の該当する非終端記号名の変数の印刷という
属性に、組となっている終端記号を登録するよう処理す
る。
この処理により、上述の例で説明するならば、「(・・
・・・・)」で区切られた部分中に記述される非終端記
号名の変数の印刷属性に、「(・・・・・・)」で区切
られた部分中に記述される終端記号が登録されることに
なる。
ステップ4の処理で繰り返し記述の先頭文字でもないと
判断するときに、そのまま読取処理を実行して、読み取
った文字を内部形式に変換して翻訳処理器22に渡すよ
う処理することになる。そして、ステップ3、ステップ
6及びステップ7に続いて、ステップ8で、属性文法記
述10の読取が完了したのか否かを判断して、完了して
いないと判断するときにはステップ1に戻るよう処理す
ることになる。
この属性文法記述10の内部形式を受は取ると、翻訳処
理器22は、第3図の属性文法記述10の例で説明した
ような乱数的な選択処理を施すことで展開処理を実行し
て、内部形式テストプログラムの作成を実行する。そし
て、内部形式テストプログラムの作成が終了すると、構
造体変数管理部25の各非終端記号名の変数の値属性に
出力するテキストが代入されることになる。この内部形
式テストプログラムの作成にあたって、展開処理部23
は、省略化記述については、乱数発生部24が発生する
乱数値と指定された確率値とを比較することで、その省
略化記述の対象となった非終端記号の省略の有無を決定
し、繰り返し記述については、乱数発生部24が発生す
る乱数値に従って、その繰り返し記述の対象となった非
終端記号の繰り返し回数を決定していくことになる。
このようにして、出力対象となるテストプログラム30
の作成が終了すると、ライタ28は、テキストの出力に
あたって、第6図のフローチャートのステップ11で示
すように、出力対象のテキストの非終端記号の印刷属性
に終端記号が登録されているのか否かをチエツクする。
このチエツクにより、印刷属性に終端記号が登録されて
いると判断するときには、ステップ12で示すように、
組となるその終端記号のテキストを出力し、続いて、ス
テップ13で示すように、該当する非終端記号の展開結
果のテキストを出力するよう処理する。このとき、繰り
返し記述については、各繰り返し毎に組となる終端記号
を出力することになる。
これから、(”、′パラメタ)を3回繰り返すというこ
とになるときには、あたかも、 ”、′ハラメタ”、′パラメタ”、′パラメタと定義さ
れていたかのようにテキストが出力されることになる。
一方、ステップ11のチエツクにより、印刷属性に終端
記号が登録されていないと判断するときには、ステップ
I2の処理は行わずに、直ちにステップ13の処理に従
って、該当する非終端記号の展開結果のテキストを出力
するよう処理する。
そして、ステップ14で、すべてのテキストを出力した
のか否かを判断して、出力されていないものが残されて
いるときには、ステップ11に戻るよう処理することに
なる。なお、省略化記述にあって、省略することが決定
されるときには、実質的なテキストは何も出力されない
よう処理される。
以上に説明したように、本発明では、非終端記号につい
ての繰り返し記述と省略化記述については終端記号との
対を組として記述することを特徴とし、そして、そのよ
うな記述がなされたときに、本来の記述内容のテキスト
を出力するよう処理することを特徴とするものである。
これから、非終端記号1A”の繰り返しを、 A*−(A) という記号方式で定義すると、 サブルーチン呼び出し→ ”CALピ サブルーチン名″(mパラメタ (カンマ
とパラメタ) “)″カンマとパラメタ→#、′パラメ
タ と記述しなければならなかったのに対して、本発明では
、 サブルーチン呼び出し→ ’CALL″ サブルーチン名″(″パラメタ (”、
″パラメタ) ”)″という記述で足りることになる。
このように定義が1つ減らせることになるのは、〔作用
〕の欄でも説明したように、省略化記述についても同様
である。
また、非終端記号“A”の繰り返しを、A*→A   
A*   e 但し、eは空記号 と記述すると、繰り返し回数の制御や生成された木の解
釈が難しくなるという問題点がでてくるが、本発明を用
いればそのようなことも起こらない。
〔発明の効果〕
このように、本発明によれば、属性文法記述から言語処
理プログラム用のテストプログラムを自動作成するテス
トプログラム作成処理装置にあって、属性文法記述中で
定義しなければならない展開規則の定義の数を1つ減ら
せるようになるとともに、属性文法記述も見易いものと
なる。これから、テストプログラムの作成効率が著しく
高められることになるとともに、テストの質も向上でき
るようになる。
【図面の簡単な説明】
第1図は本発明の原理構成図、 第2図は本発明により自動作成されるテストプログラム
の使用方法を説明する説明図、第3図は属性文法記述の
一実施例図、 第4図は第3図の属性文法記述から作成されるテストプ
ログラムの説明図、 第5図はり−ダが実行するフローチャート、第6図はラ
イタが実行するフローチャート、第7図は先に出願の発
明の説明図である。 図中、10は属性文法記述、11は展開規則、l2は意
味記述、20はテストプログラム作成処理装置、21は
リーグ、22は翻訳処理器、23は展開処理部、24は
乱数発生部、25は構造体変数管理部、26は意味記述
処理依願部、27は意味記述解釈器、28はライタ、2
9は印刷属性出力部、30はテストプログラムである。

Claims (1)

  1. 【特許請求の範囲】 展開規則と意味記述とからなる属性文法記述(10)に
    従って記述された言語処理プログラムの処理対象文に対
    して、展開規則に関しての乱数的な選択処理を施すこと
    で該処理対象文の一態様をなす乱数文を生成するととも
    に、該乱数文の実行結果の確認を行うテストルーチンの
    呼び出しのための確認文を、該属性文法記述中に該処理
    対象文と対応付けて記述することで該乱数文と対にして
    生成して、言語処理プログラム用のテストプログラムと
    なすテストプログラム作成処理装置であって、上記属性
    文法記述(10)が、非終端記号についての繰り返し記
    述と省略化記述については、終端記号との対を組として
    記述するよう構成し、 かつ、上記属性文法記述(10)により記述される非終
    端記号の属性を構造的に管理するとともに、終端記号と
    組とされた非終端記号については、該終端記号を印刷属
    性として管理するよう処理する構造体変数管理部(25
    )と、 作成された上記テストプログラムを出力するとともに、
    該テストプログラムをなす非終端記号のテキストを出力
    する際に、該非終端記号が上記構造体変数管理部(25
    )により印刷属性を有するものとして管理されるもので
    あるときには、該非終端記号のテキストの出力に先立っ
    て、該印刷属性の終端記号のテキストを出力するよう処
    理するライタ(28)とを備えることを、 特徴とするテストプログラム作成処理装置。
JP1046217A 1989-02-27 1989-02-27 テストプログラム作成処理装置 Pending JPH02224148A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP1046217A JPH02224148A (ja) 1989-02-27 1989-02-27 テストプログラム作成処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1046217A JPH02224148A (ja) 1989-02-27 1989-02-27 テストプログラム作成処理装置

Publications (1)

Publication Number Publication Date
JPH02224148A true JPH02224148A (ja) 1990-09-06

Family

ID=12740940

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1046217A Pending JPH02224148A (ja) 1989-02-27 1989-02-27 テストプログラム作成処理装置

Country Status (1)

Country Link
JP (1) JPH02224148A (ja)

Similar Documents

Publication Publication Date Title
Boujarwah et al. Compiler test case generation methods: a survey and assessment
US10459829B2 (en) Overall test tool migration pipeline
US6321376B1 (en) Apparatus and method for semi-automated generation and application of language conformity tests
JPH08194623A (ja) 字句エラーを診断する方法および装置
JPS61103247A (ja) 翻訳プログラム作成システム
JPS6375835A (ja) 目的コ−ド、プログラム・リスト及び設計文書を生成する装置
CN1971518A (zh) 编译系统、调试系统及程序开发系统
US7895575B2 (en) Apparatus and method for generating test driver
CN120780593A (zh) 基于大模型辅助车载测试用例编写方法及装置
JPH02224148A (ja) テストプログラム作成処理装置
Murali et al. A sentence generator for a compiler for PT, a pascal subset
Conrad et al. Graph transformations for model-based testing
JPH02224143A (ja) テストプログラム作成処理装置
MacLennan The Synmac syntax macroprocessor: Introduction and manual, version 5
JPH02224144A (ja) テストプログラム作成処理装置
US20240202522A1 (en) Device and method for generating deep learning model graph and abstract syntax tree for integrated compiler
JPH10187450A (ja) オブジェクト指向プログラム自動生成装置,自動生成方法およびそのプログラム記憶媒体
JPH02224146A (ja) テストプログラム作成処理装置
Bromell et al. A Strategy for the Development of Safety Critical Software
JPH02224147A (ja) テストプログラム作成処理装置
Marick et al. The VERUS™ Design Verification System
JPS58169637A (ja) コンパイル処理方式
CN121657968A (zh) 一种软件开发方法、系统及设备
KR20240097681A (ko) 통합 컴파일러용 딥러닝 모델 그래프 및 추상구문트리 생성 장치 및 방법
CN121326756A (zh) 基于大模型的单元测试代码生成方法、装置、设备、介质及程序产品