JPH05324402A - プログラムのテスト状態計測方式 - Google Patents

プログラムのテスト状態計測方式

Info

Publication number
JPH05324402A
JPH05324402A JP4134878A JP13487892A JPH05324402A JP H05324402 A JPH05324402 A JP H05324402A JP 4134878 A JP4134878 A JP 4134878A JP 13487892 A JP13487892 A JP 13487892A JP H05324402 A JPH05324402 A JP H05324402A
Authority
JP
Japan
Prior art keywords
program
coverage
line
execution
branch
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
JP4134878A
Other languages
English (en)
Inventor
Toshiro Ishii
敏郎 石井
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP4134878A priority Critical patent/JPH05324402A/ja
Publication of JPH05324402A publication Critical patent/JPH05324402A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【目的】 プログラムに修正を加えることなく、高速に
プログラムのテスト・カバレッジであるC0及びC1カ
バレッジ率を計測し、あわせて履歴情報を提供すること
を目的とする。 【構成】 本発明に係るプログラムのテスト・カバレッ
ジ計測方式は、分岐情報解析部11により予めプログラ
ムを解析したカバレッジ計測テーブル8を作成し、カバ
レッジ計測部7がこのプログラムの分岐情報にもとづい
て実行回数測定行を減少させ、同時に分岐情報よりC1
カバレッジ率を計測し、それを保存する履歴ファイル1
0を持つ。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、プログラム開発にお
けるプログラム・テストに係り、特にプログラム・テス
トが十分に行なわれたかを示すプログラムのテスト・カ
バレッジの計測方式とその計測値の保存に関するもので
ある。
【0002】
【従来の技術】従来のプログラムのテスト・カバレッジ
計測方式として、例えば特公平2−25939に記載さ
れているテスト・カバレッジ計測ツールがある。図7は
テスト・カバレッジ計測ツールの構成を示す図である。
図において、1はカバレッジ計測対象のテスト・プログ
ラム、6は被テスト・プログラムをデバッグ・オプショ
ン付きでコンパイル、リンクしたときに得られる機械語
命令のアドレスと被テスト・プログラム内の対応する行
を示す行NOである。被テスト・プログラムの実行(起
動)により、テスト・カバレッジ計測ツール7が行NO
情報6をもとにブレーク命令を設定し、被テスト・プロ
グラムを実行し、ブレーク・ポイントで停止するたびに
停止したアドレスから行NO情報6の内で一致するアド
レスを検索し、一致するときにはカバレッジ計測テーブ
ル8の該当する実行回数カウンタの値に1を加えること
により各行の実行回数を求めておき、プログラム実行終
了後にカバレッジ計測テーブル8から実行された行の全
数と実行された行(カウンタが0でない)の数を求め、 [実行された行数]/[実行されるべき行の全数]×1
00 として、C0カバレッジ率を算出していた。
【0003】また、ガバレッジ率には、COの他にC1
カバレッジ率と呼ばれるものがある。C1ガバレッジ率
とは、 [実行された分岐数]/[実行されるべき分岐数の全
数]×100 として、算出されるものである。プログラムには一般的
に図8のようなセグメント(区分)に分割され、B1、
B2のような分岐を有する。このとき、すべてのセグメ
ントが実行されることは分岐B1、B2の真偽のケース
がともに実行されることと等しい。したがって、C1カ
バレッジ率もCOカバレッジ率と同様に、プログラムの
テスト状態を示す値として用いられることが多い。
【0004】
【発明が解決しようとする課題】従来のプログラムのテ
スト・カバレッジ計測方式は以上のように構成されてい
るので、プログラムの行に対応したすべてのアドレスに
ブレーク命令を設定しなければならず、プログラムの実
行時間が大幅に増加するという問題とプログラムの制御
(分岐)構造を認識していないため分岐に対するカバレ
ッジ率であるC1カバレッジを自動的に計測できないと
いう問題があった。
【0005】この発明は上記のような問題点を解決する
ためになされたもので、構造化プログラミング手法等を
用いて作成されたプログラムに対して、そのプログラム
の制御(分岐)構造を認識して、カバレッジ計測のため
に設定するブレーク命令を最小限におさえることによ
り、プログラム実行時間のうちカバレッジ計測にかかる
時間を減少させるとともに、C1カバレッジ率等のテス
ト状態を自動的に計測することができるプログラムのテ
スト状態計測方式を提供することを目的とする。
【0006】
【課題を解決するための手段】この発明に係るプログラ
ムのテスト状態計測方式は、以下の要素を有するもので
ある。 (a)複数の行から構成されるプログラムを編集して実
行モジュールを作成するとともに、プログラムの各行と
実行モジュールのアドレスとの対応を付属情報として生
成する編集部、(b)プログラムの所定の行に記載され
たプログラムの実行を制御する制御情報に基づいて、プ
ログラムの各行が、他の行の実行にともない必然的に実
行されるものか、選択的に実行されるものかを判定する
制御情報解析部、(c)上記編集部により編集された実
行モジュールを実行し、付属情報を用いて、上記制御情
報解析部により選択的に実行される行と判定された行の
実行回数をカウントすることによりテスト状態を計測す
るテスト状態計測部。
【0007】
【作用】この発明に係るプログラムのテスト状態計測方
式は、制御情報解析部がプログラムの実行制御情報(分
岐情報)からプログラムを構成する各行が選択的に実行
されるかどうかを判定し、テスト状態計測部が、その選
択的に実行されると判定された行の実行回数をカウント
することによりカバレッジ率等のテスト状態を計測する
ので、すべての行でブレーク命令を実行する必要がなく
なり、テスト状態を効率よく計測することができる。
【0008】
【実施例】実施例1.以下、この発明の実施例を図につ
いて説明する。図1は発明の一実施例におけるプログラ
ムのテスト・カバレッジ計測方式の構成を示す図であ
る。図においてカバレッジ計測対象テスト・プログラム
1は、デバッグ・オプション付きでコンパイラ・リンカ
2により変換されることにより、命令部4とデバッグ情
報部5からなる実行モジュール3として動作可能な状態
となる。このデバッグ情報部5の一部である行NO情報
6は、プログラムの行NOに対応する実行モジュール3
の命令部4のアドレスから構成されており、プログラム
の行NOが実行モジュール3のどの部分に対応している
かを示している。
【0009】次に、この発明の実施例における動作につ
いて説明する。図2はカバレッジ計測テーブル8の内容
を示している。プログラムの実行に先立って、カバレッ
ジ計測部7が分岐情報解析部11(制御情報解析部の一
例)へカバレッジ計測テーブル作成要求を行なうことに
より、分岐情報解析部11は行NO情報6よりカバレッ
ジ計測テーブル8を作成し、カウンタ84を0とする。
さらに、分岐情報解析部11はプログラム1を解析し、
分岐のある行NO、その分岐が真のとき最初に実行され
る行の行NO、その分岐が偽のとき最初に実行される行
の行NO、同一制御ブロックにあり、その分岐の真ある
いは偽のときに同時に実行されるためブレーク命令を設
定する必要のない行NOを求め、分岐フラグ85へ、そ
れぞれ分岐識別子、分岐ブロック識別子、SKIPフラ
グとして設定する。
【0010】例えば、図2では、行NOが6のときが分
岐であり、分岐識別子を1、行NOが7のときが分岐の
判定結果が真のとき実行される行であり、分岐識別子を
1、分岐ブロック識別子をYと設定し、行NOが8〜9
の行が実行されたかどうかは行NOが7の行の実行によ
って決まるというような、ブレーク命令を設定する必要
のない行であり、分岐識別子を1、分岐ブロック識別子
をY、SKIPフラグをSKIPと設定しておく。
【0011】次に、図3のフローチャートにもとづい
て、この発明の処理手順を示す。カバレッジ計測部7に
起動がかかると、対象プログラムのカバレッジ計測テー
ブル8の存在を調べ(110)、存在しないときにはカ
バレッジ計測テーブル8の生成(130)を行なう。カ
バレッジ計測テーブル8が存在するときには、実行モジ
ュールの生成日時とカバレッジ計測テーブル8の最終書
込み日時を比較し(120)、実行モジュールの方が新
しいときにはカバレッジ計測テーブル8の再生成(13
0)を行なう。
【0012】これら処理の完了後、カバレッジ計測部7
はカバレッジ計測テーブル8を読込み(140)、分岐
フラグにSKIPフラグの立っていない(150)と
き、ブレーク命令の設定(160)を行い、全行NOが
終了(170)するまで、この処理を続ける。ブレーク
命令の設定終了後、実行モジュールを動作させ(18
0)、ブレーク・ポイントでの停止のたびに(19
0)、停止アドレスと一致するカバレッジ計測テーブル
の該当カウンタ84に1を加え(200)、プログラム
終了までこれを続ける。
【0013】以上のように、この実施例によるプログラ
ムのテスト・カバレッジ計測方式は、図2で示すように
カバレッジ計測テーブル8に分岐フラグを設け、プログ
ラムの実行に先立って実行されるカバレッジ計測部7が
分岐情報解析部11を呼び出し、分岐情報解析部11が
プログラム1を解析し、分岐フラグ85の分岐識別子、
分岐ブロック識別子、SKIPフラグを設定し、カバレ
ッジ計測部7がSKIPフラグの立っていない行NOの
アドレスにのみブレーク命令を設定する。
【0014】次に、図3のカバレッジ率の計算(21
0)について説明する。図4は、C0カバレッジを計測
するためのフローチャートである。プログラムが終了し
たときに生成したカバレッジ計測テーブルを読込み(2
21)、カウンタ84が0より大きければ実行された行
数を1加算し(227)、カウンタ84が0のときに
は、分岐フラグ85のSKIPフラグがSKIPであれ
ば、分岐フラグの分岐ブロック識別子が同じで、SKI
Pフラグのないレコードを取り出し(225)、そのレ
コードのカウンタが0より大きければ実行された行数を
1加算する(227)。
【0015】カバレッジ計測テーブルのレコードが終了
するまで上記操作を続けることにより、C0カバレッジ
率は以下のように計算される。 [実行された行数]/[実行されるべき行の全数]×1
00
【0016】一方、C1カバレッジ率は、分岐フラグの
うち、分岐ブロック識別子があり、SKIPフラグのな
い行の数をAとしたとき、以下のように計算される。 [Aのうちカウンタ>0の行の数]/[A]×100
【0017】このように、この実施例では、図2で示す
カバレッジ計測テーブル8から、分岐フラグ85のうち
SKIPフラグの立っていない分岐識別子、分岐ブロッ
ク識別子を取り出し、それらカウンタより分岐の実行状
況を計測する。
【0018】次に、図3の210においてカバレッジ計
測部7が計測したC0及びC1カバレッジ率をレポート
出力する(220)。また、履歴ファイル10へテスト
実行日時、ステップ数をともなって、出力(230)。
このように、この実施例は、プログラム終了のたびに図
1で示す履歴ファイル10へカバレッジ率等を保存す
る。このように、カバレッジ率を履歴ファイル10へ記
録するのは、従来はプログラムの修正のたびにカバレッ
ジ率との整合性を保つために計測したカバレッジ率を0
クリアする必要があるため第三者からテスト状況が直ち
に把握できないという問題があったためであり、履歴を
とることにより、テストの履歴管理ができ、第三者がプ
ログラムの修正状況やテスト進捗状況を直ちに把握でき
るという効果がある。
【0019】以上のように、この実施例は、プログラム
をコンパイル、リンクし作成した実行モジュールの付属
情報を用い、実行モジュールの動作前に一時的にストッ
プさせるブレーク命令をプログラムの行NOに対応する
アドレスに埋め込み、実行モジュール動作時、ブレーク
したアドレスから対応する行NOを求め、求めた行を実
行したと認識することで、プログラムに変更を加えるこ
となくカバレッジ率を計測するカバレッジ計測方式にお
いて、プログラムの制御(分岐)情報を用いることによ
り、カバレッジ計測上必要とする最小限のブレーク命令
の埋め込みのみを行なうように構成したことを特徴とす
る。また、上記計測方式にプログラムの分岐に対するカ
バレッジ率であるC1カバレッジ計測手段を設けたこと
を特徴とする。また、上記計測方式にテスト実行日時、
テストごとのカバレッジ率などを履歴として保存する手
段を設けたことを特徴とする。
【0020】実施例2.上記実施例1においては、分岐
する場合が一度ある場合のみを例として示したが、この
実施例2においては、分岐が二重になっている場合につ
いて説明する。図5は分岐が二重になっている場合のプ
ログラムの一例を示す図であり、(a)にそのソースコ
ードを示し、(b)にそのソースコードに対応して分岐
情報解析部11が作成するカバレッジ計測テーブル8の
一部を示したものである。このプログラムはif文が二
重に存在して構成されている場合を示している。分岐情
報解析部11はif文が二重になっていることを解析す
ることにより、図5(b)に示したような分岐フラグ8
5を生成する。85(a)は行NO1に対するif文の
分岐フラグを示したものであり、分岐フラグ85(b)
は行NO2に対するif文の分岐フラグを示したもので
ある。このように分岐フラグ85(a),85(b)が
二重の構造になった場合には分岐フラグ85(a)と8
5(b)の両方の分岐フラグのSKIPフラグがSKI
Pと設定されたもののみがブレークポイントを設定不要
な行として認識されることになる。この場合は、行NO
4および行NO6が両方の分岐フラグ85(a)、85
(b)において、SKIPと設定されているために、行
NO4および行NO6がブレークポイントを設定不要な
行として認識される。なお、この例においてもカバレッ
ジ率の計算方法等については実施例1で説明したものと
同様な方法で行なうことができ、ここではその説明を省
略する。
【0021】実施例3.上記実施例1、2においては、
分岐する場合が一重あるいは二重までの場合について示
したが、三重、四重以上の場合においても同様な方法を
適用する事によりカバレッジ率を計算することが可能で
ある。
【0022】実施例4.次に、この実施例4において
は、メインルーチンおよびサブルーチンという関係があ
った場合のカバレッジの計測方式について説明する。図
6はメインルーチンからサブルーチンSUB Aが呼ば
れる場合の概念図を示したものである。前述した実施例
1、2、3に記載されたカバレッジ計測方式はメインル
ーチンあるいはサブルーチンの中で閉じた範囲で実行す
るものである。したがって、図6に示すようにメインル
ーチンからサブルーチンが呼ばれるような場合であって
もサブルーチンを呼ぶ命令(CALL A)はひとつの
命令として認識され、実行回数がカウントされることに
なる。ブレーク命令の埋め込みに関してもこのCALL
命令の直前と直前に埋め込むようにするため、通常の命
令と同様な扱いをすることができ、サブルーチンを実行
するにあたっても前述したカバレッジ計測方式を適用す
ることが可能である。
【0023】実施例5.上記実施例1から4において
は、プログラムのどの範囲を指定してカバレッジを計測
するかを特には述べていないが、たとえば、その方法と
しては行番号を範囲指定することにより、計測範囲を指
定することが可能である。あるいは、図6に示したよう
に、メインルーチンあるいはサブルーチンの名前等で範
囲指定をすることも可能である。通常はプログラムを各
ルーチン単位で開発デバッグすることが多いために一つ
のルーチンを指定してカバレッジを計測することが望ま
しく、サブルーチン名等で範囲指定することが望まし
い。
【0024】実施例6.上記実施例1から5において
は、カバレッジ率を計測する場合を説明したが、この発
明はC0カバレッジ率、C1カバレッジ率を計算する場
合ばかりでなく、その他のテスト状況を計測して出力す
るような場合においても用いることが可能である。
【0025】
【発明の効果】以上のようにこの発明によれば、プログ
ラムの制御(分岐)情報を把握して、ブレーク命令の設
定数を必要最小限にできる。さらに分岐情報のみでな
く、プログラムのすべてブロック構造を把握しブレーク
命令を設定することにより、一層の効果が期待できる。
また、分岐フラグを参照して計測することにより、C1
カバレッジ率が自動的に計測できるという効果がある。
【図面の簡単な説明】
【図1】本発明の一実施例の構成を示す図である。
【図2】本発明のカバレッジ計測テーブルの内容を示す
図である。
【図3】本発明のカバレッジ計測部の処理手順を示す図
である。
【図4】本発明のC0カバレッジ率を計測するための処
理手順を示す図である。
【図5】本発明の他の実施例を説明する図である。
【図6】本発明の他の実施例を説明する図である。
【図7】従来のカバレッジ計測方式の一実施例を示す図
である。
【図8】C1カバレッジ率を説明する図である。
【符号の説明】
1 プログラム 2 コンパイラ・リンカ 3 実行モジュール 4 命令部 5 デバッグ情報部 6 行NO情報 7 カバレッジ計測部 8 カバレッジ計測テーブル(ファイル) 9 カバレッジレポート 10 履歴ファイル 11 分岐情報解析部 12 履歴レポート出力部 13 履歴レポート

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 以下の要素を有するプログラムのテスト
    状態計測方式 (a)複数の行から構成されるプログラムを編集して実
    行モジュールを作成するとともに、プログラムの各行と
    実行モジュールのアドレスとの対応を付属情報として生
    成する編集部、 (b)プログラムの所定の行に記載されたプログラムの
    実行を制御する制御情報に基づいて、プログラムの各行
    が、他の行の実行にともない必然的に実行されるもの
    か、選択的に実行されるものかを判定する制御情報解析
    部、 (c)上記編集部により編集された実行モジュールを実
    行し、付属情報を用いて、上記制御情報解析部により選
    択的に実行される行と判定された行の実行回数をカウン
    トすることによりテスト状態を計測するテスト状態計測
    部。
