JP2002366387A - ソフトウェアプログラムの自動テストシステム - Google Patents

ソフトウェアプログラムの自動テストシステム

Info

Publication number
JP2002366387A
JP2002366387A JP2001177920A JP2001177920A JP2002366387A JP 2002366387 A JP2002366387 A JP 2002366387A JP 2001177920 A JP2001177920 A JP 2001177920A JP 2001177920 A JP2001177920 A JP 2001177920A JP 2002366387 A JP2002366387 A JP 2002366387A
Authority
JP
Japan
Prior art keywords
scenario
standard
test
processing
data
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
JP2001177920A
Other languages
English (en)
Inventor
Yuji Hirobe
祐司 廣部
Sadahiro Ishikawa
貞裕 石川
Kiyoshi Yamaguchi
潔 山口
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 JP2001177920A priority Critical patent/JP2002366387A/ja
Publication of JP2002366387A publication Critical patent/JP2002366387A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】自動テストシステムの構築工数、被テスト側の
仕様変更を自動テストシステムへ反映する工数を削減す
る。 【解決手段】インタフェース定義やデータ長といった定
義情報をもとに、画面の基本仕様からスタブ・ドライバ
を生成し、標準シナリオや標準スクリプトからスクリプ
トを生成する。それら生成物をもとに自動テスト機構が
自動テストを行う。このとき被テストプログラムの各機
能を複数の標準機能から構成し、標準機能の処理順序を
標準シナリオとすると一件の標準シナリオを複数の機能
のテストに流用できる。同時に、標準機能や標準シナリ
オなどの単位でシナリオを準備できる。定義情報とプロ
グラム仕様から被テストプログラムを生成してもよい。 【効果】標準シナリオや標準スクリプトの規模を縮小で
きる。テストシステム全体へ仕様変更を反映するには、
基本的に定義情報のみ変更すればよい。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は各種定義情報と仕様
情報および標準シナリオと標準スクリプトを用いて自動
的にソフトウェアプログラムのテストを行う自動テスト
技術に関する。
【0002】
【従来の技術】ソフトウェアプログラムの自動テスト技
術とは、一連の操作を記述したプログラムを自動テスト
機構が実行して、被テストプログラムを自動的にシミュ
レーション操作するものである。自動実行の過程では、
実行前に準備した想定出力値(期待値)とシミュレーシ
ョン時の出力値を自動的に比較する。また自動テストシ
ステムとは自動テストを継続的に行うシステムを指す。
以下ではシミュレーション用に一連の操作を記述したプ
ログラムをスクリプトと呼ぶ。
【0003】従来のソフトウェアプログラムの自動テス
ト技術としては、テスト項目、シナリオ、テストデー
タ、テストプログラム、スタブ・ドライバを、定義情報
から自動生成する技術、シナリオ、テストデータ、スク
リプトを、操作を記録する形で生成する技術、それら生
成物件を用いて自動的にテスト実行する技術、自動テス
ト結果の自動出力技術などの要素技術がある。これらの
要素技術のいくつかを組合せた技術もある。
【0004】従来の自動テスト技術によって自動テスト
システムを構成するには、一つの定義情報と被テストプ
ログラムとスクリプトのひな形からそれぞれのソースを
生成する技術(特開2000−020299号公報)、
およびインタフェース定義などからスタブ画面を生成す
るツール、GUI画面を通して被テストプログラムのテ
ストをスクリプトに基づいて行う自動テストツールを組
合せて用いる必要があった。
【0005】その他に関連技術として、インタフェース
定義からスタブもしくはスケルトンを生成する方法(特
開平11−296359号公報)、被テストプログラム
の標準パターンに応じてテスト側のパターンを準備する
方法(特開平06−110733号公報)があった。
【0006】
【発明が解決しようとする課題】上記従来技術の組合せ
により自動テストシステムを構成する場合には次のよう
な問題があった。
【0007】従来技術によるシステムでは、シナリオに
繰返しが発生する場合でもシナリオを事前準備する場合
にシナリオを重複して作り込む必要があった。通常、一
連のテスト操作には、スタブ・ドライバの画面の有無に
よらず同じ操作の繰返しが発生する。スタブ・ドライバ
が画面を持ち、画面仕様が固定であればさらに繰返しが
多くなる。
【0008】また、従来技術では、被テストプログラム
を標準パターン化して、対応するテストパターンを準備
する場合に、プログラムの標準パターンとテストパター
ンは1対1で事前準備する必要があった。例えばメソッ
ドを標準パターン化し、複数のクラスで、同様の複数の
標準パターンメソッドをもつような、機能の標準化を2
階層で行うプログラムでは、メソッドの処理順序情報に
相当する一つのテストパターンを複数のクラスに適用可
能であるが、従来技術ではこの場合にもクラスごとにテ
ストパターンを準備する必要があった。
【0009】本発明の目的は、自動テストシステムの事
前準備データの重複を削減し、仕様変更時の自動テスト
システムのメンテナンスを容易にしたソフトウェアプロ
グラムの自動テストシステムを提供することにある。
【0010】
【課題を解決するための手段】上記課題を解決するため
に、本発明のソフトウェアプログラムの自動テストシス
テムは、事前準備する定義情報を格納する定義情報格納
部と、前記定義情報とスタブもしくはドライバの画面の
基本仕様からスタブもしくはドライバを生成するスタブ
・ドライバ生成部と、前記定義情報と、事前準備する標
準シナリオおよび標準スクリプトとから期待値、テスト
データ、スクリプトを生成するテスト資源生成部と、テ
スト資源生成部の生成物をもとにスタブ・ドライバ生成
部が生成したスタブもしくはドライバを用いて被テスト
プログラムのテストを自動的に行う自動テスト実行部に
より構成される。ここで定義情報とは、例えばインタフ
ェース定義、データ名、データ型、データ長といった情
報であり、標準シナリオが略式の標準シナリオである場
合の略式の標準シナリオから処理順序に沿った個々の処
理を全て記述した標準シナリオへの変換規則を内在して
もよく、標準シナリオ中の記述形式からスクリプト用の
コマンド形式への変換規則を内在してもよく、テストデ
ータおよび期待値の生成規則を内在してもよい。前記2
件の変換規則および1件の生成規則は、テスト資源生成
部に内在してもよい。前記インタフェース定義は、被テ
ストプログラムの機能名、機能ごとの入出力データ項目
の構成と名称といった情報である。スタブ仕様もしくは
ドライバ仕様とは、スタブもしくはドライバの基本画面
仕様情報である。標準シナリオとは、例えば一連のテス
ト処理順序、および個々の処理と入出力項目名、値との
対応情報および個々の処理で必要な引数の基準情報であ
り、一連のテスト処理の例としては、「データA登録処
理、データB登録処理、データC登録処理、データAと
B関連付け処理、データAとC関連付け処理、データA
をキーに検索して対応するデータBとCがヒットするこ
とを確認する処理」などが挙げられ、その詳細は個々の
処理ごとに入力処理、実行処理、出力値の取得処理、出
力値の確認処理などから構成される。個々の処理で必要
な引数の基準情報の例としては入力値がデータの定義長
最大値か定義長オーバ値かの区別情報、あるいは同様の
指定情報などがある。また個々の処理に必要な引数を外
部情報で埋めるための置換用情報を内在してもよい。標
準シナリオは、テスト処理順序の情報と、処理と標準ス
クリプト間の対応情報とに分割して格納してもよく、か
つテスト内容ごとに複数格納してよい。標準スクリプト
とは画面をもつスタブ・ドライバへの標準操作情報であ
り、操作情報の形式の例としては関数、コマンド、プロ
グラム、ひな形など、標準操作の例としてはデータの入
力、イベントの実行、出力値の取得、出力値の確認など
がある。標準操作情報は、操作に必要な引数を外部情報
で埋めるための置換用情報を内在してよい。標準スクリ
プトもテスト内容ごとに複数格納してよい。期待値と
は、自動テスト機構が自動テストを実行する時に出力値
の比較対象となる値である。期待値は、値がないがデー
タの型やスタブ・ドライバの入出力に応じたフォーマッ
トをもつ状態の情報でもよい。その場合の期待値を標準
期待値と呼べば、標準期待値とスタブもしくはドライバ
の画面仕様は1対1で準備すればよい。このとき、標準
期待値は流用できる。標準期待値を設けた場合も、仕様
変更時に標準期待値の変更は不要である。テストデータ
や期待値が固定値であるときは、前記標準シナリオもし
くは前記標準スクリプト自体に、テストデータや期待値
を内在させる構成としてもよい。内在させれば以降でテ
ストデータの展開処理を縮小できる。
【0011】以上において、テストデータ生成時に期待
値を生成せず、テスト資源に期待値を含まない構成とし
て作業を自動化するだけの構成としてもよい。その場合
発明の構成は変形となり、テスト資源やデータつきシナ
リオ、データ込み標準シナリオ中の期待値がない構成と
なる。
【0012】テストデータと期待値は、スクリプトに内
在させる構成でよい。内在方法は、スクリプト内部に記
述する形でもよく、外部ファイルなどの外部情報として
スクリプトが読み込む形でもよい。
【0013】また本発明ではスタブ・ドライバ画面の操
作シミュレーションプログラムをスクリプトと呼び、期
待値、テストデータ、スクリプトをあわせてテスト資源
と呼ぶこととする。さらに前記定義情報中もしくはテス
ト資源生成部中のテストデータおよび期待値生成規則を
データ期待値展開規則と呼び、前記定義情報中もしくは
テスト資源生成部中の標準シナリオ中の記述形式からス
クリプト用のコマンド形式への変換規則をスクリプト化
規則と呼び、標準シナリオが略式の標準シナリオである
場合の略式の標準シナリオから処理順序に沿った個々の
処理を全て記述した標準シナリオへの変換規則をシナリ
オ具体化規則と呼ぶこととする。
【0014】はじめに、請求項1に記載の自動テストシ
ステムの処理動作を説明する。まず、事前に定義情報を
定義情報格納部に格納する。次に、前記定義情報とスタ
ブもしくはドライバの画面の基本仕様によりスタブ・ド
ライバ生成部が、画面を持つスタブもしくはドライバを
自動生成する。これはスタブ・ドライバ生成部に事前準
備した画面の基本仕様を画面構成のテンプレートとし
て、スタブ・ドライバの画面を構成することに相当す
る。自動生成処理は、スタブ・ドライバ生成部に事前準
備する画面の基本仕様を画面構成および画面処理の基本
仕様としてもたせ、その基本仕様中の置換用情報を、被
テストプログラムの機能ごとに機能名、入出力データ項
目の構成と名称、といった前記定義情報に変換して画面
構成および画面処理の具体的構成を生成し、生成物をコ
ンパイルする処理となる。このとき、前記置換用情報を
前記定義情報に変換することで、スタブ・ドライバ画面
に具体的な画面名やデータ項目名を表示することが可能
となる。
【0015】次にテスト仕様に対応する標準シナリオと
標準スクリプトを、テスト資源生成部に事前準備する。
次にテスト資源生成部が、前記定義情報と、標準シナリ
オおよび標準スクリプトをもとに、スタブ・ドライバ画
面の操作シミュレーションプログラム(テスト資源)を
生成する。自動生成処理は、必要に応じて前記定義情報
中もしくはテスト資源生成部中の標準シナリオ変換規則
(シナリオ具体化規則)をもとに、標準シナリオをテス
ト処理順序のひな形情報から具体的なテスト処理順序情
報に変換し、次に標準シナリオ中の、個々の処理に必要
な引数の基準情報と前記定義情報中の、機能を構成する
項目のデータ型、データ長、データ名のリストとから、
前記定義情報中もしくはテスト資源生成部中のテストデ
ータおよび期待値生成規則(データ期待値展開規則)を
もとにテストデータおよび期待値を生成して、具体的な
テスト処理順序情報中の置換用情報を対応するテストデ
ータおよび期待値に置換するとともに、テストデータお
よび期待値置換後の具体的なテスト処理順序情報(デー
タつきシナリオ)中の個々の処理を、前記定義情報中も
しくはテスト資源生成部中の標準シナリオ中の記述形式
からスクリプト用のコマンド形式への変換規則(スクリ
プト化規則)をもとに標準スクリプトの形式に変換する
ことで、テストデータおよび期待値を内在したスタブ・
ドライバ画面の操作シミュレーションプログラム(テス
ト資源)に展開する。
【0016】自動生成処理の別法は、必要に応じて標準
シナリオを前記シナリオ具体化規則により具体化し、次
に前記定義情報中もしくはテスト資源生成部中の標準シ
ナリオ中の記述形式からスクリプト用のコマンド形式へ
の変換規則(スクリプト化規則)により、標準シナリオ
中の個々の処理情報をスクリプト形式に変換しスクリプ
ト形式のシナリオ(シナリオつきスクリプト)とし、前
記シナリオつきスクリプト中の、個々の処理に必要な引
数の基準情報と前記データ期待値展開規則により、処理
に必要なテストデータおよび期待値を前記定義情報から
生成して、前記シナリオつきスクリプト中の置換用情報
をテストデータおよび期待値で自動的に置換することに
より前記テスト資源を生成する。
【0017】データ期待値展開規則は、例えば定義情報
にクラスAのメソッドPを構成するデータ項目Sがデー
タ長6バイト、データ型String型、とあるとき
で、シナリオ中の引数基準情報が定義長オーバ値という
基準情報であったとき、その処理に使用するテストデー
タとして、String型の6バイトをオーバするデー
タを生成するための規則で、例えばString型なら
ばアルファベットをアルファベット順に並べてテストデ
ータを構成する、という規則となっており、この場合そ
の規則に従えば「ABCDEFG」というテストデータ
を生成する。スクリプト化規則は、シナリオの処理記述
と、シナリオに指定された処理を行うためのスタブ・ド
ライバ画面への一つ一つの基本操作コマンド(自動テス
ト実行部の解釈できるスクリプト形式)との対応情報を
もとに、シナリオの処理記述をスクリプト化する規則で
ある。
【0018】最後に自動テスト実行部が、テスト資源を
用いて、画面をもつスタブ・ドライバを介して被テスト
プログラムを自動的にテストする。具体的には、スクリ
プトに記述されているテスト操作順序に従ってスタブ・
ドライバ画面へのテストデータの入力や被テストプログ
ラム機能の実行、被テストプログラムの出力値と期待値
との比較、などの処理を行うことにより実現される。こ
こでいう出力値は、自動テスト実行部と同一の機構内の
ファイルでも、スタブ・ドライバ画面に出力された値で
も、ネットワーク上の他のマシン上に格納される情報で
もよい。
【0019】以上のように、スクリプトのスケルトン情
報を、テスト順序情報である標準シナリオとコマンド情
報である標準スクリプトとに分けて格納すれば、スクリ
プトの構成上被テストプログラムごとにかならず事前準
備するテスト順序情報を単純化でき、テスト順序情報の
規模を縮小できるから、自動テストシステム構築時の準
備情報作成工数を縮小できる。さらに、標準スクリプト
を標準シナリオと分割しているため、被テストプログラ
ムの仕様変更にあわせて自動テストシステムの変更(再
構築)を行うときに、定義情報、および必要に応じて標
準シナリオのみを変更すれば、テスト資源にすべて反映
される。よって、自動テストシステムのメンテナンス工
数が縮小できる。被テストプログラムの仕様変更にあわ
せて標準スクリプトを書き換える必要はない。
【0020】以上の自動テストシステムは、異なる自動
テスト機構を並行に用いる場合でも、異なる自動テスト
機構間で定義情報を共通に使用できる仕様とすること
で、自動テストシステムとして機能する。また特に、デ
ータつきシナリオ前記自動テスト機構は、スクリプトを
もとにGUIをもつスタブ・ドライバ操作を再現し、再
現時の出力値と期待値とを比較する市販のツールと同様
でよい。
【0021】次に請求項2に記載の自動テストシステム
の処理動作を説明する。
【0022】請求項1に記載のシステム構成に、テスト
シナリオを作成するシナリオ生成部を追加し、標準シナ
リオおよび標準スクリプトをテスト資源生成部に事前準
備するかわりに、まず標準シナリオをシナリオ生成部に
事前準備する。シナリオ生成部は、定義情報格納部の定
義情報と、標準シナリオをもとに、テストデータおよび
期待値を内在したシナリオ(データ込み標準シナリオ)
を生成する。自動生成処理は、請求項1の処理動作説明
中のデータつきシナリオ生成処理と同様である。テスト
資源生成部には、標準スクリプトのみを事前準備する。
テスト資源生成部は、シナリオ生成部の生成したデータ
込み標準シナリオと、標準スクリプトとをもとに、テス
ト資源を生成する。自動生成処理は、請求項1の処理動
作説明中のデータつきシナリオとスクリプト化規則をも
とにテスト資源を生成する処理と同様である。
【0023】テスト資源生成部の生成したテスト資源は
請求項1の処理動作説明中のテスト資源と同様であるか
ら、請求項1と同様にソフトウェアプログラムの自動テ
ストシステムが機能する。
【0024】次に請求項3に記載の自動テストシステム
の処理動作を説明する。
【0025】請求項1に記載のシステム構成にスクリプ
トひな形生成部を追加し、標準シナリオおよび標準スク
リプトをテスト資源生成部に事前準備するかわりに、ス
クリプトひな形生成部に標準シナリオおよび標準スクリ
プトを事前準備する。スクリプトひな形生成部は、標準
シナリオおよび標準スクリプトをもとに、標準シナリオ
の処理に標準スクリプトのコマンドを対応させることに
よってシナリオを展開し、シナリオを内在したスクリプ
ト(シナリオ込み標準スクリプト)を生成する。ここで
シナリオ込み標準スクリプトは、シナリオが内在してい
ないか一部のみ内在しているか全部内在しているかのど
れかの状態であり、全部内在していなくとも良い。また
標準スクリプトはスタブ・ドライバを操作するコマンド
であり、通常は個々の操作単位のコマンドであるが、前
記シナリオ込み標準スクリプトでは、1メソッドの処理
単位かもしくはシナリオの処理全体単位にコマンド化さ
れ、コマンドの引数となるテストデータや期待値が置換
用情報である状態になる。当然シナリオ込み標準スクリ
プトはスクリプトひな形生成部による生成によらず、事
前準備してもよい。テスト資源生成部は、定義情報格納
部の定義情報とシナリオ込み標準スクリプトをもとに、
前記定義情報から生成したデータを前記シナリオ込み標
準スクリプト中に展開することによってテスト資源を生
成する。自動生成処理は、請求項1の処理動作説明中
の、前記定義情報と、シナリオつきスクリプトとデータ
期待値展開規則とをもとにテスト資源を生成する処理と
同様である。
【0026】テスト資源生成部の生成したテスト資源は
請求項1の処理動作説明中のテスト資源と同様であるか
ら、請求項1と同様にソフトウェアプログラムの自動テ
ストシステムが機能する。
【0027】次に、請求項4に記載の被テストプログラ
ム、標準シナリオ、標準スクリプトが一つまたは複数の
機能の組合せで構成される場合の処理動作を説明する。
【0028】本発明のプログラムの自動テストシステム
構成において、被テストプログラムの機能を標準化し、
個々の機能が、一つまたは複数の標準機能の組合せから
なる構成とする。例えば、データの新規作成、取得、更
新、関連付け、バージョンアップ、削除、ファイル転
送、検索といった標準メソッドを準備し、複数クラス
で、それら標準メソッドの機能をもつ構成とする。つま
り、クラスAにも、クラスBにも、新規作成、取得、更
新、関連付け、バージョンアップ、削除、ファイル転
送、検索といったメソッドがあるように構成する。ただ
し、各クラスは標準メソッド全部を持つ必要はない。
【0029】このとき、例えばクラスAのメソッド新規
作成とクラスBのメソッド新規作成では、新規作成され
るデータの格納箇所が異なるが、「新規作成」という基
本的な処理動作は同様である。クラスが違っても基本的
な処理動作が同様の標準動作ならばテストの内容も同じ
になる。よって一つ以上のメソッドの処理順序情報を標
準シナリオとして、標準シナリオ1件を、複数クラスの
テストシナリオのテンプレートにすることができる。例
えば、「作成、取得、更新、削除」といったメソッド処
理順序に、テストデータや期待値のデータ長制限、チェ
ック内容を加えたものを標準シナリオとして用意すれ
ば、クラスAのテストも、クラスBのテストもこの標準
シナリオを処理順序情報、すなわちテストのシナリオと
することができる。このときシナリオの流用度が従来に
比べて大きくなるため、準備する標準シナリオの規模を
従来に比べ縮小できる。
【0030】また、上記構成を用い、スタブ・ドライバ
画面を標準機能1件ごとに標準機能処理用画面を1つもた
せ、その画面をメイン画面から呼び出す構成とすること
により、メソッドの処理1件自体がパターン化できる。
例えば、「メソッドを処理するスタブ・ドライバの画面
を開く、画面に値を入力する、メソッドを実行する、画
面に表示される出力値をテスト仕様に応じてチェックす
る、メソッドを処理する画面を閉じる」、というパター
ン1件で複数のメソッドが処理できる。メソッドの処理
がパターン化できれば、そのパターンの処理をスクリプ
ト形式とし、呼び出しメソッド名、テストデータ、期待
値など必要な引数を置換用情報としたものを標準シナリ
オの一つ(パターンシナリオ)もしくは標準スクリプト
の一つ(パターンスクリプト)として準備できる。この
とき標準シナリオは、メソッド1件ずつの詳細な処理の
かわりにメソッドの呼び出し順序と引数の基準のみを定
義すればよいため、標準シナリオの準備規模を縮小でき
る。
【0031】このときのテスト資源生成部によるテスト
資源の生成処理は、定義情報格納部中のメソッドの入出
力データ項目構成情報と、標準シナリオ中の引数の基準
情報をもとに、テストデータおよび期待値を生成し、パ
ターン部品の引数を埋め、シナリオ中のメソッドごとに
具体化したパターンを生成して、標準シナリオ中のメソ
ッド処理順序情報に対応させて複数の具体化済みパター
ン部品を順次展開する形でデータつきシナリオを生成
し、これをスクリプト化規則でテスト資源を生成する処
理となる。あるいは、処理順序情報と引数の基準情報と
パターンスクリプトと入出力データ項目構成情報をもと
に、引数の基準情報を直接パターンスクリプトに記述
し、シナリオ中のメソッドごとに基準情報を定義したパ
ターンを生成して、標準シナリオ中のメソッド処理順序
情報に対応させて複数の引数定義内在パターンを順次展
開する形でシナリオつきスクリプトを生成し、シナリオ
つきスクリプト中の引数定義情報をもとにテストデータ
および期待値を生成し、シナリオつきスクリプトに埋め
ることでテスト資源を生成する処理となる。
【0032】パターンスクリプトは、スクリプト形式の
記述となっており、テスト資源生成時にスクリプトへの
変換を省くことが出来る。ただし、実装に当たっては、
パターンの処理を部品として準備せず、シナリオごと、
メソッドごとに異なるデータを処理するスクリプトを生
成する際に、繰り返し同じ細分化部品を書き出すという
形、すなわちアルゴリズムに部品の処理パターンを持た
せる形式でもよい。
【0033】上記構成を請求項2に記載のシステム構成
に適用する場合、シナリオ生成部によるデータ込み標準
シナリオの生成処理は、データつきシナリオの生成処理
と同様となる。請求項3に記載のシステム構成に適用す
る場合、スクリプトひな形生成部がシナリオ込み標準ス
クリプトを生成する処理は、シナリオつきスクリプトの
生成処理と同様となる。
【0034】次に請求項5に記載の被テストプログラム
を生成する処理動作を説明する。
【0035】請求項1または2または3または4に示す
システム構成にプログラム生成部を追加し、プログラム
生成部にプログラム仕様および標準プログラムを事前準
備する。プログラム仕様は、被テストプログラムの本体
における標準プログラムの並び順情報である。標準プロ
グラムは、被テストプログラムを詳細に分割して定型処
理のうち共通部分を一本化したパターンプログラムであ
り、一つ以上準備する。プログラム生成部が、定義情報
格納部の定義情報とプログラム仕様をあわせて展開し、
被テストプログラムの一部もしくは全部を生成する。自
動生成処理は、プログラム仕様に従って標準プログラム
を並べるとともに、定義情報格納部中の定義情報とプロ
グラム仕様中および標準プログラム中の置換用情報をも
とにデータ項目名、機能名または標準機能名などを展開
することで、被テストプログラムの一部もしくは全部を
生成する処理となる。定義情報中のインタフェース定義
情報によって、プログラムの機能構成であるクラスとメ
ソッドの対応とともに、個々のメソッドとプロパティ項
目の対応がつく。また、定義情報格納部中のインタフェ
ース定義情報と標準処理部品を組合せて、被テストプロ
グラムのインタフェース情報であるDLL(ダイナミッ
クリンクライブラリ)を生成することもできる。前記プ
ログラム生成部は、プログラム部品とプログラムの処理
順序情報と、クラス図など機能構成の定義をもとにプロ
グラムを生成する市販のツールと同様でよい。
【0036】この被テストプログラムを本システムに適
用して自動テストを行うことにより、事前準備する情報
だけでソフトウェアプログラムの一部もしくは全部を自
動的に開発できる。つまり、被テスト側、テスト側双方
を自動生成した上で自動的にテストを実施できる。この
ように、この発明はプログラム開発支援手法としても有
効である。
【0037】また、請求項4に示すような被テストプロ
グラムの機能を標準化する処理を行う際に、例えば標準
化したメソッドに名称をつけ、各クラスの標準化したメ
ソッドにクラス名+メソッド名という名前をつけること
により、標準スクリプトにメソッド名を内在させられる
ため、標準スクリプトの流用度をさらに増すことが可能
となる。
【0038】
【発明の実施の形態】本発明の実施の形態を、図を用い
て説明する。
【0039】はじめに、図1により請求項1に記載の自
動テストシステムの基本構成を説明する。
【0040】自動テストシステムは定義情報格納部10
1、テスト資源生成部102からなるテスト資源の生成
機構103と、スタブ・ドライバ生成部104、自動テ
スト実行部105により構成される。被テストプログラ
ム106は予め準備するテスト対象のプログラムであ
り、スタブまたはドライバ(以下、スタブ・ドライバと
記載)107とテスト資源108は本システムにより生
成される。
【0041】定義情報格納部101は、定義情報109
を格納する機構である。定義情報109はインタフェー
ス定義情報およびデータ定義情報であり、データ定義情
報は、被テストプログラムの入出力データのデータ型、
データ長などの情報である。データの説明情報を追加し
た構成でもよい。
【0042】スタブ・ドライバ生成部104は、画面の
基本仕様110を格納し、定義情報格納部101のイン
タフェース定義と画面の基本仕様110を用いて、画面
をもつスタブ・ドライバ107を生成する機構である。
【0043】テスト資源生成部102は、標準シナリオ
111と標準スクリプト112を格納し、定義情報格納
部101のインタフェース定義情報およびデータ定義情
報と、標準シナリオ111と標準スクリプト112とを
もとに、テスト資源108を生成する機構である。標準
シナリオ111は、テストの実行順序情報であり、単一
の順序情報でも複数の順序情報でもよい。標準スクリプ
ト112は、スタブ・ドライバ画面の基本操作情報であ
り、例えば画面上の定位置のボタンを押下する、データ
項目名とテストデータを引数として画面上で対応する欄
にテストデータを入力する、といった操作の情報であ
る。スタブ・ドライバ画面の基本仕様を固定することに
より標準スクリプト112を設けることが可能となる。
標準スクリプト112は、スタブ・ドライバ画面の基本
操作関数であっても、複数の基本操作情報の組合せであ
ってもよい。
【0044】テスト資源108は、期待値113、テス
トデータ114、スクリプト115の3つを内在する情
報である。期待値113とテストデータ114は、スク
リプト115に組み込まれた形でも、スクリプト115
の外部にもってスクリプト115が読み込む形としても
よい。
【0045】自動テスト実行部105、被テストプログ
ラム106、生成したスタブ・ドライバ107、生成し
たテスト資源108により自動テストを行う機構116
が構成される。
【0046】自動テスト実行部105は、テスト資源1
08をもとに、生成したスタブ・ドライバ107を通し
て被テストプログラム106のテストを行う。自動テス
ト実行部105に対しどのテスト資源を使用するかの指
定、および動作の開始指示を与えると、自動テスト実行
部105はテスト資源108中のスクリプト115の記
述に沿ってスタブ・ドライバ107に対して動作指示を
与える。動作指示の内容は、出力値の取得、出力値と期
待値113との比較、目的の機能を実行するスタブ・ド
ライバの起動、テストデータ入力操作、目的の機能の実
行指示、スタブ・ドライバの終了、などである。
【0047】このシステム構成を請求項4に記載の標準
シナリオ・標準スクリプトに標準機能の組合せおよび順
序情報であるものを設けるシステムに適用する場合は、
前述の基本構成に加えて、標準シナリオ111もしくは
標準スクリプト112に、メソッドの処理単位もしくは
シナリオ単位の、スタブ・ドライバ画面の基本操作を記
述する。
【0048】次に図2により請求項2に記載の自動テス
トシステムの基本構成を説明する。
【0049】基本構成は図1と同様であるが、図1のテ
スト資源の生成機構102に対応するテスト資源の生成
機構201の部分が異なり、シナリオ生成部202を追
加し、シナリオ作成機能を実現している。テスト資源生
成部203には初期状態では標準スクリプト112のみ
が格納される。シナリオ生成部202は、標準シナリオ
111を格納し、定義情報格納部101の定義情報と、
標準シナリオ111とをもとに、データ定義込み標準シ
ナリオ204を生成する。生成したデータ定義込み標準
シナリオ204には、テスト順序だけでなく、具体的な
データ入力順序や、データが最大桁値であるか、また出
力値を期待値と比較する、などという情報が記述され
る。
【0050】次にテスト資源生成部203は、標準スク
リプト112を格納し、標準スクリプト112とデータ
定義込み標準シナリオ204をもとにテスト資源108
を生成する。図1のシステムと同様にこのテスト資源1
08と生成したスタブ・ドライバ107により自動テス
ト実行部105は被テストプログラム106のテストを
実行する。
【0051】このシステム構成を請求項4に記載の標準
シナリオ・標準スクリプトを標準機能の組合せとするシ
ステムに適用する場合は、標準スクリプト112に、メ
ソッドの処理単位もしくはシナリオ単位の、スタブ・ド
ライバ画面の基本操作を追加してもよい。
【0052】次に図3により請求項3に記載の自動テス
トシステムの基本構成を説明する。
【0053】基本構成は図1と同様であるが、図1のテ
スト資源の生成機構103に対応するテスト資源の生成
機構301の部分が異なり、スクリプトひな形生成部3
02を追加し、シナリオ情報を内包するスクリプト作成
機能を実現している。テスト資源生成部303には初期
状態では何も格納されていない。
【0054】スクリプトひな形生成部302は、標準シ
ナリオ111および標準スクリプト112を格納し、標
準シナリオ111および標準スクリプト112をもとに
シナリオ込み標準スクリプト304を生成する。シナリ
オ込み標準スクリプト304は、スタブ・ドライバ画面
に値を入力する、という様な単位のコマンドではなく、
一連のシナリオに沿ったスクリプトひな形である。
【0055】テスト資源生成部303は、スクリプトひ
な形生成部302の生成したシナリオ込み標準スクリプ
ト304を格納し、定義情報格納部101の定義情報1
09とシナリオ込み標準スクリプト303とをもとに、
テスト資源108を生成する。図1のシステムと同様に
このテスト資源108と本システムで生成したスタブ・
ドライバ107により自動テスト実行部105は被テス
トプログラム106のテストを実行する。
【0056】このシステム構成を請求項4に記載の標準
シナリオ・標準スクリプトを標準機能の組合せとするシ
ステムに適用する場合は、シナリオ込み標準スクリプト
303は、「一つのメソッドを呼んで対応するスタブ・
ドライバ画面を開き、値を入力し、実行キーをキック
し、出力値を取得し、出力値と期待値とを比較し、スタ
ブ・ドライバ画面を閉じる」といったメソッドの処理を
単位とするスクリプトひな形としたり、シナリオに沿っ
たメソッド処理順序を単位とするスクリプトひな形のよ
うな構成とする。
【0057】次に図4により請求項5に記載の自動テス
トシステムの基本構成を説明する。
【0058】基本構成は図1と同様であるが、プログラ
ム生成部401を追加し、被テストプログラム402の
自動生成を実現している。自動テスト実行部105、被
テストプログラム402、生成したスタブ・ドライバ1
07、生成したテスト資源108により自動テストを行
う機構406が構成される.その他の構成要素及びそれ
らの処理動作は図1と同様である。
【0059】プログラム生成部401は、被テストプロ
グラムのプログラム仕様などの情報403を格納し、定
義情報格納部101中の定義情報109とプログラム仕
様など403とをもとに、被テストプログラムの一部
(自動生成部分404)を自動生成する。コーディング
部分405は、被テストプログラムを構成するために、
自動生成部分404、その他のプログラムに加えて、必
要に応じて手動でコーディングを追加する部分である。
【0060】上記プログラム生成部はそれぞれ請求項2
に対応する図2、請求項3に対応する図3のシステム構
成にも追加することができる。
【0061】次に図1を用いて請求項1に記載の自動テ
ストシステムの処理動作を詳細に説明する。
【0062】まず定義情報格納部101の定義情報をも
とにスタブ・ドライバ107を生成する処理と、入出力
要素を説明する。
【0063】定義情報格納部101には、定義情報10
9を格納しておく。図5は定義情報格納部101中の定
義情報109のうちインタフェース定義情報501の一
例であり、構造体のデータ項目名情報502とインタフ
ェースの定義情報503からなる。この例では、一つ一
つのクラス・メソッドに共通のヘッダ「HEADER」
の構造と、「SHOUHIN」クラスの構造と、SHO
UHINクラスのメソッド「CreateObjec
t」「Update」「Delete」「GetStr
ucture」「GetVersion」の入出力項目
の仕様を定義している。図5で冒頭がstructであ
るものは以下に構造を記述することを、interfa
ceである行は以下に入出力項目の仕様を記述すること
を表す。例えばGetVersionというメソッド
は、共通ヘッダHEADERとOBJECT_IDを入
力項目とし、HEADERとVERSION_IDを出
力項目とすることを表す。定義情報109は、その他各
データ項目のデータ名、データ型、データ長の定義情報
などをもつ。ここに内容説明情報を加えてもよい。
【0064】スタブ・ドライバ生成部104には、画面
の基本仕様110を格納しておく。画面の基本仕様11
0は、スタブ・ドライバ107の画面構成および画面処
理の定義情報である。画面構成の定義情報とは主に画面
内のオブジェクトの配置情報であり、画面処理の定義情
報とはボタン押下時にどのような処理をするといったイ
ベントの定義情報である。
【0065】例として、スタブ・ドライバが画面の基本
仕様110による画面と別にメインのGUI画面をもつ
とし、そのメイン画面がメインメニューを親、クラスを
子、メソッドを孫としたメニューをもつ場合の動作を説
明する。図6は、画面の基本仕様110の一部をもとに
画面を構成した場合の、画面イメージの一例である。6
01はGUIウィンドウであり、602は入力項目名表
示部、603は値入力欄、604は被テストプログラム
の機能の実行キック用ボタン、605は出力項目名表示
部、606は出力値表示欄である。メイン画面でクラス
名を子、メソッド名を孫とするメニューを選択すると、
対応するクラス下のメソッドを実行するための画面60
1が開く。図6では、たとえば、クラス名とメソッド名
をあわせた画面タイトル「SHOUHIN.Updat
e」、入力項目名表示部602、出力項目名表示部60
5にプロパティ名「USER_ID」「SESSION
_ID」などが表示された状態で開くことを想定してい
る。入力項目名表示部602、入力欄603、出力項目
名表示部605、出力欄606の項目数は、メソッドに
より異なる。そして、入力項目表示部602のプロパテ
ィ名「USER_ID」「VERSION_ID」など
に、対応する値入力欄603にテストデータとなる値
「JPO」「0000001」などを入力してボタン6
04「Execute_SHOUHIN_Updat
e」を押下すると、対応するプログラム機能が実行さ
れ、出力項目表示部605「RETURN_CORD」
「SHOUHIN.PRICE」などに対応する出力値
表示欄606に出力値「true」「¥60」などが表
示される。図6は、SHOUHINクラスのUpdat
eメソッドを処理する画面で、実行ボタン604を押下
後出力値が表示された状態を表している。
【0066】スタブ・ドライバ生成部104で、定義情
報109をもとにGUIを持つスタブ・ドライバ107
を生成する処理フローを図7に示す。まず処理701に
おいて、変数を初期化し、処理702においてs件目の
クラス、t件目のメソッドについての定義情報を定義情
報109から読み込む。例えばメソッドの入出力データ
項目の構成などである。次に処理703でスタブ・クラ
ス画面の基本仕様110を読み込み、処理704では処
理702で読み込んだクラス名で画面の基本仕様110
中のクラス名置換用情報を置換し、処理705では処理
702で読み込んだメソッド名で画面の基本仕様110
中のメソッド名置換用情報を置換し、処理706では処
理702で読み込んだメソッドのデータ構成中のデータ
項目定義で画面の基本仕様110中のu件目のデータ項
目に関する置換用情報を置換する。処理707で1メソ
ッド内のデータ項目をすべて展開したか判定し、すべて
展開していない場合には処理708でデータ項目名のカ
ウンタをカウントアップし、処理709で次のデータ項
目の情報を読み込み、処理706に戻る。処理706か
ら709により、1メソッドを構成するデータ項目をす
べて展開する。処理707ですべて展開したという判定
結果の場合は処理710で、置換用情報を置換済みの画
面の基本仕様を出力する。1メソッドのデータ項目名の
単位で出力するのは、ここではメソッド1件ごとに1画
面をもつ場合を想定しているためである。次に処理71
1でs件目のクラスに内包するメソッドをすべて画面に
展開したかを判定し、未展開のメソッドがあれば処理7
12でメソッド名のカウンタをカウントアップし、処理
713で次のメソッドの情報を読み込み、処理715に
戻る。また、処理714により全てのクラスについて内
部メソッドを画面に展開したかを判定し未展開のクラス
があれば、処理715によりクラス項目のカウンタをカ
ウントアップし、その他のカウンタを初期化した上で処
理を処理702に戻し、次のクラスの処理を開始する。
処理714で展開が全て終わったと判定されたときは、
処理715によりすでに書き出した(出力した)、「置
換用情報を具体的値に置換済みの画面の基本仕様」をコ
ンパイルすることで画面をもつ実行形式のスタブ・ドラ
イバ107を生成する。
【0067】本発明では、被テストプログラム115の
どの機能に対しても、データ入出力のためのスタブ・ド
ライバ画面の構成、すなわち入力欄、出力値表示欄のG
UIオブジェクトの種類、配置などを固定する。メソッ
ドで入出力するデータ項目名の変更や追加削除があって
も、データ項目名称や項目数が変わるのみであり、画面
の基本仕様は一定である。
【0068】次に、定義情報格納部101の定義情報1
09をもとにテスト資源108を生成する、テスト資源
生成部102の入出力要素と処理を説明する。まずテス
ト資源生成部102には、標準シナリオ111および標
準スクリプト112を格納しておく。
【0069】標準シナリオ111は、テスト仕様を踏ま
えてテスト用にメソッドを呼ぶ順番を設計した上で操作
者が定義することを想定している。図8と図9は標準シ
ナリオ108の一例である。図8が通常のシナリオであ
り、図9が略式のシナリオである。図8のようにシナリ
オが「選択から閉じるまで」の定型的な処理の繰返しで
表せるとき、図9のような略式のシナリオ表現が可能と
なる。図9のシナリオ表現をしても、図8のシナリオへ
変換することが可能なためである。
【0070】図8において、各処理801〜808は、
それぞれが、スタブ・ドライバのメイン画面でメニュー
を選択して図6のような仕様をもつメソッド実行画面を
呼び出し、メソッド実行画面において、入力値を入力
し、実行キックを行い、出力結果を確認するもしくは取
得する、メソッド実行画面を閉じる、という一連の処理
順序情報となっている。
【0071】例えば処理801の内容は、具体的には、
次の一連の処理順序を表す情報である。「メイン画面か
ら[メインメニュー]−[クラスメニュー]「SHOU
HIN」−[メソッドメニュー]「CreateObj
ect」を選択し、メソッド実行画面(図6の601の
仕様)を開き、入力欄(図6の603)のうちHEAD
ER項目であるUSER_ID項目に「TEST」を入
力、SESSION_ID項目に「WORK」を入力し
た上で、メソッドの実行ボタン(図6の604)を押下
し、その結果出力欄(図6の606)のうちヘッダ項目
であるRETURN_CORD項目に戻り値「tru
e」が表示されることを確認し、ID項目のOBJEC
T_ID項目の戻り値を変数OG1に格納して、メソッ
ド画面を閉じる」。また、処理805の内容は、具体的
には、次の一連の処理順序を表す情報である。「メイン
画面から[メインメニュー]−[クラスメニュー]「S
HOUHIN」−[メソッドメニュー]「GetStr
ucture」を選択し、メソッド実行画面(図6の6
01の仕様)を開き、入力欄(図6の603)のうち、
ヘッダ項目であるUSER_ID項目に「TEST」を
入力、SESSION_ID項目に「WORK」を入
力、OBJECT_ID項目に処理801で取得した値
OG1を入力、VERSION_ID項目に処理802
で取得した値OG2を入力した上で、メソッドの実行ボ
タン(図6の604)を押下し、その結果出力欄(図6
の606)のうち、ヘッダ項目であるRETURN_C
ORD項目に戻り値「true」が表示されること、U
SER_ID項目に「TEST」が表示されること、S
ESSION_ID項目に「WORK」が表示されるこ
と、SHOUHINクラスのデータ構造の各項目のうち
OBJECT_ID項目に変数OG1の内容が表示され
ること、VERSION_ID項目に変数OG2の内容
が表示されること、残りのString型項目には定義
最大長データが表示されること、その他の型の項目には
定義長内の通常データが表示されること、を確認してメ
ソッド画面を閉じる」。ここで「SHOUHINクラス
のデータ構造の各項目」とは、SHOUHINクラスに
ついて図5のような定義情報があったとき、SETS、
BARCORDNO、PRICE、TENTO_FL
G、SOKO_FLGの各項目である。
【0072】図9の標準シナリオの例において、一行目
のHEADER_ARCHは、どのメソッドを呼ぶとき
も必ず入力する項目の構造の定義を想定している。HE
ADER_ARCH下のString、USER_I
D、TESTは、メソッド処理画面を呼んだら、まずH
EADER構造のなかのUSER_ID項目の入力欄
に、TESTというString型のテキストを入力す
ることを示す。インデントしていない行のうちFUNC
TIONと次行のSHOUHINは、このシナリオがS
HOUHINクラスのシナリオであることを表す。ま
た、インデントしていない行のうちCreateObj
ect以降がメソッド処理である。インデントしていな
い行の並び順がメソッドの呼び出し順に対応している。
ここでは、インデント行冒頭のIやOのうち、I項目は
入力欄への値入力処理を、O項目は、値の取得でないか
ぎり、出力値と期待値とを比較して同じであるかを確認
する処理を想定している。このような標準シナリオは複
数用意してよい。
【0073】図9において、6行目のCreateOb
ject、trueおよび次行のO、String、O
BJECT_ID、OG1は、次の処理を示す。「メイ
ン画面で[メインメニュー]−クラス名[SHOUHI
N]−メソッド名[CreateObject]という
メニューを選択すると、図6に示す仕様のメソッド処理
画面が開く。入力欄(図6の603)のうち、USER
_ID項目にTEST、SESSION_ID項目にW
ORKを入力し、実行ボタン(図6の604)を押下す
る。そして出力欄(図6の606)のうちRETURN
_CORD項目にtrueが出力されること、OBJE
CT_ID項目に出力される値を変数OG1に格納す
る、メソッド処理画面を閉じる」。また、14行目のU
pdateメソッド処理の中にある17行目のI、St
ring、SHOUHIN_ARCH、FULLは、例
えばクラスが図5に定義されたものであれば、次の処理
になる。「SHOUHINクラスのデータ項目の内St
ring型項目であるOBJECT_ID、VERSI
ON_ID、SETS、BARCORDNO、TENT
O_FLG、SOKO_FLGの各項目に、各データ定
義最大長のデータを入力し、String型でない項目
PRICEには最大長内の正常データを入力する」。こ
れはクラスのデータ構造を構成する全データ項目に入力
する処理であるが、たとえばかわりに、「I、Stri
ng、SHOUHIN.SETS、AAAA」と定義す
れば、SHOUHINクラスの項目SETS欄のみデー
タAAAAを入力する、という意味になる。また、図8
および図9の標準シナリオにおけるテスト内容は、次の
ようなものである。「オブジェクトを新規作成(Cre
teObject)できること、OBJECT_ID1
をもとにVERSION_ID2を取得(GetVer
sion)できること、ID2なしで更新(Updat
e)しようとすると戻り値がfalseとなること、S
tring型の各項目に最大バイト数を入力して更新
(Update)できること、更新したとおりの属性値
が取得(GetStructure)できること、オブ
ジェクトを削除(DeleteObject)できるこ
と、連続して同じIDのオブジェクトを削除(Dele
teObject)しようとすると戻り値がfalse
となること、削除したIDの属性値を取得(GetSt
ructure)しようとすると戻り値がfalseと
なること」。また、String型の最大桁テストのた
めにString型項目のみ最大桁を入力することに
し、Long型項目については通常範囲の値を入力する
テスト仕様を想定している。
【0074】図9の略式のシナリオから図8のシナリオ
への自動変換処理は、例えば、図10に示す処理フロー
で行う。これは、「図9の略式のシナリオ」、「定型操
作で置換用情報あり」、「定型操作」の情報を用意し、
それらの結合規則をもとにシナリオを具体化する処理に
相当する。まず処理1001によりシナリオ読み込み行
カウンタを初期化する。次に処理1001で図9のシナ
リオのs行目を読み込む。処理1003では読み込み行
がインデントのない行であるとともにHEADER_A
RCHでもFUNCTIONでもない行であることをチ
ェックしてメソッドを宣言する行であるかを判定する。
メソッド行でない場合はメソッドを呼ばないシナリオ情
報であるということであるとして処理1004でエラー
メッセージを出力して処理を終了する。メソッド名部が
ある場合は処理1005によりスタブ・ドライバ画面に
おいてメインメニュー、クラス名、メソッド名をそれぞ
れ親、子、孫メニューとするメニュー選択処理を表す記
述を書き出す。このとき、図9には、クラス名、メソッ
ド名が定義されているから、メニュー選択処理を表す記
述には、クラス名、メソッド名が入る。次に処理100
6により定型記述であるヘッダ項目の入力処理を表す記
述を書き出し、処理1007によりカウンタアップして
処理1008により標準シナリオのs行目を読み込む。
処理1009では出力値に関する記述であるかを判定す
る。行頭がOであるかで判定できる。出力値に関する記
述でない場合は、I項目であるため、処理1010で入
力値を入力する処理を表す記述を書き出し、処理100
7に戻る。処理1009で判定の結果、出力値に関する
記述であるときは、処理1011によって定型記述であ
るメソッド実行処理と戻り値の確認処理を表す記述を書
き出す。このとき、図9のシナリオ中にはメソッド名が
定義されているから、メソッド実行処理の記述には具体
的なメソッド名が入る。次に、処理1008で直前に読
み込んだ項目が処理1009で出力値操作であることが
わかっているから、処理1012により出力値に関する
処理を表す記述を書き出す。次に処理1013によりカ
ウンタアップして処理1014により標準シナリオのs
行目を読み込み、処理1015でメソッド名のある行で
あるかを判定する。処理1003と同様の判定である。
メソッド行のときは、次のメソッドを呼ぶということで
あるから、まず処理1016により処理1005で呼び
出しているメソッド処理画面を閉じることを意味する定
型記述であるメソッド処理画面を閉じる処理を表す記述
を書き出す。そして処理1017でカウントアップして
処理を処理1005に戻す。処理1015の判定結果が
メソッド行でない場合は、処理1018により読み込み
中のシナリオの終わりであるかを判定する。読み込み行
の内容がない場合はシナリオの終わりであり、処理を終
了するが、内容があるときは出力項目であるから処理1
012にもどる。ここでは1件のシナリオを具体化する
処理のみを示したが、この処理が、次々とシナリオを読
み込んで行われる処理に組み込まれることにより、複数
のシナリオの具体化処理を自動化できる。また、シナリ
オの定義が正しいことを前提にしたが、その他エラー関
連処理を挿入してよい。さらに、書き出しのフォーマッ
トは標準シナリオ用に定義したフォーマットであること
を想定している。
【0075】標準スクリプト109は、例えば、スタブ
・ドライバ画面の入力欄の項目名と入力値を引数にして
画面上に値を入力するコマンドや、メソッド名を引数に
して実行指示を被テストプログラムに与えるボタンを押
下するコマンドである。コマンドは、自動テスト実行部
114が解釈できる仕様として設定しており、スタブ・
ドライバ画面の基本操作関数であるといってよい。図1
1は、標準スクリプト109の一例であり、部品群11
01を構成する。部品群1101を構成する部品は、次
に示す定型処理をコマンドの形で記述したものといえ
る。まず部品1102は、クラス名・メソッド名などの
引数をもとにスタブ・ドライバ画面を開く処理である。
部品1103は、スタブ・ドライバ画面を識別する情報
をチェックする処理である。例えば、クラス名やメソッ
ド名から「クラス名.メソッド名」という画面タイトル
を構成している場合でメソッドごとに画面をもつ場合こ
れで画面は一意に決まるから、画面タイトルをチェック
する。スタブ・ドライバ画面をもとに「クラス名.メソ
ッド名」という画面タイトルをチェックする。部品11
04は、スタブ・ドライバ画面の入力項目表示部の表示
データ名と、対応する入力欄に入力する値とを引数とし
てスタブ・ドライバ画面中の入力欄に値を入力する処理
である。部品1105は、ボタン名を引数に、スタブ・
ドライバ画面上の引数と同じボタン名をもつボタンを押
下する処理である。部品1106は、ラベル名を引数
に、スタブ・ドライバ画面上の引数と同じラベル名をも
つラジオボタンを選択する処理である。部品1107
は、現在開いているスタブ・ドライバ画面のうち、メソ
ッド処理画面を閉じる処理である。部品1108は、ス
タブ・ドライバ画面の出力項目表示部の項目名と、変数
名とを引数にして、出力項目表示部の項目名に対応する
出力欄に出力される値を取得し、変数名の変数に格納す
る処理である。部品1109は、スタブ・ドライバ画面
の出力項目表示部の項目名と、対応する出力欄に出力さ
れる想定値(出力値の期待値)とを引数としてスタブ・
ドライバ画面中の出力欄に出力される値を取得し、想定
値と比較するとともに、比較結果をログ出力する処理で
ある。部品1110は、外部出力情報名と具体的な値を
引数として、外部出力情報がいくつかの値のリストであ
るとき、リスト中に引数と同じ値がないことをチェック
し、チェック結果をログ出力する処理である。部品11
11は、スタブ・ドライバ画面の出力項目表示部の項目
名と、データ長を引数として、項目名に対応する出力欄
に出力される値が引数のデータ長と同じであるかをチェ
ックしてチェック結果をログ出力する処理である。部品
1112は、外部出力情報名と具体的な値を引数とし
て、外部出力情報がいくつかの値のリストであるとき、
リストの項目数が引数と同じ値であることをチェック
し、チェック結果をログ出力する処理である。部品11
13は、外部出力情報名と期待値情報名とプロパティ名
を引数として、外部出力情報が行列を構成し、列項目名
をヘッダとするリスト形式であるとき、列ヘッダが引数
と異なるプロパティ名のものが、期待値情報と同じであ
ることをチェックし、チェック結果をログ出力する処理
である。部品1114は、外部出力情報名と期待値名を
引数として、外部出力情報と期待値が同じであることを
チェックし、チェック結果をログ出力する処理である。
部品群を用意するにあたり、例えばボタン押下処理を部
品一件でよくするには、図6の画面基本仕様を固定すれ
ばよい。
【0076】テスト資源108は、被テストプログラム
のシミュレーション内容が記述されたプログラムであ
り、期待値、テストデータを内包する。図12は、テス
ト資源108の処理フローの一例である。これは、図8
の変形であり、各処理に概要記述はなく、全て具体的記
述とするとともに、各処理がコマンド形式となっている
ものである。よって各処理1201〜1208は、それ
ぞれが、スタブ・ドライバのメイン画面でメニューを選
択して図6の仕様をもつメソッド実行画面を呼び出し、
メソッド実行画面において、入力値を入力し、実行キッ
クを行い、出力結果を確認するもしくは取得する、メソ
ッド実行画面を閉じる、という一連の処理となってい
る。各処理1201〜1208のうち処理1204と1
205以外の処理概要は、対応する図8の処理と同様で
あり、一連の処理を行うコマンド(スクリプト)形式で
あるか、シナリオ形式であるかの違いしかない。処理1
204と処理1205は、図8の対応処理の等倍コマン
ド化ではなく、具体化されている。
【0077】例えば、1205の内容は、具体的には、
次の一連の処理を行うスクリプトである。「メイン画面
から[メインメニュー]−[クラスメニュー]「SHO
UHIN」−[メソッドメニュー]「Get」を選択
し、メソッド実行画面(図6の601の仕様)を開き、
入力項目のうち、入力欄(図6の603)のうちヘッダ
項目であるUSER_ID項目に「TEST」を入力、
SESSION_ID項目に「WORK」を入力、OB
JECT_ID項目に処理1201で取得した値OG1
を入力、VERSION_ID項目に処理1202で取
得した値OG2を入力した上で、メソッドの実行ボタン
(図6の604)を押下し、その結果出力欄(図6の6
06)のうち、ヘッダ項目であるRETURN_COR
D項目に戻り値「true」が表示されること、USE
R_ID項目に「TEST」が表示されること、SES
SION_ID項目に「WORK」が表示されること、
OBJECT_ID項目に変数OG1の内容が表示され
ること、VERSION_ID項目に変数OG2の内容
が表示されること、SETS項目に「ABCD」(1文
字1バイトの仕様)が表示されること、BARCORD
NO項目に「ABCDEFGHIJKLM」(1文字1
バイトの仕様)が表示されること、PRICE項目に
「100」(10進数)が表示されること、TENTO
_FLG項目に「A」(1文字1バイトの仕様)が表示
されること、SOKO_FLGに「A」(1文字1バイ
トの仕様)が表示されることを確認して、メソッド画面
を閉じる」。ここではLong型1バイト以上であれ
ば、最大バイト数入力指定がシナリオにない限り100
をテストデータとする、というテスト仕様を想定して、
PRICE項目のテストデータが「100」(10進
数)としている。このように、テスト資源108は、期
待値113とテストデータ114が、スクリプト115
に組み込まれている状態であってよいが、期待値113
とテストデータ114を外部ファイルとしてスクリプト
115が読み込む仕様でもよい。またテスト資源108
は、自動テスト機構105がスタブ・ドライバ画面を標
準シナリオ111どおりに操作するプログラムに相当す
る。以上がテスト資源生成部102の処理の入出力要素
の説明である。
【0078】テスト資源生成部102の処理は、例え
ば、図13に示す処理フローで行う。ここではまず処理
1301で、標準シナリオの読み込み行カウンタおよび
読み込み構成データカウンタを初期化する。次に処理1
302で標準シナリオのs行目を読み込み、処理130
3で読み込み行に置換用情報があるかどうかを判定す
る。ここでは入出力データ処理の記述に置換用情報があ
りうることを想定している。置換用情報がない場合は、
シナリオの処理記述がシミュレーション時の処理そのも
のを表すため、処理1304により対応する標準コマン
ドを図11のスクリプト部品群から抽出し、処理130
5でシナリオの読み込み行をスクリプト化して書き出
す。次に処理1306で読み込み行カウンタをアップ
し、処理1307でシナリオのs行目を読み込む。処理
1308では処理1307で読み込んだ行が空行である
か否かを判定することなどで処理中の標準シナリオをコ
マンド化し終えたかを判定し、し終えていない場合には
処理1303に戻り、シナリオのコマンド化を続ける。
コマンド化し終えた場合は処理1309により他にコマ
ンド化未済のシナリオがあるかを調査し、ある場合は処
理1310によりそのシナリオを読み込み、処理を13
01に戻す。コマンド化未済のシナリオがない場合はコ
マンド化処理を終了する。また処理1303で置換用情
報があるときは、処理1311により標準シナリオ中の
引数基準情報を読み込み、処理1312により処理中メ
ソッドのインタフェース定義を定義情報格納部から読み
込む。これはデータ項目の構成を読むことに相当する。
次に処理1313により処理中メソッドを構成するデー
タ項目のt件目のデータ長定義を定義情報格納部から読
み込み、処理1314でデータ項目が終わったかを判定
する。判定は、処理1313で読み込んだ項目がデータ
項目であるかいなかにより判定できる。一回目は処理1
303の判定結果がYであるためデータ項目が必ずある
が、以降で、処理1314の判定の結果データ項目の終
わりであるときは、処理1315で読み込み構成データ
カウンタを初期化し、処理を1306に戻す。終わりで
ないときは、処理1316で、処理1312のインタフ
ェース定義と処理1313のデータ長とをもとに、事前
定義した規則に従って期待値とテストデータを生成す
る。次に処理1317によりシナリオ中の置換用情報を
処理1316で生成したテストデータに置換する。処理
1318ではコマンドの部品群に相当する標準スクリプ
トから読み込み中の処理内容に対応するコマンドを抽出
し、処理1319では、処理1316から1318でデ
ータ挿入を終えた処理記述を、処理1318で抽出した
コマンドでコマンド化し、処理1320ではコマンド化
した入出力処理を書き出す。次に処理1321により読
み込み構成データカウンタをカウントアップし、処理1
313に戻る。
【0079】以上の図13の処理により、シナリオに期
待値とテストデータが挿入され、記述がコマンドの形式
になるから、テスト資源を生成できる。
【0080】図13の別法として、例えば図14の処理
フローがあげられる。これは、図13の変形であり、処
理1317、1318、1319、1320の代わり
に、処理1401、1402、1403、1404に置
換した構成となっている。これは、処理1317、13
18、1319、1320を、処理1318、131
9、1317、1320の順にしたことに相当する。す
なわち、処理1316によるデータ生成後、処理140
1によりシナリオの処理記述に対応するコマンドを標準
スクリプトから抽出し、処理1402により処理をコマ
ンド化し、処理1403により生成データを挿入し、処
理1404によりコマンド置換とデータ挿入の済んだ処
理記述を書き出す。この構成により、図13と同様にし
てテスト資源を生成することができる。
【0081】次に、生成したスタブ・ドライバ107を
通して、テスト資源110をもとに被テストプログラム
106をテストする自動テスト実行部105の動作を説
明する。まず、自動テスト実行部105が、テスト資源
108中のスクリプト115の記述に沿って、スタブ・
ドライバ107を自動操作し、その自動操作にあわせて
被テストプログラム106が動作する。例えば、入力値
は、テストデータ114をスタブ・ドライバ107の画
面で対応する入力欄に入力する。また、出力値はスタブ
・ドライバ107の画面に表示されるが、スクリプト1
15の記述に出力値を確認せよというスクリプトがあれ
ば、自動テスト実行部105は出力値を取得し、期待値
113と比較する。比較結果はログとして出力できる。
出力値を変数に格納せよというスクリプトがあれば、出
力値を取得し、自動テスト実行部105が変数に格納す
る。
【0082】以上のような処理動作により請求項1に記
載の自動テストシステムは被テストプログラムのテスト
処理を実行する。
【0083】次に図2を用いて請求項2に記載の自動テ
ストシステムの処理動作を詳細に説明する。
【0084】請求項1に記載の自動テストシステムとの
構成の相違はテスト資源の生成機構318の部分であ
り、シナリオ生成部202が追加されている。この部分
の処理動作を以下に説明する。
【0085】シナリオ生成部202が定義情報格納部1
01の定義情報109と、標準シナリオ111とをもと
に、データ定義込み標準シナリオ204を生成する処理
フローを図15に示す。図15の処理フローは、図13
の変形である。図15では、第一に「処理1318から
1320がなく、処理1501がある」、第二に「処理
1304および1305がなく、処理1502があ
る」。図15は、データの定義情報からテストデータお
よび期待値を生成して、標準シナリオと組合せる処理で
あり、テスト資源生成処理である図13に比して、コマ
ンド化処理が不要である。そのため第一の相違ではま
ず、処理1501によりシナリオに生成データ長を関連
付けて書き出す処理を行う。第二の相違では読み込んだ
標準シナリオを処理1502によりそのまま転記する処
理を行う。図13の処理のうちコマンド化を省いてい
る。以上のようにしてデータ定義込み標準シナリオ20
4を生成する。
【0086】図16は、シナリオ生成部202により生
成されたデータ定義込み標準シナリオ204の一例であ
る。例えば、8行目から11行目のシナリオは、次の一
連の処理を意味する。「まず4、5、8行目の定義によ
り、SHOUHINクラス(4、5行目)のGetVe
rsionメソッド(8行目)の処理画面(スタブ・ド
ライバ画面)を開く」、「1から3行目の、全メソッド
に共通なHEADER_ARCHの定義によりスタブ・
ドライバ画面のUSER_ID項目の入力欄にTEST
を入力する、SESSION_ID項目の入力欄にWO
RKを入力する」、「9行目の定義により、7行目で出
力値を変数OG1に格納したことを受けてOBJECT
_ID項目の入力欄に変数OG1の値を入力する」、
「10行目の定義により、VERSION_ID項目の
出力欄に出力された値を変数OG2に格納する」、「S
HOUHINクラスのGetVersionメソッド画
面を閉じる」。ここではシナリオで冒頭がIで末尾がO
G1の場合はなく、冒頭がOで末尾がOG1の場合は、
出力値をOG1に格納する処理、冒頭がIで末尾がI_
OG1の場合は入力値にOG1を入力する処理、冒頭が
Oで末尾がI_OG1の場合は、出力値とOG1とが同
じことを確認する処理を表す。また図16のデータ定義
込み標準シナリオ生成もとの入力情報である、図5に例
示のインタフェース定義や図8に例示の標準シナリオ中
にないデータ長情報があるのは、別途例示しないデータ
定義情報を定義情報格納部101中の定義情報109か
ら読み込んで反映しているためである。さらに、図15
の処理では、図8のシナリオを入力とすると図12でス
クリプト化が未済の状態の処理情報となり、図9のシナ
リオを入力とすると図16のようなシナリオとなる。
【0087】このように、データ定義込み標準シナリオ
204は、データが、テスト順序の情報とあわせて記述
されたものである。生成にあたって、出力値を変数に格
納する処理では、変数名を自動生成することにしてもよ
い。
【0088】次に、テスト資源生成部203が、標準ス
クリプト111とデータ定義込み標準シナリオ204を
もとにテスト資源108を生成する処理を図17に示
す。
【0089】図17の処理フローは、図13の変形であ
る。図17では、第一に「処理1302、1311、1
313、1307、1308、1309、1310の読
み込みもとが、標準シナリオではなく、データ定義込み
標準シナリオ204となっている」。第二に「処理13
12、1313、1316、1317がない」。第三に
「処理1314、1321、1315により構成される
データ項目の終了判定処理がない」。第四に「処理13
01でシナリオ読み込みカウンタのみを初期化してい
る」。図17は、データ定義込み標準シナリオからテス
ト資源を生成する処理フローである。入力が図13と異
なるために第一の相違がある。データ構成はデータ定義
込み標準シナリオに展開済みである。そのため第二の相
違でデータ展開用処理がなく、第三の相違でデータ構造
展開用の処理がなく、第四の相違で不要なカウンタ初期
化処理をなくしている。そのため第一の相違ではまず、
処理1501によりシナリオにデータ長定義を関連付け
て書き出す処理のみを行う第二の相違では処理1502
で読み込んだ標準シナリオをそのまま転記する処理を行
う。ここでは図13の処理のうち、コマンド化とデータ
生成処理を省いている。
【0090】このように生成されたテスト資源108を
用いて前述の自動テスト実行処理と同様にして被テスト
プログラムのテスト処理を実行する。
【0091】次に図3を用いて請求項3に記載の自動テ
ストシステムの処理動作を詳細に説明する。
【0092】請求項1に記載の自動テストシステムとの
構成の相異はテスト資源の生成機構103の部分であ
り、シナリオ込み標準スクリプト303を作成するスク
リプトひな形生成部302が追加されている。この部分
の処理動作を以下に説明する。
【0093】標準シナリオ111と標準スクリプト11
2をもとに、スクリプトひな形生成部302がシナリオ
込み標準スクリプト303を生成する処理を図18に示
す。これは図14の変形である。図18では第一に「デ
ータ生成に関連する処理1311、1316、1403
がない」、第二に「処理1313がなく、処理1801
により、データ項目の定義のみを読み込む処理としてい
る」、第三に「処理1404がなく、処理1802によ
り、コマンド置換したシナリオの処理を書き出す処理を
設けている」。図18は、シナリオスクリプト化処理で
あり、データ定義を行うがデータ生成格納処理は行わな
い。そのため第一の相違ではデータ生成関連処理を省い
ており、第二の相違により「データ長定義」の読み込み
書き出しを行い、第三の相違によりテストデータが具体
化されていない処理を書き出す。以上のようにしてシナ
リオ込み標準スクリプト303を生成する。
【0094】図19は、シナリオ込み標準スクリプト3
03の処理の一例である。処理概要は、図12の変形で
ある。第一の相違は、「図12はコマンド形式である
が、図19では処理の記述がシナリオ形式であるこ
と」。第二の相違は「処理1904、1905におい
て、メソッドのデータ項目が具体的なデータ定義情報と
なっていること」。図19は、シナリオとデータ定義を
あわせたシナリオ情報である。図18の機構による生成
物はシナリオ込み標準スクリプト303であり、データ
生成やコマンド化はなく、データ定義のみ展開してい
る。そのため、第一および第二の相違が生じる。図19
において、たとえば処理部1904の6行目は、次の処
理順序情報を示す。「SOUHHINクラスのメソッド
画面上で、入力項目ヘッダが「SETS」である入力欄
にString型のデータ4バイト長のデータ入力す
る」。図19で、生成元データである図5に例示のイン
タフェース定義や図8に例示の標準シナリオ中にないデ
ータ長定義が現れているのは、別途例示しないデータ定
義情報を定義情報格納部101中の定義情報109から
読み込んで反映しているためである。また、シナリオ込
み標準スクリプト303はテスト処理順序であるシナリ
オと、スタブ・ドライバ操作コマンドである標準スクリ
プトとを組合せた情報であり、データ項目の詳細が未定
義の情報となっている。
【0095】このシナリオ込み標準スクリプト303を
もとにテスト資源生成部304がテスト資源108を生
成する処理の一例を図20に示す。これは図14の変形
である。
【0096】図20では第一に「処理1302、131
1、1307、1308、1309、1310の呼び出
しもとソースが変更され、シナリオ込み標準スクリプト
となっている」、第二に「コマンド化に関する処理13
01、1304、1305、1312、1314、13
15、1317、1401、1402がなく、処理20
11によ読み込み行カウンタのみ初期化する処理となっ
ている」、第三に「処理2008、2009、によりデ
ータを挿入して書き出す操作にし、処理2010により
シナリオ込み標準スクリプトの処理を書き出す処理にし
ている」。図20は、シナリオ込み標準スクリプトから
テスト資源を生成する処理である。そのために第一の相
違がある。シナリオ込み標準スクリプトはデータ構成展
開済かつコマンド化済のシナリオ情報であり、データ構
成の展開処理およびコマンド化処理は不要である。その
ために、第二、第三の相違がある。
【0097】このように生成されたテスト資源108を
用いて前述の自動テスト実行処理と同様にして被テスト
プログラムのテスト処理を実行する。
【0098】次に請求項4に示す被テストプログラムの
機能を標準化した場合の自動テストシステムの処理動作
の詳細を説明する。
【0099】図1における被テストプログラム106の
機能を標準化し、個々の機能が、一つまたは複数の標準
機能の組合せからなるようにする。例えば、データの新
規作成、取得、更新、関連付け、バージョンアップ、削
除、ファイル転送、検索といった種類の標準メソッドを
準備し、複数クラスで、それら標準メソッドの機能をも
つようにする。つまり、クラスAにも、クラスBにも、
新規作成、取得、更新、関連付け、バージョンアップ、
削除、ファイル転送、検索といったメソッドがあるよう
にする。全クラスとも同じ構成である必要はない。
【0100】このとき、例えばクラスAのメソッド新規
作成とクラスBのメソッド新規作成では、機能の中身が
異なるが、新規作成という基本的な処理概要は同様であ
る。クラスが違ってもメソッドが同様ならばテストの内
容も同じになる。よって、一つ以上のメソッドの処理順
序情報を標準シナリオ111とすれば、標準シナリオ1
件を、複数クラスのテストシナリオのテンプレートにで
きる。例えば、「作成、取得、更新、削除」といったメ
ソッド処理順序に、テストデータの桁数制限、チェック
内容を加えたものを標準シナリオ111として事前準備
すれば、標準シナリオ111に応じて、クラスAのテス
トも、クラスBのテストも行えるようになる。
【0101】図21、図22は、標準シナリオの一例で
ある。いずれも複数に広げて適用できるもので、どのク
ラスで使用するか、項目名などは指定されていない。
【0102】図21はメソッドの処理順序情報であり、
各クラスの構成情報を読み込んでクラス名・データ名を
埋めれば各クラスのテストシナリオができる仕掛けにな
っており、このシナリオ一件で、このメソッドをもつ全
クラスのテストシナリオに展開できる。図21におい
て、 4行目の「CreateObject、tru
e」および次行の「O、String、@@@@@@_
ID、OG1」は、次の処理を示す。「メイン画面で
[メインメニュー]−クラス名[@@@@@@]−メソ
ッド名[CreateObject]というメニューを
選択すると、メソッド処理画面(図6の601)が開
く。入力欄(図6の603)のうち、USER_ID項
目に「@@@@@@」、SESSION_ID項目に
「@@@@@@」を入力し、実行ボタンを押下する。そ
してRETURN_CORD項目に「true」が出力
されることを確認する。出力欄(図6の606)のうち
@@@@@@_ID項目の出力欄に出力される値を変数
OG1に格納する、メソッド処理画面を閉じる」。シナ
リオは、クラス名、構造体項目など、項目名を置換でき
るようになっており、置換用文字列@@@@@@は、テ
スト資源生成部107によりクラスに応じたデータ名称
などに置換される。メソッド名がクラス名を含む場合
も、シナリオに置換用文字列を配すことによって1件の
シナリオを流用できる。
【0103】12行目のUpdateメソッド処理の中
にある15行目の「I、String、@@@@@@_
ARCH、FULL」は、例えばクラスが図5に定義さ
れたものであれば、次の処理になる。「入力項目の内S
tring型項目であるOBJECT_ID、VERS
ION_ID、SETS、BARCORDNO、TEN
TO_FLG、SOKO_FLGの各項目に、各データ
定義最大長のデータを入力し、String型でない項
目PRICEには最大バイトにおさまる正常データを入
力する」。仮に15行目に「I、String、@@@
@@@.OBJECT_ID、I_OG1」とあった場
合は、構造体項目のOBJECT_ID項目の入力欄に
は4行目5行目のCreateObjectメソッドの
実行で取得したOG1を入力する」という処理とし、そ
の後に連続して「I、String、@@@@@@_A
RCH、FULL」とあった場合は、@@@@@@_A
RCHを構成するデータ項目のうちOBJECT_ID
以外の項目についてString型項目のデータに定義
最大長のデータを入力し、その他の型のデータ項目には
通常データを入力するという処理とする仕様としてもよ
い。
【0104】図21の標準シナリオにおけるテスト内容
は、次のようなものである。「オブジェクトを新規作成
(CreateObject)できること、@@@@@
@_ID1をもとに@@@@@@_ID2を取得(Ge
tVersion)すること、ID2なしで更新(Up
date)しようとすると戻り値がfalseとなるこ
と、String型の各項目に定義最大長データを入力
して更新(Update)できること、更新したとおり
の属性値が取得(GetStructure)できるこ
と、オブジェクトを削除(Delete)できること、
連続して同じIDのオブジェクトを削除(Delete
Object)しようとすると戻り値がfalseとな
ること、削除したIDの属性値を取得(GetStru
cture)しようとすると戻り値がfalseとなる
こと」。
【0105】図22はメソッド1件の処理パターンの定
型処理部品であり、構成2201もしくは2202とな
り、標準シナリオ111群もしくは標準スクリプト11
2群のうちのひとつを構成するようにする。
【0106】構成2201は、図21のシナリオを図2
3もしくは図24の構成に変換する処理自体に組み込ま
れて使用されることを想定している。図21のシナリオ
から図23のシナリオに変換する処理は、前述の図8か
ら図12の構成へ変換する図10の処理と同様であり、
構成2201の要素を組み込んで図10と同様の処理を
行うには、処理1005、処理1006、処理101
1、処理1017をそれぞれ部位2203、2204、
2205、2206の書き出し処理と置き換えればよ
い。部位2203はメニュー選択処理、2204は定型
入力処理、2205は定型実行処理、2206は定型終
了処理である。置き換えによりメソッド1件の処理パタ
ーンの定型処理部品を実装しているといえる。図21の
シナリオから図24のシナリオに変換する処理は、図1
0の処理の変形であり、処理1016で、シナリオの終
わりを判定するたびに処理1017および1019で定
型記述を書き出すたびに情報を新規作成し、シナリオフ
ァイルにパターン部品IDを追記する処理となる。
【0107】構成2202は、例えば、スタブ・ドライ
バ107の画面を操作することを想定すれば、「メイン
メニューから、クラス名を冠する親メニュー、メソッド
名を冠する子メニューを選択することでメソッドを処理
する画面を開く、メニュー選択によって開いた各メソッ
ド処理画面において、ヘッダ項目や各クラス構造体項目
に対応する入力欄に値を入力する、メソッドを実行す
る、画面に表示される出力値をテスト仕様に沿ってチェ
ックする、必要に応じて出力値を変数に取得する、出力
値を確認する、メソッドを処理する画面を閉じる」、と
いう処理パターンを定型処理として部品化したものであ
る。このとき、図21は、パターン部品の順序情報およ
び引数の条件情報に相当する。
【0108】以上に説明した入出力情報を用いてテスト
資源108を自動生成する処理の例を次に説明する。例
えば、図23の標準シナリオ111と標準スクリプト1
12と定義情報109とをもとにテスト資源生成部10
2がテスト資源108を生成する方法がある。この処理
フローの一例は、図25のフローが挙げられる。図25
では、まず処理2401により、シナリオ読み込み行カ
ウンタを初期化し、処理2502によりシナリオs行目
を読み込む。処理2503によりs行目に置換用情報が
あるかを判定し、ない場合には処理2504に移り読み
込み中の処理に対応するコマンドを抽出し、処理250
5で処理をコマンド化(スクリプト化)して書き出す。
次に処理2506でシナリオ読み込み行のカウンタをア
ップし、処理2507でs行目を読み込む。処理250
8で読み込み中のシナリオ全体をコマンド化したかを判
定し、していない場合は処理2503に戻り、コマンド
化した場合は、処理2509に移ってコマンド化してい
ないシナリオがあるかを判定する。全てコマンド化した
という判定結果のときはテスト資源生成処理を終了し、
まだコマンド化していないシナリオがある場合は処理2
510によりそのシナリオを読み込み、処理2501に
戻る。処理2503の判定の結果置換用情報がある場合
は、処理2511により置換用情報がクラス項目やデー
タ項目の名称かを判定し、名称であるときは処理251
2により置換用情報を指定クラス名やデータ項目名に置
換して、処理2504に写る。名称でないおきは処理2
513にうつり、構造体のデータ項目情報であるかを判
定し、そうでないときは。処理2514によりID項目
名であるかを判定する。ID項目名でないときは、処理
2515により置換用情報に対応する情報に置換して処
理を2504に移す。処理2514の判定の結果、置換
用情報がID項目名であるときは、処理2516により
定義情報からインタフェース定義を読み込み、処理25
17により定義された名前で置換用情報を置換して、処
理2504に移る。また処理2513の判定の結果置換
用情報がデータ生成関連処理であるときは、処理251
8に移り、図5のようにして構造を定義したデータ項目
であるかを判定し、そうである場合は処理2519で定
義情報中のインタフェースを読み込み、処理2520で
読み込み中メソッドを構成するt件目の入出力データ項
目を読み込んで処理2521に移る。処理2518で構
造体項目ではないという判定結果であったときは、処理
2521に移る。処理2521ではデータ長などの定義
情報と引数の基準情報を判定して対応データを生成し
て、読み込み行中の置換用情報を生成データに置換す
る。次に処理2522により読み込み中の行で処理する
べきデータ項目をすべて展開したかを判定し、まだ処理
するべきデータ項目がある場合は処理2523でデータ
構成項目読み込み行カウンタをカウントアップして処理
2520に戻る。処理すべきデータ項目をすべて展開し
た場合には処理2524によりデータ構成項目読み込み
行カウンタを初期化して処理2504に移る。以上のよ
うにして、テスト資源を生成できる。
【0109】別法として、図21のシナリオ(標準シナ
リオ111)と図22の構成2201の情報(シナリオ
形式)から図23のシナリオ形式に変換後、図23のシ
ナリオと定義情報109と標準スクリプト112を用い
て図12のテスト資源を生成する方法がある。図21の
情報と図22の構成2201の情報から図23の情報
(中間情報)に変換する処理の一例として、図10の処
理フローを繰り返し行う方法が挙げられることを前述し
た。以降ははじめの例と同様である。
【0110】また別法として、図21のシナリオ(標準
シナリオ111)と図22の構成2202の情報(シナ
リオ形式)から図24のシナリオ形式に変換後、図24
のシナリオと定義情報109と標準スクリプト112を
用いて図12のテスト資源を生成する方法がある。中間
情報の生成処理フローの一例は図10の変形となること
を前述した。以降はメインシナリオ2402に従って各
シナリオを順次書き出すことにより図23の情報が生成
できるため、以降ははじめの例と同様である。さらに別
法として、図21のシナリオ(標準シナリオ111)と
図22の構成2201の情報(スクリプト形式)と標準
スクリプト112から図23の情報(スクリプト形式)
に変換後、図23の情報と定義情報109を用いて図1
2のテスト資源を生成する方法がある。図23の情報生
成処理フローの一例は、図10および図25の合成とな
る。図10を先に行い、図25の処理2502入力で、
シナリオではなく図10で生成し他情報を使用すればよ
い。
【0111】ここであげた例では、いずれの方法も、ク
ラス名、メソッド名、データ項目名などが未定義の標準
シナリオや標準スクリプトから、複数クラスのテスト資
源108を生成する処理となっている。また、標準シナ
リオや標準スクリプトが流用できるように置換用情報が
内在することを特徴としている。上記のように請求項4
に示す構成では図1の構成における標準シナリオ111
と標準スクリプト112の内容が変更されているが、テ
スト資源生成部102がテスト資源108を生成する処
理も、置換用情報の処理があることを除けば請求項1と
同様に行うことができる。
【0112】図1の被テストプログラム、標準シナリ
オ、標準スクリプトの構成は、図2、図3の被テストプ
ログラム、標準シナリオ、標準スクリプトにも適用でき
る。また、標準シナリオを他クラスに展開する処理につ
いて、図23の処理2304のように、メソッド処理に
あたって全データ項目への入力が必要なシナリオでな
く、メソッドに特徴的な入力のみでよいシナリオでは、
クラスが異なってもテストデータが同じ場合が発生す
る。この場合は、一度一クラスについてテスト資源化し
てから、クラスごとに異なる部分を置換用情報に変換
し、それを標準シナリオとして準備すると、置換用情報
が少なくて多くの記述を展開できる。これにより、シナ
リオの流用度が更に大きくなり、自動テストシステムの
構築工数が削減できる。
【0113】次に図4を用いて請求項5に記載の自動テ
ストシステムの処理動作を詳細に説明する。
【0114】図1においては定義情報格納部101と被
テストプログラム106が独立していたが、図4におい
ては、その間にプログラム生成部401が介在し、定義
情報格納部101中の定義情報から被テストプログラム
の一部を自動生成する構成となっている。この被テスト
プログラムの一部を自動生成する部分の処理を以下に説
明する。
【0115】プログラム生成部401が、定義情報格納
部101中の定義情報をもとに被テストプログラムの一
部である自動生成部404を生成する。この処理は、例
えば、プログラムの定型処理部品、プログラムの処理順
序情報、定義情報をもとに、まず定義情報からメソッド
のデータ項目名、データ構成を展開して必要な情報を定
型処理部品中の置換用情報と置換する。次に、プログラ
ムの順序情報の置換用情報を対応する置換済み定型処理
部品で置換する。これにより、被テストプログラムの自
動生成部404を自動的に生成する。被テストプログラ
ムの機能実装にあたり、自動生成で不足する部分につい
ては、操作者がコーディングし、コーディング部405
を作成する。被テストプログラムのアプリケーション
は、自動生成部404とコーディング部405により実
装されることになる。被テストプログラムの自動生成に
あたり、この例では、オペレーティングシステム、およ
びミドルウェアではない、アプリケーション部分を生成
することを想定している。被テストプログラム作成部分
以外の処理は既述のシステムと同様である。請求項2、
請求項3に記載のシステム構成においてもこのプログラ
ム生成部401は同様に実装できる。
【0116】これらの構成の自動テストシステムにおい
て、仕様変更があったとき、自動テストシステムのテス
ト資源情報や被テストプログラムに仕様変更を反映する
必要がある。しかし、データ項目の追加削除・データ型
変更・定義長変更・名称変更、メソッドの追加削除・処
理内容変更・名称変更、などの仕様変更に対し、定義情
報の変更のみ、もしくは加えて標準シナリオの変更のみ
定義し直せば、あとは自動的に反映できる。処理順序情
報と入出力情報を明確にしたプログラムチェックリスト
を自動生成することや、各スクリプトの自動テストの実
行時間を一覧出力することなども可能である。
【0117】
【発明の効果】以上説明したように、本発明の自動テス
トシステムの構成をとることにより、スタブ・ドライバ
画面を起点とした自動テストにおいて、テスト仕様もし
くは被テスト側の仕様変更をテスト側に反映するにあた
り、仕様変更のために修正や作り込みが必要になるのは
定義情報と標準シナリオのみとなる。データ項目の追加
削除があったときは、定義情報のみ変更すればよく、メ
ソッドの追加削除がない限り、標準シナリオの変更が必
要なくなるため、メンテナンス工数を削減できる。
【0118】また、スタブ・ドライバ画面仕様を固定
し、標準シナリオと標準スクリプトに分けて格納するこ
とにより、標準シナリオが従来に比べ簡略化した形で定
義できるため、標準シナリオ準備工数が削減できる。標
準スクリプトも固定部品化できるため、標準スクリプト
メンテナンス工数が削減できる。
【0119】さらに、被テストプログラム側の設計標準
化により、テストの標準パターンであるシナリオを、被
テストプログラムの多くの機能テストに適用できるた
め、シナリオの流用度を高められる。同時に事前準備す
るシナリオの規模を縮小できる。これらによりさらに自
動テストシステム構築工数を削減できる。
【図面の簡単な説明】
【図1】請求項1に記載の自動テストシステムのシステ
ム構成の一例を示す図である。
【図2】請求項2に記載の自動テストシステムのシステ
ム構成の一例を示す図である。
【図3】請求項3に記載の自動テストシステムのシステ
ム構成の一例を示す図である。
【図4】請求項5に記載の自動テストシステムのシステ
ム構成の一例を示す図である。
【図5】定義情報格納部中の定義情報のうち、インタフ
ェース定義の一例を示す図である。
【図6】メソッド単位に設ける、スタブ・ドライバ画面
の基本仕様の一例を示す図である。
【図7】スタブ・ドライバの生成処理フローの一例を示
す図である。
【図8】標準シナリオの一例を示す図である。
【図9】標準シナリオの略式表現の一例を示す図であ
る。
【図10】標準シナリオの略式表現を詳細表現に変換す
る処理フローの一例を示す図である。
【図11】標準スクリプトの一例を示す図である。
【図12】テスト資源であるスクリプトの処理内容の一
例を処理フローとして示す図である。
【図13】図1および図4の構成における、テスト資源
の生成処理フローの一例を示す図である。
【図14】図1および図4の構成における、テスト資源
の生成処理フローの一例を示す図である。
【図15】テストデータ定義込みシナリオの生成処理フ
ローの一例を示す図である。
【図16】テストデータ定義込みシナリオの一例を示す
図である。
【図17】図2の構成における、テスト資源の生成処理
フローの一例を示す図である。
【図18】シナリオ込み標準スクリプトの生成処理フロ
ーの一例を示す図である。
【図19】シナリオ込み標準スクリプトの一例を示す図
である。
【図20】図3の構成における、テスト資源の生成処理
フローの一例を示す図である。
【図21】請求項4に記載の自動テストシステムの標準
シナリオの一例を示す図である。
【図22】請求項4に記載の自動テストシステムの標準
スクリプトまたは標準シナリオの一例を示す図である。
【図23】請求項4に記載の自動テストシステムの標準
シナリオの一例を示す図である。
【図24】請求項4に記載の自動テストシステムの標準
シナリオの一例を示す図である。
【図25】請求項4に記載の自動テストシステムにおけ
る、テスト資源の生成処理フローの一例を示す図であ
る。
【符号の説明】
101…定義情報格納部、102…テスト資源生成部、
103…テスト資源生成機構、104…スタブ・ドライ
バ生成部、105…自動テスト実行部、106…被テス
トプログラム、107…画面をもつスタブ・ドライバ、
108…テスト資源、109…定義情報、110…スタ
ブ・ドライバ画面の基本仕様、111…標準シナリオ、
112…標準スクリプト、113…期待値、114…テ
ストデータ、115…スクリプト、116…自動テスト
機構、201…テスト資源生成機構、202…シナリオ
生成部、203…テスト資源生成部、204…データ定
義込み標準シナリオ、301…テスト資源生成機構、3
02…スクリプトひな形生成部、303…テスト資源生
成部、304…シナリオ込み標準スクリプト、401…
プログラム生成部、402…被テストプログラム、40
3…プログラム仕様など、404…自動生成部、405
…コーディング部、501…インタフェース定義、50
2…データ構造定義、503…インタフェース定義、6
01…GUI画面、602…入力項目名表示部、603
…入力欄、604…実行ボタン、605…出力項目名表
示部、606…出力欄、701…カウンタを初期化する
処理、702…定義情報からクラス・メソッド構成を読
み込む処理、703…スタブ・ドライバ画面の基本仕様
を読み込む処理、704…読み込み中のスタブ・ドライ
バ画面基本仕様中の対応する置換用情報を定義情報中の
クラス名などで置換する処理、705…読み込み中のス
タブ・ドライバ画面基本仕様中の対応する置換用情報を
定義情報中のメソッド名などで置換する処理、706…
読み込み中のスタブ・ドライバ画面基本仕様中の対応す
る置換用情報を定義情報中のデータ項目名などで置換す
る処理、707…読み込み中の定義情報中のメソッドを
構成するデータ項目中の置換用情報をすべて定義情報中
のデータ項目名などで置換したかの判定処理、708…
データ項目の読み込み行カウンタのカウントアップ処
理、709…読み込み中の定義情報中のメソッド構成情
報からカウンタで指定したデータ項目を読み込む処理、
710…読み込み中のスタブ・ドライバ画面基本仕様中
の対応する置換用情報をすべて定義情報中のクラス名、
メソッド名、データ項目名などで置換した情報を出力す
る処理、711…読み込み中の定義情報中のクラスを構
成するすべてのメソッドについて画面基本仕様に構成情
報を展開し、出力処理をしたかを判定する処理、712
…メソッド名の読み込み行カウンタのカウントアップ処
理、713…読み込み中の定義情報中のクラス定義情報
からカウンタで指定したメソッド項目を読み込む処理、
714…読み込み中の定義情報中のすべてのクラスにつ
いて構成情報を展開した画面の基本仕様を出力したかを
判定する処理、715…クラス名の読み込み行カウンタ
のカウントアップ処理とメソッド名およびデータ項目の
読み込み行カウンタの初期化処理、801…スタブ・ド
ライバを通したSHOUHINクラスのオブジェクト新
規作成操作およびリターンコード確認処理および変数取
得処理をシミュレートするシナリオの処理、802…ス
タブ・ドライバを通したSHOUHINクラスの属性値
取得操作およびリターンコード確認処理をシミュレート
するシナリオの処理、803…スタブ・ドライバを通し
たSHOUHINクラスの属性値更新操作およびリター
ンコード確認処理をシミュレートするシナリオの処理、
804…スタブ・ドライバを通したSHOUHINクラ
スの属性値更新操作およびリターンコード確認処理をシ
ミュレートするシナリオの処理、805…スタブ・ドラ
イバを通したSHOUHINクラスの属性値取得操作お
よびリターンコード確認処理および出力値確認処理をシ
ミュレートするシナリオの処理、806…スタブ・ドラ
イバを通したオブジェクトの削除操作およびリターンコ
ード確認処理をシミュレートするシナリオの処理、80
7…スタブ・ドライバを通したオブジェクトの削除操作
およびリターンコード確認処理をシミュレートするシナ
リオの処理、808…スタブ・ドライバを通したSHO
UHINクラスの属性値取得操作およびリターンコード
確認処理をシミュレートするシナリオの処理、1001
…読み込み行カウンタを初期化する処理、1002…標
準シナリオからカウンタで指定された行を読み込む処
理、1003…読み込み行がメソッド名をもつかを判定
する処理、1004…エラーを出力する処理、1005
…読み込んだクラス名・メソッド名を子メニュー、孫メ
ニューとして選択する処理を書き出す処理、1006…
読み込み中のメソッドの入出力データ構成のうち、各メ
ソッドに共通な項目の値を入力する記述を詳細シナリオ
形式で書き出す処理、1007…読み込み行カウンタを
カウントアップする処理、1008…標準シナリオから
カウンタで指定された行を読み込む処理、1009…読
み込み行が出力値処理であるかの判定処理、1010…
読み込み行を詳細シナリオ形式で出力する処理、101
1…読み込み中のメソッドを実行し、リターンコードを
確認する記述を詳細シナリオ形式で書き出す処理、10
12…読み込み行を詳細シナリオ形式で出力する処理、
1013…読み込み行カウンタをカウントアップする処
理、1014…標準シナリオからカウンタで指定された
行を読み込む処理、1015…読み込み行がメソッド名
をもつかを判定する処理、1016…読み込み行がシナ
リオの終わりかを判定する処理、1017…メソッドを
処理するスタブ・ドライバ画面を閉じる操作記述を詳細
シナリオ形式で書き出す処理、1018…読み込み行カ
ウンタをカウントアップする処理、1019…メソッド
を処理するスタブ・ドライバ画面を閉じる操作記述を書
き出す処理、1101…標準スクリプトであるスクリプ
ト部品群、1102…クラス名・メソッド名などをもと
にした画面名を引数にスタブ・ドライバ画面を開く処理
を行うコマンド部品、1103…クラス名・メソッド名
などをもとにした画面名を引数にスタブ・ドライバ画面
を識別する処理を行うコマンド部品、1104…プロパ
ティ名と入力値を引数に、スタブ・ドライバ画面でプロ
パティ名をヘッダとする入力欄に入力値を入力する処理
を行うコマンド部品、1105…ボタン名を引数に、ス
タブ・ドライバ画面で処理対象の機能の実行キックボタ
ンを押下する処理を行うコマンド部品、1106…ボタ
ン名を引数に、スタブ・ドライバ画面で処理対象の項目
を選択するラジオボタンを選択する処理を行うコマンド
部品、1107…スタブ・ドライバ画面を閉じる処理を
行うコマンド部品、1108…プロパティ名と変数名を
引数に、スタブ・ドライバ画面でプロパティ名をヘッダ
とする出力欄の出力値を指定変数名の変数に格納する処
理を行うコマンド部品、1109…プロパティ名と期待
値を引数に、スタブ・ドライバ画面でプロパティ名をヘ
ッダとする出力欄の出力値を期待値と比較する処理およ
び比較結果のログ出力処理を行うコマンド部品、111
0…外部出力情報名と値を引数に、外部出力情報中に引
数に指定した値がないことを確認する処理と確認結果の
ログ出力処理を行うコマンド部品、1111…プロパテ
ィ名とデータ長を引数に、スタブ・ドライバ画面でプロ
パティ名をヘッダとする出力欄の出力値のデータが引数
に指定したデータ長であるかを確認する処理と確認結果
のログ出力処理を行うコマンド部品、1112…外部出
力情報名と値を引数に、外部出力情報の項目数が引数に
指定した値であるかを確認する処理と確認処理のログ出
力処理を行うコマンド部品、1113…外部出力情報名
とプロパティ名と値を引数に、外部出力情報中の、引数
に指定したプロパティ名に対応しない項目の出力値が引
数に指定した値と等しいことを確認する処理と確認処理
のログ出力処理を行うコマンド部品、1114…外部出
力情報名と値を引数に、外部出力情報中に引数に指定し
た値があることを確認する処理と確認処理のログ出力処
理を行うコマンド部品、1201…処理801と同様の
スクリプトの処理、1202…処理802と同様のスク
リプトの処理、1203…処理803と同様のスクリプ
トの処理、1204…項目、値を具体化済みの処理80
4と同様のスクリプトの処理、1205…項目、値を具
体化済みの処理805と同様のスクリプトの処理、12
06…処理806と同様のスクリプトの処理、1207
…処理807と同様のスクリプトの処理、1208…処
理808と同様のスクリプトの処理、1301…読み込
み行カウンタを初期化する処理、1302…読み込み中
の標準シナリオからカウンタで指定された行を読み込む
処理、1303…読み込み中の標準シナリオのシナリオ
処理に置換用情報があるかの判定処理、1304…読み
込み中の標準シナリオのシナリオ処理に対応するコマン
ド部品を標準スクリプトから抽出する処理、1305…
処理1304で抽出したスクリプトをもとに読み込み中
の行の処理をスクリプト形式で書き出す処理、1306
…読み込み行カウンタのカウントアップ処理、1307
…読み込み中の標準シナリオからカウンタで指定された
行を読み込む処理、1308…読み込み中の標準シナリ
オの具体的処理記述としたシナリオ処理をすべて書き出
したかの判定処理、1309…未処理の標準シナリオが
あるかの判定処理、1310…未処理の標準シナリオを
読み込む処理、1311…読み込み中の標準シナリオ中
のシナリオ処理に対応するメソッドを構成するデータ項
目が終わりであるかを判定する処理、1312…定義情
報から読み込み中の標準シナリオ中のシナリオ処理に対
応するクラス名、メソッド構成、データ構成などの情報
を読み込む処理、1313…定義情報から読み込み中の
標準シナリオ中のシナリオ処理に対応する入出力データ
のデータ長定義を読み込む処理、1314…読み込み中
の標準シナリオのシナリオ処理に対応するメソッドを構
成するデータ項目情報が終わりであるかを判定する処
理、1315…読み込み行カウンタの初期化処理、13
16…読み込み中の標準シナリオ中のシナリオ処理に対
応する引数基準情報と定義情報中のデータ長定義からテ
ストデータおよび期待値を生成する処理、1317…読
み込み中の標準シナリオ中のシナリオ処理の置換用情報
に処理1316で生成したデータを挿入する処理、13
18…読み込み中の標準シナリオ中のシナリオ処理に対
応するコマンドを標準スクリプトから抽出する処理、1
319…定義情報中のメソッド名、処理1317でデー
タを挿入したシナリオ処理、処理1318で抽出したコ
マンドをもとにスクリプト形式の具体的処理記述を構成
する処理、1320…処理1319で構成した記述を書
き出す処理、1321…メソッドを構成するデータ項目
の読み込み行カウンタのカウントアップ処理、1401
…読み込み中の標準シナリオ中のシナリオ処理に対応す
るコマンドを標準スクリプトから抽出する処理、140
2…処理1401で抽出したコマンドと読み込み中の標
準シナリオ中のシナリオ処理からスクリプト形式の具体
的処理記述を構成する処理、1403…読み込み中の標
準シナリオ中のシナリオ処理の引数に処理1316で生
成したデータを挿入する処理、1404…定義情報中の
メソッド名、処理1403でデータを挿入したシナリオ
処理、処理1401で抽出したスクリプトなどをもとに
読み込み中の処理からスクリプト形式の具体的処理記述
を構成して書き出す処理、1501…読み込み中の標準
シナリオのシナリオ処理にデータ長定義など引数基準情
報を対応させた情報を書き出す処理、1502…読み込
み中の処理を書き出す処理、1503…未処理の標準シ
ナリオがあるかを判定する処理、1701…読み込み行
カウンタの初期化処理、1702…読み込み中のデータ
定義込み標準シナリオのうちカウンタで指定された行を
読み込む処理、1703…読み込み中のデータ定義込み
標準シナリオ中の対応する引数基準情報を読み込む処
理、1704…読み込み中のデータ定義込み標準シナリ
オ中の対応するデータ長定義を読み込む処理、1705
…読み込み中のデータ定義込み標準シナリオのうちカウ
ンタで指定された行を読み込む処理、1706…読み込
み中のデータ定義込み標準シナリオのコマンド化したシ
ナリオ処理をすべて書き出したかを判定する処理、17
07…未処理のデータ定義込み標準シナリオがあるかを
判定する処理、1708…未処理のデータ定義込み標準
シナリオを読み込む処理、1801…定義情報中のメソ
ッドを構成するデータ定義情報からからカウンタで指定
された行の情報を読み込む処理、1802…コマンド化
した読み込み行中のシナリオ処理を書き出す処理、19
01…処理801と同様のスクリプトの処理、1902
…処理802と同様のスクリプトの処理、1903…処
理803と同様のスクリプトの処理、1904…処理8
04と同様のスクリプトの処理、1905…処理805
と同様のスクリプトの処理、1906…処理806と同
様のスクリプトの処理、1907…処理807と同様の
スクリプトの処理、1908…処理808と同様のスク
リプトの処理、2001…読み込み中のシナリオ込み標
準スクリプトから読み込み行カウンタに指定された行を
読み込む処理、2002…読み込み中のシナリオ込み標
準スクリプト中のスクリプト処理に対応する引数基準情
報を読み込む処理、2003…シナリオ込み標準スクリ
プトから読み込み行カウンタに指定された行を読み込む
処理、2004…読み込み中のシナリオ込み標準スクリ
プトの、置換用情報を生成データで置換したスクリプト
処理をすべて書き出したかを判定する処理、2005…
未処理のシナリオ込み標準スクリプトがあるかを判定す
る処理、2006…未処理のシナリオ込み標準スクリプ
トを読み込む処理、2007…シナリオに指定された、
もしくは別途指定された定義情報から、読み込み中のク
ラス・メソッドを構成するデータ項目を読み込む処理、
2008…読み込み中のシナリオ込み標準スクリプト中
の対応する置換用情報を処理1316で生成したデータ
で置換する処理、2009…読み込み中のシナリオ込み
標準スクリプト中シナリオ処理の対応する置換用情報を
置換した情報を出力する処理、2010…読み込み中の
シナリオ込み標準スクリプト中シナリオ処理を書き出す
処理、2011…シナリオ込み標準スクリプトの読み込
み行カウンタの初期化処理、2201…パターン部品
群、2202…パターン部品、2203…クラス名、メ
ソッド名を指定する定型処理、2204…共通ヘッダ項
目にデータを入力する定型処理、2206…呼び出した
メソッドを実行し、リターンコードの出力値を確認する
定型処理、2207…メソッド画面を呼び出してから閉
じるまでの処理パターン部品、2301…スタブ・ドラ
イバを通したオブジェクトの新規作成操作およびリター
ンコード確認処理および変数取得処理をシミュレートす
るスクリプトの処理、2302…スタブ・ドライバを通
した@@@@@@クラスの属性値取得操作およびリター
ンコード確認処理および出力値確認処理をシミュレート
するスクリプトの処理、2303…スタブ・ドライバを
通した@@@@@@クラスの属性値更新操作およびリタ
ーンコード確認処理をシミュレートするスクリプトの処
理、2304…スタブ・ドライバを通した@@@@@@
クラスの属性値更新操作およびリターンコード確認処理
をシミュレートするスクリプトの処理、2305…スタ
ブ・ドライバを通した@@@@@@クラスの属性値取得
操作およびリターンコード確認処理および出力値確認処
理をシミュレートするスクリプトの処理、2306…ス
タブ・ドライバを通したオブジェクトの削除操作および
リターンコード確認処理をシミュレートするスクリプト
の処理、2307…スタブ・ドライバを通したオブジェ
クトの削除操作およびリターンコード確認処理をシミュ
レートするスクリプトの処理、2308…スタブ・ドラ
イバを通した@@@@@@クラスの属性値取得操作およ
びリターンコード確認処理をシミュレートするスクリプ
トの処理、2401…パターン群、2402…単位パタ
ーンの順序情報、2501…読み込み行カウンタを初期
化する処理、2502…標準シナリオのうち読み込み行
カウンタに指定された行を読み込む処理、2503…読
み込み行に置換用情報があるかを判定する処理、250
4…読み込み中の処理に対応するコマンドを標準スクリ
プトから抽出する処理、2505…読み込み中の処理を
コマンド化して書き出す処理、2506…読み込み行カ
ウンタのカウントアップ処理、2507…標準シナリオ
のうち読み込み行カウンタに指定された行を読み込む処
理、2508…読み込み中のシナリオをすべて書き出し
たかを判定する処理、2509…未処理のシナリオがあ
るかを判定する処理、2510…未処理のシナリオを読
み込む処理、2511…読み込み中のシナリオ処理がク
ラス名やデータ項目名について置換用情報をもつかどう
かを判定する処理、2512…読み込み中のシナリオ処
理についてクラス名、メソッド名で対応する置換用情報
を置換する処理、2513…データ生成について置換用
情報をもつ処理であるかどうかを判定する処理、251
4…読み込み中のシナリオ処理がID項目名の処理であ
るかを判定する処理、2515…読み込み中のシナリオ
処理の置換用情報を対応する情報に置換する処理、25
16…読み込み中のメソッドについて、定義情報からイ
ンタフェース定義を読み込む処理、2517…読み込み
中のシナリオ処理のID項目名を、インタフェース定義
から読み込み、置換する処理、2518…構造体項目で
あるかどうかを判定する処理、2519…読み込み中の
メソッドについて、定義情報からインタフェース定義を
読み込む処理、2520…読み込み中のメソッドを構成
するデータ項目を定義情報から読み込む処理、2521
…定義情報中のデータ長定義とシナリオ中の引数基準情
報をもとにテストデータおよび期待値を生成して読み込
み中の処理に生成データを格納する処理、2522…読
み込み中の定義情報中のメソッドを構成するデータ項目
をすべて処理したかを判定する処理、2523…読み込
み行カウンタのカウントアップ処理、2524…読み込
み行カウンタの初期化処理。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 山口 潔 東京都江東区新砂一丁目6番27号 株式会 社日立製作所公共システム事業部内 Fターム(参考) 5B042 GA08 HH07 HH12 HH13 HH17 HH49

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 インタフェース等の定義情報を格納する
    定義情報格納部と、前記定義情報とスタブもしくはドラ
    イバの画面の基本仕様からスタブもしくはドライバを生
    成するスタブ・ドライバ生成部と、前記定義情報と、事
    前準備する標準シナリオおよび標準スクリプトとから期
    待値、テストデータ、スクリプトを生成するテスト資源
    生成部と、テスト資源生成部の生成物をもとにスタブ・
    ドライバ生成部が生成したスタブもしくはドライバを用
    いて被テストプログラムのテストを自動的に行う自動テ
    スト実行部とを備えたことを特徴とするソフトウェアプ
    ログラムの自動テストシステム。
  2. 【請求項2】 請求項1に記載の自動テストシステムに
    おいて、事前準備する定義情報と標準シナリオとからテ
    ストシナリオを生成するシナリオ生成部を備え、テスト
    資源生成部においてシナリオ生成部の生成したテストシ
    ナリオと事前準備する標準スクリプトとから期待値、テ
    ストデータ、スクリプトを生成することを特徴とするソ
    フトウェアプログラムの自動テストシステム。
  3. 【請求項3】 請求項1に記載の自動テストシステムに
    おいて、事前準備する標準シナリオおよび標準スクリプ
    トからシナリオ情報を内包するスクリプトひな形を生成
    するスクリプトひな形生成部を備え、テスト資源生成部
    において事前準備する定義情報と前記スクリプトひな形
    とをもとに期待値、テストデータ、スクリプトを生成す
    ることを特徴とするソフトウェアプログラムの自動テス
    トシステム。
  4. 【請求項4】 請求項1または2または3記載の自動テ
    ストシステムにおいて、被テストプログラムを一つまた
    は複数の標準機能の組合せとして構成し、標準シナリオ
    か標準スクリプトを標準機能の順序情報および標準機能
    単位情報で構成する、もしくは加えて標準スクリプトを
    標準シナリオ単位で構成することを特徴とするソフトウ
    ェアプログラムの自動テストシステム。
  5. 【請求項5】 請求項1または2または3または4記載
    の自動テストシステムにおいて、定義情報格納部の定義
    情報と事前準備するプログラム仕様および被テストプロ
    グラムのテンプレートを用いて被テストプログラムの一
    部もしくは全部を生成するプログラム生成部を設けたこ
    とを特徴とするソフトウェアプログラムの自動テストシ
    ステム。
