(57)【要約】【課題】プログラムテストに使用される期待値の設定を支援することができるコンピュータプログラム、テスト支援方法及びテスト支援装置を提供する。【解決手段】対象プログラムのテストを支援する処理をコンピュータに実行させるコンピュータプログラムにおいて、第１入力データ及び該第１入力データと異なる第２入力データが対応付けて記録された記録手段から該第１入力データを取得し、該第１入力データに基づいて前記対象プログラムから出力された第１出力データを取得し、前記記録手段から第２入力データを取得し、該第２入力データに基づいて前記対象プログラムから出力された第２出力データを取得し、取得した前記第１及び第２入力データ並びに第１及び第２出力データに基づいて、前記対象プログラムの入出力データに係る関係式を算出する処理をコンピュータに実行させる。【選択図】図２
2012159952.tif 000002
【特許請求の範囲】
【請求項１】
対象プログラムのテストを支援する処理をコンピュータに実行させるコンピュータプログラムにおいて、
第１入力データ及び該第１入力データと異なる第２入力データが対応付けて記録された記録手段から該第１入力データを取得し、
該第１入力データに基づいて前記対象プログラムから出力された第１出力データを取得し、
前記記録手段から第２入力データを取得し、
該第２入力データに基づいて前記対象プログラムから出力された第２出力データを取得し、
取得した前記第１及び第２入力データ並びに第１及び第２出力データに基づいて、前記対象プログラムの入出力データに係る関係式を算出する
処理をコンピュータに実行させるコンピュータプログラム。
【請求項２】
単一の前記第１入力データの値又はデータ量を変化させて複数の第２入力データを生成し、
生成した複数の前記第２入力データを前記記録手段に記録し、
前記第２出力データを取得する処理は、複数の前記第２入力データに基づいて前記対象プログラムから夫々出力された第２出力データを複数取得し、
前記第１入力データの各変化に対応させて、前記第１及び第２入力データの間の変化と、前記第１及び第２出力データの間の変化との比を複数算出し、
前記関係式を算出する処理は、複数の前記比が等しい場合、該関係式を算出する
請求項１に記載のコンピュータプログラム。
【請求項３】
複数の異なる前記第１入力データを夫々変化させて複数の第２入力データを生成し、
生成した複数の前記第２入力データを前記記録手段に記録し、
前記第１出力データを取得する処理は、複数の異なる前記第１入力データに基づいて前記対象プログラムから夫々出力された複数の第１出力データを取得し、
前記第２出力データを取得する処理は、複数の前記第２入力データに基づいて前記対象プログラムから夫々出力された複数の第２出力データを取得し、
前記関係式を算出する処理は、互いに対応する前記複数の第１及び第２入力データ並びに第１及び第２出力データに基づいて、前記関係式を複数算出し、
複数の前記関係式の間で該関係式の異同を判定する
請求項１又は請求項２に記載のコンピュータプログラム。
【請求項４】
前記対象プログラムのテストは複数のテスト項目を有し、
前記第２入力データを生成する処理は、同一テスト項目における複数の異なる第１入力データを夫々変化させて複数の第２入力データを生成する
請求項３に記載のコンピュータプログラム。
【請求項５】
前記第１出力データがエラー処理に関する情報を含むか否かに基づいて、該第１出力データは異常であるか否かを判定し、
前記第２入力データを生成する処理は、異常でないと判定した前記第１出力データに対応する第１入力データを変化させて第２入力データを生成する
請求項２から請求項４までのいずれか一つに記載のコンピュータプログラム。
【請求項６】
前記第２出力データがエラー処理に関する情報を含むか否かに基づいて、該第２出力データは異常であるか否かを判定し、
異常であると判定した前記第２出力データに対応する第２入力データを所定の規則に従って変更し、
前記第２出力データを取得する処理は、変更した前記第２入力データに基づいて前記対象プログラムから出力された第２出力データを取得する
請求項１から請求項５までのいずれか一つに記載のコンピュータプログラム。
【請求項７】
対象プログラムのテストを支援するテスト支援方法において、
コンピュータが、
第１入力データ及び該第１入力データと異なる第２入力データが対応付けて記録された記録手段から該第１入力データを取得し、
該第１入力データに基づいて前記対象プログラムから出力された第１出力データを取得し、
前記記録手段から第２入力データを取得し、
該第２入力データに基づいて前記対象プログラムから出力された第２出力データを取得し、
取得した前記第１及び第２入力データ並びに第１及び第２出力データに基づいて、前記対象プログラムの入出力データに係る関係式を算出する
テスト支援方法。
【請求項８】
対象プログラムのテストを支援するテスト支援装置において、
第１入力データ及び該第１入力データと異なる第２入力データが対応付けて記録された記録手段と、
該記録手段に記録された第１入力データに基づいて前記対象プログラムから出力された第１出力データを取得する第１取得部と、
前記記録手段に記録された第２入力データに基づいて前記対象プログラムから出力された第２出力データを取得する第２取得部と、
前記第１及び第２入力データ並びに第１及び第２出力データに基づいて、前記対象プログラムの入出力データに係る関係式を算出する算出部と
を備えるテスト支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムテストに使用される期待値の設定を支援するコンピュータプログラム、テスト支援方法及びテスト支援装置に関する。
【背景技術】
【０００２】
開発されたプログラムの動作を検証するために、プログラムテストが実施される。プログラムテストは、入力値に対するプログラムからの出力値と予め設定された期待値とを比較して行われる。期待値の設定方法には、改修前のプログラムの出力値を期待値に設定する方法、期待値を計算機が読み取ることのできる論理式（プロパティ）で記述する方法等がある（例えば、特許文献１〜３参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第２７１８４９０号公報
【特許文献２】特開平０５−５３８７３号公報
【特許文献３】特開２００８−３１０６６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、改修前のプログラムの出力値は、改修後のプログラム、機能が追加されたプログラム及び新規のプログラムのための期待値には適用できない。また、改修前のプログラムの出力値は、プログラムの内部動作が正しかったか否かを確認せずに取得された出力値である場合がある。さらに、そもそも改修前のプログラムが設計仕様通りに開発された保証が得られない場合もある。期待値をプロパティで記述する方法は、プロパティを記述する難易度が高いため、工数がかかる。
【０００５】
本発明は斯かる事情に鑑みてなされたものである。その目的は、プログラムテストに使用される期待値の設定を支援することができるコンピュータプログラム、テスト支援方法及びテスト支援装置を提供することである。
【課題を解決するための手段】
【０００６】
本願による開示の一観点は、対象プログラムのテストを支援する処理をコンピュータに実行させるコンピュータプログラムにおいて、第１入力データ及び該第１入力データと異なる第２入力データが対応付けて記録された記録手段から該第１入力データを取得し、該第１入力データに基づいて前記対象プログラムから出力された第１出力データを取得し、前記記録手段から第２入力データを取得し、該第２入力データに基づいて前記対象プログラムから出力された第２出力データを取得し、取得した前記第１及び第２入力データ並びに第１及び第２出力データに基づいて、前記対象プログラムの入出力データに係る関係式を算出する処理をコンピュータに実行させる。
【発明の効果】
【０００７】
本願による開示の一観点によれば、期待値の設定を支援することができる。
【図面の簡単な説明】
【０００８】
【図１】テスト支援装置のハードウェア構成例を示すブロック図である。
【図２】テスト支援装置の機能構成例を示す機能ブロック図である。
【図３】テスト支援装置による期待値設定支援処理の一例を示すフローチャートである。
【図４】テスト支援装置による期待値設定支援処理の一例を示すフローチャートである。
【図５】業務処理の流れに沿って画面が遷移するプログラムテストの一例を説明する説明図である。
【図６】入力データの一例を示す説明図である。
【図７】異常系判定処理の手順の一例を示すフローチャートである。
【図８】異常系判定部により出力されるエラー情報の一例を示す説明図である。
【図９】変化入力生成部の機能構成例を示す機能ブロック図である。
【図１０】変化対象指定テーブルのレコードレイアウトの一例を示す説明図である。
【図１１】組合せ指定テーブルのレコードレイアウトの一例を示す説明図である。
【図１２】データ属性テーブルのレコードレイアウトの一例を示す説明図である。
【図１３】変化幅指定テーブルのテーブルレイアウトの一例を示す説明図である。
【図１４】変化入力データの一例を示す説明図である。
【図１５】変化入力データを生成する処理の手順の一例を示すフローチャートである。
【図１６】変化入力データを生成する処理の手順の一例を示すフローチャートである。
【図１７】入力データ組ファイルの内容の一例を示す説明図である。
【図１８】入出力データ組収集処理の手順の一例を示すフローチャートである。
【図１９】入出力データ組収集処理の出力結果の一例を示す説明図である。
【図２０】入出力データ組ファイルの内容の一例を示す説明図である。
【図２１】入力データ組と出力データ組との対応関係の一例を示す説明図である。
【図２２】入力データ組と出力データ組との対応関係の一例を示す説明図である。
【図２３】入力データ組と出力データ組との対応関係の一例を示す説明図である。
【図２４】修正ルール１による入力データ組と出力データ組との対応関係の一例を示す説明図である。
【図２５】修正ルール１による修正後の入力データ組ファイルの内容の一例を示す説明図である。
【図２６】修正ルール２による入力データ組と出力データ組との対応関係の一例を示す説明図である。
【図２７】修正ルール２による修正後の入力データ組ファイルの内容の一例を示す説明図である。
【図２８】修正に係る入出力データ組収集処理の手順の一例を示すフローチャートである。
【図２９】修正に係る入出力データ組収集処理の手順の一例を示すフローチャートである。
【図３０】修正後の入出力データ組ファイルの内容の一例を示す説明図である。
【図３１】分析１における分析処理の手順の一例を示すフローチャートである。
【図３２】分析１ファイルの内容の一例を示す説明図である。
【図３３】分析１における入力変化と出力変化との対応関係の一例を示す説明図である。
【図３４】分析１ファイルの内容の他例を示す説明図である。
【図３５】分析１における入力変化と出力変化との対応関係の他例を示す説明図である。
【図３６】分析１における入力変化と出力変化との対応関係の他例を示す説明図である。
【図３７】分析２における分析処理の手順の一例を示すフローチャートである。
【図３８】分析２ファイルの内容の一例を示す説明図である。
【図３９】分析３における分析処理の手順の一例を示すフローチャートである。
【図４０】分析３ファイルの内容の一例を示す説明図である。
【図４１】分析３における入力変化と出力変化との対応関係の一例を示す説明図である。
【図４２】分析３ファイルの内容の他例を示す説明図である。
【図４３】分析３における入力変化と出力変化との対応関係の他例を示す説明図である。
【図４４】分析３における入力変化と出力変化との対応関係の他例を示す説明図である。
【図４５】期待値設定画面の一例を示す説明図である。
【図４６】期待値設定画面の他例を示す説明図である。
【図４７】異常系の期待値設定画面の一例を示す説明図である。
【図４８】テーブル変化一覧画面の一例を示す説明図である。
【発明を実施するための形態】
【０００９】
以下、実施の形態をその図面に基づいて説明する。本願に開示するテスト支援装置は、例えばＰＣ（パーソナルコンピュータ）、ワークステーション、ＰＤＡ（Personal Digital Assistant）等である。以下では、テスト支援装置にＰＣを適用した実施の形態について説明する。
なお、本発明は、以下の実施の形態に限定されるものではない。
【００１０】
図１は、テスト支援装置１のハードウェア構成例を示すブロック図である。テスト支援装置１は、ＣＰＵ（Central Processing Unit）１１、ＲＯＭ（Read Only Memory）１２、ＲＡＭ（Random Access Memory）１３を含む。さらに、テスト支援装置１は、ハードディスク１４、ディスクドライブ１５、通信部１６、表示部（出力手段）１７及び操作部１８を含む。テスト支援装置１のハードウェア各部は、バス１ｂを介して相互に接続されている。
【００１１】
ＣＰＵ１１は、テスト支援装置１のハードウェア各部を制御する。ＣＰＵ１１は、ハードディスク１４に記録されたプログラム１ＰをＲＡＭ１３にロードし、プログラム１Ｐを実行する。
【００１２】
ＲＯＭ１２は、テスト支援装置１の起動時にＣＰＵ１１が実行するＢＩＯＳ（Basic Input/Output System）等を記録している。
ＲＡＭ１３は、例えばＳＲＡＭ（Static RAM）、ＤＲＡＭ（Dynamic RAM）であり、ＣＰＵ１１が実行する処理の過程で必要な作業変数、データ等を一時的に記録する。なお、ＲＡＭ１３は主記憶装置の一例であり、ＲＡＭ１３の代わりにフラッシュメモリ、メモリカード等が用いられてもよい。
【００１３】
ハードディスク１４は、ＣＰＵ１１が実行するプログラム１Ｐを記録している。
なお、ハードディスク１４は、テスト支援装置１の内部に取り付けられるものであっても、テスト支援装置１の外部に置かれるものであってもよい。また、ハードディスク１４は補助記憶装置の一例であり、大容量の情報の記録が可能なフラッシュメモリ、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disk）、ＢＤ（Blu-ray Disc、登録商標）等の光ディスク１ａで代替してもよい。
【００１４】
ディスクドライブ１５は、外部の記録媒体であるＣＤ、ＤＶＤ、ＢＤ等の光ディスク１ａから情報を読み込み、光ディスク１ａに情報を記録する。ＣＰＵ１１は、操作部１８からディスクドライブ１５に対する光ディスク１ａの排出命令を受け付けた場合、ディスクドライブ１５の図示しないトレイを排出する。
【００１５】
通信部１６は、有線又は無線通信のモデム又はＬＡＮカード等であり、インターネットＮに接続されている。通信部１６は、電話回線と接続することができてもよい。
【００１６】
表示部１７は、例えば液晶ディスプレイ、有機ＥＬ（Electro-Luminescence）ディスプレイ、ＣＲＴ（Cathode Ray Tube）ディスプレイ等の画面を有し、ＣＰＵ１１からの指示に従って、プログラム１Ｐに係る各種情報を表示する。
なお、プログラム１Ｐの実行結果を出力する出力手段は、表示部１７だけに限らない。例えば、テスト支援装置１に接続されたプリンタでもよい。あるいは、プログラム１Ｐの実行結果は、通信部１６を介して、外部の装置に出力されてもよい。
【００１７】
操作部１８は、ユーザが各種の入力を行うキーボード、マウス、電源スイッチ、ディスクドライブ１５から光ディスク１ａを排出するための操作ボタン等の入力デバイスを含む。操作部１８は、ユーザによる操作に基づいて入力信号を生成する。生成された入力信号は、バス１ｂを介してＣＰＵ１１に送信される。
【００１８】
以下に述べるテスト支援装置１の動作説明の参考のために、テスト対象プログラムに対してテストを実行する手順について説明する。例えば、テスト対象プログラムは、複数のプログラムの集合である業務アプリケーションである。テスト対象プログラムの入力データには、画面からの入力データとＤＢ（データベース）からの入力データとがある。
テスト対象プログラムのテストの手順は、以下の通りである。
手順１）ＤＢに入力データを設定する。
手順２）テスト対象プログラムを起動する。
手順３）画面から入力データを入力する。
手順４）所定のボタン押下等の操作によりテスト項目に対応するプログラムを駆動する。
手順５）次画面にプログラムからの出力データが表示される。又はＤＢが操作され、ＤＢのテーブルに変更が生じる。
手順６）出力データと期待値とを比較し、テストの成否を判定する。
【００１９】
テスト対象プログラムの動作に対するテストの確認内容は、以下の通りである。
確認内容１）プログラムの状態は、正常系か、異常系か。
異常系とは、出力時のプログラムの状態がプログラムの異常終了、例外の発生及びエラー画面への遷移になることである。正常系は、異常系でない出力時のプログラムの状態である。なお以下では、正常系及び異常系のプログラムによる出力結果についても、夫々正常系、異常系という用語を使用する。
確認内容２）正常系の出力データ又は出力状態は適切か。
２−１．遷移先の次画面は仕様通りの画面か。
２−２．遷移先の次画面における出力データは適切か。
２−２−１．画面項目の値は適切か。
２−２−２．次画面のボタン配置又は画面レイアウトは適切か。
出力データの値又は数量により、次画面のボタン配置又は画面レイアウトが動的に変化するよう、設計仕様により画面が定義されている場合がある。例えば、出力データ量が１画面に表示しきれない場合、画面にスクロールバー、次画面へ移動するボタン等のコントロールが出力画面に表示される。
２−３．ＤＢへの出力は適切か。
２−３−１．レコード更新、レコード追加又はレコード削除は、適切に実行されたか。
２−４．ファイル出力又は帳票出力は適切か。
２−４−１．ファイルに出力された出力データは適切か。
２−４−２．帳票に印刷された出力データは適切か。
【００２０】
次に、テスト支援装置１の動作の概略について説明する。
図２は、テスト支援装置１の機能構成例を示す機能ブロック図である。図２の各機能部は、ＣＰＵ１１がハードディスク１４に記録されたプログラム１Ｐに基づいて動作することにより実行される。
【００２１】
テスト支援装置１は、入力生成部２１、入力組記録部２２、入力設定部２３及びプログラム実行部２４の各機能部を含む。
入力生成部２１は、テスト対象プログラム２Ｐに入力される入力データを生成する。入力組記録部２２は、入力生成部２１が生成した入力データをＲＡＭ１３又はハードディスク１４に記録する。入力設定部２３は、入力組記録部２２が記録した入力データをプログラム実行部２４に与える。プログラム実行部２４は、入力設定部２３から与えられた入力データに基づいて、テスト対象プログラム２Ｐを実行する。テスト対象プログラム２Ｐは、ハードディスク１４に記録されていてもよいし、光ディスク１ａ又はフラッシュメモリ等の半導体メモリ１ｃに記録されていてもよい。また、テスト対象プログラム２Ｐは、外部の装置の記録手段に記録されていてもよい。かかる場合、プログラム実行部２４は、通信部１６を介してテスト対象プログラム２ＰをＲＡＭ１３にロードし、ロードしたテスト対象プログラム２Ｐを実行する。
【００２２】
なお、入力生成部２１、入力設定部２３及びプログラム実行部２４は、テスト支援装置１の外部の装置に備えられていてもよい。かかる場合、ＣＰＵ１１は、通信部１６を介してこれら外部の機能部とデータの受け渡しをする。
【００２３】
テスト支援装置１は、異常系判定部２５、変化入力生成部２６及び入出力組収集部２７
を含む。
異常系判定部２５は、テスト対象プログラム２Ｐからの出力結果が異常系か否か判定する。
【００２４】
変化入力生成部２６は、異常系判定部２５により正常系と判定された出力データに対応する入力データを微小変化させたデータを生成する。以降では、変化入力生成部２６により入力データ（第１入力データ）から微小変化されたデータを変化入力データ（第２入力データ）と呼ぶ。１つの入力データから生成される変化入力データの数は、１つであってもよいし、複数であってもよい。また、１つの入力データを変化させる方法は、入力データの値の増加だけでもよいし、減少だけでもよいし、増加と減少との両方でもよい。１つの入力データを変化させる方法は、入力データのデータ量の増加だけでもよいし、減少だけでもよいし、増加と減少との両方でもよい。
【００２５】
以降では、入力データとその変化入力データとの組を入力データ組と呼ぶ。入力データ及び変化入力データに基づいてテスト対象プログラム２Ｐから出力されるデータを夫々出力データ（第１出力データ）及び変化出力データ（第２出力データ）と呼ぶ。互いに対応する入力データ及び出力データ並びに変化入力データ及び変化出力データの組を入出力データ組と呼ぶ。
【００２６】
上述の入力組記録部２２は、変化入力生成部２６により変化入力データが生成された場合、入力データとその変化入力データとを対応付けた入力データ組をハードディスク１４に記録する。
入力設定部２３は、入力組記録部２２が記録した入力データ組をプログラム実行部２４に与える。
【００２７】
入出力組収集部２７は、入力データに基づいてプログラム実行部２４にテスト対象プログラム２Ｐを実行させる。また、入出力組収集部２７は、変化入力データに基づいてもプログラム実行部２４にテスト対象プログラム２Ｐを実行させる。入出力組収集部２７は、テスト対象プログラム２Ｐの実行結果を入出力データ組としてハードディスク１４に記録する。
入出力組収集部２７は、異常系判定部２５の判定結果に基づいて、異常系の変化入力データ及び変化出力データに異常系であることの情報を付加する。
【００２８】
テスト支援装置１は、入力組修正部２８、入出力組分析部２９及び期待値設定支援部３０を含む。
入力組修正部２８は、入出力組収集部２７が変化入力データ及び変化出力データに異常系であることの情報を付加した場合、所定のルールに従ってその変化入力データを修正する。入力組記録部２２は、入力組修正部２８が修正した変化入力データにより、修正の元となった入力データ組を更新する。入力設定部２３は、入力組記録部２２が更新した入力データ組をプログラム実行部２４に与える。
入出力組収集部２７は、修正した変化入力データに基づいてプログラム実行部２４にテスト対象プログラム２Ｐを実行させ、既にハードディスク１４に記録した入出力データ組を更新する。
【００２９】
入出力組分析部２９は、入出力組収集部２７が記録した正常系の入出力データ組を分析する。期待値設定支援部３０は、入出力組分析部２９が分析した分析結果を集計し、集計した結果を表形式のデータに整理して表示部１７に出力する。ユーザは、当該表形式のデータを参照して、期待値の設定をする。
【００３０】
図３及び図４は、テスト支援装置１による期待値設定支援処理の一例を示すフローチャートである。図３及び図４は、期待値設定支援処理の全体的な概要を示している。
なお、テスト対象プログラム２Ｐは、予めテスト支援装置１のハードディスク１４にインストールされているものとする。
入力生成部２１は、入力データを生成する（ステップＳ１０１）。プログラム実行部２４は、入力データに基づいてテスト対象プログラム２Ｐを実行する（ステップＳ１０２）。異常系判定部２５は、テスト対象プログラム２Ｐからの出力データが異常か否か判別する（ステップＳ１０３）。
【００３１】
変化入力生成部２６は、正常系の出力データに対応する入力データを変化させた変化入力データを生成する（ステップＳ１０４）。入力組記録部２２は、入力データ組をハードディスク１４に記録する（ステップＳ１０５）。
【００３２】
プログラム実行部２４は、入力データ組の変化入力データに基づいてテスト対象プログラム２Ｐを実行する（ステップＳ１０６）。入出力組収集部２７は、入出力データ組を収集し、収集した入出力データ組を正常系と異常系とに区別してハードディスク１４に記録する（ステップＳ１０７）。
【００３３】
入力組修正部２８は、ステップＳ１０７で異常系に判別された入出力データ組の変化入力データを修正する（ステップＳ１０８）。プログラム実行部２４は、修正された変化入力データに基づいてテスト対象プログラム２Ｐを実行する（ステップＳ１０９）。入出力組収集部２７は、入出力データ組を収集し、ハードディスク１４に記録した入出力データ組を更新する（ステップＳ１１０）。
【００３４】
入出力組分析部２９は、入出力データ組を分析する（ステップＳ１１１）。期待値設定支援部３０は、ステップＳ１１１の分析結果を出力し（ステップＳ１１２）、処理を終える。ユーザは、テスト支援装置１が出力するテスト対象プログラム２Ｐの分析結果に基づいて、期待値を設定する。
【００３５】
次に、テスト支援装置１の動作の詳細について説明する。
まず、入力生成部２１の動作から説明する。入力生成部２１は、入力データを生成する。その際、ブラックボックステストにおける同値分割法、境界値分析法、ホワイトボックステストにおけるプログラムの静的解析が利用されてよい。
【００３６】
図５は、業務処理の流れに沿って画面が遷移するプログラムテストの一例を説明する説明図である。
業務アプリケーションのテストでは、業務処理の流れに沿って遷移していく処理対象のステージ毎に、テスト対象プログラム２Ｐの出力データと設定された期待値とが比較される。業務処理の流れとは、例えば受注業務の場合、受注受け付け、受注変更、受注確定、在庫引当、商品配送、請求書発送等の流れに該当する。業務アプリケーションは、ステージ毎に対応する複数のテスト対象プログラム２Ｐを有している場合が普通である。そのため、テスト対象プログラム２Ｐのテストは、ステージ毎に実行される。
【００３７】
画面を有するテスト対象プログラム２Ｐの場合、業務処理の各ステージに対応する入力画面が用意され、入力画面から入力データがテスト対象プログラム２Ｐに入力される。場合により、ＤＢからもテスト対象プログラム２Ｐに入力データが入力される。テスト対象プログラム２Ｐは、入力データに基づいて指定された処理を実行し、出力データを画面遷移により規定された次画面に出力する。あるいは、テスト対象プログラム２Ｐは、出力結果をＤＢに反映させるため、ＤＢに変更を加える。ただし、出力データが異常系である場合、入力画面からエラー画面に遷移することもある。
画面を有さないバッチ処理のテスト対象プログラム２Ｐも業務処理の各ステージに対応し、実行されることがある。以下では、画面を有するテスト対象プログラム２Ｐを中心に本実施の形態を説明する。
【００３８】
入力生成部２１は、業務処理のステージ毎に画面又はＤＢから入力される入力データを作成する。入力生成部２１が生成する入力データの数は、画面からの入力データの場合、画面の入力項目数と同じ数である。入力生成部２１が生成する入力データの数は、ＤＢからの入力データの場合、ＤＢの全レコード数である。
なお、入力生成部２１が生成する入力データの種類と数とは、テスト対象プログラム２Ｐの画面に応じて変更されもよい。また、既存の入力データのみがテストに使用される場合、入力生成部２１はなくてもよい。
【００３９】
図６は、入力データの一例を示す説明図である。ステージは、業務処理のステージである。図６の例では、ステージは画面と１対１の関係にある。入力ＩＤは、ステージ毎に設定される入力データの識別記号である。１つのステージについて、入力ＩＤは１つである場合もあるし、複数である場合もある。
【００４０】
図６は、入力データを画面からの入力データとＤＢからの入力データとに分けて示している。
画面からの入力データの場合、画面の項目毎に入力データが作成される。画面の種類が異なる場合、画面の項目も異なり、作成される入力データも異なる。
ＤＢからの入力データの場合、テーブル毎に入力データが作成される。画面の種類が異なる場合、使用されるテーブルも異なり、作成される入力データも異なる。なお、図６では、テーブルの列に関する情報は省略している。
例えば、図６の１行目は、画面１のステージにおいて、入力ＩＤ＝Ｔ１の入力データが作成されることを示している。入力ＩＤ＝Ｔ１の場合、画面１から入力される入力データは、夫々項目１の１０、項目２の”Ａ”、項目３の２０１０／１／１である。なお、”Ａ”のダブルクォーテーションは、Ａが文字列であることを示すために添えられている。
【００４１】
入力生成部２１が生成した画面又はＤＢからの入力データは、入力組記録部２２により、ＲＡＭ１３又はハードディスク１４に記録される。入力設定部２３は、ＲＡＭ１３又はハードディスク１４に記録された入力データをプログラム実行部２４に与える。
【００４２】
入出力組収集部２７は、プログラム実行部２４にテスト対象プログラム２Ｐを実行させる。入出力組収集部２７は、入力データとテスト対象プログラム２Ｐからの出力データとを対応付けてＲＡＭ１３に記録する。入出力組収集部２７は、テスト対象プログラム２Ｐからの出力データを正常系と異常系とに分別し、正常系の入力データ及び出力データを対応付けてＲＡＭ１３に記録する。異常系の入力データ及び出力データは、異常系の期待値設定情報として、ハードディスク１４に記録される。
ここで、入出力組収集部２７は、出力データを正常系と異常系とに分別するために、出力データが異常系か否かの判定を異常系判定部２５に判定させる。
【００４３】
図７は、異常系判定処理の手順の一例を示すフローチャートである。
ＣＰＵ１１は、テスト対象プログラム２Ｐが正常に終了したか否かを判定するための判定基準を設定する（ステップＳ２０１）。ＣＰＵ１１はエラー画面の判定基準を設定する（ステップＳ２０２）。
ステップＳ２０１及びステップＳ２０２で設定される判定基準は、例えば正常終了を示す戻り値、異常終了を示す戻り値、例外の種類を示す戻り値、エラー画面番号等のリストであってよい。ステップＳ２０１及びステップＳ２０２で設定される判定基準は、夫々ステップＳ２０４及びステップＳ２０６で利用される。例えば、これらの判定基準を記録した設定ファイルを予めハードディスク１４に記録しておく。ＣＰＵ１１は、ハードディスク１４から当該判定ファイルを読み込み、ステップＳ２０１及びステップＳ２０２を実行する。あるいは、ステップＳ２０１及びステップＳ２０２で設定される判定基準は、プログラム１Ｐに記述されていてもよい。
【００４４】
ＣＰＵ１１は、ＲＡＭ１３に記録された入力データ及び出力データを読み込む（ステップＳ２０３）。ステップＳ２０３において、読み込まれる入力データ及び出力データは、当該異常系判定処理が実行される前に、入出力組収集部２７がＲＡＭ１３に記録した入力データ及びテスト対象プログラム２Ｐからの出力データである。
ＣＰＵ１１は、テスト対象プログラム２Ｐが正常に終了したか否か判定する（ステップＳ２０４）。ＣＰＵ１１は、テスト対象プログラム２Ｐが正常に終了したと判定した場合（ステップＳ２０４：ＹＥＳ）、例外が発生したか否か判定する（ステップＳ２０５）。
【００４５】
ＣＰＵ１１は、例外が発生したと判定した場合（ステップＳ２０５：ＹＥＳ）、ステップＳ２０８に処理を進める。ＣＰＵ１１は、例外が発生しなかったと判定した場合（ステップＳ２０５：ＮＯ）、テスト対象プログラム２Ｐを実行した結果、遷移した画面がエラー画面か否か判定する（ステップＳ２０６）。ＣＰＵ１１は、テスト対象プログラム２Ｐを実行した結果、遷移した画面がエラー画面であると判定した場合（ステップＳ２０６：ＹＥＳ）、ステップＳ２０８に処理を進める。ＣＰＵ１１は、テスト対象プログラム２Ｐを実行した結果、遷移した画面がエラー画面でないと判定した場合（ステップＳ２０６：ＮＯ）、出力データは異常系ではない、すなわち正常系であると判定し（ステップＳ２０７）、処理を終了する。
【００４６】
ＣＰＵ１１は、テスト対象プログラム２Ｐが正常に終了しなかったと判定した場合（ステップＳ２０４：ＮＯ）、出力データは異常系であると判定する（ステップＳ２０８）。また、ＣＰＵ１１は、ステップＳ２０５又はステップＳ２０６からステップＳ２０８に処理を進めた場合も、出力データは異常系であると判定する（ステップＳ２０８）。ＣＰＵ１１は、入力ＩＤと、出力データの値と、上述で判別した異常系の種別とを対応付けた情報を、ファイルとしてハードディスク１４に記録し（ステップＳ２０９）、処理を終了する。異常系の種別とは、異常終了、例外発生又はエラー画面である。
【００４７】
図８は、異常系判定部２５により出力されるエラー情報の一例を示す説明図である。エラー情報は、入力データと対応が付く形式で出力される。ステージ及び入力ＩＤは、夫々図６のステージ及び入力ＩＤと同じである。入力データ種別は、入力データと変化入力データとを区別する情報である。入力データ種別の「入力」は、入力データの意味である。図８では変化入力データの例は示されていない。
【００４８】
テストを実行した結果、画面が遷移し、ＤＢが変更される。図８では、出力結果を結果画面と結果ＤＢとに分けて示している。結果画面の情報は、遷移画面と遷移画面の各項目とを含む。遷移画面は、テストを実行した後の次画面の名称である。結果ＤＢの情報は、各テーブルの変更又は異常系判定部２５による処理結果である。
【００４９】
図８では、入力ＩＤがＴ１であるテストにおいて、出力結果が正常系であると判定された場合を示している。また、入力ＩＤがＴ２、Ｔｎ−１及びＴｎであるテストにおいて、出力結果が異常系であると判定された場合を示している。図８では、異常系の出力結果を斜線で示している。実際のエラー情報に正常系の出力データは含まれないが、図８では異常系の説明の参考に、正常系の例を１行目に示している。
【００５０】
入力ＩＤ＝Ｔ１のテストでは、画面１に図６の入力ＩＤ＝Ｔ１の入力データを入力し、テスト対象プログラム２Ｐを実行した場合、正常系の画面２に遷移した。画面２の各項目に正常系の出力データが示されている。また、テーブル１にはＡ１というレコードが追加されたことが示されている。テストの前後で、テーブル２は、Ｂ１というレコードのままであることが示されている。
【００５１】
入力ＩＤ＝Ｔ２のテストでは、画面１に図６の入力ＩＤ＝Ｔ２の入力データを入力し、テスト対象プログラム２Ｐを実行した場合、異常系のエラー画面に遷移した。エラー画面の項目１には、「システムエラーが発生しました」というエラーメッセージが出力されたことが示されている。エラー画面の項目２には、１２３４５が出力され、項目３には何も出力されなかったことが示されている。システムエラーによりＣＰＵ１１はＤＢにアクセスしなかったため、テーブル１及びテーブル２については「収集なし」というメッセージが出力されている。
【００５２】
入力ＩＤ＝Ｔｎ−１のテストでは、テスト対象プログラム２Ｐが異常終了したことが示されている。入力ＩＤ＝Ｔｎのテストでは、例外が発生したことが示されている。なお、例外については、より詳細な例外の種類が示されてもよい。
【００５３】
変化入力生成部２６は、入出力組収集部２７がＲＡＭ１３に記録した正常系の入力データを微小変化させる。変化入力生成部２６は、入力データが微小に変化された変化入力データを生成する。変化入力データは、入力データをＴ、入力データの変化分をｄｔとした場合、例えば、Ｔ±ｄｔ、Ｔ±２ｄｔ、Ｔ±３ｄｔ等と表現することができる。以下では、変化入力生成部２６は、１つの入力データについて、入力データをｄｔだけ増加させた変化入力データと入力データをｄｔだけ減少させた変化入力データとの２つを生成するものとする。
変化入力生成部２６は、入力データが画面の入力データである場合、画面の項目数に応じた数だけ変化入力データを生成する。変化入力生成部２６は、入力データがＤＢの入力データである場合、ＤＢの全レコード数に応じた数だけ変化入力データを生成する。
【００５４】
図９は、変化入力生成部２６の機能構成例を示す機能ブロック図である。変化入力生成部２６は、変化入力部９０１及び変化分生成部９０２を含む。
変化分生成部９０２は、変化分ｄｔを生成する。変化入力部９０１は、変化生成部９０２が生成した変化分ｄｔと入力データＴとの和及び差を算出し、変化入力データＴ±ｄｔを生成する。
【００５５】
変化入力生成部２６は、画面変化部９０３及びテーブル変化部９０４を含む。画面変化部９０３は、画面の入力データの値を変化させ、変化分を生成する。
テーブル変化部９０４は、ＤＢの入力データに関する変化分を生成する。具体的には、テーブル変化部９０４は、テーブルのレコードの値又はレコード数の変化分を生成する。テーブルのレコードの値を変化させることはレコード更新に対応し、その変化分は更新される列の値変化に該当する。テーブルのレコード数を増加させることはレコード追加に対応し、その変化分は追加するレコードセットに該当する。テーブルのレコード数を減少させることはレコード削除に対応し、その変化分は削除するレコードセットに該当する。
なお、上記のレコード変化を伴うＤＢ変更は、テーブル制約及び列制約を満たすように、実行される。
【００５６】
変化分生成部９０２は、指定されたパラメータに基づいて、画面変化部９０３及びテーブル変化部９０４に夫々画面及びＤＢの入力データに対する変化分を生成させる。ここでのパラメータは、例えば、どの画面のどの項目の値をどれだけどのように変化させるかを決定する変数である。あるいは、ここでのパラメータは、例えば、どの画面のどの項目とどの項目とを組み合わせて同時に変化させるかを決定する変数である。
上記パラメータは、以下に説明する各機能部から変化分生成部９０２を介して、画面変化部９０３又はテーブル変化部９０４に渡される。
【００５７】
変化入力生成部２６は、変化対象指定部９０５及び組合せ指定部９０６を含む。
変化対象指定部９０５は、変化分を生成する対象の入力データを特定することができる情報を生成する。
変化対象指定部９０５が生成する情報は、テスト対象プログラム２Ｐのテスト項目に対応する。変化対象指定部９０５が生成する情報は、例えば特定される入力データが画面の入力データである場合、画面の名称及び画面の項目名である。変化対象指定部９０５が生成する情報は、例えば特定される入力データがテーブルの入力データである場合、テーブルの名称及び列名である。
【００５８】
図１０は、変化対象指定テーブルのレコードレイアウトの一例を示す説明図である。変化対象指定テーブルは、変化対象指定部９０５が生成する情報が記録されたテーブルである。変化対象テーブルは、Ｎｏ列、入力ＩＤ列、対象列及び項目列を含む。Ｎｏ列は、整理番号である。入力ＩＤ列は、図６の入力ＩＤと同じである。対象列は、変化分を生成する対象の画面又はテーブルの名称である。項目列は、画面の項目名である。対象がテーブルである場合、項目は列名である。
【００５９】
以下では、変化入力データを生成するための入力データに対応する画面の項目名並びにＤＢのテーブル名及び列名を要素又は変化要素と呼ぶ。要素は、変化対象指定テーブルの１レコードに対応する。例えば、画面１の項目１は要素である。テスト対象プログラム２Ｐのテストは、要素毎に行われ、テスト項目と対応する。
【００６０】
なお、入力データは、１つの要素について１つである場合もあるし、複数である場合もある。例えば、画面１の項目１に数値を入力してテスト対象プログラム２Ｐをテストする場合、入力される入力データは１０だけであることがあるし、１０と２０との２つであることもある。１０と２０とを入力してテスト対象プログラム２Ｐを２回テストすることは、どちらも画面１の項目１に対する入力であり、テスト項目としては１つである。
【００６１】
変化対象指定部９０５は、変化対象指定テーブルを参照して、変化分生成部９０２に要素を渡す。あらゆる入力データを変化させる場合、テスト支援装置１に対する負荷が大きくなるとき、変化対象指定テーブルに記録するレコードを増減することにより、テスト支援装置１に対する負荷を調整することができる。
【００６２】
組合せ指定部９０６は、上記要素の組合せに関する情報を生成する。例えば、画面１が項目１、項目２及び項目３を含む場合、項目１及び項目２の入力データを共に変化させた変化入力データを生成するとき、組合せ指定部９０６が生成する情報は、項目１及び項目２である。例えば、テーブル１が列１、列２及び列３を含む場合、列１及び列３の入力データを共に変化させた変化入力データを生成するとき、組合せ指定部９０６が生成する情報は、列１及び列３である。要素を組合わせるために、オールペア法、直交表等の組合せテストで用いられる技術が利用されてよい。
変化入力データを生成する要素が１つである場合、組合せ指定部９０６が生成する情報は、要素の組合せがないという情報である。
組合せ指定部９０６は、組合せ指定テーブルを参照して、要素の組合せ情報を変化分生成部９０２に渡す。
【００６３】
図１１は、組合せ指定テーブルのレコードレイアウトの一例を示す説明図である。組み合わせ指定テーブルは、組合せ指定部９０６が参照する情報が記録されたテーブルである。Ｎｏは、整理番号であり、主キーでもある。入力ＩＤは、図６のテストＩＤと同じである。組合せ指定は、要素の組合せの有無である。組合せ項目は、組合せ指定がありの場合、要素の組合せを格納する。
【００６４】
図１１のＮｏ列の１は、入力ＩＤ＝Ｔ１の入力データについて、要素を組み合わせて変化分を生成しないことを示している。Ｎｏ列の２は、入力ＩＤ＝Ｔ２の入力データについて、画面２の項目１及び項目３を組合わせた変化入力データを生成する場合、各項目の変化分を生成することを示している。画面名と項目名の間のドットは、画面と項目とを結合する記号である。
あらゆる要素の組合せについて入力データを変化させる場合、テスト支援装置１に対する負荷が大きくなるとき、組合せ指定テーブルに記録するレコードを増減することにより、テスト支援装置１に対する負荷を調整することができる。
【００６５】
変化入力生成部２６は、属性指定部９０７及び変化幅指定部９０８を含む。
属性指定部９０７は、変化分を生成する対象の入力データの属性を生成する。すなわち、属性指定部９０７は、要素の属性を生成する。この属性は、画面の入力データの場合、画面の項目に入力されるデータのデータ型である。また、この属性は、ＤＢの入力データの場合、テーブルの列のデータ型である。
属性指定部９０７は、データ属性テーブルを参照して、入力データの属性を変化分生成部９０２に渡す。
【００６６】
図１２は、データ属性テーブルのレコードレイアウトの一例を示す説明図である。データ属性テーブルは、属性指定部９０７が参照する情報が記録されたテーブルである。
データ属性テーブルは、Ｎｏ列、対象列、項目列及び属性列を含む。Ｎｏ列は、整理番号であり、主キーでもある。対象列は、変化分を生成する対象の画面又はテーブルの名称である。項目列は、画面の項目名又はテーブルの列名である。属性列は、画面項目又はテーブルの列のデータ型である。
例えば図１２のＮｏ列の１、２、３は、画面１の項目１、項目２及び項目３のデータ型が夫々数字、英字文字列及び日付であることを示している。
【００６７】
変化幅指定部９０８は、変化幅指定テーブルを参照して、入力データを変化させる変化幅を生成する。変化幅は、変化分ｄｔの大きさである。変化幅指定部９０８は、生成した変化幅を変化分生成部９０２に渡す。
【００６８】
図１３は、変化幅指定テーブルのテーブルレイアウトの一例を示す説明図である。変化幅指定テーブルは、Ｎｏ列、属性列及び変化幅列を含む。Ｎｏ列は、整理番号であり、主キーである。属性列は、変化分を生成する対象の入力データのデータ型である。変化幅列は、変化分の数量である。変化幅列は、加算又は減算の情報も含む。
例えば、図１３のＮｏ列の１は、入力データのデータ型が数字である場合、１を加算することを示している。Ｎｏ列の４は、入力データのデータ型が文字列である場合、１文字削除することを示している。Ｎｏ列の５は、入力データが日付である場合、翌日に変化させることを示している。Ｎｏ列の６は、入力データが日付である場合、前日に変化させることを示している。Ｎｏ列の７は、入力データが日付である場合、月末に変化させることを示している。
【００６９】
変化分生成部９０２は、属性指定部９０７から渡された入力データの属性と、変化幅指定部９０８から渡された属性毎の変化幅とから、各要素の変化幅を決定することができる。
なお、図１３には、１つの属性に対して複数の変化幅が記録されている。例えば、属性が日付である場合、図１３のＮｏ列の５、６、７に３つの変化幅が示されている。ある要素について、図１３のＮｏ列の５、６、７の内、どれを採用するかということは、プログラム１に記述されている。あるいは、プログラム１の実行時にユーザが図１３のＮｏ列の５、６、７の内、どれを採用するかプログラム１に与えてもよい。
【００７０】
変化対象指定テーブルの対象列及び項目列と、データ属性テーブルの対象列及び項目列との間に、夫々リレーションが設定されていてもよいし、設定されていなくてもよい。また、データ属性テーブルの属性列と、変化幅指定テーブルの属性列との間に、リレーションが設定されていてもよいし、設定されていなくてもよい。
【００７１】
変化対象指定テーブル、組合せ指定テーブル、データ属性テーブル及び変化幅指定テーブルを記録する記録媒体は特に限定されない。これらのテーブルはハードディスク１４に記録されていてもよし、光ディスク１ａ又はフラッシュメモリ等の半導体メモリ１ｃに記録されていてもよい。
あるいは、これらのテーブルは外部の情報処理装置の記録部に記録されていてもよい。かかる場合、テスト支援装置１は、通信部１６を介してこれらのテーブルの情報を取得する。
【００７２】
変化入力部９０１は、入力データと変化分生成部９０２が生成した変化分とから変化入力データを生成する。
図１４は、変化入力データの一例を示す説明図である。変化入力ＩＤは、変化入力データの識別記号である。変化入力ＩＤは、変化入力データの元である入力データの入力ＩＤにサブ識別記号を結合して設定されている。例えば、図１４の１行目の変化入力ＩＤは、Ｔ１とｖ１とが結合されており、Ｔ１は当該変化入力データが入力ＩＤ＝Ｔ１の入力データを変化させることにより生成されたことを示している。変化要素は、変化入力データを生成するために変化させた入力データの要素である。
【００７３】
図１４では、画面及びＤＢの入力データに対応する変化入力データが示されている。なお図１４では、ＤＢの入力データに対応する変化入力データの欄があるが、ＤＢの入力データを変化させた変化入力データは省略している。また図１４では、テーブルの列に関する情報は省略している。
【００７４】
図１４の１行目及び２行目は、画面１について項目１の入力データを変化させ、項目２及び項目３の入力データは変化させていない変化入力データを示している。画面１の項目１の入力データは１０である（図６参照）。１０に１加算した値、１０から１減算した値が夫々変化入力ＩＤ＝Ｔ１ｖ１、Ｔ１ｖ２における項目１の変化入力データである。
【００７５】
図１４の３行目及び４行目は、画面１について項目２の入力データを変化させ、項目１及び項目３の入力データは変化させていない変化入力データを示している。画面１の項目２の入力データは”Ａ”である（図６参照）。”Ａ”に１文字のＸを追加した文字列、”Ａ”から１文字削除した文字列が夫々変化入力ＩＤ＝Ｔ１ｖ３、Ｔ１ｖ４における項目２の変化入力データである。なお、”Ａ”のダブルクォーテーションは、データ型が文字列であるために添えられている。
【００７６】
図１４の５行目及び６行目は、画面１について項目３の入力データを変化させ、項目１及び項目２の入力データは変化させていない変化入力データを示している。画面１の項目３の入力データは２０１０／１／１である（図６参照）。２０１０／１／１の翌日の日付、２０１０／１／１の前日の日付が夫々変化入力ＩＤ＝Ｔ１ｖ５、Ｔ１ｖ６における項目３の変化入力データである。
【００７７】
図１４に示すように、変化入力生成部２６は、入力データの値を挟むように少なくとも２つの変化入力データを生成する。
入力データに基づいて変化入力生成部２６が生成する変化入力データと当該入力データとのまとまりが入力データ組である。入力データ組のファイルを入力データ組ファイルと呼び、入力データ組ファイルは入力組記録部２２によりハードディスク１４に記録される。
【００７８】
図１５及び図１６は、変化入力データを生成する処理の手順の一例を示すフローチャートである。なお、正常系の入力データは、予めハードディスク１４に記録されているものとする。また、ＤＢのテーブルデータもハードディスク１４に記録されているものとする。
ＣＰＵ１１は、入力データをハードディスク１４からＲＡＭ１３にロードする（ステップＳ３０１）。ＣＰＵ１１は、入力データを入力ＩＤ、画面の名称、項目の名称、テーブル名、列名の昇順に並び替える（ステップＳ３０２）。この時点で、入力ＩＤ、画面の名称、画面の各項目、画面の各項目の入力データ、テーブル名、列名が夫々対応付けられてＲＡＭ１３に記録されている。
【００７９】
ＣＰＵ１１は、変化対象指定テーブル、組合せ指定テーブル、データ属性テーブル及び変化幅指定テーブルを読み込む（ステップＳ３０３）。ＣＰＵ１１は、読み込んだテーブルのデータを入力ＩＤ、画面の名称、画面の項目名、テーブル名、列名の昇順に並び替える（ステップＳ３０４）。この時点で、入力ＩＤ、画面の名称、画面の各項目名、画面項目の属性、テーブル名、列名、各テーブルの列の属性、変化幅及び組合せ項目が夫々対応付けられてＲＡＭ１３に記録されている。このデータは、入力データの要素を１つずつ特定し、特定した要素を変化させる情報の集合である。
【００８０】
ＣＰＵ１１は、ステップＳ３０２で並べ替えた入力データから１要素を選択する（ステップＳ３０５）。ＣＰＵ１１は、選択した１要素が変化させる対象の要素か否か判定する（ステップＳ３０６）。ステップＳ３０６の判定は、変化対象指定テーブル及び組合せ指定テーブルに基づいて判定される。これらのテーブルの情報は、ステップＳ３０３でＣＰＵ１１により読み込まれている。選択した要素の特定データがステップＳ３０４で並べ変えたテーブルデータにある場合、ＣＰＵ１１は１要素を変化させる対象の要素であると判定する。
【００８１】
ＣＰＵ１１は、選択した１要素が変化させる対象の要素でないと判定した場合（ステップＳ３０６：ＮＯ）、ステップＳ３０５に処理を戻す。ＣＰＵ１１は、選択した１要素が変化させる対象の要素であると判定した場合（ステップＳ３０６：ＹＥＳ）、当該１要素がＤＢの入力データか否か判定する（ステップＳ３０７）。ＣＰＵ１１は、１要素がＤＢの入力データであると判定した場合（ステップＳ３０７：ＹＥＳ）、ＤＢにアクセスし、選択した１要素に係るテーブルのデータを変化させる（ステップＳ３０８）。その後、ＣＰＵ１１は、ステップＳ３０５に処理を戻す。なお、ステップＳ３０８は、レコード更新、レコード追加又はレコード削除の各クエリに関する処理を含む。
【００８２】
ＣＰＵ１１は、１要素がＤＢの入力データでないと判定した場合（ステップＳ３０７：ＮＯ）、画面の入力データである１要素を変化させる（ステップＳ３０９）。ＣＰＵ１１は、１要素を変化させることにより生成した変化入力データをＲＡＭ１３に記録する（ステップＳ３１０）。ＣＰＵ１１は、全ての要素を処理したか否か判定する（ステップＳ３１１）。ＣＰＵ１１は、全ての要素を処理していないと判定した場合（ステップＳ３１１：ＮＯ）、ステップＳ３０５に処理を戻す。
【００８３】
ＣＰＵ１１は、全ての要素について処理したと判定した場合（ステップＳ３１１：ＹＥＳ）、ステップＳ３１２に処理を進める。ＣＰＵ１１は、入力データ及びその変化入力データをステージ毎にまとめ、入力データ組ファイルとしてハードディスク１４に記録し（ステップＳ３１２）、処理を終了する。
なお、組合せ指定がある場合、ステップＳ３０８及びステップＳ３０９において、ＣＰＵ１１は組合せ項目の１つずつについて１要素を変化させる。
【００８４】
図１７は、入力データ組ファイル１Ｆの内容の一例を示す説明図である。図１７は、図６の入力データと図１４の変化入力データとをステージ単位でまとめたものである。
【００８５】
ステージは、図６のステージと同じである。入力組ＩＤは、入力データ組の識別記号である。入力組ＩＤは、例えば入力データ組に含まれる入力データの入力ＩＤで代表される。ＩＤは、入力データを示す入力ＩＤ又は変化入力データを示す変化入力ＩＤである。画面は、入力画面の名称である。入力データ種別は、入力データと変化入力データとを区別する情報である。当該行が入力データである場合、「入力」が格納される。当該行が変化入力データである場合、「変化入力」が格納される。また、当該行が変化入力である場合、図１４の変化要素も併記される。図１４では、画面からの入力データ及び変化入力データと、ＤＢの入力データ及び変化入力データとに分けて示されている。なお、図１４では、ＤＢの入力データ及び変化入力データの詳細と、テーブルの列に関する情報とは省略している。
【００８６】
図１７には、ステージが画面１である入力データと変化入力データとが示されている。１行目は、入力データである。画面１のステージで使用される入力画面は当然画面１であり、画面１の項目１、項目２及び項目３について入力データが示されている。２行目以降は、変化入力データである。項目１、項目２及び項目３を変化要素とした場合の変化入力データが、夫々２〜３行、４〜５行、６〜７行に示されている。
入力組記録部２２は、図１７の入力データ組ファイル１Ｆのレコードを、ステージ、入力組ＩＤ、ＩＤの昇順に並べ替えて、ハードディスク１４に記録する。
【００８７】
なお、図１７では、１つの要素に対して入力データは１つであり、変化入力データは２つである。例えば、画面１の項目１について、入力データは１０であり、変化入力データは１１と９とである。しかし、１つの要素に対して入力データは複数生成されてもよい。例えば、画面１の項目１について、１０と２０との入力データが生成されてもよい。かかる場合、例えば入力データ１０について１１と９との変化入力データが生成され、入力データ２０について２１と１９との変化入力データが生成されてもよい。
【００８８】
入力設定部２３は、入力データ組の変化入力データをプログラム実行部２４に与える。入出力組収集部２７は、プログラム実行部２４にテスト対象プログラム２Ｐを実行させ、入出力データ組を取得する。入出力組収集部２７は、異常系判定部２５の判定に基づいて、取得した入出力データ組を正常系と異常系とに分けて記録する。
【００８９】
図１８は、入出力データ組収集処理の手順の一例を示すフローチャートである。入出力データ組処理は、入力データ及び出力データ並びに変化入力データ及び変化出力データの組を収集する処理である。なお、入力データ組ファイル１Ｆは、ＲＡＭ１３にロードされているものとする。
【００９０】
ＣＰＵ１１は、ＲＡＭ１３に記録されている入力データ組のデータを１つ選択する（ステップＳ４０１）。ステップＳ４０１において、入力データ組のデータを１つ選択とは、例えば図１７のデータの１行を選択することである。また、再帰的にステップＳ４０１が呼び出された場合、ＣＰＵ１１は、入力データ組の次の行を選択する。
【００９１】
ＣＰＵ１１は、入力データ種別に基づいて、選択したデータが変化入力データか否か判定する（ステップＳ４０２）。ＣＰＵ１１は、選択したデータが変化入力データでないと判定した場合（ステップＳ４０２：ＮＯ）、ステップＳ４０１へ処理を戻す。ＣＰＵ１１は、選択したデータが変化入力データであると判定した場合（ステップＳ４０２：ＹＥＳ）、選択した変化入力データに基づいてテスト対象プログラム２Ｐを実行する（ステップＳ４０３）。ＣＰＵ１１は、テスト対象プログラム２Ｐからの変化出力データをＲＡＭ１３に記録する（ステップＳ４０４）。ＣＰＵ１１は、テスト対象プログラム２Ｐの実行結果が正常系か否か判定する（ステップＳ４０５）。
【００９２】
ＣＰＵ１１は、テスト対象プログラム２Ｐの実行結果が正常系でないと判定した場合（ステップＳ４０５：ＮＯ）、すなわち異常系であると判定した場合、処理対象の変化入力データに異常であることのマーキングをする（ステップＳ４０６）。ここでのマーキングとは、処理対象である変化入力データが異常系であるか否かを判定することができる記録であれば、何でもよい。例えば、その記録は処理対象の変化入力データを識別することができる変化入力ＩＤをログ出力することでもよいし、ステップＳ４０４で記録した変化出力データに異常系であることのフラグを付加することでもよい。ＣＰＵ１１は、ステップＳ４０６を処理した後、ステップＳ４０７に処理を進める。
【００９３】
ＣＰＵ１１は、テスト対象プログラム２Ｐの実行結果が正常系であると判定した場合（ステップＳ４０５：ＹＥＳ）、入力データ組の全データを処理したか否か判定する（ステップＳ４０７）。ＣＰＵ１１は、入力データ組の全データを処理していないと判定した場合（ステップＳ４０７：ＮＯ）、ステップＳ４０１に処理を戻す。ＣＰＵ１１は、入力データ組の全データを処理したと判定した場合（ステップＳ４０７：ＹＥＳ）、ステップＳ４０４でＲＡＭ１３に記録した変化出力データを、ステップＳ４０６で行ったマーキングに基づいて正常系と異常系とに分別する（ステップＳ４０８）。ＣＰＵ１１は、分別した変化出力データを変化入力データと対応付けて入出力データ組ファイルとして、ハードディスク１４に記録し（ステップＳ４０９）、処理を終了する。
【００９４】
図１９は、入出力データ組収集処理の出力結果の一例を示す説明図である。ステージ、入力組ＩＤ、ＩＤ及び入力データ種別は、夫々図１７のステージ、入力組ＩＤ、ＩＤ及び入力データ種別と同じである。結果画面及び結果ＤＢは、夫々図８の結果画面及び結果ＤＢと同じである。
図１９には、正常系の出力結果のみが示されている。図１９における異常系の出力態様は、図８の出力画面及び結果ＤＢと同じである。
【００９５】
図１９の１行目には、画面１のステージにおいて入力ＩＤ＝Ｔ１の入力データを用いてテスト対象プログラム２Ｐを実行した場合、仕様通りの画面２に遷移したことが示されている。また、図１９は、図１７の情報を加味する場合、変化入力ＩＤ＝Ｔ１の入力データである１０を画面１の項目１に入力したとき、遷移画面の画面２の項目１に仕様通りの２１が表示されたことを示す。
【００９６】
図１９の２行目には、画面１のステージにおいて、変化入力ＩＤ＝Ｔ１ｖ１の変化入力データを用いてテスト対象プログラム２Ｐを実行した場合、仕様通りの画面２に遷移したことが示されている。また、図１９は、図１７の情報を加味する場合、変化入力ＩＤ＝Ｔ１ｖ１の変化入力データである１１を画面１の項目１に入力したとき、遷移画面の画面２の項目１に仕様通りの２３が表示されたことを示す。
【００９７】
図１９の３行目には、画面１のステージにおいて、変化入力ＩＤ＝Ｔ１ｖ２の変化入力データを用いてテスト対象プログラム２Ｐを実行した場合、仕様通りの画面２に遷移したことが示されている。また、図１９は、図１７の情報を加味する場合、変化入力ＩＤ＝Ｔ１ｖ２の変化入力データである９を画面１の項目１に入力したとき、遷移画面の画面２の項目１に仕様通りの１９が表示されたことを示す。
【００９８】
図１９の結果ＤＢについては、ＩＤ＝Ｔ１、Ｔ１ｖ１、Ｔ１ｖ２のどの場合も、テーブル１へレコードＡ１が仕様通り追加されたことが示されている。また、ＩＤ＝Ｔ１、Ｔ１ｖ１、Ｔ１ｖ２のどの場合も、テーブル２のレコードＢ１は仕様通り変化がないことが示されている。
【００９９】
図２０は、入出力データ組ファイル２Ｆの内容の一例を示す説明図である。
ステージ、入力組ＩＤ及びＩＤは、夫々図１７のステージ、入力組ＩＤ及びＩＤと同じである。正常／異常は、テスト対象プログラム２Ｐの実行結果が正常系であったか、異常系であったかを示す。出力結果は、図１９の結果画面、結果ＤＢを転記したものである。ただし、図２０では出力結果の詳細を省略して示している。なお、実行結果が異常系である場合、出力結果は空欄である。
【０１００】
分析対象は、入出力組分析部２９が分析対象とする入出力データ組か否かを示す。以降では、出力データ及び変化出力データを出力データ組と呼ぶ。入力データ組と出力データ組とのまとまりが入出力データ組である。入出力組分析部２９は、入出力データ組を１つの単位にして各ステージ、各要素の入出力関係を分析する。入出力分析部２９が分析対象とする入出力データ組の出力結果が全て正常系である場合、図２０の分析対象には○が入る。入出力分析部２９が分析対象とする入出力データ組に属する出力結果が１つでも異常系である場合、図２０の分析対象には×が入る。
【０１０１】
例えば、ステージが画面１である入力組ＩＤ＝Ｔ１の場合、全ての出力結果が正常系であるため、分析対象は○である。ステージが画面１である入力組ＩＤ＝Ｔ２の場合、ＩＤ＝Ｔ２ｖ２の変化入力データに対する変化出力データが異常系であるため、入力組ＩＤ＝Ｔ２の入出力データ組の分析対象は×である。同様に、ＩＤ＝Ｔ３ｖ１の変化入力データに対する変化出力データは異常系であるため、入力組ＩＤ＝Ｔ３の入出力データ組の分析対象は×である。
なお、この段階では、分析対象の欄は空欄でもよい。
【０１０２】
図２１、図２２及び図２３は、入力データ組と出力データ組との対応関係の一例を示す説明図である。図２１は、図２０の分析対象が○に該当する場合の入力データ組と出力データ組との対応関係を示している。図２２及び図２３は、図２０の分析対象が×に該当する場合の入力データ組と出力データ組との対応関係を示している。図２１、図２２及び図２３の横軸は、入力データの値を示す。図２１、図２２及び図２３の縦軸は、出力データの値を示す。横軸上の黒丸は入力データの値を、黒三角は変化入力データの値を示す。また、鎖線も変化入力データの値を示す。横軸上の黒丸と黒三角との間の距離は、入力データの変化分ｄｔに相当する。入力データをＴとした場合、黒丸の右隣の黒三角はＴ＋ｄｔ、黒丸の左隣の黒三角はＴ−ｄｔと表すことができる。
【０１０３】
図２１、図２２及び図２３の斜めの直線は、入力データ組と出力データ組との対応を示す直線である。多くの場合、業務アプリケーションに対して入力値を変化させたとき、入力値の変化と出力値の変化とは一次関数に近似可能な関係又は一次関数を示す。例えば、元手を入力し、損益を出力する株取引シミュレーションプログラムの場合、元手の変化に比例して損益が変化する。あるいは、価格を入力し、消費税を付加した売上を出力する売上管理プログラムの場合、価格の変化に比例して売上が変化する。そこで、図２１、図２２及び図２３には、業務アプリケーションにしばしば認められる直線的な入出力関係が、直線として参考に示されている。
【０１０４】
図２１は、入力データ組の全てのデータについて出力結果が正常系である場合を示している。なお、正常系の場合、変化出力データの全てが直線に対応する値であってもよいし、変化出力データは直線に対応しない値を含んでもよい。正常系の変化出力データは、縦軸上のいずれかの位置にプロットされる。一方、異常系は出力時のプログラムの状態がプログラムの異常終了、例外発生及びエラー画面への遷移になることであるため、異常系の変化出力データは縦軸にプロットすることができるデータを含んでいない。
【０１０５】
図２２は、変化出力データの一部が異常系である場合を示している。例えば、図２２はＴ＋ｄｔの変化入力データに対応する正常系の変化出力データがない場合である。ＴとＴ＋ｄｔとの間に、正常系と異常系との間の臨界入力値を仮定した場合、この臨界入力値より大きな入力値では出力結果が異常系になる可能性がある。図２２では、矢印線により示された領域が異常系の領域である。類似のことが、Ｔ−ｄｔの変化入力データに対応する変化出力データがない場合にもいえる。図２２のような入出力データ組は、入力と出力との間の関係を分析する材料データとして不適切である。
【０１０６】
図２３は、入力データに対する出力データが異常系である場合を示している。本実施の形態では、出力データが異常系となる入力データについては、変化入力データは生成されない。図２３は、図２１及び図２２の参考として示してある。
出力データが異常系となる入力データについて、あえて変化入力データを生成したとしても、多くの場合その変化出力データは異常系になる。図２３は、少なくともＴ−ｄｔとＴ＋ｄｔとの間の入力値に対する出力結果は全て異常系になる例を示している。仮に正常系と異常系とを画する臨界入力値が存在したとしても、その臨界入力値はＴ−ｄｔとＴ＋ｄｔとの間の外側に位置する。図２３は、臨界入力値がＴ−ｄｔより小さい場合を例示している。図２３のような入出力データ組は、入力と出力との間の関係を分析する材料データとして不適切である。
【０１０７】
入力組修正部２８は、入出力組収集部２７が記録した入出力データ組の内、変化出力データが異常系である変化入力データを修正する。入力組記録部２２は、入力組修正部２８が修正した変化入力データにより入力データ組ファイル１Ｆの修正前の変化入力データを上書き更新する。入力設定部２３は、修正後の変化入力データをプログラム実行部２４に与える。入出力組収集部２７は、修正した変化入力データに基づいてプログラム実行部２４にテスト対象プログラム２Ｐを実行させる。入出力組収集部２７は、入出力データ組ファイル２Ｆに記録されている修正前の変化入力データ及び修正前の変化出力データを、夫々修正後の変化入力データ及び修正後の変化出力データで上書き更新する。
なお、入力組記録部２２は、修正した変化入力データに新たな変化入力ＩＤを付加し、修正した変化入力データを入力データ組ファイル１Ｆに追加してもよい。同様に、入出力組収集部２７は、修正後の変化入力データ及び修正後の変化出力データを入出力データ組ファイル２Ｆに追加してもよい。
【０１０８】
異常系の変化入力データを修正した場合、修正した変化入力データに基づく変化出力データは異常系から正常系に変化する可能性がある。これにより、正常系の入出力データ組のデータ数は増大し、後の分析対象のデータ数を増大させることができる。
【０１０９】
入力組修正部２８が変化入力データを修正する方法の１つは、例えば変化入力生成部２６が入力データを変化させるために使用した図１３の変化幅指定テーブルの変化幅を変更する方法である。この方法を修正ルール１と呼ぶ。
【０１１０】
図２４は、修正ルール１による入力データ組と出力データ組との対応関係の一例を示す説明図である。横軸上の黒丸は入力データの値を、黒三角は修正後の変化入力データの値を、白三角は修正前の変化入力データの値を示す。鎖線は、修正後の変化入力データの値を示す。一点鎖線は、修正前の変化入力データの値を示す。図２４の例では、入力データを変化入力データに変化させる変化幅を元の１／２に変更している。変化幅の変更は１／２に限るものではなく、例えば１／Ｎから選択されてよい。ここで、Ｎは自然数である。矢印により示された領域が異常系の入力値に対応する領域である場合、変化幅を縮小することにより、修正後の変化入力データに基づく変化出力データは異常系から正常系に変化することが期待される。
例えば、図２４において異常系の領域が飛び飛びに分布する場合が考えられる。そこで、変化幅の変更は修正前の変化幅を大きくする変更であってもよい。かかる場合、入力データの変化分を大きくすることにより、変化出力データは異常系から正常系に変化する可能性がある。
【０１１１】
図２５は、修正ルール１による修正後の入力データ組ファイル１Ｆの内容の一例を示す説明図である。修正が施された変化入力データの部分は、斜線で示されている。ＩＤ＝Ｔ１の入力データは１０であり、変化前の変化入力データは変化幅の１に基づき、ＩＤ＝Ｔ１ｖ１の１１とＩＤ＝Ｔ１ｖ２の９とであった（図１７参照）。修正ルール１により変化幅を１から半分の０．５に変更した結果、変化入力データはＩＤ＝Ｔ１ｖ１の１０．５とＩＤ＝Ｔ１ｖ２の９．５とに修正されている。
【０１１２】
入力組修正部２８が変化入力データを修正する他の方法は、例えば変化幅は変えずに、入力データ及び変化入力データの値を夫々同じ所定量だけシフト変化させる方法である。この方法を修正ルール２と呼ぶ。
【０１１３】
図２６は、修正ルール２による入力データ組と出力データ組との対応関係の一例を示す説明図である。横軸上の黒丸は修正後の入力データの値を、黒三角は修正後の変化入力データの値を示す。横軸の下の白丸は修正前の入力データの値を、白三角は修正前の変化入力データの値を示す。鎖線は、修正後の変化入力データの値を示す。図２６の例では、変化幅と同じ量だけ、入力データ及び変化入力データの値を夫々小さくする方向にシフトしている。なお、入力データ及び変化入力データの値のシフト量は、変化幅と同じ量に限るものではなく、様々な量が選択されてよい。矢印により示された領域が異常系の入力値に対応する領域である場合、入力データ及び変化入力データの入力値を夫々変更することにより、修正後の変化入力データに基づく変化出力データは異常系から正常系に変化することが期待される。
【０１１４】
図２６の例では、Ｔ及びＴ−ｄｔに夫々対応する修正前の入力データ及び変化入力データから、正常系の出力結果を得た。また、Ｔ＋ｄｔに対応する修正前の変化入力データから、異常系の出力結果を得た。図２６の例では、修正後の入力データの値は、修正前のより小さい変化入力データの値Ｔ−ｄｔに等しい。修正後のより大きい変化入力データの値Ｔは、修正前の入力データの値に等しい。
そのため、修正後のより大きい変化入力データ及び入力データに基づく出力結果は既に取得済みである。修正後のより大きい変化入力データ及び入力データに基づいてテスト対象プログラム２Ｐを駆動し、新たに出力結果を得る必要はない。他方、Ｔ＋ｄｔに対応する修正前のより大きい変化入力データは異常系であったため、この変化入力データをＴ−２ｄｔの値に修正し、より小さい変化入力データとする。そして、このより小さい変化入力データに基づいてテスト対象プログラム２Ｐを駆動する。このように、入力データ及び変化入力データのシフト量を変化幅と同じ量にした場合、変化入力データを修正する処理量を少なく抑えることができる。
【０１１５】
図２７は、修正ルール２による修正後の入力データ組ファイル１Ｆの内容の一例を示す説明図である。修正が施された入力データ及び変化入力データの部分は、斜線で示されている。ＩＤ＝Ｔ１の修正前の入力データは１０であり、修正後の入力データは９である。ＩＤ＝Ｔ１ｖ１の修正前の変化入力データは１１であり、修正後の変化入力データは１０である。ＩＤ＝Ｔ１ｖ２の修正前の変化入力データは９であり、修正後の変化入力データは８である。
すなわち修正前、ＩＤ＝Ｔ１ｖ２、Ｔ１、Ｔ１ｖ１の順に、９、１０、１１の値であった各データは変化幅の１だけ小さい方向に減じられ、夫々８、９、１０に修正されている。
【０１１６】
図２８及び図２９は、修正に係る入出力データ組収集処理の手順の一例を示すフローチャートである。なお、図２８及び図２９で設定される修正ルール２は、入力データ及び変化入力データの値を例えば変化幅と同じ量だけ小さくするルールであるものとする。
ＣＰＵ１１は、入出力データ組ファイル２Ｆをハードディスク１４からＲＡＭ１３にロードする（ステップＳ５０１）。ＣＰＵ１１は、分析対象が×である入力組ＩＤの入出力データ組を抽出し、抽出した入出力データ組のリストを作成する（ステップＳ５０２）。ＣＰＵ１１は、リストから１つの入出力データ組を選択する（ステップＳ５０３）。ＣＰＵ１１は選択した入出力データ組から出力結果が異常系である変化入力データのリストを作成する（ステップＳ５０４）。
【０１１７】
ＣＰＵ１１は、設定された修正ルールに基づいて、ステップＳ５０４で作成したリストの変化入力データを修正する（ステップＳ５０５）。ステップＳ５０５における修正ルールの数は複数である。ＣＰＵ１１は、後述するステップＳ５１０において設定されるカウンタ変数の値に基づいて、修正ルールを選択する。ここでの修正ルールは、例えばカウンタ変数の値が１である場合、変化幅が１／２の修正ルール１であり、カウンタ変数の値が２である場合、変化幅が１／３の修正ルール１である。また、修正ルールは、カウンタ変数の値が３である場合、修正ルール２である。なお、ステップＳ５０５において、修正ルールの選択数は３つに限らず、３つ以下でもよいし、３つ以上でもよい。修正ルールの選択数を増やす場合、例えば修正ルール１における変化幅の縮小率を１／４、１／５、１／６のように次々とより小さい値に設定する。
【０１１８】
ＣＰＵ１１は、修正した変化入力データに基づいてテスト対象プログラム２Ｐを実行する（ステップＳ５０６）。ＣＰＵ１１は、テスト対象プログラム２Ｐからの変化出力データをＲＡＭ１３に記録する（ステップＳ５０７）。ＣＰＵ１１は、テスト対象プログラム２Ｐの実行結果が正常系か否か判定する（ステップＳ５０８）。ＣＰＵ１１は、テスト対象プログラム２Ｐの実行結果が正常系でないと判定した場合（ステップＳ５０８：ＮＯ）、カウンタ変数の値をインクリメントする（ステップＳ５０９）。
【０１１９】
ＣＰＵ１１は、カウンタ変数の値が所定数か否か判定する（ステップＳ５１０）。ＣＰＵ１１は、カウンタ変数の値が所定数でないと判定した場合（ステップＳ５１０：ＮＯ）、ステップＳ５０５に処理を戻す。ＣＰＵ１１は、カウンタ変数の値が所定数であると判定した場合（ステップＳ５１０：ＹＥＳ）、処理対象の変化入力データに異常であることのマーキングをする（ステップＳ５１１）。ここでのマーキングとは、ステップＳ４０６のマーキングと同じである。ＣＰＵ１１は、ステップＳ５１１を処理した後、ステップＳ５１２に処理を進める。
【０１２０】
ＣＰＵ１１は、テスト対象プログラム２Ｐの実行結果が正常系であると判定した場合（ステップＳ５０８：ＹＥＳ）、ステップＳ５０４で作成したリストの変化入力データを全て処理したか否か判定する（ステップＳ５１２）。ＣＰＵ１１は、ステップＳ５０４で作成したリストの変化入力データを全て処理していないと判定した場合（ステップＳ５１２：ＮＯ）、ステップＳ５０５に処理を戻す。ＣＰＵ１１は、ステップＳ５０４で作成したリストの変化入力データを全て処理したと判定した場合（ステップＳ５１２：ＹＥＳ）、ステップＳ５０２で作成したリストの入出力データ組を全て処理したか否か判定する（ステップＳ５１３）。
【０１２１】
ＣＰＵ１１は、ステップＳ５０２で作成したリストの入出力データ組を全て処理していないと判定した場合（ステップＳ５１３：ＮＯ）、ステップＳ５０３に処理を戻す。ＣＰＵ１１は、ステップＳ５０２で作成したリストの入出力データ組を全て処理したと判定した場合（ステップＳ５１３：ＹＥＳ）、ステップＳ５０７でＲＡＭ１３に記録した変化出力データを、ステップＳ５１１で行ったマーキングに基づいて正常系又は異常系に分別する（ステップＳ５１４）。ＣＰＵ１１は、分別した変化出力データを変化入力データと対応付け、入出力データ組ファイル２Ｆに上書きし（ステップＳ５１５）、処理を終了する。なお、修正ルール２が実行された場合、ステップＳ５１５において、ＣＰＵ１１は入力データ及び変化入力データの値が夫々シフトされることによる入出力データ組ファイル２Ｆの変更も行う。
【０１２２】
ステップＳ５１０の判定処理は、ステップＳ５０５へ戻る手順が永久ループにならないようにするための処理である。ステップＳ５１０では、カウンタ変数を利用して、ループを出るようにしている。しかし、例えばループに入ってから時間のカウントを開始し、所定時間経過してもループ内の処理をしている場合、ループから抜け出るようにしてもよい。
【０１２３】
図３０は、修正後の入出力データ組ファイル２Ｆの内容の一例を示す説明図である。図３０は、図２０のＩＤ＝Ｔ２ｖ１、Ｔ３ｖ１の２つの変化入力データを修正し、テスト対象プログラム２Ｐを再実行した結果を示す。
ＩＤ＝Ｔ２ｖ１の変化入力データを修正した場合、その変化出力データは正常系に変化し、入出力組ＩＤ＝Ｔ２の入出力データ組の出力結果はすべて正常系になった。そのため、入出力組ＩＤ＝Ｔ２の修正前の分析対象は×であったが、修正後は○に変化した（図２０参照）。
ＩＤ＝Ｔ３ｖ１の変化入力データを修正した場合、その変化出力データは異常系のままであり、入出力組ＩＤ＝Ｔ３の入出力データ組の出力結果は全てが正常系にはならなかった。そのため、入出力組ＩＤ＝Ｔ３の修正前の分析対象は×であったが、修正後も×のままである（図２０参照）。
【０１２４】
入出力組分析部２９は、入出力組収集部２７が出力した修正後の入出力データ組ファイル２Ｆの分析対象が○である入出力データ組を収集する。入出力組分析部２９は、収集した入出力データ組を利用して、各ステージの変化要素における入力と出力との関係を分析する。
【０１２５】
入出力組分析部２９は、以下の３種類の分析を行う。以降、夫々の分析を分析１、分析２及び分析３と呼ぶ。入出力組分析部２９は、分析１、分析２及び分析３をこの順に実行する。
分析１は、入力値の変化に対する出力値の変化を分析する。入力値の変化に対する出力値の変化は、図２１のグラフ上では、直線の傾きに相当する。
分析２は、入力変化と出力変化との対応関係を示す直線式を算出する。この直線式の直線は、図２１の直線に相当する。
分析３は、分析２において１つの変化要素に対して複数の直線式が得られた場合、これらの直線式の異同を分析する。
以下に、分析１、分析２及び分析３について詳述する。
【０１２６】
図３１は、分析１における分析処理の手順の一例を示すフローチャートである。なお、入出力データ組ファイル２Ｆは、ステージ、入力組ＩＤ、ＩＤの昇順に入出力データ組が記録されているものとする。
ＣＰＵ１１は、入出力データ組ファイル２Ｆをハードディスク１４からＲＡＭ１３にロードする（ステップＳ６０１）。ＣＰＵ１１は、未選択の１つの入力組ＩＤを選択する（ステップＳ６０２）。ＣＰＵ１１は、選択した入力組ＩＤに係る入出力データ組の入力値及び出力値のリストを作成する（ステップＳ６０３）。
【０１２７】
ＣＰＵ１１は、ステップＳ６０３で作成したリストに基づき、入力データの値及び出力データの値を基準にして、入力値の変化分及び出力値の変化分を算出する（ステップＳ６０４）。ＣＰＵ１１は、入力値の変化分に対する出力値の変化分である変化率を算出する（ステップＳ６０５）。ステップＳ６０５において、算出される変化率は２つである。すなわち、１つの入力データに対して変化幅を増減した変化入力データが２つ生成されるため、変化入力データは２つである。グラフ上では、入力データの値及び出力データの値で決まる点から変化入力データの値及び変化出力データの値で決まる点に２本の直線を描くことができる。これら２本の直線の傾きが、ステップＳ６０５で算出される変化率に相当する。
【０１２８】
ＣＰＵ１１は、ステップＳ６０５で算出した変化率が同一か否か判定する（ステップＳ６０６）。ＣＰＵ１１は、ステップＳ６０５で算出した変化率が同一と判定した場合（ステップＳ６０６：ＹＥＳ）、傾き一定と判定し（ステップＳ６０７）、ステップＳ６０９に処理を進める。ここでの傾きは、上述のグラフ上の直線の傾きのことである。ＣＰＵ１１は、ステップＳ６０５で算出した変化率が同一でないと判定した場合（ステップＳ６０６：ＮＯ）、傾き一定でないと判定し（ステップＳ６０８）、ステップＳ６０９に処理を進める。
【０１２９】
ＣＰＵ１１は、全ての入力組ＩＤに係る入出力データ組を処理したか否か判定する（ステップＳ６０９）。ＣＰＵ１１は、全ての入力組ＩＤに係る入出力データ組を処理していないと判定した場合（ステップＳ６０９：ＮＯ）、ステップＳ６０２に処理を戻す。ＣＰＵ１１は、全ての入力組ＩＤに係る入出力データ組を処理したと判定した場合（ステップＳ６０９：ＹＥＳ）、分析結果を分析１ファイルとしてハードディスク１４に記録し（ステップＳ６１０）、処理を終了する。
【０１３０】
なお、ステップＳ６０６における変化率の同一判定は、完全一致した場合に同一と判定してもよいし、２つの変化率の差が所定のずれより小さい場合、同一と判定してもよい。例えば、２つの変化率をＡ、Ｂとした場合、（Ａ−Ｂ）／Ａの値が所定の値より小さいとき、ＡとＢとは同一と判定してもよい。
【０１３１】
図３２は、分析１ファイル３Ｆの内容の一例を示す説明図である。分析１ファイル３Ｆは、分析１の結果を記述したファイルである。入力組ＩＤは、図２０及び図３０の入力組ＩＤと同じである。図３２では、変化入力データにおける入力変化と変化出力データにおける出力変化とに分けて変化分が示されている。
入力変化の変化要素は、変化入力データを生成するために変化させた入力データの要素である。図３２では、画面１の項目１及び項目２が例示されている。変化前は、入力データの値である。変化後は、変化入力データの値である。変化分は、入力データの値と変化入力データの値との差である。
【０１３２】
図３２の出力変化の画面は、入力組データが入力され、テスト対象プログラム２Ｐが実行された場合の遷移画面である。例えば、図１７からわかるように、入力組ＩＤ＝Ｔ１に対応する入力画面は画面１である。図３２は、入力組ＩＤ＝Ｔ１の場合、画面１から画面２に遷移する例を示している。項目は画面２の項目である。変化前は、出力データの値である。変化後は、変化出力データの値である。変化分は出力データの値と変化出力データの値との差である。
【０１３３】
図３２の変化率は、入力変化の変化分に対する出力変化の変化分の比率である。傾きは、１つの変化要素に対して求めた２つの変化率をグラフにおける直線の傾きで表現した場合に、２つの変化率が一定か否かを示す情報である。
【０１３４】
画面１の項目１に入力する入力データを、１０から１１に変化させたときの変化率と、１０から９に変化させたときとの変化率とは、どちらも２であり、傾きは一定である。
【０１３５】
画面１の項目２に入力する入力データを、”Ａ”から”ＡＸ”及び””に変化させたときの変化分は夫々＋１、−１である。ここでの変化分は、文字数の変化である。”Ａ”から”ＡＸ”への変化分は、一文字追加であり、図３２では＋１としている。”Ａ”から””への変化分は、一文字削除であり、図３２では−１としている。画面２の項目２には、画面１の項目２に入力された値と同一の値が出力される。そのため、”Ａ”から”ＡＸ”に変化させた入力変化の変化分と、”Ａ”から”ＡＸ”に変化させた出力変化の変化分とは、どちらも＋１であり、変化率は１である。同様に、”Ａ”から””に変化させた入力変化の変化分と、”Ａ”から””に変化させた出力変化の変化分とは、どちらも−１であり、変化率は１である。従って、”Ａ”から”ＡＸ”に変化させたときの変化率と、”Ａ”から””に変化させたときの変化率とは、同じであり、傾きは一定である。
【０１３６】
なお、業務アプリケーションでは、入力画面から入力した値と同じ値が遷移画面に表示される例が、たいへん多い。例えば、インターネットショッピングにより商品を購入する場合、注文画面から購入商品の個数を入力した場合、次の注文確認画面には注文画面に入力した購入商品の個数がそのまま表示される。
【０１３７】
図３３は、分析１における入力変化と出力変化との対応関係の一例を示す説明図である。横軸、縦軸、黒丸、黒三角及び鎖線が示す意味は、図２１、図２２及び図２３で示した意味と同じである。横軸の下の数値は、入力データ及び変化入力データの各値である。図３３は、図３２の変化要素が項目１である場合の分析例をグラフ化したものである。変化要素が項目１である場合、入力変化と出力変化との対応関係は傾きが一定の直線により示される。
【０１３８】
図３４は、分析１ファイル３Ｆの内容の他例を示す説明図である。図３４の項目は、図３２の項目と同じである。図３２及び図３３は入力変化と出力変化との対応関係を示す直線の傾きが一定である場合であったが、図３４は、この直線の傾きが一定でない場合の分析結果を示している。変化要素である項目１の入力データの値を１０から１１に変化させた場合、出力データの値は２１から２３に変化し、その変化率は２である。他方、変化要素の項目１の入力データの値を１０から９に変化させた場合、出力データの値は２１から２０に変化し、その変化率は１である。そのため、傾きには２倍の相違がある。
【０１３９】
図３５及び図３６は、分析１における入力変化と出力変化との対応関係の他例を示す説明図である。図３５及び図３６における横軸、縦軸、黒丸、黒三角及び鎖線が示す意味は、図２１、図２２及び図２３で示した意味と同じである。横軸の下の数値は、入力データ及び変化入力データの各値である。図３５及び図３６は、図３４の分析結果をグラフ化して解釈したものである。
【０１４０】
図３５に示すように、変化入力データの値９と入力データの値１０との間で、入力変化と出力変化との対応関係を示す直線が屈曲している場合、図３４の分析結果が得られる。図３５は、直線で示されるテスト対象プログラム２Ｐの入出力特性が特定の入力値を境にして不連続に変化する場合を示している。
【０１４１】
図３４の分析結果は、他の解釈も可能である。例えば、図３６に示すように、変化入力データの値９と変化入力データの値１０との間で、入力変化と出力変化との対応関係が曲線である場合でも図３４の分析結果を説明することができる。
【０１４２】
図３５及び図３６は、入力変化と出力変化との対応関係が非線形であることを示し、図３４のように傾きが相違する入出力データ組は、期待値設定支援のための分析データとして適切でないと考えられる。そのため、次の分析２では、傾きが一定である入出力データ組のデータのみを用いて、入力変化と出力変化との対応関係を示す直線の式を算出する。
【０１４３】
図３７は、分析２における分析処理の手順の一例を示すフローチャートである。なお、分析１ファイル３Ｆは、入力組ＩＤ及び変化要素の昇順に分析１の分析結果が記録されているものとする。
ＣＰＵ１１は、分析１ファイル３Ｆをハードディスク１４からＲＡＭ１３にロードする（ステップＳ７０１）。ＣＰＵ１１は、分析１ファイル３Ｆの入出力データ組の内、傾きが一定である入出力データ組を抽出し、抽出した入出力データ組のリストを作成する（ステップＳ７０２）。ＣＰＵ１１は、ステップＳ７０２で作成したリストから、未選択の１つの入出力データ組を選択する（ステップＳ７０３）。
【０１４４】
ＣＰＵ１１は、選択した入出力データ組に基づいて、直線の傾きと切片とを算出する（ステップＳ７０４）。ここでの直線は、入力変化と出力変化との対応関係を示す直線である。仮に、入力値をｘ、出力値をｙとした場合、ｙ＝ｍｘ＋ｎについて、ｍが傾き、ｎが切片である。１つの変化要素について、変化入力データ及び変化出力データは夫々２つずつあるので、ｍとｎとは算出可能である。
なお、１つの変化要素について、グラフ上での変化入力データ及び変化出力データに対応する２点の情報の他に、入力データ及び出力データに対応する１点の情報があるので、これら３点の情報を利用して直線が決定されてもよい。かかる場合、ａｘ＋ｂｙ＋ｃ＝０の直線式に係るａ、ｂ、ｃを算出してもよい。
【０１４５】
ＣＰＵ１１は、算出した直線式をＲＡＭ１３に記録する（ステップＳ７０５）。ＣＰＵ１１は、ステップＳ７０２で作成したリストの全ての変化要素を処理したか否か判定する（ステップＳ７０６）。ＣＰＵ１１は、ステップＳ７０２で作成したリストの全ての変化要素を処理していないと判定した場合（ステップＳ７０６：ＮＯ）、ステップＳ７０３に処理を戻す。ＣＰＵ１１は、ステップＳ７０２で作成したリストの全ての変化要素を処理したと判定した場合（ステップＳ７０６：ＹＥＳ）、分析結果を分析２ファイルとしてハードディスク１４に記録し（ステップＳ７０７）、処理を終了する。
【０１４６】
図３８は、分析２ファイル４Ｆの内容の一例を示す説明図である。分析２ファイル４Ｆは、分析２の結果を記述したファイルである。入力組ＩＤは、図３２及び図３４の入力組ＩＤと同じである。入力の画面は、入力データ及び変化入力データが入力される画面である。変化要素は、図３２及び図３４の変化要素と同じであり、画面の項目に相当する。入力の入力値は、入力データ及び変化入力データの値である。変化要素毎に、１つの入力データと２つの変化入力データとの値が縦に並べられている。出力の画面及び項目は、夫々図３２及び図３４の画面及び項目と同じである。出力の出力値は、出力データ及び変化出力データの値である。変化要素毎に、１つの出力データと２つの変化出力データとの値が縦に並べられている。入力列の入力値と出力列の出力値とは、入出力関係が対応する順序で、縦に並べられている。傾きは、図３２及び図３４の変化率と同じである。入出力関係は、分析２において算出した直線式が示されている。
【０１４７】
図３８の１列目の入出力関係は、画面２．項目１＝２×画面１.項目１＋１である。画面２．項目１は、画面２の項目１に対応するデータの変数を意味し、画面１．項目１は画面１の項目１に対応するデータの変数を意味する。１列目の入出力関係から、入力変化と出力変化との対応関係を示す直線の傾きは２、切片は１であることがわかる。
図３８の２列目の入出力関係は、画面２．項目２＝画面１.項目２である。画面２．項目２は、画面２の項目２に対応するデータの変数を意味し、画面１．項目２は画面１の項目２に対応するデータの変数を意味する。２列目の入出力関係から、入力変化と出力変化との対応関係を示す直線の傾きは１、切片は０であることがわかる。
【０１４８】
図３８の分析２ファイル４Ｆの例では、画面１の項目１に対して、１０前後の入力値と２０前後の出力値との入出力データ組だけが示されている。また、画面１の項目２に対して”Ａ”に１文字追加、１文字削除された入出力データ組だけが示されている。すなわち図３８では、１つの変化要素に対して１つの入出力データ組が示されている。
しかし、１つの変化要素に対して複数の入力データが設定されてもよい。かかる場合、１つの変化要素に対して複数の入出力データ組が生成される。例えば、画面１の項目１に対して、値が１０である入力データと、値が２０である入力データとが２つ生成された場合、値が１０前後の変化入力データと２０前後の変化入力データとが生成される。これら２つの入力データ組に対して、夫々２０前後と４０前後の出力データ組が得られた場合、１つの変化要素に対する２つの入出力データ組が分析１及び分析２において分析される。その結果、分析２ファイル４Ｆには、１つの変化要素に対して、２つの直線式が記述される場合がある。
【０１４９】
分析３は、分析２において１つの変化要素に対して複数の直線式が得られた場合、これらの直線式の異同を分析する。
【０１５０】
図３９は、分析３における分析処理の手順の一例を示すフローチャートである。
ＣＰＵ１１は、分析２ファイル４Ｆをハードディスク１４からＲＡＭ１３にロードする（ステップＳ８０１）。ＣＰＵ１１は、１つの変化要素に対して複数の直線式を算出した入出力データ組を分析２ファイル４Ｆから抽出し、抽出した入出力データ組を変化要素毎にまとめたリストを作成する（ステップＳ８０２）。ＣＰＵ１１は、１つの変化要素を選択し、その変化要素について求められた直線式のリストを作成する（ステップＳ８０３）。ＣＰＵ１１は、ステップＳ８０３で作成したリストから、例えば直線式を算出する元となった入力値の小さい順に、２つの直線式を選択する（ステップＳ８０４）。
【０１５１】
ＣＰＵ１１は、選択した２つの直線式が同一か否か判定する（ステップＳ８０５）。ＣＰＵ１１は、選択した２つの直線式が同一であると判定した場合（ステップＳ８０５：ＹＥＳ）、２つの直線式に対応する２つの入出力データ組に同じマークを付け（ステップＳ８０６）、ステップＳ８０８に処理を進める。ＣＰＵ１１は、選択した２つの直線式が同一でないと判定した場合（ステップＳ８０５：ＮＯ）、２つの直線式に対応する２つの入出力データ組に異なるマークを付け（ステップＳ８０７）、ステップＳ８０８に処理を進める。ステップＳ８０６及びステップＳ８０７におけるマークは、例えば直線式が同一である入出力データ組の入出力組ＩＤと、直線式が同一でない入出力データ組の入出力組ＩＤを区別可能な形式でログに出力することである。あるいは、ステップＳ８０６及びステップＳ８０７におけるマークは、直線式が同一である入出力データ組と直線式が同一でない入出力データ組とに夫々異なる所定のデータを付加することでもよい。
【０１５２】
ＣＰＵ１１は、１つの変化要素に係る全ての直線式について、ステップＳ８０５〜ステップＳ８０７の処理をしたか否か判定する（ステップＳ８０８）。ＣＰＵ１１は、１つの変化要素に係る全ての直線式について、ステップＳ８０５〜ステップＳ８０７の処理をしていないと判定した場合（ステップＳ８０８：ＮＯ）、ステップＳ８０４に処理を戻す。ＣＰＵ１１は、１つの変化要素に係る全ての直線式について、ステップＳ８０５〜ステップＳ８０７の処理をしたと判定した場合（ステップＳ８０８：ＹＥＳ）、全ての変化要素を処理したか否か判定する（ステップＳ８０９）。ＣＰＵ１１は、全ての変化要素を処理していないと判定した場合（ステップＳ８０９：ＮＯ）、ステップＳ８０３に処理を戻す。ＣＰＵ１１は、全ての変化要素を処理したと判定した場合（ステップＳ８０９：ＹＥＳ）、分析結果を分析３ファイルとしてハードディスク１４に記録し（ステップＳ８１０）、処理を終了する。
【０１５３】
ステップＳ８０４では、ステップＳ８０３で作成したリストから、例えば直線式を算出する元となった入力値の小さい順に、２つの直線式を選択する。しかし、ステップＳ８０４では、ステップＳ８０３で作成したリストの全ての直線式から２つの直線式を選択してもよい。すなわち、ステップＳ８０３で作成したリストの直線の数がｎである場合、n Ｃ 2通りの選択が行われてもよい。
【０１５４】
図４０は、分析３ファイル５Ｆの内容の一例を示す説明図である。分析３ファイル５Ｆは、分析３の結果を記述したファイルである。図４０の変化要素は、図３８の変化要素と同じである。入力ＩＤは、入力データの識別記号である。入力及び出力は、夫々入力画面及びその項目並びに出力画面である遷移画面及びその項目を示す。入出力関係の式は、分析２で算出した直線式である。入出力関係のＮｏは、直線式を区別するための番号である。
【０１５５】
入力ＩＤ＝Ｔ１の入力データの値は１０であり、入力ＩＤ＝Ｔ２の入力データの値は２０である。図４０は、変化要素である画面１の項目１に対して、１０である入力データの値を変化させて求めた直線式と、２０である入力データの値を変化させて求めた直線式とが同じであった場合を示している。図４０では、１つの変化要素である画面１の項目１に対して求めた２つの直線式が同一であるため、Ｎｏは１つである。１つの変化要素に対して求めた２つの直線式が異なる場合、Ｎｏには夫々異なる番号が入る。
【０１５６】
図４１は、分析３における入力変化と出力変化との対応関係の一例を示す説明図である。図４１における横軸及び縦軸が示す意味は、図２１、図２２及び図２３で示した意味と同じである。横軸上の黒丸は入力データを示し、その下の数値は入力データの値である。図４１は、図４０の分析結果の一例をグラフ化して示したものである。図４１には、図４０のＮｏ＝１の直線のみが示されている。
図４１の例の場合、入力値１０と入力値２０とにおけるテスト対象プログラム２Ｐの入出力関係の間に変化はない。そのため、テストは入力値１０又は入力値２０のいずれか一方のみで実施すればよいと考えられる。そのため、期待値は１つだけ設定すればよい。
【０１５７】
図４２は、分析３ファイル５Ｆの内容の他例を示す説明図である。図４２の各項目は、図４０の各項目と同じである。図４２では、変化要素である画面１の項目１に対して、１０である入力データの値を変化させて求めた直線式と、２０である入力データの値を変化させて求めた直線式とが同じではなかった場合を示している。具体的には、入力ＩＤ＝Ｔ１の入力データの値を変化させた場合、算出されたＮｏ＝１の直線式は画面２．項目１＝２×画面１．項目１＋１であった。一方、入力ＩＤ＝Ｔ２の入力データの値を変化させた場合、算出されたＮｏ＝２の直線式は画面２．項目１＝画面１．項目１＋２であった。
【０１５８】
図４３及び図４４は、分析３における入力変化と出力変化との対応関係の他例を示す説明図である。図４３及び図４４における横軸、縦軸、横軸上の黒丸及び数値が示す意味は、図４１と同じである。図４３及び図４４は、入力データの値１０、２０に基づいて算出した直線が異なる場合を示している。なお、図４３及び図４４における直線は、図４２の式とは無関係である。
【０１５９】
図４３は、テスト対象プログラム２Ｐが入力値１５付近で入出力の挙動が変化することを示している。図４４は、テスト対象プログラム２Ｐの処理傾向は変化しないが、入力値１５付近で戻り値が不連続に変化することを示している。
【０１６０】
図４３のような分析結果が得られた場合、テストは少なくとも入力値１０及び入力値２０の両方を用いて実施すべきと考えられる。そのため、期待値は少なくとも２つ設定すべきである。また、テストの精度を向上させるために、値が１５付近、１０未満、２０以上の各入力データを用いた追加テストを検討すべきである。
【０１６１】
図４４のような分析結果が得られた場合、テストは少なくとも入力値１０及び入力値２０の両方を用いて実施すべきと考えられる。そのため、期待値は少なくとも２つ設定すべきである。また、テストの精度を向上させるために、値が１５付近の入力データを複数用いた追加テストを検討すべきである。
【０１６２】
図４０及び図４１並びに図４２、図４３及び図４４は、夫々１つの変化要素に対して２つの異なる入力値を変化させて求めた入力変化と出力変化との対応関係が同一である場合と異なる場合とを示している。この分析３の結果の違いは、テスト対象プログラム２Ｐの良し悪しではなく、テスト対象プログラム２Ｐの動作の違いを示している。期待値の設定はテスト対象プログラム２Ｐの動作を理解して行われるべきであり、ユーザは分析３の結果から期待値の設定をする上で有益な情報を得ることができる。
なお、分析３において、１つの変化要素に対して変化させる入力データの数は２つに限らない。この数が３つ以上であってもよいことは勿論である。
【０１６３】
期待値設定支援部３０は、入出力組分析部２９が分析した結果及び期待値を表形式で表示部１７に出力する。ユーザは、入出力組分析部２９により出力された分析結果を参照し、期待値を設定する、設定しない又は保留する等の判定を下す。
【０１６４】
図４５は、期待値設定画面１ｆの一例を示す説明図である。期待値設定画面１ｆは、テスト対象プログラム２Ｐの期待値が表示される画面である。期待値設定支援部３０は、分析１ファイル３Ｆ、分析２ファイル４Ｆ及び分析３ファイル５Ｆに基づいて、期待値設定画面１ｆをテスト支援装置１の表示部１７に表示する。
【０１６５】
期待値設定画面１ｆのステージは、テスト対象プログラム２Ｐが扱う業務処理のステージである。ステージは、各業務処理に対応する画面名称で示されている。図４５の例では、ステージ欄の画面１がテスト対象の入力画面であることを示している。期待値の式Ｎｏは、画面１の項目１、項目２及び項目３について分析された各直線式の組合せを識別する番号である。期待値の設定には、ラジオボタン「する」、「しない」又は「保留」の３種類が表示される。ユーザは、操作部１８のマウス等を操作することによりいずれか１つのラジオボタンを選択することができる。期待値の項目は、出力値が表示される遷移画面の項目であり、遷移画面と項目とはドットにより連結して表示されている。期待値の値は、テスト支援装置１が出力する期待値である。
【０１６６】
入力値の項目は、入力データを入力する入力画面の項目であり、入力画面と項目とはドットにより連結して表示されている。入力値の値は、期待値と比較される出力値を得るための入力データの値である。入力ＩＤは、入力データの識別記号である。図４５の場合、入力ＩＤにＴ１とＴ２とが列挙されている。図４５は、画面１の項目１、項目２及び項目３についてＴ１及びＴ２のテストをした場合、分析３の結果がどの項目についても夫々同一の直線であったことを示している。また、図４５は、画面１の項目１、項目２及び項目３に入力する入力データを組み合わせて変化させた場合を扱っている。そのため、期待値設定画面１ｆは、画面１の項目１、項目２及び項目３に対する画面２の項目１、項目２及び項目３の期待値をセットで設定するように表示している。
【０１６７】
入出力関係の種別は、入出力関係の式の種別を示す。入力値をｘ、出力値をｙとした場合、ｙ＝ｘであるとき、種別は転記である。すなわち、入力画面に入力した値と出力画面である遷移画面に出力された値とが同一である場合、データが入力画面から次画面に転記されていると考えられることから、転記と表示している。他方、入力値と出力値との関係がｙ＝ｘ以外の一次関数で表現される場合、単なる転記ではなく、出力値は入力値から何らかの変換を被っていると考えられることから、変換と表示している。入出力関係の式は、分析３ファイル５Ｆの式と同じである。
【０１６８】
図４５では、画面１の各項目に夫々１０、”Ａ”及び２０１０／１／１を入力し、テスト対象プログラム２Ｐを駆動した場合、遷移画面である画面２の各項目に出力される期待値が夫々２１、”Ａ”及び２０１０／１／１であることを示している。ユーザは、図４５の式と、テスト対象プログラム２Ｐの設計仕様、要求仕様等とを考慮し、出力された値に期待値を設定する、しない又は保留を判断する。ユーザは、判断結果に基づいて、期待値設定のラジオボタンを選択する。ユーザが期待値設定のラジオボタンを選択し、例えば所定のボタンを押下した場合、ＣＰＵ１１は、当該期待値の選択結果をハードディスク１４に記録する。例えば、ＣＰＵ１１は、期待値を設定する選択が行われた場合、期待値を設定するための所定ファイルを作成し、作成した所定ファイルをハードディスク１４に記録する。
【０１６９】
図４５の場合、入力ＩＤ＝Ｔ１とＴ２とは、重複したテストケースとなる。ユーザはＴ１とＴ２との内、どちらか一方のテストケースを選択することができる。
なお、図４５は、Ｔ１に基づく分析結果から期待値が表示されているが、Ｔ１とＴ２との内、いずれかの一方に基づく期待値が表示されてもよいし、両方に基づく期待値が２つ表示されてもよい。かかる場合、期待値に対応する入力値も２つ表示する。また、図４５の期待値及び入力値として、夫々変化出力データの値及び当該変化出力データに対応する変化入力データの値が表示されてもよい。
【０１７０】
図４６は、期待値設定画面１ｆの他例を示す説明図である。図４６の各項目は、図４５の各項目と同じである。図４５は、画面１の項目１、項目２及び項目３についてＴ１及びＴ２のテストをした場合、分析３の結果が項目１については異なる直線であり、項目２及び項目３については同じ直線であったことを示している。また、図４５は、画面１の項目１、項目２及び項目３に入力する入力データを組み合わせて変化させた場合を扱っている。
【０１７１】
画面１の項目２及び項目３については、入力ＩＤ＝Ｔ１、Ｔ２のどちらについても転記の式が表示されている。しかし、画面１の項目１については、入力ＩＤがＴ１とＴ２とで異なる変換の式が表示されている。変換の式が異なる場合、このことを強調するために式の欄には斜線が描かれている。画面１の項目１について、テスト対象プログラム２Ｐは入力値１０と入力値２０とで動作を変化させたことがわかる。ユーザは、算出された式の妥当性を評価した上でテスト支援装置１が出力した期待値を選択及び設定することができる。
【０１７２】
図４７は、異常系の期待値設定画面２ｆの一例を示す説明図である。ＣＰＵ１１は、図７のステップＳ２０９でハードディスク１４に記録したエラー情報を読み込み、異常系の期待値設定画面２ｆを表示部１７に表示する。ステージ、期待値設定及び入力ＩＤは、図４５及び図４６のステージ、期待値設定及び入力ＩＤと同じである。異常の内容の種別は、エラー画面、異常終了、例外発生のいずれかである。異常の内容の期待値は、図７における異常系の出力データの値である。例えば図４７の期待値は、種別がエラー画面である場合、エラーメッセージであり、種別が異常終了である場合、エラーコード番号であり、種別が例外発生である場合、例外の種別である。図４５及び図４６と同様に、ユーザは異常系のテストのために、異常系の期待値設定画面２ｆから異常系の期待値設定を選択することができる。
【０１７３】
テスト支援装置１によれば、入力データ及び当該入力データに対応する出力データ、並びに入力データを変化させた変化入力データ及び当該変化入力データに対応する変化出力データに基づいて、テスト対象プログラム２Ｐの動作特性を示す直線式を算出することができる。
【０１７４】
テスト支援装置１は、入力データの値の近傍前後で、入力変化と出力変化との比が一定でない場合、かかる入出力データ組は分析２で利用しない。一方、テスト支援装置１は、入力データの値の近傍前後で、入力変化と出力変化との比が一定である場合、かかる入出力データ組を分析２で利用する。これにより、非線形データを入力変化と出力変化との対応関係を示す直線式を算出するための材料から除外することで、テスト支援装置１は分析結果の信頼性を担保することができる。
【０１７５】
テスト支援装置１は、１つの画面項目に入力される複数の入力データに対応する複数の直線式が一致する場合と一致しない場合とに分けて、直線式及び期待値の出力を行う。これにより、ユーザは期待値を設定するための判断材料を取得することができ、期待値の設定の選択幅を広げることができる。
【０１７６】
テスト支援装置１は、出力データが正常系であることを確認した入力データだけを変化させてテスト対象プログラム２Ｐの動作特性を示す直線式を算出する。異常系の入力データを変化させても、変化出力データは異常系のままである。そのため、正常系の入出力データ組を収集することは、期待値設定のための分析にとって生産的である。
【０１７７】
テスト支援装置１は、変化出力データが異常系である場合、この変化出力データに対応する変化入力データを修正し、再びテスト対象プログラム２Ｐを実行する。これにより、分析対象である正常系の入出力データ組のデータ数を増やすことができ、テスト支援装置１は分析結果の信頼性を高めることができる。
【０１７８】
図４５及び図４６の入出力関係の式として、分析２で算出された式が表示される。しかし、期待値設定画面１ｆには、入出力関係の式に対応する直線が図４１、図４３及び図４４のようにビジュアル化されて表示されてもよい。
【０１７９】
本実施の形態では、画面からの入力データを中心に扱った。一方、ＤＢについては、テーブルの列の値又はレコード数を変化させることにより、入出力データ組を生成することができる。従って、ＤＢについても期待値設定画面１ｆを表示することができる。しかし、レコード追加、レコード変更及びレコード削除等のアクションについては、入力変化と出力変化との関係を数量化できる場合とできない場合とがある。まず、数量化できる場合について説明する。
【０１８０】
例えば、住所登録画面があり、住所項目に住所を入力して登録ボタンを押下した場合、住所を記録する住所テーブルに入力した住所を１レコードとして追加するＤＢ操作プログラムがあるものとする。住所は住所テーブルの住所列に格納されるものとする。
かかる場合、入力データである住所の文字列を一文字追加又は一文字削除して変化入力データを生成するとき、変化入力データがそのまま住所テーブルに追加される。この例は、図４５及び図４６の転記に該当し、入出力関係の式は住所登録画面．住所＝住所テーブル．住所と記述することができ、グラフ化も可能である。
【０１８１】
一方、ＤＢ操作プログラムにおいて、レコード追加、レコード変更及びレコード削除等のアクションを出力ととらえた場合、出力結果はアクションの有無又はアクションの成功、失敗となる。この出力結果はブール値に変換することはできるが、図４１、図４３及び図４４のようなグラフ化は困難である。かかる場合、テスト支援装置１は、テーブルの変化だけでも出力してよい。
【０１８２】
図４８は、テーブル変化一覧画面３ｆの一例を示す説明図である。テーブル変化一覧画面は、入力データの変化に対応するテーブルの変化を示す画面である。ステージ、入力組ＩＤ、ＩＤ及び入力データ種別は、夫々図１７のステージ、入力組ＩＤ、ＩＤ及び入力データ種別と同じである。結果ＤＢには、各テーブルの変化が示される。
例えば、ある住所を入力データとし、ＩＤ＝Ｔ１とする。入力データの住所を変化させた住所を変化入力データとし、ＩＤ＝Ｔ１ｖ１、Ｔ１ｖ２とする。ＣＰＵ１１は、ＩＤ＝Ｔ１、Ｔ１ｖ１、Ｔ１ｖ２の出力を夫々追加成功又は追加失敗として入出力データ組ファイル２Ｆに記録する。図４８は、その結果をまとめた一例である。
ＤＢ操作に失敗する出力結果は、多くの場合異常系であると考えられる。そこで、図４７の異常系の期待値設定画面２ｆに図４８の入力データ種別及び結果ＤＢが追加されてもよい。
【０１８３】
分析２では、分析１により１つの入力データに対して傾きが一致すると判定された直線の式を求める。しかし、分析１を実行せずに、分析２を実行してもよい。かかる場合、１つの入力データに対して例えば２つの変化入力データを生成する必要はなく、１つの入力データに対して１つの変化入力データを生成する。従って、１つの入力データに対して取得される変化出力データも１つである。
例えば、図２１のような入力と出力との対応関係を示すグラフ上において、入力データ及び出力データの値に対応する点が１つ求まる。また、変化入力データ及び変化出力データの値に対応する点がもう１つ求まる。従って、１つの入力データに対して２点が求まるので、１つの入力データに対して１つの直線を算出することが可能である。
【０１８４】
テスト支援装置１を動作させるためのプログラム１Ｐは、ディスクドライブ１５に光ディスク１ａを読み取らせてハードディスク１４に記録してもよい。また、プログラム１Ｐは、インターネットＮを介して接続される他の情報処理装置又は記録装置（図示せず）からダウンロードすることも可能である。あるいは、また、プログラム１Ｐを記録したフラッシュメモリ等の半導体メモリ１ｃがテスト支援装置１内に実装されてもよい。
【０１８５】
以上の実施の形態に関し、さらに以下の付記を開示する。
【０１８６】
（付記１）
対象プログラムのテストを支援する処理をコンピュータに実行させるコンピュータプログラムにおいて、
第１入力データ及び該第１入力データと異なる第２入力データが対応付けて記録された記録手段から該第１入力データを取得し、
該第１入力データに基づいて前記対象プログラムから出力された第１出力データを取得し、
前記記録手段から第２入力データを取得し、
該第２入力データに基づいて前記対象プログラムから出力された第２出力データを取得し、
取得した前記第１及び第２入力データ並びに第１及び第２出力データに基づいて、前記対象プログラムの入出力データに係る関係式を算出する
処理をコンピュータに実行させるコンピュータプログラム。
【０１８７】
（付記２）
単一の前記第１入力データの値又はデータ量を変化させて複数の第２入力データを生成し、
生成した複数の前記第２入力データを前記記録手段に記録し、
前記第２出力データを取得する処理は、複数の前記第２入力データに基づいて前記対象プログラムから夫々出力された第２出力データを複数取得し、
前記第１入力データの各変化に対応させて、前記第１及び第２入力データの間の変化と、前記第１及び第２出力データの間の変化との比を複数算出し、
前記関係式を算出する処理は、複数の前記比が等しい場合、該関係式を算出する
付記１に記載のコンピュータプログラム。
【０１８８】
（付記３）
複数の異なる前記第１入力データを夫々変化させて複数の第２入力データを生成し、
生成した複数の前記第２入力データを前記記録手段に記録し、
前記第１出力データを取得する処理は、複数の異なる前記第１入力データに基づいて前記対象プログラムから夫々出力された複数の第１出力データを取得し、
前記第２出力データを取得する処理は、複数の前記第２入力データに基づいて前記対象プログラムから夫々出力された複数の第２出力データを取得し、
前記関係式を算出する処理は、互いに対応する前記複数の第１及び第２入力データ並びに第１及び第２出力データに基づいて、前記関係式を複数算出し、
複数の前記関係式の間で該関係式の異同を判定する
付記１又は付記２に記載のコンピュータプログラム。
【０１８９】
（付記４）
前記対象プログラムのテストは複数のテスト項目を有し、
前記第２入力データを生成する処理は、同一テスト項目における複数の異なる第１入力データを夫々変化させて複数の第２入力データを生成する
付記３に記載のコンピュータプログラム。
【０１９０】
（付記５）
前記第１出力データがエラー処理に関する情報を含むか否かに基づいて、該第１出力データは異常であるか否かを判定し、
前記第２入力データを生成する処理は、異常でないと判定した前記第１出力データに対応する第１入力データを変化させて第２入力データを生成する
付記２から付記４までのいずれか一つに記載のコンピュータプログラム。
【０１９１】
（付記６）
前記第２出力データがエラー処理に関する情報を含むか否かに基づいて、該第２出力データは異常であるか否かを判定し、
異常であると判定した前記第２出力データに対応する第２入力データを所定の規則に従って変更し、
前記第２出力データを取得する処理は、変更した前記第２入力データに基づいて前記対象プログラムから出力された第２出力データを取得する
付記１から付記５までのいずれか一つに記載のコンピュータプログラム。
【０１９２】
（付記７）
前記第１出力若しくは第２出力データ、１つ若しくは複数の前記関係式又は前記関係式の異同を判定する処理が判定した判定結果を出力手段に出力するデータを生成する
付記３又は付記４に記載のコンピュータプログラム。
【０１９３】
（付記８）
前記関係式は一次関数の式である
付記１から付記７までのいずれか一つに記載のコンピュータプログラム。
【０１９４】
（付記９）
前記エラー処理は、前記対象プログラムの異常終了処理、例外の発生処理又はエラー画面への遷移処理を含む
付記５又は付記６に記載のコンピュータプログラム。
【０１９５】
（付記１０）
対象プログラムのテストを支援するテスト支援方法において、
コンピュータが、
第１入力データ及び該第１入力データと異なる第２入力データが対応付けて記録された記録手段から該第１入力データを取得し、
該第１入力データに基づいて前記対象プログラムから出力された第１出力データを取得し、
前記記録手段から第２入力データを取得し、
該第２入力データに基づいて前記対象プログラムから出力された第２出力データを取得し、
取得した前記第１及び第２入力データ並びに第１及び第２出力データに基づいて、前記対象プログラムの入出力データに係る関係式を算出する
テスト支援方法。
【０１９６】
（付記１１）
対象プログラムのテストを支援するテスト支援装置において、
第１入力データ及び該第１入力データと異なる第２入力データが対応付けて記録された記録手段と、
該記録手段に記録された第１入力データに基づいて前記対象プログラムから出力された第１出力データを取得する第１取得部と、
前記記録手段に記録された第２入力データに基づいて前記対象プログラムから出力された第２出力データを取得する第２取得部と、
前記第１及び第２入力データ並びに第１及び第２出力データに基づいて、前記対象プログラムの入出力データに係る関係式を算出する算出部と
を備えるテスト支援装置。
【符号の説明】
【０１９７】
１    テスト支援装置
１１  ＣＰＵ
１３  ＲＡＭ
１４  ハードディスク
１７  表示部
２５  異常系判定部
２６  変化入力生成部
２７  入出力組収集部
２８  入力組修正部
２９  入出力組分析部
３０  期待値設定支援部
１Ｐ  プログラム
２Ｐ  テスト対象プログラム
１ａ  光ディスク
【図１】
2012159952.tif 000003
【図２】
2012159952.tif 000004
【図３】
2012159952.tif 000005
【図４】
2012159952.tif 000006
【図５】
2012159952.tif 000007
【図６】
2012159952.tif 000008
【図７】
2012159952.tif 000009
【図８】
2012159952.tif 000010
【図９】
2012159952.tif 000011
【図１０】
2012159952.tif 000012
【図１１】
2012159952.tif 000013
【図１２】
2012159952.tif 000014
【図１３】
2012159952.tif 000015
【図１４】
2012159952.tif 000016
【図１５】
2012159952.tif 000017
【図１６】
2012159952.tif 000018
【図１７】
2012159952.tif 000019
【図１８】
2012159952.tif 000020
【図１９】
2012159952.tif 000021
【図２０】
2012159952.tif 000022
【図２１】
2012159952.tif 000023
【図２２】
2012159952.tif 000024
【図２３】
2012159952.tif 000025
【図２４】
2012159952.tif 000026
【図２５】
2012159952.tif 000027
【図２６】
2012159952.tif 000028
【図２７】
2012159952.tif 000029
【図２８】
2012159952.tif 000030
【図２９】
2012159952.tif 000031
【図３０】
2012159952.tif 000032
【図３１】
2012159952.tif 000033
【図３２】
2012159952.tif 000034
【図３３】
2012159952.tif 000035
【図３４】
2012159952.tif 000036
【図３５】
2012159952.tif 000037
【図３６】
2012159952.tif 000038
【図３７】
2012159952.tif 000039
【図３８】
2012159952.tif 000040
【図３９】
2012159952.tif 000041
【図４０】
2012159952.tif 000042
【図４１】
2012159952.tif 000043
【図４２】
2012159952.tif 000044
【図４３】
2012159952.tif 000045
【図４４】
2012159952.tif 000046
【図４５】
2012159952.tif 000047
【図４６】
2012159952.tif 000048
【図４７】
2012159952.tif 000049
【図４８】
2012159952.tif 000050