JPH0561734A - 並列プログラムの非決定的動作テスト方法 - Google Patents

並列プログラムの非決定的動作テスト方法

Info

Publication number
JPH0561734A
JPH0561734A JP3244951A JP24495191A JPH0561734A JP H0561734 A JPH0561734 A JP H0561734A JP 3244951 A JP3244951 A JP 3244951A JP 24495191 A JP24495191 A JP 24495191A JP H0561734 A JPH0561734 A JP H0561734A
Authority
JP
Japan
Prior art keywords
test
communication
communication history
parallel program
indefinite
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
JP3244951A
Other languages
English (en)
Inventor
Tatsunori Hashimoto
辰範 橋本
Hirobumi Hotta
博文 堀田
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP3244951A priority Critical patent/JPH0561734A/ja
Publication of JPH0561734A publication Critical patent/JPH0561734A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【目的】 複数のプロセスが通信しあう並列プログラム
の非決定的動作をテストにより保証し、運用時、該非決
定的動作に起因した障害の発生を減少せしめる。 【構成】 テスト実行部10はテスト対象の並列プログ
ラム及びテストデータを入力して実行する。通信履歴取
得部20は、プロセス毎に通信履歴を取得して通信履歴
保存部30に記憶する。非決定的動作検出部40は、通
信履歴保存部30を解析して、その時の動作が非決定的
動作を含んでいたかどうか明らかにし、非決定的動作を
含んでいたならその場所と条件を検出して代替動作条件
保持部50に設定する。非決定的動作制御部60は、代
替動作条件保持部50を調べ、その時の動作が非決定的
動作を含んでいた場合、通信制御部110を制御して、
起こり得る代替動作をテスト実行部10に再実行せしめ
る。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、並列プログラムの非決
定的動作を対象とするテスト方法に関するものである。
【0002】
【従来の技術】並列プログラムの非決定性に起因する不
定な動作およびその再現性の欠落は、並列プログラムを
用いたシステムの開発、運用に大きな問題を引き起こ
す。従来、この問題に対し、テスト工程や実際の運用時
に生じた障害を解析するデバグ技術としては、Instant
Replayなどいくつかの再演テスト法が提案されている
(文献:T.J.Leblanc,J.M.Mellor−Crummey,
“Debugging ParallelPrograms with Instant Rep
lay”,IEEE Transactions on Computers,vol
C−36,No.4,April 1987)。この再演テス
ト法とは、プロセス間の情報のやりとりに用いられるメ
ールボックスや共通変数に履歴通りの順序でしかアクセ
スを受け付けない機能をもたせることにより、従前の実
行を再現可能とする方法である。しかし、このデバグ技
術は、障害が生じた場合の対処法を支援するものであ
り、システムの誤りを検出することにより品質向上に積
極的に貢献するものではない。システムの品質を保証す
るためには十分なテストが必要であるが、現在、並列プ
ログラムの非決定的動作に関するテスト技術は確立され
ておらず、またそのようなテスト自体も実施されていな
い。
【0003】
【発明が解決しようとする課題】複数のプロセスが通信
記述を用いて協調動作する並列プログラムには、通信処
理に関して次の非決定性が存在する。第一は1つのrece
iveに対して複数のsendが存在すること、また第二は1
つのsendに対し複数のreceiveが存在することである。
この例を図3に示す。図中、P0、P1、P3はプロセ
スであり、矢印元が送信(send)、矢印先が受信(rece
ive)である。
【0004】並列プログラムのもつ非決定性が原因で起
こる実行毎に不定の動作について、その正当性をテスト
により保証するには、各動作を意図的に実行して結果を
確認しなければならない。そのためには、まず、対象と
する並列プログラムが非決定的動作を起こす可能性があ
るかどうかを明かにする必要がある。さらに、その並列
プログラムにどのような非決定的動作が存在するかを分
析し、また、そのうちどの動作をテスト実行させるかを
決定しなければならない。このとき、各プロセスの動作
はその制御構造と動的に決定される入力データや初期状
態に基づいて決定されるため、並列プログラムの非決定
的動作を各プロセスの静的解析だけから推測するのは困
難である。
【0005】本発明の目的は、並列プログラムの非決定
性に起因するさまざまな動作およびその結果をプログラ
ム実行により確認する非決定的動作テストの実施を、プ
ログラムの動的解析を用いて可能とすることにある。
【0006】
【課題を解決するための手段】上記目的を達成するため
に、本発明は、複数のプロセスが通信記述を用いて協調
動作する並列プログラムのテスト実行時の各プロセスの
通信履歴をとり、その通信履歴をもとにその時の動作が
非決定的動作を含んでいたかどうか、含んでいたならば
その場所と条件を検出し、その条件を用いて並列プログ
ラムの動作を制御して別の動作を意図的にテスト実行す
るようにしたものである。
【0007】
【作用】まず、テスト対象である並列プログラムに一意
の入力データを与え実行する。このとき、プロセス毎
に、実行された送信命令と、実行された受信命令および
その実行で実際に受信した信号を要素とし、それらを実
行順に並べて通信履歴として記憶する。次に、各プロセ
スの通信履歴から組合せ可能な送受信の組を求める。こ
こで、すべての送受信の組が一対一に決定できない場
合、その実行は非決定的動作を含んでいたと判定する。
その場合、送受信の組合せを制限して、通信履歴とは異
なる送受信の組合せを再実行する。この再実行における
通信履歴が以前のものと同じである保証はないため、再
実行においても通信履歴を記憶しておき同様の解析を実
施する。このように、再実行を繰り返すことで種々の非
決定的動作の正当性を確認する。
【0008】
【実施例】以下、本発明の一実施例について図面により
詳述する。
【0009】図1は本発明の一実施例のブロック図であ
る。図1において、テスト実行部10は通信制御部11
0を有し、テスト対象である並列プログラム及びテスト
データを入力して実行するものである。このテスト実行
部10には、一般には並列プログラムが実際に走行する
実計算機が用いられる。通信履歴取得部20は、プロセ
ス毎に、テスト実行部10で実行された通信履歴(実行
された送信命令と受信命令および実際に受信した信号等
を実行順に並べたもの)を取得し、通信履歴保存部30
に記憶するものである。非決定的動作検出部40は、通
信履歴保存部30の各プロセスの通信履歴から送受信の
可能な組合せを求めることにより、その時の動作が非決
定的動作を含んでいたかどうかを明らかにすると同時
に、非決定的動作を含んでいたならばその場所と条件を
検出して、代替動作条件保持部50に記憶するものであ
る。非決定的動作制御部60は、代替動作条件保持部5
0を調べ、実際に行われた送受信とは異なる送受信の組
合わせ条件(代替動作条件)を通信制御部110に与え
て動作を制限し、並列プログラムをテスト実行部10で
再実行せしめるものである。
【0010】図2に、図1の全体の動作フローを示す。
以下、具体例により、図2に従って並列プログラムの非
決定的動作テストを説明する。
【0011】テスト対象の並列プログラムは3つのプロ
セスP,Q,Rで構成されるとする。図4に、その通信
シーケンスの一例を示す。ここでプロセスの通信記述を
次のように意味づける。まず、送信はsend Sig [to
Proc]の形式で記述され、シグナルSigをプロセスPr
ocに送出し走行し続ける。ただし、to Procがない場合
は任意のプロセスがSigを受信できる。受信はreceive
Sig[Sig[Sig…]]の形式で記述され、例えばrece
iveSig1 Sig2 Sig3という記述に対してはシグナ
ルSig1、Sig2、Sig3のいずれかを受け取る。指定
したシグナルがすべて未到着の場合、待ち合わせる。複
数の受信可能シグナルが到着済みであるとき、どのシグ
ナルが受けとられるかは未定とする。
【0012】テスト実行と履歴保存;テスト対象である
並列プログラムにある入力データ(テストデータ)を与
え、テスト実行部10で実行する。この時、通信履歴取
得部20が、プロセス毎に通信履歴を取得して通信履歴
保存部30に記憶する。図4の例の場合、次の通信履歴
が取得される。 ・プロセスPの通信履歴={s(A,Q),s(A,Q),r
((C),Q,2),s(A,Q)} ・プロセスQの通信履歴={r((A),P,1),s(B,R),
r((A),P,2),s(C,P),r((A),R,1),r((A),
P,3),r((A),R,2)} ・プロセスRの通信履歴={s(A,Q),r((B),Q,1),
s(A,Q)}
【0013】ここで、s(Sig,Proc)は送信send Sig
to Procの実行を、r((Sig1,Sig2,…),Proc,Nu
m)は受信receive Sig1 Sig2…の実行とそのき実際
に受け取った信号の送出元プロセスProcとそのプロセ
ス内での送信通番Numを示す。なお、送信通番Numは、
プロセス毎に、実行された送信命令をカウントすること
で求まる。
【0014】非決定的動作検出;非決定的動作検出部4
0は、上記実行について非決定的動作が存在したかどう
かを検出するために、通信履歴保存部30の各プロセス
の通信履歴から組合せ可能な送受信の組を求める。以
下、その詳細を示す。
【0015】(step1)通信履歴から依存関係に基づく
サイクルなし有効グラフGを生成する。 ・ノード集合:s∈S:送信の実行 r∈R:受信の実行(受け取り) ・エッジ集合:E0:1プロセス内でのs∈S,r∈R
の実行順序 Em:実際の信号送受 (step2)G上の全ノードに対し到達可能解析を実施す
る。 (step3)step2の結果を用い、受信j(j∈R)が受
け取りえた送信集合PSjを求める。 PSj=(S−(CSj∪RSj))∩MSj ここで、 CSj:受信jを実行する原因となった送信集合 RSj:受信jを実行したことを原因としてその後に発
生した送信集合 MSj:受信jとプロセス名、シグナル名が適合する送
信集合 である。
【0016】図4の各プロセスP,Q,Rに対する前述
の通信履歴をもとに、(step1)で生されるグラフを図
5に示す。この依存グラフについて、送受信の組合せに
おける制約となる全ノード間の依存関係を明らかにする
ために、(step2)の処理を行う。さらに、この依存グ
ラフ上の各受信ノードについて、(step3)の処理を行
う。例えば、図5中の受信ノードnについて解析する
と、次のようになる。これを図6に示す。 S={1,2,3,4,5,6,7} CSn={1,4} RSn={3,5} MSn={1,2,3,6,7} ∴PSn={1,2,3,4,5,6,7}−({1,4}∪{3,
5}))∩{1,2,3,6,7}={2,6,7}
【0017】この解析結果は、図4のプログラム実行に
おいて、ノードnのreceiveがノード2,6,7のsend
のいずれかを受信することができたという非決定性をも
っていたということを示している。各受信ノードがそれ
ぞれただ一つの送信ノードとしか組み合わせられないと
きのみ、その実行が決定的に動作したことが保証でき
る。非決定的動作検出部40は、非決定性をもつノード
とその条件を代替的条件保持部50に記憶する。
【0018】非決定的動作テスト;非決定的動作制御部
60は、代替動作条件保持部50を読み出し、複数の送
信ノードが組み合せ可能であったとき、例えば再演テス
ト法で提案されている通信順序制御機能を用いて、通信
制御部110での送受信動作の組合せを制限し、実際に
行われた送受信の組合せ以外の通信を強要するプログラ
ム再実行をテスト制御部10に実施せしめる。上述の例
では、ノードnのreceiveが、6,7(2はすでに実行
済み)のsendを受け取ったときの動作テストをテスト実
行部10で再実行せしめる。そして、その動作に適合し
ているかどうかをチェックする。これがテストによる非
決定的動作の保証である。動作が正しいことが確認でき
れば、さらにこのときの通信履歴を保存しておき、そこ
から別の非決定的動作が検出されるかどうかを調べる。
【0019】以上、本発明の一実施例について説明した
が、例えば、並列プログラムをテスト実行し、プロセス
毎に通信履歴を保存した後、実行結果を確認し、異常が
検出された場合、テストを中止してデバグを行ってから
テストを再開するようにしてもよい。
【0020】
【発明の効果】以上説明したように、本発明によれば、
ソフトウェア開短時に並列プログラムの非決定的動作に
関わるバグを取り除くことができるため、運用時におけ
る並列プログラムの非決定的動作に起因した障害の発生
を減少させることができるという効果が得られる。
【図面の簡単な説明】
【図1】本発明の一実施例のブロック図である。
【図2】図1による並列プログラムの非決定的動作テス
トの手順を示す流れ図である。
【図3】並列プログラムの通信記述部に存在する非決定
性の一例を示す図である。
【図4】テスト対象である並列プログラムの通信シーケ
ンスの一例を示す図である。
【図5】図4の依存関係グラフの一例を示す図である。
【図6】図5の依存関係グラフ上での非決定的動作検出
の一例を示す図である。
【符号の説明】
10 テスト実行部 110 通信制御部 20 通信履歴取得部 30 通信履歴保存部 40 非決定的動作検出部 50 代替動作条件保持部 60 非決定的動作制御部

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 複数のプロセスが通信記述を用いて協調
    動作する並列プログラムの実行時に各プロセスの通信記
    述のもつ非決定性がもとで起こるプログラム全体の非決
    定的動作のテストについて、並列プログラムのテスト実
    行時の各プロセスの通信履歴をとり、その通信履歴をも
    とにその時の動作が非決定的動作を含んでいたかどう
    か、含んでいたならばその場所と条件を検出し、その条
    件を用いて並列プログラムの動作を制御して別の動作を
    意図的にステスト実行することを特徴とする並列プログ
    ラムの非決定的動作テスト方法。
