JPH0756768A - データ型対応の自動テスト方法 - Google Patents

データ型対応の自動テスト方法

Info

Publication number
JPH0756768A
JPH0756768A JP5198154A JP19815493A JPH0756768A JP H0756768 A JPH0756768 A JP H0756768A JP 5198154 A JP5198154 A JP 5198154A JP 19815493 A JP19815493 A JP 19815493A JP H0756768 A JPH0756768 A JP H0756768A
Authority
JP
Japan
Prior art keywords
data
test
program
test data
input
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
JP5198154A
Other languages
English (en)
Inventor
Akihiro Yoshikawa
彰弘 吉川
Kazuyuki Aoyama
和之 青山
Tetsuya Masuishi
哲也 増石
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP5198154A priority Critical patent/JPH0756768A/ja
Publication of JPH0756768A publication Critical patent/JPH0756768A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【目的】 本発明は情報処理装置を用いたプログラム開
発支援システムに関し、特にプログラムのテストのため
のテストデータの作成、及び作業者との対話を有するプ
ログラムを作業者の介在なくテストできる自動テスト方
法を提供することにある。 【構成】 データ型とテストデータとの対応を表す標準
テストデータを予め記憶し、テストするプログラムの引
数に関する情報を取得し(104)、その引数に対する
適切なテストデータを標準テストデータに基づいて作成
し(106)、作成したテストデータのテストレベルが
あるレベル以上のものだけを選別し(107)、得られ
たテストデータを引数に対応させて出力することで達成
される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は情報処理装置を用いたプ
ログラム開発においてプログラムのテスト作業を自動化
する自動テスト方法に係り、例えばプログラムのテスト
のための入力データを作成する場合や、作業者との対話
を有するプログラムをテストする場合にこれらを自動化
する自動テストシステムに好適な自動テスト方法に関す
る。
【0002】
【従来の技術】情報処理システムの開発において、プロ
グラムのテスト作業の占める割合は大きいため、従来か
らテストを自動化したりテスト作業を支援する方法が考
えられてきた。
【0003】例えば、HEWLETT PACKARD
社発行のマニュアル「HP−UXReference
Volume1 Manual Part No.B1
864−90000」の p.871 によれば、デバッグ用
ツール「xdb」の記録・再生機能が開示されていた。
これによると、プログラムのテスト実行において、デバ
ッグ用ツールに対する作業者の指示をファイルに記録
し、後にこれを再生することで、デバッグ用ツールに対
する作業者の指示を簡単にできる方法が示されていた。
【0004】また、日立製作所発行のマニュアル「CO
BOL85 テストデバッグ解説・手引書 6180-3-726」
によれば、p.25 の図4.1−1のようなテスト用ツー
ル「COBOL85/TD」によるテスト装置があっ
た。このツールは pp.77-81 によれば、実際のファイル
を使わずに、データ名への値の設定及びデータ名の参照
ができ、また入出力条件がテストでき、また入出力文の
論理的な誤りをチェックできた。また pp.190-192 によ
れば、例えばテストプログラム中のファイル読み込み命
令であるREAD文に対して、あたかも作業者が文字などを
入力したかのように動作させる「READ文の疑似実行」機
能の適用例が示されていた。
【0005】またデータに関する定義を予め記憶してお
き、プログラム開発においてその定義を参照すること
で、データに関する定義を作成する手間を省いたり、デ
ータに関する定義が種々のプログラムごとに食い違った
り矛盾したりするのを防ぐ方法があった。
【0006】例えば、日立製作所発行のマニュアル「E
AGLE2 システム設計編 解説、文法、操作書 6180-
3-810-10」の p.209 によれば、データに関する定義画
面が示されていた。これによると、データ名、タイプ、
長さ、初期値、コメントの定義が行なえた。さらにこの
ツールのユーザが独自に8個までの項目を取り決めるこ
とができ、その項目について定義することもできた。し
かしユーザが独自に決めた項目について定義した内容は
印刷出力にしか利用できなかった。
【0007】また対話端末に文字や図形を表示するウィ
ンドウシステムの、使用環境を管理するウィンドウマネ
ージャというプログラムがあった。例えば日刊工業新聞
社発行の「X−Window Ver.11 プログラミ
ング」の pp.48-50 にウィンドウマネージャの動作が示
されていた。これによれば、ウィンドウマネージャはト
ップレベルのウィンドウのレイアウトに介入して画面の
概観を変更できた。その機能はウィンドウシステムのリ
ダイレクション機能を用いて実現されていた。
【0008】
【発明が解決しようとする課題】しかし上記「xdb」
に見られる従来技術では、作業者が行なった指示を記録
できるだけで、指示を自動的に作成することはできなか
った。またテスト中のある時点で画面に表示されている
内容をプリンタに印刷する方法は示されていなかった。
【0009】また上記「COBOL85」に見られる従
来技術では、テストプログラムのデータの入出力を模擬
するだけで、入出力する内容は作業者が指示しなければ
ならなかった。またテスト中のある時点で画面に表示さ
れている内容をプリンタに印刷する方法は示されていな
かった。
【0010】また上記データの定義画面に見られる従来
技術では、プログラムを生成するためにデータの定義を
用いていたが、テストデータを作成することはできなか
った。
【0011】また上記ウィンドウマネージャに見られる
従来技術では、作業者との対話を有するプログラムに装
飾を施すことはできたが、テストのために作業者との対
話を記録・再生することはできなかった。
【0012】
【課題を解決するための手段】上記課題の解決のため本
発明の自動テスト方法では、データ型の定義と対応づけ
て、そのデータ型のデータのテストで用いるべき典型的
なテストデータを予め記憶しておく。プログラムのテス
トにおいては、プログラムの仕様書から、プログラムの
入力データのデータ型を取得し、これに対応するテスト
データを作成できる。
【0013】特に本発明の望ましい態様では、予め記憶
するテストデータに対して、そのテストデータの重要さ
を表すテストレベルを併せて記憶しておく。テストデー
タを作成するときはテストレベルに基づいて、重要なテ
ストデータを優先的に選択することで効率よくテストが
行なえる。あるいは作業者が、得たいテストデータの個
数を指示し、テストレベルに基づいて、重要なテストデ
ータから順に必要個数を自動的に作成することもでき
る。
【0014】さらに本発明の望ましい態様では、データ
が取り得る値の範囲に基づいてデータの名称を付与し、
予め記憶するテストデータに対して、そのテストデータ
の値がどの範囲に属するかに基づいて、対応するデータ
名を併せて記憶しておく。テストしたいプログラムのデ
ータ名が記憶しておいたものに合致するものがあれば、
それを優先させることで、さらにデータの値の範囲にも
配慮した効果的なテストデータを作成することができ
る。
【0015】また、上記従来技術によるウィンドウマネ
ージャの代わりに、テストしたいプログラムとウィンド
ウシステムとの情報交換を監視して、その中で作業者の
指示に起因するものをファイルに記録する。次に記録し
たファイルを再生することで、作業者との対話を含むプ
ログラムのテストを作業者の介在なくテストできる。
【0016】特に本発明の望ましい態様では、画面操作
の模擬入力を記述できる言語を用いて、テストしたいプ
ログラムに対する画面操作を記述し、これに基づいてテ
ストを行なえる。その際、その記述中に印刷命令を挿入
することで、テスト中の画面の様子をプリンタで紙に印
刷できる。さらに本発明の望ましい態様では、印刷命令
が複数回実行されたときは、前回印刷した内容と比較し
て、変化した部分だけを印刷できる。
【0017】また、予め設定したタイムアウト時間が経
過してもテスト実行が終わらない場合はテスト実行を中
断する。また、GUI部品に対応づけて、そのGUI部
品のテストで行うべき画面操作の模擬入力記述を予め記
憶しておく。次に特定のプログラムの画面構成を定義す
るGUI部品記述に基づいてそのプログラムの画面操作
の模擬入力記述を作成できる。
【0018】
【作用】本発明の自動テスト方法では、予め記憶してお
いたデータ型とテストデータとの対応に基づいて、プロ
グラムの仕様書からそのプログラムのテストで用いるテ
ストデータを自動的に作成できる。予め記憶しておくデ
ータ型とテストデータとの対応は特定のプログラムに依
存しないため、任意のプログラムのテストで共通利用で
きるのでプログラムの生産効率を向上できる。
【0019】特にテストレベルやデータが取り得る値の
範囲に基づいて、より重要なテストデータを優先させる
ことで、少ないテストデータで効率良くテストできる。
しかもテストデータの作成で必要となるデータ型に関す
る情報やプログラム仕様などはプログラムを自動生成す
る従来技術に利用することもできるので、必要な情報を
複数の作業で共有して有効利用でき、プログラムの生産
効率を高める上で特に効果的である。
【0020】また、プログラムは一般にある値の範囲の
入力データについて動作するように構成されるため、あ
るデータがとり得る値の範囲とデータ型との関係の情報
に基づいて、一つの値の範囲について少なくとも1個ず
つのテストデータを作成するようにすれば、プログラム
がどの領域でも正しく動作することを確認するうえで効
果的である。
【0021】また、作業者との対話を含むプログラムの
テストを作業者の介在なくテストできるため、例えばプ
ログラムの一部分に修正を加えたとき、その修正が画面
操作に影響を及ぼさない程度の修正であれば、再度テス
トするときは作業者の介在なく自動的に行なえる。しか
もテスト実行中の画面を印刷出力できるので、テスト実
行が終了した後でプログラムの動作を短時間で観察でき
る。
【0022】特に複数の印刷において、内容が変化した
部分だけを印刷することで、画面が変化した部分に注目
して観察に集中できる。また、タイムアウト時間を設定
しておけば、テストが完了していないプログラムが暴走
するなどして延々とテスト実行が続くことはない。従っ
てテスト実行全体を自動テストシステムに任せることが
できる。また、GUI部品と画面操作の模擬入力記述と
の対応から特定のプログラムの画面操作の模擬入力記述
を作成できるので、そのプログラムのテストにおいて作
業者が画面操作を行なう必要がなく、しかも画面操作の
模擬入力記述を作成する必要もない。
【0023】しかもここで必要となるGUI部品の画面
操作の模擬入力記述は特定のプログラムに依存しないの
で、予めさまざまなGUI部品とそれに対する画面操作
の模擬入力記述を用意しておけば任意のプログラムで共
通に利用できるため生産効率が高い。
【0024】
【実施例】以下、本発明の一実施例を図面を用いて詳細
に説明する。図1と図2は、本発明に係る自動テストシ
ステムの第一の実施例の処理手順を示すフローチャート
であり、図3は本発明に係る自動テストシステムの構成
を示すブロック図である。
【0025】図3において、1はプログラムに基づく逐
次処理機能を有するCPUであり、図1と図2の手順の
実行を制御する。2はキーボードとマウスとモニタテレ
ビ画面を有する対話端末であり、本発明に係る自動テス
トシステムを用いる作業者が指示を入力したり結果を該
作業者に表示するために用いる。3はプログラムないし
データを格納するメモリである。4は仕様書などを紙に
印刷するためのプリンタである。10はデータの名称と
データ型定義を保持するデータ項目辞書である。11は
データ型対応にそのデータに対する典型的なテストデー
タを保持する標準テストデータである。13は再利用を
目的として特定のアプリケーションプログラムに依存し
ないプログラムを保持するプログラム部品である。14
はプログラムの名称や入出力データやプログラムの機能
に関する情報を保持するプログラム仕様である。806
は対話端末とテスト対象プログラムとの間の情報交換の
様子を記録するイベント記録である。
【0026】図4は図3におけるデータ項目辞書10の
例を示している。データ項目辞書はプログラムでよく用
いるデータを予め定義しておくものである。あるプログ
ラムを開発するときは、このデータ項目辞書の中から利
用できるデータをさがして、これをプログラムに組み込
む。このようにすることでプログラム中で使用するデー
タの名称や使い方が統一されるため、プログラムの保守
作業がやり易くなる。さらにあるデータに関してよく行
なわれる処理もデータ項目辞書に格納することができ
て、プログラムの作成においてこの処理を複写して利用
すれば、同じ処理を作成する手間が省ける。
【0027】図4において、各行はあるデータ1個分の
情報を保持している。401はデータ型名を表してい
る。データ型はデータの大きさや種類などを規定し、プ
ログラムでデータを扱うときの処理のしかたに影響を及
ぼすものである。通常はプログラミング言語の文法にデ
ータ型に関する規定がある。402はデータの名称であ
る。データ型が同じでもデータの使われ方によってデー
タの名称を変えるようにすると便利である。403はデ
ータ型に与えられた意味の抽象さに応じてデータ型が階
層構造を形成する時、当該データの上位概念に対応する
データ型を表す。404は当該データが取り得る値の範
囲に制約があるときこれを表す。値の範囲は当該データ
に与えられた意味を反映するように設定される。
【0028】例えば422はデータ ″rpDouble″ を表
しており、これは正の実数値データを意図している。従
って範囲制約404には「正又は0」と指定する。40
5は404に指定した範囲が包含関係に基づく階層構造
を形成する時、上位の、即ちより広い範囲を有するデー
タの名称を指定する。406は401に指定したデータ
型の区分を表す。区分が1のときはプログラミング言語
で定められたデータ型を表し、2のときはプログラミン
グ言語の文法規則に従って新たに定義したデータ型を表
す。例えばファイルにアクセスするときに用いるデータ
レコードのデータ型は区分2にあたる。407はデータ
をファイルに格納するときの大きさをバイト単位で表
す。
【0029】408はプログラム中で当該データを使用
するとき、最初に代入する前に当該データが保持してい
る値である初期値を表す。409はプログラミング言語
の文法規則に則って当該データを記述したものである。
410は当該データをファイルないしは対話端末2から
入力するときに用いることのできる入力処理プログラム
を表す。同様に411は当該データをファイルないしは
対話端末2に出力するときに用いることのできる出力処
理プログラムを表し、412は当該データが範囲制約4
04に指定した範囲にあるか否かをチェックするときに
用いることのできるチェック処理プログラムを表す。な
お、408〜412の指定においては、図5の説明で詳
しく述べるテストデータ505の指定と同様に指定でき
る。408〜412の各カラムは固定の大きさにした方
が検索処理が高速に実現できるため有利であるが、その
場合カラムに格納したいデータが大き過ぎるときはカラ
ム内に直接記述できないことがある。このときは別のフ
ァイルに記述し、このカラム内にはファイル名を格納す
るようにする。
【0030】図5は図3における標準テストデータ11
の例を示している。図5において、401はデータ型
名、402はデータ名を指定する。505はデータ型名
401とデータ名402で特定されるデータに対するテ
ストデータである。このテストデータはあるプログラム
の入力データが401ないし402による指定に合致し
たとき、該プログラムに入力として与えてテストを行な
うためのものである。503は当該テストデータのテス
トレベルである。テストレベルは当該テストデータによ
るテストの重要性を示し、重要なテストデータほど小さ
な数を指定する。504は当該テストデータの生成フラ
グである。生成フラグの働きは後述する。
【0031】ここではテストレベル503のカラムは整
数で記述するとしているが、図1のステップ107でテ
ストデータの振り分けができるなら何でも良い。例えば
実数でもよい。テストレベルは重要なテストデータほど
小さな数を指定するようにする。このようにすればステ
ップ107で重要なテストデータほど選ばれ易くなる。
テストデータ505の値の最初の文字はテストデータを
保持する形態を表している。テストデータ505の値の
最初の文字が ″=″ のときはテストデータを直接この
カラムに記述していることを示す。テストデータ521
では最初の文字が ″_″ であるが、この場合はテスト
データはファイルに格納してあって、格納場所は本テス
トシステムで規定した特定の場所に ″complex.g01″
という名称で格納していることを示している。
【0032】生成フラグ504はテストデータの形式を
示しており、フラグが0のときはテストデータの値その
ものであることを示す。しかし例えば百万バイトの大き
なデータを与えたときの動作をテストしたい場合など、
テストデータのサイズが特に大きい場合はテストデータ
を保持すると記憶装置の消費が著しい。この場合はテス
トデータを作成するプログラムを格納しておき、テスト
時以外はテストデータを保持しないようにするとよい。
テスト時には該プログラムを実行してテストデータを作
成すればよい。このようにテストデータを直接格納する
代わりにテストデータを生成するプログラムを格納する
ときは、生成フラグ504を1又は2にする。
【0033】生成フラグ504が1のときは与えたプロ
グラムは整数1個を引数にとることができ、引数に与え
た数によりさまざまなテストデータを生成できるように
テストプログラムを構成してあるとする。さらに引数に
0が与えられたときには生成できるテストデータの個数
を返すようにテストプログラムを構成してあるとする。
従って先ず引数に0を与えてテストプログラムを実行す
ることで、生成できるテストデータの個数を得、例えば
5であったなら、次に1〜5の範囲で引数を与えて実行
することで最大5個のテストデータが生成できる。引数
をとらない場合は1個だけ生成する。引数の個数はプロ
グラムを調べることで判別できる。
【0034】生成フラグ504が2のときは任意の引数
をとることができる。この場合はどのような引数をとる
かが機械的に判別できるようにテストプログラムを構成
する。あるいはテストプログラムに対応させて図6に示
すようなプログラム仕様書を格納しておいてもよい。プ
ログラム仕様書を調べればどのような引数をとるかを機
械的に判別できる。なお、生成フラグ504の指定とテ
ストデータの値の最初の文字の指定は独立に指定でき
て、例えば生成フラグ504に0を指定し、テストデー
タ505の最初の文字を ″_″ とすればテストデータ
そのものをファイルに保持することもできる。
【0035】図6は図3におけるプログラム仕様14に
保持するプログラム仕様書の一例を示している。図6に
おいて、601はプログラムの名称であり、母国語を用
いて例えば日本語で「画面表示」と記載する。602は
プログラムを機械的に処理するときに用いる名称であ
り、プログラミング言語で規定された規則に従って例え
ば英数字だけを用いて記載する。603と604は当該
プログラムに与える引数のデータ型名とデータ名を記載
する。603は一番目の引数であり、604は二番目の
引数である。この例では三番目以降の引数はない。61
0は当該プログラムのリターン値のデータ型を記載す
る。この例ではリターン値はなく、このプログラムは結
果を返さないことが分かる。611は当該プログラムの
処理機能を母国語を用いて記載する。621と622は
当該プログラムのテストや当該プログラムを呼び出すプ
ログラムのテストにおいて、テスト方法を指示するもの
である。621と622の使用方法については本実施例
の最後で説明する。
【0036】次に、図1から図8を用いて第1の実施例
を詳細に説明する。第1の実施例ではプログラムの仕様
に基づいてテストデータを自動的に作成する。図1にお
いて、先ず、どれ程詳細にテストするかを指定するため
のテストレベルを作業者の指示に従って記憶する(10
1)。テストレベルが大きいほど作成されるテストデー
タの数が増え、より詳細なテストが行なえる。逆に簡単
に済ませたい時はテストレベルに小さな数を指定するこ
とで、重要なテストデータだけを選択的に得ることがで
きる。次にテストの対象となるプログラム仕様を記憶す
る(102)。このプログラム名を出力する(10
3)。出力はただちに対話端末2に表示することもでき
るし、メモリに蓄積しておいて図1と図2の処理手順が
終了した後にまとめて、テストの内容を指示するテスト
仕様書に所定の書式で対話端末2に表示したりプリンタ
4で印刷したりすることもできる。
【0037】次にプログラム仕様書からテスト対象のプ
ログラムに与える引数に関する情報を引数1個分取得す
る(104)。図6の例によれば ″double rpDouble″
という情報が得られる。次に標準テストデータ11な
いしプログラム部品13を用いて、引数の情報に対応す
るテストデータを作成する(106)。ステップ106
の処理は図2を用いて後に詳細に説明する。次にステッ
プ101で記憶したテストレベルをここで得られたテス
トデータのテストレベルとそれぞれ比較し、これらのテ
ストレベルがT以下のものだけを取り出す(107)。
得られたテストデータをステップ104で得られた引数
の情報と共に出力する(108)。同様にして図6の6
04から得られる引数の情報についてもテストデータを
作成し、すべての引数を処理すると終了する。
【0038】次に図2を用いてステップ106のテスト
データを作成する処理の処理手順を説明する。図2にお
いて、先ず、標準テストデータ11を検索してデータ名
とデータ型の両方が一致するテストデータがないか調べ
る(201)。あればフラグFを1とし(202)、な
ければフラグFを0とする(203)。図6の例によれ
ばステップ106は最初に ″double rpDouble″ とい
う情報について実行するので、図5のデータ型名401
とデータ名402のカラムの値を検索することでテスト
データ511が該当する。該当するテストデータがあっ
たのでここではフラグFを1に設定する。
【0039】次にフラグFを調べて(204)、データ
名とデータ型が一致するテストデータを取得(205)
ないしはデータ型が一致するテストデータを取得する
(206)。この場合テストデータ511が該当し、テ
ストレベルが200、生成フラグが0、テストデータが
″1.0L″ であることが分かる。ここでは該当するもの
が1個だけであるが、複数個あってもよい。取得したテ
ストレベルは変数TDに代入しておく(207)。次に
取得したテストデータの最初の文字に従ってテストデー
タの内容を取り出す(208)。ここでは最初の文字が
″=″ なので最初の文字を除いた残りの文字がテスト
データの内容である。生成フラグの値によっては、テス
トデータではなくテストデータを生成するプログラムで
あることもあるが、ステップ208の処理には関係がな
い。次に生成フラグに従って処理が分かれる(209,
210)。ここでは生成フラグは0なので既に得られた
テストデータの内容を、テストレベルと対応づけてその
まま出力する(217)。さらにデータ名とデータ型が
一致するテストデータを取得(205)するが、他に該
当しないので処理を終了する。
【0040】図6の第2引数604の例では ″complex
aComplex″ というデータで検索するので、ステップ2
05において図5の521と522が該当する。521
においてはテストデータ505の最初の文字が ″_″
であるからステップ208においてファイル ″comple
x.g01″ の内容を取得し、これをテストデータの内容と
する。さらに生成フラグが2であるから、これはテスト
データそのものではなく、テストデータを生成するプロ
グラムである。従ってステップ211で生成プログラム
に入力するデータを作成する。
【0041】入力データの作成は本実施例と同様にして
行なう。本実施例は与えられたプログラムに対して、テ
ストに使用すべきテストデータを作成するものである
が、テストデータ生成プログラムの入力データを作成す
る場合にも利用できる。図7はプログラム部品13に格
納された ″complex.g01″ ファイルの例である。プロ
グラム仕様14は図6のように所定のプログラム仕様書
の様式で保持することもできるが、図7はプログラミン
グ言語の文法規則に従いながらプログラム仕様として必
要な情報をおり混ぜたものである。
【0042】図7において、701は母国語によるプロ
グラムの名称であり601に対応する。702は母国語
によるプログラムの機能の説明であり611に対応す
る。703は引数の名称(この場合aDouble)、入出力
区分(この場合i、即ち入力)、引数の意味と役割(この
場合実数値)を表しており、712にはこの引数に対応
する記述をプログラミング言語の文法に従って記述して
ある。これら703と712の情報は603や604に
対応する。704と710はリターン値を表しており、
610に対応する。705はプログラムの作成日付と作
成者を表しており、図6には対応するものがない。なぜ
なら、プログラム仕様の作成者とプログラムの作成者と
は異なる場合があるためである。711はプログラムの
記号名称であり、602に対応する。713はプログラ
ムの本体部分である。
【0043】さて、図5の521に図2の処理手順を適
用した場合、図7の703と712の情報に従って ″d
ouble aDouble″ に対応するテストデータを図5から検
索する。この場合510と513が該当するので、ステ
ップ211ではこれらが得られる。次にプログラム本体
713にこれらのテストデータを入力してそれぞれ実行
することで、521に対するテストデータが得られる。
ここでは、プログラム713はC言語で記述してあり、
図4の1030の定義と合わせて解釈すれば、このプロ
グラムは入力された実数値を複素数に変換している。次
に、得られた各テストデータのテストレベルを計算する
(213)。テストレベルは生成プログラムに与えたテ
ストデータのテストレベルに、生成プログラムのテスト
レベルを加算して求める。この場合、生成プログラムに
与えたテストデータは510と513であって、それら
のテストレベルはそれぞれ100と300である。52
1によれば、生成プログラムのテストレベルは50であ
り、これは変数TDに代入してある。従って生成プログ
ラムに510と513を入力して実行することで得られ
たテストデータのテストレベルはそれぞれ150と35
0になる。
【0044】図2において、ステップ205ないしステ
ップ206で取得したテストデータの生成フラグが1で
あったときはステップ214とステップ215を実行す
る。ステップ208で取得したテストデータ生成プログ
ラムに先ず引数に0を入力して実行して生成できるテス
トデータの個数を得、次に引数に生成するテストデータ
の番号を入力してテストデータを生成する(214)。
ここで生成したテストデータのテストレベルはすべてT
Dに設定する(215)。
【0045】以上のようにして、図6に示したプログラ
ム仕様書に対するテストデータを作成できる。図8は図
6に対して本実施例を適用し、ステップ101において
作業者がテストレベルとして500を指定した場合に作
成するテストデータの例を示している。図8はテストの
内容を指示する仕様書で、プログラムチェックリストと
呼ぶ。図8において1801はこの仕様書、即ちプログ
ラムチェックリストの作成者を表している。これはテス
トデータ生成処理を指示した作業者をオペレーティング
システムに問い合わせることで取得できる。1802は
この仕様書を作成した日付を表す。これはテストデータ
生成処理を指示した日時をシステム内蔵の時計から取得
できる。1803はテスト対象となるプログラムの記号
名称を表す。これはテストデータ生成プログラムの入力
として作業者が指示したプログラム仕様書から得られる
(この場合は602による)。1804は同様にテスト
対象となるプログラムの母国語による名称を表す。同様
にプログラム仕様書から取得できる。
【0046】1805は第1引数に対するテストデータ
である。1806〜1808は第2引数に対するテスト
データである。1806と1807は521に510と
513を入力に与えて生成できる。1808は522か
ら直接得られる。これらのテストレベルはそれぞれ、2
00、150、350、100であり、最初に作業者が
テストレベルとして指示した500よりも小さい。従っ
て図8の仕様書の生成においてはすべてのテストデータ
を用いる。1809はテストデータの組合せを表し、例
えばチェックID030(1810)によれば、180
5と1808のテストデータを組み合わせてテストする
ことが分かる。本実施例によるテストデータの生成では
どの組合せがよいかは分からないので、可能なすべての
組合せを出力している。ただし一度に一つの引数に2個
以上のテストデータを与えることはできないため、例え
ば1806と1807の組合せは出力していない。
【0047】本実施例によれば、特定のプログラムに依
存しない各種の情報に基づき、プログラム仕様とテスト
レベルを入力するだけでテストデータを自動的に作成す
ることができる。データ項目辞書10、標準テストデー
タ11、プログラム部品13は特定のプログラムに依存
しない情報であり、これらは予め作成しておく。個々の
プログラム開発ではこれらを新規に作ることはせず、プ
ログラム仕様だけを作成するのが一般的である。これに
より、プログラム仕様を作成する労力だけでテストデー
タが得られるのでテストに必要な工数を削減できる。
【0048】ただし、例えば特定のプログラム開発で必
要な特殊なテストデータを新規に追加することもある。
この場合はテストレベルを大きめの数値に設定すること
で、他のプログラム開発で無駄なテストをする必要がな
くなる。このようにテストレベルの指示によって生成す
るテストデータの個数を制限できるので、高い品質が要
求される場合には多くのテストデータでテストを行な
い、簡略化してテスト工数を削減したい場合にはテスト
レベルを用いてテストデータの個数を制限すれば良い。
しかもこのとき無作為に選ばれるのではなく、標準テス
トデータ11で予め個々のテストデータに与えられたテ
ストレベルに基づいて重要なテストデータだけを取捨選
択できるため効率良くテストが行なえる。
【0049】本実施例ではテストレベルを作業者が指示
するとしたが、テストデータの個数を作業者が指示する
こともできる。この場合は図1のステップ107におい
て、それまでに得られたテストデータをテストレベルの
順に並び替えた後、テストレベルの値が小さいものから
必要な個数分を選択し、これを出力すればよい。この場
合でも無作為に選ばれるのではなく、テストレベルに基
づいて重要なテストデータだけを選ぶことができる。な
お、テストレベルに基づくテストデータの重要さの判別
は有効な方法ではあるが、例えば常にすべてのテストデ
ータを用いる場合ではテストレベルに関するデータや処
理を割愛できることはいうまでもない。
【0050】本実施例ではテストデータの生成について
述べたが、プログラムを自動生成する従来技術を適用す
ればデータ項目辞書10、プログラム部品13及びプロ
グラム仕様書14からプログラムを自動生成することが
できる。従って本実施例で用いたデータ項目辞書10、
プログラム部品13及びプログラム仕様書14はテスト
データ生成だけのために特別に用意するものではない。
プログラムの開発においてはさまざまな作業が互いに関
連しあっており、このように必要な情報を複数の作業で
共有して有効利用できることは、プログラムの生産効率
を高める上で特に重要である。
【0051】図5において、データ型名401とテスト
データ505のカラムだけでも本実施例は実施できる。
データ名402があれば、データ型名によるテストデー
タの検索よりもさらに状況に応じて適切なテストデータ
を作成できる。その効果については次に詳しく述べる。
テストレベル503があれば、前述のように重要なテス
トデータを優先的に選択することで、少ないテストデー
タで効率よくテストできる。生成フラグ504があれ
ば、テストデータの値を直接保持するだけでなく、プロ
グラムを実行して必要なときに動的にテストデータを作
成することが可能となる。これによりテストデータを記
憶するための記憶領域を節約できる。また、多数のテス
トデータやサイズが大きなテストデータが正しいことを
人手で確認するとき、テストデータそのものを調べるよ
り、それを生成するプログラムが正しいテストデータを
作成することを調べた方が簡単な場合もある。このよう
にテストデータの正しさを確認するときにも生成フラグ
504が役に立つこともある。
【0052】次にデータ名402の効果について説明す
る。計算機プログラムにおいて、データ型はデータが取
り得る値の範囲を束縛しており、例えば整数型のデータ
が1.2などの実数値をとることはない。実際のプログラ
ムにおいては、データを用いる場面や役割に応じて、デ
ータ型で規定された範囲よりさらに狭い範囲に限定して
プログラムを動作させることがよくある。例えば整数型
のデータは正の整数、0、負の整数のいずれの値もとる
ことがあるが、あるデータは常に正の整数又は0であっ
て、けっして負の整数にはならないことがある。このよ
うな状況を明らかにするため、そのことが分かるような
データ名を付与することがプログラム作成の一つの技術
となっている。
【0053】図5の511では ″rpDouble″ に対する
テストデータを与えている。このデータは図4の422
によれば正又は0の値の範囲が指定されている。プログ
ラムの入力データが単に実数値をとるというだけでな
く、正又は0の値で動作させるように設計されているこ
とが分かるのならば、テストデータとしては正又は0の
値を選択すべきである。前述のようにデータの名称には
データの場面や役割が分かるものを与えることが多いの
で、データの型だけでなくデータの名称を用いることで
このような状況も配慮してテストデータの作成と選択を
行うことができる。図2のフラグFはデータ名とデータ
型名がともに一致するものがあれば、そのようなテスト
データを優先させる働きがある。
【0054】図4によれば、データが取り得る値の範囲
が包含関係に基づく階層構造を形成するとき、その関係
を上位範囲405が保持している。もし、プログラムの
入力データが任意の実数値を取る場合、それには「正又
は0」の範囲や「負」の範囲が含まれることが420と
422と423から分かる。プログラムの誤りの一般的
な性質として、ある範囲に含まれるある1個のテストデ
ータについて正しく動作すれば、同じ範囲に含まれる他
のデータに対しても正しく動作することが多いことが分
かっている。従って任意の実数値で動作するプログラム
のテストにおいては、「正又は0」の範囲から1個のテ
ストデータを選び、「負」の範囲からも1個のテストデ
ータを選んだ方が、「正又は0」の範囲から2個のテス
トデータを選ぶよりも効果的である。
【0055】あるデータ型に対するテストデータを作成
するとき、図4の上位範囲405を用いて、テストした
いデータの範囲よりもさらに狭い範囲のデータのそれぞ
れから少なくとも1個ずつのテストデータを選択するよ
うにすれば、プログラムがどの領域でも正しく動作する
ことを確認するうえで効果的である。
【0056】図6の621と622は、プログラム仕様
の中で当該プログラムのテストのための指示を指定して
いる。621は第一引数に2.0Lを入力し、第二引数に
{3.0L,4.0L}を入力してテストすることを指定してい
る。ここで{3.0L,4.0L}という入力データは複素数デー
タに対して、通常の数学の表記で3+4iという値を与える
ことを、ここで用いているC言語というプログラミング
言語の文法に従って表現したものである。最初のcase
1:は1番目のテストデータの指示であることを表してい
る。同様に「case 2:...」という指示で、...の部分に
別のテストデータを指定すれば2番目のテストデータを
指示することもできる。
【0057】622は本実施例で作成したテストデータ
をテストでどのように使用するかを指示している。記
号:で区切られており、最初の部分は対象となる引数を
特定し、次の部分はテストデータの使用方法を指定し、
その他の部分は先に示されたテストデータの使用方法を
補足している。この例によれば、この指示はaComplexと
いう引数、すなわち第二引数に適用すること、本実施例
で作成したテストデータからさらに他のテストデータを
作成すること、その作成ではテストデータの値を2倍し
て算出することが指示されている。テストデータの使用
方法に「gen also」という指示があるときは、本実施例
で作成したテストデータもテストに用いるし、さらにそ
のテストデータから別のテストデータを作成してそれも
テストに用いる。テストデータの作成においては、本実
施例で作成したテストデータをcとしてc*2と指示さ
れている。(complex c)の部分は、本実施例で作成した
テストデータをcとすることを表しており、残りの部分
が計算式である。
【0058】本実施例のテストデータ自動作成方法によ
れば、特定のプログラムによらないデータ項目辞書1
0、標準テストデータ11、プログラム部品13によっ
てテストデータを作成できる。しかしここで得られるテ
ストデータはプログラム仕様14の引数に関するデータ
型名とデータ名の情報から類推できる範囲でしかない。
しかし621や622のように、プログラム仕様の中に
テストのための指示を与えることで、テストしたいプロ
グラム特有の性質を反映させて、効果的なテストができ
る。
【0059】次に、図3及び図9から図17を用いて本
発明の第2の実施例について説明する。本実施例は、作
業者との対話処理を含むプログラムのテストを作業者の
介在なく行えるようにすることで、テストに要する手間
を軽減するものである。図3において、本実施例ではデ
ータ項目辞書10、標準テストデータ11、プログラム
部品13、プログラム仕様14は使用しない。本実施例
は、対話端末2が図形なども表示できるグラフィックス
端末である場合に好適である。しかし文字だけを表示で
きるキャラクタ端末の場合にも適用できる。本実施例で
は対話端末2がグラフィックス端末であった場合につい
て説明する。
【0060】図9は従来技術による、作業者との対話を
含むプログラムの構成を示すブロック図である。図9に
おいて、801は作業者との対話を含むアプリケーショ
ンプログラムで、本実施例によるテストの対象となるプ
ログラムである。802は作業者との対話処理を行うた
めのウィンドウシステムである。ウィンドウシステム8
02は、作業者との対話を含む任意のプログラムで共通
利用できるように設計されている。803はディスプレ
イ画面とキーボードとマウスからなるグラフィックス端
末である。
【0061】ウィンドウシステム802はアプリケーシ
ョンプログラム801からの指示に従って画面表示の内
容を決定し、これをグラフィックス端末803に命令す
る。グラフィックス端末803はウィンドウシステム8
02からの指示に従って文字や図形を画面に表示し、ま
たキーボードやマウスにより作業者からの指示を検出し
てウィンドウシステム802に伝達する。ウィンドウシ
ステム802は画面表示の内容と、グラフィックス端末
803が検出した作業者からの指示とを照合し、作業者
から指示されたデータ入力を解析して結果をアプリケー
ションプログラム801に伝達する。アプリケーション
プログラム801とウィンドウシステム802との間
は、オペレーティングシステムが提供する通信機能など
を介して互いに情報交換を行っている。
【0062】ウィンドウシステム802はアプリケーシ
ョンプログラム801が複数あった場合も、それぞれに
対応する画面表示の内容を保持し、それをグラフィック
ス端末803上に適当に配置する機能を有する。画面上
での配置はアプリケーションプログラム801から指示
することもできるが、他のプログラムで制御することも
できる。図10は従来技術による、1個又は複数の画面
表示の配置や大きさなどを制御するプログラムを介在し
てアプリケーションプログラム801を動作させる場合
のプログラムの構成を示すブロック図である。
【0063】図10において、804はアプリケーショ
ンプログラム801とウィンドウシステム802との間
に位置し、画面表示の配置や大きさなどを制御するウィ
ンドウマネージャである。ウィンドウマネージャ804
は、図9においてアプリケーションプログラム801と
ウィンドウシステム802が行う情報交換に対して、図
10のように間に入り、アプリケーションプログラム8
01が送った情報を変更してウィンドウシステム802
に送ったり、逆にウィンドウシステム802が送った情
報を変更してアプリケーションプログラム801に送っ
たりすることができる。このようにしてウィンドウマネ
ージャ804はアプリケーションプログラム801の画
面表示の様子を変更したり、作業者の指示に従って画面
表示の位置や大きさを変更したりすることができる。
【0064】ウィンドウシステム802はこのようなウ
ィンドウマネージャ804を受け入れるための機能を有
している。図9のような構成で動作しているとき、ウィ
ンドウマネージャ804が実行されると、ウィンドウマ
ネージャ804はアプリケーションプログラム801と
ウィンドウシステム802との情報交換に介在すること
をウィンドウシステム802に要求する。ウィンドウシ
ステム802はこの要求を受け入れ、情報交換の経路を
変更して図9の構成から図10の構成に変更する。この
ようにウィンドウシステム802が情報交換の経路を変
更することをリダイレクトと呼ぶ。
【0065】本実施例は従来のウィンドウシステム80
2が有しているこのような機能を、作業者との対話処理
を含むプログラムのテストに利用するものである。図1
1は本発明に係る第2の実施例のブロック構成図であ
る。図11において、805は作業者との対話処理を含
むプログラムのテストを支援するGUIテスタである。
806はアプリケーション801とウィンドウシステム
802との間の情報交換を記録するイベント記録であ
る。GUIテスタ805は図10と同様に、アプリケー
ションプログラム801とウィンドウシステム802と
の間に入り、これらの間の情報交換を監視し、イベント
記録806に記録したり、逆にイベント記録806に記
録された内容に従ってアプリケーションプログラム80
1やウィンドウシステム802に情報を送ったりする。
【0066】図12と図13とを用いて第2の実施例の
処理手順を詳細に説明する。図12はアプリケーション
プログラム801とウィンドウシステム802との間の
情報交換の様子をイベント記録806に記録する、GU
Iテスタ805のイベント記録処理の処理手順を示すフ
ローチャートである。図12において、先ずウィンドウ
システム802にリダイレクト要求を出す(120
1)。これにより、それまで図9のようなプログラム構
成であったのに対し、ウィンドウシステム802はそれ
を図11のように変更する。次にアプリケーションプロ
グラム801の状態を記録する(1202)。記録すべ
き状態には、例えばアプリケーションプログラム801
に関する画面表示の、グラフィックス端末803上での
位置座標、画面表示の大きさがある。作業者による指示
は、マウスによる画面上での位置座標の指定に依存して
意味が異なり、そのためアプリケーションプログラム8
01の動作も位置座標によって変化する。従ってアプリ
ケーションプログラム801に関する画面表示の位置座
標を記録しておき、テスト時に動作を再現するときは同
じ位置座標に配置しなければならない。従ってアプリケ
ーションプログラムの最初の状態を記録しておかなけれ
ばならない。
【0067】次に記録開始時刻を記録する(120
3)。前述の位置座標の影響と同様に、作業者が指示を
出した時刻と画面表示を変更した時刻などの時間間隔が
動作に影響することがある。このため記録を開始した時
刻を記録しておく。次にアプリケーションプログラム8
01又はウィンドウシステム802からなんらかの情報
が送られてくるのを待つ(1204)。このように他か
ら情報が送られて来たり、指定したある時刻に到達した
りすることをイベントと呼ぶ。何らかのイベントが発生
したら、その内容を取得する(1205)。もしそれが
記録中断を指示するものであれば、記録を中断する事
と、その時刻とを記録し(1207)、処理を終了す
る。
【0068】またアプリケーションプログラム801の
処理終了を表すイベントか又はグラフィック端末803
に対する作業者の操作を表すイベントであれば、画面の
状態を記録し(1210)、発生したイベントと発生時
刻をイベント記録806に記録する(1211)。画面
の状態は、図13に示すイベント再生処理で動作を再現
したときに画面の表示内容が同じであるかを確認するた
めに記録する。従ってテスト対象となっているアプリケ
ーションプログラム801の動作に関与する部分だけに
ついて、画面の表示の様子を記録する。
【0069】次に、ステップ1205で取得したイベン
トがアプリケーションプログラム801から送られたも
のであればそれをウィンドウシステム802へ送り、ま
た逆にウィンドウシステム802から送られたイベント
であればアプリケーションプログラム801へ送る(1
212)。これにより、アプリケーションプログラム8
01とウィンドウシステム802との間の情報交換は図
9の構成のときと同様に行われるため、図9の構成のと
きと同様に動作する。従って図9の構成で動作している
アプリケーションプログラム801の動作の様子をイベ
ント記録806に記録することができる。
【0070】次に図13の処理手順を詳細に説明する。
図13はイベント記録806に記録された内容に従っ
て、作業者によるグラフィックス端末803への指示を
模擬する、GUIテスタ805のイベント再生処理の処
理手順を示すフローチャートである。この処理により、
作業者の介在なく、あたかも作業者がグラフィックス端
末803とウィンドウシステム802を通じてアプリケ
ーションプログラム801に指示をしているような状況
を作り、このときアプリケーションプログラム801が
どのように動作するかをテストできる。
【0071】図13において、先ずタイムアウト時間を
記憶する。ここでタイムアウト時間とは、イベント再生
処理の途中であっても強制的に処理を終了させる時間で
ある。テストにおいては、テスト対象のプログラムは必
ずしも正しく動作するとは限らないので、永久に終了し
ない状態に陥る場合がある。このためイベント再生処理
の開始時刻から計って、タイムアウト時間だけ経過して
もまだ正常に終了しないときは強制的に処理を終了す
る。タイムアウト時間は、テスト対象のプログラムが正
しく動作したときに要する時間より少し長めの時間を作
業者が設定する。
【0072】次にステップ1201と同様にウィンドウ
システム802にリダイレクトを要求する(130
1)。次にステップ1202で記録したアプリケーショ
ンプログラム801の状態を取得する(1302)。次
にその状態をアプリケーションプログラム801に設定
し(1303)、図12のイベント記録処理を実行する
前のアプリケーションプログラム801の状態を再現す
る。
【0073】次に再生開始時刻を記憶する(130
4)。図12のイベント記録処理では、記録開始時刻と
イベント発生時刻を記録したので、その時間間隔を再生
開始時刻に加えれば各イベントが発生すべき時刻が算出
できる。次にイベント記録806から次に起こるべきイ
ベントを取得する(1305)。イベント記録処理にお
いて、イベントは発生した順に記録したので、このステ
ップでも単に同じ順に取り出すだけでよい。同時に、前
述のようにして、イベントを再生すべき時刻も算出して
おく。
【0074】次にタイムアウト時刻又はステップ130
5で取得したイベントを再生すべき時刻に達するか、又
は新しいイベントが発生するのを待つ(1306)。タ
イムアウト時刻はステップ1304で記憶した再生開始
時刻にタイムアウト時間を加えたものである。新しいイ
ベントとは、アプリケーションプログラム801又はウ
ィンドウシステム802から情報が送られてきたことを
意味する。
【0075】タイムアウト時刻に達したら、タイムアウ
ト時刻に達したために強制的に終了するというメッセー
ジをグラフィックス端末803に表示し(1308)、
処理を終了する。アプリケーションプログラム801又
はウィンドウシステム802から送られてきた新しいイ
ベントであれば、ステップ1212と同様に、そのイベ
ントが送られてきた方とは別の方にそのイベントを送る
(1310)。イベントを再生すべき時刻に達したら、
その時点での画面の状態を記録する(1311)。記録
した画面表示の様子はステップ1210で記録したもの
と比較する事で、イベント記録処理のときと同じように
動作しているか確認できる。
【0076】次にステップ1305でイベント記録から
取得した内容に従って、イベント記録処理のときの作業
者の指示を模擬する(1312)。実際に作業者がグラ
フィックス端末を用いて指示したときは、その内容がウ
ィンドウシステム802からアプリケーションプログラ
ム801に送られる。模擬においては、ウィンドウシス
テム802から何も送られてこなくても、イベント記録
処理のときに記録したイベントをアプリケーションプロ
グラム801に送ることで模擬できる。次にイベントが
アプリケーション終了イベントであったときは処理を終
了する(1313)。そうでなければイベント記録80
6から次のイベントを取りだし、以後繰り返す。
【0077】本実施例によれば、ウィンドウシステム8
02の制御の元で動作するアプリケーションプログラム
801のテストを作業者の介在なくテストすることが可
能となる。そのために、イベント記録処理では作業者が
アプリケーションプログラム801に対して行なった操
作をイベント記録806に記録した。イベント再生処理
では、イベント記録806に記録した内容に従って、あ
たかも作業者がアプリケーションプログラム801に対
して操作を行なっているように模擬する。これによって
一度行なったプログラムのテストについて、次回からは
作業者の介在なく自動的に行なうことができる。
【0078】例えばプログラムの一部分に修正を加えた
とき、その修正の影響でプログラムが正しく動作しなく
なったかも知れない。このためテストをやり直さなけれ
ばならない。しかしその修正が画面操作に影響を及ぼさ
ない程度の修正であれば、本実施例を適用することで自
動的にテストが行なえる。テストを実行したとき、その
結果が期待される動作であるか確認する必要がある。そ
のためには、ステップ1210で記録した画面の状態と
ステップ1311で記録した画面の状態とを比較すれば
よい。
【0079】ステップ1210ないしステップ1311
はメモリ3やファイルに格納することもできるし、プリ
ンタ4で紙に印刷することもできる。メモリ3やファイ
ルに格納したときは、テスト結果の確認においては格納
した内容をグラフィックス端末803に表示して確認で
きる。あるいはそれぞれの画面状態を自動的に比較し、
違う部分だけを表示することもできる。プリンタ4で紙
に印刷したときは、テスト結果の確認では対応する印刷
出力を見比べることができる。なお、どの画面を比較す
るかについては、画面の状態を記録した時刻とステップ
1203ないしステップ1304で記憶した処理開始時
刻との差の時間の対応を調べることで機械的に判別する
ことができる。
【0080】ステップ1210ないしステップ1311
において、そのステップを最初に実行するときは必要な
部分すべてを記録するが、2回目以降では前回の画面の
状態と異なっている部分だけを記録することもできる。
このようにすることで、記録のために必要な記憶領域や
印刷のために必要な紙を節約でき、また作業者が動作の
確認をするときも画面が変化した部分だけに注目できる
ため確認が容易になる場合がある。
【0081】本実施例では従来のシステム構成におけ
る、図10のウィンドウマネージャ804の部分を図1
1のGUIテスタ804に置き換えて実施する例を説明
した。しかしウィンドウマネージャ804とGUIテス
タ805の両方の機能を兼ね備えた、新規なウィンドウ
マネージャを構成し、これをもって図10のウィンドウ
マネージャ804に置き換えることによっても本実施例
を同様に適用できる。イベント記録806は作業者が作
成することもできる。この場合は図12のイベント記録
処理によるイベントの記録は不要である。作業者が作成
したイベント記録806を用いて図13のイベント再生
処理を行なえば良い。これにより、イベント記録処理で
作業者が操作を行なう必要がなくなるが、その反面、イ
ベント記録806を作成しなければならなくなる。
【0082】次に図3と図11と図14〜図18を用い
て本発明の第3の実施例について説明する。本実施例
は、作業者との対話処理を含むプログラムのテストにお
いて、作業者の介在が必要な部分に対して画面操作の模
擬入力を記述する言語を用いて記述しておくことで自動
的にテストを行ない、テストに要する手間を軽減するも
のである。
【0083】図3において、本実施例ではデータ項目辞
書10、標準テストデータ11、プログラム部品13、
プログラム仕様14は使用しない。本実施例は、対話端
末2が図形なども表示できるグラフィックス端末である
場合に好適である。しかし文字だけを表示できるキャラ
クタ端末の場合にも適用できる。本実施例では対話端末
2がグラフィックス端末であった場合について説明す
る。
【0084】図11において、GUIテスタ805の処
理手順は図13に示すイベント再生処理と図17に示す
模擬入力記述作成処理と、模擬入力記述からイベント記
録806を作成する処理からなる。模擬入力記述は図1
4に示すようなものである。イベント記録806は模擬
入力記述と同じ形式で保持することもできるし、より機
械処理しやすい形式にすることもできる。後者の場合の
変換処理の手順は模擬入力記述とイベントとの対応関係
から明らかである。前述のようにこの変換処理もGUI
テスタ805に含まれる。
【0085】先ず、図14を用いて画面操作の模擬入力
を記述する言語の新規な機能について説明する。図14
は画面操作の模擬入力を記述する言語で模擬入力を記述
した例である。図14において、1400は変数 ″no
w″ を宣言している。1401は図14の記述を実行し
た時点の時刻を取得してこれを変数 ″now″ に代入し
ている。1402は模擬入力を行なうタイミングを計る
起点となる時刻を変数″now″ に設定している。
【0086】1403はタイムアウト時間を100秒に
設定している。この設定は図13のイベント再生処理の
ステップ1300で用いる。1404はマウスポインタ
(マウスが指し示す画面上での位置座標)を位置座標
(100,100) に移動させる画面操作の模擬入力を記述して
いる。この記述を実行したときは、GUIテスタ805
がアプリケーションプログラム801及びウィンドウシ
ステム802にイベントを送ることで、あたかも作業者
がマウスを用いてマウスポインタを座標 (100,100) に
移動したかのように動作する。
【0087】1405は1402で設定した時刻を起点
として2秒が経過するまで待つ。これにより、次の14
06は模擬入力の実行開始後2秒後に動作する。140
7と1410も同様に時間を調節する。1406はマウ
スの第1ボタンを押す画面操作の模擬入力を記述してい
る。1408はその時点での画面の様子をプリンタ4を
用いて紙に印刷する。その際、 ″case 1″ という文字
列を紙の上部や下部などの適当な位置に印刷する。これ
により、複数の印刷物のそれぞれがどの場面で印刷され
たかが分かる。
【0088】1409は1406と同様に、マウスの第
1ボタンを離す画面操作の模擬入力を記述している。1
411は1408と同様にその時点での画面の様子をプ
リンタ4を用いて紙に印刷する。ただし1408と違
い、1408で印刷したときの画面の様子と比較して、
変化した部分だけを印刷する。
【0089】図14の画面操作の模擬入力記述は、以上
のように記述されている。本実施例ではマウスを用いた
操作について説明したが、キーボードやその他の入出力
機器を用いる場合も同様に記述することができる。上記
の模擬入力記述の中で、1408ないし1411の部分
が新規な機能である。従来は、模擬入力記述に従ってテ
ストを行なっている間ずっと、作業者はグラフィックス
端末803を監視し、プログラムが正しく動作している
ことを確認しなければならなかった。本実施例によれば
テスト中はグラフィックス端末803を監視する必要が
なく、テスト終了後に1408ないし1411で印刷さ
れた出力を見るだけでプログラムの動作を確認できる。
このため例えば夜中の間に自動的にテストを行ない、翌
朝テスト結果を確認することもできる。このような方法
によりテスト実行の確認を短時間で効率よく行なえる。
1408ないし1411ではプリンタ4を用いて紙に印
刷するとしたが、書き換え可能な磁気ディスク装置や磁
気テープ装置、光磁気ディスク装置などの記憶装置に記
憶することもできることは言うまでもない。
【0090】図14に示した画面操作の模擬入力記述
は、ある特定のプログラムのテストのために記述したも
のであるが、この部分を特定のプログラムに依存しない
ように記述することで、任意のプログラムで利用できる
ようにすることもできる。その方法について、図15〜
図18を用いて以下に詳しく説明する。
【0091】一般に、作業者との対話処理は、特定のプ
ログラムに依存しないように汎用的に構成することが可
能であり、これをGUI部品と呼んでいる。図15は
″Button″ という名称のGUI部品に対する画面操作
の模擬入力の記述例である。図15において、150
2、1503、1506、1508、1510、151
1の部分はそれぞれ図14の1401、1402、14
06、1409、1408、1402と同様である。ま
た、1505、1507、1509の部分はいずれも1
405と同様である。
【0092】1500は図15の記述全体が ″Butto
n″ という名称のGUI部品に対する画面操作の模擬入
力を記述していることを示すとともに、 ″HomeX″,″H
omeY″,″name″ という3個の変数を持つことをも示し
ている。変数に対する値は、このGUI部品が実際に使
用される時に決定され、模擬入力記述の中でこれらの変
数が現れた部分にその値を設定するようになっている。
ここでは ″HomeX″,″HomeY″ はこのGUI部品が配
置される位置座標を意味し、 ″name″ はこのGUI部
品が使用されるときに与えられる名称を意味している。
【0093】1501は1402のような記述で時間を
測定する起点が既に設定されているとき、設定された時
刻を得ることを記述している。ここで得た時刻を最後に
1511で再度設定することで、図15の記述を実行す
る前と後で、起点の時刻が変化しないようにできる。こ
れは図15のような記述を複数組み合わせて使用する時
に互いが他に悪影響を及ぼさないようにするためであ
る。1504は1404と同様の模擬入力を記述してい
るが、このGUI部品が実際に配置される位置座標に依
存して詳細が決定するようになっている。例えばこのG
UI部品が (10,20) に配置されたなら、1504によ
れば、 ″pointerMove(11,21)″ で表される画面操作が
模擬実行される。
【0094】図16はGUI部品を用いて特定のプログ
ラムのための画面構成を指定するための、GUI部品の
配置記述の例を示している。図16において、1601
は″Button″ という名称のGUI部品を座標 (10,20)
に配置し、″ボタン1″という名称を与えることを記述
している。同様に1602は ″Button″ という名称の
GUI部品を座標 (110,10) に配置し、″ボタン2″
という名称を与えることを記述している。
【0095】図17はGUI部品の画面操作の模擬入力
記述とGUI部品の配置記述とから、特定のプログラム
のテストのための画面操作の模擬入力記述を作成する、
模擬入力記述作成処理の手順を示すフローチャートであ
る。以下、図17に従って手順を説明する。図17にお
いて、先ずGUI部品の配置記述から部品記述を取得す
る(1701)。図16の例では ″Button(10,20,″ボ
タン1″)″ という記述が得られる。次にその部品に対
応するGUI部品の画面操作の模擬入力記述を取得する
(1703)。本発明に係る自動テストシステムでは、
複数のGUI部品とそれに対応するGUI部品の画面操
作の模擬入力記述が登録されている。その中で ″Butto
n″ という名称に対応するものを取得する。その記述は
例えば図15のようなものである。
【0096】次にステップ1703で取得した模擬入力
記述の変数の部分に、具体的な値を代入する。図15と
図16によれば、変数の対応関係から ″HomeX″ には
10、″HomeY″ には 20、″name″ には ″ボタン1″
がそれぞれ対応することが分かる。この対応に従って変
数に値を代入する。以後、GUI部品の配置記述の残り
について繰り返す。図18は、図15と図16から作成
した模擬入力記述の例を示す。
【0097】本実施例によれば、作業者との対話を含む
プログラムのテストにおいて、画面操作の模擬入力を記
述できる言語を用いて作業者の操作を予め記述し、それ
に従って自動的にテストできる。しかもテストの途中経
過をプリンタ4を用いて紙に印刷することができる。従
って作業者は、テスト中はグラフィックス端末803を
監視する必要がなく、テスト実行が終了した後で印刷出
力をまとめて観察できるので、グラフィックス端末を監
視するよりも短時間で効率良くテスト実行の動作を確認
できる。
【0098】さらに、印刷出力を複数出力する場合は、
2回目以降は前回の画面と比較して変化した部分だけを
印刷するようにすることで、作業者が印刷出力を観察す
るとき変化部分だけを観察すればよいのでさらに観察が
楽になる場合がある。また、予め設定したタイムアウト
時間が経過してもテスト実行が終わらない場合はテスト
実行を中断できるので、例えば夜間にテスト実行をする
場合でも延々とテスト実行が続くことはないので安心し
て自動テストシステムに任せられる。
【0099】また、紙に印刷したときは一度使用した紙
に再び印刷できないが、書き換え可能な磁気ディスク装
置や磁気テープ装置、光磁気ディスク装置などの記憶装
置に記憶すれば、テスト実行の結果を確認したあとは記
録を消去できる。テスト実行の結果を保存する必要がな
いなら、このようにすることで紙を節約できる。
【0100】また、GUI部品に対応づけて、そのGU
I部品のテストで行うべき画面操作の模擬入力記述を予
め用意しておけば、特定のプログラムの画面構成を定義
するGUI部品記述に基づいてそのプログラムの画面操
作の模擬入力記述を作成できる。ここで必要となるGU
I部品の画面操作の模擬入力記述は特定のプログラムに
依存しないので、予めさまざまなGUI部品とそれに対
する画面操作の模擬入力記述を用意しておけば任意のプ
ログラムで共通に利用できるため生産効率が高い。しか
もGUI部品配置記述はプログラムの画面構成を定義し
ているので、この情報に基づいて画面表示を行うプログ
ラムを生成することもできる。あるいはこのGUI部品
配置記述を入力するとその定義に従って画面表示を行う
プログラムを構成することも可能である。
【0101】
【発明の効果】プログラムのテストにおいて、プログラ
ムを実際に動作させて確認するときは、プログラムに具
体的な入力データを与えなければならない。しかも少な
い実行回数で効果的に動作を確認できるテストデータを
用意する必要がある。本発明によれば、データ型とテス
トデータとの対応を予め登録しておけば、プログラム仕
様を与えるだけでテストデータを作成できる。
【0102】特に、テストデータに対応するテストレベ
ルを用いてテストデータの重要さを判別できるため、効
果的なテストデータを作成できる。あるいはテストデー
タに対応する範囲制約を用いて、ある範囲でプログラム
が動作するか否かを、その範囲に属するテストデータで
代表させることで、一つの範囲について一つずつのテス
トデータで動作確認ができる。
【0103】ウィンドウシステムの制御の元で動作する
アプリケーションプログラムのテストを行なった時、作
業者が指示した内容を記録しておくことで、次回以降は
作業者の介在なくテストすることが可能となる。しかも
そのときの画面表示の内容を印刷出力できるので、テス
ト実行が終了した後に短時間でまとめて観察できる。さ
らに画面表示が変化した部分だけを印刷することで、変
化部分に集中して観察できるとともに、紙を節約でき
る。
【0104】タイムアウト時間を設定しておけば、テス
ト対象プログラムが暴走したときにも強制的に終了させ
ることができる。GUI部品とそれに対する画面操作の
模擬入力記述から、特定のプログラムの画面操作の模擬
入力記述を作成できる。しかもここで必要となるGUI
部品の画面操作の模擬入力記述は特定のプログラムに依
存しないので、予めさまざまなGUI部品とそれに対す
る画面操作の模擬入力記述を用意しておけば任意のプロ
グラムで共通に利用できるため生産効率が高い。
【図面の簡単な説明】
【図1】本発明に係る第1の実施例の処理手順を示すフ
ローチャートである。
【図2】データ名からテストデータを作成する処理の手
順を示すフローチャートである。
【図3】本発明に係る自動テストシステムのシステム構
成を示すブロック図である。
【図4】データ項目辞書の例である。
【図5】標準テストデータの例である。
【図6】プログラム仕様の例である。
【図7】プログラム部品の例である。
【図8】テスト仕様書の例である。
【図9】作業者との対話を含むプログラムの構成を示す
ブロック図である。
【図10】画面表示の配置制御を含むシステムのブロッ
ク構成図である。
【図11】本発明に係る第2の実施例のブロック構成図
である。
【図12】GUIテスタのイベント記録処理の手順を示
すフローチャートである。
【図13】GUIテスタのイベント再生処理の手順を示
すフローチャートである。
【図14】画面操作の模擬入力の記述例である。
【図15】GUI部品の画面操作の模擬入力の記述例で
ある。
【図16】GUI部品の配置記述例である。
【図17】模擬入力記述作成処理の手順を示すフローチ
ャートである。
【図18】模擬入力記述の作成結果の例である。
【符号の説明】
1…CPU,2…対話端末,3…メモリ,4…プリン
タ,10…データ項目辞書,11…標準テストデータ,
13…プログラム部品,14…プログラム仕様,401
…データ型名,402…データ名,801…アプリケー
ションプログラム,802…ウィンドウシステム,80
3…グラフィックス端末,804…ウィンドウマネージ
ャ,805…GUIテスタ,806…イベント記録。

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】計算機及び対話端末を有する情報処理装置
    において、 データ型とテストデータとの対応を表す標準テストデー
    タを記憶するステップと、 プログラムの名称と、該プログラムの1個又は複数の入
    力データのデータ名と、該入力データのデータ型との対
    応を表すプログラム仕様を記憶するステップと、 該入力データの該データ型に対応する1個又は複数のテ
    ストデータを該標準テストデータから取得するステップ
    と、 前記ステップで取得した該1個又は複数のテストデータ
    と、該プログラムの名称と、該入力データのデータ名と
    の対応を対話端末に表示するステップとを有することを
    特徴とするデータ型対応の自動テスト方法。
  2. 【請求項2】請求項1記載の自動テスト方法において、 前記標準テストデータはデータ型と、テストデータと、
    さらにテストデータの重要さを表すテストレベルとの対
    応を表し、 前記該テストデータと、該プログラムの名称と、該入力
    データのデータ名との対応を対話端末に表示する前記該
    ステップは、該テストデータに対応する該テストレベル
    の順に整列して表示することを特徴とするデータ型対応
    の自動テスト方法。
  3. 【請求項3】請求項1記載の自動テスト方法において、 表示したいテストレベルを限定するための限定テストレ
    ベルを記憶するステップをさらに有し、 前記標準テストデータはデータ型と、テストデータと、
    さらにテストデータの重要さを表すテストレベルとの対
    応を表し、 該テストデータと、プログラムの名称と、入力データの
    データ名との対応を対話端末に表示する前記該ステップ
    は、該テストデータに対応する該テストレベルが該限定
    テストレベルよりも重要であるときに限り表示すること
    を特徴とするデータ型対応の自動テスト方法。
  4. 【請求項4】請求項1記載の自動テスト方法において、 前記標準テストデータはデータ型と、テストデータと、
    さらに該テストデータの値の範囲又は性質を表すデータ
    名との対応を表し、 入力データのデータ型に対応する1個又は複数のテスト
    データを該標準テストデータから取得する前記ステップ
    は、入力データのデータ型とデータ名との両方が合致す
    る対応が該標準テストデータに含まれるときは該対応を
    優先的に取得することを特徴とするデータ型対応の自動
    テスト方法。
  5. 【請求項5】請求項1又は請求項4記載の自動テスト方
    法において、 データ型と、データ名と、該データの上位概念を表す上
    位データ名との対応を表すデータ項目辞書を記憶するス
    テップをさらに有し、 入力データのデータ型に対応する1個又は複数のテスト
    データを該標準テストデータから取得する前記ステップ
    は、該データ項目辞書の対応の中で、入力データのデー
    タ型が該データ項目辞書の該データ型と合致し、かつ入
    力データのデータ名が該データ項目辞書の該上位データ
    名と合致する対応があるときは、該データ型と、該対応
    のデータ名との両方が合致する対応を該標準テストデー
    タから少なくとも1個取得することを特徴とするデータ
    型対応の自動テスト方法。
  6. 【請求項6】請求項1記載の自動テスト方法において、 前記標準テストデータはデータ型と、あるテストデータ
    を生成するプログラム又はテストデータを算出する計算
    式との対応を表し、 入力データのデータ型に対応する1個又は複数のテスト
    データを該標準テストデータから取得する前記ステップ
    は、入力データのデータ型に対応する1個又は複数の該
    プログラム又は該計算式を取得し、該プログラムを実行
    してテストデータ生成するか又は該計算式によりテスト
    データを算出してテストデータを取得することを特徴と
    するデータ型対応の自動テスト方法。
  7. 【請求項7】計算機及び対話端末を有する情報処理装置
    において、 該対話端末による入出力処理を行う画面制御プログラム
    を有し、 該対話端末を用いた対話処理を含むテスト対象プログラ
    ムを記憶するステップと、 該テスト対象プログラムの指示に従って該画面制御プロ
    グラムが入出力処理を行うステップと、 作業者の画面操作の指示に従って該画面制御プログラム
    が入出力処理を行うステップと、 前記ステップの該作業者の画面操作の指示をイベント記
    録に記録するステップと、 該イベント記録に記録された該作業者の画面操作の指示
    を該テスト対象プログラム又は画面制御プログラムに指
    示することで、あたかも該作業者の画面操作の指示があ
    ったかのようにこれを模擬することを特徴とするデータ
    型対応の自動テスト方法。
  8. 【請求項8】計算機及び対話端末を有する情報処理装置
    において、 画面操作の模擬入力を記述できる言語を有し、 該対話端末を用いた対話処理を含むテスト対象プログラ
    ムを記憶するステップと、 該テスト対象プログラムを実行しながら、該言語で記述
    した画面操作の模擬入力の記述に従って画面操作の模擬
    入力を行うステップとを有し、 該言語で記述した画面操作の模擬入力の該記述の中に、
    画面を印刷する命令があったときは、該記述に従って画
    面操作の模擬入力を行う前記ステップは、その時点での
    画面を印刷することを特徴とするデータ型対応の自動テ
    スト方法。
  9. 【請求項9】請求項8記載の自動テスト方法において、 画面を複数回印刷するときは、2回目以降の印刷ではそ
    の時点での画面と前回印刷時の画面とを比較して、変化
    があった部分だけを印刷することを特徴とするデータ型
    対応の自動テスト方法。
  10. 【請求項10】請求項8記載の自動テスト方法におい
    て、 画面を印刷する代わりに磁気ディスク又は光磁気ディス
    ク又は磁気テープに記録することを特徴とするデータ型
    対応の自動テスト方法。
  11. 【請求項11】計算機及び対話端末を有する情報処理装
    置において、 画面操作の模擬入力を記述できる言語を有し、 対話処理の名称と、該対話端末を用いた対話処理を行う
    プログラムと、該プログラムに対する画面操作の模擬入
    力記述との対応を記憶するステップと、 対話処理の名称と、該対話処理のための文字又は図形を
    該対話端末上に表示する位置座標との対応を表す配置記
    述を記憶するステップと、 該配置記述に含まれるすべての対応について、該対応に
    おける該対話処理の名称に対応する該画面操作の模擬入
    力記述を取得し、その中の位置座標の部分を該対応にお
    ける該位置座標に従って変更するステップと、 変更の結果得られた画面操作の模擬入力記述をまとめて
    全体の画面操作の模擬入力を作成するステップを有する
    ことを特徴とするデータ型対応の自動テスト方法。
  12. 【請求項12】請求項1ないし請求項11記載の自動テ
    スト方法において、 タイムアウト機能を有し、 テスト実行が予め設定したタイムアウト時間以内に終了
    しないときは強制的に終了することを特徴とするデータ
    型対応の自動テスト方法。
