JPH08137719A - プログラムテスト再実行方法 - Google Patents

プログラムテスト再実行方法

Info

Publication number
JPH08137719A
JPH08137719A JP6273325A JP27332594A JPH08137719A JP H08137719 A JPH08137719 A JP H08137719A JP 6273325 A JP6273325 A JP 6273325A JP 27332594 A JP27332594 A JP 27332594A JP H08137719 A JPH08137719 A JP H08137719A
Authority
JP
Japan
Prior art keywords
program
test
execution
user
child
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
JP6273325A
Other languages
English (en)
Inventor
Kenya Nishiki
健哉 西木
Toshiaki Hirata
平田  俊明
Kazuo Matsunaga
和男 松永
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 JP6273325A priority Critical patent/JPH08137719A/ja
Publication of JPH08137719A publication Critical patent/JPH08137719A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【目的】複数の対象プロセスを一括して扱え、プログラ
ムが異常終了もしくは暴走する場合でもプロセスが分岐
したポイントに復帰して再実行を行えるプログラムテス
ト方法を提供する。 【構成】利用者のテストコマンドを一括して被テストプ
ログラムに通知し(120)、プロセスを分岐させてテ
ストを実施した後、分岐したポイントに復帰してプログ
ラムを再開し(150)、被テストプログラムがプロセ
ス間通信を発行する場合にはその送受信先の振り替えを
行う(160)。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、プログラムのテスト再
実行方法に係り、特に、プログラムを再起動することな
く、任意のプログラムポイントから繰返しテストを実行
するのに好適なテスト方法に関する。
【0002】
【従来の技術】本発明はUnix(AT&Tベル研究所
が開発し、X/open Company Limitedが権利を有するO
S)オペレーティングシステムを搭載した計算機システ
ムを対象としている。本明細書で使用する用語のうち、
プロセス,シグナル割込み,共有メモリについては以下
で説明する。
【0003】プロセスは一つのプログラムの実行単位で
あり、計算機がマシン語の命令列として解釈するバイト
列(テキスト),データ及びスタックから構成される。
プロセスの生成はシステムコールの呼び出しによって行
われ、生成されたプロセス(子プロセス)は呼び出した
プロセス(親プロセス)とほぼ同一のメモリイメージを
持つ。両者の違いは、子プロセスが新しいユニークなプ
ロセス識別子と親プロセス識別子を持つ点である。
【0004】シグナル割込みは非同期に発生した事象を
プロセスに伝える。プロセス間ではシステムコールを使
ってお互いにシグナルを送ることができる。また、シス
テムコールを使って特定のシグナルを受け取ったときに
利用者定義のルーチンが呼び出されるように設定するこ
とができる。
【0005】共有メモリはプロセス間通信の一機構であ
り、プロセス同士がお互いの仮想アドレス空間の一部を
共有して、メモリ上のデータを読み書きすることにより
直接通信を行う。
【0006】上記以外の用語については、たとえば、Ma
urice J.Bach著,坂本 文他2名共訳,UNIXカーネ
ルの設計,共立出版(1990)に記載されている。
【0007】通常プログラムのテストでは、動作条件を
変えながらプログラムを繰返し実行することになる。従
って、プログラムの実行に非常に時間のかかる場合や動
作条件の設定に手間のかかる場合には、テストケース毎
にプログラムを再起動するのではなく、プログラム全体
の実行経路のうち同じ条件で動作する経路は実際に実行
する回数を少なくして効率よくテストを実施することが
必要である。
【0008】従来、プログラムのテスト再実行方法は、
例えば、特開平5−282175 号公報に記載のように、中断
した任意のアドレスでプログラムのデータ領域の全内容
及びコンテキストをセーブする管理領域を有し、プログ
ラムの実行を再開してからセーブした情報をロードする
ことによりセーブした時点の状態に戻る方法があった。
【0009】
【発明が解決しようとする課題】前記の従来方法は、単
一のプロセスでテストを実行することを想定しており、
以下にあげる問題が発生する。
【0010】(1)被テストプログラムがなんらかの原
因で異常終了したり、暴走してしまうとセーブした時点
の状態に戻ってテストを再開することはできない。 (2)テスト対象が複数のプロセスで構成される場合に
は、利用者がプロセスの同期を保証しなければならない
ので手間がかかる。
【0011】本発明の目的は、複数のテスト対象プロセ
スをグループ化して一括して扱え、プログラムが異常終
了もしくは暴走する場合でも分岐したポイントに復帰し
てテストの再実行を行える方法を提供することにある。
【0012】
【課題を解決するための手段】上記の目的は、テスト実
行中のプログラムの特定のプログラムポイントで前記プ
ロセスを分岐させ、分岐したプロセスが終了した後、再
び分岐したプログラムポイントに戻ってプログラムの実
行を再開できるように、利用者から分岐要求のあった場
合には、前記プロセスが同一のメモリイメージを持った
プロセス(子プロセス)を生成し、子プロセスがプログ
ラムの実行を継続して行い、前記プロセスは子プロセス
の終了まで待機するステップと、利用者から停止要求の
あった場合には、実行中のプロセスを終了させて利用者
からの要求を受付けるステップと、利用者から継続要求
のあった場合には、前記プロセスがプログラムの実行を
継続して行うステップとを備えることにより達成され
る。
【0013】さらに上記目的は、テスト実行中のプログ
ラムがプロセス間通信命令を発行する際に、前記プロセ
スの識別子をプロセスグループ管理用の領域に登録する
ステップと、前記利用者からの要求があった場合に、前
記領域に登録されたすべてのプロセスに対して前記要求
を通知するステップを備えることにより達成される。
【0014】さらに上記目的は、テスト実行中のプログ
ラムがプロセス間通信を発行する際に、前記プロセスグ
ループ管理用の領域を参照して、送受信先のプロセスが
テスト実行中の場合にはそのまま送信を行い、テスト実
行中でない場合には送受信先を子プロセスに変更して送
信を行うステップを備えることにより達成される。
【0015】
【作用】本発明のテスト方法によれば、テスト実行プロ
セスがプロセスを分岐してテストを実施し、利用者から
の要求をシグナルによる割込みで通知することにより、
被テストプログラムの動作に異常が発生した場合でも、
プロセスを分岐させた時点の状態に復帰してテストを再
開することができる。
【0016】さらにテスト方法によれば、テスト対象プ
ロセスを共有メモリ上に設定したテーブルを用いて管理
し、利用者からの要求を一括して通知することにより、
テスト対象が複数のプロセスから構成される場合でも、
利用者がプロセス間の同期を意識せずにテストを実施で
きる。
【0017】
【実施例】以下、本発明の詳細を図面を参照して説明す
る。
【0018】図1に本発明の一実施例のシステム構成を
示す。ユーザコマンド受付け処理プログラム120は利
用者100からのテストコマンド110を対話的に受付
けて、被テストプログラムの実行を制御する。被テスト
プログラム1,2…,N(140)はプロセス割込み処
理部150及びプロセス間通信振り替え処理部160を
ライブラリとして取り込んで動作する。プロセス割込み
処理部150は、ユーザコマンド受付け処理部120か
らのシグナル割込みによるコマンド通知130の延長で
呼び出され、プロセスの分岐,終了等の処理を実行す
る。プロセス間通信振り替え処理部160は、被テスト
プログラムがプロセス間通信170を発行する際に呼び
出され、現在テストを実行しているプロセスグループを
チェックして、プロセス間通信命令の送受信先の振り替
え処理を行う。
【0019】本発明によるテストの再実行手順を図6の
フローチャートに従い説明する。まず利用者がテスト対
象プログラムをデバッガにより起動し(601)、プロ
グラムを再実行したいポイント(複数可)にブレークポ
イントを設定しておいて実行を開始する(602)。所
定のブレークポイントで停止したら、利用者が端末から
“生成”コマンドを入力する(603)のを契機にして
被テストプロセスの子プロセスを生成(以下、生成され
た子プロセスをまとめて子グループと呼び、生成した親
プロセスをまとめて親グループと呼ぶ)して、子グルー
プでプログラムテストを継続する。その後、プログラム
を分岐させたポイントに戻して再実行するためには(6
04)、利用者が“終了”コマンドを入力し(60
5)、続けて“継続”コマンドを入力する(607)の
を契機にして子グループを破棄し、親グループで再びプ
ログラムを継続して実行する。繰返し同じポイントから
再実行したい場合には(606)、利用者が“終了”コ
マンドを入力し(605)、続けて“生成”コマンドを
入力する(603)のを契機にして新たな子グループを
生成してプログラムを実行する。
【0020】図2のフローチャートに従ってユーザコマ
ンド受付け処理の詳細手順を説明する。ユーザコマンド
受付け処理部120は、まず利用者が計算機端末から入
力したコマンドを取得する(201)。コマンドを検査
し(202)、コマンドがプロセスの生成要求の場合、
“生成”イベントを共有メモリ上に設定し(203)、
図5に示すプロセスグループ管理テーブル500を参照
してテスト実行中のプロセスグループに属するプロセス
全てにシグナルを送り(204)、テスト実行中のプロ
セスグループを子グループに設定する(205)。コマ
ンドがプロセスの終了要求の場合、“終了”イベントを
共有メモリ上に設定し(206)、プロセスグループ管
理テーブル500を参照してテスト実行中のプロセスグ
ループに属するプロセス全てにシグナルを送り(20
7)、テスト実行中のプロセスグループを親グループに
設定する(208)。コマンドがプロセスの継続要求の
場合、“継続”イベントを共有メモリ上に設定し(20
9)、プロセスグループ管理テーブル500を参照して
テスト実行中のプロセスグループに属するプロセス全て
にシグナルを送る(210)。プロセスグループ管理テ
ーブル500は、テスト実行中のプロセスグループ(親
もしくは子),親グループの第一プロセスID502,
第二プロセスID503,…,第NプロセスID50
4,子グループの第一プロセスID505,第二プロセ
スID506,…,第NプロセスID507からなり、共
有メモリ上に作成する。
【0021】図3のフローチャートに従ってプロセス割
込み処理の詳細手順を説明する。プロセス割込み処理部
150はシグナル割込みによるコマンド通知(130)
の延長で呼び出され、まず共有メモリからユーザコマン
ド受付け処理部120の設定したイベントを取得する
(301)。イベントを検査し(302)、イベントが
“生成”の場合は子プロセスを生成し(Unixのシス
テムコールforkを使う)(303)、動作プロセス
を検査し(304)、子プロセスの場合にはそのままリ
ターンする。動作プロセスが親プロセスの場合には、生
成した子プロセスのIDをプロセスグループ管理テーブ
ル500に登録し、子プロセスの終了を待ち(Unix
のシステムコールwaitを使う)(306)、子プロ
セスが終了したらさらに割込みイベントを待ち(Uni
xのシステムコールpauseを使う)(307)、割
込みを受付けたら処理の先頭に戻って実行する。イベン
トが“終了”の場合にはプロセスを終了する(Unix
のシステムコールexitを使う)(308)。イベン
トが“継続”の場合には直ちにリターンする。
【0022】図4のフローチャートに従いプロセス間通
信振り替え処理の詳細手順を説明する。プロセス間通信
振り替え処理部160は、被テストプログラムがプロセ
ス間通信(170)を発行する際に呼び出され、まずプ
ロセスグループ管理テーブル500を検索し(40
1)、プロセスが未登録の場合には(402)、プロセ
スIDを登録する(403)。プロセスがテスト実行中
のプロセスグループに属する、すなわち、親グループで
実行中の場合には(404)、そのままプロセス間通信
命令を発行して(405)、リターンする。プロセスが
テスト実行中のプロセスグループに属さない、すなわち
子グループで実行中の場合には、送受信先を子プロセス
に変更してプロセス間通信命令を発行して(406)、
リターンする。
【0023】
【発明の効果】被テストプログラムの異常動作の有無に
関わらず、プログラムを再起動することなく任意の時点
に戻ってテストを再開することができ、さらに対象プロ
グラムが複数あり、相互にプロセス間通信を行っている
場合にも被テストプログラムを修正することなく容易に
再実行が可能なので、効率良くテスト・デバックを実行
でき、テスト工程を短縮できる。
【図面の簡単な説明】
【図1】本発明の一実施例を示すテストシステムのブロ
ック図。
【図2】本発明の一実施例におけるユーザコマンド受付
け処理を示すフローチャート図。
【図3】本発明の一実施例におけるプロセス割込み処理
を示すフローチャート図。
【図4】本発明の一実施例におけるプロセス間通信振り
替え処理を示すフローチャート図。
【図5】本発明の一実施例におけるプロセスグループ管
理テーブルの内容を示す図。
【図6】本発明の一実施例におけるテストの再実行手順
を示すフローチャート図。
【符号の説明】
110…テストコマンド、130…コマンド通知(シグ
ナル割込み)、170…プロセス間通信。

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】テスト実行中のプログラムの特定のプログ
    ラムポイントで前記プロセスを分岐させ、分岐したプロ
    セスが終了した後、再び分岐したプログラムポイントに
    戻ってプログラムの実行を再開できるプログラムテスト
    再実行方法において、利用者から分岐要求のあった場合
    には、前記プロセスが同一のメモリイメージを持った子
    プロセスを生成し、前記子プロセスがプログラムの実行
    を継続して行い、前記プロセスは前記子プロセスの終了
    まで待機し、利用者から停止要求のあった場合には、実
    行中のプロセスを終了させて利用者からの要求を受付
    け、利用者から継続要求のあった場合には、前記プロセ
    スがプログラムの実行を継続して行うことを特徴とする
    プログラムテスト再実行方法。
  2. 【請求項2】請求項1において、テスト実行中のプログ
    ラムがプロセス間通信命令を発行する際に、当該プロセ
    スの識別子をプロセスグループ管理用の領域に登録し、
    前記利用者からの要求があった場合に、前記領域に登録
    されたすべてのプロセスに対して前記要求をシグナル割
    込みにより通知し、グループ単位で一括して再実行する
    プログラムテスト再実行方法。
  3. 【請求項3】請求項1において、テスト実行中のプログ
    ラムがプロセス間通信命令を発行する際に、前記プロセ
    スグループ管理用の領域を参照して、送受信先のプロセ
    スがテスト実行中の場合にはそのまま送信を行い、テス
    ト実行中でない場合には送受信先を子プロセスに変更し
    て送信を行うステップを備え、プロセスの分岐に伴うプ
    ロセス間通信の切り替えを保証するプログラムテスト再
    実行方法。