JP3244951A 1991-08-30 1991-08-30 並列プログラムの非決定的動作テスト方法 Pending JPH0561734A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3244951A JPH0561734A (ja) 1991-08-30 1991-08-30 並列プログラムの非決定的動作テスト方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3244951A JPH0561734A (ja) 1991-08-30 1991-08-30 並列プログラムの非決定的動作テスト方法

Publications (1)

Publication Number Publication Date
JPH0561734A true JPH0561734A (ja) 1993-03-12

Family

ID=17126387

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3244951A Pending JPH0561734A (ja) 1991-08-30 1991-08-30 並列プログラムの非決定的動作テスト方法

Country Status (1)

Country Link
JP (1) JPH0561734A (ja)

Cited By (4)

* 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 プログラムのテスト装置及び方法並びにプログラムのテスト用ソフトウェアを記録した記録媒体
US6878249B2 (en) 2000-06-16 2005-04-12 Anelva Corporation High frequency sputtering device
WO2011118014A1 (ja) * 2010-03-25 2011-09-29 富士通株式会社 検証支援プログラム、制御プログラム、検証支援装置、マルチコアプロセッサシステム、検証支援方法、および制御方法
KR102254638B1 (ko) * 2019-12-10 2021-05-21 한국조폐공사 전자여권용 힌지 및 이를 포함하는 전자여권

