JPH0844590A - ソフトウエアシステムの選択テスト装置及びその方法 - Google Patents
ソフトウエアシステムの選択テスト装置及びその方法Info
- Publication number
- JPH0844590A JPH0844590A JP7137507A JP13750795A JPH0844590A JP H0844590 A JPH0844590 A JP H0844590A JP 7137507 A JP7137507 A JP 7137507A JP 13750795 A JP13750795 A JP 13750795A JP H0844590 A JPH0844590 A JP H0844590A
- Authority
- JP
- Japan
- Prior art keywords
- test
- list
- program database
- elements
- generating
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
(57)【要約】
【目的】 ソフトウエアシステムの新しいバージョンを
テストする為にどのサブセットが実行されなければなら
ないかを識別する選択遡及テストを行なうシステム及び
その方法を提供すること。 【構成】 本発明のシステムソフトウエアは、ソースコ
ードから計算されることが可能でかつプログラムの実行
の間にモニタされうる基本的なコードの組(コード要
素)に分割される。システムソフトウエアの各々のテス
トユニットが実行され、この実行が、システムソフトウ
エアとテストユニットの関係を解析する目的及びそのテ
ストユニットによってカバーされているコード要素のサ
ブセットを決定する目的でモニタされる。システムソフ
トウエアが変更された場合には、変更されたコード要素
の組が識別される。この変更されたコード要素の組は、
その後、そのコード要素の組の各々と比較される。この
コード要素の一つが変更されていると識別されると、そ
のテストユニットは再実行される。
テストする為にどのサブセットが実行されなければなら
ないかを識別する選択遡及テストを行なうシステム及び
その方法を提供すること。 【構成】 本発明のシステムソフトウエアは、ソースコ
ードから計算されることが可能でかつプログラムの実行
の間にモニタされうる基本的なコードの組(コード要
素)に分割される。システムソフトウエアの各々のテス
トユニットが実行され、この実行が、システムソフトウ
エアとテストユニットの関係を解析する目的及びそのテ
ストユニットによってカバーされているコード要素のサ
ブセットを決定する目的でモニタされる。システムソフ
トウエアが変更された場合には、変更されたコード要素
の組が識別される。この変更されたコード要素の組は、
その後、そのコード要素の組の各々と比較される。この
コード要素の一つが変更されていると識別されると、そ
のテストユニットは再実行される。
Description
【0001】
【産業上の利用分野】本発明はコンピュータソフトウエ
アシステムに関し、特に、ソフトウエアシステムの新し
いバージョンをテストする目的でテストの組のどのサブ
セットが実行されなければならないかを識別する選択遡
及テストを行なうシステム及びその方法に関する。
アシステムに関し、特に、ソフトウエアシステムの新し
いバージョンをテストする目的でテストの組のどのサブ
セットが実行されなければならないかを識別する選択遡
及テストを行なうシステム及びその方法に関する。
【0002】
【従来の技術】コンピュータソフトウエアシステムが成
熟するにつれて、維持管理活動が主要なものとなりつつ
ある。ある研究によれば、ソフトウエアシステムのライ
フサイクル中の開発努力の50%以上が維持管理に費や
されており、その大部分がテストによるものである。大
部分の書き直しという稀なケースを除いて、維持管理フ
ェーズにおけるシステムへの変更は通常小さいものであ
り、問題点の修正及び機能をわずかずつ増強する目的で
なされるものである。それゆえ、ソフトウエアを選択的
に再テストするための技法により、開発時間が低減され
得る。
熟するにつれて、維持管理活動が主要なものとなりつつ
ある。ある研究によれば、ソフトウエアシステムのライ
フサイクル中の開発努力の50%以上が維持管理に費や
されており、その大部分がテストによるものである。大
部分の書き直しという稀なケースを除いて、維持管理フ
ェーズにおけるシステムへの変更は通常小さいものであ
り、問題点の修正及び機能をわずかずつ増強する目的で
なされるものである。それゆえ、ソフトウエアを選択的
に再テストするための技法により、開発時間が低減され
得る。
【0003】ソフトウエアシステムをテストするために
用いられるテストの組は、通常、テストされるシステム
の構成要素のいくつかのサブセットを調べるすなわちカ
バーする、複数個のテストユニットより構成されてい
る。あるテストユニットは、そのカバーするプログラム
構成要素が変更された場合にのみ、再実行されなければ
ならない。しかしながら、テストユニットとそれがカバ
ーするプログラム構成要素との間の依存関係を識別する
ことは困難である。この種の依存関係情報を計算するた
めには、テストユニットのソースコードとその実行時の
振る舞いの双方を適切に解析しなければならない。
用いられるテストの組は、通常、テストされるシステム
の構成要素のいくつかのサブセットを調べるすなわちカ
バーする、複数個のテストユニットより構成されてい
る。あるテストユニットは、そのカバーするプログラム
構成要素が変更された場合にのみ、再実行されなければ
ならない。しかしながら、テストユニットとそれがカバ
ーするプログラム構成要素との間の依存関係を識別する
ことは困難である。この種の依存関係情報を計算するた
めには、テストユニットのソースコードとその実行時の
振る舞いの双方を適切に解析しなければならない。
【0004】
【発明が解決しようとする課題】数多くの選択再テスト
技法が、既に文献に記載されている。従来技術に係る技
法の多くは、テストを生成してそのテストの適切性を保
証する特定の戦略と共に機能するように設計されてい
る。例えば、パーティションテストに係る選択再テスト
技法を記述した、Yau,Stephen S.及び ishimoto, Zenic
hiによる"A Methodfor Revalidating Modified Program
s in the Maintenance Phase"という表題の論文(in Pr
oceedings of the 11th Annual International Compute
r Softwareand Application Conference(COMPSAC), pag
es272-277, IEEE Computer Society(1987.10.7-9))を
参照。また、データフローテストに係る選択再テスト技
法に関しては、Ostrand, Thomas J.及びWeyuker, Elain
e J.による"Using Data FlowAnalysis for Regression
Testing"という表題の論文(in Proceedings of theSix
th Annual Pacific Northwest Software Quality Confe
rence(1988.9.19-20))、Harrold, Mary Jean, Gupta,
Rajiv及びSoffa, Mary Louによる"A Methodology for C
ontrolling the Size of a Test Suite"という表題の論
文(ACM Transactions on Software Engineering and M
ethodology, Vol.2, No.3, pages270-285(1993.7))、
及びHarrold, Mary Jean及びSoffa, Mary Louによる"An
Incremental Approach to Unit Testing During Maint
enance"という表題の論文(in Proceedings of the Con
ference on Software Maintenance, pages362-367, IEE
EComputer Society(1988.10.24-27))を参照。これらの
方法においては、テストの組の適切性を決定する目的
で、テストデータの適切性基準(例えばステートメント
のカバレッジ、デフォールトユースのカバレッジ等)が
利用される。この基準は多数のテスト要求事項(例えば
特定の実行パスのカバレッジなど)を生じ、各々のテス
トユニットが当該テスト要求事項のある種のサブセット
を満足しなければならない。選択遡及テストにおいて
は、各々のテストユニットがどのテスト要求事項を満足
させるのか、及びどの要求事項が修正によって影響を受
けるのかを決定するために、システム及びそのテストユ
ニットが解析される。この種の技法は、ミューテーショ
ンテストなどの他の種類のテスト生成ストラテジーに関
しても適応されうるが、この種の適応を行なうために
は、この種の技法をサポートする方法及びツールが各々
の場合毎に選択されたストラテジーに関してカスタマイ
ズされていることが必要となる。データフロー解析を選
択されたテスト生成ストラテジーをは独立に用いる別の
技法も報告されている。例えば、Fischer, Kurt, Raji,
Farzad及びChruscicki, Andrewによる"A Methodology
for RetestingModified Software"という表題の論文(i
n Proceedings of the National Telecommunictions Co
nference, Vol.1, pagesB6.3.1-B6.3.6(IEEE, 1981.11.
29-1981.12.3))、Benedusi, P., Cimitile, A.及びDe
Carlini, U.による"Post-Maintenance Testing Based o
n Path Change Analysis"という表題の論文(in Procee
dings of the Conference on Software Maintenance 19
88, pages352-361(IEEE Computer Society, 1988.10.24
-27))、及び、Hartmann, Jean及びRobson, DavidJ.に
よる"Techniques for Selective Revalidation"という
表題の論文(IEEE Software, 7(1),pages31-36(1990.
1))を参照。これらのデータフローに基づく技法の全て
においてはプロシージャ内データフロー解析が用いられ
るが、その有効性をユニットレベルテストに限定してし
まう。さらに、データフロー解析に係る計算上の複雑さ
により、データフローに基づく選択再テストが全てを再
テストするという単純な方式より、特に巨大なソフトウ
エアシステムをテストする場合に、より費用がかかると
いうことも明らかである。これまでに、スライス技法を
変わりに用いることによってデータフロー解析の費用を
回避しようとする試みがなされてきている。例えば、Bi
nkley, Davidによる"Using Semanti Differencingto Re
duce the Cost of Regression Testing"という表題の論
文(in Proceedings of the Conference on Software M
aintenance 1992, pages41-50(IEEE Computer Society,
1992.11.9-12))、及びGupta, Rajiv, Harrold, Mary
Jean及びSoffa, Mary Louによる"An Approach to Regre
ssion Testing Using Slicing"という表題の論文(in P
roceedings of the Conference on Software Maintenan
ce 1992, pages299-308(IEEE Computer Society, 1992.
11.9-12))を参照。例えばGuptaらによって記述された
スライス技法は、プログラム及びそのテストユニットの
データフローヒストリの計算及び維持管理を必要とする
ことなく、プログラムの編集によって影響された定義ユ
ース対を識別するデータフローテストに関連して利用さ
れる。
技法が、既に文献に記載されている。従来技術に係る技
法の多くは、テストを生成してそのテストの適切性を保
証する特定の戦略と共に機能するように設計されてい
る。例えば、パーティションテストに係る選択再テスト
技法を記述した、Yau,Stephen S.及び ishimoto, Zenic
hiによる"A Methodfor Revalidating Modified Program
s in the Maintenance Phase"という表題の論文(in Pr
oceedings of the 11th Annual International Compute
r Softwareand Application Conference(COMPSAC), pag
es272-277, IEEE Computer Society(1987.10.7-9))を
参照。また、データフローテストに係る選択再テスト技
法に関しては、Ostrand, Thomas J.及びWeyuker, Elain
e J.による"Using Data FlowAnalysis for Regression
Testing"という表題の論文(in Proceedings of theSix
th Annual Pacific Northwest Software Quality Confe
rence(1988.9.19-20))、Harrold, Mary Jean, Gupta,
Rajiv及びSoffa, Mary Louによる"A Methodology for C
ontrolling the Size of a Test Suite"という表題の論
文(ACM Transactions on Software Engineering and M
ethodology, Vol.2, No.3, pages270-285(1993.7))、
及びHarrold, Mary Jean及びSoffa, Mary Louによる"An
Incremental Approach to Unit Testing During Maint
enance"という表題の論文(in Proceedings of the Con
ference on Software Maintenance, pages362-367, IEE
EComputer Society(1988.10.24-27))を参照。これらの
方法においては、テストの組の適切性を決定する目的
で、テストデータの適切性基準(例えばステートメント
のカバレッジ、デフォールトユースのカバレッジ等)が
利用される。この基準は多数のテスト要求事項(例えば
特定の実行パスのカバレッジなど)を生じ、各々のテス
トユニットが当該テスト要求事項のある種のサブセット
を満足しなければならない。選択遡及テストにおいて
は、各々のテストユニットがどのテスト要求事項を満足
させるのか、及びどの要求事項が修正によって影響を受
けるのかを決定するために、システム及びそのテストユ
ニットが解析される。この種の技法は、ミューテーショ
ンテストなどの他の種類のテスト生成ストラテジーに関
しても適応されうるが、この種の適応を行なうために
は、この種の技法をサポートする方法及びツールが各々
の場合毎に選択されたストラテジーに関してカスタマイ
ズされていることが必要となる。データフロー解析を選
択されたテスト生成ストラテジーをは独立に用いる別の
技法も報告されている。例えば、Fischer, Kurt, Raji,
Farzad及びChruscicki, Andrewによる"A Methodology
for RetestingModified Software"という表題の論文(i
n Proceedings of the National Telecommunictions Co
nference, Vol.1, pagesB6.3.1-B6.3.6(IEEE, 1981.11.
29-1981.12.3))、Benedusi, P., Cimitile, A.及びDe
Carlini, U.による"Post-Maintenance Testing Based o
n Path Change Analysis"という表題の論文(in Procee
dings of the Conference on Software Maintenance 19
88, pages352-361(IEEE Computer Society, 1988.10.24
-27))、及び、Hartmann, Jean及びRobson, DavidJ.に
よる"Techniques for Selective Revalidation"という
表題の論文(IEEE Software, 7(1),pages31-36(1990.
1))を参照。これらのデータフローに基づく技法の全て
においてはプロシージャ内データフロー解析が用いられ
るが、その有効性をユニットレベルテストに限定してし
まう。さらに、データフロー解析に係る計算上の複雑さ
により、データフローに基づく選択再テストが全てを再
テストするという単純な方式より、特に巨大なソフトウ
エアシステムをテストする場合に、より費用がかかると
いうことも明らかである。これまでに、スライス技法を
変わりに用いることによってデータフロー解析の費用を
回避しようとする試みがなされてきている。例えば、Bi
nkley, Davidによる"Using Semanti Differencingto Re
duce the Cost of Regression Testing"という表題の論
文(in Proceedings of the Conference on Software M
aintenance 1992, pages41-50(IEEE Computer Society,
1992.11.9-12))、及びGupta, Rajiv, Harrold, Mary
Jean及びSoffa, Mary Louによる"An Approach to Regre
ssion Testing Using Slicing"という表題の論文(in P
roceedings of the Conference on Software Maintenan
ce 1992, pages299-308(IEEE Computer Society, 1992.
11.9-12))を参照。例えばGuptaらによって記述された
スライス技法は、プログラム及びそのテストユニットの
データフローヒストリの計算及び維持管理を必要とする
ことなく、プログラムの編集によって影響された定義ユ
ース対を識別するデータフローテストに関連して利用さ
れる。
【0005】
【課題を解決するための手段】本発明は、従来技術に係
る方法と数多くの点において異なっている。例えば、本
発明に係る方法は、あらゆるテスト生成及びテストの組
の維持管理に係るストラテジーと共に用いられ得る。さ
らに、用いられる解析は、ユニットレベル及びシステム
レベルテストの双方に対して適切であることを実現する
レベルにおいて実行される。さらに、用いられる解析ア
ルゴリズムは多くの費用を必要とするような計算が不要
であり、数多くのテストユニットを有する巨大なシステ
ムを再テストためにも用いられ得る。
る方法と数多くの点において異なっている。例えば、本
発明に係る方法は、あらゆるテスト生成及びテストの組
の維持管理に係るストラテジーと共に用いられ得る。さ
らに、用いられる解析は、ユニットレベル及びシステム
レベルテストの双方に対して適切であることを実現する
レベルにおいて実行される。さらに、用いられる解析ア
ルゴリズムは多くの費用を必要とするような計算が不要
であり、数多くのテストユニットを有する巨大なシステ
ムを再テストためにも用いられ得る。
【0006】本発明に従って、システムソフトウエア
は、ソースコードから計算されることが可能であってか
つプログラムの実行の間にモニタされうる基本的なコー
ドの組(コード要素)に分割される。システムソフトウ
エアの各々のテストユニットが実行され、この実行が、
システムソフトウエアとテストユニットの関係を解析す
る目的及びそのテストユニットによってカバーされてい
るコード要素のサブセットを決定する目的でモニタされ
る。システムソフトウエアが変更された場合には、変更
されたコード要素の組が識別される。この変更されたコ
ード要素の組は、その後、テストユニットによってカバ
ーされているコード要素の組の各々と比較される。テス
トユニットによってカバーされているコード要素の一つ
が変更されていると識別された場合には、そのテストユ
ニットは再実行されなければならない。仮定でのシステ
ム修正の場合には、どのテストユニットが実行されなけ
ればならないかを決定するために、ユーザが変更された
コード要素のリストを生成する。本発明は、システムソ
フトウエアのどのコード要素がテストユニットによって
カバーされているかを決定するためにも用いられ得る。
は、ソースコードから計算されることが可能であってか
つプログラムの実行の間にモニタされうる基本的なコー
ドの組(コード要素)に分割される。システムソフトウ
エアの各々のテストユニットが実行され、この実行が、
システムソフトウエアとテストユニットの関係を解析す
る目的及びそのテストユニットによってカバーされてい
るコード要素のサブセットを決定する目的でモニタされ
る。システムソフトウエアが変更された場合には、変更
されたコード要素の組が識別される。この変更されたコ
ード要素の組は、その後、テストユニットによってカバ
ーされているコード要素の組の各々と比較される。テス
トユニットによってカバーされているコード要素の一つ
が変更されていると識別された場合には、そのテストユ
ニットは再実行されなければならない。仮定でのシステ
ム修正の場合には、どのテストユニットが実行されなけ
ればならないかを決定するために、ユーザが変更された
コード要素のリストを生成する。本発明は、システムソ
フトウエアのどのコード要素がテストユニットによって
カバーされているかを決定するためにも用いられ得る。
【0007】
【実施例】ソフトウエアシステムSは、関数Fと非関数
Vという2つの要素より構成されていると考えることが
できる。関数は、値を生成してストアすることによって
プログラムの内容を実行する基本的な要素である。プロ
グラムの全てのアクションは、ある関数において実行さ
れなければならない、ということが仮定されている。非
関数は、変数、型及びマクロ等の、プログラム中におけ
る実行されない要素である。例えば、変数は関数が操作
するストレージ領域を定義し、型は、なかんずく変数の
ストレージ量を規定する。ソフトウエアシステムにおけ
るプログラムは、関数Fと非関数Vのあるサブセットの
複合体として定義される。システムSに関するテストユ
ニットTは、プログラム及びある固定された入力データ
の組として定義される。テストユニットTによってカバ
ーされる(すなわちTの実行の間に起動される)関数の
組は、Tfと呼称される。組Tf内の関数によって用いら
れる非関数要素の組はTvと呼称される。
Vという2つの要素より構成されていると考えることが
できる。関数は、値を生成してストアすることによって
プログラムの内容を実行する基本的な要素である。プロ
グラムの全てのアクションは、ある関数において実行さ
れなければならない、ということが仮定されている。非
関数は、変数、型及びマクロ等の、プログラム中におけ
る実行されない要素である。例えば、変数は関数が操作
するストレージ領域を定義し、型は、なかんずく変数の
ストレージ量を規定する。ソフトウエアシステムにおけ
るプログラムは、関数Fと非関数Vのあるサブセットの
複合体として定義される。システムSに関するテストユ
ニットTは、プログラム及びある固定された入力データ
の組として定義される。テストユニットTによってカバ
ーされる(すなわちTの実行の間に起動される)関数の
組は、Tfと呼称される。組Tf内の関数によって用いら
れる非関数要素の組はTvと呼称される。
【0008】本発明は、プログラム中における全てのメ
モリ操作が関数及び非関数要素間の関係の静的なソース
コード解析から推論されうるという前提に依拠してい
る。この前提は、以下の2つの条件を仮定している。第
一に、明らかに定まったメモリの存在、すなわち各々の
アクセスされるメモリセグメントがシンボリックに定義
された変数を介して識別されうるものであること。第二
に、明らかに定義された境界を有するポインタの存在、
すなわち、ポインタ変数あるいはポインタ表現はある基
底変数を参照していなければならず、その変数によって
規定されるメモリセグメントの大きさによって制限され
ていなければならないこと。それゆえ、プログラム中に
おける全てのメモリ操作が関数及び非関数要素間の関係
の静的なソースコード解析から推論されうるという前記
前提は、上記条件を満足するコンピュータ言語に関して
有効である。
モリ操作が関数及び非関数要素間の関係の静的なソース
コード解析から推論されうるという前提に依拠してい
る。この前提は、以下の2つの条件を仮定している。第
一に、明らかに定まったメモリの存在、すなわち各々の
アクセスされるメモリセグメントがシンボリックに定義
された変数を介して識別されうるものであること。第二
に、明らかに定義された境界を有するポインタの存在、
すなわち、ポインタ変数あるいはポインタ表現はある基
底変数を参照していなければならず、その変数によって
規定されるメモリセグメントの大きさによって制限され
ていなければならないこと。それゆえ、プログラム中に
おける全てのメモリ操作が関数及び非関数要素間の関係
の静的なソースコード解析から推論されうるという前記
前提は、上記条件を満足するコンピュータ言語に関して
有効である。
【0009】例えばC言語によって書かれたアプリケー
ションに関しては、明らかに定まったメモリ、という条
件は適切である。C言語においては整数値をアドレス値
に変換する型強制が可能であるが、デバイスドライバな
どのようにハードウエアアドレスの直接操作を必要とす
るプログラムを除いてはそのような構成は稀である。し
かしながら、そのような構成が必要とされる場合には、
そのような整数値によって表現されるアドレスは、通常
の変数によって占有されるアドレス空間とは充分に分離
されていることが常である。よって、変数名に言及する
ことなく変更される変数の値は、ごく稀にしか問題とな
らない。
ションに関しては、明らかに定まったメモリ、という条
件は適切である。C言語においては整数値をアドレス値
に変換する型強制が可能であるが、デバイスドライバな
どのようにハードウエアアドレスの直接操作を必要とす
るプログラムを除いてはそのような構成は稀である。し
かしながら、そのような構成が必要とされる場合には、
そのような整数値によって表現されるアドレスは、通常
の変数によって占有されるアドレス空間とは充分に分離
されていることが常である。よって、変数名に言及する
ことなく変更される変数の値は、ごく稀にしか問題とな
らない。
【0010】しかしながら、明らかに定義された境界を
有するポインタ、という条件は、メモリオーバーライト
及びストレーポインタなどの欠陥によって、実際のCプ
ログラムにおいては時々満たされない場合がある。これ
らの欠陥は、とりわけ検出、分離及び除去が難しい。こ
れらの欠陥の検出を助ける数多くの研究技法及び市販の
ツールが利用可能である。例えば、Austin, Todd M., B
reach, Scott E.,及びSohi, Gurindar S.による"Effici
ent Detection of All Pointer and Array Access Erro
rs"という表題の論文(Technical Report TR1197, Comp
uter SciencesDepartment, University of Wisconsin-M
adison(1993.12.1))、及び、Hastings, Reed及びJoyc
e, Bobによる"Purify: Fast Detection of Memory Leak
s and Access Errors"という表題の論文(Proceedings
of the USENIX Winter 1992 Technical Conference, pa
ges125-136(USENIX Association, 1992.1.20-24))を参
照。この種の欠陥がテストの間に検出された場合には、
その欠陥によって影響されるプログラム要素を識別する
試みが必ずなされる。例えば、メモリオーバーライト
は、それを発生させる関数に制限されることがしばしば
である。影響されるプログラム要素が識別されうる場合
には、これらのプログラム要素はテストに関して変更さ
れた要素として識別されなければならない。この種の欠
陥の検出が余りにも難しくて不可能であるという極端な
場合には、メモリの全ての部分が損傷されている可能性
があり、よってその欠陥を発生させるコードの完全なテ
ストを保証するためには全てのテストユニットが再実行
されなければならない、ということが仮定されなければ
ならない。この種の欠陥がバージョン変更に際して伝達
されないように除去するすることが重要である。
有するポインタ、という条件は、メモリオーバーライト
及びストレーポインタなどの欠陥によって、実際のCプ
ログラムにおいては時々満たされない場合がある。これ
らの欠陥は、とりわけ検出、分離及び除去が難しい。こ
れらの欠陥の検出を助ける数多くの研究技法及び市販の
ツールが利用可能である。例えば、Austin, Todd M., B
reach, Scott E.,及びSohi, Gurindar S.による"Effici
ent Detection of All Pointer and Array Access Erro
rs"という表題の論文(Technical Report TR1197, Comp
uter SciencesDepartment, University of Wisconsin-M
adison(1993.12.1))、及び、Hastings, Reed及びJoyc
e, Bobによる"Purify: Fast Detection of Memory Leak
s and Access Errors"という表題の論文(Proceedings
of the USENIX Winter 1992 Technical Conference, pa
ges125-136(USENIX Association, 1992.1.20-24))を参
照。この種の欠陥がテストの間に検出された場合には、
その欠陥によって影響されるプログラム要素を識別する
試みが必ずなされる。例えば、メモリオーバーライト
は、それを発生させる関数に制限されることがしばしば
である。影響されるプログラム要素が識別されうる場合
には、これらのプログラム要素はテストに関して変更さ
れた要素として識別されなければならない。この種の欠
陥の検出が余りにも難しくて不可能であるという極端な
場合には、メモリの全ての部分が損傷されている可能性
があり、よってその欠陥を発生させるコードの完全なテ
ストを保証するためには全てのテストユニットが再実行
されなければならない、ということが仮定されなければ
ならない。この種の欠陥がバージョン変更に際して伝達
されないように除去するすることが重要である。
【0011】よって、前述された条件が与えられた場合
には、選択遡及テストにおいて実行すべきことが以下の
ようにまとめられる。TがソフトウエアシステムSに関
するテストユニットであるとする。Sに対して変更がな
された場合、Tf及びTv内の要素が変更されていなけれ
ば、TはSに関して再実行される必要はない。この様子
が図1に図示されている。
には、選択遡及テストにおいて実行すべきことが以下の
ようにまとめられる。TがソフトウエアシステムSに関
するテストユニットであるとする。Sに対して変更がな
された場合、Tf及びTv内の要素が変更されていなけれ
ば、TはSに関して再実行される必要はない。この様子
が図1に図示されている。
【0012】図1は、依存関係グラフ及びソフトウエア
システムの新たなバージョンに係る選択再テストを例示
した図である。種々の要素より構成されているソフトウ
エアシステムS30を考える。関数Fは四角によって表
わされており、非関数Vは円によって表現されている。
矢印はシステム30内の要素間の依存関係を表現してお
り、矢印の根元にある要素が矢印の先端にある要素に依
存している。よって、図1においては、関数32が関数
34に依存しており、関数34が変数36及び38に依
存している。関数32は、さらに関数40に依存してお
り、関数40は変数38及び44に依存しており、さら
に関数40は関数42に依存している。図1には、ソフ
トウエアシステム30をテストするために用いられるテ
ストユニット46、48、及び50も示されている。ソ
フトウエアシステム30をテストするために用いられる
テストユニット46、48、及び50の集合は、テスト
の組51と呼称される。
システムの新たなバージョンに係る選択再テストを例示
した図である。種々の要素より構成されているソフトウ
エアシステムS30を考える。関数Fは四角によって表
わされており、非関数Vは円によって表現されている。
矢印はシステム30内の要素間の依存関係を表現してお
り、矢印の根元にある要素が矢印の先端にある要素に依
存している。よって、図1においては、関数32が関数
34に依存しており、関数34が変数36及び38に依
存している。関数32は、さらに関数40に依存してお
り、関数40は変数38及び44に依存しており、さら
に関数40は関数42に依存している。図1には、ソフ
トウエアシステム30をテストするために用いられるテ
ストユニット46、48、及び50も示されている。ソ
フトウエアシステム30をテストするために用いられる
テストユニット46、48、及び50の集合は、テスト
の組51と呼称される。
【0013】ソフトウエアシステム30がテストの組5
1を用いてテストされた後に、関数52及び非関数要素
54及び56がソフトウエアシステム30の新たなバー
ジョンを生成する目的で修正されたと仮定する。この修
正は、図1においては修正された要素52、54及び5
6のハッチングによって表現されている。選択遡及テス
トを行なわない場合には、テストの組51の全体が修正
されたソフトウエアシステム30を適切にテストするた
めに再実行されなければならない。しかしながら、テス
トユニット46、48、50とそれらがカバーする要素
との間の関係を解析することによって、新たなバージョ
ンに係る遡及テストからテストユニット46及び48を
除去することが可能である。テストユニット50のみが
関数52及び要素54及び56を用いているため、修正
されたソフトウエアシステム30をテストするためにテ
ストユニット50のみが再実行される必要がある。
1を用いてテストされた後に、関数52及び非関数要素
54及び56がソフトウエアシステム30の新たなバー
ジョンを生成する目的で修正されたと仮定する。この修
正は、図1においては修正された要素52、54及び5
6のハッチングによって表現されている。選択遡及テス
トを行なわない場合には、テストの組51の全体が修正
されたソフトウエアシステム30を適切にテストするた
めに再実行されなければならない。しかしながら、テス
トユニット46、48、50とそれらがカバーする要素
との間の関係を解析することによって、新たなバージョ
ンに係る遡及テストからテストユニット46及び48を
除去することが可能である。テストユニット50のみが
関数52及び要素54及び56を用いているため、修正
されたソフトウエアシステム30をテストするためにテ
ストユニット50のみが再実行される必要がある。
【0014】本発明は、以下に示されているC言語によ
るコード例を参照してさらに記述される。Cプログラミ
ング言語に対する参照は例示目的のみであり、本発明が
前述された明らかに定義されたメモリ及び明らかに定義
された境界を有するポインタという条件を満足するあら
ゆるプログラミング言語によって記述されたソフトウエ
アシステムの選択遡及テストに対して適応可能である、
ということに留意されたい。また、Cプログラムをテス
トしてCプログラムに対するテストユニットを構成する
方法は数多く存在し、(以下に示されているような例な
どの)Cプログラムコードであるようなテストユニット
及び入力データ値の組であるようなテストユニットも含
まれるがそれだけに限定されているのではない、という
ことにも留意されたい。
るコード例を参照してさらに記述される。Cプログラミ
ング言語に対する参照は例示目的のみであり、本発明が
前述された明らかに定義されたメモリ及び明らかに定義
された境界を有するポインタという条件を満足するあら
ゆるプログラミング言語によって記述されたソフトウエ
アシステムの選択遡及テストに対して適応可能である、
ということに留意されたい。また、Cプログラムをテス
トしてCプログラムに対するテストユニットを構成する
方法は数多く存在し、(以下に示されているような例な
どの)Cプログラムコードであるようなテストユニット
及び入力データ値の組であるようなテストユニットも含
まれるがそれだけに限定されているのではない、という
ことにも留意されたい。
【0015】以下、ファイルs.cに定義されたソフト
ウエアシステム(ライン1−17)及びファイルt.c
に定義されたテストユニット(ライン1−5)を考え
る。ラインナンバーはプログラムの一部ではなく、参照
を容易にするために用いられている。
ウエアシステム(ライン1−17)及びファイルt.c
に定義されたテストユニット(ライン1−5)を考え
る。ラインナンバーはプログラムの一部ではなく、参照
を容易にするために用いられている。
【表1】
【0016】このCプログラムにおいては、t1及びt2
は型J;v1、v2、v3及びv4は変数;及び、f1、f2
及びf3は関数である。ファイルt.c内のmain関
数(ラインナンバー1−5)は、この例におけるテスト
ユニットと考えられる。このCプログラム例における各
々の間の依存関係は図2に示されている。図1と同様、
関数は四角で、非関数は円でそれぞれ示されており、矢
印は、その根元に位置するものがその先端に位置するも
のに依存する、という、Cプログラム例における依存関
係を表現している。
は型J;v1、v2、v3及びv4は変数;及び、f1、f2
及びf3は関数である。ファイルt.c内のmain関
数(ラインナンバー1−5)は、この例におけるテスト
ユニットと考えられる。このCプログラム例における各
々の間の依存関係は図2に示されている。図1と同様、
関数は四角で、非関数は円でそれぞれ示されており、矢
印は、その根元に位置するものがその先端に位置するも
のに依存する、という、Cプログラム例における依存関
係を表現している。
【0017】図2において、テストユニットmain7
0からf1への矢印80は、テストユニット70が関数
f1に依存していることを表現している。この関係は、
プログラム例のラインナンバー3によるものであってm
ain関数が関数f1をcallしている。f1からv1
への矢印84は、関数f1が変数v1に依存していること
を表現しており、この関係は、ファイルs.c内のライ
ンナンバー6で関数f1内の変数v1が1にセットされて
いることから生ずるものである。テストユニット70か
らf2への矢印82は、テストユニット70が関数f2に
依存していることを示しており、この関係は、ラインナ
ンバー4においてmain関数が関数f2をcallし
ていることから生ずるものである。f2からv2への矢印
90は、関数f2が変数v2に依存していることを示して
おり、この関係はプログラム例においてはラインナンバ
ー10及び11から生ずるものである。そこでは、関数
f2内で変数v2が評価され、ゼロに等しい場合にはその
値が1にセットされる。v2からt2への矢印98は変数
v2が型t2に依存していることを表しており、この関係
はプログラム例のラインナンバー3において変数v2が
型t2にセットされていることから生ずる。f2からv4
への矢印92は関数f2が変数v4に依存していることを
表しており、この関係はプログラム例のラインナンバー
12から生ずる。そこでは、関数f2内で、変数v2がゼ
ロと等しくない場合には変数v4が関数f3の戻り値にセ
ットされる。v4からt2への矢印100は変数v4が型
t2に依存していることを表しており、この関係はプロ
グラム例のライン番号3において変数v4が型t2にセッ
トされていることから生ずる。f3からv3への矢印94
は関数f3が変数v3に依存していることを表しており、
この関係はプログラム例のラインナンバー16におい
て、関数f3内で変数v3が変数v2の値にセットされて
おり、その値が戻されていることから生ずる。v3から
t1への矢印96は変数v3が型t1に依存していること
を表しており、この関係はプログラム例のラインナンバ
ー2において変数v3が型t1にセットされていることか
ら生ずる。f3からv2への矢印102は関数f3が変数
v2に依存していることを表しており、この関係はプロ
グラム例のラインナンバー16において関数f3内で変
数v3が変数v2の値にセットされており、その値が戻さ
れていることから生ずる。v1からt1への矢印104は
変数v1が型t1に依存していることを示しており、この
関係はプログラム例のラインナンバー2において変数v
1が型t1にセットされていることから生ずる。このCプ
ログラム例及び図2に示されている依存関係グラフは、
本発明の機能を記述する際にさらに参照される。
0からf1への矢印80は、テストユニット70が関数
f1に依存していることを表現している。この関係は、
プログラム例のラインナンバー3によるものであってm
ain関数が関数f1をcallしている。f1からv1
への矢印84は、関数f1が変数v1に依存していること
を表現しており、この関係は、ファイルs.c内のライ
ンナンバー6で関数f1内の変数v1が1にセットされて
いることから生ずるものである。テストユニット70か
らf2への矢印82は、テストユニット70が関数f2に
依存していることを示しており、この関係は、ラインナ
ンバー4においてmain関数が関数f2をcallし
ていることから生ずるものである。f2からv2への矢印
90は、関数f2が変数v2に依存していることを示して
おり、この関係はプログラム例においてはラインナンバ
ー10及び11から生ずるものである。そこでは、関数
f2内で変数v2が評価され、ゼロに等しい場合にはその
値が1にセットされる。v2からt2への矢印98は変数
v2が型t2に依存していることを表しており、この関係
はプログラム例のラインナンバー3において変数v2が
型t2にセットされていることから生ずる。f2からv4
への矢印92は関数f2が変数v4に依存していることを
表しており、この関係はプログラム例のラインナンバー
12から生ずる。そこでは、関数f2内で、変数v2がゼ
ロと等しくない場合には変数v4が関数f3の戻り値にセ
ットされる。v4からt2への矢印100は変数v4が型
t2に依存していることを表しており、この関係はプロ
グラム例のライン番号3において変数v4が型t2にセッ
トされていることから生ずる。f3からv3への矢印94
は関数f3が変数v3に依存していることを表しており、
この関係はプログラム例のラインナンバー16におい
て、関数f3内で変数v3が変数v2の値にセットされて
おり、その値が戻されていることから生ずる。v3から
t1への矢印96は変数v3が型t1に依存していること
を表しており、この関係はプログラム例のラインナンバ
ー2において変数v3が型t1にセットされていることか
ら生ずる。f3からv2への矢印102は関数f3が変数
v2に依存していることを表しており、この関係はプロ
グラム例のラインナンバー16において関数f3内で変
数v3が変数v2の値にセットされており、その値が戻さ
れていることから生ずる。v1からt1への矢印104は
変数v1が型t1に依存していることを示しており、この
関係はプログラム例のラインナンバー2において変数v
1が型t1にセットされていることから生ずる。このCプ
ログラム例及び図2に示されている依存関係グラフは、
本発明の機能を記述する際にさらに参照される。
【0018】本発明の機能は、図3に示されているよう
なプログラム可能なコンピュータによって実行される。
図3は、コンピュータディスプレイモニタ130及びプ
リンタ123等の出力デバイス、コンピュータキーボー
ド126等のテキスト入力デバイス、マウス127等の
グラフィカル入力デバイス、コンピュータプロセッサ1
24、メモリユニット122、及びディスクドライブ1
28等の外部ストレージデバイスから構成されているコ
ンピュータシステム120を示している。外部ストレー
ジデバイス128とメモリユニット122は、データ及
びコンピュータプログラムコードのストアのために用い
られる。本発明の機能は、メモリユニット122あるい
は外部ストレージデバイス128にストアされているコ
ンピュータプログラムコードを実行するコンピュータプ
ロセッサ124によって実行される。コンピュータシス
テム120は、メインフレームコンピュータ、ミニコン
ピュータ、ワークステーション、あるいはパーソナルコ
ンピュータなどの既知のコンピュータのいずれのタイプ
でもよい。
なプログラム可能なコンピュータによって実行される。
図3は、コンピュータディスプレイモニタ130及びプ
リンタ123等の出力デバイス、コンピュータキーボー
ド126等のテキスト入力デバイス、マウス127等の
グラフィカル入力デバイス、コンピュータプロセッサ1
24、メモリユニット122、及びディスクドライブ1
28等の外部ストレージデバイスから構成されているコ
ンピュータシステム120を示している。外部ストレー
ジデバイス128とメモリユニット122は、データ及
びコンピュータプログラムコードのストアのために用い
られる。本発明の機能は、メモリユニット122あるい
は外部ストレージデバイス128にストアされているコ
ンピュータプログラムコードを実行するコンピュータプ
ロセッサ124によって実行される。コンピュータシス
テム120は、メインフレームコンピュータ、ミニコン
ピュータ、ワークステーション、あるいはパーソナルコ
ンピュータなどの既知のコンピュータのいずれのタイプ
でもよい。
【0019】本発明の一実施例においては、インスツル
メントされたオブジェクトコードが、プログラム実行の
際に実行トレースが生成されるようにコンピュータプロ
セッサ124によって実行される。インスツルメンテー
ションは、プログラム実行の際に実行トレースが生成さ
れるようにコンピュータソフトウエアが付加ステートメ
ントによって増強されるような公知の方法である。例え
ば、Estrin, G., Hopkins, D., Coggan, B.及びCrocke
r, S.D.による"SNUPER COMPUTER - a Computerin Instr
umentation Automation"という表題の論文(Proceeding
of the AFIPSSpring Joint Computer Conference, Vo
l.30, pages645-656(1967.4.18-20))を参照。この文献
は本明細書の参照文献として組み込まれている。
メントされたオブジェクトコードが、プログラム実行の
際に実行トレースが生成されるようにコンピュータプロ
セッサ124によって実行される。インスツルメンテー
ションは、プログラム実行の際に実行トレースが生成さ
れるようにコンピュータソフトウエアが付加ステートメ
ントによって増強されるような公知の方法である。例え
ば、Estrin, G., Hopkins, D., Coggan, B.及びCrocke
r, S.D.による"SNUPER COMPUTER - a Computerin Instr
umentation Automation"という表題の論文(Proceeding
of the AFIPSSpring Joint Computer Conference, Vo
l.30, pages645-656(1967.4.18-20))を参照。この文献
は本明細書の参照文献として組み込まれている。
【0020】図4に示されているようなインスツルメン
トされたオブジェクトコード148を生成するために適
した一つの方法は以下の通りである。まず、Cソースコ
ードが、そのコードにインスツルメンテーションを付加
することによって前処理されてインスツルメント済みC
ソースコードが生成される。このインスツルメント済み
Cソースコードは、その後Cコンパイラによってコンパ
イルされ、インスツルメント済みオブジェクトコードが
生成される。インスツルメント済みオブジェクトコード
はコンピュータプロセッサ124上で実行される。適切
なプリプロセッサの一例は、UNIXに基づく環境にお
いて開発されたCプログラムに対するアノテーションプ
ロプロセッサ(Annotation Pre−Prc
essor、”APP”)である。APPは、Rosenblu
m, David S.による"Towards a Method of Programming
with Assertions"という表題の論文(in Proceedings o
fthe 14th International Conference on Software Eng
ineering, pages92-104(Association for Computing Ma
chinery, 1992.5.11-15))に記載されており、この論文
は本明細書の参照文献として組み込まれている。APP
は、実行イベントのトレースを生成する目的でCソース
コードをインスツルメントする機能を有している。Cソ
ースコードをインスツルメントし実行トレースを生成す
るする他の公知の方法も用いられ得る。
トされたオブジェクトコード148を生成するために適
した一つの方法は以下の通りである。まず、Cソースコ
ードが、そのコードにインスツルメンテーションを付加
することによって前処理されてインスツルメント済みC
ソースコードが生成される。このインスツルメント済み
Cソースコードは、その後Cコンパイラによってコンパ
イルされ、インスツルメント済みオブジェクトコードが
生成される。インスツルメント済みオブジェクトコード
はコンピュータプロセッサ124上で実行される。適切
なプリプロセッサの一例は、UNIXに基づく環境にお
いて開発されたCプログラムに対するアノテーションプ
ロプロセッサ(Annotation Pre−Prc
essor、”APP”)である。APPは、Rosenblu
m, David S.による"Towards a Method of Programming
with Assertions"という表題の論文(in Proceedings o
fthe 14th International Conference on Software Eng
ineering, pages92-104(Association for Computing Ma
chinery, 1992.5.11-15))に記載されており、この論文
は本明細書の参照文献として組み込まれている。APP
は、実行イベントのトレースを生成する目的でCソース
コードをインスツルメントする機能を有している。Cソ
ースコードをインスツルメントし実行トレースを生成す
るする他の公知の方法も用いられ得る。
【0021】図4は、インスツルメント済みオブジェク
トコードを用いた関数トレースリスト生成を示してい
る。関数トレースリストは、前述されているように、テ
ストユニットTによってカバーされる全ての関数の組T
fとして定義される。テストの組170が、N個のテス
トユニットよりなると仮定する。このテストの組170
は、第一テストユニットT1160、第二テストユニッ
トT2162、からN番目のテストユニットTN164か
ら構成されている。インスツルメント済みオブジェクト
コード148は、メモリユニット122内にストアされ
ており、N個のテストユニット160及び162から1
64までの各々について1度ずつ、N回コンピュータプ
ロセッサ124によって実行される。コンピュータプロ
セッサ124によるインスツルメント済みオブジェクト
コード148の各々の実行により、対応するテストユニ
ットに関する関数トレースリストが生成される。よっ
て、インスツルメント済みオブジェクトコード148が
テストユニットT1160を用いて実行されると、この
実行によりテストユニットT1に係る関数トレースリス
ト161が生成される。インスツルメント済みオブジェ
クトコード148がテストユニットT2162を用いて
実行されると、この実行によりテストユニットT2に係
る関数トレースリスト163が生成される。インスツル
メント済みオブジェクトコード148がテストユニット
TN164を用いて実行されると、この実行によりテス
トユニットTNに係る関数トレースリスト165が生成
される。これらN個の関数トレースリスト161および
163から165は、インスツルメント済みオブジェク
トコード148の実際の実行の間に生成される。
トコードを用いた関数トレースリスト生成を示してい
る。関数トレースリストは、前述されているように、テ
ストユニットTによってカバーされる全ての関数の組T
fとして定義される。テストの組170が、N個のテス
トユニットよりなると仮定する。このテストの組170
は、第一テストユニットT1160、第二テストユニッ
トT2162、からN番目のテストユニットTN164か
ら構成されている。インスツルメント済みオブジェクト
コード148は、メモリユニット122内にストアされ
ており、N個のテストユニット160及び162から1
64までの各々について1度ずつ、N回コンピュータプ
ロセッサ124によって実行される。コンピュータプロ
セッサ124によるインスツルメント済みオブジェクト
コード148の各々の実行により、対応するテストユニ
ットに関する関数トレースリストが生成される。よっ
て、インスツルメント済みオブジェクトコード148が
テストユニットT1160を用いて実行されると、この
実行によりテストユニットT1に係る関数トレースリス
ト161が生成される。インスツルメント済みオブジェ
クトコード148がテストユニットT2162を用いて
実行されると、この実行によりテストユニットT2に係
る関数トレースリスト163が生成される。インスツル
メント済みオブジェクトコード148がテストユニット
TN164を用いて実行されると、この実行によりテス
トユニットTNに係る関数トレースリスト165が生成
される。これらN個の関数トレースリスト161および
163から165は、インスツルメント済みオブジェク
トコード148の実際の実行の間に生成される。
【0022】関数トレースリストの生成及びその内容
が、前述されて図2に示されているCプログラム例を参
照してさらに記述される。ソフトウエアシステムのCプ
ログラム例に示されているインスツルメント済みオブジ
ェクトコードが、main関数をテストユニットとして
プロセッサ上で実行されると仮定する。ソフトウエアの
実際の実行の間、ライン10において評価される表式
(v2==0)は真であり、それゆえライン12におけ
るelseステートメントは実行されない。よって、関
数f3は実行されず、この例におけるテストユニットm
ainに対する関数トレースリストは、組Tf={ma
in、f1、f2}よりなる。なぜなら、f1及びf2は、
プログラムライン3及び4によってcallされるから
である。よって、図2において、関数f2と関数f3との
間の矢印88によって表わされている依存関係が存在す
るが、これはソースコードの静的関係であってプログラ
ムの実行の度に起動されるわけではない。関数トレース
リストは動的に決定され、実行の間にテストユニットT
によって実際に起動される関数の組Tfが含まれる。
が、前述されて図2に示されているCプログラム例を参
照してさらに記述される。ソフトウエアシステムのCプ
ログラム例に示されているインスツルメント済みオブジ
ェクトコードが、main関数をテストユニットとして
プロセッサ上で実行されると仮定する。ソフトウエアの
実際の実行の間、ライン10において評価される表式
(v2==0)は真であり、それゆえライン12におけ
るelseステートメントは実行されない。よって、関
数f3は実行されず、この例におけるテストユニットm
ainに対する関数トレースリストは、組Tf={ma
in、f1、f2}よりなる。なぜなら、f1及びf2は、
プログラムライン3及び4によってcallされるから
である。よって、図2において、関数f2と関数f3との
間の矢印88によって表わされている依存関係が存在す
るが、これはソースコードの静的関係であってプログラ
ムの実行の度に起動されるわけではない。関数トレース
リストは動的に決定され、実行の間にテストユニットT
によって実際に起動される関数の組Tfが含まれる。
【0023】図5は、ソフトウエアシステム30などの
ソフトウエアシステムに対するCプログラムデータベー
ス177の生成プロセスを示している。Cソースコード
140がC情報アブストラクタ175に供給される。C
情報アブストラクタ175はCプログラムデータベース
177を生成する。このCプログラムデータベース17
7は、システム、構成要素間の依存関係、及び構成要素
と関係の属性を構成する構成要素を含んでいる。図6
は、Cプログラムデータベース177の概念的なモデル
を示しており、本発明によって利用される構成要素を示
している。各々の四角は構成要素の種類を示しており、
2つの四角の間の各々の接続は参照関係を示している。
前述されているように、本発明はCプログラム中におけ
る4つの構成要素、すなわち型180、関数182、変
数184及びマクロ188、を取り扱う。この概念モデ
ルにおいては、要素Aの定義が要素Bを参照している場
合には、要素Aと要素Bとの間に参照関係が存在する。
言い換えれば、AがBの定義なしにはコンパイルされた
り実行されたり出来ない場合には、要素Aは要素Bを参
照していることになる。以下の表2は、本発明によって
利用される4つの構成要素の間の参照関係を示してい
る。
ソフトウエアシステムに対するCプログラムデータベー
ス177の生成プロセスを示している。Cソースコード
140がC情報アブストラクタ175に供給される。C
情報アブストラクタ175はCプログラムデータベース
177を生成する。このCプログラムデータベース17
7は、システム、構成要素間の依存関係、及び構成要素
と関係の属性を構成する構成要素を含んでいる。図6
は、Cプログラムデータベース177の概念的なモデル
を示しており、本発明によって利用される構成要素を示
している。各々の四角は構成要素の種類を示しており、
2つの四角の間の各々の接続は参照関係を示している。
前述されているように、本発明はCプログラム中におけ
る4つの構成要素、すなわち型180、関数182、変
数184及びマクロ188、を取り扱う。この概念モデ
ルにおいては、要素Aの定義が要素Bを参照している場
合には、要素Aと要素Bとの間に参照関係が存在する。
言い換えれば、AがBの定義なしにはコンパイルされた
り実行されたり出来ない場合には、要素Aは要素Bを参
照していることになる。以下の表2は、本発明によって
利用される4つの構成要素の間の参照関係を示してい
る。
【表2】
【0024】各々の構成要素は、それらに関する情報を
含む属性の組を有している。例えば、Cプログラム例の
関数f1は、以下の属性を有している。
含む属性の組を有している。例えば、Cプログラム例の
関数f1は、以下の属性を有している。
【表3】 ファイル属性は、その関数が定義されているファイルを
示している。データの型(データタイプ)属性は、デー
タタイプが関数であることを示している。名前属性は、
その関数の名前を示している。静的性属性は、その関数
が”静的”ストレージクラスとして定義されているか否
かを表している。開始ライン属性は、その関数の開始ラ
インナンバーを示している。終了ライン属性は、その関
数の終了ラインナンバーを示している。チェックサム属
性は、その関数の定義のソーステキストを表わす整数値
を含んでいる。この整数値は、上記例においては”9E
ECCF7”によって表現されており、これは16進整
数によるチェックサム値の一例である。チェックサム値
は、ハッシュ(hash)符号化技法を用いて計算され
る。適切なハッシュ符号化技法が用いられるが、その一
例は、Hamming, Richard W.による"Coding and Informa
tion Theory"という表題の書籍(Prentice Hall, 1986,
pp94-97)に記載されており、本明細書における参照文
献として利用されている。本発明の望ましい実施例にお
いては、チェックサムは、ソフトウエアシステムのリビ
ジョンアップに伴って構成要素が変更されているか否か
を決定するために用いられる。このチェックサム属性の
利用に関しては、図10、図10に示されている流れ図
のステップ272から276に関連して、後により詳細
に議論される。各々の構成要素種毎に相異なった属性の
組が存在する。上述された関数f1に関する属性は、関
数要素に関する属性である。各々の種類の構成要素はそ
れそれ独自の属性の組を有しているが、全ての構成要素
は、種類、ファイル、名前及びチェックサムという属性
を有しており、これらは本発明によって利用される4つ
の属性である。
示している。データの型(データタイプ)属性は、デー
タタイプが関数であることを示している。名前属性は、
その関数の名前を示している。静的性属性は、その関数
が”静的”ストレージクラスとして定義されているか否
かを表している。開始ライン属性は、その関数の開始ラ
インナンバーを示している。終了ライン属性は、その関
数の終了ラインナンバーを示している。チェックサム属
性は、その関数の定義のソーステキストを表わす整数値
を含んでいる。この整数値は、上記例においては”9E
ECCF7”によって表現されており、これは16進整
数によるチェックサム値の一例である。チェックサム値
は、ハッシュ(hash)符号化技法を用いて計算され
る。適切なハッシュ符号化技法が用いられるが、その一
例は、Hamming, Richard W.による"Coding and Informa
tion Theory"という表題の書籍(Prentice Hall, 1986,
pp94-97)に記載されており、本明細書における参照文
献として利用されている。本発明の望ましい実施例にお
いては、チェックサムは、ソフトウエアシステムのリビ
ジョンアップに伴って構成要素が変更されているか否か
を決定するために用いられる。このチェックサム属性の
利用に関しては、図10、図10に示されている流れ図
のステップ272から276に関連して、後により詳細
に議論される。各々の構成要素種毎に相異なった属性の
組が存在する。上述された関数f1に関する属性は、関
数要素に関する属性である。各々の種類の構成要素はそ
れそれ独自の属性の組を有しているが、全ての構成要素
は、種類、ファイル、名前及びチェックサムという属性
を有しており、これらは本発明によって利用される4つ
の属性である。
【0025】本発明と共に用いられうる適切なC情報ア
ブストラクタ175は、Chen, Yih-Farnによって"The C
Program Database and Its Applications"という表題
の論文(in Proceedings of the Summer 1989 USENIX C
onference, pages157-171(USENIX Association, 1989.
6))において記述されたC情報アブストラクタCIAで
ある。この論文は本明細書の参照文献である。Cプログ
ラムデータベースに関するさらなる情報は、Chen, Yih-
Farn, Nishimoto, Michael Y.及びRamamoorthy, C.V.に
よる"The C Information Abstraction System"という表
題の論文(IEEETransactions on Software Engineerin
g, Vol.16, No.3, pp.325-334(1990.3))に記載されて
いる。この論文は本明細書の参照文献である。他の適切
なC情報アブストラクタもCプログラムデータベース1
77を生成するために用いられ得る。このようなC情報
アブストラクタは、前述されているように、構成要素、
構成要素属性及び構成要素間の関係を含むCプログラム
データベース177を生成しなければならない。
ブストラクタ175は、Chen, Yih-Farnによって"The C
Program Database and Its Applications"という表題
の論文(in Proceedings of the Summer 1989 USENIX C
onference, pages157-171(USENIX Association, 1989.
6))において記述されたC情報アブストラクタCIAで
ある。この論文は本明細書の参照文献である。Cプログ
ラムデータベースに関するさらなる情報は、Chen, Yih-
Farn, Nishimoto, Michael Y.及びRamamoorthy, C.V.に
よる"The C Information Abstraction System"という表
題の論文(IEEETransactions on Software Engineerin
g, Vol.16, No.3, pp.325-334(1990.3))に記載されて
いる。この論文は本明細書の参照文献である。他の適切
なC情報アブストラクタもCプログラムデータベース1
77を生成するために用いられ得る。このようなC情報
アブストラクタは、前述されているように、構成要素、
構成要素属性及び構成要素間の関係を含むCプログラム
データベース177を生成しなければならない。
【0026】前述されているように、Cプログラム言語
に対する参照は、本発明の一実施例を例示する目的でな
されている。本発明は、他の言語によって書かれたソフ
トウエアシステムの選択遡及テストに対しても適用され
得る。他の言語は、C言語に関して前述されているもの
とは相異なった構成要素及び相異なった要素間関係を有
している。しかしながら、本発明を用いた、C言語以外
の言語によって書かれたソフトウエアシステムの選択遡
及テストは、当業者が前述されている構成要素及び要素
間関係に係る記述、及び一般に本明細書を参照すること
によって容易にインプリメントされ得る。
に対する参照は、本発明の一実施例を例示する目的でな
されている。本発明は、他の言語によって書かれたソフ
トウエアシステムの選択遡及テストに対しても適用され
得る。他の言語は、C言語に関して前述されているもの
とは相異なった構成要素及び相異なった要素間関係を有
している。しかしながら、本発明を用いた、C言語以外
の言語によって書かれたソフトウエアシステムの選択遡
及テストは、当業者が前述されている構成要素及び要素
間関係に係る記述、及び一般に本明細書を参照すること
によって容易にインプリメントされ得る。
【0027】関数トレースリスト及びCプログラムデー
タベースは、各々のテストユニットに関する要素トレー
スリストを生成するために用いられる。要素トレースリ
ストは、テストユニットによってカバーされうる要素の
リストである。よって、テストユニットTに関しては、
要素トレースリストは、要素の組Tf‘ETvである。言
い換えれば、要素トレースリストは、関数トレースリス
ト中の関数のリストから到達可能な要素のリストであ
る。図7は、トランジティブクロージャツール190を
用いた要素トレースリストの生成を表わすブロック図で
ある。図4に関連して前述されているように生成された
関数トレースリスト161及び163から165の各々
に関して、トランジティブクロージャツール190は関
数トレースリストに含まれている関数の組Tfを利用
し、それをテストユニットによってカバーされているす
べての関数のみならず依存関係からこれらの関数によっ
て到達可能な全ての構成要素Tvを包含するように拡張
する。このことは、Cプログラムデータベース177に
おいて定義されている依存関係を用いて実現される。よ
って、トランジティブクロージャツール190は、テス
トユニットT1に対する要素トレースリスト192を生
成するために、テストユニットT1に対する関数トレー
スリスト161及びCプログラムデータベース177を
用いる。トランジティブクロージャツール190は、テ
ストユニットT2に対する要素トレースリスト194を
生成するために、テストユニットT2に対する関数トレ
ースリスト163及びCプログラムデータベース177
を用いる。トランジティブクロージャツール190は、
テストユニットTNに対する要素トレースリスト196
を生成するために、テストユニットTNに対する関数ト
レースリスト165及びCプログラムデータベース17
7を用いる。
タベースは、各々のテストユニットに関する要素トレー
スリストを生成するために用いられる。要素トレースリ
ストは、テストユニットによってカバーされうる要素の
リストである。よって、テストユニットTに関しては、
要素トレースリストは、要素の組Tf‘ETvである。言
い換えれば、要素トレースリストは、関数トレースリス
ト中の関数のリストから到達可能な要素のリストであ
る。図7は、トランジティブクロージャツール190を
用いた要素トレースリストの生成を表わすブロック図で
ある。図4に関連して前述されているように生成された
関数トレースリスト161及び163から165の各々
に関して、トランジティブクロージャツール190は関
数トレースリストに含まれている関数の組Tfを利用
し、それをテストユニットによってカバーされているす
べての関数のみならず依存関係からこれらの関数によっ
て到達可能な全ての構成要素Tvを包含するように拡張
する。このことは、Cプログラムデータベース177に
おいて定義されている依存関係を用いて実現される。よ
って、トランジティブクロージャツール190は、テス
トユニットT1に対する要素トレースリスト192を生
成するために、テストユニットT1に対する関数トレー
スリスト161及びCプログラムデータベース177を
用いる。トランジティブクロージャツール190は、テ
ストユニットT2に対する要素トレースリスト194を
生成するために、テストユニットT2に対する関数トレ
ースリスト163及びCプログラムデータベース177
を用いる。トランジティブクロージャツール190は、
テストユニットTNに対する要素トレースリスト196
を生成するために、テストユニットTNに対する関数ト
レースリスト165及びCプログラムデータベース17
7を用いる。
【0028】トランジティブクロージャツール190の
機能が、図8に示されている流れ図に関連してより詳細
に記述される。関数トレースリスト161及び163か
ら165の各々に対して、以下のステップがそれぞれ要
素トレースリスト192及び194から196を生成す
るために実行される。ステップ200においては、関数
トレースリスト中の全ての関数がリストSに追加され
る。ステップ202においては、Cプログラムデータベ
ース177の全ての関数、変数、型及びマクロがリスト
Eに追加される。ステップ204においては、リストE
中の全ての関数がマークされて検索される。ステップ2
06においては、リストSが空であるか否かが決定され
る。リストSが空ではない場合には、ステップ208に
おいて次の構成要素eがリストSから除去される。ステ
ップ210においては、構成要素eが要素トレースリス
トに追加される。ステップ212においては、組R
(e)が決定される。組R(e)は、要素eが依存して
いる、リストE中のマークされていない要素の組として
定義される。この組は、Cソースコード中の全ての構成
要素に係る依存関係を有しているCプログラムデータベ
ース177を参照することによって決定される。ステッ
プ214においては、組R(e)中の各々の構成要素が
マークされてリストE中で検索される。ステップ216
においては、組R(e)中の各々の構成要素がリストS
に対して追加される。その後、制御はステップ206へ
戻る。ステップ206においてリストSが空であると決
定された場合には、要素トレースリストは完成してお
り、それがステップ218において出力される。テスト
ユニットの実行の間に生成される関数トレースリストと
は異なり、要素トレースリストは関数トレースリストか
ら始めてソースコード間の依存関係を静的に解析するこ
とによって実行されることに留意されたい。
機能が、図8に示されている流れ図に関連してより詳細
に記述される。関数トレースリスト161及び163か
ら165の各々に対して、以下のステップがそれぞれ要
素トレースリスト192及び194から196を生成す
るために実行される。ステップ200においては、関数
トレースリスト中の全ての関数がリストSに追加され
る。ステップ202においては、Cプログラムデータベ
ース177の全ての関数、変数、型及びマクロがリスト
Eに追加される。ステップ204においては、リストE
中の全ての関数がマークされて検索される。ステップ2
06においては、リストSが空であるか否かが決定され
る。リストSが空ではない場合には、ステップ208に
おいて次の構成要素eがリストSから除去される。ステ
ップ210においては、構成要素eが要素トレースリス
トに追加される。ステップ212においては、組R
(e)が決定される。組R(e)は、要素eが依存して
いる、リストE中のマークされていない要素の組として
定義される。この組は、Cソースコード中の全ての構成
要素に係る依存関係を有しているCプログラムデータベ
ース177を参照することによって決定される。ステッ
プ214においては、組R(e)中の各々の構成要素が
マークされてリストE中で検索される。ステップ216
においては、組R(e)中の各々の構成要素がリストS
に対して追加される。その後、制御はステップ206へ
戻る。ステップ206においてリストSが空であると決
定された場合には、要素トレースリストは完成してお
り、それがステップ218において出力される。テスト
ユニットの実行の間に生成される関数トレースリストと
は異なり、要素トレースリストは関数トレースリストか
ら始めてソースコード間の依存関係を静的に解析するこ
とによって実行されることに留意されたい。
【0029】以下、要素トレースリストが前述されて図
2に示されているCプログラム例に関連して説明され
る。前述されているように、Cプログラム例におけるテ
ストユニットmainに係る関数トレースリストは、組
Tf={main、f1、f2}よりなる。この関数トレ
ースリストに基づいて、要素トレースリストは、トラン
ジティブクロージャツール190によって、要素の組T
f‘ETv={main、f1、f2、v1、v2、v4、
t1、t2}として生成される。図2において、要素トレ
ースリスト中の要素には、関数main、f1及びf2、
及び、関数main、f1及びf2が依存している非関数
要素が含まれている。
2に示されているCプログラム例に関連して説明され
る。前述されているように、Cプログラム例におけるテ
ストユニットmainに係る関数トレースリストは、組
Tf={main、f1、f2}よりなる。この関数トレ
ースリストに基づいて、要素トレースリストは、トラン
ジティブクロージャツール190によって、要素の組T
f‘ETv={main、f1、f2、v1、v2、v4、
t1、t2}として生成される。図2において、要素トレ
ースリスト中の要素には、関数main、f1及びf2、
及び、関数main、f1及びf2が依存している非関数
要素が含まれている。
【0030】前述されているように、関数トレースリス
トの生成は動的解析によって実現されるが、要素トレー
スリストの生成はCソースコード140中に存在し、C
プログラムデータベース177中に含まれる依存関係の
静的解析によって実現される。よって、Cプログラム例
に対する関数トレースリストの生成についての議論に関
連して記述されているように、関数f3は、Cプログラ
ム例のライン12が実行されず、それゆえ関数f3がテ
ストユニットmainによってカバーされないために、
関数トレースリストに含まれない。さらに、変数v4は
実際のプログラムの実行の間には評価されない。しかし
ながら、図2の矢印92で示されているように関数f2
と変数v4との間には関係が存在するため、変数v4はテ
ストユニットmainに係る要素トレースリストには含
まれる。
トの生成は動的解析によって実現されるが、要素トレー
スリストの生成はCソースコード140中に存在し、C
プログラムデータベース177中に含まれる依存関係の
静的解析によって実現される。よって、Cプログラム例
に対する関数トレースリストの生成についての議論に関
連して記述されているように、関数f3は、Cプログラ
ム例のライン12が実行されず、それゆえ関数f3がテ
ストユニットmainによってカバーされないために、
関数トレースリストに含まれない。さらに、変数v4は
実際のプログラムの実行の間には評価されない。しかし
ながら、図2の矢印92で示されているように関数f2
と変数v4との間には関係が存在するため、変数v4はテ
ストユニットmainに係る要素トレースリストには含
まれる。
【0031】図9は、差分ツール230の機能を例示し
たブロック図である。プログラムソースコードに対して
修正がなされた後、差分ツール230はどの要素が変更
されたかを決定する。第一Cソースコードプログラム2
32は、プログラムソースコードの第一バージョンを表
している。第二Cソースコードプログラム236は、第
一Cソースコードプログラム232に対して修正がなさ
れた後のプログラムソースコードの第二バージョンを表
している。差分ツール230は2つのプログラム間の差
を計算する。差分ツール230を用いる前に、Cプログ
ラムデータベースが、比較される2つのバージョンの各
々に対するプログラムソースコードに関して生成されて
いなければならない。これらのCプログラムデータベー
スは、図5及び6に関連して前述されているように生成
される。よって、差分ツール230への入力は、第一C
ソースコードプログラム232と第一Cソースコードプ
ログラム232に関する第一Cプログラムデータベース
234、及び第二Cソースコードプログラム236と第
二Cソースコードプログラム236に関する第二Cプロ
グラムデータベース238である。差分ツール230
は、要素差分リスト240、新要素リスト242、除去
要素リスト244及び無変更要素リスト246を生成す
る。要素差分リスト240は、第一Cソースコードプロ
グラム232から第二Cソースコードプログラム236
への修正によって変更された全ての要素のリストであ
る。構成要素は、スペース、タブ、ラインブレーク及び
コメントに対する変更を無視して、その構成要素の定義
に関するソースコードテキストが変更されている場合に
変更されているとみなされる。新要素リスト242は、
第二Cソースコードプログラム236には現れるが第一
Cソースコードプログラム232には現れない要素のリ
ストである。除去要素リスト244は、第一Cソースコ
ードプログラム232には現れるが第二Cソースコード
プログラム236には現れない要素のリストである。無
変更要素リスト246は、第一Cソースコードプログラ
ム232と第二Cソースコードプログラム236との間
で変更がない要素のリストである。
たブロック図である。プログラムソースコードに対して
修正がなされた後、差分ツール230はどの要素が変更
されたかを決定する。第一Cソースコードプログラム2
32は、プログラムソースコードの第一バージョンを表
している。第二Cソースコードプログラム236は、第
一Cソースコードプログラム232に対して修正がなさ
れた後のプログラムソースコードの第二バージョンを表
している。差分ツール230は2つのプログラム間の差
を計算する。差分ツール230を用いる前に、Cプログ
ラムデータベースが、比較される2つのバージョンの各
々に対するプログラムソースコードに関して生成されて
いなければならない。これらのCプログラムデータベー
スは、図5及び6に関連して前述されているように生成
される。よって、差分ツール230への入力は、第一C
ソースコードプログラム232と第一Cソースコードプ
ログラム232に関する第一Cプログラムデータベース
234、及び第二Cソースコードプログラム236と第
二Cソースコードプログラム236に関する第二Cプロ
グラムデータベース238である。差分ツール230
は、要素差分リスト240、新要素リスト242、除去
要素リスト244及び無変更要素リスト246を生成す
る。要素差分リスト240は、第一Cソースコードプロ
グラム232から第二Cソースコードプログラム236
への修正によって変更された全ての要素のリストであ
る。構成要素は、スペース、タブ、ラインブレーク及び
コメントに対する変更を無視して、その構成要素の定義
に関するソースコードテキストが変更されている場合に
変更されているとみなされる。新要素リスト242は、
第二Cソースコードプログラム236には現れるが第一
Cソースコードプログラム232には現れない要素のリ
ストである。除去要素リスト244は、第一Cソースコ
ードプログラム232には現れるが第二Cソースコード
プログラム236には現れない要素のリストである。無
変更要素リスト246は、第一Cソースコードプログラ
ム232と第二Cソースコードプログラム236との間
で変更がない要素のリストである。
【0032】差分ツール230の機能が、図10に示さ
れている流れ図に関連してより詳細に記述される。ステ
ップ260においては、第一Cプログラムデータベース
234からの要素がリストE1に入力される。ステップ
262においては、第二Cプログラムデータベース23
8からの要素がリストE2に入力される。ステップ26
4においては、リストE1が空であるか否かが決定され
る。リストE1が空ではない場合には、要素eiがリスト
E1から除去される(ステップ266)。ステップ26
8においては、eiに一致する要素ejがリストE2中に
存在するか否かが決定される。2つの要素は、同一の名
前及び同一の種類属性を有する場合に一致するものとさ
れる。eiに一致する要素ejがリストE2中に存在しな
い場合には、要素eiはステップ270において除去要
素リストに追加され、制御はステップ264に戻る。e
iに一致する要素ejがリストE2中に存在する場合に
は、要素eiのチェックサム属性が第一Cプログラムデ
ータベース234から読み出され(ステップ272)、
第二Cプログラムデータベース238から要素ejのチ
ェックサム属性が読み出される(ステップ274)。ス
テップ276においては、要素eiのチェックサム属性
が要素ejのチェックサム属性と比較される。要素eiの
チェックサム属性が要素ejのチェックサム属性と等し
い場合には、要素eiは無変更要素リストに追加される
(ステップ278)。要素eiのチェックサム属性が要
素ejのチェックサム属性と等しくない場合には、要素
eiは要素差分リストに追加される(ステップ28
0)。ステップ282においては、要素ejがリストE2
から除去される。その後、制御はステップ264へ戻
る。ステップ264においてリストE1が空であると決
定された場合には、リストE2の内容が新要素リストへ
移動される(ステップ284)。ステップ286におい
ては、要素差分リスト240、新要素リスト242、除
去要素リスト244、及び無変更要素リスト246が出
力される。
れている流れ図に関連してより詳細に記述される。ステ
ップ260においては、第一Cプログラムデータベース
234からの要素がリストE1に入力される。ステップ
262においては、第二Cプログラムデータベース23
8からの要素がリストE2に入力される。ステップ26
4においては、リストE1が空であるか否かが決定され
る。リストE1が空ではない場合には、要素eiがリスト
E1から除去される(ステップ266)。ステップ26
8においては、eiに一致する要素ejがリストE2中に
存在するか否かが決定される。2つの要素は、同一の名
前及び同一の種類属性を有する場合に一致するものとさ
れる。eiに一致する要素ejがリストE2中に存在しな
い場合には、要素eiはステップ270において除去要
素リストに追加され、制御はステップ264に戻る。e
iに一致する要素ejがリストE2中に存在する場合に
は、要素eiのチェックサム属性が第一Cプログラムデ
ータベース234から読み出され(ステップ272)、
第二Cプログラムデータベース238から要素ejのチ
ェックサム属性が読み出される(ステップ274)。ス
テップ276においては、要素eiのチェックサム属性
が要素ejのチェックサム属性と比較される。要素eiの
チェックサム属性が要素ejのチェックサム属性と等し
い場合には、要素eiは無変更要素リストに追加される
(ステップ278)。要素eiのチェックサム属性が要
素ejのチェックサム属性と等しくない場合には、要素
eiは要素差分リストに追加される(ステップ28
0)。ステップ282においては、要素ejがリストE2
から除去される。その後、制御はステップ264へ戻
る。ステップ264においてリストE1が空であると決
定された場合には、リストE2の内容が新要素リストへ
移動される(ステップ284)。ステップ286におい
ては、要素差分リスト240、新要素リスト242、除
去要素リスト244、及び無変更要素リスト246が出
力される。
【0033】前述された、要素eiのチェックサム属性
が要素ejのチェックサム属性と比較されるステップ2
76は、要素間の効率的な比較を実現する。要素の属性
に関連して既に議論されているように、チェックサムは
要素を定義するソーステキストを表わす整数値である。
2つの要素のチェックサムが等しい場合には、スペー
ス、タブ、ラインブレーク及びコメントにおける差異を
無視して、2つの要素のソースコードテキストが同一で
あるという高い確率が存在する。チェックサム比較が要
素間の不正確な比較をもたらすとしうわずかの可能性が
存在するが、チェックサムを用いることによる効率の向
上が起こりうる不正確性よりも重要であることを本発明
の発明者は見い出した。よって、チェックサム属性を用
いた要素比較は比較に係るより望ましい方法である。
が要素ejのチェックサム属性と比較されるステップ2
76は、要素間の効率的な比較を実現する。要素の属性
に関連して既に議論されているように、チェックサムは
要素を定義するソーステキストを表わす整数値である。
2つの要素のチェックサムが等しい場合には、スペー
ス、タブ、ラインブレーク及びコメントにおける差異を
無視して、2つの要素のソースコードテキストが同一で
あるという高い確率が存在する。チェックサム比較が要
素間の不正確な比較をもたらすとしうわずかの可能性が
存在するが、チェックサムを用いることによる効率の向
上が起こりうる不正確性よりも重要であることを本発明
の発明者は見い出した。よって、チェックサム属性を用
いた要素比較は比較に係るより望ましい方法である。
【0034】より高い正確さが望まれる場合には、ステ
ップ272及び274のそれぞれにおいて要素ei及び
ejの定義をしている実際のソーステキストを獲得し、
そのソーステキスト定義をステップ276において比較
することにより、要素間の比較がなされ得る。
ップ272及び274のそれぞれにおいて要素ei及び
ejの定義をしている実際のソーステキストを獲得し、
そのソーステキスト定義をステップ276において比較
することにより、要素間の比較がなされ得る。
【0035】本発明と共に用いられるのに適した差分ツ
ールの一例がCiadiffであり、これはChen, Yih-
Farnによる"C Program Database Tools"という表題の論
文(in proceedings of the 1st Pan Pacific Conferen
ce on Information Systems(Kaohsiung, Taiwan, 1993.
6))において記載されている。この論文は本発明の参考
論文である。
ールの一例がCiadiffであり、これはChen, Yih-
Farnによる"C Program Database Tools"という表題の論
文(in proceedings of the 1st Pan Pacific Conferen
ce on Information Systems(Kaohsiung, Taiwan, 1993.
6))において記載されている。この論文は本発明の参考
論文である。
【0036】要素差分リスト240は、ソフトウエアシ
ステムの修正後にテストの組のうちのどのテストユニッ
トが再実行されるべきかを決定するために、選択ツール
によって用いられる。図11は、選択ツール300の機
能を示すブロック図である。選択ツール300は、図7
及び図8に関連して既に議論されているように、トラン
ジティブクロージャツール190によって生成された要
素トレースリスト192及び194から196を入力と
して受け取る。選択ツール200は、図9及び図10に
関連して既に議論されているように、差分ツール230
によって生成された要素差分リスト240も入力として
受け取る。選択ツール300は、ソフトウエアシステム
の修正によって変更された要素を表わす、要素差分リス
ト240内の要素を、テストユニットT1160及びT2
162からTN164の各々によってカバーされる要素
を表わす、要素トレースリスト192及び194から1
96の各々に含まれる要素と比較する。要素トレースリ
スト192及び194から196に含まれる要素が要素
差分リスト240に含まれる要素と一致した場合には、
その要素トレースリストに対応するテストユニットが再
実行されなければならない。
ステムの修正後にテストの組のうちのどのテストユニッ
トが再実行されるべきかを決定するために、選択ツール
によって用いられる。図11は、選択ツール300の機
能を示すブロック図である。選択ツール300は、図7
及び図8に関連して既に議論されているように、トラン
ジティブクロージャツール190によって生成された要
素トレースリスト192及び194から196を入力と
して受け取る。選択ツール200は、図9及び図10に
関連して既に議論されているように、差分ツール230
によって生成された要素差分リスト240も入力として
受け取る。選択ツール300は、ソフトウエアシステム
の修正によって変更された要素を表わす、要素差分リス
ト240内の要素を、テストユニットT1160及びT2
162からTN164の各々によってカバーされる要素
を表わす、要素トレースリスト192及び194から1
96の各々に含まれる要素と比較する。要素トレースリ
スト192及び194から196に含まれる要素が要素
差分リスト240に含まれる要素と一致した場合には、
その要素トレースリストに対応するテストユニットが再
実行されなければならない。
【0037】選択ツール300の機能が、図12の流れ
図を参照してさらに記述される。ステップ310におい
ては、要素トレースリスト192及び194から196
のリストがリストLに割り当てられる。ステップ312
においては、リストLが空であるか否かが決定される。
Lが空ではない場合には、ステップ316において要素
トレースリストの一つがリストLから除去され、その要
素トレースリストがカレント要素トレースリストとな
る。ステップ318においては、組Iが計算される。組
Iは、要素差分リスト240に含まれる要素とカレント
要素トレースリストに含まれる要素との共通部分であ
る。この組Iは、共通部分を決定するために2つのリス
トを比較する適切な方法によって計算される。種々の適
切な方法が当業者によってインプリメントされ得る。ス
テップ320においては、組Iが空であるか否かが決定
される。組Iが空である場合には、制御はステップ31
2へ戻る。組Iが空ではない場合には、カレント要素ト
レースリストに対応するテストユニットが再実行される
べきテストの組TRに追加される。その後、制御はステ
ップ312へ戻る。ステップ312においてリストLが
空であると決定された場合には、再実行されるべきテス
トの組TRがステップ314において出力される。この
組TRは、修正後にソフトウエアシステムをテストする
目的で再実行されなければならないテストユニットのリ
ストを有している。
図を参照してさらに記述される。ステップ310におい
ては、要素トレースリスト192及び194から196
のリストがリストLに割り当てられる。ステップ312
においては、リストLが空であるか否かが決定される。
Lが空ではない場合には、ステップ316において要素
トレースリストの一つがリストLから除去され、その要
素トレースリストがカレント要素トレースリストとな
る。ステップ318においては、組Iが計算される。組
Iは、要素差分リスト240に含まれる要素とカレント
要素トレースリストに含まれる要素との共通部分であ
る。この組Iは、共通部分を決定するために2つのリス
トを比較する適切な方法によって計算される。種々の適
切な方法が当業者によってインプリメントされ得る。ス
テップ320においては、組Iが空であるか否かが決定
される。組Iが空である場合には、制御はステップ31
2へ戻る。組Iが空ではない場合には、カレント要素ト
レースリストに対応するテストユニットが再実行される
べきテストの組TRに追加される。その後、制御はステ
ップ312へ戻る。ステップ312においてリストLが
空であると決定された場合には、再実行されるべきテス
トの組TRがステップ314において出力される。この
組TRは、修正後にソフトウエアシステムをテストする
目的で再実行されなければならないテストユニットのリ
ストを有している。
【0038】選択されたテストユニットの組TRが修正
されたソフトウエアシステムをテストする目的で再実行
される場合には、各々のテストユニットに対して新たな
要素トレースリストが生成されなければならない。この
ことは次の修正及びテストサイクルに対して必要となる
準備である。なぜなら、選択されたテストユニットの各
々によってカバーされる要素の依存関係のうちのいくつ
かが変更されうるからである。
されたソフトウエアシステムをテストする目的で再実行
される場合には、各々のテストユニットに対して新たな
要素トレースリストが生成されなければならない。この
ことは次の修正及びテストサイクルに対して必要となる
準備である。なぜなら、選択されたテストユニットの各
々によってカバーされる要素の依存関係のうちのいくつ
かが変更されうるからである。
【0039】本発明に係る別の実施例においては、選択
ツール300が要素差分リスト240をソフトウエアシ
ステムの第一バージョンと第二バージョンとの間でどの
要素が変更されたかを規定するものとして用いる代わり
に、選択ツールがユーザによって規定された要素リスト
を受け入れる。この変更以外には、選択ツール300は
前述されているように機能する。選択ツールがユーザに
よって規定された要素リストを入力として受け入れて機
能することを許可することによって、ユーザは、ソフト
ウエアシステムに対して仮想的な変更がなされた場合に
どのテストユニットが再実行されなければならないかを
決定するために選択ツール300を利用することが可能
になる。
ツール300が要素差分リスト240をソフトウエアシ
ステムの第一バージョンと第二バージョンとの間でどの
要素が変更されたかを規定するものとして用いる代わり
に、選択ツールがユーザによって規定された要素リスト
を受け入れる。この変更以外には、選択ツール300は
前述されているように機能する。選択ツールがユーザに
よって規定された要素リストを入力として受け入れて機
能することを許可することによって、ユーザは、ソフト
ウエアシステムに対して仮想的な変更がなされた場合に
どのテストユニットが再実行されなければならないかを
決定するために選択ツール300を利用することが可能
になる。
【0040】図13は、カバレッジツール330の機能
を示したブロック図である。カバレッジツール330
は、要素パターン332と一致するどの構成要素がソフ
トウエアシステムに対するテストの組内のテストユニッ
トによってカバーされていないかを識別するために用い
られる。図13に示されているように、カバレッジツー
ル330は、図7及び図8に関連して既に記述されてい
るように、トランジティブクロージャツール190によ
って生成された要素トレースリスト192及び194か
ら196を入力として受け取る。ユーザは、カバレッジ
ツール330が機能する要素の種類を記述した要素パタ
ーン332を供給する。例えば、ユーザが、テストの組
のテストユニットによってカバーされていないソフトウ
エアシステム内の変数を決定することにのみ興味がある
場合には、ユーザは要素パターンとして変数という要素
種類を規定する。カバレッジツール330は、Cプログ
ラムデータベース177を要素トレースリスト192及
び194から196及び要素パターン332と共に利用
して、要素パターンを満足する、カバーされていない要
素のリスト334を生成する。
を示したブロック図である。カバレッジツール330
は、要素パターン332と一致するどの構成要素がソフ
トウエアシステムに対するテストの組内のテストユニッ
トによってカバーされていないかを識別するために用い
られる。図13に示されているように、カバレッジツー
ル330は、図7及び図8に関連して既に記述されてい
るように、トランジティブクロージャツール190によ
って生成された要素トレースリスト192及び194か
ら196を入力として受け取る。ユーザは、カバレッジ
ツール330が機能する要素の種類を記述した要素パタ
ーン332を供給する。例えば、ユーザが、テストの組
のテストユニットによってカバーされていないソフトウ
エアシステム内の変数を決定することにのみ興味がある
場合には、ユーザは要素パターンとして変数という要素
種類を規定する。カバレッジツール330は、Cプログ
ラムデータベース177を要素トレースリスト192及
び194から196及び要素パターン332と共に利用
して、要素パターンを満足する、カバーされていない要
素のリスト334を生成する。
【0041】カバレッジツール330の機能が、図14
の流れ図に関連してより詳細に記述される。ステップ3
40において、要素パターン332に一致するCプログ
ラムデータベース177内の要素の組が決定されてリス
トEにストアされる。ステップ342においては、リス
トEが空であるか否かが決定される。Eが空ではない場
合には、ステップ346において要素eがリストEから
除去される。ステップ348においては、要素トレース
リスト192及び194から196がリストLに割り当
てられる。ステップ350においては、リストLが空で
あるか否かが決定される。Lが空ではない場合には、ス
テップ354においてリストLから要素トレースリスト
のうちの一つが除去され、その要素トレースリストがカ
レント要素トレースリストとなる。ステップ356にお
いては、要素eがカレント要素トレースリストに含まれ
るか否かが決定される。含まれる場合には、制御はステ
ップ342へ戻る。含まれない場合には、制御はステッ
プ350に戻る。ステップ350においてLが空である
と決定された場合には、要素eがステップ352におい
て要素パターン332を満足するカバーされていない要
素のリスト334に追加され、制御がステップ342に
戻る。ステップ342においてEが空であると決定され
た場合には、要素パターン332を満足するカバーされ
ていない要素のリスト334がステップ344で出力さ
れる。
の流れ図に関連してより詳細に記述される。ステップ3
40において、要素パターン332に一致するCプログ
ラムデータベース177内の要素の組が決定されてリス
トEにストアされる。ステップ342においては、リス
トEが空であるか否かが決定される。Eが空ではない場
合には、ステップ346において要素eがリストEから
除去される。ステップ348においては、要素トレース
リスト192及び194から196がリストLに割り当
てられる。ステップ350においては、リストLが空で
あるか否かが決定される。Lが空ではない場合には、ス
テップ354においてリストLから要素トレースリスト
のうちの一つが除去され、その要素トレースリストがカ
レント要素トレースリストとなる。ステップ356にお
いては、要素eがカレント要素トレースリストに含まれ
るか否かが決定される。含まれる場合には、制御はステ
ップ342へ戻る。含まれない場合には、制御はステッ
プ350に戻る。ステップ350においてLが空である
と決定された場合には、要素eがステップ352におい
て要素パターン332を満足するカバーされていない要
素のリスト334に追加され、制御がステップ342に
戻る。ステップ342においてEが空であると決定され
た場合には、要素パターン332を満足するカバーされ
ていない要素のリスト334がステップ344で出力さ
れる。
【0042】以上の説明は、本発明の一実施例に関する
もので,この技術分野の当業者であれば、本発明の種々
の変形例が考え得るが、それらはいずれも本発明の技術
的範囲に包含される。
もので,この技術分野の当業者であれば、本発明の種々
の変形例が考え得るが、それらはいずれも本発明の技術
的範囲に包含される。
【0043】
【発明の効果】以上述べたごとく、本発明によれば、ソ
フトウエアシステムの新しいバージョンをテストする目
的でテストの組のどのサブセットが実行されなければな
らないかを識別する選択遡及テストを行なうシステム及
びその方法が提供される。
フトウエアシステムの新しいバージョンをテストする目
的でテストの組のどのサブセットが実行されなければな
らないかを識別する選択遡及テストを行なうシステム及
びその方法が提供される。
【図1】ソフトウエアシステム及びそのテストの組の依
存関係を示す図。
存関係を示す図。
【図2】ソフトウエアシステム及びそのテストユニット
の一つの依存関係を示す図。
の一つの依存関係を示す図。
【図3】本発明に従って用いられうるコンピュータシス
テムの構成要素を示す模式図。
テムの構成要素を示す模式図。
【図4】本発明に従う関数追跡リストの生成を示すブロ
ック図。
ック図。
【図5】本発明に従って用いられるCプログラムデータ
ベースを生成する方法を示す流れ図。
ベースを生成する方法を示す流れ図。
【図6】本発明に関連して用いられるCプログラムデー
タベース中で表現されるプログラム要素間の関係を示す
概念図。
タベース中で表現されるプログラム要素間の関係を示す
概念図。
【図7】本発明に従ってプログラム要素追跡リストを生
成するために用いられるトランジティブクロージャツー
ルのブロック図。
成するために用いられるトランジティブクロージャツー
ルのブロック図。
【図8】本発明に従ってプログラム要素追跡リストを生
成する際にトランジティブクロージャツールによって実
行されるステップを示す流れ図。
成する際にトランジティブクロージャツールによって実
行されるステップを示す流れ図。
【図9】本発明に従って2つのソフトウエアのバージョ
ンを比較する差分ツールのブロック図。
ンを比較する差分ツールのブロック図。
【図10】本発明に従って2つのソフトウエアのバージ
ョンを比較する際に差分ツールによって実行されるステ
ップを示す流れ図。
ョンを比較する際に差分ツールによって実行されるステ
ップを示す流れ図。
【図11】本発明に従って再実行されるべきテストユニ
ットの組を生成するために用いられる選択ツールのブロ
ック図。
ットの組を生成するために用いられる選択ツールのブロ
ック図。
【図12】本発明に従って再実行されるべきテストユニ
ットの組を生成する際に選択ツールによって実行される
ステップを示す流れ図。
ットの組を生成する際に選択ツールによって実行される
ステップを示す流れ図。
【図13】本発明に従ってカバーされていないプログラ
ム要素のリストを生成するために用いられるカバレッジ
ツールのブロック図。
ム要素のリストを生成するために用いられるカバレッジ
ツールのブロック図。
【図14】本発明に従ってカバーされていないプログラ
ム要素のリストを生成する際にカバレッジツールによっ
て実行されるステップを示す流れ図。
ム要素のリストを生成する際にカバレッジツールによっ
て実行されるステップを示す流れ図。
30 ソフトウエアシステム 32、34、40、42、52 関数 36、38、56 変数 46、48、50 テストユニット 51 テストユニットの組 70 テストユニット 120 コンピュータシステム 122 メモリ 123 プリンタ 124 コンピュータプロセッサ 126 キーボード 127 マウス 128 外部ストレージデバイス 148 インスツルメント済みオブジェクトコード 160、162、164 テストユニット 161、163、165 関数トレースリスト 170 テストの組 177 Cプログラムデータベース 180 型 182 関数 184 変数 186 マクロ 190 トランジティブクロージャツール 192、194、196 要素トレースリスト 230 差分ツール 232 Cソースコードプログラム 234 Cプログラムデータベース 236 Cソースコードプログラム 238 Cプログラムデータベース 240 要素差分リスト 242 新要素リスト 244 除去要素リスト 246 無変更要素リスト 300 選択ツール 302 再実行されるべきテストの組 330 カバレッジツール 332 要素パターン 334 要素パターンを満足するがカバーされていない
要素のリスト
要素のリスト
───────────────────────────────────────────────────── フロントページの続き (72)発明者 デビッド サミュエル ローゼンブラム アメリカ合衆国、07040 ニュージャージ ー、 メイプルウッド、プリーマウス ア ヴェニュー 55 (72)発明者 キム・フォン ヴォー アメリカ合衆国、07922 ニュージャージ ー、 バークレイ ハイツ、スウェンソン サークル 80
Claims (33)
- 【請求項1】 ソフトウエアシステムの選択遡及テスト
を、前記ソフトウエアシステムが第一ソフトウエアバー
ジョンから第二ソフトウエアバージョンに修正された場
合にどのテストユニットが再実行されなければならない
かを決定する目的で実行する装置において、 (A)前記第一ソフトウエアバージョン内の要素と前記
第一ソフトウエアバージョン内の前記要素間の関係とを
有する第一プログラムデータベースを生成する手段と、 (B)前記第二ソフトウエアバージョン内の要素と前記
第二ソフトウエアバージョン内の前記要素間の関係とを
有する第二プログラムデータベースを生成する手段と、 (C)前記ソフトウエア修正によって変更された要素か
らなる要素差分リストを生成する目的で前記第一プログ
ラムデータベースを前記第二プログラムデータベースと
比較する手段と、 (D)各々前記テストユニットによってカバーされる前
記ソフトウエアシステムの要素からなる、前記テストユ
ニットの各々に対する要素トレースリストを生成する手
段と、 (E)前記テストユニットのうちのいずれが再実行され
なければならないかを決定する目的で前記要素差分リス
トを前記要素トレースリストの各々と比較する手段と、
を有することを特徴とするソフトウエアシステムの選択
テスト装置。 - 【請求項2】 前記要素トレースリスト生成手段が、 (F)テストユニットの実行の際に実行される関数を有
する、前記テストユニットに対する関数トレースリスト
を生成する手段と、 (G)前記第一プログラムデータベース内の前記要素関
係を参照することによって前記関数トレースリスト内の
前記関数から到達可能な要素を決定する手段と、を有す
ることを特徴とする請求項第1項に記載のテスト装置。 - 【請求項3】 前記第一プログラムデータベースを前記
第二プログラムデータベースと比較する前記手段が、前
記第二ソフトウエアバージョン内には現れるが前記第一
ソフトウエアバージョン内には現れない要素からなる新
要素リストを生成する手段を有することを特徴とする請
求項第1項に記載のテスト装置。 - 【請求項4】 前記第一プログラムデータベースを前記
第二プログラムデータベースと比較する前記手段が、前
記第一ソフトウエアバージョン内には現れるが前記第二
ソフトウエアバージョン内には現れない要素からなる除
去要素リストを生成する手段を有することを特徴とする
請求項第1項に記載のテスト装置。 - 【請求項5】 前記第一プログラムデータベースを前記
第二プログラムデータベースと比較する前記手段が、さ
らに、前記ソフトウエア修正によって変更されない要素
からなる無変更要素リストを生成する手段を有すること
を特徴とする請求項第1項に記載のテスト装置。 - 【請求項6】 ソフトウエアシステムのどの要素が当該
ソフトウエアシステムのテストユニットによってカバー
されていないかを決定する装置において、 コンピュータプロセッサと、前記テストユニットを用い
て前記コンピュータプロセッサ上で前記ソフトウエアシ
ステムを実行する手段と、 前記ソフトシステム内の要素からなるプログラムデータ
ベースを生成する手段と、 前記テストユニットを用いて前記ソフトウエアシステム
を実行する際に実行される関数と当該実行された関数に
よって到達可能な要素とを含む要素トレースリストを生
成する手段と、 前記ソフトウエアシステム内のどの要素が前記テストユ
ニットによってカバーされていないかを決定する目的で
前記要素トレースリスト内の前記要素を前記プログラム
データベース内の前記要素と比較する手段と、を有する
ことを特徴とするテスト装置。 - 【請求項7】 前記要素トレースリスト内の前記要素を
前記プログラムデータベース内の前記要素と比較する前
記手段が、さらに、前記比較を規定された要素種類に限
定する手段を有することを特徴とする請求項第6項に記
載のテスト装置。 - 【請求項8】 前記プログラムデータベースがさらに前
記ソフトウエアシステム内の要素間の関係を含んでお
り、前記要素トレースリスト生成手段が、 前記テストユニットを用いた前記ソフトウエアシステム
の実行の際に実行される関数よりなる関数トレースリス
トを生成する手段と、 前記プログラムデータベース内の前記要素関係を参照す
ることによって前記関数トレースリスト内の前記関数に
よって到達可能な要素を決定する手段と、を有すること
を特徴とする請求項第6項に記載のテスト装置。 - 【請求項9】 前記ソフトウエアシステムがインスツル
メント済みオブジェクトコードを有しており、前記関数
トレースリスト生成手段が、さらに、前記インスツルメ
ント済みオブジェクトコードを実行する手段を有してい
ることを特徴とする請求項第2項あるいは第8項に記載
のテスト装置。 - 【請求項10】 前記要素が、関数、変数、マクロ及び
型を含むことを特徴とする請求項第1項あるいは第6項
に記載のテスト装置。 - 【請求項11】 ソフトウエアシステムの選択遡及テス
トを、前記ソフトウエアシステムが第一ソフトウエアバ
ージョンから第二ソフトウエアバージョンに修正された
場合にどのテストユニットが再実行されなければならな
いかを決定する目的で実行する装置において、 複数個のテストユニットと、 複数個の要素トレースリストと、 前記要素トレースリストの各々は前記テストユニットの
一つと関連しており、前記関連しているテストユニット
によってカバーされる要素を有していると、要素リスト
を有する変更済み要素リストと、及び、前記ソフトウエ
アシステムをテストするために再実行されなければなら
ないテストユニットのリストを生成する目的で前記変更
済み要素リストを前記複数個の要素トレースリストと比
較する手段と、を有することを特徴とするテスト装置。 - 【請求項12】 前記変更済み要素リストがユーザによ
って規定された要素リストであることを特徴とする請求
項第11項に記載のテスト装置。 - 【請求項13】 前記装置が、さらに、 第一ソフトウエアバージョン内の構成要素を有する第一
プログラムデータベースと、 第二ソフトウエアバージョン内の構成要素を有する第二
プログラムデータベースと、 前記変更済み要素リストを生成する目的で前記第一プロ
グラムデータベースを前記第二プログラムデータベース
と比較する手段と、を有することを特徴とする請求項第
11項に記載のテスト装置。 - 【請求項14】 前記第一及び第二プログラムデータベ
ースがさらにソーステキストを有しており、前記第一プ
ログラムデータベースを前記第二プログラムデータベー
スと比較する前記手段がさらに前記ソーステキストを比
較する手段を有することを特徴とする請求項第1項ある
いは第13項に記載のテスト装置。 - 【請求項15】 前記第一及び第二プログラムデータベ
ースがさらに前記各々の要素に対応するチェックサム属
性を有しており、前記第一プログラムデータベースを前
記第二プログラムデータベースと比較する前記手段がさ
らに前記チェックサム属性を比較する手段を有すること
を特徴とする請求項第1項あるいは第13項に記載のテ
スト装置。 - 【請求項16】 前記チェックサム属性が対応する要素
のソーステキストを表現していることを特徴とする請求
項第15項に記載のテスト装置。 - 【請求項17】 ソフトウエアシステムの選択遡及テス
トを、前記ソフトウエアシステムが第一ソフトウエアバ
ージョンから第二ソフトウエアバージョンに修正された
場合にどのテストユニットが再実行されなければならな
いかを決定する目的で実行する方法において、 (A)前記第一ソフトウエアバージョン内の要素と前記
第一ソフトウエアバージョン内の前記要素間の関係とを
有する第一プログラムデータベースを生成する段階と、 (B)前記第二ソフトウエアバージョン内の要素と前記
第二ソフトウエアバージョン内の前記要素間の関係とを
有する第二プログラムデータベースを生成する段階と、 (C)前記ソフトウエア修正によって変更された要素か
らなる要素差分リストを生成する目的で前記第一プログ
ラムデータベースを前記第二プログラムデータベースと
比較する段階と、 (D)各々前記テストユニットによってカバーされる前
記ソフトウエアシステムの要素からなる、前記テストユ
ニットの各々に対する要素トレースリストを生成する段
階と、 (E)前記テストユニットのうちのいずれが再実行され
なければならないかを決定する目的で前記要素差分リス
トを前記要素トレースリストの各々と比較する段階と、
を有することを特徴とするテスト方法。 - 【請求項18】 前記要素トレースリスト生成段階が、
さらに、 (F)テストユニットの実行の際に実行される関数を有
する、前記テストユニットに対する関数トレースリスト
を生成する段階と、 (G)前記第一プログラムデータベース内の前記要素関
係を参照することによって前記関数トレースリスト内の
前記関数から到達可能な要素を決定する段階と、を有す
ることを特徴とする請求項第17項に記載のテスト方
法。 - 【請求項19】 前記第一プログラムデータベースを前
記第二プログラムデータベースと比較する前記段階が、
さらに、前記第二ソフトウエアバージョン内には現れる
が前記第一ソフトウエアバージョン内には現れない要素
からなる新要素リストを生成する段階を有することを特
徴とする請求項第17項に記載のテスト方法。 - 【請求項20】 前記第一プログラムデータベースを前
記第二プログラムデータベースと比較する前記段階が、
さらに、前記第一ソフトウエアバージョン内には現れる
が前記第二ソフトウエアバージョン内には現れない要素
からなる除去要素リストを生成する段階を有することを
特徴とする請求項第17項に記載のテスト方法。 - 【請求項21】 前記第一プログラムデータベースを前
記第二プログラムデータベースと比較する前記段階が、
さらに、前記ソフトウエア修正によって変更されない要
素からなる無変更要素リストを生成する段階を有するこ
とを特徴とする請求項第17項に記載のテスト方法。 - 【請求項22】 ソフトウエアシステムのどの要素が当
該ソフトウエアシステムのテストユニットによってカバ
ーされているかを決定する方法において、 前記テストユニットを用いてコンピュータプロセッサ上
で前記ソフトウエアシステムを実行する段階と、 前記ソフトシステム内の要素からなるプログラムデータ
ベースを生成する段階と、 前記テストユニットを用いて前記ソフトウエアシステム
を実行する際に実行される関数と当該実行された関数に
よって到達可能な要素とを含む要素トレースリストを生
成する段階と、 前記ソフトウエアシステム内のどの要素が前記テストユ
ニットによってカバーされているかを決定する目的で前
記要素トレースリスト内の前記要素を前記プログラムデ
ータベース内の前記要素と比較する段階と、を有するこ
とを特徴とするテスト方法。 - 【請求項23】 前記要素トレースリスト内の前記要素
を前記プログラムデータベース内の前記要素と比較する
前記段階が、さらに、前記比較を規定された要素種類に
限定する段階を有することを特徴とする請求項第22項
に記載のテスト方法。 - 【請求項24】 前記プログラムデータベースがさらに
前記ソフトウエアシステム内の要素間の関係を含んでお
り、前記要素トレースリスト生成段階が、さらに、 前記テストユニットを用いた前記ソフトウエアシステム
の実行の際に実行される関数よりなる関数トレースリス
トを生成する段階と、 前記プログラムデータベース内の前記要素関係を参照す
ることによって前記関数トレースリスト内の前記関数に
よって到達可能な要素を決定する段階と、を有すること
を特徴とする請求項第22項に記載のテスト方法。 - 【請求項25】 前記関数トレースリスト生成段階が、
さらに、前記インスツルメント済みオブジェクトコード
を実行する段階を有していることを特徴とする請求項第
18項あるいは第24項に記載のテスト方法。 - 【請求項26】 前記要素が、関数、変数、マクロ及び
型を含むことを特徴とする請求項第17項あるいは第2
2項に記載のテスト方法。 - 【請求項27】 ソフトウエアシステムの選択遡及テス
トを行なう方法において、当該方法が、 前記ソフトウエアシステムをコンピュータプロセッサ上
で複数個のテストユニットを用いて実行し、かつ、前記
テストユニットの各々に対して関連するテストユニット
の実行の際に実行される関数よりなる関数トレースリス
トを生成する段階と、 前記ソフトウエアシステム内の要素及び前記要素間の関
係を有する前記ソフトウエアシステムの第一プログラム
データベースを生成する段階と、 前記テストユニットの各々に対して、各々関連するテス
トユニットに対する前記関数トレースリスト中の関数及
び前記関数によって到達可能な要素を含む要素トレース
リストを生成する段階と、を有することを特徴とするテ
スト方法。 - 【請求項28】 前記方法が、さらに、前記テストユニ
ットによって前記プログラムデータベース内の要素がカ
バーされているか否かを決定する目的で前記第一プログ
ラムデータベースを前記要素トレースリストと比較する
段階を有することを特徴とする請求項第27項に記載の
テスト方法。 - 【請求項29】 前記方法が、さらに、前記第一プログ
ラムデータベースの前記要素トレースリストに対する比
較を特定の要素種類に限定する段階を有することを特徴
とする請求項第28項に記載のテスト方法。 - 【請求項30】 前記方法が、さらに、 修正されたソフトウエアシステムを生成する目的で前記
ソフトウエアシステムを修正する段階と、 前記ソフトウエアシステム内の要素及び前記要素間の関
係を有する前記修正されたソフトウエアシステムの第二
プログラムデータベースを生成する段階と、 前記ソフトウエアシステム修正によって変更された要素
を含む要素差分リストを生成する目的で前記第一プログ
ラムデータベースを前記第二プログラムデータベースと
比較する段階と、 修正されたソフトウエアシステムをテストするためにど
のテストユニットが再実行されなければならないかを決
定する目的で前記要素差分リストを前記要素トレースリ
ストと比較する段階と、を有することを特徴とする請求
項第27項に記載のテスト方法。 - 【請求項31】 前記第一及び第二プログラムデータベ
ースがさらにソーステキストを有しており、前記第一プ
ログラムデータベースを前記第二プログラムデータベー
スと比較する前記段階がさらに前記ソーステキストを比
較する段階を有していることを特徴とする請求項第17
項あるいは第30項に記載のテスト方法。 - 【請求項32】 前記第一及び第二プログラムデータベ
ースがさらに前記要素の各々に対するチェックサム属性
を有しており、前記第一プログラムデータベースを前記
第二プログラムデータベースと比較する前記段階がさら
に前記チェックサム属性を比較する段階を有しているこ
とを特徴とする請求項第17項あるいは第30項に記載
のテスト方法。 - 【請求項33】 前記方法が、さらに、ユーザによって
規定された要素リストを受け入れる段階と、及び、前記
ユーザによって規定された要素リスト中の要素が変更さ
れた場合にどのテストユニットが再実行されなければな
らないかを決定する目的で前記ユーザによって規定され
た要素リストを前記要素トレースリストと比較する段階
と、を有することを特徴とする請求項第27項に記載の
テスト方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US24366494A | 1994-05-16 | 1994-05-16 | |
| US243664 | 1994-05-16 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0844590A true JPH0844590A (ja) | 1996-02-16 |
Family
ID=22919624
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP7137507A Pending JPH0844590A (ja) | 1994-05-16 | 1995-05-12 | ソフトウエアシステムの選択テスト装置及びその方法 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US5673387A (ja) |
| EP (1) | EP0684557A3 (ja) |
| JP (1) | JPH0844590A (ja) |
| CA (1) | CA2147036A1 (ja) |
Cited By (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2004513448A (ja) * | 2000-11-02 | 2004-04-30 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | ネットワーク制御環境内の視覚的な対−ウイルス |
| US7882493B2 (en) | 2005-11-14 | 2011-02-01 | Fujitsu Limited | Software test management program software test management apparatus and software test management method |
| JP2013142967A (ja) * | 2012-01-10 | 2013-07-22 | Toshiba Corp | 関連テスト項目提示装置 |
| JP2014010699A (ja) * | 2012-06-29 | 2014-01-20 | Fujitsu Ltd | 更新判定プログラムおよび更新判定装置 |
| KR20160068978A (ko) * | 2013-12-18 | 2016-06-15 | 구글 인코포레이티드 | 코드 리뷰 동안 테스트 커버리지 데이터를 디스플레이하기 위한 프로세스 |
| US9760470B2 (en) | 2013-05-15 | 2017-09-12 | Mitsubishi Electric Corporation | Device, method, and program analysis of new source code to be added to execution program to check for bug |
| JP2018180711A (ja) * | 2017-04-06 | 2018-11-15 | 株式会社日立製作所 | テストケースを選択する計算機及びテストケースの選択方法 |
| CN107015909B (zh) * | 2017-03-31 | 2020-03-27 | 青岛海信电器股份有限公司 | 基于代码变更分析的测试方法及装置 |
| US10628139B2 (en) | 2017-06-14 | 2020-04-21 | Fujitsu Limited | Analysis apparatus, analysis method and recording medium on which analysis program is recorded |
| KR20200138861A (ko) * | 2019-06-03 | 2020-12-11 | 한국과학기술원 | 효율적인 제품 라인 회귀 시험을 위해 시험 항목의 실행 횟수를 줄이는 방법 및 장치 |
Families Citing this family (122)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5758061A (en) * | 1995-12-15 | 1998-05-26 | Plum; Thomas S. | Computer software testing method and apparatus |
| US5758062A (en) * | 1996-04-30 | 1998-05-26 | Oracle Corporation | Method and apparatus for regression testing of application logic |
| US5862380A (en) * | 1996-08-29 | 1999-01-19 | Matridigm Corporation | Test method for revised data fields in a program |
| US5926622A (en) * | 1997-03-18 | 1999-07-20 | Lucent Technologies Inc. | Efficient regression verification |
| US6018747A (en) * | 1997-11-26 | 2000-01-25 | International Business Machines Corporation | Method for generating and reconstructing in-place delta files |
| US6513155B1 (en) * | 1997-12-12 | 2003-01-28 | International Business Machines Corporation | Method and system for merging event-based data and sampled data into postprocessed trace output |
| US6195765B1 (en) * | 1998-01-05 | 2001-02-27 | Electronic Data Systems Corporation | System and method for testing an application program |
| US7185332B1 (en) | 1998-03-25 | 2007-02-27 | Symantec Corporation | Multi-tiered incremental software updating |
| US6052531A (en) | 1998-03-25 | 2000-04-18 | Symantec Corporation | Multi-tiered incremental software updating |
| US6061643A (en) * | 1998-07-07 | 2000-05-09 | Tenfold Corporation | Method for defining durable data for regression testing |
| US6536036B1 (en) | 1998-08-20 | 2003-03-18 | International Business Machines Corporation | Method and apparatus for managing code test coverage data |
| US6434714B1 (en) * | 1999-02-04 | 2002-08-13 | Sun Microsystems, Inc. | Methods, systems, and articles of manufacture for analyzing performance of application programs |
| US6341338B1 (en) | 1999-02-04 | 2002-01-22 | Sun Microsystems, Inc. | Protocol for coordinating the distribution of shared memory |
| US6704873B1 (en) | 1999-07-30 | 2004-03-09 | Accenture Llp | Secure gateway interconnection in an e-commerce based environment |
| US6718535B1 (en) | 1999-07-30 | 2004-04-06 | Accenture Llp | System, method and article of manufacture for an activity framework design in an e-commerce based environment |
| US7100195B1 (en) | 1999-07-30 | 2006-08-29 | Accenture Llp | Managing user information on an e-commerce system |
| US6490696B1 (en) | 1999-12-15 | 2002-12-03 | Electronics For Imaging, Inc. | System and method for printer output regression testing using display lists |
| US6694509B1 (en) | 1999-12-28 | 2004-02-17 | Ge Medical Systems Global Technology Company Llc | Automated regression testing of workstation software |
| US7035989B1 (en) | 2000-02-16 | 2006-04-25 | Sun Microsystems, Inc. | Adaptive memory allocation |
| WO2001069391A2 (en) * | 2000-03-14 | 2001-09-20 | Arc Cores, Inc. | Difference engine method and apparatus |
| US6687834B1 (en) | 2000-04-14 | 2004-02-03 | International Business Machines Corporation | Data processing system, method and program for generating a job within an automated test environment |
| US6959433B1 (en) | 2000-04-14 | 2005-10-25 | International Business Machines Corporation | Data processing system, method, and program for automatically testing software applications |
| US6546359B1 (en) | 2000-04-24 | 2003-04-08 | Sun Microsystems, Inc. | Method and apparatus for multiplexing hardware performance indicators |
| US6647546B1 (en) | 2000-05-03 | 2003-11-11 | Sun Microsystems, Inc. | Avoiding gather and scatter when calling Fortran 77 code from Fortran 90 code |
| US6802057B1 (en) | 2000-05-03 | 2004-10-05 | Sun Microsystems, Inc. | Automatic generation of fortran 90 interfaces to fortran 77 code |
| US6269457B1 (en) * | 2000-06-01 | 2001-07-31 | Testing Technologies, Inc. | Technology regression and verification acceptance method |
| US6981252B1 (en) | 2000-07-14 | 2005-12-27 | Symantec Corporation | Method and apparatus for automatically uninstalling software on a network |
| US6986130B1 (en) | 2000-07-28 | 2006-01-10 | Sun Microsystems, Inc. | Methods and apparatus for compiling computer programs using partial function inlining |
| US6910107B1 (en) | 2000-08-23 | 2005-06-21 | Sun Microsystems, Inc. | Method and apparatus for invalidation of data in computer systems |
| US7406681B1 (en) | 2000-10-12 | 2008-07-29 | Sun Microsystems, Inc. | Automatic conversion of source code from 32-bit to 64-bit |
| US6957208B1 (en) | 2000-10-31 | 2005-10-18 | Sun Microsystems, Inc. | Method, apparatus, and article of manufacture for performance analysis using semantic knowledge |
| US7415504B2 (en) | 2001-02-26 | 2008-08-19 | Symantec Corporation | System and method for controlling distribution of network communications |
| US7647411B1 (en) | 2001-02-26 | 2010-01-12 | Symantec Corporation | System and method for controlling distribution of network communications |
| EP1331554B1 (en) * | 2001-06-13 | 2017-03-08 | Accenture Global Services Limited | Method of producing a software product |
| US6966013B2 (en) * | 2001-07-21 | 2005-11-15 | International Business Machines Corporation | Method and system for performing automated regression tests in a state-dependent data processing system |
| US20030093716A1 (en) * | 2001-11-13 | 2003-05-15 | International Business Machines Corporation | Method and apparatus for collecting persistent coverage data across software versions |
| CA2381596A1 (en) * | 2002-04-12 | 2003-10-12 | Ibm Canada Limited-Ibm Canada Limitee | Generating and managing test plans for testing computer software |
| US6898764B2 (en) * | 2002-04-29 | 2005-05-24 | International Business Machines Corporation | Method, system and program product for determining differences between an existing graphical user interface (GUI) mapping file and a current GUI |
| US7028290B2 (en) * | 2002-04-29 | 2006-04-11 | Microsoft Corporation | Method and apparatus for prioritizing software tests |
| US7165074B2 (en) * | 2002-05-08 | 2007-01-16 | Sun Microsystems, Inc. | Software development test case analyzer and optimizer |
| US20040073889A1 (en) * | 2002-10-15 | 2004-04-15 | Baecker Thomas Peter | Method of producing a software product |
| US8386852B2 (en) * | 2002-11-05 | 2013-02-26 | Hewlett-Packard Development Company, L.P. | Automated recording and replaying of software regression tests |
| US7373519B1 (en) | 2003-04-09 | 2008-05-13 | Symantec Corporation | Distinguishing legitimate modifications from malicious modifications during executable computer file modification analysis |
| US20040225282A1 (en) * | 2003-05-09 | 2004-11-11 | Ness Anton P. | Method and articles for assuring appropriate surgery |
| US7613953B2 (en) * | 2003-05-27 | 2009-11-03 | Oracle International Corporation | Method of converting a regression test script of an automated testing tool into a function |
| US7454660B1 (en) * | 2003-10-13 | 2008-11-18 | Sap Ag | System and method for testing applications at the business layer |
| JP2007535723A (ja) * | 2003-11-04 | 2007-12-06 | キンバリー クラーク ワールドワイド インコーポレイテッド | 複合ソフトウエアシステムを実施して検証するための自動多次元追跡可能性行列を含む試験ツール |
| US20050102654A1 (en) * | 2003-11-12 | 2005-05-12 | Electronic Data Systems Corporation | System, method, and computer program product for testing program code |
| US8713544B1 (en) | 2003-11-25 | 2014-04-29 | Symantec Corporation | Universal data-driven computer proxy |
| US7467378B1 (en) | 2004-02-09 | 2008-12-16 | Symantec Corporation | System state rollback after modification failure |
| GB0412611D0 (en) * | 2004-06-05 | 2004-07-07 | Ibm | Probabilistic regression suites for functional verification |
| US7320090B2 (en) * | 2004-06-09 | 2008-01-15 | International Business Machines Corporation | Methods, systems, and media for generating a regression suite database |
| US7278056B2 (en) * | 2004-06-09 | 2007-10-02 | International Business Machines Corporation | Methods, systems, and media for management of functional verification |
| US7617501B2 (en) | 2004-07-09 | 2009-11-10 | Quest Software, Inc. | Apparatus, system, and method for managing policies on a computer having a foreign operating system |
| DE102004037403B4 (de) * | 2004-07-30 | 2008-11-20 | Certess S.A. | Verfahren zur Bewertung der Güte eines Computerprogrammes |
| DE102004037402B4 (de) * | 2004-07-30 | 2011-02-03 | Certess S.A. | Verfahren zur Bewertung der Güte eines Testprogrammes |
| US7441236B2 (en) * | 2004-10-27 | 2008-10-21 | Bae Systems Land & Armaments L.P. | Software test environment for regression testing ground combat vehicle software |
| US7669188B2 (en) * | 2004-12-03 | 2010-02-23 | Palo Alto Research Center Incorporated | System and method for identifying viable refactorings of program code using a comprehensive test suite |
| TWI256565B (en) * | 2004-12-07 | 2006-06-11 | Quanta Comp Inc | Test system and method for portable device |
| US20060129523A1 (en) * | 2004-12-10 | 2006-06-15 | Roman Kendyl A | Detection of obscured copying using known translations files and other operational data |
| US7620939B2 (en) * | 2005-04-04 | 2009-11-17 | Parasoft Corporation | Automatic configuration of regression test controls |
| US7849165B2 (en) | 2005-04-21 | 2010-12-07 | Fiducci Thomas E | Data backup, storage, transfer, and retrieval system, method and computer program product |
| US8126990B2 (en) | 2005-04-21 | 2012-02-28 | Fiducci Thomas E | Data backup and transfer system, method and computer program product |
| US20070061289A1 (en) * | 2005-09-09 | 2007-03-15 | Douglas Brown | Validator and method for managing database system performance |
| US7673288B1 (en) * | 2005-11-01 | 2010-03-02 | Xilinx, Inc. | Bypassing execution of a software test using a file cache |
| US20070168734A1 (en) * | 2005-11-17 | 2007-07-19 | Phil Vasile | Apparatus, system, and method for persistent testing with progressive environment sterilzation |
| US7904949B2 (en) | 2005-12-19 | 2011-03-08 | Quest Software, Inc. | Apparatus, systems and methods to provide authentication services to a legacy application |
| US7840945B2 (en) * | 2006-01-05 | 2010-11-23 | International Business Machines Corporation | Software resource testing |
| US7305374B2 (en) * | 2006-01-26 | 2007-12-04 | International Business Machines Corporation | Method, system and program product for automated testing of changes to externalized rules |
| US8087075B2 (en) | 2006-02-13 | 2011-12-27 | Quest Software, Inc. | Disconnected credential validation using pre-fetched service tickets |
| US7873944B2 (en) * | 2006-02-22 | 2011-01-18 | International Business Machines Corporation | System and method for maintaining and testing a software application |
| US7801699B1 (en) * | 2006-04-10 | 2010-09-21 | Cadence Design Systems, Inc. | Regression test modules for detecting and reporting changes in process design kits |
| US8205191B1 (en) | 2006-06-02 | 2012-06-19 | Parasoft Corporation | System and method for change-based testing |
| US8429712B2 (en) | 2006-06-08 | 2013-04-23 | Quest Software, Inc. | Centralized user authentication system apparatus and method |
| US7533314B2 (en) * | 2006-08-10 | 2009-05-12 | Microsoft Corporation | Unit test extender |
| US20080126867A1 (en) * | 2006-08-30 | 2008-05-29 | Vinod Pandarinathan | Method and system for selective regression testing |
| US20080104573A1 (en) * | 2006-10-25 | 2008-05-01 | Microsoft Corporation | Software build validation before check-in |
| US7895332B2 (en) | 2006-10-30 | 2011-02-22 | Quest Software, Inc. | Identity migration system apparatus and method |
| US8086710B2 (en) | 2006-10-30 | 2011-12-27 | Quest Software, Inc. | Identity migration apparatus and method |
| DE102006056432A1 (de) | 2006-11-28 | 2008-05-29 | Certess, Inc., Campbell | Verfahren zum Testen eines Computerprogramms |
| US7552361B2 (en) * | 2006-12-14 | 2009-06-23 | International Business Machines Corporation | Software testing optimization apparatus and method |
| US8010401B1 (en) * | 2007-01-30 | 2011-08-30 | Intuit Inc. | Method and system for market research |
| US20080196012A1 (en) * | 2007-02-12 | 2008-08-14 | Panaya Ltd. | System and methods for static analysis of large computer programs and for presenting the results of the analysis to a user of a computer program |
| US8689187B2 (en) * | 2007-05-07 | 2014-04-01 | Cadence Design Systems, Inc. | Predictive run testing |
| US20090055805A1 (en) * | 2007-08-24 | 2009-02-26 | International Business Machines Corporation | Method and System for Testing Software |
| US8161458B2 (en) * | 2007-09-27 | 2012-04-17 | Oracle America, Inc. | Method and apparatus to increase efficiency of automatic regression in “two dimensions” |
| US8286149B2 (en) * | 2007-10-15 | 2012-10-09 | International Business Machines Corporation | Apparatus for and method of implementing feedback directed dependency analysis of software applications |
| US8132157B2 (en) * | 2008-01-17 | 2012-03-06 | International Business Machines Corporation | Method of automatic regression testing |
| US7836343B2 (en) * | 2008-03-03 | 2010-11-16 | International Business Machines Corporation | Method and apparatus for reducing test case generation time in processor testing |
| US8196106B2 (en) * | 2008-03-28 | 2012-06-05 | International Business Machines Corporation | Autonomic verification of HDL models using real-time statistical analysis and layered feedback stages |
| GB2460407A (en) * | 2008-05-27 | 2009-12-02 | Symbian Software Ltd | Using coverage data to choose software regression tests |
| US8806450B1 (en) | 2008-06-26 | 2014-08-12 | Juniper Networks, Inc. | Static analysis in selective software regression testing |
| US8276123B1 (en) * | 2008-07-22 | 2012-09-25 | Juniper Networks, Inc. | Adaptive regression test selection within testing environments |
| US8255984B1 (en) | 2009-07-01 | 2012-08-28 | Quest Software, Inc. | Single sign-on system for shared resource environments |
| US20110131451A1 (en) * | 2009-11-30 | 2011-06-02 | Ricardo Bosch | Methods and system for testing an enterprise system |
| US8584100B2 (en) * | 2009-12-10 | 2013-11-12 | Sap Ag | Bridging code changes and testing |
| US9619373B2 (en) * | 2009-12-14 | 2017-04-11 | International Business Machines Corporation | Method and apparatus to semantically connect independent build and test processes |
| US8694966B2 (en) * | 2010-03-04 | 2014-04-08 | Oracle International Corporation | Identifying test cases to be run after changes to modules of a software application |
| US9906838B2 (en) | 2010-07-12 | 2018-02-27 | Time Warner Cable Enterprises Llc | Apparatus and methods for content delivery and message exchange across multiple content delivery networks |
| US8499286B2 (en) * | 2010-07-27 | 2013-07-30 | Salesforce.Com, Inc. | Module testing adjustment and configuration |
| US9043761B2 (en) * | 2010-09-01 | 2015-05-26 | International Business Machines Corporation | Fault localization using condition modeling and return value modeling |
| US20120124428A1 (en) * | 2010-11-17 | 2012-05-17 | Zeng Thomas M | Method and system for testing software on programmable devices |
| US8607203B1 (en) * | 2010-12-17 | 2013-12-10 | Amazon Technologies, Inc. | Test automation framework using dependency injection |
| AU2012203333A1 (en) | 2011-06-15 | 2013-01-10 | Agile Software Pty Limited | Method and apparatus for testing data warehouses |
| US9026998B2 (en) * | 2011-10-06 | 2015-05-05 | Red Hat Israel, Inc. | Selecting relevant tests to quickly assess code stability |
| US8978009B2 (en) * | 2011-10-06 | 2015-03-10 | Red Hat Israel, Ltd. | Discovering whether new code is covered by tests |
| US9223683B1 (en) * | 2012-05-03 | 2015-12-29 | Google Inc. | Tool to analyze dependency injection object graphs for common error patterns |
| US9189369B1 (en) * | 2013-03-11 | 2015-11-17 | Ca, Inc. | Systems, methods and computer program products for an automated test framework |
| US10380004B2 (en) * | 2013-03-15 | 2019-08-13 | Devfactory Fz-Llc | Test case reduction for code regression testing |
| US10089218B2 (en) * | 2013-03-17 | 2018-10-02 | Typemock Ltd. | Methods circuits apparatuses systems and associated computer executable code for generating a software unit test |
| US9987743B2 (en) | 2014-03-13 | 2018-06-05 | Brain Corporation | Trainable modular robotic apparatus and methods |
| US9533413B2 (en) | 2014-03-13 | 2017-01-03 | Brain Corporation | Trainable modular robotic apparatus and methods |
| US9880924B2 (en) * | 2015-02-24 | 2018-01-30 | Red Hat, Inc. | Source code unit testing using an indexing tool |
| US9983981B1 (en) | 2015-06-23 | 2018-05-29 | Amdocs Development Limited | System, method, and computer program for implementing optimal regression test strategies |
| US9840003B2 (en) | 2015-06-24 | 2017-12-12 | Brain Corporation | Apparatus and methods for safe navigation of robotic devices |
| GB2544996B (en) * | 2015-12-02 | 2017-12-06 | Advanced Risc Mach Ltd | An apparatus and method for managing bounded pointers |
| JP6722352B2 (ja) * | 2016-11-02 | 2020-07-15 | 日立オートモティブシステムズ株式会社 | 計算機システム、テスト方法、および記録媒体 |
| US10394699B1 (en) * | 2017-09-11 | 2019-08-27 | Cadence Design Systems, Inc. | Method and system for reusing a refinement file in coverage grading |
| US10810115B2 (en) * | 2017-12-21 | 2020-10-20 | Verizon Patent And Licensing Inc. | Systems and methods using artificial intelligence to identify, test, and verify system modifications |
| US11385994B2 (en) * | 2018-08-21 | 2022-07-12 | Marlabs Incorporated | Testing automation controller framework and a method to operate the same |
| CN114467084A (zh) * | 2019-09-12 | 2022-05-10 | 惠普发展公司,有限责任合伙企业 | 基于源代码改变位置和源代码测试位置的应用的回归测试 |
| US12253934B2 (en) * | 2021-11-04 | 2025-03-18 | International Business Machines Corporation | Code coverage measurement for test systems |
Family Cites Families (20)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5220658A (en) * | 1986-03-10 | 1993-06-15 | International Business Machines Corporation | System for testing a performance of user interactive-commands using an emulator-overlay for determining the progress of the user timing response |
| US5086393A (en) * | 1986-03-10 | 1992-02-04 | International Business Machines Corp. | System for testing human factors and performance of a system program |
| US4696003A (en) * | 1986-03-10 | 1987-09-22 | International Business Machines Corporation | System for testing interactive software |
| US4802165A (en) * | 1986-10-08 | 1989-01-31 | Enteleki, Inc. | Method and apparatus of debugging computer programs |
| US4864569A (en) * | 1987-11-25 | 1989-09-05 | Westinghouse Electric Corp. | Software verification and validation configuration management system |
| US5280626A (en) * | 1987-12-02 | 1994-01-18 | Hitachi, Ltd. | Multi-process emulator suitable for testing software under multi-process environments |
| JP2624753B2 (ja) * | 1988-03-18 | 1997-06-25 | 株式会社日立製作所 | 上位仕様書作成方法 |
| IE60444B1 (en) * | 1988-03-30 | 1994-07-13 | Elverex Ltd | A software verification apparatus |
| US5119377A (en) * | 1989-06-16 | 1992-06-02 | International Business Machines Corporation | System and method for software error early detection and data capture |
| US5495610A (en) * | 1989-11-30 | 1996-02-27 | Seer Technologies, Inc. | Software distribution system to build and distribute a software release |
| US5157782A (en) * | 1990-01-31 | 1992-10-20 | Hewlett-Packard Company | System and method for testing computer hardware and software |
| US5218605A (en) * | 1990-01-31 | 1993-06-08 | Hewlett-Packard Company | Software modules for testing computer hardware and software |
| US5233611A (en) * | 1990-08-20 | 1993-08-03 | International Business Machines Corporation | Automated function testing of application programs |
| US5511185A (en) * | 1990-11-27 | 1996-04-23 | Mercury Interactive Corporation | System for automatic testing of computer software having output synchronization and capable of responding to asynchronous events |
| US5335342A (en) * | 1991-05-31 | 1994-08-02 | Tiburon Systems, Inc. | Automated software testing system |
| US5488727A (en) * | 1991-09-30 | 1996-01-30 | International Business Machines Corporation | Methods to support multimethod function overloading with compile-time type checking |
| US5600789A (en) * | 1992-11-19 | 1997-02-04 | Segue Software, Inc. | Automated GUI interface testing |
| US5579476A (en) * | 1993-10-19 | 1996-11-26 | Industrial Technology Research Institute | Automatic test environment for communications protocol software |
| US5548718A (en) * | 1994-01-07 | 1996-08-20 | Microsoft Corporation | Method and system for determining software reliability |
| US5408408A (en) * | 1994-02-22 | 1995-04-18 | Marsico, Jr.; Michael | Apparatus and method for electronically tracking and duplicating user input to an interactive electronic device |
-
1995
- 1995-04-13 CA CA002147036A patent/CA2147036A1/en not_active Abandoned
- 1995-05-03 EP EP95303011A patent/EP0684557A3/en not_active Withdrawn
- 1995-05-12 JP JP7137507A patent/JPH0844590A/ja active Pending
-
1996
- 1996-08-12 US US08/698,164 patent/US5673387A/en not_active Expired - Lifetime
Cited By (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2004513448A (ja) * | 2000-11-02 | 2004-04-30 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | ネットワーク制御環境内の視覚的な対−ウイルス |
| US7882493B2 (en) | 2005-11-14 | 2011-02-01 | Fujitsu Limited | Software test management program software test management apparatus and software test management method |
| JP2013142967A (ja) * | 2012-01-10 | 2013-07-22 | Toshiba Corp | 関連テスト項目提示装置 |
| JP2014010699A (ja) * | 2012-06-29 | 2014-01-20 | Fujitsu Ltd | 更新判定プログラムおよび更新判定装置 |
| US9760470B2 (en) | 2013-05-15 | 2017-09-12 | Mitsubishi Electric Corporation | Device, method, and program analysis of new source code to be added to execution program to check for bug |
| KR20160068978A (ko) * | 2013-12-18 | 2016-06-15 | 구글 인코포레이티드 | 코드 리뷰 동안 테스트 커버리지 데이터를 디스플레이하기 위한 프로세스 |
| CN107015909B (zh) * | 2017-03-31 | 2020-03-27 | 青岛海信电器股份有限公司 | 基于代码变更分析的测试方法及装置 |
| JP2018180711A (ja) * | 2017-04-06 | 2018-11-15 | 株式会社日立製作所 | テストケースを選択する計算機及びテストケースの選択方法 |
| US10628139B2 (en) | 2017-06-14 | 2020-04-21 | Fujitsu Limited | Analysis apparatus, analysis method and recording medium on which analysis program is recorded |
| KR20200138861A (ko) * | 2019-06-03 | 2020-12-11 | 한국과학기술원 | 효율적인 제품 라인 회귀 시험을 위해 시험 항목의 실행 횟수를 줄이는 방법 및 장치 |
Also Published As
| Publication number | Publication date |
|---|---|
| CA2147036A1 (en) | 1995-11-17 |
| US5673387A (en) | 1997-09-30 |
| EP0684557A3 (en) | 1996-03-06 |
| EP0684557A2 (en) | 1995-11-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0844590A (ja) | ソフトウエアシステムの選択テスト装置及びその方法 | |
| Korel et al. | Dynamic program slicing | |
| Schroeder et al. | Black-box test reduction using input-output analysis | |
| US5528753A (en) | System and method for enabling stripped object software monitoring in a computer system | |
| US7316005B2 (en) | Data race detection using sequential program analysis | |
| US7254810B2 (en) | Apparatus and method for using database knowledge to optimize a computer program | |
| Chen et al. | TestTube: A system for selective regression testing | |
| US6430741B1 (en) | System and method for data coverage analysis of a computer program | |
| US6662362B1 (en) | Method and system for improving performance of applications that employ a cross-language interface | |
| US6212667B1 (en) | Integrated circuit test coverage evaluation and adjustment mechanism and method | |
| US8091075B2 (en) | Method and apparatus for breakpoint analysis of computer programming code using unexpected code path conditions | |
| US5909577A (en) | Determining dynamic properties of programs | |
| US6240545B1 (en) | Setting instance breakpoints in object oriented computer programs | |
| US8336032B2 (en) | Implementing enhanced template debug | |
| Anderson et al. | Tool support for fine-grained software inspection | |
| US20050125776A1 (en) | Determining the possibility of adverse effects arising from a code change | |
| Wahl | An overview of regression testing | |
| Mueller et al. | Fast instruction cache analysis via static cache simulation | |
| Marceau et al. | The design and implementation of a dataflow language for scriptable debugging | |
| Jaramillo et al. | Comparison checking: An approach to avoid debugging of optimized code | |
| Morgan et al. | Profiling large-scale lazy functional programs | |
| US20060101418A1 (en) | Apparatus and method for automatic generation of event profiles in an integrated development environment | |
| Oberhuber et al. | DETOP-an interactive debugger for PowerPC based multicomputers | |
| Lutz et al. | Testing tools (software) | |
| Paradkar | SALT-an integrated environment to automate generation of function tests for APIs |