JP2004220269A - 統合テスト管理システム - Google Patents
統合テスト管理システム Download PDFInfo
- Publication number
- JP2004220269A JP2004220269A JP2003006132A JP2003006132A JP2004220269A JP 2004220269 A JP2004220269 A JP 2004220269A JP 2003006132 A JP2003006132 A JP 2003006132A JP 2003006132 A JP2003006132 A JP 2003006132A JP 2004220269 A JP2004220269 A JP 2004220269A
- Authority
- JP
- Japan
- Prior art keywords
- test
- unit
- program
- resource
- software
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】限られたスケジュール、リソースの中で常に品質の高いソフトウエアを開発するためには、技術者の経験に頼らない客観的なデータによるソフトウエアの分析と効率的なテストケースの選択および最適なリソース配分による効率的なテストの実行が課題である。
【解決手段】プログラム複雑性評価部とリソース評価部によってソフトウエアおよび利用可能なリソースを客観的に評価し、その評価結果を基にしながら、ソフトウエア全体の品質が向上する最適なテストの組み合わせを探索することでテスト方法の決定を支援し、その後、決定されたテスト方法にもとづいて、テストの自動生成、そして利用可能なリソースを用いてのテストの自動実行を行う統合テスト管理システムを提供する。
【選択図】 図1
【解決手段】プログラム複雑性評価部とリソース評価部によってソフトウエアおよび利用可能なリソースを客観的に評価し、その評価結果を基にしながら、ソフトウエア全体の品質が向上する最適なテストの組み合わせを探索することでテスト方法の決定を支援し、その後、決定されたテスト方法にもとづいて、テストの自動生成、そして利用可能なリソースを用いてのテストの自動実行を行う統合テスト管理システムを提供する。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、ソフトウエア開発におけるテスト工程の自動化、省力化に関する統合テスト管理システムに関するものである。
【0002】
【従来の技術】
ソフトウエア開発においては、開発されたソフトウエアの品質を確認するために、さまざまな観点から複数のテストを実施している。通常の場合は、ソフトウエアを構成する最小単位のプログラムであるユニットの機能の確認であるユニットテストを実施して、問題がなければ、複数のユニットを組み合わせてコンポーネントテスト、次に機能テスト、システムテストへと徐々にテスト内容を広げていくことで、ソフトウエアの品質を確認する。
【0003】
これらの各テストでは、それぞれのテストで確認しなければならないさまざまな確認項目を定義し、それらの項目を確認するための操作方法と期待する動作の対を作成する。この各確認項目をテストケースと呼び、それらのテストケースをまとめてテスト仕様書という形の資料を作成する方法が一般的である。通常の場合には、テスト仕様書の作成は、プログラムを作成した技術者もしくは、テスト担当の技術者が作成している。
【0004】
ソフトウエアの品質の確認は、このテスト仕様書で定義されている各テストケースを基にテストを行い、ソフトウエアがあらかじめ期待する動作を行うかどうかの確認をすることで行う。したがって、テスト仕様書の品質によって最終的なソフトウエアの品質が決まるといえる。
【0005】
このため、品質の高いソフトウエアを開発するためには、ソフトウエアを構成する各プログラムを正しく作成することのみならず、テスト仕様書を高い品質で作成し、テスト仕様書にしたがって正しくテストを実施する必要がある。
前述のように通常は、技術者がテスト仕様書の作成とテストの実施を行うが、近年では自動的にテスト仕様書を作成するソフトウエアや、予め決められた形式で作成されたテスト仕様書に沿って自動的にテストを実行するソフトウエア、あるいはこれらを統合したソフトウエアも開発され商用化されている。以降このようなソフトウエアを自動テストツールと称する。
【0006】
予め決められた形式で技術者が作成したテスト仕様書に沿って自動的にソフトウエアのテストを実行する自動テストツールでは、ユニットテストからシステムテストの実施が可能になってきている。しかし、自動的にテストケースを作成する自動テストツールに関しては、抽象度の高いシステム要件を自動テストツールが処理できるように記述する手法が確立されていないため、具体的に仕様を記述することが比較的容易であるユニットレベル、コンポーネントレベルでの活用にとどまっている。
【0007】
また、近年の研究によっては、プログラムのソースコードを解析することで、プログラム上の論理的な誤りを抽出するといった手法を用いて、ソフトウエアの品質を確認する自動テストツールや、解析結果を基に自動的にテスト仕様書の作成、テストの実行に必要なテストプログラムの自動生成、それに基づき自動的にテストを実施するソフトウエアも開発されてきている。
【0008】
【発明が解決しようとする課題】
本来であれば、ソフトウエアの品質を100%確認するためには、内部の全ての処理経路を少なくとも一回は実行する必要があるが、ソフトウエア全体の経路を全て網羅するようにテストすることは、実際には不可能である。これは、プログラムの中に終了しないループが存在する場合やループの中にループが存在するような場合がありうるためである。このような場合には、全ての処理経路を網羅するようなテストの実施が不可能となる場合や、ビジネスの要求する時間内でテストの実施を終わらせることが不可能な場合が多く存在する。
【0009】
したがって、ビジネスの要求する時間内でどれだけ多くの処理経路を網羅するか、あるいは、全ての処理経路が網羅できないのであれば、どの処理経路をテストした場合にソフトウエアとしての品質がより多く向上するかという二つの視点から、最適なテストケースの組み合わせを見つける必要性が出てくる。そして、見つけられたテストケースを間違いなく実行することが必要となる。
しかしながら、現在の自動テストツールでは、プログラムの最小単位であるユニット単位でのテストの実行が中心であり、特定の処理経路のみを抽出してテストをするといった機能しか持たない。このため、ソフトウエアを構成するプログラムのどの経路をテストすることが品質向上につながるかの判断は技術者の経験に頼っているのが実情である。
【0010】
したがって、限られた時間内で品質の高いソフトウエアを開発するために、経験豊かな技術者がソフトウエアの品質を向上させるために最適な処理経路を選択し、自動テストツールを用いてテストを実行すること必要になってくる。このことは、ソフトウエアの品質は自動テストツールを利用しても、それを使う技術者のスキルに依存するということである。
それに対して、今日では開発しなければならないソフトウエアの数の増加の早さに比べて、スキルの高い技術者の育成速度は遅いため、相対的にスキルの高い技術者の比率が下がると考えられる。このことは自動化テストツールによる省力化が可能であっても、品質の高いソフトウエアを安定して開発することは困難であるということを示している。
【0011】
このことから、品質の高いソフトウエアを安定して開発し続けるためには、経験者の経験によらないテストの実現方法の確立と自動化による省力化、短納期化の実現が課題となっている。
【0012】
【課題を解決するための手段】
以下に、上記課題を解決するための本発明における手段とその効果を示す。
1.統合テストシステムとしての統合化による自動化、省力化
本願の第1の発明では、ソースコードがソフトウエア全体に与える影響をソースコード複雑性評価部にて算出し、各ユニットのテストを実施するのに必要なリソースの見積りをテスト方法毎にリソース評価部にて算出し、この二つの評価部の情報を基に、操作者によって指定されたテスト実施に対する制約条件を満たした上で最もソフトウエア全体の品質が向上するように各ユニットのテスト方法の組み合わせを自動的に探索し操作者に対して提示を行うテスト方法決定支援部と、操作者によって決定されたテスト方法に合わせて各ユニットのテストプログラムを自動的に生成する自動テスト生成部と、自動的に生成されたテストプログラムを効率よく実行することが出来る自動テスト実行部を持つことで、テスト実施に対して操作者による介在を最小限に抑えることを可能とし、今まで人手による作業が中心であったテスト作業の自動化を行い、同時に省力化を達成することを可能とする。
【0013】
2.高スキル技術者不要のユニットのリスク認識
本願の第2の発明では、各ユニットプログラムの処理を処理フローとしてモデル化、データの使われ方をデータフローとしてモデル化することで、行数の比較に代表されるような単純なプログラム量の判断ではなく、処理の流れの複雑さおよびデータの使われ方の複雑さを算出することを可能とし、さらに、ユニットが他のユニットでどのように使われているかを分析することで、ソフトウエア全体に対する単一のユニットの不具合がもたらす影響を算出することを可能とし、今まで経験者によって行われていた重要性の判断を自動化することを可能とする。
【0014】
3.リソース消費の見積り精度の向上
本願の第3の発明では、投入可能なリソースに関しての過去のテスト実施実績の情報を基にして、新しいユニットのテストに必要な時間の見積りを精度良く行うことを可能とする。
【0015】
4.制約条件を考慮したユニットのテスト方法選定の自動化、省力化
本願の第4の発明では、操作者によって入力された制約条件を満たす形で、各ユニットのシステム全体に与えるリスクを基に、リスクの高いユニットほど十分なテストを行うことが出来るようなテスト方法の組み合わせを算出することを可能とし、今まで経験を積んだ技術者が行っていたテスト方法の選定作業を自動化、省力化することを可能とする。
【0016】
5.テストケース自動化による省力化とミスの低減
本願の第5の発明では、今まで人手によって行ってきたソフトウエアのテストを自動的に行うことを可能とするために、テストプログラムの作成をソースコード複雑性評価部のソースコード解析結果の一部であるフローモデルを、選択されたテスト方法に合わせて必要な深さで探索をおこないテストプログラムを生成することで、人手によるテストケースの作成とテストデータの作成工数を大幅に省力化し、テスト実行時のヒューマンエラーを排除することを可能とする。
【0017】
【発明の実施の形態】
図1は、本発明の構成を示したものである。以下に、図1の構成図を用いて本発明全体および各部の機能の概要について説明する。
図1において、ソースコード10は、テスト対象となるソフトウエアシステムのソースコードを示す。ソースコード複雑性評価部20は、ソースコード10を入力として、プログラムの解析を行い、ソフトウエアシステムを構成する各ユニットプログラムのモデル化処理を実施して複雑性を算出する。同時に同ユニットプログラムがソフトウエア全体に与える影響度の算出も行い、ユニットプログラムのリスク評価を行う。
リソース評価部30では、前記ソースコード複雑性評価部20の処理の結果を基に、該当ユニットをテストするために必要とされるコンピュータリソースや人的リソースの消費量の見積りを行う。
【0018】
テスト方法決定支援部40では、操作者より入力された全体のテスト方法、テスト実施時間、投入可能リソース情報に代表されるテスト実行に当たっての諸条件を基に、前記ソースコード複雑性評価部20とリソース評価部30の処理結果を基に、入力された条件を満たすようなテスト方法案を生成する。操作者は、この案の内容を吟味し、必要に応じて修正をおこない、最終的に確定処理を行うことで、テストの実施方法を決定する。
【0019】
自動テストプログラム生成部50では、前記テスト方法決定支援部40にて確定したテスト実施方法に基づき、前記ソースコード複雑性評価部20でのソースコードのモデル化処理の結果を用いて、経路探索および条件抽出処理を行いテストプログラムの生成を行う。また、操作者が新しいテストプログラムを作成して、自動生成されたプログラムと同様に取り扱うことも可能とする。
【0020】
自動テスト実行部60では、前記自動テストプログラム生成部50にて生成もしくは、操作者によって入力されたテストプログラムと、テスト対象のソフトウエアシステムのソースコード10を用いて、テストを実施する。また、テスト結果を表示もしくは出力する機能を有し、容易にテスト結果を操作者が把握できるようにする。
【0021】
以上の概要に述べたように、本発明による統合テスト管理システムを用いることで、以下の方法で課題の解決が可能である。
1.最適なテストの組み合わせ探索
ソースコード複雑性評価部20、リソース評価部30の出力結果を用いることで、テスト方法決定支援部40では、あらかじめ入力された制約条件のもとでテスト方法の探索を行うことが可能となる。
2.客観的数値に基づくプログラム評価
ソースコード複雑性評価部20では、プログラムの利用頻度や複雑さを数値化することで、技術者の経験に頼っていた注目してテストすべき部分の把握を自動的に行うことが出来るようになる。
3.ソフトウエア品質の向上
前記、最適なテストの組み合わせ探索と客観的数値に基づくプログラム評価によって、技術者の経験の如何に関わらず安定して、品質の高いソフトウエアを開発するためのテストが実現可能となる。
4.自動化によるテスト期間の短縮
自動テストプログラム作成部40および自動テスト実行部50によって、今まで人手をかけて行ってきたテストの大部分が自動化されることによって、人的工数の削減が可能となり、テスト期間の短縮が可能となる。
5.省力化によるテストコスト削減
また、自動化によって人的工数が削減されることによって、人件費の圧縮が可能となり、テストコストの削減を行うことも可能となる。
【0022】
次に、本発明における各構成の詳細について説明する。
図2は、ソースコード複雑性評価部20の内部構成を示す図である。
ソースコード複雑性評価部20は、図2に示すようにソースコード解析部201、フローモデル生成部202、利用率算出部203、リスク評価部204の4つの処理ブロックとプログラム構造データ205と、フローモデル206と、利用率データ207とリスク情報208の4種類の情報の格納部から構成されている。
【0023】
ソースコード解析部201では、テスト対象のソフトウエアを構成する各ユニットのソースコード10を処理の経路の分岐の存在に注目して解析を行い図3に例を示すプログラム構造データ205を生成する。同時に分岐条件、分岐先、分岐間の処理の量および呼び出す他のユニットに代表される情報項目の抽出を行う。
【0024】
フローモデル生成部202では、前記ソースコード解析部201にて生成されたプログラム構造データをもとにしてフローモデル206を生成する。フローモデル206は、プログラムの分岐による処理の流れに注目した情報である処理フロー2061とデータの流れに注目した情報であるデータフロー2062の二種類のフローモデルを生成する。図4に処理フロー2061とデータフロー2062の例を示す。
図4に示す処理フロー2061は、処理の始まり、分岐、合流、終了を示すリンクと呼ばれる円の部分とノードと呼ばれる各円を処理の流れに応じて結ぶ線の部分を有し、プログラムの処理の流れを示した情報である。また、図4に示すデータフロー2062は、プログラムの中にて用いられる変数の状態と同変数に対する宣言、代入、使用、削除の各処理を抽出した情報である。
OLE_LINK2 OLE_LINK2フローモデル生成部202による処理フロー2061およびデータフロー2062の生成方法の具体例を示す。
フローモデル生成部202では、最初に処理の始まりと終了を示すリンクを作成した後に、プログラム構造データ205に示す木構造を左から辿りながら、分岐処理を探し出す。分岐処理を発見した場合には、同分岐処理を新しいリンクとして処理の始まりと終了間に作成する。同時に分岐処理のとび先があれば、合流としてノードの対応する場所にリンクを作成する。この処理をプログラム構造データ205の木構造の全ての部分に関して繰り返す。このようにして、処理の始まりと終わりの間に全ての分岐および合流を示すリンクを作成することで、処理フロー2061が完成する。
リスク評価部204では、リンクとノードの数を複雑度の計算に使用し、リソース見積り部206では、ノードの数をリソース消費量の見積もりに使用し、フロー探索部501では、リンクとノードによるプログラム構造データ205の全てをテストプログラム作成のための処理経路を決定に使用する。
また、データフロー2062に関しては、分岐処理ではなく変数の宣言、代入、使用、削除をプログラム構造データ205の木構造の左から探し出していくことで生成される。プログラム構造データを探索していく中で、変数に関しての処理が見つかった場合には、その処理が先に生成された処理フロー2061のどのノードに該当するかを確認しながら、それらの変数の状態と使用方法をデータフロー2062に登録していく。ここで変数の状態とは、該当する変数がすでに定義済みか、それとも未定義かどうかをしめす。また使用方法では、変数をどのように使用しているかを示し、定義、代入、判定、使用、未使用の使用方法が挙げられる。なお、定義と同時に代入する場合には、「定義、代入」という使用方法を用いるものとする。このデータフロー2062は、フロー探索部501にて、前記処理フロー2061と一緒にデータフローテストのための経路情報を決定するために使用される。
【0025】
利用率算出部203では、ソースコード解析部201によって抽出されたプログラム構造データ205および、フローモデル生成部202にて生成されたフローモデル206をもとにして、各ユニット間の呼び出し処理の集計処理をおこない各ユニットのソフトウエア全体での利用率データ207を算出する。図5に利用率データの例を示す。利用率データ207は、ユニットプログラム毎に呼び出しを行ったユニットプログラムと、同呼び出しの行われたノード、およびノード内での呼び出し回数を集計したものである。
以下に利用率算出部203による利用率データ生成方法の例を示す。
利用率算出部203では、プログラム構造データ205に示す木構造を左側から呼び出し処理に注目して探索する。呼び出し処理を見つけた場合には、呼び出し先のユニット名の抽出と処理フロー2061におけるどのノードに対応するかを確認したのちに、利用率データ207に呼び出し情報を登録する。ただし、この登録時には、現在の処理中のユニット名と呼び出し先のユニット名、呼び出しノードを用いて一旦利用率データの検索を行い、すでに同一呼び出しが登録されていた場合には、呼び出し回数を1増加させる。もし、同一呼び出しが登録されていない場合には、呼び出し回数を1にして、利用率データ207への登録を行う。この処理をテスト対象のシステム内の全てのプログラムに対して行うことで、利用率データ207が生成される。
【0026】
リスク評価部204では、ソースコード解析部201によって抽出されたプログラム構造データ205および、フローモデル生成部202にて生成されたフローモデル206および、利用率算出部203にて算出された利用率データ207を用いて、ソフトウエア全体に対する対象ユニットのリスク情報208を算出する。リスク情報算出方法の一例としては、フローモデル206の情報を基にして、分岐の数やノードの数によって算出対象ユニットの複雑性を計算し、各ユニットの複雑性と利用率の値にそれぞれ補正係数をかけて標準化をおこなったうえで、ユニットのリスクを複雑性と利用率の値それぞれX軸とY軸による二次元平面上の点に見立て原点からの距離として評価する方法が挙げられる。この場合には、同程度の複雑性であれば利用率の高いユニットほどリスクが高くなり、逆に同程度の利用率であれば複雑性が高いほどリスクも高いことになる。なお、ここで計算される複雑性の例としては、McCabeのメトリックスと呼ばれる複雑性を示す値がある。このMcCabeのメトリックスでは、処理フロー2061における開始、終了、分岐を表す円の数をリンク数とし、円と円を結ぶ矢印の数をノード数として定義し、複雑性をリンク数からノード数を引いた値に、主プログラムとサブルーチンの数を足して2倍した値を足したものとして定義されている。
図6にリスク情報208の例を示す。リスク情報208は、ユニット名、出現頻度、複雑性およびリスク値によって構成されている。ここでユニット名はリスク評価対象のユニットプログラムの名前を示し、それぞれのユニットに関して、システム全体で同ユニットが参照されている回数である出現頻度を示す値と、前記例ではMcCabeのメトリックスと呼ばれるユニットの複雑性を表す値と、ユニットのリスクの大きさを示す値であるリスク値を含んでいる。
【0027】
図7は、図1におけるリソース評価部30の内部構成を示す図である。
リソース評価部30は、図7に示すように、リソース見積り部301、リソース評価データ302、統計処理部303、リソース情報入力部304、リソース情報305にて構成されている。
リソース見積り部OLE_LINK1301OLE_LINK1では、前記ソースコード複雑性評価部20にて生成されたプログラム構造データ205、フローモデルデータ206、利用率データ207およびリソース情報305を入力にして、ユニットプログラムのテストを実施するために必要なリソース消費量を概算して、リソース評価データ302を生成する。ここでいうリソース消費量とは、テスト対象のプログラムを実行するために必要な処理時間を標準化した値であり、テスト対象の開発言語における命令毎に基本的なリソース消費量があらかじめ算出してある。このように定義された各命令のリソース消費量を元に、テストを実施するために必要なリソース消費量は各テスト時の処理の流れのなかで実行される全命令のリソース消費量を合計して計算を行う。なお、テスト方法の例として、少なくとも一回はプログラムの全てのステートメントの実行をおこなうステートカバレッジテストを実施するか、分岐命令のとび先を少なくとも一回は実行するブランチカバレッジテストを実施するか、全ての変数について使われ方の全てのパターンをテストするデータフローテストを実施するか、あるいは全ての処理フローの経路を実行するフルパステストを実施するかといったテスト方法が存在する。これらのテスト方法によってテスト実行に必要とされるリソース消費量は変化するために、各種テスト方法でのリソース消費量を概算し、リソース評価データ302を生成するものとする。なお、これらのテスト方法によるカバレッジの割合は、ステートメントカバレッジテストが最も少なく、ブランチカバレッジテスト、データフローテスト、フルパステストの順でカバレッジが大きくなる。
通常の場合、経験のある技術者がプログラムの複雑度をみながら、どの程度テストに時間が必要かを見積もるのであるが、本発明では、リソース消費量というプログラムの実行に必要な値を求め、その値をテスト実行に使用するコンピュータの単位時間当たりのリソース消費量で割ることによって、テスト実施に必要とされる時間を経験者による見積りより精度良く算出することが出来る。
【0028】
図8は、前記リソース見積り部301にて生成されたリソース評価データ302の例を示す。リソース評価データ302では、ユニット名およびテストを実施するリソース名、テスト方法およびテスト実施に必要なリソース量にて構成されている。
【0029】
統計処理部303は、自動テスト実行部60におけるテストの実行結果を示すテスト実行結果604の情報を基にして、リソース評価データ302での見積もり結果との差異を算出し、統計的に処理を行うことで、リソース情報305のうちのコンピュータリソース情報3051での性能情報あるいは、プログラマリソース情報3052のパフォーマンス値を更新する。ここで行われる統計処理の例として、テスト実施回数によって性能の変化しないコンピュータリソースの場合には、単純に全ての実行結果の平均値を算出し、また、テスト実施回数によって経験を積みパフォーマンスの向上が見込めるプログラマリソースの場合には、最も新しい5回の実行結果の平均値を算出するような処理があげられる。
【0030】
リソース情報入力部304はリソース情報305のデータを修正するときに用いる。本リソース情報入力部304は、図9のリソース情報一覧画面3041、図10のコンピュータリソース情報編集画面3042、図11のプログラマリソース情報編集画面3043を表示する。各画面の目的を以下に示す。
【0031】
図9のリソース情報一覧画面3041では、コンピュータリソースおよびプログラマリソースを一覧することが可能である。
本リソース一覧画面3041にて新規作成ボタンをクリックすることで、新しくリソースを登録するために各項目が空白になったコンピュータリソース情報編集画面3042もしくは、プログラマリソース情報編集画面3043が表示され、新しいリソースの新規登録を行うことが可能である。なお、各編集画面が現在表示しているリソースの種類に応じて自動的に変更される。つまり、コンピュータリソースを一覧表示している場合には、コンピュータリソース情報編集画面3042が表示され、プログラマリソースを一覧表示している場合にはプログラマリソース情報編集画面が表示される。
あるいは、一覧されている既存のリソースを示す行をクリックすることで、行を反転表示させてから編集ボタンをクリックすることで、選択したリソースの種類に従ってコンピュータリソース編集画面3042もしくは、プログラマリソース編集画面3043が表示される。この表示された画面を用いて各リソース情報の確認と必要に応じて編集をおこなうことが可能である。
また、既存のリソースを示す行をクリックすることで、行を反転表示させてから削除ボタンをクリックすることで、既存リソースをリソース情報305からの削除を行なうことが可能である。
【0032】
図10のコンピュータリソース情報編集画面3042では、各コンピュータリソースに関する各種情報を編集することが可能である。ここで編集可能な情報は、リソース情報305に含まれているコンピュータリソース情報3051であり、編集項目としては図10で示すように、リソース名、CPUタイプ、CPUスピード、CPU数、メモリ容量、ディスク容量、一日あたりの使用料、備考、稼動状況が編集可能である。性能指数に関しては統計処理部303の処理で更新されるため、当コンピュータリソース編集画面では修正を行うことが出来ない。なお、新規登録時については、既存の他の類似リソース情報を用いて性能指数の値の設定がおこなわれる。
【0033】
図11のプログラマリソース情報編集画面3043では、テスト実施に投入可能なプログラマリソースに関する各種情報を編集することが可能である。ここで編集可能な情報は、リソース情報305に含まれえているプログラマリソース情報3052であり、編集項目としては、図11の例で示すように、リソース名、職種、要件理解スキル、設計スキル、コーディングスキル、テストスキル、時間単価、時間外単価、稼動状況が上げられる。これらの入力値はそれぞれ次のように用いられる。リソース名、職種はプログラマを識別するために使用される単なる参照項目である。要件理解スキル、設計スキル、コーディングスキル、テストスキルの各スキル値を基にして、新規登録時のパフォーマンスの標準値が決定される。時間単価、時間外単価および稼動状況については、テスト方法決定支援部40における最適解探索部402にて、テスト予定投入金額の条件を満たすかどうかの計算や、リソースがテスト予定期間に利用することが可能かどうかの判断のために使用される。パフォーマンス値に関しては、統計処理部303の処理で更新されるために、当プログラマリソース情報編集画面では編集を行うことが出来ない。なお、新規登録時については、既存の他の類似リソース情報を用いてパフォーマンス値の設定がおこなわれる。
【0034】
図12のリソース情報305では、コンピュータリソース情報3051およびプログラマリソース情報3052を含んでいる。コンピュータリソース情報3051は、前記コンピュータリソース情報編集画面3042を用いて編集することが可能であり、含まれている項目は、リソース名、CPUタイプ、CPUスピード、CPU数、メモリ容量、ディスク容量、一日あたりの使用料、備考、性能指数がある。また、プログラマリソース情報3052は、プログラマリソース情報編集画面3042を用いて編集することが可能であり、含まれている項目は、リソース名、職種、要件理解スキル、設計スキル、コーディングスキル、テストスキル、時間単価、時間外単価、稼動状況およびパフォーマンス値がある。
【0035】
図1のテスト方法決定支援部40の構成を図13に示す。
テスト方法決定支援部40は、操作部401、最適解探索部402、テスト方法情報403によって構成される。
図14に操作部401におけるテスト条件設定画面4011を示す。操作者は前記テスト条件設定画面4011を用いて、テスト計画を策定するための基本方法となるべき制約条件の入力を行う。ここで設定される制約条件の実施例としては、テスト方法、テスト予定時間、テスト投入予定金額、一日の作業時間、投入可能リソースがある。
【0036】
図13における最適解探索部402では、前記操作部401におけるテスト条件設定画面4011にて入力された制約条件を用いて、リスク情報208およびリソース評価データ302の情報を基に制約条件を満たしつつテストカバレッジの値が最大となるようなテスト方法を探索する。たとえば、テスト実行時間に制限がある場合には、実行可能なテスト時間の中で、システム全体に対する重要性の高い部分についてカバレッジの高いテスト方法、たとえばフルパステストやデータフローテストなどカバレッジの高い方法を用いて、最も多くの処理フローやデータフローを確認できるようにし、重要でない部分については、ステートメントテストを実施することでテスト時間を短縮するといったテスト方法の組み合わせを探索することである。あるいは、利用可能なリソースに制限がある場合には、利用可能なリソースのみを用いて、最も多くの処理フロー、データフローが確認できるテスト方法の組み合わせを探索することである。最適解探索部402で探索されたテスト方法情報403は、図15のテスト方法結果表示画面4012に表示される。
【0037】
ここでの探索方法は複数の方法が考えられるが、一例として、重要度の高いユニットプログラムに対して高いカバレッジのテストを実施することでソフトウエア全体の品質が向上するというアルゴリズムを用いた最適解探索フローチャートを図16に示す。
図16の処理4021では、ソフトウエアシステム全体を制約条件の範囲内でもっとも低いカバレッジとなるテスト方法でのテストを行った場合のリソース消費量および実施推定時間、必要な費用を算出する。判断4022にて、前記処理4021の算出結果が制約条件を満たしているかどうか判断を行う。もし、処理4021の算出結果が制約条件を満たしていない場合には、処理4027にて操作者に対して制約条件エラーを表示して、探索処理を終了する。もし、処理4021の算出結果が制約条件を満たしていた場合には、次の処理4023を実施する。
処理4023では、テスト対象のユニットプログラムのうち重要度の高い順に全体の20%の個数のユニットプログラムを選択し、選択されたユニットプログラムのテスト方法を最大のテストカバレッジと設定する。これは、一般的に上位20%の項目が全体に対する80%の重みを持つと言われているパレートの法則(20:80の法則)を基にした処理手法である。つまり、重要度の高い20%のユニットプログラムを重点的にテストすることで、システム全体の品質の80%の向上を行えるという一般的な経験則を利用したものである。処理4024では、前記処理4023にて設定が修正されたテストカバレッジを用いてテストを行う場合のリソース消費量、実施推定時間、必要な費用を再度算出しなおす。
【0038】
判断4025では、前記処理4024にて算出された結果が制約条件を満たしているかどうか判断をおこなう。もし、処理4024の算出結果が制約条件を満たしている場合には、再度処理4023を実施して、テストカバレッジの値を修正する。たとえば、一つの例としては、探索された全てのテストケースを実行するために必要な時間の概算値がテスト実施可能時間内におさまっている場合には、テスト時間が多くなるようにつまりテストカバレッジがより大きくなるようにテスト方法を選択しなおす。もし、処理4024の算出結果が制約条件を満たしていない場合には、処理4026を実施する。
処理4026では、前回の算出条件を図17のテスト処理情報として記憶する。この処理4026の終了後、探索処理は終了する。
【0039】
前記図16のようなアルゴリズムを持つ図13の最適解探索部402による探索処理の結果は、前記図15のテスト方法探索結果表示画面4012を用いて操作者に提示される。操作者は同テスト方法探索結果表示画面4012を参照することで、テスト予定時間、投入予算、一日の作業時間、各カバレッジの値を確認することが出来る。操作者が生成されたテスト方法に問題なしと判断した場合には、「確定/テスト生成」ボタンを選択することで、自動テストプログラム生成部50の処理が開始される。また、生成されたテスト方法に何らかの問題を見つけた場合には、「条件変更」ボタンを選択することで、前記図14に示すテスト条件設定画面4011が再度表示され、新しいテスト条件を設定可能となる。また、図1に示す自動テスト実施までの一連の処理を終了する場合には、「キャンセル」ボタンを選択する。
【0040】
前記テスト方法探索結果表示画面4012にて、「確定/テスト生成」ボタンが選択された場合には、図1の自動テストプログラム生成部50の処理が開始される。図18に自動テストプログラム生成部の内部構造を示す。自動テストプログラム生成部50はフロー探索部501、分岐条件生成部502、プログラム生成部503、テストプログラム格納部504および、プログラム入力部505から構成される。
フロー探索部501では、前記ソースコード複雑性評価部20にて生成されるプログラム構造データ205、フローモデル206および前記テスト方法決定支援部40にて生成されるテスト方法情報403の情報を入力として処理を行う。本フロー探索部501では、前記テスト方法情報403にて示されるテスト方法でユニットプログラムをテストするために、プログラム構造データ205およびフローモデル206の情報を基にして、プログラムの開始部分から終了部分までの各処理経路の洗い出しを行う。
【0041】
前記フロー探索部501にて洗い出された処理経路に対して、分岐条件生成部502では、それぞれの経路を正しく辿るために必要な各条件分岐部分の条件式の値を前記プログラム構造データ205およびフローモデル206の情報を用いて生成を行う。この場合の分岐条件生成部の処理の例としては、選択された経路を終了部分からノードを辿っていき、分岐処理があった場合には、正しく分岐条件を辿るために必要な条件式を記憶し、ノードを辿っていく途中で、記憶している条件式で使用されている変数に対する演算処理が行われていた場合には、その処理も記憶しながら処理の最初まで辿っていき、条件分岐および、条件分岐に関連する演算処理を全て抽出する。この抽出結果を基に、各演算処理を逆算していくことで、正しく経路をたどるための初期条件を生成するアルゴリズムが挙げられる。
【0042】
プログラム生成部503では、前記分岐条件生成部502にて生成された初期条件に関する情報を基に、テスト対象となるユニットプログラムを実行するために必要な呼び出しプログラムと処理結果の判定処理プログラムを含むテストプログラムの生成を行い、テストプログラム格納部504へテストプログラムを格納する。
【0043】
テストプログラム格納部504では、前記プログラム生成部503にて生成されたテストプログラムのソースコードを格納し管理を行う。
【0044】
プログラム入力部505では、自動的に生成されたテストプログラムのみでなく、技術者が作成したテストプログラムをテストプログラム格納部504へ格納することを可能とする。本プログラム入力部505を用いてテストプログラム格納部に格納されたテストプログラムは、自動生成されたテストプログラムと同様の扱いとなり、図1に示す自動テスト実行部60における自動テスト実行対象のテストプログラムとなる。
【0045】
図1の自動テスト実行部60の構成を図19に示す。自動テスト実行部60は、テスト実行管理部601、テスト情報通信部602、テスト実行処理部603、テスト実行結果データ604、テスト結果表示部605、テスト結果出力部606から構成されている。
テスト実行管理部601は、テスト対象のソースコード10および、前記自動テストプログラム生成部50内部のテストプログラム格納部504に格納されているテストプログラムを順次読み込み、テスト情報通信部602を通じてテスト実行処理部に対して、テスト実施に必要な情報を伝達し、テストの実施およびその結果の取得を行い、実行結果をテスト実行結果データ604に格納する。
【0046】
テスト実行管理部601からテスト実行処理部603に対して送信される情報は、テスト対象のプログラムおよびテストプログラムである。逆にテスト実行処理部603からテスト実行管理部に対して送信される情報は、テストの合否を示すテスト結果に関する情報である。
【0047】
また、テスト実行管理部601とテスト実行処理部603の間には、テスト情報通信部602が存在するため、前記テスト実行管理部601とテスト実行処理部603が同一のコンピュータ上で実行される必要はない。たとえば、図21のテスト実施環境例にて示すように、テスト実行管理部601の実行される管理コンピュータ607とテスト実行処理部602が実行されるテスト実行コンピュータ608が別のコンピュータであっても良く、これらのコンピュータ間はLAN、公衆回線、インターネット、専用線、シリアル通信線、パラレル通信線などの方法を用いて、テスト情報通信部が通信を行うことで動作をしている。
【0048】
図20にはテスト実行結果データ604を示す。テスト実行結果データ604では、ユニット名、テスト方法、テスト実施時間、ステートカバレッジ、ブランチカバレッジ、テスト件数、エラー件数を管理している。
このテスト実行結果データ604は、テスト結果表示部605もしくは、テスト結果出力部606によって操作者のわかる形で表示もしくは出力される。
図22にテスト結果表示部によって表示されるテスト結果表示画面を示す。テスト結果表示画面では、テスト方法、テスト実施時間、実施費用、ステートカバレッジ、ブランチカバレッジ、総テスト件数、総エラー件数および、ユニットプログラム毎のテスト結果の表示を行う。また、再テスト実施ボタンを選択することで、再度同一のテストを繰り替えることが可能である。また、「結果印刷」ボタンを選択することで、図19のテスト結果出力部606を用いて、テスト結果70を出力することも可能である。
【0049】
【発明の効果】
本発明を用いることで、以下のような効果を得ることができる。
1.今まで技術者の経験に基づいて、テスト計画の策定およびテスト仕様書を作成していたが、本発明を用いることで、客観的な数値に基づき、テスト計画を作成し、テスト仕様書を作成できることで、経験深い技術者がいなくても、品質確認レベルの高い、テストを実施可能である。
【0050】
2.本発明を活用することで、自動的にテストを実施することが出来るようになり、テストの品質を落とさずに、テスト工程の省力化が可能となる。このことによってテスト工程におけるコスト削減を行うことが可能となる。
【0051】
3.また、今まで経験ある技術者が作成していたテスト仕様書の作成が自動化され、手作業によるテストも削減されるため、テスト工程の短縮が可能となる。
【図面の簡単な説明】
【図1】本発明の統合テスト管理システムの構成を示す図である。
【図2】ソースコード複雑性評価部の内部構成を示す図である。
【図3】ソースコード複雑性評価部内部のプログラム構造データに格納されるデータの代表例を示す図である。
【図4】ソースコード複雑性評価部内部のフローモデルに格納される処理フロー情報とデータフロー情報の代表例を示す図である。
【図5】ソースコード複雑性評価部内部の利用率データの代表例を示す図である。
【図6】ソースコード複雑性評価部内部のリスク情報の代表例を示す図である。
【図7】リソース評価部の内部構成を示す図である。
【図8】リソース評価部内部のリソース評価データの代表例を示す図である。
【図9】リソース情報一覧画面を示す図である。
【図10】コンピュータリソース情報編集画面を示す図である。
【図11】プログラマリソース情報編集画面を示す図である。
【図12】リソース評価部内部のリソース情報に格納されるコンピュータリソース情報およびプログラマリソース情報の代表例を示す図である。
【図13】テスト方法決定支援部の内部構成を示す図である。
【図14】テスト条件設定画面を示す図である。
【図15】テスト方法探索結果表示画面を示す図である。
【図16】テスト方法探索部内の最適解探索部のフローチャートである。
【図17】テスト方法探索部内のテスト方法情報の代表例を示す図である。
【図18】自動テストプログラム生成部の内部構成を示す図である。
【図19】自動テスト実行部の内部構成を示す図である。
【図20】自動テスト実行部内のテスト実行結果データの代表例を示す図である。
【図21】自動テスト実施環境の代表例を示す図である。
【図22】テスト結果表示画面を示す図である。
【符号の説明】
10・・・ソースコード、
20・・・ソースコード複雑性評価部、
30・・・リソース評価部、
40・・・テスト方法決定支援部、
50・・・自動テストプログラム生成部、
60・・・自動テスト実行部、
70・・・テスト結果、
80・・・操作者、
201・・・ソースコード解析部、
202・・・フローモデル生成部、
203・・・利用率算出部、
204・・・リスク評価部、
205・・・プログラム構造データ、
206・・・フローモデル、
207・・・利用率データ、
208・・・リスク情報、
2061・・・処理フロー、
2062・・・データフロー、
301・・・リソース見積り部、
302・・・リソース評価データ、
303・・・統計処理部、
304・・・リソース情報入力部、
305・・・リソース情報、
3041・・・リソース情報一覧画面、
3042・・・コンピュータリソース情報編集画面、
3043・・・プログラマリソース情報編集画面、
3051・・・コンピュータリソース情報、
3052・・・プログラマリソース情報、
401・・・操作部、
402・・・最適解探索部、
403・・・テスト方法情報、
4011・・・テスト条件設定画面、
4012・・・テスト方法探索結果表示画面、
501・・・フロー探索部、
502・・・分岐条件生成部、
503・・・プログラム生成部、
504・・・テストプログラム格納部、
505・・・プログラム入力部、
601・・・テスト実行管理部、
602・・・テスト情報通信部、
603・・・テスト実行処理部、
604・・・テスト実行結果データ、
605・・・テスト結果表示部、
606・・・テスト結果出力部、
607・・・管理コンピュータ、
608・・・テスト実行コンピュータ、
6051・・・テスト結果表示画面
【発明の属する技術分野】
本発明は、ソフトウエア開発におけるテスト工程の自動化、省力化に関する統合テスト管理システムに関するものである。
【0002】
【従来の技術】
ソフトウエア開発においては、開発されたソフトウエアの品質を確認するために、さまざまな観点から複数のテストを実施している。通常の場合は、ソフトウエアを構成する最小単位のプログラムであるユニットの機能の確認であるユニットテストを実施して、問題がなければ、複数のユニットを組み合わせてコンポーネントテスト、次に機能テスト、システムテストへと徐々にテスト内容を広げていくことで、ソフトウエアの品質を確認する。
【0003】
これらの各テストでは、それぞれのテストで確認しなければならないさまざまな確認項目を定義し、それらの項目を確認するための操作方法と期待する動作の対を作成する。この各確認項目をテストケースと呼び、それらのテストケースをまとめてテスト仕様書という形の資料を作成する方法が一般的である。通常の場合には、テスト仕様書の作成は、プログラムを作成した技術者もしくは、テスト担当の技術者が作成している。
【0004】
ソフトウエアの品質の確認は、このテスト仕様書で定義されている各テストケースを基にテストを行い、ソフトウエアがあらかじめ期待する動作を行うかどうかの確認をすることで行う。したがって、テスト仕様書の品質によって最終的なソフトウエアの品質が決まるといえる。
【0005】
このため、品質の高いソフトウエアを開発するためには、ソフトウエアを構成する各プログラムを正しく作成することのみならず、テスト仕様書を高い品質で作成し、テスト仕様書にしたがって正しくテストを実施する必要がある。
前述のように通常は、技術者がテスト仕様書の作成とテストの実施を行うが、近年では自動的にテスト仕様書を作成するソフトウエアや、予め決められた形式で作成されたテスト仕様書に沿って自動的にテストを実行するソフトウエア、あるいはこれらを統合したソフトウエアも開発され商用化されている。以降このようなソフトウエアを自動テストツールと称する。
【0006】
予め決められた形式で技術者が作成したテスト仕様書に沿って自動的にソフトウエアのテストを実行する自動テストツールでは、ユニットテストからシステムテストの実施が可能になってきている。しかし、自動的にテストケースを作成する自動テストツールに関しては、抽象度の高いシステム要件を自動テストツールが処理できるように記述する手法が確立されていないため、具体的に仕様を記述することが比較的容易であるユニットレベル、コンポーネントレベルでの活用にとどまっている。
【0007】
また、近年の研究によっては、プログラムのソースコードを解析することで、プログラム上の論理的な誤りを抽出するといった手法を用いて、ソフトウエアの品質を確認する自動テストツールや、解析結果を基に自動的にテスト仕様書の作成、テストの実行に必要なテストプログラムの自動生成、それに基づき自動的にテストを実施するソフトウエアも開発されてきている。
【0008】
【発明が解決しようとする課題】
本来であれば、ソフトウエアの品質を100%確認するためには、内部の全ての処理経路を少なくとも一回は実行する必要があるが、ソフトウエア全体の経路を全て網羅するようにテストすることは、実際には不可能である。これは、プログラムの中に終了しないループが存在する場合やループの中にループが存在するような場合がありうるためである。このような場合には、全ての処理経路を網羅するようなテストの実施が不可能となる場合や、ビジネスの要求する時間内でテストの実施を終わらせることが不可能な場合が多く存在する。
【0009】
したがって、ビジネスの要求する時間内でどれだけ多くの処理経路を網羅するか、あるいは、全ての処理経路が網羅できないのであれば、どの処理経路をテストした場合にソフトウエアとしての品質がより多く向上するかという二つの視点から、最適なテストケースの組み合わせを見つける必要性が出てくる。そして、見つけられたテストケースを間違いなく実行することが必要となる。
しかしながら、現在の自動テストツールでは、プログラムの最小単位であるユニット単位でのテストの実行が中心であり、特定の処理経路のみを抽出してテストをするといった機能しか持たない。このため、ソフトウエアを構成するプログラムのどの経路をテストすることが品質向上につながるかの判断は技術者の経験に頼っているのが実情である。
【0010】
したがって、限られた時間内で品質の高いソフトウエアを開発するために、経験豊かな技術者がソフトウエアの品質を向上させるために最適な処理経路を選択し、自動テストツールを用いてテストを実行すること必要になってくる。このことは、ソフトウエアの品質は自動テストツールを利用しても、それを使う技術者のスキルに依存するということである。
それに対して、今日では開発しなければならないソフトウエアの数の増加の早さに比べて、スキルの高い技術者の育成速度は遅いため、相対的にスキルの高い技術者の比率が下がると考えられる。このことは自動化テストツールによる省力化が可能であっても、品質の高いソフトウエアを安定して開発することは困難であるということを示している。
【0011】
このことから、品質の高いソフトウエアを安定して開発し続けるためには、経験者の経験によらないテストの実現方法の確立と自動化による省力化、短納期化の実現が課題となっている。
【0012】
【課題を解決するための手段】
以下に、上記課題を解決するための本発明における手段とその効果を示す。
1.統合テストシステムとしての統合化による自動化、省力化
本願の第1の発明では、ソースコードがソフトウエア全体に与える影響をソースコード複雑性評価部にて算出し、各ユニットのテストを実施するのに必要なリソースの見積りをテスト方法毎にリソース評価部にて算出し、この二つの評価部の情報を基に、操作者によって指定されたテスト実施に対する制約条件を満たした上で最もソフトウエア全体の品質が向上するように各ユニットのテスト方法の組み合わせを自動的に探索し操作者に対して提示を行うテスト方法決定支援部と、操作者によって決定されたテスト方法に合わせて各ユニットのテストプログラムを自動的に生成する自動テスト生成部と、自動的に生成されたテストプログラムを効率よく実行することが出来る自動テスト実行部を持つことで、テスト実施に対して操作者による介在を最小限に抑えることを可能とし、今まで人手による作業が中心であったテスト作業の自動化を行い、同時に省力化を達成することを可能とする。
【0013】
2.高スキル技術者不要のユニットのリスク認識
本願の第2の発明では、各ユニットプログラムの処理を処理フローとしてモデル化、データの使われ方をデータフローとしてモデル化することで、行数の比較に代表されるような単純なプログラム量の判断ではなく、処理の流れの複雑さおよびデータの使われ方の複雑さを算出することを可能とし、さらに、ユニットが他のユニットでどのように使われているかを分析することで、ソフトウエア全体に対する単一のユニットの不具合がもたらす影響を算出することを可能とし、今まで経験者によって行われていた重要性の判断を自動化することを可能とする。
【0014】
3.リソース消費の見積り精度の向上
本願の第3の発明では、投入可能なリソースに関しての過去のテスト実施実績の情報を基にして、新しいユニットのテストに必要な時間の見積りを精度良く行うことを可能とする。
【0015】
4.制約条件を考慮したユニットのテスト方法選定の自動化、省力化
本願の第4の発明では、操作者によって入力された制約条件を満たす形で、各ユニットのシステム全体に与えるリスクを基に、リスクの高いユニットほど十分なテストを行うことが出来るようなテスト方法の組み合わせを算出することを可能とし、今まで経験を積んだ技術者が行っていたテスト方法の選定作業を自動化、省力化することを可能とする。
【0016】
5.テストケース自動化による省力化とミスの低減
本願の第5の発明では、今まで人手によって行ってきたソフトウエアのテストを自動的に行うことを可能とするために、テストプログラムの作成をソースコード複雑性評価部のソースコード解析結果の一部であるフローモデルを、選択されたテスト方法に合わせて必要な深さで探索をおこないテストプログラムを生成することで、人手によるテストケースの作成とテストデータの作成工数を大幅に省力化し、テスト実行時のヒューマンエラーを排除することを可能とする。
【0017】
【発明の実施の形態】
図1は、本発明の構成を示したものである。以下に、図1の構成図を用いて本発明全体および各部の機能の概要について説明する。
図1において、ソースコード10は、テスト対象となるソフトウエアシステムのソースコードを示す。ソースコード複雑性評価部20は、ソースコード10を入力として、プログラムの解析を行い、ソフトウエアシステムを構成する各ユニットプログラムのモデル化処理を実施して複雑性を算出する。同時に同ユニットプログラムがソフトウエア全体に与える影響度の算出も行い、ユニットプログラムのリスク評価を行う。
リソース評価部30では、前記ソースコード複雑性評価部20の処理の結果を基に、該当ユニットをテストするために必要とされるコンピュータリソースや人的リソースの消費量の見積りを行う。
【0018】
テスト方法決定支援部40では、操作者より入力された全体のテスト方法、テスト実施時間、投入可能リソース情報に代表されるテスト実行に当たっての諸条件を基に、前記ソースコード複雑性評価部20とリソース評価部30の処理結果を基に、入力された条件を満たすようなテスト方法案を生成する。操作者は、この案の内容を吟味し、必要に応じて修正をおこない、最終的に確定処理を行うことで、テストの実施方法を決定する。
【0019】
自動テストプログラム生成部50では、前記テスト方法決定支援部40にて確定したテスト実施方法に基づき、前記ソースコード複雑性評価部20でのソースコードのモデル化処理の結果を用いて、経路探索および条件抽出処理を行いテストプログラムの生成を行う。また、操作者が新しいテストプログラムを作成して、自動生成されたプログラムと同様に取り扱うことも可能とする。
【0020】
自動テスト実行部60では、前記自動テストプログラム生成部50にて生成もしくは、操作者によって入力されたテストプログラムと、テスト対象のソフトウエアシステムのソースコード10を用いて、テストを実施する。また、テスト結果を表示もしくは出力する機能を有し、容易にテスト結果を操作者が把握できるようにする。
【0021】
以上の概要に述べたように、本発明による統合テスト管理システムを用いることで、以下の方法で課題の解決が可能である。
1.最適なテストの組み合わせ探索
ソースコード複雑性評価部20、リソース評価部30の出力結果を用いることで、テスト方法決定支援部40では、あらかじめ入力された制約条件のもとでテスト方法の探索を行うことが可能となる。
2.客観的数値に基づくプログラム評価
ソースコード複雑性評価部20では、プログラムの利用頻度や複雑さを数値化することで、技術者の経験に頼っていた注目してテストすべき部分の把握を自動的に行うことが出来るようになる。
3.ソフトウエア品質の向上
前記、最適なテストの組み合わせ探索と客観的数値に基づくプログラム評価によって、技術者の経験の如何に関わらず安定して、品質の高いソフトウエアを開発するためのテストが実現可能となる。
4.自動化によるテスト期間の短縮
自動テストプログラム作成部40および自動テスト実行部50によって、今まで人手をかけて行ってきたテストの大部分が自動化されることによって、人的工数の削減が可能となり、テスト期間の短縮が可能となる。
5.省力化によるテストコスト削減
また、自動化によって人的工数が削減されることによって、人件費の圧縮が可能となり、テストコストの削減を行うことも可能となる。
【0022】
次に、本発明における各構成の詳細について説明する。
図2は、ソースコード複雑性評価部20の内部構成を示す図である。
ソースコード複雑性評価部20は、図2に示すようにソースコード解析部201、フローモデル生成部202、利用率算出部203、リスク評価部204の4つの処理ブロックとプログラム構造データ205と、フローモデル206と、利用率データ207とリスク情報208の4種類の情報の格納部から構成されている。
【0023】
ソースコード解析部201では、テスト対象のソフトウエアを構成する各ユニットのソースコード10を処理の経路の分岐の存在に注目して解析を行い図3に例を示すプログラム構造データ205を生成する。同時に分岐条件、分岐先、分岐間の処理の量および呼び出す他のユニットに代表される情報項目の抽出を行う。
【0024】
フローモデル生成部202では、前記ソースコード解析部201にて生成されたプログラム構造データをもとにしてフローモデル206を生成する。フローモデル206は、プログラムの分岐による処理の流れに注目した情報である処理フロー2061とデータの流れに注目した情報であるデータフロー2062の二種類のフローモデルを生成する。図4に処理フロー2061とデータフロー2062の例を示す。
図4に示す処理フロー2061は、処理の始まり、分岐、合流、終了を示すリンクと呼ばれる円の部分とノードと呼ばれる各円を処理の流れに応じて結ぶ線の部分を有し、プログラムの処理の流れを示した情報である。また、図4に示すデータフロー2062は、プログラムの中にて用いられる変数の状態と同変数に対する宣言、代入、使用、削除の各処理を抽出した情報である。
OLE_LINK2 OLE_LINK2フローモデル生成部202による処理フロー2061およびデータフロー2062の生成方法の具体例を示す。
フローモデル生成部202では、最初に処理の始まりと終了を示すリンクを作成した後に、プログラム構造データ205に示す木構造を左から辿りながら、分岐処理を探し出す。分岐処理を発見した場合には、同分岐処理を新しいリンクとして処理の始まりと終了間に作成する。同時に分岐処理のとび先があれば、合流としてノードの対応する場所にリンクを作成する。この処理をプログラム構造データ205の木構造の全ての部分に関して繰り返す。このようにして、処理の始まりと終わりの間に全ての分岐および合流を示すリンクを作成することで、処理フロー2061が完成する。
リスク評価部204では、リンクとノードの数を複雑度の計算に使用し、リソース見積り部206では、ノードの数をリソース消費量の見積もりに使用し、フロー探索部501では、リンクとノードによるプログラム構造データ205の全てをテストプログラム作成のための処理経路を決定に使用する。
また、データフロー2062に関しては、分岐処理ではなく変数の宣言、代入、使用、削除をプログラム構造データ205の木構造の左から探し出していくことで生成される。プログラム構造データを探索していく中で、変数に関しての処理が見つかった場合には、その処理が先に生成された処理フロー2061のどのノードに該当するかを確認しながら、それらの変数の状態と使用方法をデータフロー2062に登録していく。ここで変数の状態とは、該当する変数がすでに定義済みか、それとも未定義かどうかをしめす。また使用方法では、変数をどのように使用しているかを示し、定義、代入、判定、使用、未使用の使用方法が挙げられる。なお、定義と同時に代入する場合には、「定義、代入」という使用方法を用いるものとする。このデータフロー2062は、フロー探索部501にて、前記処理フロー2061と一緒にデータフローテストのための経路情報を決定するために使用される。
【0025】
利用率算出部203では、ソースコード解析部201によって抽出されたプログラム構造データ205および、フローモデル生成部202にて生成されたフローモデル206をもとにして、各ユニット間の呼び出し処理の集計処理をおこない各ユニットのソフトウエア全体での利用率データ207を算出する。図5に利用率データの例を示す。利用率データ207は、ユニットプログラム毎に呼び出しを行ったユニットプログラムと、同呼び出しの行われたノード、およびノード内での呼び出し回数を集計したものである。
以下に利用率算出部203による利用率データ生成方法の例を示す。
利用率算出部203では、プログラム構造データ205に示す木構造を左側から呼び出し処理に注目して探索する。呼び出し処理を見つけた場合には、呼び出し先のユニット名の抽出と処理フロー2061におけるどのノードに対応するかを確認したのちに、利用率データ207に呼び出し情報を登録する。ただし、この登録時には、現在の処理中のユニット名と呼び出し先のユニット名、呼び出しノードを用いて一旦利用率データの検索を行い、すでに同一呼び出しが登録されていた場合には、呼び出し回数を1増加させる。もし、同一呼び出しが登録されていない場合には、呼び出し回数を1にして、利用率データ207への登録を行う。この処理をテスト対象のシステム内の全てのプログラムに対して行うことで、利用率データ207が生成される。
【0026】
リスク評価部204では、ソースコード解析部201によって抽出されたプログラム構造データ205および、フローモデル生成部202にて生成されたフローモデル206および、利用率算出部203にて算出された利用率データ207を用いて、ソフトウエア全体に対する対象ユニットのリスク情報208を算出する。リスク情報算出方法の一例としては、フローモデル206の情報を基にして、分岐の数やノードの数によって算出対象ユニットの複雑性を計算し、各ユニットの複雑性と利用率の値にそれぞれ補正係数をかけて標準化をおこなったうえで、ユニットのリスクを複雑性と利用率の値それぞれX軸とY軸による二次元平面上の点に見立て原点からの距離として評価する方法が挙げられる。この場合には、同程度の複雑性であれば利用率の高いユニットほどリスクが高くなり、逆に同程度の利用率であれば複雑性が高いほどリスクも高いことになる。なお、ここで計算される複雑性の例としては、McCabeのメトリックスと呼ばれる複雑性を示す値がある。このMcCabeのメトリックスでは、処理フロー2061における開始、終了、分岐を表す円の数をリンク数とし、円と円を結ぶ矢印の数をノード数として定義し、複雑性をリンク数からノード数を引いた値に、主プログラムとサブルーチンの数を足して2倍した値を足したものとして定義されている。
図6にリスク情報208の例を示す。リスク情報208は、ユニット名、出現頻度、複雑性およびリスク値によって構成されている。ここでユニット名はリスク評価対象のユニットプログラムの名前を示し、それぞれのユニットに関して、システム全体で同ユニットが参照されている回数である出現頻度を示す値と、前記例ではMcCabeのメトリックスと呼ばれるユニットの複雑性を表す値と、ユニットのリスクの大きさを示す値であるリスク値を含んでいる。
【0027】
図7は、図1におけるリソース評価部30の内部構成を示す図である。
リソース評価部30は、図7に示すように、リソース見積り部301、リソース評価データ302、統計処理部303、リソース情報入力部304、リソース情報305にて構成されている。
リソース見積り部OLE_LINK1301OLE_LINK1では、前記ソースコード複雑性評価部20にて生成されたプログラム構造データ205、フローモデルデータ206、利用率データ207およびリソース情報305を入力にして、ユニットプログラムのテストを実施するために必要なリソース消費量を概算して、リソース評価データ302を生成する。ここでいうリソース消費量とは、テスト対象のプログラムを実行するために必要な処理時間を標準化した値であり、テスト対象の開発言語における命令毎に基本的なリソース消費量があらかじめ算出してある。このように定義された各命令のリソース消費量を元に、テストを実施するために必要なリソース消費量は各テスト時の処理の流れのなかで実行される全命令のリソース消費量を合計して計算を行う。なお、テスト方法の例として、少なくとも一回はプログラムの全てのステートメントの実行をおこなうステートカバレッジテストを実施するか、分岐命令のとび先を少なくとも一回は実行するブランチカバレッジテストを実施するか、全ての変数について使われ方の全てのパターンをテストするデータフローテストを実施するか、あるいは全ての処理フローの経路を実行するフルパステストを実施するかといったテスト方法が存在する。これらのテスト方法によってテスト実行に必要とされるリソース消費量は変化するために、各種テスト方法でのリソース消費量を概算し、リソース評価データ302を生成するものとする。なお、これらのテスト方法によるカバレッジの割合は、ステートメントカバレッジテストが最も少なく、ブランチカバレッジテスト、データフローテスト、フルパステストの順でカバレッジが大きくなる。
通常の場合、経験のある技術者がプログラムの複雑度をみながら、どの程度テストに時間が必要かを見積もるのであるが、本発明では、リソース消費量というプログラムの実行に必要な値を求め、その値をテスト実行に使用するコンピュータの単位時間当たりのリソース消費量で割ることによって、テスト実施に必要とされる時間を経験者による見積りより精度良く算出することが出来る。
【0028】
図8は、前記リソース見積り部301にて生成されたリソース評価データ302の例を示す。リソース評価データ302では、ユニット名およびテストを実施するリソース名、テスト方法およびテスト実施に必要なリソース量にて構成されている。
【0029】
統計処理部303は、自動テスト実行部60におけるテストの実行結果を示すテスト実行結果604の情報を基にして、リソース評価データ302での見積もり結果との差異を算出し、統計的に処理を行うことで、リソース情報305のうちのコンピュータリソース情報3051での性能情報あるいは、プログラマリソース情報3052のパフォーマンス値を更新する。ここで行われる統計処理の例として、テスト実施回数によって性能の変化しないコンピュータリソースの場合には、単純に全ての実行結果の平均値を算出し、また、テスト実施回数によって経験を積みパフォーマンスの向上が見込めるプログラマリソースの場合には、最も新しい5回の実行結果の平均値を算出するような処理があげられる。
【0030】
リソース情報入力部304はリソース情報305のデータを修正するときに用いる。本リソース情報入力部304は、図9のリソース情報一覧画面3041、図10のコンピュータリソース情報編集画面3042、図11のプログラマリソース情報編集画面3043を表示する。各画面の目的を以下に示す。
【0031】
図9のリソース情報一覧画面3041では、コンピュータリソースおよびプログラマリソースを一覧することが可能である。
本リソース一覧画面3041にて新規作成ボタンをクリックすることで、新しくリソースを登録するために各項目が空白になったコンピュータリソース情報編集画面3042もしくは、プログラマリソース情報編集画面3043が表示され、新しいリソースの新規登録を行うことが可能である。なお、各編集画面が現在表示しているリソースの種類に応じて自動的に変更される。つまり、コンピュータリソースを一覧表示している場合には、コンピュータリソース情報編集画面3042が表示され、プログラマリソースを一覧表示している場合にはプログラマリソース情報編集画面が表示される。
あるいは、一覧されている既存のリソースを示す行をクリックすることで、行を反転表示させてから編集ボタンをクリックすることで、選択したリソースの種類に従ってコンピュータリソース編集画面3042もしくは、プログラマリソース編集画面3043が表示される。この表示された画面を用いて各リソース情報の確認と必要に応じて編集をおこなうことが可能である。
また、既存のリソースを示す行をクリックすることで、行を反転表示させてから削除ボタンをクリックすることで、既存リソースをリソース情報305からの削除を行なうことが可能である。
【0032】
図10のコンピュータリソース情報編集画面3042では、各コンピュータリソースに関する各種情報を編集することが可能である。ここで編集可能な情報は、リソース情報305に含まれているコンピュータリソース情報3051であり、編集項目としては図10で示すように、リソース名、CPUタイプ、CPUスピード、CPU数、メモリ容量、ディスク容量、一日あたりの使用料、備考、稼動状況が編集可能である。性能指数に関しては統計処理部303の処理で更新されるため、当コンピュータリソース編集画面では修正を行うことが出来ない。なお、新規登録時については、既存の他の類似リソース情報を用いて性能指数の値の設定がおこなわれる。
【0033】
図11のプログラマリソース情報編集画面3043では、テスト実施に投入可能なプログラマリソースに関する各種情報を編集することが可能である。ここで編集可能な情報は、リソース情報305に含まれえているプログラマリソース情報3052であり、編集項目としては、図11の例で示すように、リソース名、職種、要件理解スキル、設計スキル、コーディングスキル、テストスキル、時間単価、時間外単価、稼動状況が上げられる。これらの入力値はそれぞれ次のように用いられる。リソース名、職種はプログラマを識別するために使用される単なる参照項目である。要件理解スキル、設計スキル、コーディングスキル、テストスキルの各スキル値を基にして、新規登録時のパフォーマンスの標準値が決定される。時間単価、時間外単価および稼動状況については、テスト方法決定支援部40における最適解探索部402にて、テスト予定投入金額の条件を満たすかどうかの計算や、リソースがテスト予定期間に利用することが可能かどうかの判断のために使用される。パフォーマンス値に関しては、統計処理部303の処理で更新されるために、当プログラマリソース情報編集画面では編集を行うことが出来ない。なお、新規登録時については、既存の他の類似リソース情報を用いてパフォーマンス値の設定がおこなわれる。
【0034】
図12のリソース情報305では、コンピュータリソース情報3051およびプログラマリソース情報3052を含んでいる。コンピュータリソース情報3051は、前記コンピュータリソース情報編集画面3042を用いて編集することが可能であり、含まれている項目は、リソース名、CPUタイプ、CPUスピード、CPU数、メモリ容量、ディスク容量、一日あたりの使用料、備考、性能指数がある。また、プログラマリソース情報3052は、プログラマリソース情報編集画面3042を用いて編集することが可能であり、含まれている項目は、リソース名、職種、要件理解スキル、設計スキル、コーディングスキル、テストスキル、時間単価、時間外単価、稼動状況およびパフォーマンス値がある。
【0035】
図1のテスト方法決定支援部40の構成を図13に示す。
テスト方法決定支援部40は、操作部401、最適解探索部402、テスト方法情報403によって構成される。
図14に操作部401におけるテスト条件設定画面4011を示す。操作者は前記テスト条件設定画面4011を用いて、テスト計画を策定するための基本方法となるべき制約条件の入力を行う。ここで設定される制約条件の実施例としては、テスト方法、テスト予定時間、テスト投入予定金額、一日の作業時間、投入可能リソースがある。
【0036】
図13における最適解探索部402では、前記操作部401におけるテスト条件設定画面4011にて入力された制約条件を用いて、リスク情報208およびリソース評価データ302の情報を基に制約条件を満たしつつテストカバレッジの値が最大となるようなテスト方法を探索する。たとえば、テスト実行時間に制限がある場合には、実行可能なテスト時間の中で、システム全体に対する重要性の高い部分についてカバレッジの高いテスト方法、たとえばフルパステストやデータフローテストなどカバレッジの高い方法を用いて、最も多くの処理フローやデータフローを確認できるようにし、重要でない部分については、ステートメントテストを実施することでテスト時間を短縮するといったテスト方法の組み合わせを探索することである。あるいは、利用可能なリソースに制限がある場合には、利用可能なリソースのみを用いて、最も多くの処理フロー、データフローが確認できるテスト方法の組み合わせを探索することである。最適解探索部402で探索されたテスト方法情報403は、図15のテスト方法結果表示画面4012に表示される。
【0037】
ここでの探索方法は複数の方法が考えられるが、一例として、重要度の高いユニットプログラムに対して高いカバレッジのテストを実施することでソフトウエア全体の品質が向上するというアルゴリズムを用いた最適解探索フローチャートを図16に示す。
図16の処理4021では、ソフトウエアシステム全体を制約条件の範囲内でもっとも低いカバレッジとなるテスト方法でのテストを行った場合のリソース消費量および実施推定時間、必要な費用を算出する。判断4022にて、前記処理4021の算出結果が制約条件を満たしているかどうか判断を行う。もし、処理4021の算出結果が制約条件を満たしていない場合には、処理4027にて操作者に対して制約条件エラーを表示して、探索処理を終了する。もし、処理4021の算出結果が制約条件を満たしていた場合には、次の処理4023を実施する。
処理4023では、テスト対象のユニットプログラムのうち重要度の高い順に全体の20%の個数のユニットプログラムを選択し、選択されたユニットプログラムのテスト方法を最大のテストカバレッジと設定する。これは、一般的に上位20%の項目が全体に対する80%の重みを持つと言われているパレートの法則(20:80の法則)を基にした処理手法である。つまり、重要度の高い20%のユニットプログラムを重点的にテストすることで、システム全体の品質の80%の向上を行えるという一般的な経験則を利用したものである。処理4024では、前記処理4023にて設定が修正されたテストカバレッジを用いてテストを行う場合のリソース消費量、実施推定時間、必要な費用を再度算出しなおす。
【0038】
判断4025では、前記処理4024にて算出された結果が制約条件を満たしているかどうか判断をおこなう。もし、処理4024の算出結果が制約条件を満たしている場合には、再度処理4023を実施して、テストカバレッジの値を修正する。たとえば、一つの例としては、探索された全てのテストケースを実行するために必要な時間の概算値がテスト実施可能時間内におさまっている場合には、テスト時間が多くなるようにつまりテストカバレッジがより大きくなるようにテスト方法を選択しなおす。もし、処理4024の算出結果が制約条件を満たしていない場合には、処理4026を実施する。
処理4026では、前回の算出条件を図17のテスト処理情報として記憶する。この処理4026の終了後、探索処理は終了する。
【0039】
前記図16のようなアルゴリズムを持つ図13の最適解探索部402による探索処理の結果は、前記図15のテスト方法探索結果表示画面4012を用いて操作者に提示される。操作者は同テスト方法探索結果表示画面4012を参照することで、テスト予定時間、投入予算、一日の作業時間、各カバレッジの値を確認することが出来る。操作者が生成されたテスト方法に問題なしと判断した場合には、「確定/テスト生成」ボタンを選択することで、自動テストプログラム生成部50の処理が開始される。また、生成されたテスト方法に何らかの問題を見つけた場合には、「条件変更」ボタンを選択することで、前記図14に示すテスト条件設定画面4011が再度表示され、新しいテスト条件を設定可能となる。また、図1に示す自動テスト実施までの一連の処理を終了する場合には、「キャンセル」ボタンを選択する。
【0040】
前記テスト方法探索結果表示画面4012にて、「確定/テスト生成」ボタンが選択された場合には、図1の自動テストプログラム生成部50の処理が開始される。図18に自動テストプログラム生成部の内部構造を示す。自動テストプログラム生成部50はフロー探索部501、分岐条件生成部502、プログラム生成部503、テストプログラム格納部504および、プログラム入力部505から構成される。
フロー探索部501では、前記ソースコード複雑性評価部20にて生成されるプログラム構造データ205、フローモデル206および前記テスト方法決定支援部40にて生成されるテスト方法情報403の情報を入力として処理を行う。本フロー探索部501では、前記テスト方法情報403にて示されるテスト方法でユニットプログラムをテストするために、プログラム構造データ205およびフローモデル206の情報を基にして、プログラムの開始部分から終了部分までの各処理経路の洗い出しを行う。
【0041】
前記フロー探索部501にて洗い出された処理経路に対して、分岐条件生成部502では、それぞれの経路を正しく辿るために必要な各条件分岐部分の条件式の値を前記プログラム構造データ205およびフローモデル206の情報を用いて生成を行う。この場合の分岐条件生成部の処理の例としては、選択された経路を終了部分からノードを辿っていき、分岐処理があった場合には、正しく分岐条件を辿るために必要な条件式を記憶し、ノードを辿っていく途中で、記憶している条件式で使用されている変数に対する演算処理が行われていた場合には、その処理も記憶しながら処理の最初まで辿っていき、条件分岐および、条件分岐に関連する演算処理を全て抽出する。この抽出結果を基に、各演算処理を逆算していくことで、正しく経路をたどるための初期条件を生成するアルゴリズムが挙げられる。
【0042】
プログラム生成部503では、前記分岐条件生成部502にて生成された初期条件に関する情報を基に、テスト対象となるユニットプログラムを実行するために必要な呼び出しプログラムと処理結果の判定処理プログラムを含むテストプログラムの生成を行い、テストプログラム格納部504へテストプログラムを格納する。
【0043】
テストプログラム格納部504では、前記プログラム生成部503にて生成されたテストプログラムのソースコードを格納し管理を行う。
【0044】
プログラム入力部505では、自動的に生成されたテストプログラムのみでなく、技術者が作成したテストプログラムをテストプログラム格納部504へ格納することを可能とする。本プログラム入力部505を用いてテストプログラム格納部に格納されたテストプログラムは、自動生成されたテストプログラムと同様の扱いとなり、図1に示す自動テスト実行部60における自動テスト実行対象のテストプログラムとなる。
【0045】
図1の自動テスト実行部60の構成を図19に示す。自動テスト実行部60は、テスト実行管理部601、テスト情報通信部602、テスト実行処理部603、テスト実行結果データ604、テスト結果表示部605、テスト結果出力部606から構成されている。
テスト実行管理部601は、テスト対象のソースコード10および、前記自動テストプログラム生成部50内部のテストプログラム格納部504に格納されているテストプログラムを順次読み込み、テスト情報通信部602を通じてテスト実行処理部に対して、テスト実施に必要な情報を伝達し、テストの実施およびその結果の取得を行い、実行結果をテスト実行結果データ604に格納する。
【0046】
テスト実行管理部601からテスト実行処理部603に対して送信される情報は、テスト対象のプログラムおよびテストプログラムである。逆にテスト実行処理部603からテスト実行管理部に対して送信される情報は、テストの合否を示すテスト結果に関する情報である。
【0047】
また、テスト実行管理部601とテスト実行処理部603の間には、テスト情報通信部602が存在するため、前記テスト実行管理部601とテスト実行処理部603が同一のコンピュータ上で実行される必要はない。たとえば、図21のテスト実施環境例にて示すように、テスト実行管理部601の実行される管理コンピュータ607とテスト実行処理部602が実行されるテスト実行コンピュータ608が別のコンピュータであっても良く、これらのコンピュータ間はLAN、公衆回線、インターネット、専用線、シリアル通信線、パラレル通信線などの方法を用いて、テスト情報通信部が通信を行うことで動作をしている。
【0048】
図20にはテスト実行結果データ604を示す。テスト実行結果データ604では、ユニット名、テスト方法、テスト実施時間、ステートカバレッジ、ブランチカバレッジ、テスト件数、エラー件数を管理している。
このテスト実行結果データ604は、テスト結果表示部605もしくは、テスト結果出力部606によって操作者のわかる形で表示もしくは出力される。
図22にテスト結果表示部によって表示されるテスト結果表示画面を示す。テスト結果表示画面では、テスト方法、テスト実施時間、実施費用、ステートカバレッジ、ブランチカバレッジ、総テスト件数、総エラー件数および、ユニットプログラム毎のテスト結果の表示を行う。また、再テスト実施ボタンを選択することで、再度同一のテストを繰り替えることが可能である。また、「結果印刷」ボタンを選択することで、図19のテスト結果出力部606を用いて、テスト結果70を出力することも可能である。
【0049】
【発明の効果】
本発明を用いることで、以下のような効果を得ることができる。
1.今まで技術者の経験に基づいて、テスト計画の策定およびテスト仕様書を作成していたが、本発明を用いることで、客観的な数値に基づき、テスト計画を作成し、テスト仕様書を作成できることで、経験深い技術者がいなくても、品質確認レベルの高い、テストを実施可能である。
【0050】
2.本発明を活用することで、自動的にテストを実施することが出来るようになり、テストの品質を落とさずに、テスト工程の省力化が可能となる。このことによってテスト工程におけるコスト削減を行うことが可能となる。
【0051】
3.また、今まで経験ある技術者が作成していたテスト仕様書の作成が自動化され、手作業によるテストも削減されるため、テスト工程の短縮が可能となる。
【図面の簡単な説明】
【図1】本発明の統合テスト管理システムの構成を示す図である。
【図2】ソースコード複雑性評価部の内部構成を示す図である。
【図3】ソースコード複雑性評価部内部のプログラム構造データに格納されるデータの代表例を示す図である。
【図4】ソースコード複雑性評価部内部のフローモデルに格納される処理フロー情報とデータフロー情報の代表例を示す図である。
【図5】ソースコード複雑性評価部内部の利用率データの代表例を示す図である。
【図6】ソースコード複雑性評価部内部のリスク情報の代表例を示す図である。
【図7】リソース評価部の内部構成を示す図である。
【図8】リソース評価部内部のリソース評価データの代表例を示す図である。
【図9】リソース情報一覧画面を示す図である。
【図10】コンピュータリソース情報編集画面を示す図である。
【図11】プログラマリソース情報編集画面を示す図である。
【図12】リソース評価部内部のリソース情報に格納されるコンピュータリソース情報およびプログラマリソース情報の代表例を示す図である。
【図13】テスト方法決定支援部の内部構成を示す図である。
【図14】テスト条件設定画面を示す図である。
【図15】テスト方法探索結果表示画面を示す図である。
【図16】テスト方法探索部内の最適解探索部のフローチャートである。
【図17】テスト方法探索部内のテスト方法情報の代表例を示す図である。
【図18】自動テストプログラム生成部の内部構成を示す図である。
【図19】自動テスト実行部の内部構成を示す図である。
【図20】自動テスト実行部内のテスト実行結果データの代表例を示す図である。
【図21】自動テスト実施環境の代表例を示す図である。
【図22】テスト結果表示画面を示す図である。
【符号の説明】
10・・・ソースコード、
20・・・ソースコード複雑性評価部、
30・・・リソース評価部、
40・・・テスト方法決定支援部、
50・・・自動テストプログラム生成部、
60・・・自動テスト実行部、
70・・・テスト結果、
80・・・操作者、
201・・・ソースコード解析部、
202・・・フローモデル生成部、
203・・・利用率算出部、
204・・・リスク評価部、
205・・・プログラム構造データ、
206・・・フローモデル、
207・・・利用率データ、
208・・・リスク情報、
2061・・・処理フロー、
2062・・・データフロー、
301・・・リソース見積り部、
302・・・リソース評価データ、
303・・・統計処理部、
304・・・リソース情報入力部、
305・・・リソース情報、
3041・・・リソース情報一覧画面、
3042・・・コンピュータリソース情報編集画面、
3043・・・プログラマリソース情報編集画面、
3051・・・コンピュータリソース情報、
3052・・・プログラマリソース情報、
401・・・操作部、
402・・・最適解探索部、
403・・・テスト方法情報、
4011・・・テスト条件設定画面、
4012・・・テスト方法探索結果表示画面、
501・・・フロー探索部、
502・・・分岐条件生成部、
503・・・プログラム生成部、
504・・・テストプログラム格納部、
505・・・プログラム入力部、
601・・・テスト実行管理部、
602・・・テスト情報通信部、
603・・・テスト実行処理部、
604・・・テスト実行結果データ、
605・・・テスト結果表示部、
606・・・テスト結果出力部、
607・・・管理コンピュータ、
608・・・テスト実行コンピュータ、
6051・・・テスト結果表示画面
Claims (5)
- ソフトウエアを構成するユニットの障害がソフトウエア全体に与えるリスクを評価するソースコード複雑性評価手段と、
ユニットのテストを実施するために必要なリソースを評価するリソース評価手段と、
前記ソースコード複雑性評価手段によって得られたリスクデータと、前記リソース評価手段によって得られたリソース評価データを基に、各ユニットのテスト方法の決定を支援するテスト方法決定支援手段と、
同テスト方法にしたがって、各ユニットをテストするプログラムを自動的に生成する自動テストプログラム生成手段と、
同自動生成されたテストプログラムを自動的に実行しテスト結果を出力する自動テスト実行手段と
を備えたことを特徴とする統合テスト管理システム。 - 前記ソースコード複雑性評価手段は、ソースコードの処理フローの解析およびデータフローの解析によってソフトウエアを構成するユニットの複雑性と利用率を算出し、算出された複雑性と利用率から該当ユニットがソフトウエア全体に与えるリスクを算出することが可能なリスク評価機能を有することを特徴とする請求項1に記載の統合テスト管理システム。
- 前記リソース評価手段は、前記ソースコード複雑性評価手段にて解析されたソフトウエアに関する情報と、あらかじめ登録されている利用可能なリソースに関する情報を基にしてテスト方法ごとにテスト実施にかかる想定時間および想定リソース消費量を算出することを特徴とする請求項1記載の統合テスト管理システム。
- 前記テスト方法決定支援手段は、ユニットのリスク評価結果とリソース評価結果および操作者によって入力された制約条件から、制約条件範囲内でソフトウエア全体の品質が最も高くなるユニット毎のテスト方法の組み合わせを自動的に選択しテスト方法案を自動的に作成することを特徴とする請求項1記載の統合テスト管理システム。
- 前記自動テストプログラム生成手段は、前記ソースコード複雑性評価手段によるユニットプログラムの解析結果を基にして、指定されたテスト方法にあわせて同ユニットプログラムをテストするためのテストプログラムを自動的に生成することを特徴とする請求項1記載の統合テスト管理システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003006132A JP2004220269A (ja) | 2003-01-14 | 2003-01-14 | 統合テスト管理システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003006132A JP2004220269A (ja) | 2003-01-14 | 2003-01-14 | 統合テスト管理システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004220269A true JP2004220269A (ja) | 2004-08-05 |
Family
ID=32896607
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003006132A Pending JP2004220269A (ja) | 2003-01-14 | 2003-01-14 | 統合テスト管理システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004220269A (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007334630A (ja) * | 2006-06-15 | 2007-12-27 | Dainippon Screen Mfg Co Ltd | ソフトウェアシステムのテストケース選択装置およびテストケース選択プログラム |
JP2009525522A (ja) * | 2006-01-30 | 2009-07-09 | マイクロソフト コーポレーション | コンテクストベースのコード分析 |
JP2009245066A (ja) * | 2008-03-31 | 2009-10-22 | Nomura Research Institute Ltd | ソフトウェアマイグレーションシステム及び方法 |
JP2010539576A (ja) * | 2007-09-14 | 2010-12-16 | エアバス オペレーションズ (エスアーエス) | 航空機搭載システムのオペレーション・ソフトウェアの妥当性をテストするための自動スクリプト生成の方法および同方法を実施するためのデバイス |
CN106547654A (zh) * | 2015-09-21 | 2017-03-29 | 中兴通讯股份有限公司 | 一种自动化测试方法及装置 |
US10489282B2 (en) | 2015-04-30 | 2019-11-26 | Micro Focus Llc | Application testing |
JP7487135B2 (ja) | 2021-03-29 | 2024-05-20 | 株式会社日立製作所 | 工数算出支援装置及び工数算出支援方法 |
-
2003
- 2003-01-14 JP JP2003006132A patent/JP2004220269A/ja active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009525522A (ja) * | 2006-01-30 | 2009-07-09 | マイクロソフト コーポレーション | コンテクストベースのコード分析 |
US8595703B2 (en) | 2006-01-30 | 2013-11-26 | Microsoft Corporation | Context based code analysis |
US8997055B2 (en) | 2006-01-30 | 2015-03-31 | Microsoft Corporation | Context based code analysis |
JP2007334630A (ja) * | 2006-06-15 | 2007-12-27 | Dainippon Screen Mfg Co Ltd | ソフトウェアシステムのテストケース選択装置およびテストケース選択プログラム |
JP2010539576A (ja) * | 2007-09-14 | 2010-12-16 | エアバス オペレーションズ (エスアーエス) | 航空機搭載システムのオペレーション・ソフトウェアの妥当性をテストするための自動スクリプト生成の方法および同方法を実施するためのデバイス |
JP2009245066A (ja) * | 2008-03-31 | 2009-10-22 | Nomura Research Institute Ltd | ソフトウェアマイグレーションシステム及び方法 |
US10489282B2 (en) | 2015-04-30 | 2019-11-26 | Micro Focus Llc | Application testing |
CN106547654A (zh) * | 2015-09-21 | 2017-03-29 | 中兴通讯股份有限公司 | 一种自动化测试方法及装置 |
JP7487135B2 (ja) | 2021-03-29 | 2024-05-20 | 株式会社日立製作所 | 工数算出支援装置及び工数算出支援方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20040103396A1 (en) | System for verification of enterprise software systems | |
KR20170081239A (ko) | 영향 분석 | |
Schierholt | Process configuration: Combining the principles of product configuration and process planning | |
JP2008040760A (ja) | 製品開発プロセスにおける設計変更の影響度分析装置および方法 | |
Heinecke et al. | Generating test plans for acceptance tests from uml activity diagrams | |
Gabrel et al. | Optimal and automatic transactional web service composition with dependency graph and 0-1 linear programming | |
CN112965710B (zh) | 计算图的处理方法、装置和系统 | |
US8145992B2 (en) | Validation assisted document conversion design | |
EP1548581A2 (en) | Methods, apparatus and programs for system development | |
Heinrich et al. | A methodology for domain-spanning change impact analysis | |
JP2004220269A (ja) | 統合テスト管理システム | |
US20180239603A1 (en) | Software Development Estimating Based on Functional Areas | |
Jena et al. | Test case creation from UML sequence diagram: a soft computing approach | |
US20130096894A1 (en) | Automatic insertion point identification in model merging operations | |
Kowal et al. | Supporting the development of interdisciplinary product lines in the manufacturing domain | |
Zaid et al. | Issues in software cost estimation | |
Djanatliev et al. | Veritas-a versatile modeling environment for test-driven agile simulation | |
Gantait | Test case generation and prioritization from UML models | |
Grüneisen et al. | Qualitative system dynamics cycle network of the innovation process of product service systems | |
Camacho et al. | Cost-related interface for software product lines | |
Eberendu | Software Project Cost Estimation: Issues, Problems and Possible Solutions | |
US9177277B2 (en) | Workflow modeling with worklets and transitions | |
Yasumoto et al. | Software process description using LOTOS and its enaction | |
CN114594943A (zh) | 数据建模方法、装置、设备和存储介质 | |
Bergenthum et al. | Can i execute my scenario in your net? viptool tells you! |