JP4134878A 1992-05-27 1992-05-27 プログラムのテスト状態計測方式 Pending JPH05324402A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4134878A JPH05324402A (ja) 1992-05-27 1992-05-27 プログラムのテスト状態計測方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4134878A JPH05324402A (ja) 1992-05-27 1992-05-27 プログラムのテスト状態計測方式

Publications (1)

Publication Number Publication Date
JPH05324402A true JPH05324402A (ja) 1993-12-07

Family

ID=15138612

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4134878A Pending JPH05324402A (ja) 1992-05-27 1992-05-27 プログラムのテスト状態計測方式

Country Status (1)

Country Link
JP (1) JPH05324402A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11120030A (ja) * 1997-10-21 1999-04-30 Toshiba Corp プログラムのテスト装置及び方法並びにプログラムのテスト用ソフトウェアを記録した記録媒体
US7353500B2 (en) 2004-05-27 2008-04-01 Hitachi Software Engineering Co., Ltd. Suppressing execution of monitoring measurement program pointed to by inserted branch after threshold number of coverage to reduce instruction testing overhead

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11120030A (ja) * 1997-10-21 1999-04-30 Toshiba Corp プログラムのテスト装置及び方法並びにプログラムのテスト用ソフトウェアを記録した記録媒体
US7353500B2 (en) 2004-05-27 2008-04-01 Hitachi Software Engineering Co., Ltd. Suppressing execution of monitoring measurement program pointed to by inserted branch after threshold number of coverage to reduce instruction testing overhead

