JPH05143394A - プログラム品質評価方法および装置 - Google Patents

プログラム品質評価方法および装置

Info

Publication number
JPH05143394A
JPH05143394A JP3300426A JP30042691A JPH05143394A JP H05143394 A JPH05143394 A JP H05143394A JP 3300426 A JP3300426 A JP 3300426A JP 30042691 A JP30042691 A JP 30042691A JP H05143394 A JPH05143394 A JP H05143394A
Authority
JP
Japan
Prior art keywords
coverage
data
test
value
program
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
JP3300426A
Other languages
English (en)
Inventor
Yukihiro Okabe
幸弘 岡部
Takashi Owaki
隆志 大脇
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 JP3300426A priority Critical patent/JPH05143394A/ja
Publication of JPH05143394A publication Critical patent/JPH05143394A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【目的】 被テストプログラム内に不定値を用いた処理
があっても、その影響を排除し、信頼性の高い網羅率が
得られるプログラム品質評価装置を提供する。 【構成】 被テストプログラム10のデータ領域11を
アクセスし変数単位のアクセス種類を監視しながら計測
するデータアクセス手段20と、プログラム10にメモ
リ40のテストデータを与え制御領域12の内容に従っ
て処理しデータ領域11を更新するテスト手段30と、
データアクセス手段20の情報を蓄積するアクセス情報
蓄積手段50と、アクセス情報を基に参照されたデータ
が不定値か否かを解析する不定値解析手段60と、解析
結果により算出された網羅率および不定値を用いている
部分を明示する処理情報出力手段70とを備える。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、プログラム品質評価方
法および装置に係り、特に、テストデータによるプログ
ラムテストの十分性を評価するプログラムテストの評価
方法および装置に関する。
【0002】
【従来の技術】コンピュータ等に実行させるプログラム
を作成した場合、そのプログラムが設計機能仕様通りに
動作するかどうかを検証する必要がある。
【0003】この検証には、机上チェックやコンパイラ
等により行なわれる静的テストと、実際に被テストプロ
グラムを実行して行なわれる動的テストとがある。
【0004】静的テストでは、宣言された変数が被テス
トプログラム内に存在するか否か等のプログラムの表面
的な誤りを発見できるが、処理の経過に応じて発生する
ようなプログラム上の誤りは見逃されやすい。そのた
め、静的テストと動的テストとを併用して検証すること
が常識となっている。
【0005】さて、動的テストにおいては、いかに効果
的なテストデータを選定し効果的な検証を行なうかが重
要な要素となる。そこで、例えば Glenford J.Myers に
よる『ソフトウエア・テストの技法』(P.41〜P.83 第
4章テスト・ケースの設計)に示されるように、全文網
羅(C0カバレージ)や全分岐網羅(C1カバレージ)と
いうような被テストプログラムの制御構造に基づく基準
がある。例えば、テスト作業の結果、網羅率が低けれ
ば、未通過の処理が存在していることを示し、未通過処
理を実行する新たなテスト項目またはテストデータが必
要である。このようにしてテスト作業を進めると、テス
トの十分性を改善できる。
【0006】しかし、従来の網羅率は、制御構造のみに
着目しているため、使用する変数のようなデータが正し
いか否かの確認処理がなされない。したがって、被テス
トプログラム内に誤った処理があるにもかかわらず、網
羅率が高い値を示してしまうような不具合がしばしば存
在する。
【0007】なお、テストデータとは、被テストプログ
ラムに与えるテスト用のデータの総称であり、テスト項
目とは、テストデータの種類によって区別されるテスト
内容の区分である。
【0008】
【発明が解決しようとする課題】コンパイラ等の静的テ
ストでは、処理経過により生じる不定値は、発見できな
いので、動的テストが必要となる。不定値とは、予め設
定される値とは無関係にテストデータに依存して処理の
途中で生じた値である。
【0009】従来の動的テストの十分性を評価する指標
である網羅率は、制御構造にのみ着目しているため、被
テストプログラム内に不定値を使用した処理が存在して
も、通過する処理の数が多ければ、高い値を示してしま
う問題があった。
【0010】図6は、上記課題を説明する図である。図
6Aのフローチャートに示す被テストプログラムに、図
6Bに示すテストデータを与える。図6Cは、この時の
データ領域300,301の変数がそれぞれa,xであ
ることを示している。
【0011】図6Aのプログラムは、変数aの値が正か
0以下かにより分岐し、正の場合は変数xを「+1」だ
け更新し、0以下の場合は変数xを「−1」だけ更新す
る機能を持っている。この場合、分岐の判定要因となる
変数aは不定値である。
【0012】コンピュータの電源がON/OFFされた
場合や、同じデータ領域を共有する他プログラム等が同
じ変数名を使用している場合には、それらの操作や動作
によって、変数aの値が決定されてしまうこともある。
網羅率測定時に変数が偶然に正であった場合の処理は、
ステップ101→102を通過する。一方、例えばその
後、コンピュータの電源切断/再投入時等に変数aが偶
然に0以下となった場合の処理は、ステップ101→1
03の順序で処理が通過し、網羅率は100%となりテ
ストは十分であることになる。
【0013】この場合、変数aの値は、本来予め設定さ
れた値でなく不定値となるので、測定された網羅率の信
頼性は低い。
【0014】本発明の目的は、被テストプログラム内に
不定値を使用した処理が存在した場合にも、その影響を
排除し、信頼性の高い網羅率が得られるプログラム品質
評価方法および装置を提供することである。
【0015】
【課題を解決するための手段】上記目的は、データ領域
と制御領域とからなる被テストログラムにテストデータ
を与えて網羅率を測定する際に、データ領域に対するア
クセス種別を記録し、アクセスされるデータの信頼性を
判定し、不定値参照ロジックを除外した網羅率指標(例
えばC0+,C1+カバレージ)を測定し、不定値を使用
した被テストプログラム内の処理部分を明示することに
より達成される。
【0016】すなわち、本発明は、上記目的を達成する
ために、プログラムテストにおける命令網羅や判定条件
網羅等の網羅率を求めプログラムの品質を評価する方法
において、前記網羅率を求めるとともに、予め設定され
た値のみを用いた処理の網羅率を求めるプログラム品質
評価方法を提案するものである。
【0017】予め設定された値のみを用いた処理の網羅
率を求める代わりに、テストデータに依存した不定値デ
ータを少なくとも1回参照した処理の網羅率を求めるこ
ともできる。
【0018】本発明は、また、上記目的を達成するため
に、データ領域と制御領域とからなる被テストプログラ
ムにテストデータを与え前記データ領域を参照しまたは
書換えるデータアクセス手段と、制御領域の内容に従っ
て処理を実行し命令網羅や判定条件網羅等の網羅率を測
定するテスト手段と、データ領域へのアクセスの種別を
記憶するアクセス情報蓄積手段と、データ領域において
参照された値が予め設定された値かテストデータに依存
して生じた不定値かをアクセスの種別に基づいて判定す
る不定値解析手段と、テスト手段が測定した網羅率と不
定値解析手段が解析した予め設定された値のみによる分
岐の網羅率とを出力する処理情報出力手段とからなるプ
ログラム品質評価装置を提案するものである。
【0019】前記装置構成において、処理情報出力手段
は、予め設定された値のみによる分岐の網羅率の代わり
に、不定値参照による分岐の網羅率を出力してもよい
し、不定値参照による分岐の有無も含めた分岐の網羅率
すなわち予め設定された値のみによる分岐の網羅率と不
定値参照による分岐の網羅率の両者を出力することもで
きる。また、不定値を参照した処理手順を併せて出力す
ることも可能である。
【0020】
【作用】被テストプログラムは、制御領域とデータ領域
に大別されるので、プログラム実行時にデータ領域に対
するアクセスの種類を計測し記録する。
【0021】この記録により、処理が分岐する際の判定
に用いられたデータや演算に使用されたデータが、不定
値であるか否かを判定できる。
【0022】分岐判定のために参照されたデータが、与
えられたテストデータを処理した結果であれば、測定さ
れた網羅率は、信頼できる値である。一方、参照された
データが、与えられたテストデータに無関係なものすな
わち不定値であれば、測定された網羅率は信頼できない
値であるといえる。
【0023】また、不定値判定の結果と記録されたアク
セス種別とにより、処理のどの部分で不定値が使用され
たかも判定できる。
【0024】これらの総合的な効果として、被テストプ
ログラムの品質評価の信頼性が高まる。
【0025】
【実施例】図1は、本発明によるプログラム品質評価装
置の一実施例の構成を示す機能ブロック図である。被テ
ストプログラム10は、データ領域11と制御領域12
とからなる。データ領域11は、各種の変数等を格納し
ておくものであり、具体的には複数個の領域で構成され
る。
【0026】本実施例のプログラム品質評価装置は、被
テストプログラム10のデータ領域11をアクセスする
データアクセス手段20と、テストデータメモリ40
と、被テストプログラムに対してテストデータメモリ4
0から取り出したテストデータを与え、制御領域12の
内容に従って処理を実行し、その実行結果に基づいてデ
ータ領域11を更新するテスト手段30と、データアク
セス手段20の情報を蓄積するアクセス情報蓄積手段5
0と、蓄積されたアクセス情報を基に参照されたデータ
が不定値か否かを解析する不定値解析手段60と、その
解析結果により算出された網羅率と不定値を使用してい
る部分を明示する処理情報出力手段70とを備えてい
る。データアクセス手段20は、使用される変数単位の
アクセス種類を監視しながら計測する。アクセス情報蓄
積手段50は、ICメモリや磁気デイスクメモリ等の公
知の記憶手段で構成される。不定値解析手段60は、解
析手順を記憶するICメモリおよびプロセッサ等で構成
される。処理情報出力手段70は、CRTデイスプレイ
やプリンタ等により構成される。
【0027】図2は、被テストプログラム10の一例を
示す図である。図3は、図2の被テストプログラム10
の処理手順を示すフロチャートである。この被テストプ
ログラム10は、変数aが正ならば変数bに「+1」を
加算し、0ならば変数bに「+100」を加算する処理
である。
【0028】図2および図3から明らかなように、この
プログラムは、変数aが負の時、変数xが不定値とな
る。かりに、机上確認において変数xが不定値となり得
ることが発見されなかった場合、網羅率測定は変数aが
負の時、不定値である変数xの値が0以下で、機能仕様
に従い、網羅率が偶然に100%となっても、分岐時に
不定値を参照したことを不定値解析手段60が示すの
で、不定値を考慮に入れた網羅率は100%とならな
い。しかも、不定値解析手段60による不定値判定結果
とアクセス情報蓄積手段50に記録されたアクセス種別
とに基づいて、不定値を使用した処理部分例えば図2の
被テストプログラムのうち変数xのif判定行 if x>0 then b:=b+x ;が処理情報
出力機構70により明示される。
【0029】図4および図5はプログラム品質評価結果
の出力例を示す図である。図4は従来の網羅率出力例を
示し、図5は、本実施例による網羅率出力例を示してい
る。601と603とは、従来の全文網羅率を示し、6
02と606とは、従来の全分岐網羅率(C0カバレー
ジ,C1カバレージ)を示す。604と607とは、本
実施例により不定値を考慮に入れた全文網羅率(C0
カバレージ)と全分岐網羅率(C1+カバレージ)とを
示している。605と608とは、各カバレージを測定
した時の不定値を使用した処理部分を明示出力した一例
である。
【0030】なお、各網羅率の定義は以下の通りであ
る。
【0031】 C0カバレージ: 被テストプログラム内の全処理数に対して、少なくとも一 (命令網羅) 回は実行された処理の数の割合を百分率で示したもの。
【0032】 C1カバレージ: 各判定処理が真と偽の結果を持ち、そして、被テストプロ (判定条件網羅) グラム内の全処理数に対して少なくとも一回は実行された 処理の数の割合を百分率で示したもの。
【0033】C0+カバレージ:各処理が不定値を使用
せずに、被テストプログラム内の全処理数に対して、少
なくとも一回は実行された処理の数の割合を百分率で示
したもの C1+カバレージ:各処理が不定値を使用せずに、各判
定処理が真と偽の結果をもち、そして、被テストプログ
ラム内の全処理数に対して、少なくとも一回は実行され
た処理の数の割合を百分率で示したもの。
【0034】本実施例によれば、従来の全文網羅率60
1および全分岐網羅率602に対応する全文網羅率60
3および全分岐網羅率606のほかに、不定値を考慮に
入れた全文網羅率604と全分岐網羅率607および各
カバレージを測定した時の不定値を使用した処理部分6
05と608を併せて明示するので、網羅率の信頼性を
高めることができる。
【0035】なお、不定値を考慮に入れた全文網羅率6
04と全分岐網羅率607すなわち不定値を全く用いて
いない網羅率に代えて、不定値を用いた網羅率の方を表
示してもよく、両者を並べて表示してもよいことは明ら
かであろう。
【0036】また、ここでは、従来のC0カバレージ,
1カバレージに加えて、C0+カバレージ,C1+カバ
レージを求める実施例を説明したが、一般にCnカバレ
ージが定義された場合にも、本発明は有効である。
【0037】さらに、不定値を全く用いていない網羅率
または不定値を使用した網羅率や処理部分を明示する手
段は、CRT等のソフトコピーを出力する手段でもプリ
ンタ等のハードコピーを出力する手段であってもよい。
【0038】
【発明の効果】本発明によれば、従来の全網羅率および
分岐網羅率に加えて、不定値を考慮に入れた全文網羅率
と全分岐網羅率とを表示可能となるので、プログラムテ
ストの十分性を評価する網羅率の信頼度を高め、結果と
してプログラムの品質そのものも高めることができる。
【図面の簡単な説明】
【図1】本発明によるプログラム品質評価装置の一実施
例の構成を示す機能ブロック図である。
【図2】図1の被テストプログラム10の一例を示す図
である。
【図3】図2の被テストプログラム10の処理手順を示
すフロチャートである。
【図4】従来例によるプログラム品質評価結果の出力例
を示す図である。
【図5】図1の実施例によるプログラム品質評価結果の
出力例を示す図である。
【図6】従来の課題を説明するための被テストプログラ
ムのフローチャートとテストデータとデータ領域の変数
とを示す図である。
【符号の説明】
10 被テストプログラム 11 プログラムデータ領域 12 プログラム制御領域 20 データアクセス手段 30 テスト手段 40 メモリ 50 アクセス情報蓄積手段 60 不定値解析手段 70 処理情報出力手段

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 プログラムテストにおける命令網羅や判
    定条件網羅等の網羅率を求めプログラムの品質を評価す
    る方法において、 前記網羅率を求めるとともに、予め設定された値のみを
    用いた処理の網羅率を求めることを特徴とするプログラ
    ム品質評価方法。
  2. 【請求項2】 プログラムテストにおける命令網羅や判
    定条件網羅等の網羅率を求めプログラムの品質を評価す
    る方法において、 前記網羅率を求めるとともに、テストデータに依存した
    不定値データを少なくとも1回参照した処理の網羅率を
    求めることを特徴とするプログラム品質評価方法。
  3. 【請求項3】 データ領域と制御領域とからなる被テス
    トプログラムにテストデータを与え前記データ領域を参
    照しまたは書換えるデータアクセス手段と、 前記制御領域の内容に従って処理を実行し命令網羅や判
    定条件網羅等の網羅率を測定するテスト手段と、 前記データ領域へのアクセスの種別を記憶するアクセス
    情報蓄積手段と、 データ領域において参照された値が予め設定された値か
    テストデータに依存して生じた不定値かを前記アクセス
    の種別に基づいて判定する不定値解析手段と、 テスト手段が測定した網羅率と不定値解析手段が解析し
    た予め設定された値のみによる分岐の網羅率とを出力す
    る処理情報出力手段とからなるプログラム品質評価装
    置。
  4. 【請求項4】 データ領域と制御領域とからなる被テス
    トプログラムにテストデータを与え前記データ領域を参
    照しまたは書換えるデータアクセス手段と、 前記制御領域の内容に従って処理を実行し命令網羅や判
    定条件網羅等の網羅率を測定するテスト手段と、 前記データ領域へのアクセスの種別を記憶するアクセス
    情報蓄積手段と、 データ領域において参照された値が予め設定された値か
    テストデータに依存して生じた不定値かを前記アクセス
    の種別に基づいて判定する不定値解析手段と、 テスト手段が測定した網羅率と不定値解析手段が解析し
    た不定値参照による分岐の網羅率とを出力する処理情報
    出力手段とからなるプログラム品質評価装置。
  5. 【請求項5】 データ領域と制御領域とからなる被テス
    トプログラムにテストデータを与え前記データ領域を参
    照しまたは書換えるデータアクセス手段と、 前記制御領域の内容に従って処理を実行し命令網羅や判
    定条件網羅等の網羅率を測定するテスト手段と、 前記データ領域へのアクセスの種別を記憶するアクセス
    情報蓄積手段と、 データ領域において参照された値が予め設定された値か
    テストデータに依存して生じた不定値かを前記アクセス
    の種別に基づいて判定する不定値解析手段と、 テスト手段が測定した網羅率と不定値解析手段が解析し
    た不定値参照による分岐の有無も含めた分岐の網羅率と
    を出力する処理情報出力手段とからなるプログラム品質
    評価装置。
  6. 【請求項6】 データ領域と制御領域とからなる被テス
    トプログラムにテストデータを与え前記データ領域を参
    照しまたは書換えるデータアクセス手段と、 前記制御領域の内容に従って処理を実行し命令網羅や判
    定条件網羅等の網羅率を測定するテスト手段と、 前記データ領域へのアクセスの種別を記憶するアクセス
    情報蓄積手段と、 データ領域において参照された値が予め設定された値か
    テストデータに依存して生じた不定値かを前記アクセス
    の種別に基づいて判定する不定値解析手段と、 テスト手段が測定した網羅率と不定値解析手段が解析し
    た不定値参照による分岐の有無も含めた網羅率と不定値
    を参照した処理手順とを出力する処理情報出力手段とか
    らなるプログラム品質評価装置。