Cited By (5)

* 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 プログラムのテスト装置及び方法並びにプログラムのテスト用ソフトウェアを記録した記録媒体
US6878249B2 (en) 2000-06-16 2005-04-12 Anelva Corporation High frequency sputtering device
WO2011118014A1 (ja) * 2010-03-25 2011-09-29 富士通株式会社 検証支援プログラム、制御プログラム、検証支援装置、マルチコアプロセッサシステム、検証支援方法、および制御方法
JP5423876B2 (ja) * 2010-03-25 2014-02-19 富士通株式会社 検証支援プログラム、検証支援装置、および検証支援方法
KR102254638B1 (ko) * 2019-12-10 2021-05-21 한국조폐공사 전자여권용 힌지 및 이를 포함하는 전자여권

Similar Documents

Publication Publication Date Title
US7475387B2 (en) Problem determination using system run-time behavior analysis
US7689872B2 (en) Autonomic program error detection and correction
US8225142B2 (en) Method and system for tracepoint-based fault diagnosis and recovery
EP0225603B1 (en) Distributed processing system and method
CN109144873B (zh) 一种linux内核处理方法及装置
US7574697B2 (en) Testing parallel applications using code instrumentation
US6961874B2 (en) Software hardening utilizing recoverable, correctable, and unrecoverable fault protocols
CN110990289B (zh) 一种自动提交bug的方法、装置、电子设备及存储介质
US8239051B2 (en) Information processing apparatus and information processing method
JPH0561734A (ja) 並列プログラムの非決定的動作テスト方法
Kranzlmüller et al. NOPE: A nondeterministic program evaluator
US20070271486A1 (en) Method and system to detect software faults
JPH02294739A (ja) 障害検出方式
US5533195A (en) Testing tool for diagnosing defective computer system devices
Stott Automated fault-injection-based dependability analysis of distributed computer systems
JP5181699B2 (ja) コンピュータ試験方法,プログラムおよび情報処理装置
CN114064341A (zh) 基于应急预案的故障处置方法及系统
Simser et al. Supervision of real-time software systems using optimistic path prediction and rollbacks
JP2831480B2 (ja) 情報処理装置の障害検知方法
JP2001051864A (ja) データ処理装置の試験実行方式
JP2004021936A (ja) 情報処理装置の障害処理方法および情報処理装置
JP2004046310A (ja) 障害修復プログラム適用方法及びその実施装置並びにその処理プログラム
Schagaev et al. Recovery: Searching and Monitoring of Correct Software States
JPH05108405A (ja) 障害解析プログラムデバツグ方式
JPS61131128A (ja) 自己診断方式