JP6273325A 1994-11-08 1994-11-08 プログラムテスト再実行方法 Pending JPH08137719A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6273325A JPH08137719A (ja) 1994-11-08 1994-11-08 プログラムテスト再実行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6273325A JPH08137719A (ja) 1994-11-08 1994-11-08 プログラムテスト再実行方法

Publications (1)

Publication Number Publication Date
JPH08137719A true JPH08137719A (ja) 1996-05-31

Family

ID=17526314

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6273325A Pending JPH08137719A (ja) 1994-11-08 1994-11-08 プログラムテスト再実行方法

Country Status (1)

Country Link
JP (1) JPH08137719A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010038307A1 (ja) * 2008-10-03 2010-04-08 富士通株式会社 仮想計算機システムのテスト方法、テストプログラム並びにその記録媒体、仮想計算機システム
CN113049939A (zh) * 2019-12-27 2021-06-29 中移物联网有限公司 一种芯片老化自测试方法及系统

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010038307A1 (ja) * 2008-10-03 2010-04-08 富士通株式会社 仮想計算機システムのテスト方法、テストプログラム並びにその記録媒体、仮想計算機システム
JP5104958B2 (ja) * 2008-10-03 2012-12-19 富士通株式会社 仮想計算機システムのテスト方法、テストプログラム並びにその記録媒体、仮想計算機システム
US8584089B2 (en) 2008-10-03 2013-11-12 Fujitsu Limited Virtual computer system, test method, and recording medium
CN113049939A (zh) * 2019-12-27 2021-06-29 中移物联网有限公司 一种芯片老化自测试方法及系统

