(57)【要約】【課題】状態遷移図や状態遷移表に基づいて記述された試験対象モジュールの単体試験にあたり、テストスタブ作成の作業頻度の低減や、テストスタブを用いた単体試験に要する作業量の削減や実施時間の短縮化を実現できる単体試験支援装置を提供する。【解決手段】過去のスタブの反応内容の履歴から取得された選択肢を、当該スタブが実行されるソフトウェアモジュールの状態遷移の特徴に基づいて、選択される可能性が高いと想定される順に並び替えて提示する。【選択図】図１
2010244335.tif 000002
【特許請求の範囲】
【請求項１】
実現すべき機能の状態を示す状態遷移に基づいて記述されたソフトウェアモジュールを対象とする単体試験の実行を支援する単体試験支援装置において、
試験対象の前記ソフトウェアモジュールによる下位の未定義のスタブ関数の呼び出しを検出するスタブ呼出検出部と、
前記呼び出しされたスタブの反応内容をユーザとの間で対話的に決定する入出力部と、
前記入出力部を介して決定されたスタブの反応内容を実行するスタブ反応実行部と、
過去に決定されたスタブの反応内容の履歴を記憶するスタブ反応記憶部と、
前記呼び出しされたスタブに対応する反応内容の履歴を選択肢として前記スタブ反応記憶部から検索する検索部と、
前記検索部により検索された前記選択肢を記憶する選択肢記憶部と、
前記選択肢記憶部に記憶されたスタブの反応内容の選択肢を、前記状態遷移の特徴から選択される可能性が高いと想定される順に並び替えるソート部と、
前記選択肢記憶部から読み出した前記選択肢を、前記ソート部による並び替え順で前記入出力部を介して提示して、前記呼び出しされたスタブに対応する反応内容を当該選択肢から決定させる制御部とを備えたことを特徴とする単体試験支援装置。
【請求項２】
ソート部は、試験対象のソフトウェアモジュールの状態遷移におけるスタブの呼出箇所を特定する状態、イベント処理、利用回数、利用時刻及びこれらの組み合わせのいずれかに基づいて、選択肢記憶部に記憶された反応内容の選択肢の並び替え順を決定することを特徴とする請求項１記載の単体試験支援装置。
【請求項３】
呼び出されたスタブと呼出箇所が完全に一致するスタブの反応内容がスタブ反応記憶部に存在する場合、当該スタブの反応内容をデフォルト内容として保持し、入出力部を介してスタブの反応内容を対話的に決定させるにあたり、所定の時間が経過するまでに反応内容の選択がなかったとき、前記デフォルト内容として保持した反応内容を前記呼び出されたスタブの反応内容とする処理部を備えたことを特徴とする請求項１または請求項２記載の単体試験支援装置。
【請求項４】
装置外部からの指示に従って、スタブ反応記憶部の記憶内容を編集する編集部を備えたことを特徴とする請求項１から請求項３のうちのいずれか１項記載の単体試験支援装置。
【請求項５】
自身の装置内に設ける代わりに、複数の単体試験支援装置との間で通信ネットワークを介して通信接続するサーバ装置にスタブ反応記憶部を設け、当該スタブ反応記憶部を前記複数の単体試験支援装置間で共有することを特徴とする請求項１から請求項４のうちのいずれか１項記載の単体試験支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、状態遷移図や状態遷移表に基づいて記述されたソフトウェアモジュールの単体試験を支援する単体試験支援装置に関するものである。
【背景技術】
【０００２】
高級言語プログラムの一部分（例えば、関数やモジュール）を単体試験する従来の方法としては、例えば特許文献１に開示されるものがある。この特許文献１では、試験対象のモジュール（試験対象モジュール）に対し、その上位モジュールを模擬するテストドライバと下位モジュールを模擬するテストスタブとを組み合わせて用いる。
【０００３】
テストドライバは、試験対象モジュールに対して、変数の設定や関数の呼出、イベントの発生等の働きかけを行い、これに対する試験対象モジュールの反応を観察することにより、想定される反応であるか否かを判断するプログラムである。このテストドライバからの働きかけで試験対象モジュールが動作するには、その動作の過程で呼び出される下位モジュールが必要となる。
【０００４】
ソフトウェアの開発過程では、多くのモジュールを別々の人や組織が並行して開発することが多く、試験対象モジュールの単体試験において、必要な下位モジュールが、全て提供されているとは限らない。
また、たとえ下位モジュールが提供されていたとしても、その下位モジュールが動作するにあたり、同様に、さらに下位のモジュールや最終的にはそれら下位のモジュールが利用するハードウェアまで提供されていなければならない。
しかしながら、これらは、ソフトウェア開発過程後期でなければ揃わない場合が多い。そこで、テストスタブと呼ばれる、試験の内容で必要となる反応のみに限定して、下位モジュールの挙動を模擬するモジュールを用いることが多い。
【０００５】
テストドライバとテストスタブは、テストケース毎に用意しなければならないが、特にテストスタブは、テストドライバ毎に試験対象モジュールを呼び出す下位モジュールの数だけ用意しなければならず、これらテストスタブをどのように用意するかが問題となる。
【０００６】
テストスタブを利用する従来の技術として、特許文献１には、対話型スタブとバッチ型スタブとでテストスタブを実現するソフトウェアテスト方法が開示されている。ここで、対話型スタブは、呼び出された時点でそのテストスタブが行うべき反応をユーザに対話的に問い合わせ、その結果をスタブの反応とするものである。バッチ型スタブは、予めプログラムを用意しておき、このプログラムに従ってテストスタブが行うべき反応を行う。
【０００７】
また、特許文献２には、試験対象モジュールからテストスタブを呼び出す部分を自動的に特定することにより、試験対象モジュールのうち、テストスタブの呼び出し構造やテストスタブの戻り値の扱いを分析してテストスタブの取り得る戻り値のパターンを自動生成し、このパターンの組み合わせを網羅的に実行するテストドライバを自動生成する単体試験支援装置が開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０００−１３２４２５号公報
【特許文献２】特開２００８−１４０２６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従来の技術では、特許文献１に示されるように、対話型スタブは、単体試験中に対話のためのユーザ負担が発生し、スタブの反応に時間制限があるものについて利用できない。また、バッチ型スタブは、呼び出すべき全ての下位モジュールに関するテストスタブ毎にプログラムを作成しなければならない。
【００１０】
一方、特許文献２に開示される装置は、試験対象モジュールのテストスタブを呼び出す部分において、そのテストスタブの戻り値をＳｗｉｔｃｈ−Ｃａｓｅ文で分岐させるような単純な呼び出し構造であれば、そのテストスタブで戻すべき値が自動的に抽出され、抽出された値を戻り値として順に返すテストスタブの自動作成が可能である。しかしながら、戻り値の判断が、テストスタブの呼び出し直後ではなく、大域的変数等を介して別の場所で判断される場合、テストスタブが取り得る戻り値を抽出することが大変困難になる。
【００１１】
また、戻り値だけでなく、ポインタ渡しの引数や参照渡しの引数を複数有するテストスタブである場合、戻り値が１つだけでなく、これらテストスタブで変更可能な引数の全ての組み合わせがテストスタブとして取り得る反応となる。このため、組み合わせ数が非常に多くなり、単純な組み合わせに基づいてテストを行えば、現実には起こり得ない組み合わせについても試験を行うことになり、テストに要する時間が長時間化するという課題があった。
【００１２】
また、組み込み装置向けのソフトウェアでは、試験対象モジュール自体がその機能の状態を示す状態遷移表や状態遷移図に基づいて記述されることが多い。組み込みソフトウェアで多用される状態遷移表や状態遷移図で試験対象モジュールが記述されている場合、テストスタブは、単に戻り値や引数だけで試験対象モジュールと相互作用するのではなく、テストスタブ内でイベントを発生させ、これを試験対象モジュールで受けるといった、イベントのやり取りもある。しかしながら、従来の技術では、このようなイベントに関するテストスタブの生成方法や効率化についての解決策は提示されていない。
【００１３】
この発明は、上記のような課題を解決するためになされたもので、状態遷移図や状態遷移表に基づいて記述された試験対象モジュールの単体試験にあたり、テストスタブ作成の作業頻度の低減や、テストスタブを用いた単体試験に要する作業量の削減や実施時間の短縮化を実現できる単体試験支援装置を得ることを目的とする。
【課題を解決するための手段】
【００１４】
この発明に係る単体試験支援装置は、試験対象のソフトウェアモジュールによる下位の未定義のスタブ関数の呼び出しを検出するスタブ呼出検出部と、呼び出しされたスタブの反応内容をユーザとの間で対話的に決定する入出力部と、入出力部を介して決定されたスタブの反応内容を実行するスタブ反応実行部と、過去に決定されたスタブの反応内容の履歴を記憶するスタブ反応記憶部と、呼び出しされたスタブに対応する反応内容の履歴を選択肢としてスタブ反応記憶部から検索する検索部と、検索部により検索された選択肢を記憶する選択肢記憶部と、選択肢記憶部に記憶されたスタブの反応内容の選択肢を、状態遷移の特徴から選択される可能性が高いと想定される順に並び替えるソート部と、選択肢記憶部から読み出した選択肢を、ソート部による並び替え順で入出力部を介して提示し、呼び出しされたスタブに対応する反応内容を当該選択肢から決定させる制御部とを備えるものである。
【発明の効果】
【００１５】
この発明によれば、過去のスタブの反応内容の履歴から取得された選択肢を、当該スタブが実行されるソフトウェアモジュールの状態遷移の特徴に基づいて、選択される可能性が高いと想定される順に並び替えて提示するので、状態遷移図や状態遷移表に基づいて記述された試験対象モジュールの単体試験にあたり、テストスタブ作成の作業頻度の低減、テストスタブを用いた単体試験に要する作業量の削減や、実施時間の短縮化を実現できるという効果がある。
【図面の簡単な説明】
【００１６】
【図１】この発明の実施の形態１による単体試験支援装置の構成を示すブロック図である。
【図２】状態遷移図及びアクションの一例を示す図である。
【図３】スタブ呼出情報の一例を示す図である。
【図４】スタブ反応記憶部の記憶内容の一例を示す図である。
【図５】図１中のスタブ反応履歴検索部による動作の流れを示すフローチャートである。
【図６】図１中のシステム制御部による動作の流れを示すフローチャートである。
【図７】状態遷移図の一例を示す図である。
【図８】この発明の実施の形態３による単体試験支援装置の構成を示すブロック図である。
【図９】図８中のシステム制御部による動作の流れを示すフローチャートである。
【図１０】この発明の実施の形態４による単体試験支援装置の構成を示すブロック図である。
【図１１】編集後のスタブ反応記憶部の記憶内容の一例を示す図である。
【図１２】この発明の実施の形態５による単体試験支援装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１７】
実施の形態１．
図１は、この発明の実施の形態１による単体試験支援装置の構成を示すブロック図である。図１において、実施の形態１による単体試験支援装置１は、実現すべき機能の状態を示す状態遷移表や状態遷移図に基づいて記述された試験対象モジュールを対象とする単体試験の実行を支援する装置であり、入出力装置（入出力部）２、システム制御部（制御部）３、状態遷移モジュール記憶部４、テストドライバ記憶部５、プログラム実行部６、スタブ反応記憶部７、スタブ反応履歴検索部（検索部）８、スタブ反応選択肢記憶部（選択肢記憶部）９及びスタブ反応ソート部（ソート部）１０を備える。
【００１８】
入出力装置２は、単体試験支援装置１とユーザとの間のインタフェースであり、例えばキーボードやマウス等の入力装置、及び、ディスプレイやスピーカ等の出力装置から構成される。システム制御部３は、入出力装置２、プログラム実行部６、スタブ反応履歴検索部８及びスタブ反応ソート部１０の動作を制御する構成部である。
【００１９】
状態遷移モジュール記憶部４には、入出力装置２を介して入力された状態遷移モジュールが記憶される。なお、この実施の形態１では、説明の単純化のため、入出力装置２を介して状態遷移モジュールを入力する例を示したが、単体試験支援装置１が、ネットワークを介して他の計算機に接続されている場合、他の計算機からネットワークを介して状態遷移モジュールを転送してもよいし、ＵＳＢメモリやＣＤ−ＲＯＭ、ＤＶＤ、ＨＤＤ等の記憶媒体に予め記憶されている状態遷移モジュールを読み込んでもよい。
【００２０】
テストドライバ記憶部５には、入出力装置２を介して入力された、テストドライバと呼ぶプログラムを格納する。テストドライバとは、ユーザが実施しようとする試験の意図に基づいて設定された状態遷移モジュールへの働きかけと、この働きかけに対して設計意図に沿って期待される反応とを確認するためのプログラムである。ここで、状態遷移モジュールへの働きかけには、ユーザの試験の意図に基づいて状態遷移モジュールへ設定される属性の値やイベントの打ち込み等が挙げられる。また、この働きかけに対して設計意図に沿って期待される反応には、状態遷移モジュール内部の動作によって発生する属性の値の変化やイベントの発生がある。
【００２１】
なお、この実施の形態１では、説明の単純化のため、入出力装置２の入力装置を介してテストドライバを入力する例を示したが、状態遷移モジュール記憶部４の説明と同様に、ネットワークを介して転送してもよいし、記憶媒体から読み込んでも良い。
【００２２】
プログラム実行部６は、スタブ呼出検出部６１及びスタブ反応実行部６２を備え、システム制御部３からの指示に基づいて、状態遷移モジュール記憶部４から試験対象の状態遷移モジュールを読み出し、当該状態遷移モジュールに対する働きかけ及びその反応を確認するためのテストドライバをテストドライバ記憶部５から読み出して、これらを実行する構成部である。
【００２３】
試験対象である状態遷移モジュールはＣ言語等のプログラムへ変換可能であったり、計算機で随時解釈しながら実行可能なＪＡＶＡ（登録商標）の中間言語のような形式に変更可能である場合が多い。前者の場合には、状態遷移モジュールは、一旦、直接実行可能な機械語へコンパイルされてプログラム実行部６で実行される。一方、後者の場合は、プログラム実行部６に中間言語を随時解釈しながら実行するインタープリタが備わっており、状態遷移モジュールを表現した中間言語を実行する。同様に、テストドライバについても、プログラムへの変換可能であり、プログラム実行部６で実行される。
【００２４】
スタブ呼出検出部６１は、試験対象である状態遷移モジュールを実行中に、未定義の下位モジュールに対する呼び出しを行っていることを検出する。例えば、プログラム実行部６がインタープリタによって実行される場合には、状態遷移モジュールが動作している最中に、インタープリタが、未定義のモジュールに対する呼び出しを検出し、当該未定義モジュールに対する呼び出しの代わりに、スタブ呼出検出部６１を呼び出す処理を行う。
一方、プログラム実行部６がコンパイルされた機械語ベースで実行する場合には、コンパイルした後、リンク時に未定義のモジュールに対する呼び出しが検出されるので、この未定義のモジュールに対する呼び出しを受け付けるテストスタブを自動作成し、このテストスタブが呼び出された場合には、自動的にスタブ呼出検出部６１を呼び出すプログラムをテストスタブに自動的に挿入してもよい。
いずれにせよ、未定義なモジュールに対する呼び出しが発生した場合には、スタブ呼出検出部６１が呼び出され、このとき、スタブ呼出検出部６１には、テストドライバの名前、試験対象である状態遷移モジュールの名前、呼出スタブ名、状態遷移モジュールからの呼出箇所の情報（後述）、スタブ呼出の際の引数の情報（値やポインタ情報）が提供される。
【００２５】
スタブ反応実行部６２は、システム制御部３から入力したスタブ反応情報で特定される反応内容を実行する。スタブ反応記憶部７は、スタブ呼出検出部６１から取得したスタブ呼出情報と、ユーザにより入力されたスタブ反応情報との組を含んで構成されるスタブ反応情報要素を記憶する記憶部である。スタブ反応履歴検索部８は、システム制御部３から取得したスタブ呼出情報のスタブ名と同じスタブ名のスタブ呼出情報をスタブ反応記憶部７から検索する。スタブ反応選択肢記憶部９は、スタブ反応履歴検索部８による検索結果のスタブ呼出情報を含むスタブ反応情報要素を記憶する記憶部である。スタブ反応ソート部１０では、特定の優先順位に従ってスタブ反応選択肢記憶部９に格納されたスタブ反応情報の並び替えを行う。
【００２６】
次に動作について説明する。
先ず、状態遷移モジュールからの呼出箇所について説明する。
図２は、状態遷移図及びアクションの一例を示す図であって、例えば、国際規格であるＩＳＯ／ＩＥＣ１９５０１で規定されるＵＭＬ（Unified Modeling Language）によって状態遷移モジュールが図２に示す状態遷移図で記述された場合を示している。図２において、状態遷移図２１には、状態Ｓｔａｔｅ１と状態Ｓｔａｔｅ２とがある。この図２では、状態Ｓｔａｔｅ１のときにイベント（ｅｖｅｎｔ１）が発生し、さらにガード条件というイベント処理条件ｇｌｏｂａｌ＿ａ＞０が成立すると、処理（ｆｕｎｃｔｉｏｎ１）を実行して、状態Ｓｔａｔｅ２へ遷移することが表現されている。同様に、状態Ｓｔａｔｅ１のときにイベント（ｅｖｅｎｔ１）が発生し、ガード条件ｇｌｏｂａｌ＿ａ＝０を満たす場合、処理（ｆｕｎｃｔｉｏｎ２）が実行されて、状態Ｓｔａｔｅ２へ遷移することも表現されている。
【００２７】
上述したｆｕｎｃｔｉｏｎ１やｆｕｎｃｔｉｏｎ２のように、対応するイベントが発生し、かつガード条件が満たされると実行される処理をアクションと呼ぶ。一般に、アクションは複数の行にわたるプログラムになることが多いが、図２では、ｆｕｎｃｔｉｏｎ１やｆｕｎｃｔｉｏｎ２の代わりにそれらのプログラム全てを状態遷移図に記載すると図が複雑になり見通しが悪くなる。そこで、図２では、ｆｕｃｎｔｉｏｎ１の実際の処理を別に記述している。このｆｕｎｃｔｉｏｎ１（）の実際の処理例をアクション処理２２とする。
【００２８】
アクション処理２２の２行目では、ｅｘｔ＿ｆｕｎｃ（ｂ）という外部の関数を呼び出して、引数に変数ｂを渡し、戻り値を変数ｇｌｏｂａｌ＿ａに代入している。この場合、ｅｘｔ＿ｆｕｎｃ（ｂ）が、状態遷移モジュールからの呼出箇所となる。このように外部の関数を呼び出す場所としては、例示したアクション以外に、ガード条件においても呼び出す可能性がある。それゆえ、図２で呼出箇所を特定する情報は、状態名（Ｓｔａｔｅ１）、イベント名（ｅｖｅｎｔ１）、イベント処理インデックス０、呼出場所（Ａｃｔｉｏｎの２行目１２文字目）となる。
なお、図２に示すように、１つの状態Ｓｔａｔｅ１に複数の同じイベント（ｅｖｅｎｔ１）に対する処理が定義されている場合であっても、どのイベント処理であるかを特定するために、その状態に付属するイベント処理の順番をイベント処理インデックスとして付加している。
【００２９】
ここで、プログラム実行部６がテストドライバｔｅｓｔＡを実行しており、この試験対象の状態遷移モジュールが、ＳｔａｔｅＣｈａｒｔ１である場合を例に説明する。
状態Ｓｔａｔｅ１において、テストドライバｔｅｓｔＡがｇｌｏｂａｌ＿ａを１にした上でｅｖｅｎｔ１を発生させた場合、プログラム実行部６では、ＳｔａｔｅＣｈａｒｔ１の評価が行われ、状態Ｓｔａｔｅ１の０番目に設定されているイベント処理がガード条件ｇｌｏｂａｌ＿ａ＞０を満たすので、アクションｆｕｎｃｔｉｏｎ０が実行されて、状態Ｓｔａｔｅ２へ遷移する。アクションｆｕｎｃｔｉｏｎ０では、アクション処理２２の２行目１２文字目において、ｅｘｔ＿ｆｕｎｃ（ｂ）が実行されるとき、スタブ呼出検出部６１によって、図３に示すスタブ呼出情報が収集される。
【００３０】
図３は、スタブ呼出情報の一例を示す図であり、上述の処理によってスタブ呼出検出部６１が収集したスタブ呼出情報を示している。図３に示すように、スタブ呼出情報には、属性名とその値が含まれる。属性名では、スタブ名、テストドライバ名、試験対象名及び呼出箇所が規定され、呼出箇所には、状態名、イベント名、イベント処理インデックス、アクション／ガード条件、行数及び文字数が呼出箇所を特定する情報として収集される。
【００３１】
これら属性名に対応する値として、上述の処理の場合、図３に示すように、スタブ名がｅｘｔ＿ｆｕｎｃ、テストドライバ名がｔｅｓｔＡ、試験対象名がＳｔａｔｅＣｈａｒｔ１、呼出箇所を特定するための状態名がＳｔａｔｅ１、イベント名がｅｖｅｎｔ１、イベント処理インデックスが０、アクション／ガード条件としてはアクション、アクション処理２２中の２行目を示す２が行数となり、その１２文字目を示す１２が文字数となる。
【００３２】
スタブ呼出検出部６１は、図３に示すスタブ呼出情報で特定されるスタブのスタブ呼出が発生したことを、当該スタブ呼出情報とともにシステム制御部３へ通知する。この後、スタブ反応実行部６２によって当該スタブのスタブ反応が実行終了するまで、スタブ呼出処理が停止される。
【００３３】
システム制御部３では、スタブ呼出が発生したことを通知されると、スタブ反応情報の一覧をスタブ反応記憶部７から検索するよう、スタブ反応履歴検索部８に指示する。このとき、システム制御部３は、スタブ呼出検出部６１から入力したスタブ呼出情報も、スタブ反応履歴検索部８へ送られる。
【００３４】
図４は、スタブ反応記憶部の記憶内容の一例を示す図である。図４に示すように、スタブ反応記憶部７には、スタブ呼出情報とスタブ反応情報との組に最新の利用時刻と利用回数とが１つの要素として０要素以上保存されている。この１要素をスタブ反応情報要素３１と呼ぶ。
【００３５】
スタブ反応履歴検索部８は、システム制御部３から取得したスタブ呼出情報のスタブ名を取り出し、スタブ反応記憶部７に記憶されているスタブ呼出情報の中から、同じスタブ名を持つスタブ呼出情報を検索する。スタブ反応履歴検索部８は、スタブ呼出情報のスタブ名が一致するスタブ反応情報要素３１が検索されると、当該スタブ反応情報要素３１をスタブ反応記憶部７から読み出してスタブ反応選択肢記憶部９に格納し、システム制御部３に対して検索成功を通知する。
一方、上記検索処理の結果、スタブ名が一致するスタブ呼出情報をスタブ反応選択肢記憶部９から１つも発見できなかった場合、スタブ反応履歴検索部８は、有効なスタブ反応を発見できなかったと判断して、システム制御部３に対して検索失敗を通知する。
【００３６】
システム制御部３は、検索失敗が通知されると、入出力装置２を介してユーザと対話的にやり取りして、ユーザが所望するスタブの反応を入力させる。ここでは、テストスタブの戻り値をユーザに求めたり、テストスタブの引数に対する演算処理や、特定のイベントの発生等、テストスタブが行うべき反応の内容が入力される。
また、入力方法としては、反応内容入力用ＧＵＩ（Graphical User Interface）となる入力用画面を入出力装置２のモニタ画面上に表示させて、キーボードやマウス等の入力装置を用いて画面上のメニューから選択させたり、数値を入力させる方法や、任意のプログラムを入力させる方法や、これらを組み合わせた方法が考えられる。ユーザが入力した、テストスタブが行うべきバッチ処理の内容（スタブの反応の内容）をスタブ反応情報と呼ぶ。
【００３７】
システム制御部３では、スタブ呼出検出部６１から取得したスタブ呼出情報と、上述のように、ユーザによって入力されたスタブ反応情報とを組にして、新たにスタブ反応情報要素を作成しスタブ反応記憶部７に追加記憶するとともに、スタブ反応情報をスタブ反応実行部６２へ送る。スタブ反応実行部６２では、システム制御部３からスタブ反応情報を入力すると、スタブ呼出の結果として、このスタブ反応情報で特定される反応内容を実行し、スタブ呼出を再開させる。
【００３８】
また、システム制御部３は、スタブ反応履歴検索部８から検索の終了が通知されると、スタブ反応ソート部１０に対して、特定の優先順位に従いスタブ反応選択肢記憶部９に格納されたスタブ反応情報要素３１の並び替え（ソート）を行わせる。スタブ反応ソート部１０は、この並び替えが終了すると、システム制御部３に対して並び替えが終了したことを通知する。なお、優先順位の決定方法としては、状態遷移の特徴からユーザによって選択される可能性が高いと想定される反応内容を優先順位の上位とする。例えば、最近選択されたもの、あるいは、過去に何度も選択されたものが挙げられる。
【００３９】
システム制御部３は、スタブ反応ソート部１０から、上述の並び替えが終了したことが通知されると、複数のスタブ反応情報をスタブ反応選択肢記憶部９から読み出し、スタブ反応ソート部１０によって並び替えられた順番で各スタブ反応情報を、入出力装置２を介してユーザに提示して、ユーザの選択を受け付ける。ユーザによりスタブ反応情報が選択されると、システム制御部３は、上記選択されたスタブ反応情報をスタブ反応実行部６２へ送るとともに、スタブ反応記憶部７に保持された当該スタブ反応情報を含むスタブ反応情報要素の最新利用時刻及び利用回数を更新する。
【００４０】
なお、上記説明では、ユーザが、提示されたスタブ反応情報のリストから所望のスタブ反応情報を選択する場合を示したが、スタブ反応履歴検索部８による検索でスタブ名が一致するスタブ呼出情報が１つも見つからなかった場合と同様に、入出力装置２を介してユーザと対話的にやり取りすることにより、新しいスタブ反応情報を作成させるようにしてもよい。このように、新しいスタブ反応情報が選択された場合は、先に説明したとおり、システム制御部３から指示を受けたスタブ反応履歴検索部８が、スタブ呼出されたスタブに関するスタブ呼出情報と新たに入力されたスタブ反応情報との組を、新しいスタブ反応情報要素としてスタブ反応選択肢記憶部９に記録するとともに、当該スタブ反応情報が、システム制御部３からスタブ反応実行部１２へ送られる。
【００４１】
次に、スタブ反応履歴検索部８によるスタブ反応情報の検索動作について説明する。
図５は、図１中のスタブ反応履歴検索部による動作の流れを示すフローチャートであり、この図に沿って検索動作の詳細を説明する。
先ず、スタブ反応履歴検索部８は、システム制御部３からスタブ呼出情報が通知されると、当該スタブ呼出情報からスタブ名を取り出し、当該スタブ名の値を文字列の変数であるｓｎａｍｅに代入する（ステップＳＴ１）。続いて、スタブ反応履歴検索部８は、スタブ反応記憶部７に格納されているスタブ反応情報要素３１の全数を整数の変数ａｌｌに代入する（ステップＳＴ２）。
【００４２】
ステップＳＴ３において、スタブ反応履歴検索部８は、スタブ反応記憶部７から現在読み出し中のスタブ反応情報要素３１のインデックス数を表現する整数値が付与される変数ｉを０に初期化するとともに、スタブ反応選択肢記憶部９に格納されている過去の情報を消去する（初期化）。以上の処理が完了すると、スタブ反応履歴検索部８は、現在読み出し中のスタブ反応情報要素３１の変数ｉが、ステップＳＴ２で設定した全数ａｌｌよりも少ないか否かを判定する（ステップＳＴ４）。ここで、変数ｉが全数ａｌｌ以上である場合、検索処理を終了する。
【００４３】
一方、変数ｉが全数ａｌｌより少なければ、スタブ反応履歴検索部８は、インデックス値ｉ番目のスタブ反応情報要素３１をスタブ反応記憶部７から読み出し、当該スタブ反応情報要素３１のスタブ呼出情報を変数ｃ［ｉ］に代入するとともに、当該スタブ反応情報要素３１のスタブ反応情報を変数ｒ［ｉ］に代入する（ステップＳＴ５）。
【００４４】
続いて、スタブ反応履歴検索部８は、変数ｃ［ｉ］に代入したスタブ呼出情報からスタブ名を取り出し、このスタブ名の値を文字列の変数ｉＳｎａｍｅに代入する（ステップＳＴ６）。この後、スタブ反応履歴検索部８は、変数ｓｎａｍｅの値と変数ｉＳｎａｍｅの値とが一致するか否かを判定する（ステップＳＴ７）。変数ｓｎａｍｅの値と変数ｉＳｎａｍｅの値とが一致する場合、スタブ反応履歴検索部８は、変数ｃ［ｉ］と変数ｒ［ｉ］との組をスタブ反応情報要素３１としてスタブ反応選択肢記憶部９へ格納する（ステップＳＴ８）。
【００４５】
ステップＳＴ７で変数ｓｎａｍｅの値と変数ｉＳｎａｍｅの値とが一致しない場合、若しくは、ステップＳＴ８の処理が完了すると、スタブ反応履歴検索部８は、インデックス値である変数ｉを１増加させ（ステップＳＴ９）、ステップＳＴ４の処理に戻る。これにより、変数ｉが全数ａｌｌに達するまで、ステップＳＴ４からステップＳＴ９までの処理が繰り返される。
【００４６】
次に、システム制御部３による制御動作について説明する。
図６は、図１中のシステム制御部による動作の流れを示すフローチャートであり、この図に沿って制御の概要を説明する。
先ず、システム制御部３は、スタブ呼出検出部６１からのスタブ呼出の検出通知の待ち状態にある（ステップＳＴ１ａ）。この待ち状態は、スタブ呼出検出部６１によってスタブ呼出が検出され、その検出通知が受信されるまで継続する。スタブ呼出検出部６１からスタブ呼出の検出通知を受けると、システム制御部３は、当該スタブ呼出に関するスタブ呼出情報をスタブ呼出検出部６１から変数ｃとして取得する（ステップＳＴ２ａ）。
【００４７】
システム制御部３は、スタブ呼出検出部６１から取得したスタブ呼出情報ｃを、スタブ反応履歴検索部８に送り、当該スタブ呼出情報ｃのスタブ名と一致するスタブ呼出情報をスタブ反応記憶部７から検索するよう、指示する（ステップＳＴ３ａ）。これにより、システム制御部３は、スタブ反応履歴検索部８による検索結果の待ち状態となる（ステップＳＴ４ａ）。なお、この待ち状態は、スタブ反応履歴検索部８から検索結果を受けるまで継続される。
【００４８】
スタブ反応履歴検索部８から検索結果を受けると、システム制御部３は、当該検索結果の内容から検索が成功したか否かを判定する（ステップＳＴ５ａ）。ここで、検索に失敗したと判定された場合（ステップＳＴ５ａ；ＮＯ）、システム制御部３は、入出力装置２にスタブ呼出情報ｃを送り、ユーザへのスタブ反応情報の入力要求指示をすることにより、入出力装置２を介してユーザが当該スタブ呼出情報ｃに対するスタブ反応情報を入力するための入力用ＧＵＩが提供される（ステップＳＴ６ａ）。これにより、システム制御部３は、ユーザからのスタブ反応情報の入力待ち状態となる。この待ち状態は、ユーザによるスタブ反応情報の入力が確定するまで継続する。
【００４９】
ユーザによるスタブ反応情報の入力が確定すると、システム制御部３は、入出力装置２を介して取得された当該スタブ反応情報を変数ｒに代入する（ステップＳＴ７ａ）。この後、システム制御部３は、スタブ呼出情報ｃとスタブ反応情報ｒとの組をスタブ反応情報要素３１として、スタブ反応記憶部７に追加記憶させる（ステップＳＴ８ａ）。
【００５０】
一方、検索成功と判定した場合（ステップＳＴ５ａ；Ｙｅｓ）、システム制御部３は、スタブ反応ソート部１０に対して、スタブ反応選択肢記憶部９に格納されているスタブ呼出情報とスタブ反応情報との組からなるスタブ反応情報要素３１の並び替え（ソート）を指示する（ステップＳＴ９ａ）。この後、システム制御部３は、スタブ反応ソート部１０から並び替え処理の終了が通知されるまで待ち状態となる（ステップＳＴ１０ａ）。
【００５１】
スタブ反応ソート部１０から並び替えの終了が通知されると、システム制御部３は、並び替え済みのスタブ反応情報要素３１をスタブ反応選択肢記憶部９から取り出し、スタブ反応ソート部１０による並び替えの順番で、取り出したスタブ反応情報要素３１のスタブ反応情報のリストを入出力装置２に出力して、ユーザにスタブ反応情報を選択させることを指示する（ステップＳＴ１１ａ）。これによって、システム制御部３による制御の下、入出力装置２を介して、上記並び順でスタブ反応情報を選択させるための選択用画面等が提示され、ユーザによるスタブ反応情報の選択が受け付けられる。
【００５２】
この後、システム制御部３は、ユーザによるスタブ反応情報の選択肢の選択待ち状態に移行する（ステップＳＴ１２ａ）。この待ち状態は、ユーザによりスタブ反応情報が選択入力されるまで継続する。
【００５３】
ユーザによって入出力装置２を介してスタブ反応情報が選択入力されると、システム制御部３は、ステップＳＴ１１ａで提示したスタブ反応情報リスト中の選択肢であるか否かを判定する（ステップＳＴ１３ａ）。ユーザは、リスト中の選択肢に所望するスタブ反応情報がない場合、その旨を入出力装置２を介して入力する。この通知を入力すると、システム制御部３は、リストの選択肢からの選択でない（ステップＳＴ１３ａ；ＮＯ）と判断して、ステップＳＴ６ａの処理に戻り、ユーザが所望するスタブ反応情報の入力要求指示を行う。これにより、ステップＳＴ６ａからステップＳＴ８ａまで、ステップＳＴ１５ａの処理が実行される。
【００５４】
また、リスト中の選択肢からスタブ反応情報が選択された場合（ステップＳＴ１３ａ；ＹＥＳ）、システム制御部３は、入出力装置２を介してリストから選択されたスタブ反応情報を取得し、変数ｒに代入する（ステップＳＴ１４ａ）。ステップＳＴ８ａの処理が完了するか、若しくは、ステップＳＴ１４ａの処理が完了すると、システム制御部３は、スタブ反応情報ｒをプログラム実行部６のスタブ反応実行部６２へ送り、当該スタブ反応情報ｒで規定されるスタブ反応の実行を指示する（ステップＳＴ１５ａ）。これによって、スタブ反応実行部６２は、システム制御部３からのスタブ反応情報に基づいて、スタブの反応を実行する。システム制御部３は、スタブ反応実行部６２にスタブ反応を実行させると、スタブ呼出検出部６１に対し停止しているスタブ呼出処理の再開を指示する。
【００５５】
なお、実施の形態１では、図４に示したように、スタブ反応記憶部７において、スタブ呼出情報とスタブ反応情報との組、最終利用時刻及び利用回数の２つの情報を持たせたスタブ反応情報要素３１が格納されている。そこで、システム制御部３は、スタブ反応履歴検索部８に指示することにより、ユーザが選択したスタブ反応情報ｒを保持するスタブ反応情報要素３１において、最新の利用時刻として現在の時刻を入力するとともに、利用回数を１つ増加させる処理も併せて行う。
【００５６】
以上のように、この実施の形態１によれば、試験対象の状態遷移モジュールによる下位の未定義のスタブ関数の呼び出しを検出するスタブ呼出検出部６１と、呼び出しされたスタブの反応内容をユーザとの間で対話的に決定する入出力装置２と、入出力装置２を介して決定されたスタブの反応内容を実行するスタブ反応実行部６２と、過去に決定されたスタブの反応内容の履歴を記憶するスタブ反応記憶部７と、呼び出しされたスタブに対応する反応内容の履歴を選択肢としてスタブ反応記憶部７から検索するスタブ反応履歴検索部８と、スタブ反応履歴検索部８により検索された選択肢を記憶するスタブ反応選択肢記憶部９と、スタブ反応選択肢記憶部９に記憶されたスタブの反応内容の選択肢を、状態遷移の特徴から選択される可能性が高いと想定される順に並び替えるスタブ反応ソート部１０と、スタブ反応選択肢記憶部９から読み出した選択肢を、スタブ反応ソート部１０による並び替え順で入出力装置２を介して提示し、呼び出しされたスタブに対応する反応内容を当該選択肢から決定させるシステム制御部３とを備える。このように構成して、図５及び図６に示すように動作させることにより、ユーザとの間で過去に対話的に作成したスタブ反応情報が、利用される可能の高い順番でユーザに提示されるので、選択肢の発見に要する時間や作業量を削減することができる。また、一度入力したスタブ反応情報が再利用されやすくなるため、冗長なスタブ反応情報を入力しなくても済む機会が増加し、作業性の向上を図ることが可能である。
【００５７】
実施の形態２．
この実施の形態２では、試験対象モジュールが状態遷移表や状態遷移図に基づくことを利用して、ユーザにより選択される可能性が高いスタブ反応情報をスタブ反応ソート部に特定させるものである。なお、実施の形態２による単体試験支援装置は、上記実施の形態１で図１を用いて説明した構成と基本的に同一であるが、スタブ反応ソート部の処理が異なる。そこで、実施の形態２による単体試験支援装置の構成は、図１を参照することとする。
【００５８】
次に動作について説明する。
図７は、状態遷移図の一例を示す図であり、上記実施の形態１と同様にＵＭＬによって状態遷移モジュールが当該状態遷移図で記述された場合を示している。図７の例では、説明の単純化のためアクションとして未定義な外部への呼出（以下、スタブ関数と呼ぶ）が１つだけある場合を示す。なお、実施の形態２としては、アクションが複数行あり、そこに複数の異なるスタブ関数があっても構わない。
【００５９】
図７において、状態Ｓｔａｔｅ１には、自己遷移（同じ状態への遷移）を行うイベント処理が２つ定義されており、状態Ｓｔａｔｅ２へ遷移するイベント処理が１つ定義されている。自己遷移のイベント処理の０番目がｅｖｅｎｔ１を受けて、未定義な外部への呼出となるスタブ関数ｆｕｎｃｔｉｏｎ１（）が実行される。１番目がｅｖｅｎｔ２を受けてスタブ関数ｆｕｎｃｔｉｏｎ１（）が実行される。状態Ｓｔａｔｅ２への遷移のイベント処理は、ｅｖｅｎｔ３を受けて、スタブ関数ｆｕｎｃｔｉｏｎ２（）が実行される。
【００６０】
状態Ｓｔａｔｅ２では、自己遷移を行うイベント処理が４つ定義されている。自己遷移の０番目は、ｅｖｅｎｔ３を受けて、スタブ関数ｆｕｎｃｔｉｏｎ２（）が実行される。
自己遷移の１番目から３番目までは、ガード条件として、スタブ関数の戻り値を利用しており、１番目は、スタブ関数ｆｕｎｃｔｉｏｎ３（）が正の値（ｆｕｎｃｔｉｏｎ３（）＞０）なら、スタブ関数ｆｕｎｃｔｉｏｎ４（）が実行される。２番目は、スタブ関数ｆｕｎｃｔｉｏｎ３（）の値が０（ｆｕｎｃｔｉｏｎ３（）＝０）なら、スタブ関数ｆｕｎｃｔｉｏｎ５（）が実行される。３番目は、スタブ関数ｆｕｎｃｔｉｏｎ３（）が負の値（ｆｕｎｃｔｉｏｎ３（）＜０）なら、スタブ関数ｆｕｎｃｔｉｏｎ６（）が実行される。
【００６１】
このような状態遷移図に基づいて記述された状態遷移モジュールでは、同じ状態に定義されたイベント処理のアクションあるいはガード条件で同じスタブ関数を持つ場合、そのスタブ関数の反応は同じものを選択する可能性が高い。これは、図７においては、状態Ｓｔａｔｅ１の自己遷移における０番目と１番目のイベント処理のアクションで呼び出されるスタブ関数ｆｕｎｃｔｉｏｎ１（）が相当する。
【００６２】
同じ状態から呼び出された同じスタブ関数であると、同じ反応を期待する可能性が高い理由としては、いずれのスタブ関数も、ある１状態（図７の例では、状態Ｓｔａｔｅ１）のときに呼び出される。このため、当該スタブ関数を実現する下位モジュールについても同じ状態である可能性が高く、同じ反応を示しやすいためである。これを同一状態からの呼出と呼ぶこととする。
【００６３】
また、同じイベントのアクションあるいはガード条件から呼び出されるスタブ関数に対して、ユーザは同じ反応を期待する可能性が高い。例えば、図７に状態Ｓｔａｔｅ１から状態Ｓｔａｔｅ２への遷移を示す矢印上に記載した、状態Ｓｔａｔｅ１から状態Ｓｔａｔｅ２への遷移を伴うイベント処理であるｅｖｅｎｔ３から呼び出されるスタブ関数ｆｕｎｃｔｉｏｎ２（）と、図７に示す状態Ｓｔａｔｅ２における自己遷移の０番目のイベント処理ｅｖｅｎｔ３から呼び出されるスタブ関数ｆｕｎｃｔｉｏｎ２（）とがある。これらは、同じイベントに対する処理である。この場合、それぞれのイベント処理におけるアクションは、同じような内容を記述することが多いため、同じような反応をユーザは期待しやすい。これを同一イベントからの呼出と呼ぶこととする。
【００６４】
一方、同一状態に定義された同一のイベントに対する処理のガード条件に記述されたスタブ関数は、以前とは異なる反応を期待しやすい。これは、図７に示す状態Ｓｔａｔｅ２の自己遷移のイベント処理の１番目から３番目までに相当する。いずれもガード条件にてスタブ関数ｆｕｎｃｔｉｏｎ３（）を呼び出している。
【００６５】
ある試験において、スタブ関数ｆｕｎｃｔｉｏｎ３（）に対し、ユーザが正の値の反応を選択した場合、次にスタブ関数ｆｕｎｃｔｉｏｎ３（）に対して、正の値以外の反応（０や負の値）を選択すると、試験の網羅性をあげることができる。このため、ユーザは、異なる反応を選択しやすいと考えられる。これを、同一状態、同一イベントのガード条件からの呼出と呼ぶこととする。
【００６６】
上記実施の形態１と同様に、実施の形態２による単体試験支援装置においても、図４に示したような最新の利用時刻及び利用回数の情報がスタブ反応情報要素３１毎に記録されている。そこで、実施の形態２によるスタブ反応ソート部１０は、システム制御部３からソート指示（図６中のステップＳＴ９ａ参照）があった場合、通知されたスタブ呼出情報ｃに対して、スタブ反応選択肢記憶部９に格納されている複数のスタブ反情報要素３１を下記に示す優先順位で並び替えを行う。
【００６７】
（１）アクションの場合
優先順位１；図３に示すような呼出箇所が完全に一致するスタブ反応情報を最上位に配置する。
優先順位２；同一状態からの呼出におけるスタブ反応情報を上位に並べる。
優先順位３；同一イベントからの呼出におけるスタブ反応情報を上位に並べる。
優先順位４；利用回数の多いスタブ反応情報を上位に並べる。
優先順位５；最新の利用時刻が現在時刻に近いスタブ反応情報を上位に並べる。
（２）ガード条件の場合
優先順位１；図３に示すような呼出箇所が完全に一致するスタブ反応情報を最上位に配置する。
優先順位２；同一状態同一イベントのガード条件からの呼出に相当しないスタブ反応情報を上位に並べる。
優先順位３；同一状態からの呼出におけるスタブ反応情報を上位に並べる。
優先順位４；同一イベントからの呼出におけるスタブ反応情報を上位に並べる。
優先順位５；利用回数の多いスタブ反応情報を上位に並べる。
優先順位６；最新の利用時刻が現在時刻に近いスタブ反応情報を上位に並べる。
【００６８】
以上のように、この実施の形態２によれば、スタブ反応ソート部１０が、試験対象モジュールの状態遷移におけるスタブの呼出箇所を特定する状態、イベント処理、利用回数、利用時刻及びこれらの組み合わせのいずれかに基づいて、スタブ反応選択肢記憶部９に記憶された反応内容の選択肢の並び替え順を決定する。このようにすることで、状態遷移の特徴に基づいて、ユーザが少ない作業時間及び作業量でスタブの反応内容を選択することができる。
【００６９】
実施の形態３．
図８は、この発明の実施の形態３による単体試験支援装置の構成を示すブロック図である。図８において、実施の形態３による単体試験支援装置１Ａは、上記実施の形態１で図１を用いて説明した構成にユーザ入力代行時限処理部（処理部）１１を追加したものである。なお、当該単体試験支援装置１Ａにおいて、ユーザ入力代行時限処理部１１及びこれに対応するシステム制御部３の処理以外は図１と同様である。
【００７０】
ユーザ入力代行時限処理部１１は、システム制御部３から起動通知とデフォルトの選択肢を受けると、予め設定された時間を計時するタイマ（図１において不図示）を起動し、システム制御部３からの終了要求を受ける前に当該設定時間が経過すると、ユーザが入出力装置２を介して入力する選択の代わりにデフォルトの選択肢を選択して、ユーザに変わって当該選択内容をシステム制御部３に出力する構成部である。
【００７１】
次に動作について説明する。
図９は、図８中のシステム制御部による動作の流れを示すフローチャートであり、この図に沿ってユーザ入力代行時限処理部１１による処理に対応したシステム制御部３の動作の詳細を説明する。なお、図９において、図６と同一ステップ番号を付した処理は、同一内容の処理であるので説明を省略する。
【００７２】
ステップＳＴ１０ａにてスタブ反応ソート部１０から並び替えの終了が通知されると、システム制御部３は、新たに追加されたステップＳＴ１０ａ−１の処理に移行する。このステップＳＴ１０ａ−１において、システム制御部３は、スタブ反応ソート部１０により並び替えられたスタブ反応選択肢記憶部９のスタブ反応情報要素から、スタブ呼出情報ｃと呼出箇所とが完全に一致する選択肢が存在するか否かを判定する。
【００７３】
ここで、スタブ呼出情報ｃと呼出箇所とが完全に一致する選択肢が存在しなければ（ステップＳＴ１０ａ−１；ＮＯ）、システム制御部３は、並び替え済みのスタブ反応情報要素３１をスタブ反応選択肢記憶部９から取り出し、スタブ反応ソート部１０による並び替えの順番で、取り出したスタブ反応情報要素３１のスタブ反応情報のリストを入出力装置２に出力し、ユーザにスタブ反応情報を選択させることを指示する（ステップＳＴ１１ａ）。これによって、システム制御部３による制御の下、入出力装置２を介して、上記並び順でスタブ反応情報を選択させる選択用画面が提示され、ユーザによるスタブ反応情報の選択が受け付けられる。
【００７４】
一方、スタブ呼出情報ｃと呼出箇所が完全に一致する選択肢が存在する場合（ステップＳＴ１０ａ−１；ＹＥＳ）、システム制御部３は、ユーザ入力代行時限処理部１１を起動させる（ステップＳＴ１０ａ−２）。このとき、スタブ呼出情報ｃと呼出箇所が完全に一致したスタブ反応情報要素３１をデフォルトの選択肢として、ユーザ入力代行時限処理部１１に通知する。この後、ステップＳＴ１１ａの処理に移行する。
【００７５】
ここで、ユーザ入力代行時限処理部１１は、ステップＳＴ１１ａでユーザがスタブ反応情報を選択するまでに与えられる所定時間ｔを計時するタイマを設定する（計時開始）。なお、この所定時間ｔは、実施の形態３による単体試験支援装置１Ａの設計者やユーザが予め任意に決定してもよい。タイマの計時で所定時間ｔが０になると（所定時間ｔに達すると）、ユーザ入力代行時限処理部１１では、デフォルトの選択肢を即時に選択してシステム制御部３へ出力する。
【００７６】
この後、システム制御部３は、入力されたスタブ反応情報が、リスト中の選択肢から選択されたものであるか否かを判定する（ステップＳＴ１３ａ）。なお、ユーザ入力代行時限処理部１１によって所定時間ｔの経過のために即時に選択された結果は、ユーザが入力したものとして扱われる。
【００７７】
リスト中の選択肢からスタブ反応情報が選択された場合（ステップＳＴ１３ａ；ＹＥＳ）、システム制御部３は、新たに設けたステップＳＴ１３ａ−１の処理へ移行し、ユーザ入力代行時限処理部１１の動作を停止する。この後に続くステップＳＴ１４ａ及びステップＳＴ１５ａの処理は、上記実施の形態１と同様である。なお、ステップＳＴ１４ａにおいて、システム制御部３は、ユーザ入力代行時限処理部１１によって選択されたデフォルトのスタブ反応情報要素３１のスタブ反応情報を取得すると、当該スタブ反応情報を変数ｒに代入して後の処理を行う。
【００７８】
以上のように、この実施の形態３によれば、所定時間を経過すると、予め定めたデフォルトの選択肢を自動的に選択することから、ユーザの選択肢の回答に要する作業量を低減することができる。特に、単体試験を繰り返し行う場合、一度、全ての試験について対話的に試験を行ってデフォルトの選択肢を決定することにより、２回目からは自動的に試験を進めることが可能となる。
【００７９】
実施の形態４．
図１０は、この発明の実施の形態４による単体試験支援装置の構成を示すブロック図である。図１０において、実施の形態４による単体試験支援装置１Ｂは、上記実施の形態３で図８を用いて説明した構成にスタブ反応情報編集部（編集部）１２を追加したものである。スタブ反応情報編集部１２は、入出力装置２を介したＧＵＩをユーザに提供することにより、ユーザによる指示に従って、スタブ反応記憶部７に蓄積されているスタブ反応情報要素３１群を編集する構成部である。なお、当該単体試験支援装置１Ｂにおいて、スタブ反応情報編集部１２及びこれに対応する入出力装置２やスタブ反応記憶部７に対する処理以外は図８と同様である。
【００８０】
次に動作について説明する。
スタブ反応情報編集部１２は、入出力装置２を介したＧＵＩをユーザに提供することにより、ユーザによる指示に従って、スタブ反応記憶部７に蓄積されているスタブ反応情報要素３１群を編集する。図１１は、スタブ反応情報編集部１２による編集後のスタブ反応記憶部の記憶内容の一例を示す図である。図１１に示すように、編集後のスタブ反応情報要素３１ａのスタブ呼出情報の呼出箇所に、常に一致することを示すａｎｙを記述する。
【００８１】
これにより、スタブ関数ｅｘｔ＿ｆｕｎｃは、呼出箇所がどこであっても、スタブ反応情報要素３１ａが完全一致することになる。この結果、上記実施の形態３で示した図９のステップＳＴ１０ａ−１で、システム制御部３は、スタブ呼出情報ｃと呼出箇所とが完全に一致する選択肢が存在すると判定する。なお、上述のａｎｙの指定は、図１１のように呼出箇所全体に記述することもできるが、一部の要素のみに指定することもでき、一致条件を自在に編集することが可能である。
【００８２】
以上のように、この実施の形態４によれば、ユーザによる装置外部からの指示に従い、スタブ反応記憶部７に蓄積されているスタブ反応情報要素３１群を編集するスタブ反応情報編集部１２を備えたので、スタブ呼出情報ｃと呼出箇所との一致条件を編集することができ、これより、試験担当者の意図に沿った試験を効率的に実現することが可能である。
【００８３】
実施の形態５．
図１２は、この発明の実施の形態５による単体試験支援装置の構成を示すブロック図である。図１２において、実施の形態５による単体試験支援装置１Ｃは、上記実施の形態１で図１を用いて説明した構成において、スタブ反応履歴検索部８と通信ネットワークを介して通信可能なサーバ装置１３にスタブ反応記憶部７を設けたものである。このサーバ装置１３は、複数の単体試験支援装置１Ｃと通信ネットワークを介して通信接続することにより、複数の単体試験支援装置１Ｃに対して、スタブ反応記憶部７の機能を提供する。
このように、この実施の形態５では、複数のユーザによってそれぞれ利用される複数の単体試験支援装置間で、サーバ装置１３を介してスタブ反応記憶部７が共有される。これにより、複数のユーザ間でのスタブ反応情報の共有や再利用が可能となる。
【符号の説明】
【００８４】
１，１Ａ，１Ｂ，１Ｃ  単体試験支援装置、２  入出力装置（入出力部）、３  システム制御部（制御部）、４  状態遷移モジュール記憶部、５  テストドライバ記憶部、６  プログラム実行部、７  スタブ反応記憶部、８  スタブ反応履歴検索部（検索部）、９  スタブ反応選択肢記憶部（選択肢記憶部）、１０  スタブ反応ソート部（ソート部）、１１  ユーザ入力代行時限処理部（処理部）、１２  スタブ反応情報編集部（編集部）、１３  サーバ装置。
【図１】
2010244335.tif 000003
【図２】
2010244335.tif 000004
【図３】
2010244335.tif 000005
【図４】
2010244335.tif 000006
【図５】
2010244335.tif 000007
【図６】
2010244335.tif 000008
【図７】
2010244335.tif 000009
【図８】
2010244335.tif 000010
【図９】
2010244335.tif 000011
【図１０】
2010244335.tif 000012
【図１１】
2010244335.tif 000013
【図１２】
2010244335.tif 000014