JPH05210537A - テスト項目作成装置 - Google Patents
テスト項目作成装置Info
- Publication number
- JPH05210537A JPH05210537A JP4038430A JP3843092A JPH05210537A JP H05210537 A JPH05210537 A JP H05210537A JP 4038430 A JP4038430 A JP 4038430A JP 3843092 A JP3843092 A JP 3843092A JP H05210537 A JPH05210537 A JP H05210537A
- Authority
- JP
- Japan
- Prior art keywords
- test item
- condition
- test
- branch
- source code
- 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
Links
- 238000000605 extraction Methods 0.000 claims abstract description 25
- 230000014509 gene expression Effects 0.000 claims abstract description 14
- 239000000284 extract Substances 0.000 claims abstract description 7
- 238000000034 method Methods 0.000 claims description 98
- 230000006870 function Effects 0.000 description 9
- 238000000354 decomposition reaction Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000007704 transition Effects 0.000 description 5
- 230000006866 deterioration Effects 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
(57)【要約】
【目的】 ソースコードの全パスを通過するテスト項目
を作成する。 【構成】 ソースコード格納ファイル1からソースコー
ド入力部2がソースコードを入力する。分岐検索部3は
ソースコードの分岐行を検索し、分岐条件抽出部4は分
岐行の分岐条件を抽出する。テスト項目抽出部5は分岐
条件の正否両条件を取り出し、それらの条件をプログラ
ム入力変数のみで表した式に分解することでテスト項目
を抽出する。テスト項目登録部6はテスト項目記憶部7
にないテスト項目のみをテスト項目記憶部7に登録す
る。制御部8は3〜7を分岐行ごとに順次実行し、テス
ト項目出力部9はテスト項目10を出力する。
を作成する。 【構成】 ソースコード格納ファイル1からソースコー
ド入力部2がソースコードを入力する。分岐検索部3は
ソースコードの分岐行を検索し、分岐条件抽出部4は分
岐行の分岐条件を抽出する。テスト項目抽出部5は分岐
条件の正否両条件を取り出し、それらの条件をプログラ
ム入力変数のみで表した式に分解することでテスト項目
を抽出する。テスト項目登録部6はテスト項目記憶部7
にないテスト項目のみをテスト項目記憶部7に登録す
る。制御部8は3〜7を分岐行ごとに順次実行し、テス
ト項目出力部9はテスト項目10を出力する。
Description
【0001】
【産業上の利用分野】本発明は、ソフトウェア開発のテ
スト工程で、ソフトウェアの機能を確認するためのテス
ト項目を作成するシステムに関する。
スト工程で、ソフトウェアの機能を確認するためのテス
ト項目を作成するシステムに関する。
【0002】
【従来の技術】ソフトウェア開発のテスト工程では、ソ
フトウェアの機能を確認するためのテスト項目を作成
し、そのテスト項目に従ってテストを行うのが一般的で
ある。従来、このテスト項目はソースコードを目で追い
ながら全分岐を通過するように人手で作成するか、ある
いはテスト項目の抜けやミスを視覚的に発見しやすいよ
うにグラフ化、図形化する技法を用いたツールによって
作成していた。
フトウェアの機能を確認するためのテスト項目を作成
し、そのテスト項目に従ってテストを行うのが一般的で
ある。従来、このテスト項目はソースコードを目で追い
ながら全分岐を通過するように人手で作成するか、ある
いはテスト項目の抜けやミスを視覚的に発見しやすいよ
うにグラフ化、図形化する技法を用いたツールによって
作成していた。
【0003】
【発明が解決しようとする課題】しかし、上記のような
作成方法で作成されるテスト項目は個々の作成者のスキ
ルに依存するため、作成者によってはテスト項目の抜け
やミスが発生が見られ、そのテスト項目の抜けやミスが
ソフトウェアの品質低下の原因になるという問題点があ
った。
作成方法で作成されるテスト項目は個々の作成者のスキ
ルに依存するため、作成者によってはテスト項目の抜け
やミスが発生が見られ、そのテスト項目の抜けやミスが
ソフトウェアの品質低下の原因になるという問題点があ
った。
【0004】本発明は上述の問題点に鑑みて、作成者の
スキルに依存しない、ソースコードの全パスを通過する
テスト項目を自動的に作成するテスト項目作成装置を提
供することを目的とするものである。
スキルに依存しない、ソースコードの全パスを通過する
テスト項目を自動的に作成するテスト項目作成装置を提
供することを目的とするものである。
【0005】
【課題を解決するための手段】本発明のテスト項目作成
装置は、ソースコードを入力するソースコード入力部
と、ソースコードの分岐行を検索する分岐検索部と、上
記分岐行から分岐条件を抽出する分岐条件抽出部と、上
記分岐条件の正否両条件をプログラム入力変数のみで表
した式に表現し、更にその式からテスト項目を抽出する
テスト項目抽出部と、上記テスト項目をテスト項目記憶
部に登録するテスト項目登録部と、上記テスト項目を記
憶するテスト項目記憶部と、上記各部を分岐行ごとに順
次実行する制御部と、上記テスト項目記憶部に記憶され
たテスト項目を出力するテスト項目出力部とを有する。
装置は、ソースコードを入力するソースコード入力部
と、ソースコードの分岐行を検索する分岐検索部と、上
記分岐行から分岐条件を抽出する分岐条件抽出部と、上
記分岐条件の正否両条件をプログラム入力変数のみで表
した式に表現し、更にその式からテスト項目を抽出する
テスト項目抽出部と、上記テスト項目をテスト項目記憶
部に登録するテスト項目登録部と、上記テスト項目を記
憶するテスト項目記憶部と、上記各部を分岐行ごとに順
次実行する制御部と、上記テスト項目記憶部に記憶され
たテスト項目を出力するテスト項目出力部とを有する。
【0006】
【作用】上記の構成によれば、ソースコード入力部から
入力したソースコードの分岐行を分岐検索部で検索し
て、分岐条件抽出部において抽出した分岐条件の正否両
条件から、テキスト項目抽出部はプログラムの外側から
値を決定できるプログラム入力変数のみで表わす式に分
解することでテスト項目を抽出して、テスト項目登録部
によりテスト項目記憶部に登録し、テスト項目出力部よ
りテスト項目として出力するので、入力変数のみで表わ
すテスト項目としてソースコードの全パスを通過するテ
スト項目の作成が可能となる。
入力したソースコードの分岐行を分岐検索部で検索し
て、分岐条件抽出部において抽出した分岐条件の正否両
条件から、テキスト項目抽出部はプログラムの外側から
値を決定できるプログラム入力変数のみで表わす式に分
解することでテスト項目を抽出して、テスト項目登録部
によりテスト項目記憶部に登録し、テスト項目出力部よ
りテスト項目として出力するので、入力変数のみで表わ
すテスト項目としてソースコードの全パスを通過するテ
スト項目の作成が可能となる。
【0007】
【実施例】次に、本発明について図面を参照して説明す
る。
る。
【0008】図1は本発明の一実施例によるテスト項目
作成装置の構成図を示す。図中、1はソースコード格納
ファイル、2はソースコードを入力するソースコード入
力部、3はソースコードの分岐行を検索する分岐検索
部、4は分岐行から分岐条件を抽出する分岐条件抽出
部、5は上記分岐条件の正否両条件をプログラム入力変
数のみで表した式に表現し、更にその式からテスト項目
を抽出するテスト項目抽出部、6は上記テスト項目をテ
スト項目記憶部7に登録するテスト項目登録部、7はテ
スト項目を記憶するテスト項目記憶部、8は分岐検索部
3と分岐条件抽出部4とテスト項目抽出部5とテスト項
目登録部6とテスト項目記憶部7を分岐行ごとに順次実
行する制御部、9は上記テスト項目記憶部7に記憶され
たテスト項目を出力するテスト項目出力部、10はテス
ト項目を表す。
作成装置の構成図を示す。図中、1はソースコード格納
ファイル、2はソースコードを入力するソースコード入
力部、3はソースコードの分岐行を検索する分岐検索
部、4は分岐行から分岐条件を抽出する分岐条件抽出
部、5は上記分岐条件の正否両条件をプログラム入力変
数のみで表した式に表現し、更にその式からテスト項目
を抽出するテスト項目抽出部、6は上記テスト項目をテ
スト項目記憶部7に登録するテスト項目登録部、7はテ
スト項目を記憶するテスト項目記憶部、8は分岐検索部
3と分岐条件抽出部4とテスト項目抽出部5とテスト項
目登録部6とテスト項目記憶部7を分岐行ごとに順次実
行する制御部、9は上記テスト項目記憶部7に記憶され
たテスト項目を出力するテスト項目出力部、10はテス
ト項目を表す。
【0009】なお、本実施例では、ソースコードとして
図6に示すC言語のソースコード49をもとに説明す
る。
図6に示すC言語のソースコード49をもとに説明す
る。
【0010】ソースコード格納ファイル1は、ソースコ
ード49を格納したファイルである。
ード49を格納したファイルである。
【0011】ソースコード入力部2は、ソースコード格
納ファイル1からソースコード49を入力し、制御部8
に渡す。
納ファイル1からソースコード49を入力し、制御部8
に渡す。
【0012】分岐検索部3は、制御部8からソースコー
ド49を受け取りそのソースコードの最終行から降順に
if文を検索し、検出したif文の行番号を順次制御部
8に渡す。
ド49を受け取りそのソースコードの最終行から降順に
if文を検索し、検出したif文の行番号を順次制御部
8に渡す。
【0013】分岐条件抽出部4は、制御部8からソース
コード49と上記if文行番号を受け取りそのif文か
ら分岐条件を抽出し、抽出した分岐条件を制御部8に渡
す。テスト項目抽出部5は、以下の機能を有する。制御
部8から、ソースコード49とif文行番号とその分岐
条件を受け取る。受け取った分岐条件の逆条件を求め
る。分岐条件とその逆条件に使われている変数に対して
値(変数)を代入している代入文を、ソースコード49
のif文の1行前の行から降順に検索する。見付けた代
入文の右辺の値(変数)を分岐条件あるいはその逆条件
の変数と置き換える。以上のif文の降順検索と代入文
の変数の置換作業をソースコード49の先頭行まで繰り
返し行うことにより、分岐条件とその逆条件を関数の引
き数(a,b,c)で表したテスト項目に変換する。上
記テスト項目を制御部8に渡す。
コード49と上記if文行番号を受け取りそのif文か
ら分岐条件を抽出し、抽出した分岐条件を制御部8に渡
す。テスト項目抽出部5は、以下の機能を有する。制御
部8から、ソースコード49とif文行番号とその分岐
条件を受け取る。受け取った分岐条件の逆条件を求め
る。分岐条件とその逆条件に使われている変数に対して
値(変数)を代入している代入文を、ソースコード49
のif文の1行前の行から降順に検索する。見付けた代
入文の右辺の値(変数)を分岐条件あるいはその逆条件
の変数と置き換える。以上のif文の降順検索と代入文
の変数の置換作業をソースコード49の先頭行まで繰り
返し行うことにより、分岐条件とその逆条件を関数の引
き数(a,b,c)で表したテスト項目に変換する。上
記テスト項目を制御部8に渡す。
【0014】テスト項目登録部6は、制御部8から上記
テスト項目を受け取りテスト項目記憶部7にないテスト
項目のみテスト項目記憶部7に登録する。
テスト項目を受け取りテスト項目記憶部7にないテスト
項目のみテスト項目記憶部7に登録する。
【0015】テスト項目記憶部7は、テスト項目登録部
6によってテスト項目を記憶し保持する。
6によってテスト項目を記憶し保持する。
【0016】制御部8は、以下の機能を有する。ソース
コード入力部2からソースコード49を受け取る。分岐
検索部3に上記ソースコード49を渡し、if文行番号
を順次受け取る。分岐条件抽出部4にソースコード49
と上記if文行番号を渡し、その分岐条件を受け取る。
テスト項目抽出部5にソースコード49とif文行番号
と上記分岐条件を渡し、テスト項目を受け取る。テスト
項目登録部6に上記テスト項目を渡す。全てのif文に
対してテスト項目を登録した後、テスト項目記憶部7か
ら全テスト項目を取り込む。全テスト項目をテスト項目
出力部9に渡す。
コード入力部2からソースコード49を受け取る。分岐
検索部3に上記ソースコード49を渡し、if文行番号
を順次受け取る。分岐条件抽出部4にソースコード49
と上記if文行番号を渡し、その分岐条件を受け取る。
テスト項目抽出部5にソースコード49とif文行番号
と上記分岐条件を渡し、テスト項目を受け取る。テスト
項目登録部6に上記テスト項目を渡す。全てのif文に
対してテスト項目を登録した後、テスト項目記憶部7か
ら全テスト項目を取り込む。全テスト項目をテスト項目
出力部9に渡す。
【0017】こうして最後に、テスト項目出力部9は、
全テスト項目を出力する。次に、本実施例の動作を制御
部8の動作を中心に説明する。全体の処理について、図
2の全体処理のフローチャートに添って説明する。ま
ず、処理11ではテスト項目記憶部7内のテスト項目テ
ーブル(図9のテスト項目テーブルの遷移図に示す;5
9)の初期化を行う。次に処理12ではソースコード入
力部2がソースコード格納ファイル1からソースコード
49を入力する。次に処理13ではソースコード49の
行数(18)をカウントしカレント処理行の行番号を示
す変数1にセットする。以降処理14から処理19まで
をソースコード49の全ての行に対して行う。ここで、
ソースコードの最終行から降順に処理を行うのは、後で
説明する処理18のテスト項目重複チェックではじかれ
るテスト項目の数を減らし、処理の高速化を図るためで
ある。次に処理14では1が0より大きい(未処理の行
がある)時に処理15以降の処理でテスト項目を生成
し、1が0以下の(全ての行を処理した)時に処理20
でテスト項目を出力し処理を終了する。処理15では分
岐検索部3によって、1行がif文である時に処理16
から処理18によってテスト項目の追加を行い、1行が
if文でない時に処置19を行い次の行の処理に移る。
処理16では条件抽出部4によってif文の分岐条件を
取り出す。処理17ではテスト項目抽出部5によって上
記の分岐条件の正否両条件を関数の引き数で表された式
に変換し、それをテスト項目とする。処理18ではテス
ト項目登録部6によってテスト項目の重複チェックを行
い上記のテスト項目の内テスト項目テーブル59にない
もののみをテスト項目記憶部7内のテスト項目テーブル
59に登録する。処理19では次の行の処理に移るため
にlから1を引き処理14に戻る。処理20ではテスト
項目出力部9によってテスト項目テーブル59に格納さ
れた60に示すような全てのテスト項目を出力し、テス
ト項目10を作成する。ソースコード49の場合、最初
に処理するif文は13行目であり、処理16で取り出
される13行目の分岐条件は(m<c:以降条件Aと呼
ぶ)である。 〔テスト項目抽出処理〕 次に、上記の条件A(m<
c)のテスト項目抽出処理について図3のテスト項目抽
出処理のフローチャートを用いて説明する。このテスト
項目抽出処理では、条件Aの正否両条件(m<c,m≧
c)から、そのif文内部の実行文を実行する場合と、
実行しない場合の全ての場合を抽出し図7の条件テーブ
ル遷移図に示す条件テーブル50に登録する。
全テスト項目を出力する。次に、本実施例の動作を制御
部8の動作を中心に説明する。全体の処理について、図
2の全体処理のフローチャートに添って説明する。ま
ず、処理11ではテスト項目記憶部7内のテスト項目テ
ーブル(図9のテスト項目テーブルの遷移図に示す;5
9)の初期化を行う。次に処理12ではソースコード入
力部2がソースコード格納ファイル1からソースコード
49を入力する。次に処理13ではソースコード49の
行数(18)をカウントしカレント処理行の行番号を示
す変数1にセットする。以降処理14から処理19まで
をソースコード49の全ての行に対して行う。ここで、
ソースコードの最終行から降順に処理を行うのは、後で
説明する処理18のテスト項目重複チェックではじかれ
るテスト項目の数を減らし、処理の高速化を図るためで
ある。次に処理14では1が0より大きい(未処理の行
がある)時に処理15以降の処理でテスト項目を生成
し、1が0以下の(全ての行を処理した)時に処理20
でテスト項目を出力し処理を終了する。処理15では分
岐検索部3によって、1行がif文である時に処理16
から処理18によってテスト項目の追加を行い、1行が
if文でない時に処置19を行い次の行の処理に移る。
処理16では条件抽出部4によってif文の分岐条件を
取り出す。処理17ではテスト項目抽出部5によって上
記の分岐条件の正否両条件を関数の引き数で表された式
に変換し、それをテスト項目とする。処理18ではテス
ト項目登録部6によってテスト項目の重複チェックを行
い上記のテスト項目の内テスト項目テーブル59にない
もののみをテスト項目記憶部7内のテスト項目テーブル
59に登録する。処理19では次の行の処理に移るため
にlから1を引き処理14に戻る。処理20ではテスト
項目出力部9によってテスト項目テーブル59に格納さ
れた60に示すような全てのテスト項目を出力し、テス
ト項目10を作成する。ソースコード49の場合、最初
に処理するif文は13行目であり、処理16で取り出
される13行目の分岐条件は(m<c:以降条件Aと呼
ぶ)である。 〔テスト項目抽出処理〕 次に、上記の条件A(m<
c)のテスト項目抽出処理について図3のテスト項目抽
出処理のフローチャートを用いて説明する。このテスト
項目抽出処理では、条件Aの正否両条件(m<c,m≧
c)から、そのif文内部の実行文を実行する場合と、
実行しない場合の全ての場合を抽出し図7の条件テーブ
ル遷移図に示す条件テーブル50に登録する。
【0018】まず、処理21では条件テーブル50の初
期化を行う。次に処理22では条件テーブル50のカレ
ント行を示す変数j,条件テーブル50の登録列を示す
変数k,条件テーブル50の登録行を示す変数Mのそれ
ぞれに1をセットする。次に処理23では条件A(m<
c)を条件テーブル50のM行、k列(1行、1列)に
セットして条件テーブル51とする。次に処理24では
条件A(m<c)の逆条件(m≧c:以降条件Bと呼
ぶ)を求める。次に処理25では条件Bを条件テーブル
の条件Aの次の行に登録するために変数Mに1を足す
(M=2)。次に処理26では条件B(m≧c)を条件
テーブルのM行,k列(2行,1列)にセットして条件
テーブルとする。次に処理27では上記if文を通過す
る全ての場合をテスト項目として抽出するために条件A
(m<c)に関するテスト項目と、条件Bに関するテス
ト項目を検索する。 〔テスト項目検索処理〕 次に上記の処理27のテスト
項目検索処理について条件A(m<c)の場合を例に図
4のテスト項目検索処理のフローチャートを用いて説明
する。このテスト項目検索処理では、ソースコードを検
索して条件Aが成立するための全ての場合を関数の引数
(a,b,c)のみで表された式として取り出す。ま
ず、処理28では検索開始行変数iにl−1(12行)
をセットし、対象となっている行の1行前の行からソー
スコードを逆方向に検索する。処理29では検索開始行
変数iが0より大きければ(未検索のソースコードがあ
る場合)処理30へ分岐し、検索開始行変数iが0以下
ならば(全てのソースコードを検索した場合)テスト項
目検索処理27を終了する。この場合、i=12(>
0)なので処理30を行う。処理30ではi行が代入文
である時に処理31以降の変数の入れ換え処理を行い、
i行が代入文でない時に処理36へ分岐し次の行を検索
する。ソースコード49の13行目についてテスト項目
抽出処理を行っている場合、最初に処理される代入文は
11行目(m=b)であり、代入文(m=b)について
処理31以降を説明する。処理31では条件A(m<
c)の左辺(m)がi行の左辺と等しい時に処理33,
処理34の左辺の入れ換え処理へ、条件A(m<c)の
左辺(m)がi行の左辺と異なる時に処理32へ分岐す
る。この場合、条件A(m<c)の左辺と11行(m=
b)の左辺が等しいので、処理33を行う。ここで代入
文(m=b)はif文(9行目)内部の実行文であり、
その分岐条件(m<b)が成立するかどうかによって、
上記代入文が実行されるかどうかが左右される。そこで
9行目のif文が成立する場合と成立しない場合に条件
Aを分解して条件テーブルにそれぞれを登録する。処理
33ではこの条件A(m<c)の代入文(m<b)に関
する分解処理を行う。処理34では条件Aの左辺(m)
と代入文の右辺(b)を入れ換える。処理32,処理3
3,処理35では代入文が条件Aの右辺の代入文である
時に、処理31、処理33、処理34と同様に、条件A
の分解処理を行い、条件Aの右辺を入れ換える。処理3
6では変数lから1を引き次の行の処理に移る。 〔条件の分解処理〕 次に上記処理33の条件A(m<
c)の代入文(m=b)に関する分解処理について、図
5の条件分解処理のフローチャートを用いて説明する。
なお、各変数は以下のとおりである。
期化を行う。次に処理22では条件テーブル50のカレ
ント行を示す変数j,条件テーブル50の登録列を示す
変数k,条件テーブル50の登録行を示す変数Mのそれ
ぞれに1をセットする。次に処理23では条件A(m<
c)を条件テーブル50のM行、k列(1行、1列)に
セットして条件テーブル51とする。次に処理24では
条件A(m<c)の逆条件(m≧c:以降条件Bと呼
ぶ)を求める。次に処理25では条件Bを条件テーブル
の条件Aの次の行に登録するために変数Mに1を足す
(M=2)。次に処理26では条件B(m≧c)を条件
テーブルのM行,k列(2行,1列)にセットして条件
テーブルとする。次に処理27では上記if文を通過す
る全ての場合をテスト項目として抽出するために条件A
(m<c)に関するテスト項目と、条件Bに関するテス
ト項目を検索する。 〔テスト項目検索処理〕 次に上記の処理27のテスト
項目検索処理について条件A(m<c)の場合を例に図
4のテスト項目検索処理のフローチャートを用いて説明
する。このテスト項目検索処理では、ソースコードを検
索して条件Aが成立するための全ての場合を関数の引数
(a,b,c)のみで表された式として取り出す。ま
ず、処理28では検索開始行変数iにl−1(12行)
をセットし、対象となっている行の1行前の行からソー
スコードを逆方向に検索する。処理29では検索開始行
変数iが0より大きければ(未検索のソースコードがあ
る場合)処理30へ分岐し、検索開始行変数iが0以下
ならば(全てのソースコードを検索した場合)テスト項
目検索処理27を終了する。この場合、i=12(>
0)なので処理30を行う。処理30ではi行が代入文
である時に処理31以降の変数の入れ換え処理を行い、
i行が代入文でない時に処理36へ分岐し次の行を検索
する。ソースコード49の13行目についてテスト項目
抽出処理を行っている場合、最初に処理される代入文は
11行目(m=b)であり、代入文(m=b)について
処理31以降を説明する。処理31では条件A(m<
c)の左辺(m)がi行の左辺と等しい時に処理33,
処理34の左辺の入れ換え処理へ、条件A(m<c)の
左辺(m)がi行の左辺と異なる時に処理32へ分岐す
る。この場合、条件A(m<c)の左辺と11行(m=
b)の左辺が等しいので、処理33を行う。ここで代入
文(m=b)はif文(9行目)内部の実行文であり、
その分岐条件(m<b)が成立するかどうかによって、
上記代入文が実行されるかどうかが左右される。そこで
9行目のif文が成立する場合と成立しない場合に条件
Aを分解して条件テーブルにそれぞれを登録する。処理
33ではこの条件A(m<c)の代入文(m<b)に関
する分解処理を行う。処理34では条件Aの左辺(m)
と代入文の右辺(b)を入れ換える。処理32,処理3
3,処理35では代入文が条件Aの右辺の代入文である
時に、処理31、処理33、処理34と同様に、条件A
の分解処理を行い、条件Aの右辺を入れ換える。処理3
6では変数lから1を引き次の行の処理に移る。 〔条件の分解処理〕 次に上記処理33の条件A(m<
c)の代入文(m=b)に関する分解処理について、図
5の条件分解処理のフローチャートを用いて説明する。
なお、各変数は以下のとおりである。
【0019】M=2,i=11,j=1,k=1 この条件の分解処理では、代入文(m=b)がif文内
部の実行文である時に、そのif文が成立する場合と成
立しない場合とに条件テーブルに登録された条件Aを分
解する。
部の実行文である時に、そのif文が成立する場合と成
立しない場合とに条件テーブルに登録された条件Aを分
解する。
【0020】処理37ではi(11)行(m=b)が条
件文内の代入文である場合は処理38以降の分解処理
へ、i行が条件文内の代入文でない場合は条件の分解処
理を終了する。この場合、11行(m=b)は9行(i
f (m<b))の条件文内の代入文であるから処理3
8を行う。処理38では上記条件文の分岐条件(m<
b:以降条件Cと呼ぶ)を取り出す。処理39では条件
テーブルの1行目を条件Cが成立した場合の条件とする
ために、上記条件C(m<b)を条件テーブルのj行
(1行),k+1列(2列)にセットして条件テーブル
とする。次に処理40から処理43で条件テーブルの3
行目に条件Cが成立しなかった場合の条件を登録する。
処理40では変数Mに1を足す(M=3)。処理41で
は条件A(m<c)と同一の条件(以降条件Dと呼ぶ)
を条件テーブルのM行(3行),k列(1列)にセット
して条件テーブルとする。処理42では条件C(m<
b)の逆条件(m≧b:以降条件Eと呼ぶ)を求める。
処理43では上記条件E(m≧b)をM行(3行),k
+1列(2列)にセットして条件テーブルとする。次
に、処理44以降の処理で上記の条件C,条件D,条件
Eについてテスト項目検索処理を行い、それぞれの条件
を関数の引き数のみで表された式にする。処理44では
jjにjを、kkにkをセットする(jj=1,kk=
1)。処理45ではkにkk+1をセットする(k=
2)。次に処理27で、検索開始行を9行として条件C
(m<b)に関するテスト項目検索処理を行う。処理4
6ではjにMを、kにkkをセットする(j=3,k=
1)。次に処理27で、検索開始行を9行として条件D
(m<c)に関するテスト項目検索処理を行う。処理4
7ではkにkk+1をセットする(k=2)。次に処理
27で、検索開始行を9行として条件E(m≧b)に関
するテスト項目検索処理を行う。以上の3回のテスト項
目検索処理を行うと、8行目の代入文(m=a)によっ
て条件C,条件D,条件Eの左辺(m)が代入文の右辺
(a)に換わり条件テーブル56となる。処理48では
jにjjを、kにkkをセットする(j=1,k=
1)。
件文内の代入文である場合は処理38以降の分解処理
へ、i行が条件文内の代入文でない場合は条件の分解処
理を終了する。この場合、11行(m=b)は9行(i
f (m<b))の条件文内の代入文であるから処理3
8を行う。処理38では上記条件文の分岐条件(m<
b:以降条件Cと呼ぶ)を取り出す。処理39では条件
テーブルの1行目を条件Cが成立した場合の条件とする
ために、上記条件C(m<b)を条件テーブルのj行
(1行),k+1列(2列)にセットして条件テーブル
とする。次に処理40から処理43で条件テーブルの3
行目に条件Cが成立しなかった場合の条件を登録する。
処理40では変数Mに1を足す(M=3)。処理41で
は条件A(m<c)と同一の条件(以降条件Dと呼ぶ)
を条件テーブルのM行(3行),k列(1列)にセット
して条件テーブルとする。処理42では条件C(m<
b)の逆条件(m≧b:以降条件Eと呼ぶ)を求める。
処理43では上記条件E(m≧b)をM行(3行),k
+1列(2列)にセットして条件テーブルとする。次
に、処理44以降の処理で上記の条件C,条件D,条件
Eについてテスト項目検索処理を行い、それぞれの条件
を関数の引き数のみで表された式にする。処理44では
jjにjを、kkにkをセットする(jj=1,kk=
1)。処理45ではkにkk+1をセットする(k=
2)。次に処理27で、検索開始行を9行として条件C
(m<b)に関するテスト項目検索処理を行う。処理4
6ではjにMを、kにkkをセットする(j=3,k=
1)。次に処理27で、検索開始行を9行として条件D
(m<c)に関するテスト項目検索処理を行う。処理4
7ではkにkk+1をセットする(k=2)。次に処理
27で、検索開始行を9行として条件E(m≧b)に関
するテスト項目検索処理を行う。以上の3回のテスト項
目検索処理を行うと、8行目の代入文(m=a)によっ
て条件C,条件D,条件Eの左辺(m)が代入文の右辺
(a)に換わり条件テーブル56となる。処理48では
jにjjを、kにkkをセットする(j=1,k=
1)。
【0021】以上で条件の分解処理が終わり、次に処理
34によって条件Aの左辺(m)が代入文の右辺(b)
に換わり条件テーブルは57となる。上記のように条件
Aを分解し、その分解の結果生成された新たな条件に対
して、繰り返し前述のテスト項目検索処理を行うことに
より、最終的に条件Aが成立する全ての場合を関数の引
き数のみで表された式(テスト項目)で表すことができ
る(条件テーブル57の1行目と3行目)。
34によって条件Aの左辺(m)が代入文の右辺(b)
に換わり条件テーブルは57となる。上記のように条件
Aを分解し、その分解の結果生成された新たな条件に対
して、繰り返し前述のテスト項目検索処理を行うことに
より、最終的に条件Aが成立する全ての場合を関数の引
き数のみで表された式(テスト項目)で表すことができ
る(条件テーブル57の1行目と3行目)。
【0022】次に上記のようなテスト項目抽出処理を条
件B(m≧c)に対しても行い、条件Bが成立する全て
の場合を関数の引き数のみで表された式(テスト項目)
で表す(条件テーブル58の2行目と4行目)。
件B(m≧c)に対しても行い、条件Bが成立する全て
の場合を関数の引き数のみで表された式(テスト項目)
で表す(条件テーブル58の2行目と4行目)。
【0023】最後に処理18によって、上記の条件をテ
スト項目としてテスト項目テーブル59に登録して60
に示す項目とする。
スト項目としてテスト項目テーブル59に登録して60
に示す項目とする。
【0024】
【発明の効果】以上説明したように本発明は、ソースコ
ードの分岐行全てに対する正否両条件を取り出し、それ
ら全ての条件をプログラム入力変数のみで表された式で
表現し、それをテスト項目とすることにより、ソースコ
ードの全パスを通過するテスト項目を作成することがで
きるという効果を有する。
ードの分岐行全てに対する正否両条件を取り出し、それ
ら全ての条件をプログラム入力変数のみで表された式で
表現し、それをテスト項目とすることにより、ソースコ
ードの全パスを通過するテスト項目を作成することがで
きるという効果を有する。
【図1】本発明の一実施例によるテスト項目作成装置の
構成図である。
構成図である。
【図2】図1に示す実施例の全体の処理のフローチャー
トである。
トである。
【図3】図1に示すテスト項目抽出部の抽出処理のフロ
ーチャートである。
ーチャートである。
【図4】図1に示すテスト項目抽出部の検索処理のフロ
ーチャートである。
ーチャートである。
【図5】図1に示すテスト項目抽出部の条件分解処理の
フローチャートである。
フローチャートである。
【図6】図1に示すソースコードの1例とテスト項目を
示す図である。
示す図である。
【図7】図1に示すテスト項目記憶部の条件テーブルの
遷移図である。
遷移図である。
【図8】図1に示すテスト項目記憶部のテスト項目出力
条件テーブルの遷移図である。
条件テーブルの遷移図である。
【図9】図1に示すテスト項目記憶部のテスト項目テー
ブルの遷移図である。
ブルの遷移図である。
1 ソースコード格納ファイル 2 ソースコード入力部 3 分岐検索部 4 分岐条件抽出部 5 テスト項目抽出部 6 テスト項目登録部 7 テスト項目記憶部 8 制御部 9 テスト項目出力部 10 テスト項目
Claims (1)
- 【請求項1】 ソフトウェア開発のテスト工程でソフト
ウェアの機能を確認するためのテスト項目を作成するシ
ステムにおいて、ソースコードを入力するソースコード
入力部と、ソースコードの分岐行を検索する分岐検索部
と、上記分岐行から分岐条件を抽出する分岐条件抽出部
と、上記分岐条件の正否両条件を該プログラムの外側か
ら値を決定できるプログラム入力変数のみで表した式に
表現し、更にその式からテスト項目を抽出するテスト項
目抽出部と、上記テスト項目をテスト項目記憶部に登録
するテスト項目登録部と、上記テスト項目を記憶するテ
スト項目記憶部と、上記各部を分岐行ごとに順次実行す
る制御部と、上記テスト項目記憶部に記憶されたテスト
項目を出力するテスト項目出力部を有することを特徴と
するテスト項目作成装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4038430A JPH05210537A (ja) | 1992-01-30 | 1992-01-30 | テスト項目作成装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4038430A JPH05210537A (ja) | 1992-01-30 | 1992-01-30 | テスト項目作成装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH05210537A true JPH05210537A (ja) | 1993-08-20 |
Family
ID=12525094
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP4038430A Pending JPH05210537A (ja) | 1992-01-30 | 1992-01-30 | テスト項目作成装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH05210537A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2009070322A (ja) * | 2007-09-18 | 2009-04-02 | Nec Corp | データ処理装置、システム、プログラム、及び、方法 |
| JP2023000907A (ja) * | 2021-06-18 | 2023-01-04 | 株式会社日立製作所 | ソースコード修正支援装置及びソースコード修正支援方法 |
-
1992
- 1992-01-30 JP JP4038430A patent/JPH05210537A/ja active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2009070322A (ja) * | 2007-09-18 | 2009-04-02 | Nec Corp | データ処理装置、システム、プログラム、及び、方法 |
| JP2023000907A (ja) * | 2021-06-18 | 2023-01-04 | 株式会社日立製作所 | ソースコード修正支援装置及びソースコード修正支援方法 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP1252568A2 (en) | Apparatus for automatically generating source code | |
| CN111680494A (zh) | 相似文本的生成方法及装置 | |
| EP0737928B1 (en) | Language processing method and apparatus | |
| CN117435230A (zh) | 基于神经网络的代码注释处理方法及装置 | |
| CN114328525B (zh) | 数据处理方法及设备 | |
| JPH05210537A (ja) | テスト項目作成装置 | |
| Haji et al. | Exploratory inference chain: Exploratorily chaining multi-hop inferences with large language models for question-answering | |
| JPH0619962A (ja) | テキスト分割装置 | |
| JP2002108652A (ja) | プログラムの相関関係検出装置 | |
| JPS6190269A (ja) | 翻訳方式 | |
| JP2001125783A (ja) | 同種命令群抽出方法および同種命令群抽出装置 | |
| CN112380205B (zh) | 一种分布式架构的特征自动生成方法和系统 | |
| JPH0553780A (ja) | プログラム自動合成装置 | |
| Boinpally | Task-Specific Code Synthesis for Data Pipelines Using Transformer-Based LLM | |
| KR102066022B1 (ko) | 실행 코드 상의 함수 시그니처 생성 장치 및 방법 | |
| JPH06214777A (ja) | プログラム開発方法及び装置 | |
| Jenkins | Automated Generation of Input Output Pairs for the Cais Validation Test Suite. | |
| JPH06222913A (ja) | プログラム解析装置 | |
| JP3087699B2 (ja) | 定型情報簡易入力システム及び定型情報簡易入力方法 | |
| JPH0695890A (ja) | コンパイラにおける名前置換方式 | |
| JP2002073373A (ja) | 修正確認検査項目を元に周辺・類似機能を確認する検査プログラムを抽出するプログラム検査装置 | |
| JPH0793144A (ja) | プログラム解析装置 | |
| JPH08297579A (ja) | テキストデータにおける区切り語処理方式 | |
| JP2861630B2 (ja) | 接続構造解析器 | |
| JPH0668160A (ja) | 情報検索方式 |