JPH01229341A - プログラムテスト方式 - Google Patents

プログラムテスト方式

Info

Publication number
JPH01229341A
JPH01229341A JP63053491A JP5349188A JPH01229341A JP H01229341 A JPH01229341 A JP H01229341A JP 63053491 A JP63053491 A JP 63053491A JP 5349188 A JP5349188 A JP 5349188A JP H01229341 A JPH01229341 A JP H01229341A
Authority
JP
Japan
Prior art keywords
program
change
coverage information
source code
information
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
JP63053491A
Other languages
English (en)
Inventor
Hiroyuki Suzuki
啓之 鈴木
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 JP63053491A priority Critical patent/JPH01229341A/ja
Publication of JPH01229341A publication Critical patent/JPH01229341A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はデータ処理システムにおけるプログラムテスト
方式に係り、特にプログラムの一部を変更した場合のカ
バレジ情報の継承に好適なプログラムテスト方式に関す
る。
〔従来の技術〕
プログラムのテストにおいては、ノ)−ドウエア機構を
用いて、機械コードレベルでの命令実行、分岐実行の有
無を把握するテスト力Aレジの概念が一般的になってい
る。この場合、従来はプログラムの一部に変更があり、
ソースコードの一部力を変わり、メモリ上にローディン
グされる機械語のメモリロケーシ式ンが変化すると、変
更前のプログラム全体のカバレジ情報をすべて無効とし
、全テストを再実行していた。なお、プログラムのテス
トとして関連するものには、例えば特開昭58−181
152号公報が挙げられる。
〔発明が解決しようとする課題〕
通常、プログラム開発においては、一部分のソースコー
ドが変化する不良修正が数多く発生する。
従来技術においては、このような場合も変更前のプログ
ラム全体のカバレジ情報をすべて無効とし、テストを繰
返すこと\なるため、テストの作業効率が悪いという問
題があった。
本発明の目的は、プログラムの変更があった場合、変更
で影響を受ける範囲のカバレジ情報のみ無効とし、他の
カバレジ情報は変更後に継承できるようにして、再テス
ト作業を大幅に減少させるプログラムテスト方式を提供
することにある。
〔課題を解決するための手段〕
上記目的は、メモリ上にローディングされるプログラム
のソースコード情報、該ソースコードとの命令対応情報
を含むオブジェクトコード情報を表わすテーブルを備え
、プログラムの変更があった場合、変更前のソースコー
ドと変更後のソースコードからプログラムの変更影響範
囲を解析し、変更前のプログラム実行履歴情報を、変更
後のオブジェクトコード上に変更影響範囲の履歴情報を
除いて継承することにより達成される。
〔作 用〕
本発明では、機械語レベルでのプログラム履歴情報即ち
カバレジ情報とソースコードとの対応をとり、ソースコ
ード上で把握したプログラムの変更影響範囲を除いた部
分のカバレジ情報を継承している。それによって、プロ
グラムの変更影響範囲は、機械語レベルで単に命令が変
った部分のみを無効とするとか、変更のあったセクショ
ンすべてを無効とするとかではなく、ソースコード上で
論理的な制御フロー、データフローによって把握するこ
とが可能となるので、カバレジ情報の継承範囲を正確な
ものとすることができる。
〔実施例〕
以下、本発明の一実施例について図面により説明する。
第1図は本発明の一実施例の概念図である。第1図で、
1はプログラムの実行履歴を採取し記録するハードウェ
ア機構、2はソースコード変更影響範囲解析処理機41
5を示す。MTIはカバレジ情報継承前のプログラム実
行履歴情報、MT2はカバレジ情報継承後のプログラム
実行履歴情報で。
ハードウェア機構1が保持する。OTIはプログラム変
更前のオブジェクトコードテーブル、OT2はプログラ
ム変更後のオブジェクトコードテーブル、ATLは変更
影響範囲のソースコード群、STIはプログラム変更前
のソースコード群、ST2はプログラム変更後のソース
コード群である。
各テーブル中のOB J iはオブジェクトコード、S
iはソースコードを表わす。
今、プログラム変更前のソースコードとオブジェクトコ
ードとメモリ上のロケ−シコンとの対応は、OTIで表
わすごとく、Slはロケーション0の0BJIとロケー
ション1の0BJ2とに対応し、S2はロケーション2
の0BJ3と対応し。
S3はロケーション3の0BJ4とロケーション4の0
BJ5とに対応するものとする。また、プログラム変更
後のソースコードとオブジェクトコードとメモリ上のロ
ケーションとの対応は、OT2で表わすごとく、Slは
ロケーションOの0BJ1とロケーション1の0BJ2
とに対応し、82′はロケーション2の0BJ3’ と
ロケーション3のOB J 3 ”とに対応し、S3は
ロケーション4の0BJ4とロケーション5の0BJ5
に対応するものとする。プログラムはソースコードが8
2から32’ に変更したとし、プログラムの変更影響
範囲、すなわち再テストが必要なソースコード上での範
囲はS2’及びS3であったとし、MTIでのプログラ
ムの実行法ロケーションは0゜1.2.3とする。
以下、第2図にしたがいカバレジ情報の継yA処理につ
いて説明する。なお、カバレジ情報の採取それ自体の処
理は周知であり、また1本発明の要旨とは直接関係がな
いので説明を省略する。
ステップ11 ハードウェア機構1に記録されているプログラム実行履
歴情報、すなわち、既採取カバレジ情報MTIをオブジ
ェクトコード上にOTIのごとくマツピングする。
ハードウェア機構1で採取したカバレジ情報MT1は、
ロケーション0〜3にローディングされた機械語が既に
テストで実行法(論理値(# I 11で示す)で、ロ
ケーション4にローディングされた機械語が未実行(論
理値“0″で示す)であったことを示している。まず、
ローディング情報からオブジェクトコードとロケーショ
ンを対応付ける。
例えば、ロケーション0にローディングされ、実行され
た機械語は0BJI、ロケーション4にローディングさ
れ未実行である機械語は0BJ5である。さらに、プロ
グラム変更前のソースコード群のコンパイル時にコンパ
イラから得られるソースコードとオブジェクトコードと
の対応情報をもったオブジェクトコード情報から、ソー
スコードとオブジェクトコードを対応付ける。例えば、
オブジェクトコードBOJ 1.OBJ 2はソースコ
ードS1のオブジェクト展開コードである。この場合、
コンパイラの最適化により、ひとつのオブジェクトコー
ドが複数のソースコードと対応することもある。
以上のようにして、プログラム変更前のソースコード、
オブジェクトコード、ロケーション、カバレジ情報の対
応を示したテーブルOTIを得る。
ステップ12 プログラム変更後のソースコード群ST2上でのプログ
ラム変更影響範囲(解析処理機構2のATl)を把握す
る。プログラムの変更前のソースコード群STIは、プ
ログラムの変更後のソースコード群ST2と、プログラ
ムの変更時に蓄積する変更差分ソースコード群から得る
こともできる。
こ\では、プログラムの変更により、ソースコードS2
はS2’ に変更されたものとし、ソースコードS1及
びS3は変更がなかったものとする。
まず、ソースコード変更影響範囲解析処理機構2では、
プログラム変更前のソースコード群ST1とプログラム
変更後のソースコード群ST2とから、変更ソースコー
ドS2’ を把握する。さらに、プログラム変更後のソ
ースコード群ST2を、例えば制御フロー解析やデータ
フロー解析を実行することにより、82′以外のソース
コード変更影響範囲(ATLでの83)を把握する。即
ち、制御フロー解析では、変更となったソースコード(
ATLでの82′)に加え、変更となったソースコード
(S2’)の実行後に制御が移る可能性のあるソースコ
ード(ATLでの33)を変更影響範囲とする。データ
フロー解析では、変更となったソースコード(ATLで
の82′)に加え、変更となったソースコード(S2’
)で使われた変数を使用しているソースコード(ATL
での83)を変更影響範囲とする。
ステップ13 プログラム変更後のオブジェクトコード(OT2のオブ
ジェクトコード)上に、変更影響範囲外のカバレジ情報
(OT2の0BJI、0BJ2に対応するカバレジ情報
)を継承する。
まず、OT2上に、プログラム変更後のソースコード群
のコンパイル時にコンパイラから得られるソースコード
とオブジェクトコードとの対応情報をもったオブジェク
トコード情報からソースコードとオブジェクトコードを
対応付ける。例えば、0BJ3’ 、0BJ3”はソー
スコードS2’ のオブジェクト展開コードである。こ
の場合、コンパイラの最適化により、ひとつのオブジェ
クトコードが複数のソースコードと対応することもある
OT2における変更影響範囲(傘で示す)は、AT1情
報から得る。
カバレジ情報は、OTlとOT2とのソースコード及び
オブジェクトコードを対応させることにより継承する。
例えば、OT2におけるソースコードS1に対応する0
BJI、OBJ2のカバレジ情報は、Slが変更影響範
囲のソースコードではないため、そのま\継承する(O
Tlのカバレジ情報が1であればOT2のカバレジ情報
を1、OTIのカバレジ情報がOであればOT2のカバ
レジ情報をOとする)、一方、OT2におけるソースコ
ードS2’S3に対応する0BJ3’ 、OBJ 3”
 、0BJ4.OBJ 5のカバレジ情報は、S2’及
びS3が変更影響範囲のソースコードであるため、カバ
レジ情報は無効とし、継承しない(OT2のカバレジ情
報をOとする)。
OT2のカバレジ情報は、変更影響範囲外を1、変更影
響範囲をOで表わし、各オブジェクトコード毎にOTI
のカバレジ情報(OTlに対応のないオブジェクトコー
ドのカバレジ情報は0とする)との論理積を演算するこ
とにより得られる。コンパイラの最適化により、ひとつ
のオブジェクトコードが複数のソースコードと対応する
場合は、いずれかのソースコードが変更影響範囲であれ
ば、対応するオブジェクトコードが変更影響範囲である
とみなす。
ステップ14 継承されたオブジェクトコード上のカバレジ情報をハー
ドウェア機構1のカバレジ情報継承後のプログラム実行
履歴情報MT2にマツピングする。
こ\で、MTIとMT2は同一のハードウェア上のメモ
リアドレスに対応するプログラム実行履歴情報であって
も良い。まず、ローディング情報がらOT2のオブジェ
クトコードとロケーションとの対応が得られる。さらに
1例えば、OT2の情報からMT2のロケーションOに
は1を、ロケーション2にはOをマツピングする。
本実施例によれば、MTIのロケーション0及びロケー
ション1にローディングされていた機械語レベルのカバ
レジ情報を、MT2のロケーションO及びロケーション
1にローディングされた機械語レベルのカバレジ情報に
継承することができ、M’r2にロケーションO及びロ
ケーション1が既に実行法で再テスト不要であることを
示す機械語レベルのカバレジ情報を得ることができる。
〔発明の効果〕
以上説明したように、本発明によれば、プログラムのテ
ストにおいて、機械語レベルで採取したカバレジ情報は
、プログラムの変更後においても、ソースコードレベル
でのプログラム影響範囲情報に基づいて継承できるので
、プログラムの変更によって再テストが必要な範囲のカ
バレジ情報は漏れなく無効化し、かつ、カバレジ情報の
無効化を最小限に押えたカバレジ情報の継承ができ、再
テスト作業の大幅な減少が可能になる。
【図面の簡単な説明】
第1図は本発明の一実施例の概念図、第2図は第1図に
よりカバレジ情報の継承処理を説明するためのフローチ
ャートである。 MTI・・・カバレジ情報継承前のプログラム実行履歴
情報、 MT2・・・カバレジ情報継承後のプログラム
実行履歴情報、 ○T1・・・プログラム変更前のオブ
ジェクトコードテーブル、OT2・・・プログラム変更
後のオブジェクトコードテーブル、 ATL・・・変更
影響範囲のソースコード群、  STI・・・プログラ
ム変更前のソースコード群、  Sr1・・・プログラ
ム変更後のソースコード群。

Claims (1)

    【特許請求の範囲】
  1. (1)プログラムをテストし、その実行履歴を記録する
    プログラムテスト方式において、プログラムのソースコ
    ード情報、該ソースコードとの命令対応情報を含むオブ
    ジェクトコード情報を表わすテーブルを備え、 プログラムの変更があった場合、変更前のソースコード
    と変更後のソースコードからプログラムの変更影響範囲
    を解析し、変更前のプログラム実行履歴情報を、変更後
    のオブジェクトコード上に変更影響範囲の履歴情報を除
    いて継承することを特徴とするプログラムテスト方式。
JP63053491A 1988-03-09 1988-03-09 プログラムテスト方式 Pending JPH01229341A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63053491A JPH01229341A (ja) 1988-03-09 1988-03-09 プログラムテスト方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63053491A JPH01229341A (ja) 1988-03-09 1988-03-09 プログラムテスト方式

Publications (1)

Publication Number Publication Date
JPH01229341A true JPH01229341A (ja) 1989-09-13

Family

ID=12944311

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63053491A Pending JPH01229341A (ja) 1988-03-09 1988-03-09 プログラムテスト方式

Country Status (1)

Country Link
JP (1) JPH01229341A (ja)

Similar Documents

Publication Publication Date Title
US9274923B2 (en) System and method for stack crawl testing and caching
US6247146B1 (en) Method for verifying branch trace history buffer information
US6173395B1 (en) Mechanism to determine actual code execution flow in a computer
WO2017097878A1 (en) Method and device for non-intrusively collecting function trace data
US7062753B1 (en) Method and apparatus for automated software unit testing
JPH0749799A (ja) 自動化装置および方法
JPH01229341A (ja) プログラムテスト方式
US20040034852A1 (en) Simulation method and simulation system of instruction scheduling
US20040093536A1 (en) System and method for providing coherency during the evaluation of a multiprocessor system
US10593419B1 (en) Failing read count diagnostics for memory built-in self-test
CN118519842B (zh) 一种基于硬件虚拟化的自动调试方法
JP7770613B2 (ja) トレーサビリティ情報抽出装置およびトレーサビリティ情報検証装置
JPS6324425A (ja) テスト網羅状態検出方式
WO2025203152A1 (ja) トレース対象信号選択装置及びトレース対象信号選択方法
JP3012618B1 (ja) 被検査プログラムのデバグ方法とそのデバグ方式
JPS59195751A (ja) 情報処理装置の診断方式
JPH02242439A (ja) プログラムロード制御方式
JPS6269329A (ja) メモリ破壊位置検出方式
JPH0411894B2 (ja)
JPS6191733A (ja) プログラムのテスト機構
JPS6240550A (ja) プログラムデバツク装置
JPS6225340A (ja) 検査装置
JPH0280984A (ja) アドレス演算命令生成方法
JPS6371738A (ja) プログラムテスト管理処理方式
JPH02115953A (ja) シミュレータ