JP5198154A 1993-08-10 1993-08-10 データ型対応の自動テスト方法 Pending JPH0756768A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5198154A JPH0756768A (ja) 1993-08-10 1993-08-10 データ型対応の自動テスト方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5198154A JPH0756768A (ja) 1993-08-10 1993-08-10 データ型対応の自動テスト方法

Publications (1)

Publication Number Publication Date
JPH0756768A true JPH0756768A (ja) 1995-03-03

Family

ID=16386366

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5198154A Pending JPH0756768A (ja) 1993-08-10 1993-08-10 データ型対応の自動テスト方法

Country Status (1)

Country Link
JP (1) JPH0756768A (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003044318A (ja) * 2001-08-02 2003-02-14 Fujitsu Ltd テスト支援プログラムおよびテスト支援方法
JP2006114049A (ja) * 2004-10-15 2006-04-27 Microsoft Corp ユーザインターフェースエレメントを可視化するシステムおよび方法
KR100621574B1 (ko) * 1999-07-07 2006-09-12 삼성전자주식회사 내장 시스템 소프트웨어 테스팅을 위한 테스트 드라이버 생성시스템
JP2009020609A (ja) * 2007-07-10 2009-01-29 Ricoh Co Ltd 画像形成装置、プログラム制御方法及びプログラム
JP2010072944A (ja) * 2008-09-18 2010-04-02 Hitachi Information Systems Ltd 情報処理システムにおける設計品質検査の支援システム
JP2011243232A (ja) * 2011-09-09 2011-12-01 Ricoh Co Ltd 情報処理装置、プログラム制御方法、及び制御プログラム
JP2018077696A (ja) * 2016-11-10 2018-05-17 株式会社リコー 機器、情報処理装置、情報処理システム、情報処理方法及びプログラム
KR20190091363A (ko) 2017-02-02 2019-08-05 알프스 알파인 가부시키가이샤 푸시 스위치
JP2019192134A (ja) * 2018-04-27 2019-10-31 キヤノンマーケティングジャパン株式会社 情報処理装置、その処理方法及びプログラム

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100621574B1 (ko) * 1999-07-07 2006-09-12 삼성전자주식회사 내장 시스템 소프트웨어 테스팅을 위한 테스트 드라이버 생성시스템
JP2003044318A (ja) * 2001-08-02 2003-02-14 Fujitsu Ltd テスト支援プログラムおよびテスト支援方法
JP2006114049A (ja) * 2004-10-15 2006-04-27 Microsoft Corp ユーザインターフェースエレメントを可視化するシステムおよび方法
JP2009020609A (ja) * 2007-07-10 2009-01-29 Ricoh Co Ltd 画像形成装置、プログラム制御方法及びプログラム
JP2010072944A (ja) * 2008-09-18 2010-04-02 Hitachi Information Systems Ltd 情報処理システムにおける設計品質検査の支援システム
JP2011243232A (ja) * 2011-09-09 2011-12-01 Ricoh Co Ltd 情報処理装置、プログラム制御方法、及び制御プログラム
JP2018077696A (ja) * 2016-11-10 2018-05-17 株式会社リコー 機器、情報処理装置、情報処理システム、情報処理方法及びプログラム
KR20190091363A (ko) 2017-02-02 2019-08-05 알프스 알파인 가부시키가이샤 푸시 스위치
JP2019192134A (ja) * 2018-04-27 2019-10-31 キヤノンマーケティングジャパン株式会社 情報処理装置、その処理方法及びプログラム

Similar Documents

Publication Publication Date Title
US6061643A (en) Method for defining durable data for regression testing
US5086393A (en) System for testing human factors and performance of a system program
US6308146B1 (en) System and method for simulating user input to control the operation of an application
US4696003A (en) System for testing interactive software
CA1273487A (en) Multi-mode teaching simulator
JP2765969B2 (ja) 図式データ駆動型プログラム開発支援装置
US5220658A (en) System for testing a performance of user interactive-commands using an emulator-overlay for determining the progress of the user timing response
US5121497A (en) Automatic generation of executable computer code which commands another program to perform a task and operator modification of the generated executable computer code
US5926638A (en) Program debugging system for debugging a program having graphical user interface
US20080270841A1 (en) Test case manager
US20120116561A1 (en) Program testing apparatus, method of testing a program, and program testing program
US5940617A (en) Debugger for controlling execution of software installed in object to be controlled on the basis of state transition model, debugging method thereof, record medium thereof, and method for correlating function specifications and code addresses
JP2001005690A (ja) プログラムテストシステム
JPH0756768A (ja) データ型対応の自動テスト方法
CN112015656B (zh) 一种工作流设计器的可视化调试方法及装置
US7055141B2 (en) Humanity interface development system of testing program of circuit board
EP0052684B1 (en) A method of testing a display apparatus
CA1267229A (en) Reconfigurable automatic tasking system
JPH07168709A (ja) プログラムジェネレータ利用仕様シミュレーション方法およびその装置
CA2359079A1 (en) Program reproducing method and device, and medium on which a program for program reproduction recording
JPH0546377A (ja) 制御プログラム作成方法及びその作成装置
EP0236746A2 (en) System and method for testing human factors
JPH01144124A (ja) コンピュータ装置
JP2005092609A (ja) シーケンス図表示装置およびシーケンス図表示プログラム
CA1293057C (en) System for testing human factors and performance of a system program