JP3300426A 1991-11-15 1991-11-15 プログラム品質評価方法および装置 Pending JPH05143394A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3300426A JPH05143394A (ja) 1991-11-15 1991-11-15 プログラム品質評価方法および装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3300426A JPH05143394A (ja) 1991-11-15 1991-11-15 プログラム品質評価方法および装置

Publications (1)

Publication Number Publication Date
JPH05143394A true JPH05143394A (ja) 1993-06-11

Family

ID=17884660

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3300426A Pending JPH05143394A (ja) 1991-11-15 1991-11-15 プログラム品質評価方法および装置

Country Status (1)

Country Link
JP (1) JPH05143394A (ja)

Similar Documents

Publication Publication Date Title
US8397104B2 (en) Creation of test plans
US8386851B2 (en) Functional coverage using combinatorial test design
US7698690B2 (en) Identifying code that wastes time performing redundant computation
US20090249299A1 (en) Evaluation of Software based on Review History
EP3506104A1 (en) Coverage test support device and coverage test support method
US20050204241A1 (en) Method and device for analyzing software error
US8353056B2 (en) Apparatus and method for detecting program plagiarism through memory access log analysis
JP2001188691A (ja) 検証プログラム自動生成方法及び検証プログラム自動生成プログラムを記録したコンピュータ読み取り可能な記録媒体
US6643769B1 (en) System and method for enabling selective execution of computer code
CN117319091A (zh) 基于深度学习的企业软件网络安全漏洞检测方法及系统
US20150160274A1 (en) Method and apparatus for power estimation
US8903700B2 (en) Concretization of abstracted traces
JP2005339204A (ja) 情報処理装置およびプログラムのテスト方法
JPH05143394A (ja) プログラム品質評価方法および装置
JP2010282441A (ja) モジュール間依存強度算出装置、モジュール間依存強度測定方法およびモジュール間依存強度測定プログラム
CN110309054B (zh) 代码有效性测试方法、计算设备及存储介质
US20090064109A1 (en) Methods, systems, and computer products for evaluating robustness of a list scheduling framework
JP2011044111A (ja) ソフトウェアのテスト方法及びプログラム
JP2525393B2 (ja) 論理シミュレ−ションのテストカバレ−ジ方式
US8516445B2 (en) Multi-dimension code coverage
JP2795332B2 (ja) ループ処理誤り検出装置
JP3100458B2 (ja) カバレージ・テスタ
JPH05313881A (ja) ソフトウェア品質評価装置およびソフトウェア品質評価方法
JPH07146806A (ja) テスト作業管理支援装置
JPH036630A (ja) 対話処理プログラム検査方式