Similar Documents

Publication Publication Date Title
US10191835B2 (en) Multi-threaded debugger support
US5630049A (en) Method and apparatus for testing software on a computer network
US7020871B2 (en) Breakpoint method for parallel hardware threads in multithreaded processor
US5659679A (en) Method and apparatus for providing breakpoints on taken jumps and for providing software profiling in a computer system
US4823256A (en) Reconfigurable dual processor system
US5121486A (en) Network control system for dynamically switching a logical connection between an identified terminal device and an indicated processing unit
JPH07225693A (ja) 異なるアドレス空間にわたってスレッド事象を処理する方法
US6658650B1 (en) Service entry point for use in debugging multi-job computer programs
WO1993009494A1 (en) Fault-tolerant computer processing using a shadow virtual processor
US7761744B2 (en) Debugging method
CN113821257B (zh) 处理器内核调用栈信息查询方法及装置
JP2522158B2 (ja) マルチプロセッサシステムのプログラムデバッグ方法
JPH08137719A (ja) プログラムテスト再実行方法
US5740359A (en) Program execution system having a plurality of program versions
Hills Structured interrupts
US6195715B1 (en) Interrupt control for multiple programs communicating with a common interrupt by associating programs to GP registers, defining interrupt register, polling GP registers, and invoking callback routine associated with defined interrupt register
CN111984525A (zh) 用于调试目标计算机上的应用程序代码的系统和方法
US7010781B1 (en) Methods and apparatus for managing debugging I/O
IE62074B1 (en) Apparatus and method for synchronization of arithmetic exceptions in parallel pipelined execution units
KR100289039B1 (ko) 교차디버깅서버에서프로세스실행제어서비스실현방법
CN110955507B (zh) 基于vxWorks系统的多任务访问同一IIC总线的方法
JPH06161817A (ja) スレッドオンラインデバッグ装置
JPH086819A (ja) デバイスドライバプログラムのテスト装置およびその方法
GB1584419A (en) Data processing apparatus
Doubleday The Durra Application Debugger/Monitor