(57)【要約】【課題】デグレード発生箇所を容易に判定すること。【解決手段】改修前後のソースのステップ毎に処理実行順を出力させる処理順出力機能及びステップで参照可能な変数を出力させる変数値出力機能を埋め込んだ改修前後のテスト用ソースを生成するテスト用ソース生成部００５と、改修前後のテスト用オブジェクトコードを実行した際に出力された処理フロー情報を処理フローＤＢ０１９に格納すると共に出力された変数を実行結果ＤＢ０２０に格納するテスト実行部と、前記実行結果ＤＢ０２０から実行結果の変数の値に差異があるレコードを判定して表示させる実行結果比較部００７と、デグレード発生箇所を含むシーケンス図を生成するシーケンス図生成部００８と、デグレード発生箇所が影響を及ぼす呼び出し先一覧情報を表示する呼び出し先の一覧抽出部００９とを備えたデグレードテスト支援システム。【選択図】図１
2014032447.tif 000002
【特許請求の範囲】
【請求項１】
階層構造のモジュール及びメソッドを含む改修後のソースをテストするための担当用コンピュータと接続され、改修前後のソースを参照して改修後のソースにデグレードが発生したか否かを試験するデグレードテスト支援システムであって、
前記改修前後のソースを格納するソースデータベースと、
前記改修前後のソースのモジュール又はメソッドの階層と処理順とを含む処理フロー情報を格納する処理フローデータベースと、
前記改修前後のソースの各ステップが参照する変数を格納する実行結果データベースと、
前記改修前後のソースのステップ毎に処理実行順を出力させる処理順出力機能及び前記ステップで参照可能な変数を出力させる変数値出力機能を埋め込んだ改修前後のテスト用ソースを生成するテスト用ソース生成部と、
前記改修前後のテスト用ソースから改修前後のテスト用オブジェクトコードを生成するコンパイル部と、
前記改修前後のテスト用オブジェクトコードを実行し、前記処理順出力機能によって出力された処理フロー情報を前記処理フローデータベースに格納すると共に前記変数値出力機能によって出力された変数を前記実行結果データベースに格納するテスト実行部と、
前記実行結果データベースから実行結果の変数の値に差異がある前記改修前後のテスト用オブジェクトコードのレコードを抽出し、該抽出したレコードのモジュール名及びメソッド名と、該抽出したレコードの上位レコードの上位モジュール名及び上位メソッド名を前記処理フローデータベースに格納した処理フロー情報の階層及び処理順を参照して抽出し、該抽出した複数のモジュール名及びメソッド名並びに上位モジュール名及び上位メソッド名を担当用コンピュータに表示させる実行結果比較部とを備えることを特徴とするデグレードテスト支援システム。
【請求項２】
前記実行結果データベースが、改修前テスト用オブジェクトコードの実行により出力された変数を格納する改修前実行結果データベースと、改修後テスト用オブジェクトコードの実行により出力された変数を格納する改修後実行結果データベースとを含み、
前記実行結果比較部が、改修前実行結果データベース及び改修後実行結果データベース個々のモジュール名とメソッド名と行数と変数名と値のフィールドを等結合し、前記値のフィールドが異なるレコードを実行結果の変数の値に差異があるレコードとして抽出することを特徴とする請求項１記載のデグレードテスト支援システム。
【請求項３】
前記処理フローデータベースが、改修前ソースのモジュール又はメソッドの階層と処理順とを含む改修前処理フロー情報を格納する改修前処理フローデータベースと、改修後ソースのモジュール又はメソッドの階層と処理順とを含む改修後処理フロー情報を格納する改修後処理フローデータベースとを含み、
前記改修前処理フローデータベースに格納した改修前ソースのモジュール又はメソッドの階層と処理順とに基づいてモジュール及びメソッド間のやりとりを時間軸に沿って表現する階層前シーケンス図を生成し、前記改修後処理フローデータベースに格納した改修後ソースのモジュール又はメソッドの階層と処理順とに基づいてモジュール及びメソッド間のやりとりを時間軸に沿って表現する階層後シーケンス図を生成し、前記実行結果比較部により抽出した実行結果の変数の値に差異があるレコードのモジュール又はメソッドの色を変化させて担当用コンピュータに表示させるシーケンス図生成部を備えることを特徴とする請求項１及び請求項２記載のデグレードテスト支援システム。
【請求項４】
階層データベースからデグレード発生箇所の対象モジュール名及び対象メソッド名を上位対象モジュール名及び上位対象メソッド名として抽出する上位抽出工程と、前記階層データベースから前記上位対象モジュール名及び上位対象メソッド名を階層構造の親とする下位対象モジュール名及び下位対象メソッド名とを抽出する下位抽出工程と、該下位抽出工程を前記下位対象モジュール名及び下位対象メソッド名がソースの最終行でないと判定するまで繰り返す繰り返し工程とを実行し、前記上位抽出工程及び下位抽出工程によって抽出した対象モジュール名及び対象メソッド名とに基づいてデグレード発生箇所の対象モジュール名及び対象メソッド名が影響を及ぼす呼び出し先一覧情報を作成して表示する呼び出し先一覧抽出部を備えることを特徴とする請求項１から３何れかに記載のデグレードテスト支援システム。
【請求項５】
階層構造のモジュール及びメソッドを含む改修後のソースをテストするための担当用コンピュータと接続され、改修前後のソースを格納するソースデータベースと、前記改修前後のソースのモジュール又はメソッドの階層と処理順とを含む処理フロー情報を格納する処理フローデータベースと、前記改修前後のソースの各ステップが参照する変数を格納する実行結果データベースとを備え、前記改修前後のソースを参照して改修後のソースにデグレードが発生したか否かを試験するコンピュータシステムのデグレードテスト支援方法であって、
該コンピュータシステムが、
前記改修前後のソースのステップ毎に処理実行順を出力させる処理順出力機能及び前記ステップで参照可能な変数を出力させる変数値出力機能を埋め込んだ改修前後のテスト用ソースを生成するテスト用ソース生成工程と、
前記改修前後のテスト用ソースから改修前後のテスト用オブジェクトコードを生成するコンパイル工程と、
前記改修前後のテスト用オブジェクトコードを実行し、前記処理順出力機能によって出力された処理フロー情報を前記処理フローデータベースに格納すると共に前記変数値出力機能によって出力された変数を前記実行結果データベースに格納するテスト実行工程と、
前記実行結果データベースから実行結果の変数の値に差異がある前記改修前後のテスト用オブジェクトコードのレコードを抽出し、該抽出したレコードのモジュール名及びメソッド名と、該抽出したレコードの上位レコードの上位モジュール名及び上位メソッド名を前記処理フローデータベースに格納した処理フロー情報の階層及び処理順を参照して抽出し、該抽出した複数のモジュール名及びメソッド名並びに上位モジュール名及び上位メソッド名を担当用コンピュータに表示させる実行結果比較工程とを実行することを特徴とするデグレードテスト支援方法。
【請求項６】
前記実行結果データベースが、改修前テスト用オブジェクトコードの実行により出力された変数を格納する改修前実行結果データベースと、改修後テスト用オブジェクトコードの実行により出力された変数を格納する改修後実行結果データベースとを含み、
前記コンピュータシステムが、前記実行結果比較工程において、改修前実行結果データベース及び改修後実行結果データベース個々のモジュール名とメソッド名と行数と変数名と値のフィールドを等結合し、前記値のフィールドが異なるレコードを実行結果の変数の値に差異があるレコードとして抽出することを特徴とする請求項５記載のデグレードテスト支援方法。
【請求項７】
前記処理フローデータベースが、改修前ソースのモジュール又はメソッドの階層と処理順とを含む改修前処理フロー情報を格納する改修前処理フローデータベースと、改修後ソースのモジュール又はメソッドの階層と処理順とを含む改修後処理フロー情報を格納する改修後処理フローデータベースとを含み、
前記コンピュータシステムが、改修前処理フローデータベースに格納した改修前ソースのモジュール又はメソッドの階層と処理順とに基づいてモジュール及びメソッド間のやりとりを時間軸に沿って表現する階層前シーケンス図を生成し、前記改修後処理フローデータベースに格納した改修後ソースのモジュール又はメソッドの階層と処理順とに基づいてモジュール及びメソッド間のやりとりを時間軸に沿って表現する階層後シーケンス図を生成し、前記実行結果比較工程により抽出した実行結果の変数の値に差異があるレコードのモジュール又はメソッドの色を変化させて担当用コンピュータに表示させるシーケンス図生成工程を実行することを特徴とする請求項５及び請求項６記載のデグレードテスト支援方法。
【請求項８】
前記コンピュータシステムが、階層データベースからデグレード発生箇所の対象モジュール名及び対象メソッド名を上位対象モジュール名及び上位対象メソッド名として抽出する上位抽出工程と、前記階層データベースから前記上位対象モジュール名及び上位対象メソッド名を階層構造の親とする下位対象モジュール名及び下位対象メソッド名とを抽出する下位抽出工程と、該下位抽出工程を前記下位対象モジュール名及び下位対象メソッド名がソースの最終行でないと判定するまで繰り返す繰り返し工程とを実行し、前記上位抽出工程及び下位抽出工程によって抽出した対象モジュール名及び対象メソッド名とに基づいてデグレード発生箇所の対象モジュール名及び対象メソッド名が影響を及ぼす呼び出し先一覧情報を作成して表示する工程とを実行する呼び出し先一覧抽出を行うことを特徴とする請求項５から７何れかに記載のデグレードテスト支援方法。
【請求項９】
階層構造のモジュール及びメソッドを含む改修後のソースをテストするための担当用コンピュータと接続され、改修前後のソースを格納するソースデータベースと、前記改修前後のソースのモジュール又はメソッドの階層と処理順とを含む処理フロー情報を格納する処理フローデータベースと、前記改修前後のソースの各ステップが参照する変数を格納する実行結果データベースとを備え、前記改修前後のソースを参照して改修後のソースにデグレードが発生したか否かを試験するコンピュータシステムのデグレードテスト支援プログラムであって、
該コンピュータシステムに、
前記改修前後のソースのステップ毎に処理実行順を出力させる処理順出力機能及び前記ステップで参照可能な変数を出力させる変数値出力機能を埋め込んだ改修前後のテスト用ソースを生成するテスト用ソース生成機能と、
前記改修前後のテスト用ソースから改修前後のテスト用オブジェクトコードを生成するコンパイル機能と、
前記改修前後のテスト用オブジェクトコードを実行し、前記処理順出力機能によって出力された処理フロー情報を前記処理フローデータベースに格納すると共に前記変数値出力機能によって出力された変数を前記実行結果データベースに格納するテスト実行機能と、
前記実行結果データベースから実行結果の変数の値に差異がある前記改修前後のテスト用オブジェクトコードのレコードを抽出し、該抽出したレコードのモジュール名及びメソッド名と、該抽出したレコードの上位レコードの上位モジュール名及び上位メソッド名を前記処理フローデータベースに格納した処理フロー情報の階層及び処理順を参照して抽出し、該抽出した複数のモジュール名及びメソッド名並びに上位モジュール名及び上位メソッド名を担当用コンピュータに表示させる実行結果比較機能とを実現させることを特徴とするデグレードテスト支援プログラム。
【請求項１０】
前記実行結果データベースが、改修前テスト用オブジェクトコードの実行により出力された変数を格納する改修前実行結果データベースと、改修後テスト用オブジェクトコードの実行により出力された変数を格納する改修後実行結果データベースとを含み、
前記実行結果比較機能において、前記コンピュータシステムに、改修前実行結果データベース及び改修後実行結果データベース個々のモジュール名とメソッド名と行数と変数名と値のフィールドを等結合する機能と、前記値のフィールドが異なるレコードを実行結果の変数の値に差異があるレコードとして抽出させる機能とを実現させることを特徴とする請求項９記載のデグレードテスト支援プログラム。
【請求項１１】
前記処理フローデータベースが、改修前ソースのモジュール又はメソッドの階層と処理順とを含む改修前処理フロー情報を格納する改修前処理フローデータベースと、改修後ソースのモジュール又はメソッドの階層と処理順とを含む改修後処理フロー情報を格納する改修後処理フローデータベースとを含み、
前記コンピュータシステムに、改修前処理フローデータベースに格納した改修前ソースのモジュール又はメソッドの階層と処理順とに基づいてモジュール及びメソッド間のやりとりを時間軸に沿って表現する階層前シーケンス図を生成する機能と、前記改修後処理フローデータベースに格納した改修後ソースのモジュール又はメソッドの階層と処理順とに基づいてモジュール及びメソッド間のやりとりを時間軸に沿って表現する階層後シーケンス図を生成する機能と、前記実行結果比較機能により抽出した実行結果の変数の値に差異があるレコードのモジュール又はメソッドの色を変化させたシーケンス図を担当用コンピュータに表示させる機能を実現させることを特徴とする請求項９及び請求項１０記載のデグレードテスト支援プログラム。
【請求項１２】
前記コンピュータシステムに、階層データベースからデグレード発生箇所の対象モジュール名及び対象メソッド名を上位対象モジュール名及び上位対象メソッド名として抽出する上位抽出機能と、前記階層データベースから前記上位対象モジュール名及び上位対象メソッド名を階層構造の親とする下位対象モジュール名及び下位対象メソッド名とを抽出する下位抽出機能と、該下位抽出機能を前記下位対象モジュール名及び下位対象メソッド名がソースの最終行でないと判定するまで繰り返す繰り返し機能とを実行させ、前記上位抽出機能及び下位抽出機能によって抽出した対象モジュール名及び対象メソッド名とに基づいてデグレード発生箇所の対象モジュール名及び対象メソッド名が影響を及ぼす呼び出し先一覧情報を作成して表示機能とを実現させ呼び出し先一覧抽出機能を設けたことを特徴とする請求項９から１１何れかに記載のデグレードテスト支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータのソフトウェアをバージョンアップした際に品質がバージョンアップ前より悪くなることや修正した不具合やバグが再発・復活するデグレードを試験することができるデグレードテスト支援システム、デグレードテスト支援方法及びデグレードテスト支援プログラムに係り、特にデグレードテスト作業工数削減及びデグレード発生時の調査作業工数を削減することができるデグレードテスト支援システム、デグレードテスト支援方法及びデグレードテスト支援プログラムに関する。
【背景技術】
【０００２】
一般にデグレードとは、ソフトウェアをバージョンアップした際に品質がバージョンアップ前より悪くなることや修正した不具合やバグが再発・復活することを意味し、ソフトウェア開発企業等においては、このデグレードが発生したか否かを試験するためのデグレードテストが行われている。
【０００３】
このデグレードテストに関する技術が記載された文献としては、下記の特許文献１及び２が挙げられ、該特許文献１には、改善前後のプログラムを実行するステップと、改善前プログラムによる実行結果とそのジャーナルを改善前ＤＢ（データベース）及び改善前ジャーナルに格納するステップと、改善後プログラムによる実行結果及びそのジャーナルを改善後ＤＢ（データベース）並びに改善後ジャーナルとに格納するステップと、改善前後のＤＢ及びジャーナルを比較するステップと、比較の結果、不一致データ項目名が作成済みの改善項目内容ＤＢにあるか否かを判定するステップと、不一致データ項目名があると判定したときに警告を発するステップと、不一致データ項目名が改善対象データ項目にないと判定したときにエラー表示してＤＢのキーとプログラム改善前後のデータ項目名とプログラム改善前後の内容をデグレード判別結果ファイルに出力するステップとを実行することによって、改修前後プログラムにおける当該プログラムのデグレード有無を効率よく検証及び確認する技術が記載され、特許文献２には、バージョンアップ前の当初ソフトウェアを第１コンピュータシステムに搭載し、検査員がキーボード及びマウスを使ってテストを行い、このテスト結果をコンバートして表示部に表示し、こうして得たテスト手順及びテスト結果をコンバートして第１コンピュータシステム内に電子ファイル化して格納し、バグ検出があれば第３コンピュータシステムに収集したバグ関連情報を第２コンピュータシステム内に格納することによって、当初のソフトウェアのテスト内容を学習すると共に、バージョンアップソフトウェアを第１コンピュータシステムに搭載して同一テストを行う場合は、上記学習結果であるテスト手順を読出して自動的なテストを行い、このテスト結果も、上記ファイル化したテスト結果と比較することでチェックし、バグ関連情報もバグ検出時には利用して点検に供する技術が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−２７６０４０号公報
【特許文献２】特開平８−２１２１０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前述の特許文献１に記載の技術は、改修前後プログラムにおける当該プログラムのデグレード有無を効率よく検証、確認することができ、特許文献２に記載の技術は、改修前後プログラムのテスト内容を電子ファイル化し、デグレード検出を効率的に確認することができるものの、デグレード発生タイミングやデグレード発生箇所を確認することが考慮されておらず、プログラム設計書の見直し及びソースの解析が必要となるという課題と、デグレードが発生したメソッドを参照しているモジュールを確認することが考慮されておらず、影響範囲の特定に漏れが発生する可能性があるという課題があった。
【０００６】
特に近年においては、システム開発案件において短納期や高品質化の要求が高まっており、その中で大規模システムの改修作業ではデグレードテストにおける工数が大きなウェイトを占め、デグレードが発生した場合の発生箇所の特定や影響範囲の特定にも膨大な工数が費やされ、工程の圧迫が課題となっている。
【０００７】
本発明の目的は、前述の従来技術による課題を解決しようとするものであり、デグレード発生タイミングやデグレード発生箇所を判定すると共にデグレードが発生したメソッドを参照しているモジュールを判定して表示することができるデグレードテスト支援システム、デグレードテスト支援方法及びデグレードテスト支援プログラムを提供することである。
【０００８】
本発明の他の目的は、デグレードテストの作業工数削減およびデグレードチェックの漏れを防止すること、また、デグレード発生時の調査作業の軽減や手戻り作業の軽減を可能とするデグレードテスト支援システム、デグレードテスト支援方法及びデグレードテスト支援プログラムを提供することである。
【課題を解決するための手段】
【０００９】
前記目的を達成するため本発明は、階層構造のモジュール及びメソッドを含む改修後のソースをテストするための担当用コンピュータと接続され、改修前後のソースを参照して改修後のソースにデグレードが発生したか否かを試験するデグレードテスト支援システムであって、
前記改修前後のソースを格納するソースデータベースと、
前記改修前後のソースのモジュール又はメソッドの階層と処理順とを含む処理フロー情報を格納する処理フローデータベースと、
前記改修前後のソースの各ステップが参照する変数を格納する実行結果データベースと、
前記改修前後のソースのステップ毎に処理実行順を出力させる処理順出力機能及び前記ステップで参照可能な変数を出力させる変数値出力機能を埋め込んだ改修前後のテスト用ソースを生成するテスト用ソース生成部と、
前記改修前後のテスト用ソースから改修前後のテスト用オブジェクトコードを生成するコンパイル部と、
前記改修前後のテスト用オブジェクトコードを実行し、前記処理順出力機能によって出力された処理フロー情報を前記処理フローデータベースに格納すると共に前記変数値出力機能によって出力された変数を前記実行結果データベースに格納するテスト実行部と、
前記実行結果データベースから実行結果の変数の値に差異がある前記改修前後のテスト用オブジェクトコードのレコードを抽出し、該抽出したレコードのモジュール名及びメソッド名と、該抽出したレコードの上位レコードの上位モジュール名及び上位メソッド名を前記処理フローデータベースに格納した処理フロー情報の階層及び処理順を参照して抽出し、該抽出した複数のモジュール名及びメソッド名並びに上位モジュール名及び上位メソッド名を担当用コンピュータに表示させる実行結果比較部とを備えることを第１の特徴とする。
【００１０】
また、本発明は、前記第１の特徴のデグレードテスト支援システムにおいて、前記実行結果データベースが、改修前テスト用オブジェクトコードの実行により出力された変数を格納する改修前実行結果データベースと、改修後テスト用オブジェクトコードの実行により出力された変数を格納する改修後実行結果データベースとを含み、
前記実行結果比較部が、改修前実行結果データベース及び改修後実行結果データベース個々のモジュール名とメソッド名と行数と変数名と値のフィールドを等結合し、前記値のフィールドが異なるレコードを実行結果の変数の値に差異があるレコードとして抽出することを第２の特徴とする。
【００１１】
また、本発明は、前記何れかの特徴のデグレードテスト支援システムにおいて、前記処理フローデータベースが、改修前ソースのモジュール又はメソッドの階層と処理順とを含む改修前処理フロー情報を格納する改修前処理フローデータベースと、改修後ソースのモジュール又はメソッドの階層と処理順とを含む改修後処理フロー情報を格納する改修後処理フローデータベースとを含み、
前記改修前処理フローデータベースに格納した改修前ソースのモジュール又はメソッドの階層と処理順とに基づいてモジュール及びメソッド間のやりとりを時間軸に沿って表現する階層前シーケンス図を生成し、前記改修後処理フローデータベースに格納した改修後ソースのモジュール又はメソッドの階層と処理順とに基づいてモジュール及びメソッド間のやりとりを時間軸に沿って表現する階層後シーケンス図を生成し、前記実行結果比較部により抽出した実行結果の変数の値に差異があるレコードのモジュール又はメソッドの色を変化させて担当用コンピュータに表示させるシーケンス図生成部を備えることを第３の特徴とする。
【００１２】
また、本発明は、前記何れかの特徴のデグレードテスト支援システムにおいて、階層データベースからデグレード発生箇所の対象モジュール名及び対象メソッド名を上位対象モジュール名及び上位対象メソッド名として抽出する上位抽出工程と、前記階層データベースから前記上位対象モジュール名及び上位対象メソッド名を階層構造の親とする下位対象モジュール名及び下位対象メソッド名とを抽出する下位抽出工程と、該下位抽出工程を前記下位対象モジュール名及び下位対象メソッド名がソースの最終行でないと判定するまで繰り返す繰り返し工程とを実行し、前記上位抽出工程及び下位抽出工程によって抽出した対象モジュール名及び対象メソッド名とに基づいてデグレード発生箇所の対象モジュール名及び対象メソッド名が影響を及ぼす呼び出し先一覧情報を作成して表示する呼び出し先一覧抽出部を設けたことを第４の特徴とする。
【００１３】
更に、本発明は、階層構造のモジュール及びメソッドを含む改修後のソースをテストするための担当用コンピュータと接続され、改修前後のソースを格納するソースデータベースと、前記改修前後のソースのモジュール又はメソッドの階層と処理順とを含む処理フロー情報を格納する処理フローデータベースと、前記改修前後のソースの各ステップが参照する変数を格納する実行結果データベースとを備え、前記改修前後のソースを参照して改修後のソースにデグレードが発生したか否かを試験するコンピュータシステムのデグレードテスト支援方法であって、
該コンピュータシステムが、
前記改修前後のソースのステップ毎に処理実行順を出力させる処理順出力機能及び前記ステップで参照可能な変数を出力させる変数値出力機能を埋め込んだ改修前後のテスト用ソースを生成するテスト用ソース生成工程と、
前記改修前後のテスト用ソースから改修前後のテスト用オブジェクトコードを生成するコンパイル工程と、
前記改修前後のテスト用オブジェクトコードを実行し、前記処理順出力機能によって出力された処理フロー情報を前記処理フローデータベースに格納すると共に前記変数値出力機能によって出力された変数を前記実行結果データベースに格納するテスト実行工程と、
前記実行結果データベースから実行結果の変数の値に差異がある前記改修前後のテスト用オブジェクトコードのレコードを抽出し、該抽出したレコードのモジュール名及びメソッド名と、該抽出したレコードの上位レコードの上位モジュール名及び上位メソッド名を前記処理フローデータベースに格納した処理フロー情報の階層及び処理順を参照して抽出し、該抽出した複数のモジュール名及びメソッド名並びに上位モジュール名及び上位メソッド名を担当用コンピュータに表示させる実行結果比較工程とを実行することを第５の特徴とする。
【００１４】
また、本発明は、前記第５の特徴のデグレードテスト支援方法において、前記実行結果データベースが、改修前テスト用オブジェクトコードの実行により出力された変数を格納する改修前実行結果データベースと、改修後テスト用オブジェクトコードの実行により出力された変数を格納する改修後実行結果データベースとを含み、
前記コンピュータシステムが、前記実行結果比較工程において、改修前実行結果データベース及び改修後実行結果データベース個々のモジュール名とメソッド名と行数と変数名と値のフィールドを等結合し、前記値のフィールドが異なるレコードを実行結果の変数の値に差異があるレコードとして抽出することを第６の特徴とする。
【００１５】
また、本発明は、前記何れかの特徴のデグレードテスト支援方法において、前記処理フローデータベースが、改修前ソースのモジュール又はメソッドの階層と処理順とを含む改修前処理フロー情報を格納する改修前処理フローデータベースと、改修後ソースのモジュール又はメソッドの階層と処理順とを含む改修後処理フロー情報を格納する改修後処理フローデータベースとを含み、
前記コンピュータシステムが、改修前処理フローデータベースに格納した改修前ソースのモジュール又はメソッドの階層と処理順とに基づいてモジュール及びメソッド間のやりとりを時間軸に沿って表現する階層前シーケンス図を生成し、前記改修後処理フローデータベースに格納した改修後ソースのモジュール又はメソッドの階層と処理順とに基づいてモジュール及びメソッド間のやりとりを時間軸に沿って表現する階層後シーケンス図を生成し、前記実行結果比較工程により抽出した実行結果の変数の値に差異があるレコードのモジュール又はメソッドの色を変化させて担当用コンピュータに表示させるシーケンス図生成工程を実行することを第７の特徴とする。
【００１６】
また、本発明は、前記何れかの特徴のデグレードテスト支援方法において、前記コンピュータシステムが、階層データベースからデグレード発生箇所の対象モジュール名及び対象メソッド名を上位対象モジュール名及び上位対象メソッド名として抽出する上位抽出工程と、前記階層データベースから前記上位対象モジュール名及び上位対象メソッド名を階層構造の親とする下位対象モジュール名及び下位対象メソッド名とを抽出する下位抽出工程と、該下位抽出工程を前記下位対象モジュール名及び下位対象メソッド名がソースの最終行でないと判定するまで繰り返す繰り返し工程とを実行し、前記上位抽出工程及び下位抽出工程によって抽出した対象モジュール名及び対象メソッド名とに基づいてデグレード発生箇所の対象モジュール名及び対象メソッド名が影響を及ぼす呼び出し先一覧情報を作成して表示する工程とを実行する呼び出し先一覧抽出を行うことを第８の特徴とする。
【００１７】
更に、本発明は、階層構造のモジュール及びメソッドを含む改修後のソースをテストするための担当用コンピュータと接続され、改修前後のソースを格納するソースデータベースと、前記改修前後のソースのモジュール又はメソッドの階層と処理順とを含む処理フロー情報を格納する処理フローデータベースと、前記改修前後のソースの各ステップが参照する変数を格納する実行結果データベースとを備え、前記改修前後のソースを参照して改修後のソースにデグレードが発生したか否かを試験するコンピュータシステムのデグレードテスト支援プログラムであって、
該コンピュータシステムに、
前記改修前後のソースのステップ毎に処理実行順を出力させる処理順出力機能及び前記ステップで参照可能な変数を出力させる変数値出力機能を埋め込んだ改修前後のテスト用ソースを生成するテスト用ソース生成機能と、
前記改修前後のテスト用ソースから改修前後のテスト用オブジェクトコードを生成するコンパイル機能と、
前記改修前後のテスト用オブジェクトコードを実行し、前記処理順出力機能によって出力された処理フロー情報を前記処理フローデータベースに格納すると共に前記変数値出力機能によって出力された変数を前記実行結果データベースに格納するテスト実行機能と、
前記実行結果データベースから実行結果の変数の値に差異がある前記改修前後のテスト用オブジェクトコードのレコードを抽出し、該抽出したレコードのモジュール名及びメソッド名と、該抽出したレコードの上位レコードの上位モジュール名及び上位メソッド名を前記処理フローデータベースに格納した処理フロー情報の階層及び処理順を参照して抽出し、該抽出した複数のモジュール名及びメソッド名並びに上位モジュール名及び上位メソッド名を担当用コンピュータに表示させる実行結果比較機能とを実現させることを第９の特徴とする。
【００１８】
また、本発明は、前記第９の特徴のデグレードテスト支援プログラムにおいて、前記実行結果データベースが、改修前テスト用オブジェクトコードの実行により出力された変数を格納する改修前実行結果データベースと、改修後テスト用オブジェクトコードの実行により出力された変数を格納する改修後実行結果データベースとを含み、
前記実行結果比較機能において、前記コンピュータシステムに、改修前実行結果データベース及び改修後実行結果データベース個々のモジュール名とメソッド名と行数と変数名と値のフィールドを等結合する機能と、前記値のフィールドが異なるレコードを実行結果の変数の値に差異があるレコードとして抽出させる機能とを実現させることを第１０の特徴とする。
【００１９】
また、本発明は、前記何れかの特徴のデグレードテスト支援プログラムにおいて、前記処理フローデータベースが、改修前ソースのモジュール又はメソッドの階層と処理順とを含む改修前処理フロー情報を格納する改修前処理フローデータベースと、改修後ソースのモジュール又はメソッドの階層と処理順とを含む改修後処理フロー情報を格納する改修後処理フローデータベースとを含み、
前記コンピュータシステムに、改修前処理フローデータベースに格納した改修前ソースのモジュール又はメソッドの階層と処理順とに基づいてモジュール及びメソッド間のやりとりを時間軸に沿って表現する階層前シーケンス図を生成する機能と、前記改修後処理フローデータベースに格納した改修後ソースのモジュール又はメソッドの階層と処理順とに基づいてモジュール及びメソッド間のやりとりを時間軸に沿って表現する階層後シーケンス図を生成する機能と、前記実行結果比較機能により抽出した実行結果の変数の値に差異があるレコードのモジュール又はメソッドの色を変化させたシーケンス図を担当用コンピュータに表示させる機能を実現させることを第１１の特徴とする。
【００２０】
また、本発明は、前記何れかの特徴のデグレードテスト支援プログラムにおいて、前記コンピュータシステムに、階層データベースからデグレード発生箇所の対象モジュール名及び対象メソッド名を上位対象モジュール名及び上位対象メソッド名として抽出する上位抽出機能と、前記階層データベースから前記上位対象モジュール名及び上位対象メソッド名を階層構造の親とする下位対象モジュール名及び下位対象メソッド名とを抽出する下位抽出機能と、該下位抽出機能を前記下位対象モジュール名及び下位対象メソッド名がソースの最終行でないと判定するまで繰り返す繰り返し機能とを実行させ、前記上位抽出機能及び下位抽出機能によって抽出した対象モジュール名及び対象メソッド名とに基づいてデグレード発生箇所の対象モジュール名及び対象メソッド名が影響を及ぼす呼び出し先一覧情報を作成して表示機能による呼び出し先一覧抽出機能を実現させることを第１２の特徴とする。
【発明の効果】
【００２１】
本発明によるデグレードテスト支援システム、デグレードテスト支援方法及びデグレードテスト支援プログラムは、改修前後のソースのステップ毎に処理実行順を出力させる処理順出力機能及び前記ステップで参照可能な変数を出力させる変数値出力機能を埋め込んだ改修前後のテスト用ソースを生成するテスト用ソース生成部と、前記改修前後のテスト用オブジェクトコードを実行した際に出力された処理フロー情報を処理フローデータベースに格納すると共に出力された変数を実行結果データベースに格納するテスト実行部と、実行結果データベースから実行結果の変数の値に差異がある改修前後のテスト用オブジェクトコードのレコードを抽出し、該抽出したレコードのモジュール名及びメソッド名と、該抽出したレコードの上位レコードの上位モジュール名及び上位メソッド名を処理フローデータベースに格納した処理フロー情報の階層及び処理順を参照して抽出し、該抽出した複数のモジュール名及びメソッド名並びに上位モジュール名及び上位メソッド名を担当用コンピュータに表示させる実行結果比較部とを備えたことによって、デグレード発生タイミングやデグレード発生箇所を判定することができる。
【００２２】
更に、本発明は、階層データベースからデグレード発生箇所の対象モジュール名及び対象メソッド名を上位対象モジュール名及び上位対象メソッド名として抽出し、該抽出した上位対象モジュール名及び上位対象メソッド名に対して下層の下位対象モジュール名及び下位対象メソッド名を抽出し、これら抽出したモジュール名及び対象メソッド名に基づいてデグレード発生箇所の対象モジュール名及び対象メソッド名が影響を及ぼす呼び出し先一覧情報を作成することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施形態によるデグレードテスト支援システムの構成を示す図。
【図２】本実施形態によるデグレードテスト支援システムの概略動作を説明するための図。
【図３】本実施形態によるソース解析部の処理フローを示す図。
【図４】本実施形態によるモジュール関連分析部の処理フローを示す図。
【図５】本実施形態によるモジュール階層分析部の処理フローを示す図。
【図６】本実施形態によるテスト用ソース生成部の処理フローを示す図。
【図７】本実施形態による実行結果比較部の処理フローを示す図。
【図８】本実施形態によるシーケンス図生成部の処理フローを示す図。
【図９】本実施形態による呼び出し先の一覧抽出機能部の処理フローを示す図。
【図１０】本実施形態によるソースデータベースを説明するための図。
【図１１】本実施形態による変数データベースを説明するための図。
【図１２】本実施形態による関連データベースを説明するための図。
【図１３】本実施形態による階層データベースを説明するための図。
【図１４】本実施形態による処理フローデータベースを説明するための図。
【図１５】本実施形態による実行結果データベースを説明するための図。
【図１６】本実施形態による出力結果が異なる情報を一覧表示する画面イメージ図。
【図１７】本実施形態によるシーケンス図の表示画面イメージ図。
【図１８】本実施形態によるソース内容表示画面イメージ図。
【図１９】本実施形態による呼び出し先の抽出一覧画面イメージ図。
【図２０】本実施形態による画面遷移図。
【発明を実施するための形態】
【００２４】
以下、本発明によるデグレードテスト支援方法及びデグレードテスト支援プログラムを実現するデグレードテスト支援システムの一実施形態を図面を参照して詳細に説明する。
【００２５】
［構成］
本実施形態によるデグレードテスト支援システムは、図１に示す如く、デグレードテスト担当用のコンピュータ（ＰＣ）０２１とネットワーク９０を介して接続されるサーバ００１内に構築され、改修前後のプログラムのソースの内容を格納するソースデータベース（ＤＢ）０１５と、該ソースのモジュール又はメソッドが参照する変数の内容を格納する変数データベース（ＤＢ）０１６と、前記モジュール又はメソッドからの呼び出し元及び呼び出し先の情報を格納する関連データベース（ＤＢ）０１７と、プログラムを構成するモジュールの最上位モジュールから最下位モジュールまでの階層情報を格納する階層データベース（ＤＢ）０１８と、改修前後のモジュール又はメソッドの階層と処理順とを含む処理フロー情報を格納する処理フローデータベース（ＤＢ）０１９と、各ステップで参照可能な変数の値を格納する実行結果データベース（ＤＢ）０２０と、改修前後のソースからソース内容及び変数の内容を登録するソース解析部００２と、改修前後のソースからメソッド呼び出し箇所を抽出したモジュール関連情報を登録するモジュール関連分析部００３と、前記関連ＤＢ０１７から各モジュールの階層情報を登録するモジュール階層分析部００４と、改修前後のソースからテスト用ソースを生成するテスト用ソース生成部００５と、テスト用ソースから既存の技術を利用してテスト用のオブジェクトコードを生成するコンパイル部００６と、実行結果を比較し実行結果の差異が発生した箇所を抽出する実行結果比較部００７と、改修前後のシーケンス図を生成するシーケンス図生成部００８と、該当モジュールの呼び出し先を抽出する呼び出し先一覧抽出部００９とを備える。なお、本実施形態で述べるプログラムとは、階層構造のモジュール及びメソッドを含み、これらモジュール及びメソッドの纏まりをソース（コード）と呼び、階層構造のモジュール及びメソッド間のやりとりを時間軸に沿って表現する図をシーケンス図と呼ぶ。
【００２６】
前記ソースＤＢ０１５は、デグレードテストの対象となるプログラムのソース（コード）を格納するものであって、図１０（ａ）に示す如く、ユニークに採番された識別子であるＩＤと、バージョンアップ等による改修前（フラグ「０」）と改修後（フラグ「１」）を区別するための区分と、ソースのモジュール名と、ソースの「振る舞い」を表すメソッドのメソッド名と、ソースの行数と、該当行のソースを格納するコードとの各項目情報とから成り、具体的には、図１０（ｂ）に示す如く、ＩＤ「１」のソースが、区分が「０」、モジュール名が「ＸＸＸ」、メソッド名が「ＸＸＸ０１」、行数が「１」、コードが「ＸＸＸ０１＿ｓｔｅｐ０１」であり、ＩＤ「２」のソースが、区分が「０」、モジュール名が「ＸＸＸ」、メソッド名が「ＸＸＸ０１」、行数が「２」、コードが「ＸＸＸ０１＿ｓｔｅｐ０２」の如く格納されている。
【００２７】
前記変数ＤＢ０１６は、前記ソースが実行中に参照する変数名及び変数値を格納するものであって、図１１（ａ）に示す如く、ユニークに採番された識別子であるＩＤと、バージョンアップ等による改修前（フラグ「０」）と改修後（フラグ「１」）を区別するための区分と、ソースのモジュール名と、ソースの「振る舞い」を表すメソッドのメソッド名と、ソースの行数と、該当行のソースが参照する変数名と、ソースにより宣言されているデータ型と、参照される範囲を表すレベル（他モジュールからの参照可が「１」、同一モジュール内のみで参照可が「２」、当該メソッド内のみで参照可が「３」）との各項目情報とから成り、具体的には、図１１（ｂ）に示す如く、ＩＤ「３」のソースが、区分が「０」、モジュール名が「ＹＹＹ」、メソッド名が「ｙｙｙ０１」、行数が「４」、変数名が「ｖ＿ｙｙｙ＿０２」、データ型が「Ｓｔｒｉｎｇ」、レベルが「３」であり、ＩＤ「４」のソースが、区分が「０」、モジュール名が「ＹＹＹ」、メソッド名が「ｙｙｙ０２」、行数が「９」、変数名が「ｖ＿ｙｙｙ＿０３」、データ型が「Ｓｔｒｉｎｇ」、レベルが「３」の如く格納されている。
【００２８】
前記関連ＤＢ０１７は、呼びだし元の親モジュール又は親メソッドと呼び出し先の子モジュール又は子メソッドとの関連を格納するものであって、図１２（ａ）に示す如く、ユニークに採番された識別子であるＩＤと、バージョンアップ等による改修前（フラグ「０」）と改修後（フラグ「１」）を区別するための区分と、呼びだし元の親モジュール名と、呼びだし元の親メソッド名と、前記親モジュールの行数を表す親＿行数と、呼び出し先のモジュール名である子＿モジュール名と、呼び出し先のメソッド名である子＿メソッド名との各項目情報とから成り、具体的には、図１２（ｂ）に示す如く、ＩＤ「１」且つ区分「０」の親モジュール名「ＸＸＸ」のモジュールの親メソッド名が「ｘｘｘ０１」、親＿行数が「４」、子＿モジュール名が「ＹＹＹ」、子＿メソッド名が「ｙｙｙ０１」であり、ＩＤ「５」且つ区分「０」の親モジュール名「ＷＷＷ」のモジュールの親メソッド名が「ｗｗｗ０１」、親＿行数が「１０」、子＿モジュール名が「ＺＺＺ」、子＿メソッド名が「ｚｚｚ０１」の如く格納されている。
【００２９】
前記階層ＤＢ０１８は、ソースを構成するモジュール及びメソッド中の最上位モジュール・最上位メソッドから最下位モジュール・最下位メソッドまでの階層構造を格納するものであって、図１３（ａ）に示す如く、ユニークに採番された識別子であるＩＤと、バージョンアップ等による改修前（フラグ「０」）と改修後（フラグ「１」）を区別するための区分と、プログラム階層構造の最上位のモジュール名を表す基準＿モジュール名と、プログラム階層構造の最上位のメソッド名である基準＿メソッド名と、プログラムの階層位置を表す階層（最上位モジュールの場合「１」）と、呼び出し元のモジュール名を表す親＿モジュール名と、呼び出し元のメソッド名を表す親＿メソッド名と、呼び出し元の行数を表す親＿行数と、呼び出し先のモジュール名を表す子＿モジュール名と、呼び出し先のメソッド名を表す子＿メソッド名の各項目情報とから成り、具体的には、図１３（ｂ）に示す如く、ＩＤ「１」且つ区分「０」のモジュールの基準＿モジュール名が「ＸＸＸ」、基準＿メソッド名が「ｘｘｘ０１」、階層が「１」、親＿モジュール名が「ＸＸＸ」、親＿メソッド名が「ｘｘ０１」、親＿行数が「４」、子＿モジュール名が「ＹＹＹ」、子＿メソッド名が「ｙｙｙ０１」の如く格納されている。
【００３０】
前記処理フローＤＢ０１９は、改修前後のモジュール又はメソッドの階層とステップの処理順とを含む処理フロー情報を格納するものであって、図１４（ａ）に示す如く、ユニークに採番された識別子であるＩＤと、バージョンアップ等による改修前（フラグ「０」）と改修後（フラグ「１」）を区別するための区分と、プログラムの階層位置を表す階層（最上位モジュールが「１」、次階層が「２」・・・）と、処理が実行される順に割り当てられる連番を表す処理Ｎｏ（処理番号）と、呼び出し元の処理Ｎｏを表す上位処理Ｎｏ（上位処理番号）と、実行されたメソッドのモジュール名と、実行されたステップのメソッド名と、実行されたステップの行数と、ステップが実行される前に登録されたレコードを示すフラグである処理前Ｆと、ステップが実行された後に登録されたレコードを示すフラグである処理後Ｆと、各ステップの処理時間をｍｓ単位で表す時間との各項目情報とから成り、具体的には、図１４（ｂ）に示す如く、最初にＩＤ「１」・区分「０」・階層「１」・処理Ｎｏ「１」のモジュール名「ＸＸＸ」の行数「２」のメソッド「ｘｘｘ０１」が実行された後に、ＩＤ「２」〜「５」・区分「０」・階層「２」・処理Ｎｏ「２」及び「３」のモジュール名「ＹＹＹ」のメソッド「ｙｙｙ０１」が実行される等の改修前後の処理フロー情報を格納している。
【００３１】
前記実行結果ＤＢ０２０は、各ステップで参照可能な変数の値を格納するものであって、図１５に示す如く、ユニークに採番された識別子であるＩＤと、バージョンアップ等による改修前（フラグ「０」）と改修後（フラグ「１」）を区別するための区分と、処理が実行された順に割れ当てられる連番と、実行されたメソッドのモジュール名と、実行されたステップのメソッド名と、実行されたステップの行数と、ステップ実行による出力対象の変数名と、ステップ実行による出力対象の変数が要素数の場合に各要素の値を識別するための要素数と、変数の値の各項目情報とから成り、具体的には、図１５（ａ）及び（ｂ）に示す如く格納される。
【００３２】
［動作］
［全体動作］
次に、前述のように構成されたデグレードテスト支援システムの全体動作を説明するが、このデグレードテスト支援処理は、改修後のソースに大きなエラーが含まれる場合は、後述するコンパイル時又はテスト実行時に検出され、これらコンパイル時又はテスト実行時には発見されないデグレードのテストを対象とするものであって、改修前後の処理フローＤＢ０１９と実行結果ＤＢ０２０からデグレード発生箇所をリストアップし、改修前後のシーケンス図０３０及び０３１を生成し、差異が発生した箇所の色を変えて表示することにより利用者が発生箇所を容易に特定できるようにすると共に、デグレード発生箇所となるモジュールの呼び出し先のリストを表示して影響範囲を明確にするものである。
【００３３】
さて、本実施形態によるデグレードテスト支援システムは、まず、図２に示す如く、コンピュータ（ＰＣ）０２１を用いてデグレードテスト担当がネットワーク０２２を介して改修前ソース０２８及び改修後ソース０２９を入力０９１する工程と、該入力した改修前ソース０２８及び改修後ソース０２９並びに変数宣言部により判定した変数をソース解析部００２により解析してソースＤＢ０１５並びに変数ＤＢ０１６に登録する工程と、モジュール関連分析部００３が前記改修前ソース０２８及び改修後ソース０２９のモジュールの関連（呼びだし元の親モジュール又は親メソッドと呼び出し先の子モジュール又は子メソッドとの関連）を分析して前記関連ＤＢ０１７に格納する工程と、モジュール階層分析部００４がモジュールの階層構造（プログラムを構成する最上位モジュールから最下位モジュールまでの階層構造）を階層ＤＢ０１８に格納する工程と、テスト用ソース生成部００５が、改修前後のソースのステップ毎に処理実行順を追跡する為の情報を出力させる処理順出力機能（サブプログラム）及び前記ステップで参照可能な変数の値を出力させる変数値出力機能（サブプログラム）を埋め込んだ改修前ソース（テスト用）０１０及び改修後ソース（テスト用）０１１を生成する工程と、前記コンパイル部００６が該生成した改修前ソース（テスト用）０１０及び改修後ソース（テスト用）０１１をコンパイルした改修前オブジェクトコード（テスト用）０１２及び改修後オブジェクトコード（テスト用）０１３を生成する工程とを実行することによって、改修前後のソースに処理順出力機能及び変数値出力機能を埋め込んだテスト用のオブジェクトコードを生成するように動作する。
【００３４】
次いで、本実施形態によるデグレードテスト支援システムは、前記改修前後のプログラム（オブジェクトコード０１２及び０１３）に対してテスト実行部０２２及び０２３が予め定めたテストケースを実行する工程と、このテストケースを実行した際に前記処理順出力機能及び変数値出力機能を埋め込んだテスト用のオブジェクトコードから出力されるステップ毎の処理実行順及び該当ステップで参照可能な変数の値を処理フローＤＢ０１９並びに実行結果ＤＢ０２０に格納する工程と、実行結果比較部００７が前記処理フローＤＢ０１９並びに実行結果ＤＢ０２０に格納したステップ毎の処理実行順及び該当ステップで参照可能な変数の値に基づいてデグレード発生有無を後述の処理により判定して改修前後の出力結果が異なる情報を一覧表示０２４する工程と、デグレードが発生していると判定したときにシーケンス図生成部００８が改修前後のプログラムのシーケンス図を後述の処理により生成してデグレード発生箇所が一目で判るように実行結果が異なる箇所の色を変えて表示０２５する工程と、呼び出し先の一覧抽出部００９がデバッグ発生箇所となるモジュールの呼び出し先のリストを後述の処理により表示する工程とを実行する。
【００３５】
前記改修前後の出力結果が異なる情報を一覧表示０２４する工程による表示画面は、例えば図１６に示す如く、「呼び出し先一覧」としてモジュール及びメソッド「ＸＸＸ．ｘｘｘ０１（）」がモジュール及びメソッド「ＹＹＹ．ｙｙｙ０２（）」を呼び出し、該モジュール及びメソッド「ＹＹＹ．ｙｙｙ０２（）」が破線で示すモジュール及びメソッド「ＺＺＺ．ｚｚｚ０１（）」を呼び出し、このモジュール及びメソッド「ＺＺＺ．ｚｚｚ０１（）」が改修前後で異なることを色分け等によって表示される。
【００３６】
前記改修前後のプログラムのシーケンス図をデグレード発生箇所が一目で判るように実行結果が異なる箇所の色を変えて表示０２５する工程は、図１７に示す如く、左側の改修前のソースが、モジュール「ＸＸＸ」「ＹＹＹ」「ＺＺＺ」を備え、前記モジュール「ＸＸＸ」及びモジュール「ＹＹＹ」との間でメソッド「ｙｙｙ０１」〜メソッド「ｙｙｙ０３」の処理結果としてモジュール「ＺＺＺ」にメソッド「ｚｚｚ０１」の変数値を出力するシーケンスのとき、改修後のシーケンスに示す如く破線で示すメソッド「ｚｚｚ０１」の変数値が改修前と異なることを色分け等によって表示する。
【００３７】
これら画面表示は、図２０に示す如く、最初に「出力結果が異なる情報一覧画面を表示」０２４に続いて、「シーケンス図表示画面を表示」０２５及び「呼び出し先一覧画面を表示」０２６が行われ、最後に図１８に示した「ソース内容表示画面を表示」０２７に遷移するように表示させる。前記「ソース内容表示画面を表示」０２７による表示画面は、図１８に示す如く、画面右側に改修前のメソッド「ｚｚｚ０１」の各レコードと改修前のメソッド「ｚｚｚ０１」の各レコードとが表示され、本例の場合は、改修後のメソッド「ｚｚｚ０１」が実行するｓｔｅｐ０２の結果が異なることを色分け表示（図面では太字）される。
【００３８】
このように本実施形態によるデグレードテスト支援システム、デグレードテスト支援方法及びデグレードテスト支援プログラムは、改修前後のソースに処理順出力機能及び変数値出力機能を埋め込んだテスト用のオブジェクトコード０１２及び０１３を生成し、この生成したテスト用のオブジェクトコード０１２及び０１３の実行し、このテストケースを実行した際に前記処理順出力機能及び変数値出力機能を埋め込んだテスト用のオブジェクトコードから出力されるステップ毎の処理実行順及び該当ステップで参照可能な変数の値を処理フローＤＢ０１９並びに実行結果ＤＢ０２０に格納し、これら改修前後のオブジェクトコードから出力されるステップ毎の処理実行順及び該当ステップで参照可能な変数の値を比較することによってデグレード発生有無を判定し、図１６〜図１９に示したシーケンス図や呼び出し先を表示することによって、デグレード発生タイミングとデグレード発生箇所とデグレードが発生したメソッドを参照しているモジュールとを判定して表示することができる。
【００３９】
［詳細動作］
次に前述した各処理部の詳細動作について説明する。
【００４０】
［ソース解析部００２動作］
前記ソース解析部００２により解析した改修前ソース０２８及び改修後ソース０２９をソースＤＢ０１５に格納すると共に変数宣言部を解析した変数を変数ＤＢ０１６に登録する工程は、図３に示す如く、ソースファイルを読み込むステップＳ３０１と、該ステップＳ３０１により読み込んだソースのレコードが最終行か否かを判定し、最終行と判定したときに処理を終了するステップＳ３０２と、該ステップＳ３０２により最終行でないと判定したとき、カレント（現在の）行を読み込むステップＳ３０３と、該ステップＳ３０３により読み込んだカレント行の内容をソースＤＢ０１５へ格納するステップＳ３０４と、前記カレント行が変数宣言部か判定し、変数宣言部でないと判定したときに前記ステップＳ３０２に戻るステップＳ３０６と、該ステップＳ３０６において変数宣言部であると判定したとき、該変数宣言部により宣言された変数の内容を変数ＤＢ０１６へ格納して前記ステップＳ３０７とを実行することによって、改修前後のソース及び変数を抽出して図１０及び図１１の如くソースＤＢ０１５及び変数ＤＢ０１６に登録することができる。
【００４１】
［モジュール関連分析部００３動作］
前記モジュール関連分析部００３による改修前ソース０２８及び改修後ソース０２９のモジュールの関連（呼びだし元の親モジュール又は親メソッドと呼び出し先の子モジュール又は子メソッドとの関連）を分析して関連ＤＢ０１７に格納する工程は、図４に示す如く、ソースファイルを読み込むステップＳ４０１と、該ステップＳ４０１により読み込んだソースのレコードが最終行か否かを判定し、最終行と判定したときに処理を終了するステップＳ４０２と、該ステップＳ４０２において最終行でないと判定したときにカレント行を読み込むステップＳ４０３と、該ステップＳ４０３により読み込んだカレント行が下位モール呼び出しのためのメソッド呼び出し箇所か否かを判定し、下位モール呼び出しでないと判定したときに前記ステップＳ４０２に戻るステップＳ４０４と、該ステップＳ４０４において下位モール呼び出しであると判定したときに当該カレント行に含まれる呼び出し元のモジュール名とメソッド名と呼び出し先のモジュール名とメソッド名とを関連ＤＢ０１７へ格納し、前記ステップＳ４０２に戻るステップＳ４０５とを実行することによって、親子モジュール及びモジュールの関連を図１２に示した如く関連ＤＢ０１７に格納することができる。
【００４２】
［モジュール階層分析部００４動作］
前記モジュール階層分析部００４によるモジュールの階層構造（プログラムを構成する最上位モジュールから最下位モジュールまでの階層構造）の経路を階層ＤＢ０１８に格納する工程は、図５に示す如く、モジュール階層分析部００４が、変数［ｖ＿Ｋａｉｓｏｕ］を宣言するステップＳ５０１と、変数の初期化のために変数［ｖ＿Ｋａｉｓｏｕ］に値「１」を代入するステップＳ５０２と、関連ＤＢ１０７から最上位モジュールを抽出し、関連ＤＢを別名「関連ＤＢ１」と「関連ＤＢ２」に設定し、該「関連ＤＢ１」の「親＿モジュール名」「親＿メソッド名」と「関連ＤＢ２」の「子＿モジュール名」「子＿メソッド名」の間で外部結合を行い、「関連ＤＢ１」のレコードに対して「関連ＤＢ２」のレコードが結合されないレコードを抽出するステップＳ５０４とを実行する。このステップＳ５０４による関連ＤＢ１０７から最上位モジュールを抽出する処理は、例えば、「関連ＤＢ１」の「親＿モジュール」と「関連ＤＢ２」の「子＿モジュール」とが親子関係で結合されている場合、前記「関連ＤＢ１」の「親＿モジュール」が更に上位のモジュールに結合されていないことの判定によって行われる。
【００４３】
次いで、本実施形態による階層構造の経路の抽出処理は、モジュール階層分析部００４が、前記ステップＳ５０４により抽出した最上位モジュールが最終レコードか否かを判定するステップＳ５０５と、該ステップＳ５０５において最終レコードでないと判定したとき、階層ＤＢ０１８の「階層」フィールドに変数［ｖ＿Ｋａｉｓｏｕ］の値を格納して前記ステップＳ５０５に戻るステップＳ５０６と、前記ステップＳ５０５において最終レコードと判定したとき、変数［ｖ＿Ｋａｉｓｏｕ］の値にプラス「１」して変数値をカウントアップするステップＳ５０８と、階層ＤＢ０１８からカレント階層モジュールを抽出（初回実行時は１階層目のデータを抽出し、２回目以降に実行する場合は、順次階層をカウントアップし、これをカレント階層に設定）するステップＳ５１０と、該ステップＳ５１０において階層ＤＢ０１８からレコードが抽出できたか判定し、レコードが抽出できないと判定したときに処理を終了するステップＳ５１１と、該ステップＳ５１１においてレコードが抽出できたと判定したときに最終レコードか否かを判定し、最終レコードと判定したときに前記ステップＳ５０８に戻るステップＳ５１２と、該ステップＳ５１２において最終レコードでないと判定したときに関連ＤＢ０１７から前記上位モジュールに対する次の下位モジュールを抽出するステップＳ５１４とを実行する。
【００４４】
このステップＳ５１４による下位モジュールの抽出は、前記ステップＳ５１０により抽出したカレントモジュール（「子＿モジュール名」「子＿メソッド名」）から関連ＤＢの「親＿モジュール名」「親＿メソッド名」を絞り込むことによって、本例ではステップＳ５０４内に図示した関連ＤＢ２の「子＿モジュール名」及び「子＿メソッド名」を判定することによって行われる。
【００４５】
次いで本実施形態による階層構造の経路の抽出処理は、前記ステップＳ５１４により抽出した下位モジュールが最終レコードか否かを判定し、最終レコードと判定したときに前記ステップＳ５１２に戻るステップＳ５１５と、該ステップＳ５１５において最終レコードでないと判定したとき、階層ＤＢ０１８の「階層」フィールドに変数［ｖ＿Ｋａｉｓｏｕ］の値を格納して前記ステップＳ５１５に戻るステップＳ５１６とを実行する。
【００４６】
これら一連の処理によって本実施形態によるモジュール階層分析部００４が関連ＤＢ１０７に格納した改修前後のソースプログラムに含まれるプログラムを構成する最上位モジュールから最下位モジュールまでの階層構造の経路をモジュール及びメソッドの親子関係に基づいて階層ＤＢ０１８に格納することができる。
【００４７】
前記テスト用ソース生成部００５によるテスト用ソースの生成処理は、ソースファイルの各ステップの前後に処理フローＤＢ０１９へデータ登録する処理順出力機能と各ステップ処理後に参照可能な変数の内容を実行結果ＤＢへ登録する変数値出力機能を追加したテスト用ソースを生成するものであって、図６に示す如く、ソースファイルを読み込むステップＳ６０１と、該読み込んだソースファイルが最終行か否かを判定するステップＳ６０２と、該ステップＳ６０２において最終行でないと判定したときにカレント行を読み込むステップＳ６０３と、該ステップＳ６０３により読み込んだカレント行が処理ステップか否かを判定するステップＳ６０４と、該ステップＳ６０４においてカレント行が処理ステップであると判定したときに処理フロー（処理順出力機能）用の開始ステップをテストソース６００の一時記憶領域へ格納するステップＳ６０５と、該ステップＳ６０５又は前記ステップＳ６０４において処理ステップでないと判定したとき、当該カレント行のソース（ステップ）をテストソース６００の一時記憶領域へ格納するステップＳ６０７と、カレント行が処理ステップか判定し、処理ステップでないと判定したときに前ステップＳ６０２に戻るステップＳ６０９と、該ステップＳ６０９においてカレント行が処理ステップであると判定したとき、処理フロー（処理順出力機能）終了ステップをテストソース６００一時記憶領域へ格納するステップＳ６１０と、変数ＤＢ０１６からカレント行において参照可能な変数を抽出するステップＳ６１３と、該ステップＳ６１３により抽出したカレント行が最終レコードか否かを判定し、最終レコードと判定したときに前記ステップＳ６０２に戻るステップＳ６１４と、該ステップＳ６１４において最終レコードでないと判定したとき、変数の値を出力する変数値出力機能をテストソース６００の一時記憶領域へ格納するステップＳ６１５と、前記ステップＳ６０２において読み込んだソースファイルが最終行であると判定したとき、前記テストソース６００から処理順出力機能及び変数値出力機能を埋め込んだテスト用ソース０１０及び０１１を出力するステップＳ６１８とを実行することによって、ソース実行に伴う処理フロー及び変数を出力するためのテスト用ソースを生成することができる。
【００４８】
［実行結果比較部００７動作］
前記実行結果比較部００７による処理フローＤＢ０１９並びに実行結果ＤＢ０２０に格納したステップ毎の処理実行順（処理フロー情報）及び該当ステップで参照可能な変数の値に基づいてデグレード発生有無を後述の処理により判定して改修前後の出力結果が異なる情報を一覧表示０２４する工程は、図７に示す如く、まず、変数［ｖ＿ＷｏｒｋＮｏ］（変数の変数名）を宣言するステップＳ７０１と、改修前後の実行結果ＤＢ０２０Ａ及び０２０Ｂを比較し、処理結果の変数の値に差異があるレコードを抽出するステップＳ７０４を実行する。
【００４９】
このステップＳ７０４は、実行結果ＤＢを別名の「実行結果（改修前）」及び「実行結果（改修後）」に設定し、「実行結果（改修前）」では、「区分」フィールドが「０：改修前」のデータを対象とし、「実行結果（改修後）」では、「区分」フィールドが「１：改修後」のデータを対象とし、それぞれのテーブルの「モジュール名」「メソッド名」「行数」「変数名」「要素数」フィールドで等結合を行い、「実行結果（改修前）」と「実行結果（改修後）」の「値」フィールドが異なるレコードを判定することによって抽出する。
【００５０】
これを図１５の実行結果ＤＢの改修前後を参照して具体的に説明すると、このステップＳ７０４は、図１５（ｂ）に示した改修前の実行結果ＤＢ０２０ＡのＩＤ「１６」〜「１８」のモジュール「ＺＺＺ」のメソッド「ｖ＿ｘｘｘ＿０１」とメソッド「ｖ＿ｚｚｚ＿０１」とメソッド「ｖ＿ｚｚｚ＿０２」が実行され、該メソッド「ｖ＿ｚｚｚ＿０２」の変数の値が「ｚ＿ｖａｌｕｅ＿０２」が出力されたのに対し、図１５（ｃ）に示した改修後の実行結果ＤＢ０２０ＢのＩＤ「１６」〜「１８」のモジュール「ＺＺＺ」のメソッド「ｖ＿ｘｘｘ＿０１」とメソッド「ｖ＿ｚｚｚ＿０１」とメソッド「ｖ＿ｚｚｚ＿０２」が実行され、該メソッド「ｖ＿ｚｚｚ＿０２」の変数の値が「ｚ＿ｖａｌｕｅ＿０３」が出力された場合、このメソッド「ｖ＿ｚｚｚ＿０２」の変数の値が異なるため、当該メソッド「ｖ＿ｚｚｚ＿０２」のレコードを「値」フィールドが異なるレコードとして判定する。
【００５１】
次いで、本実施形態による改修前後の出力結果が異なる情報を一覧表示０２４する工程は、前記ステップＳ７０４により抽出した「値」フィールドが異なるレコードが最終レコードか否かを判定するステップＳ７０５と、該ステップＳ７０５において最終レコードでないと判定したとき、変数［ｖ＿ＷｏｒｋＮｏ］に前記ステップＳ７０４で取得した処理ＮＯを格納（代入）するステップＳ７０６と、該ステップＳ７０６により格納した変数［ｖ＿ＷｏｒｋＮｏ］の値が空か否かを判定し、空であると判定したときに前記ステップＳ７０５に戻るステップＳ７０７と、該ステップＳ７０７において変数［ｖ＿ＷｏｒｋＮｏ］の値が空でないと判定したとき、処理フローＤＢ０１９から、処理フローＤＢ０１９の処理ＮＯが変数［ｖ＿Ｗｏｒｋ＿Ｎｏ］の値と等しいレコードの上位処理ＮＯを取得するステップＳ７０９と、該ステップＳ７０９により取得した変数［ｖ＿ＷｏｒｋＮｏ］に前記ステップＳ７０９で取得した処理ＮＯを格納（代入）するステップＳ７１０と、該ステップＳ７１０で格納した上位モジュールのモジュール名及びメソッド名を画面表示用の一時記憶領域に格納して前記ステップＳ７０７に戻るステップＳ７１１と、前記ステップＳ７０５において最終レコードであると判定したとき、前記画面表示用の一時記憶領域の内容を元に出力結果が異なる情報一覧表示画面を表示するステップＳ７１３とを実行することによって、実行結果が異なるデータに基づいて該実行結果が異なるモジュールの上位モジュールを抽出し図１６に示した如き画面を表示することができる。
【００５２】
［シーケンス図生成部００８動作］
前記シーケンス図生成部００８による改修前後のプログラムのシーケンス図を生成してデグレード発生箇所が一目で判るように実行結果が異なる箇所の色を変えて表示０２５する工程は、図８に示すように、改修前処理フローＤＢ０１９Ａから処理フロー情報（図１４）を抽出するステップＳ８０２と、該抽出した処理フロー情報のレコードが最終行か否かを判定するステップＳ８０３と、該ステップＳ８０３において最終行でないと判定したとき、カレントレコードの情報を元に改修前シーケンス図８１１（図１７左側図）を生成するステップＳ８０４と、前記した改修前後の実行結果ＤＢ０２０Ａ及び０２０Ｂからカレントレコードにおける改修前後の実行結果を抽出して比較するステップＳ８０８と、該比較の結果、改修前後の実行結果に差異があるか否かを判定し、差異がないと判定したときに前記ステップＳ８０３に戻るステップＳ８０９と、該ステップＳ８０９において差異があると判定したとき、差異があったカレント（現在）ステップの色を変更した改修前シーケンス図８１１を生成して前記ステップＳ８０３に戻るステップＳ８１０とを実行することによって、改修前処理フローの全行に対する実行結果値に変化が有ったか否かステップ毎に判定し、変化があったステップの色を変更することができる。
【００５３】
次いで、本実施形態によるシーケンス図生成部００８による実行結果が異なる箇所の色を変えて表示０２５する工程は、前記ステップＳ８０３において最終行であると判定したとき、改修後処理フローＤＢ０１９Ｂから処理フロー情報を抽出するステップＳ８１３と、該抽出した処理フロー情報のレコードが最終行か否かを判定するステップＳ８１４と、該ステップＳ８１４において最終行でないと判定したとき、カレントレコードの情報を元に改修後シーケンス図８１６（図１７右側図）を生成するステップＳ８１５と、前記した改修前後の実行結果ＤＢ０２０Ａ及び０２０Ｂからカレントレコードにおける改修前後の実行結果を抽出して比較するステップＳ８１９と、該比較の結果、改修前後の実行結果に差異があるか否かを判定し、差異がないと判定したときに前記ステップＳ８１４に戻るステップＳ８２０と、該ステップＳ８２０において差異があると判定したとき、差異があったカレント（現在）ステップの色を変更した改修後シーケンス図８２２を生成して前記ステップＳ８１４に戻るステップＳ８２１とを実行することによって、改修後処理フローの全行に対する実行結果値に変化が有ったか否かステップ毎に判定し、変化があったステップの色を変更することができる。
【００５４】
即ち、本実施形態によるシーケンス図生成部００８は、図１４に例示した改修前後の処理フロー情報に基づいて改修前後の処理フロー図を生成し、この生成した改修前後の処理フロー図に対してソースの実行結果の差異（変数内）を実行結果ＤＢ０２０Ａ及び０２０Ｂに基づいて判定し、差異があった変数値を出力したステップの該当箇所（例えば、図１７右側の破線部分）を色分け表示することによって、デグレード発生タイミングやデグレード発生箇所を管理者に目視可能に表示することができる。
【００５５】
［呼び出し先の一覧抽出部００９動作］
前記呼び出し先の一覧抽出部００９によるデバッグ発生箇所となるモジュールの呼び出し先のリストを後述の処理により表示する工程は、図９に示すように、変数［ｖ＿Ｍｏｄｕｌｅ］及び変数［ｖ＿Ｍｅｔｈｏｄ］を宣言するステップＳ９０１と、本処理の引数にデグレード発生箇所の対象モジュール名及び対象メソッド名を引き渡すために階層ＤＢ０１８から、階層ＤＢ．子＿モジュール名＝［対象モジュール名（デグレードが発生した対象モジュール名）］及び階層ＤＢ．子＿メソッド名＝［対象メソッド名（デグレードが発生した対象メソッド名）］の条件を満たすレコードを上位モジュールをとして抽出するステップＳ９０３と、該抽出したレコードが最終行か否かを判定するステップＳ９０４と、該ステップＳ９０４において最終行でないと判定したとき、呼び出し先のモジュール名及びメソッド名を画面表示用の一時記憶領域である呼び出し先モジュール一覧９０６に格納するステップＳ９０５と、前記上位モジュール抽出のステップＳ９０３で取得した親＿モジュール名、親＿メソッド名をそれぞれ変数［ｖ＿Ｍｏｄｕｌｅ］、［ｖ＿Ｍｅｔｈｏｄ］に格納（代入）するステップＳ９０７と、該ステップＳ９０７により格納した変数［ｖ＿Ｍｏｄｕｌｅ］又は変数［ｖ＿Ｍｅｔｈｏｄ］の何れか一方の値が空か否かを判定し、空白であると判定したときに前記ステップＳ９０４に戻るステップＳ９０８と、該ステップＳ９０８において空白でないと判定したとき、階層ＤＢ０１８から、階層ＤＢ．子＿モジュール名＝変数［ｖ＿Ｍｏｄｕｌｅ］及び階層ＤＢ．子＿メソッド名＝変数［ｖ＿Ｍｅｔｈｏｄ］の条件が一致する上位モジュールを抽出するステップＳ９１０と、該ステップＳ９１０により抽出した呼び出し先のモジュール名及びメソッド名を画面表示用の一時記憶領域である呼び出し先モジュール一覧９１２に格納するステップＳ９１１と、前記ステップＳ９０７で抽出した上位モジュール抽出処理で取得した親＿モジュール名、親＿メソッド名をそれぞれ変数［ｖ＿Ｍｏｄｕｌｅ］、［ｖ＿Ｍｅｔｈｏｄ］に格納し、前記ステップＳ９０８に戻るステップＳ９１３と、前記ステップＳ９０４において階層ＤＢ０１８から抽出したレコードが最終行と判定したとき、画面表示用の前記一時記憶領域の内容に基づいて呼び出し先の一覧表示画面９１５を生成するステップＳ９１４とを実行することによって、図１９に示した如き、デバッグ発生箇所となる破線で示すモジュール及びメソッド「ＺＺＺ．ｚｚｚ０１（）」を参照して影響を及ぼすモジュール及びメソッド「ＷＷＷ．ｗｗｗ０１（）」を表示することができる。即ち、デクレード発生箇所を起点として階層関係あるモジュール名及びメソッド名を抽出することによって、デグレードが影響を及ぼす他のモジュール名及びメソッド名を容易に表示することができる。
【００５６】
このように本実施形態によるデグレードテスト支援方法及びデグレードテスト支援プログラムを実現するデグレードテスト支援システムは、改修前後のソースのステップ毎に処理実行順を出力させる処理順出力機能及び前記ステップで参照可能な変数を出力させる変数値出力機能を埋め込んだ改修前後のテスト用ソースを生成するテスト用ソース生成部００５と、改修前後のテスト用オブジェクトコードを実行した際に出力された処理フロー情報を処理ＤＢ０１９に格納すると共に出力された変数を実行結果ＤＢ０２０に格納するテスト実行部０２２及び０２３と、実行結果ＤＢ０２０から実行結果の変数の値に差異がある改修前後のテスト用オブジェクトコードのレコードを抽出し、該抽出したレコードのモジュール名及びメソッド名と、該抽出したレコードの上位レコードの上位モジュール名及び上位メソッド名を処理フローデータベースに格納した処理フロー情報の階層及び処理順を参照して抽出し、該抽出した複数のモジュール名及びメソッド名並びに上位モジュール名及び上位メソッド名を担当用コンピュータ０２１の表示部に表示させる実行結果比較部００７とを備えたことによって、デグレード発生タイミングやデグレード発生箇所を判定することができ、階層ＤＢ０１８からデグレード発生箇所の対象モジュール名及び対象メソッド名を上位対象モジュール名及び上位対象メソッド名として抽出し、該抽出した上位対象モジュール名及び上位対象メソッド名に対して下層の下位対象モジュール名及び下位対象メソッド名を抽出し、これら抽出したモジュール名及び対象メソッド名に基づいてデグレード発生箇所の対象モジュール名及び対象メソッド名が影響を及ぼす範囲を表示する呼び出し先の一覧抽出部００９を設けたことによりデグレード影響範囲を容易に表示することができる。従って、本発明によれば、デグレードテストの作業工数削減およびデグレードチェックの漏れを防止し、デグレード発生時の調査作業の軽減や手戻り作業を軽減することができる。
【符号の説明】
【００５７】
０００  デグレード支援システム、００１  サーバ、００２  ソース解析部、
００３  モジュール関連分析部、００４  モジュール階層分析部、
００５  ソース生成機能部、００６  コンパイル部、００７  実行結果比較部、
００８  シーケンス図生成部、００９  呼び出し先の一覧抽出部、
０１０  改修前ソース（テスト用）、０１１  改修後ソース（テスト用）、
０１２  オブジェクトコード、０２１  デグレードテスト担当用のコンピュータ、
０２２  テスト実行部、９０  ネットワーク、０２８  改修前ソース、
０２９  改修後ソース
【図１】
2014032447.tif 000003
【図２】
2014032447.tif 000004
【図３】
2014032447.tif 000005
【図４】
2014032447.tif 000006
【図５】
2014032447.tif 000007
【図６】
2014032447.tif 000008
【図７】
2014032447.tif 000009
【図８】
2014032447.tif 000010
【図９】
2014032447.tif 000011
【図１０】
2014032447.tif 000012
【図１１】
2014032447.tif 000013
【図１２】
2014032447.tif 000014
【図１３】
2014032447.tif 000015
【図１４】
2014032447.tif 000016
【図１５】
2014032447.tif 000017
【図１６】
2014032447.tif 000018
【図１７】
2014032447.tif 000019
【図１８】
2014032447.tif 000020
【図１９】
2014032447.tif 000021
【図２０】
2014032447.tif 000022