JP2001177920A 2001-06-13 2001-06-13 ソフトウェアプログラムの自動テストシステム Pending JP2002366387A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001177920A JP2002366387A (ja) 2001-06-13 2001-06-13 ソフトウェアプログラムの自動テストシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001177920A JP2002366387A (ja) 2001-06-13 2001-06-13 ソフトウェアプログラムの自動テストシステム

Publications (1)

Publication Number Publication Date
JP2002366387A true JP2002366387A (ja) 2002-12-20

Family

ID=19018696

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001177920A Pending JP2002366387A (ja) 2001-06-13 2001-06-13 ソフトウェアプログラムの自動テストシステム

Country Status (1)

Country Link
JP (1) JP2002366387A (ja)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007026306A (ja) * 2005-07-20 2007-02-01 Nec Corp プログラムテスト装置、方法、及び、プログラム
JP2007072968A (ja) * 2005-09-09 2007-03-22 Ricoh Co Ltd ソフトウェア検証方法、ソフトウェア検証プログラム、及び、該プログラムが組み込まれた画像形成装置
CN100388229C (zh) * 2005-06-01 2008-05-14 中兴通讯股份有限公司 一种自动生成桩函数和驱动函数的单元测试系统及方法
JP2008176793A (ja) * 2007-01-19 2008-07-31 Suresoft Technologies Inc ソフトウェアテストシステム、ソフトウェアのテスト方法、および、そのテスト方法を実行するためのプログラムを記録したコンピュータ読取り可能な記録媒体
JP2009015557A (ja) * 2007-07-04 2009-01-22 Mitsubishi Electric Corp プログラム開発支援装置
JP2009093462A (ja) * 2007-10-10 2009-04-30 Nec Corp ユニットテスト装置、ユニットテスト方法、及びユニットテストプログラム
US7624380B2 (en) 2006-06-05 2009-11-24 International Business Machines Corporation Generating functional test scripts
JP2012037938A (ja) * 2010-08-03 2012-02-23 Toshiba Corp テストコード生成プログラム及び装置
JP2019153264A (ja) * 2018-03-05 2019-09-12 キヤノンマーケティングジャパン株式会社 情報処理装置、その処理方法及びプログラム
JP2019153265A (ja) * 2018-03-05 2019-09-12 キヤノンマーケティングジャパン株式会社 情報処理装置、その処理方法及びプログラム
JP2019160267A (ja) * 2018-03-08 2019-09-19 キヤノンマーケティングジャパン株式会社 情報処理装置、その処理方法及びプログラム
JP2019192134A (ja) * 2018-04-27 2019-10-31 キヤノンマーケティングジャパン株式会社 情報処理装置、その処理方法及びプログラム
JP2019197528A (ja) * 2018-05-07 2019-11-14 キヤノンマーケティングジャパン株式会社 プログラム、情報処理装置及び処理方法
JP2020126501A (ja) * 2019-02-06 2020-08-20 キヤノンマーケティングジャパン株式会社 プログラム、情報処理装置及び処理方法
JPWO2020021586A1 (ja) * 2018-07-23 2021-01-07 三菱電機株式会社 システム検証装置及びシステム検証方法
CN116030551A (zh) * 2023-03-29 2023-04-28 小米汽车科技有限公司 车辆自动驾驶软件的测试方法、装置、设备及存储介质

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100388229C (zh) * 2005-06-01 2008-05-14 中兴通讯股份有限公司 一种自动生成桩函数和驱动函数的单元测试系统及方法
JP2007026306A (ja) * 2005-07-20 2007-02-01 Nec Corp プログラムテスト装置、方法、及び、プログラム
JP4696744B2 (ja) * 2005-07-20 2011-06-08 日本電気株式会社 プログラムテスト装置、方法、及び、プログラム
JP2007072968A (ja) * 2005-09-09 2007-03-22 Ricoh Co Ltd ソフトウェア検証方法、ソフトウェア検証プログラム、及び、該プログラムが組み込まれた画像形成装置
US7624380B2 (en) 2006-06-05 2009-11-24 International Business Machines Corporation Generating functional test scripts
US7996819B2 (en) 2006-06-05 2011-08-09 International Business Machines Corporation Generating functional test scripts
JP2008176793A (ja) * 2007-01-19 2008-07-31 Suresoft Technologies Inc ソフトウェアテストシステム、ソフトウェアのテスト方法、および、そのテスト方法を実行するためのプログラムを記録したコンピュータ読取り可能な記録媒体
JP2009015557A (ja) * 2007-07-04 2009-01-22 Mitsubishi Electric Corp プログラム開発支援装置
JP2009093462A (ja) * 2007-10-10 2009-04-30 Nec Corp ユニットテスト装置、ユニットテスト方法、及びユニットテストプログラム
JP2012037938A (ja) * 2010-08-03 2012-02-23 Toshiba Corp テストコード生成プログラム及び装置
JP2019153264A (ja) * 2018-03-05 2019-09-12 キヤノンマーケティングジャパン株式会社 情報処理装置、その処理方法及びプログラム
JP2019153265A (ja) * 2018-03-05 2019-09-12 キヤノンマーケティングジャパン株式会社 情報処理装置、その処理方法及びプログラム
JP2019160267A (ja) * 2018-03-08 2019-09-19 キヤノンマーケティングジャパン株式会社 情報処理装置、その処理方法及びプログラム
JP7323755B2 (ja) 2018-03-08 2023-08-09 キヤノンマーケティングジャパン株式会社 情報処理システム、その制御方法及びプログラム
JP2019192134A (ja) * 2018-04-27 2019-10-31 キヤノンマーケティングジャパン株式会社 情報処理装置、その処理方法及びプログラム
JP7277694B2 (ja) 2018-04-27 2023-05-19 キヤノンマーケティングジャパン株式会社 情報処理装置、その制御方法及びプログラム
JP2019197528A (ja) * 2018-05-07 2019-11-14 キヤノンマーケティングジャパン株式会社 プログラム、情報処理装置及び処理方法
JP7311740B2 (ja) 2018-05-07 2023-07-20 キヤノンマーケティングジャパン株式会社 情報処理システム、その制御方法、及びプログラム
JPWO2020021586A1 (ja) * 2018-07-23 2021-01-07 三菱電機株式会社 システム検証装置及びシステム検証方法
JP2020126501A (ja) * 2019-02-06 2020-08-20 キヤノンマーケティングジャパン株式会社 プログラム、情報処理装置及び処理方法
JP7319516B2 (ja) 2019-02-06 2023-08-02 キヤノンマーケティングジャパン株式会社 プログラム、情報処理装置及びその制御方法
CN116030551A (zh) * 2023-03-29 2023-04-28 小米汽车科技有限公司 车辆自动驾驶软件的测试方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
JP2002366387A (ja) ソフトウェアプログラムの自動テストシステム
US6769095B1 (en) Hierarchically structured control information editor
Moon et al. An approach to developing domain requirements as a core asset based on commonality and variability analysis in a product line
US20030005413A1 (en) Method for testing of software
US7080350B2 (en) Method for developing Web applications, development support system and storage medium for storing programs developed according to the method
CN110825362A (zh) 低代码应用软件开发系统及方法
AU2005203508B2 (en) System and method for selecting test case execution behaviors for reproducible test automation
KR101885089B1 (ko) 건축 bim 설계 파일의 엑셀 파일 전환 방법
US8533207B2 (en) Information processing method, apparatus and program in XML driven architecture
US20080222539A1 (en) User interface designing apparatus
Bonczek et al. The DSS development system
JP5350428B2 (ja) 自動プログラム生成装置、方法及びコンピュータプログラム
Ahmed et al. Model-based user interface engineering with design patterns
TW523685B (en) A software development system that presents a logical view of project components, facilitates their selection, and signals missing links prior to compilation
JP2788850B2 (ja) 最適メニュー問い合わせ方式及び階層的メニュー問い合わせによる構造データの編集方式
CN111488145A (zh) 一种基于业务域数据模型库的微服务代码生成系统及方法
CN111104106A (zh) 集成业务流程与通讯报文的可视化开发方法、系统及介质
CN112860260B (zh) 一种在高校场景下基于web的跨平台应用构建工具及方法
El-Ramly et al. Mining system-user interaction traces for use case models
US7168062B1 (en) Object-oriented software system allowing live modification of an application
US20020032538A1 (en) Software test system and method
JP2001325098A (ja) アプリケーションプログラムの作成方法、データベース操作方法、項目オブジェクト管理方法、モジュール動作制御方法ならびにデータベース操作方法、項目オブジェクト管理方法およびモジュール動作制御方法を実現するためのプログラムを記録したコンピュータ可読な記録媒体
CN116627418A (zh) 一种基于递归算法的多级表单界面可视化生成方法及装置
CN115686457A (zh) 一种基于属性联动规则的页面数据处理方法和介质
Behrens et al. Requirements analysis and prototyping using scenarios and statecharts