Similar Documents

Publication Publication Date Title
US5987250A (en) Transparent instrumentation for computer program behavior analysis
JP2749528B2 (ja) エラー解析用のトレーサシステム
US5142679A (en) Method and apparatus for collecting execution status data of structured program
US7100152B1 (en) Software analysis system having an apparatus for selectively collecting analysis data from a target system executing software instrumented with tag statements and method for use thereof
US20060041867A1 (en) Method, apparatus and computer program product for implementing enhanced compiled breakpoint analysis
US7353500B2 (en) Suppressing execution of monitoring measurement program pointed to by inserted branch after threshold number of coverage to reduce instruction testing overhead
JPH0748182B2 (ja) プログラム・エラー検出方法
JPH05324402A (ja) プログラムのテスト状態計測方式
US20050050524A1 (en) Generating software test information
JPH0581070A (ja) プログラマブルコントローラ、およびプログラマブルコントローラにおけるユーザプログラム実行方法
JP4055197B2 (ja) プログラムに含まれる手続きの解析装置
JP3011115B2 (ja) デバッグシステム
JPH0283749A (ja) マイクロプロセッサの内部割込み制御方式
JPS63289654A (ja) プログラム分岐命令モニタ方式
JPH01155438A (ja) コンパイラ試験方式
JPS6191733A (ja) プログラムのテスト機構
JPH08194633A (ja) レベル1カバレージ計測方法及び計測ツール
JPH07295857A (ja) プログラムデバッグ方法
JPH01205348A (ja) プログラムデバッグ方式
JPH0353334A (ja) 言語処理プログラムのデバッグ情報出力処理方式
JPH0410139A (ja) 知識ベースを利用した動的バグ検出方式
JPH0193826A (ja) 高級言語プログラムのダイナミックステップカウント方式
JPH01246638A (ja) 書込み命令の領域誤り判定方式
JPH1195995A (ja) データフロー解析装置、データフロー解析方法及びそのためのコンピュータプログラムを記録した記録媒体
JPH11224185A (ja) 変数影響解析装置及び変数影響解析方法