JP5328457B2 - 単体試験支援装置 - Google Patents
単体試験支援装置 Download PDFInfo
- Publication number
- JP5328457B2 JP5328457B2 JP2009092974A JP2009092974A JP5328457B2 JP 5328457 B2 JP5328457 B2 JP 5328457B2 JP 2009092974 A JP2009092974 A JP 2009092974A JP 2009092974 A JP2009092974 A JP 2009092974A JP 5328457 B2 JP5328457 B2 JP 5328457B2
- Authority
- JP
- Japan
- Prior art keywords
- stub
- reaction
- unit
- call
- test
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Description
この発明は、状態遷移図や状態遷移表に基づいて記述されたソフトウェアモジュールの単体試験を支援する単体試験支援装置に関するものである。
高級言語プログラムの一部分(例えば、関数やモジュール)を単体試験する従来の方法としては、例えば特許文献1に開示されるものがある。この特許文献1では、試験対象のモジュール(試験対象モジュール)に対し、その上位モジュールを模擬するテストドライバと下位モジュールを模擬するテストスタブとを組み合わせて用いる。
テストドライバは、試験対象モジュールに対して、変数の設定や関数の呼出、イベントの発生等の働きかけを行い、これに対する試験対象モジュールの反応を観察することにより、想定される反応であるか否かを判断するプログラムである。このテストドライバからの働きかけで試験対象モジュールが動作するには、その動作の過程で呼び出される下位モジュールが必要となる。
ソフトウェアの開発過程では、多くのモジュールを別々の人や組織が並行して開発することが多く、試験対象モジュールの単体試験において、必要な下位モジュールが、全て提供されているとは限らない。
また、たとえ下位モジュールが提供されていたとしても、その下位モジュールが動作するにあたり、同様に、さらに下位のモジュールや最終的にはそれら下位のモジュールが利用するハードウェアまで提供されていなければならない。
しかしながら、これらは、ソフトウェア開発過程後期でなければ揃わない場合が多い。そこで、テストスタブと呼ばれる、試験の内容で必要となる反応のみに限定して、下位モジュールの挙動を模擬するモジュールを用いることが多い。
また、たとえ下位モジュールが提供されていたとしても、その下位モジュールが動作するにあたり、同様に、さらに下位のモジュールや最終的にはそれら下位のモジュールが利用するハードウェアまで提供されていなければならない。
しかしながら、これらは、ソフトウェア開発過程後期でなければ揃わない場合が多い。そこで、テストスタブと呼ばれる、試験の内容で必要となる反応のみに限定して、下位モジュールの挙動を模擬するモジュールを用いることが多い。
テストドライバとテストスタブは、テストケース毎に用意しなければならないが、特にテストスタブは、テストドライバ毎に試験対象モジュールを呼び出す下位モジュールの数だけ用意しなければならず、これらテストスタブをどのように用意するかが問題となる。
テストスタブを利用する従来の技術として、特許文献1には、対話型スタブとバッチ型スタブとでテストスタブを実現するソフトウェアテスト方法が開示されている。ここで、対話型スタブは、呼び出された時点でそのテストスタブが行うべき反応をユーザに対話的に問い合わせ、その結果をスタブの反応とするものである。バッチ型スタブは、予めプログラムを用意しておき、このプログラムに従ってテストスタブが行うべき反応を行う。
また、特許文献2には、試験対象モジュールからテストスタブを呼び出す部分を自動的に特定することにより、試験対象モジュールのうち、テストスタブの呼び出し構造やテストスタブの戻り値の扱いを分析してテストスタブの取り得る戻り値のパターンを自動生成し、このパターンの組み合わせを網羅的に実行するテストドライバを自動生成する単体試験支援装置が開示されている。
従来の技術では、特許文献1に示されるように、対話型スタブは、単体試験中に対話のためのユーザ負担が発生し、スタブの反応に時間制限があるものについて利用できない。また、バッチ型スタブは、呼び出すべき全ての下位モジュールに関するテストスタブ毎にプログラムを作成しなければならない。
一方、特許文献2に開示される装置は、試験対象モジュールのテストスタブを呼び出す部分において、そのテストスタブの戻り値をSwitch−Case文で分岐させるような単純な呼び出し構造であれば、そのテストスタブで戻すべき値が自動的に抽出され、抽出された値を戻り値として順に返すテストスタブの自動作成が可能である。しかしながら、戻り値の判断が、テストスタブの呼び出し直後ではなく、大域的変数等を介して別の場所で判断される場合、テストスタブが取り得る戻り値を抽出することが大変困難になる。
また、戻り値だけでなく、ポインタ渡しの引数や参照渡しの引数を複数有するテストスタブである場合、戻り値が1つだけでなく、これらテストスタブで変更可能な引数の全ての組み合わせがテストスタブとして取り得る反応となる。このため、組み合わせ数が非常に多くなり、単純な組み合わせに基づいてテストを行えば、現実には起こり得ない組み合わせについても試験を行うことになり、テストに要する時間が長時間化するという課題があった。
また、組み込み装置向けのソフトウェアでは、試験対象モジュール自体がその機能の状態を示す状態遷移表や状態遷移図に基づいて記述されることが多い。組み込みソフトウェアで多用される状態遷移表や状態遷移図で試験対象モジュールが記述されている場合、テストスタブは、単に戻り値や引数だけで試験対象モジュールと相互作用するのではなく、テストスタブ内でイベントを発生させ、これを試験対象モジュールで受けるといった、イベントのやり取りもある。しかしながら、従来の技術では、このようなイベントに関するテストスタブの生成方法や効率化についての解決策は提示されていない。
この発明は、上記のような課題を解決するためになされたもので、状態遷移図や状態遷移表に基づいて記述された試験対象モジュールの単体試験にあたり、テストスタブ作成の作業頻度の低減や、テストスタブを用いた単体試験に要する作業量の削減や実施時間の短縮化を実現できる単体試験支援装置を得ることを目的とする。
この発明に係る単体試験支援装置は、試験対象のソフトウェアモジュールによる下位の未定義のスタブ関数の呼び出しを検出するスタブ呼出検出部と、呼び出しされたスタブの反応内容をユーザとの間で対話的に決定する入出力部と、入出力部を介して決定されたスタブの反応内容を実行するスタブ反応実行部と、過去に決定されたスタブの反応内容の履歴を記憶するスタブ反応記憶部と、呼び出しされたスタブに対応する反応内容の履歴を選択肢としてスタブ反応記憶部から検索する検索部と、検索部により検索された選択肢を記憶する選択肢記憶部と、選択肢記憶部に記憶されたスタブの反応内容の選択肢を、状態遷移の特徴から選択される可能性が高いと想定される順に並び替えるソート部と、選択肢記憶部から読み出した選択肢を、ソート部による並び替え順で入出力部を介して提示し、呼び出しされたスタブに対応する反応内容を当該選択肢から決定させる制御部とを備えるものである。
この発明によれば、過去のスタブの反応内容の履歴から取得された選択肢を、当該スタブが実行されるソフトウェアモジュールの状態遷移の特徴に基づいて、選択される可能性が高いと想定される順に並び替えて提示するので、状態遷移図や状態遷移表に基づいて記述された試験対象モジュールの単体試験にあたり、テストスタブ作成の作業頻度の低減、テストスタブを用いた単体試験に要する作業量の削減や、実施時間の短縮化を実現できるという効果がある。
実施の形態1.
図1は、この発明の実施の形態1による単体試験支援装置の構成を示すブロック図である。図1において、実施の形態1による単体試験支援装置1は、実現すべき機能の状態を示す状態遷移表や状態遷移図に基づいて記述された試験対象モジュールを対象とする単体試験の実行を支援する装置であり、入出力装置(入出力部)2、システム制御部(制御部)3、状態遷移モジュール記憶部4、テストドライバ記憶部5、プログラム実行部6、スタブ反応記憶部7、スタブ反応履歴検索部(検索部)8、スタブ反応選択肢記憶部(選択肢記憶部)9及びスタブ反応ソート部(ソート部)10を備える。
図1は、この発明の実施の形態1による単体試験支援装置の構成を示すブロック図である。図1において、実施の形態1による単体試験支援装置1は、実現すべき機能の状態を示す状態遷移表や状態遷移図に基づいて記述された試験対象モジュールを対象とする単体試験の実行を支援する装置であり、入出力装置(入出力部)2、システム制御部(制御部)3、状態遷移モジュール記憶部4、テストドライバ記憶部5、プログラム実行部6、スタブ反応記憶部7、スタブ反応履歴検索部(検索部)8、スタブ反応選択肢記憶部(選択肢記憶部)9及びスタブ反応ソート部(ソート部)10を備える。
入出力装置2は、単体試験支援装置1とユーザとの間のインタフェースであり、例えばキーボードやマウス等の入力装置、及び、ディスプレイやスピーカ等の出力装置から構成される。システム制御部3は、入出力装置2、プログラム実行部6、スタブ反応履歴検索部8及びスタブ反応ソート部10の動作を制御する構成部である。
状態遷移モジュール記憶部4には、入出力装置2を介して入力された状態遷移モジュールが記憶される。なお、この実施の形態1では、説明の単純化のため、入出力装置2を介して状態遷移モジュールを入力する例を示したが、単体試験支援装置1が、ネットワークを介して他の計算機に接続されている場合、他の計算機からネットワークを介して状態遷移モジュールを転送してもよいし、USBメモリやCD−ROM、DVD、HDD等の記憶媒体に予め記憶されている状態遷移モジュールを読み込んでもよい。
テストドライバ記憶部5には、入出力装置2を介して入力された、テストドライバと呼ぶプログラムを格納する。テストドライバとは、ユーザが実施しようとする試験の意図に基づいて設定された状態遷移モジュールへの働きかけと、この働きかけに対して設計意図に沿って期待される反応とを確認するためのプログラムである。ここで、状態遷移モジュールへの働きかけには、ユーザの試験の意図に基づいて状態遷移モジュールへ設定される属性の値やイベントの打ち込み等が挙げられる。また、この働きかけに対して設計意図に沿って期待される反応には、状態遷移モジュール内部の動作によって発生する属性の値の変化やイベントの発生がある。
なお、この実施の形態1では、説明の単純化のため、入出力装置2の入力装置を介してテストドライバを入力する例を示したが、状態遷移モジュール記憶部4の説明と同様に、ネットワークを介して転送してもよいし、記憶媒体から読み込んでも良い。
プログラム実行部6は、スタブ呼出検出部61及びスタブ反応実行部62を備え、システム制御部3からの指示に基づいて、状態遷移モジュール記憶部4から試験対象の状態遷移モジュールを読み出し、当該状態遷移モジュールに対する働きかけ及びその反応を確認するためのテストドライバをテストドライバ記憶部5から読み出して、これらを実行する構成部である。
試験対象である状態遷移モジュールはC言語等のプログラムへ変換可能であったり、計算機で随時解釈しながら実行可能なJAVA(登録商標)の中間言語のような形式に変更可能である場合が多い。前者の場合には、状態遷移モジュールは、一旦、直接実行可能な機械語へコンパイルされてプログラム実行部6で実行される。一方、後者の場合は、プログラム実行部6に中間言語を随時解釈しながら実行するインタープリタが備わっており、状態遷移モジュールを表現した中間言語を実行する。同様に、テストドライバについても、プログラムへの変換可能であり、プログラム実行部6で実行される。
スタブ呼出検出部61は、試験対象である状態遷移モジュールを実行中に、未定義の下位モジュールに対する呼び出しを行っていることを検出する。例えば、プログラム実行部6がインタープリタによって実行される場合には、状態遷移モジュールが動作している最中に、インタープリタが、未定義のモジュールに対する呼び出しを検出し、当該未定義モジュールに対する呼び出しの代わりに、スタブ呼出検出部61を呼び出す処理を行う。
一方、プログラム実行部6がコンパイルされた機械語ベースで実行する場合には、コンパイルした後、リンク時に未定義のモジュールに対する呼び出しが検出されるので、この未定義のモジュールに対する呼び出しを受け付けるテストスタブを自動作成し、このテストスタブが呼び出された場合には、自動的にスタブ呼出検出部61を呼び出すプログラムをテストスタブに自動的に挿入してもよい。
いずれにせよ、未定義なモジュールに対する呼び出しが発生した場合には、スタブ呼出検出部61が呼び出され、このとき、スタブ呼出検出部61には、テストドライバの名前、試験対象である状態遷移モジュールの名前、呼出スタブ名、状態遷移モジュールからの呼出箇所の情報(後述)、スタブ呼出の際の引数の情報(値やポインタ情報)が提供される。
一方、プログラム実行部6がコンパイルされた機械語ベースで実行する場合には、コンパイルした後、リンク時に未定義のモジュールに対する呼び出しが検出されるので、この未定義のモジュールに対する呼び出しを受け付けるテストスタブを自動作成し、このテストスタブが呼び出された場合には、自動的にスタブ呼出検出部61を呼び出すプログラムをテストスタブに自動的に挿入してもよい。
いずれにせよ、未定義なモジュールに対する呼び出しが発生した場合には、スタブ呼出検出部61が呼び出され、このとき、スタブ呼出検出部61には、テストドライバの名前、試験対象である状態遷移モジュールの名前、呼出スタブ名、状態遷移モジュールからの呼出箇所の情報(後述)、スタブ呼出の際の引数の情報(値やポインタ情報)が提供される。
スタブ反応実行部62は、システム制御部3から入力したスタブ反応情報で特定される反応内容を実行する。スタブ反応記憶部7は、スタブ呼出検出部61から取得したスタブ呼出情報と、ユーザにより入力されたスタブ反応情報との組を含んで構成されるスタブ反応情報要素を記憶する記憶部である。スタブ反応履歴検索部8は、システム制御部3から取得したスタブ呼出情報のスタブ名と同じスタブ名のスタブ呼出情報をスタブ反応記憶部7から検索する。スタブ反応選択肢記憶部9は、スタブ反応履歴検索部8による検索結果のスタブ呼出情報を含むスタブ反応情報要素を記憶する記憶部である。スタブ反応ソート部10では、特定の優先順位に従ってスタブ反応選択肢記憶部9に格納されたスタブ反応情報の並び替えを行う。
次に動作について説明する。
先ず、状態遷移モジュールからの呼出箇所について説明する。
図2は、状態遷移図及びアクションの一例を示す図であって、例えば、国際規格であるISO/IEC19501で規定されるUML(Unified Modeling Language)によって状態遷移モジュールが図2に示す状態遷移図で記述された場合を示している。図2において、状態遷移図21には、状態State1と状態State2とがある。この図2では、状態State1のときにイベント(event1)が発生し、さらにガード条件というイベント処理条件global_a>0が成立すると、処理(function1)を実行して、状態State2へ遷移することが表現されている。同様に、状態State1のときにイベント(event1)が発生し、ガード条件global_a=0を満たす場合、処理(function2)が実行されて、状態State2へ遷移することも表現されている。
先ず、状態遷移モジュールからの呼出箇所について説明する。
図2は、状態遷移図及びアクションの一例を示す図であって、例えば、国際規格であるISO/IEC19501で規定されるUML(Unified Modeling Language)によって状態遷移モジュールが図2に示す状態遷移図で記述された場合を示している。図2において、状態遷移図21には、状態State1と状態State2とがある。この図2では、状態State1のときにイベント(event1)が発生し、さらにガード条件というイベント処理条件global_a>0が成立すると、処理(function1)を実行して、状態State2へ遷移することが表現されている。同様に、状態State1のときにイベント(event1)が発生し、ガード条件global_a=0を満たす場合、処理(function2)が実行されて、状態State2へ遷移することも表現されている。
上述したfunction1やfunction2のように、対応するイベントが発生し、かつガード条件が満たされると実行される処理をアクションと呼ぶ。一般に、アクションは複数の行にわたるプログラムになることが多いが、図2では、function1やfunction2の代わりにそれらのプログラム全てを状態遷移図に記載すると図が複雑になり見通しが悪くなる。そこで、図2では、fucntion1の実際の処理を別に記述している。このfunction1()の実際の処理例をアクション処理22とする。
アクション処理22の2行目では、ext_func(b)という外部の関数を呼び出して、引数に変数bを渡し、戻り値を変数global_aに代入している。この場合、ext_func(b)が、状態遷移モジュールからの呼出箇所となる。このように外部の関数を呼び出す場所としては、例示したアクション以外に、ガード条件においても呼び出す可能性がある。それゆえ、図2で呼出箇所を特定する情報は、状態名(State1)、イベント名(event1)、イベント処理インデックス0、呼出場所(Actionの2行目12文字目)となる。
なお、図2に示すように、1つの状態State1に複数の同じイベント(event1)に対する処理が定義されている場合であっても、どのイベント処理であるかを特定するために、その状態に付属するイベント処理の順番をイベント処理インデックスとして付加している。
なお、図2に示すように、1つの状態State1に複数の同じイベント(event1)に対する処理が定義されている場合であっても、どのイベント処理であるかを特定するために、その状態に付属するイベント処理の順番をイベント処理インデックスとして付加している。
ここで、プログラム実行部6がテストドライバtestAを実行しており、この試験対象の状態遷移モジュールが、StateChart1である場合を例に説明する。
状態State1において、テストドライバtestAがglobal_aを1にした上でevent1を発生させた場合、プログラム実行部6では、StateChart1の評価が行われ、状態State1の0番目に設定されているイベント処理がガード条件global_a>0を満たすので、アクションfunction0が実行されて、状態State2へ遷移する。アクションfunction0では、アクション処理22の2行目12文字目において、ext_func(b)が実行されるとき、スタブ呼出検出部61によって、図3に示すスタブ呼出情報が収集される。
状態State1において、テストドライバtestAがglobal_aを1にした上でevent1を発生させた場合、プログラム実行部6では、StateChart1の評価が行われ、状態State1の0番目に設定されているイベント処理がガード条件global_a>0を満たすので、アクションfunction0が実行されて、状態State2へ遷移する。アクションfunction0では、アクション処理22の2行目12文字目において、ext_func(b)が実行されるとき、スタブ呼出検出部61によって、図3に示すスタブ呼出情報が収集される。
図3は、スタブ呼出情報の一例を示す図であり、上述の処理によってスタブ呼出検出部61が収集したスタブ呼出情報を示している。図3に示すように、スタブ呼出情報には、属性名とその値が含まれる。属性名では、スタブ名、テストドライバ名、試験対象名及び呼出箇所が規定され、呼出箇所には、状態名、イベント名、イベント処理インデックス、アクション/ガード条件、行数及び文字数が呼出箇所を特定する情報として収集される。
これら属性名に対応する値として、上述の処理の場合、図3に示すように、スタブ名がext_func、テストドライバ名がtestA、試験対象名がStateChart1、呼出箇所を特定するための状態名がState1、イベント名がevent1、イベント処理インデックスが0、アクション/ガード条件としてはアクション、アクション処理22中の2行目を示す2が行数となり、その12文字目を示す12が文字数となる。
スタブ呼出検出部61は、図3に示すスタブ呼出情報で特定されるスタブのスタブ呼出が発生したことを、当該スタブ呼出情報とともにシステム制御部3へ通知する。この後、スタブ反応実行部62によって当該スタブのスタブ反応が実行終了するまで、スタブ呼出処理が停止される。
システム制御部3では、スタブ呼出が発生したことを通知されると、スタブ反応情報の一覧をスタブ反応記憶部7から検索するよう、スタブ反応履歴検索部8に指示する。このとき、システム制御部3は、スタブ呼出検出部61から入力したスタブ呼出情報も、スタブ反応履歴検索部8へ送られる。
図4は、スタブ反応記憶部の記憶内容の一例を示す図である。図4に示すように、スタブ反応記憶部7には、スタブ呼出情報とスタブ反応情報との組に最新の利用時刻と利用回数とが1つの要素として0要素以上保存されている。この1要素をスタブ反応情報要素31と呼ぶ。
スタブ反応履歴検索部8は、システム制御部3から取得したスタブ呼出情報のスタブ名を取り出し、スタブ反応記憶部7に記憶されているスタブ呼出情報の中から、同じスタブ名を持つスタブ呼出情報を検索する。スタブ反応履歴検索部8は、スタブ呼出情報のスタブ名が一致するスタブ反応情報要素31が検索されると、当該スタブ反応情報要素31をスタブ反応記憶部7から読み出してスタブ反応選択肢記憶部9に格納し、システム制御部3に対して検索成功を通知する。
一方、上記検索処理の結果、スタブ名が一致するスタブ呼出情報をスタブ反応選択肢記憶部9から1つも発見できなかった場合、スタブ反応履歴検索部8は、有効なスタブ反応を発見できなかったと判断して、システム制御部3に対して検索失敗を通知する。
一方、上記検索処理の結果、スタブ名が一致するスタブ呼出情報をスタブ反応選択肢記憶部9から1つも発見できなかった場合、スタブ反応履歴検索部8は、有効なスタブ反応を発見できなかったと判断して、システム制御部3に対して検索失敗を通知する。
システム制御部3は、検索失敗が通知されると、入出力装置2を介してユーザと対話的にやり取りして、ユーザが所望するスタブの反応を入力させる。ここでは、テストスタブの戻り値をユーザに求めたり、テストスタブの引数に対する演算処理や、特定のイベントの発生等、テストスタブが行うべき反応の内容が入力される。
また、入力方法としては、反応内容入力用GUI(Graphical User Interface)となる入力用画面を入出力装置2のモニタ画面上に表示させて、キーボードやマウス等の入力装置を用いて画面上のメニューから選択させたり、数値を入力させる方法や、任意のプログラムを入力させる方法や、これらを組み合わせた方法が考えられる。ユーザが入力した、テストスタブが行うべきバッチ処理の内容(スタブの反応の内容)をスタブ反応情報と呼ぶ。
また、入力方法としては、反応内容入力用GUI(Graphical User Interface)となる入力用画面を入出力装置2のモニタ画面上に表示させて、キーボードやマウス等の入力装置を用いて画面上のメニューから選択させたり、数値を入力させる方法や、任意のプログラムを入力させる方法や、これらを組み合わせた方法が考えられる。ユーザが入力した、テストスタブが行うべきバッチ処理の内容(スタブの反応の内容)をスタブ反応情報と呼ぶ。
システム制御部3では、スタブ呼出検出部61から取得したスタブ呼出情報と、上述のように、ユーザによって入力されたスタブ反応情報とを組にして、新たにスタブ反応情報要素を作成しスタブ反応記憶部7に追加記憶するとともに、スタブ反応情報をスタブ反応実行部62へ送る。スタブ反応実行部62では、システム制御部3からスタブ反応情報を入力すると、スタブ呼出の結果として、このスタブ反応情報で特定される反応内容を実行し、スタブ呼出を再開させる。
また、システム制御部3は、スタブ反応履歴検索部8から検索の終了が通知されると、スタブ反応ソート部10に対して、特定の優先順位に従いスタブ反応選択肢記憶部9に格納されたスタブ反応情報要素31の並び替え(ソート)を行わせる。スタブ反応ソート部10は、この並び替えが終了すると、システム制御部3に対して並び替えが終了したことを通知する。なお、優先順位の決定方法としては、状態遷移の特徴からユーザによって選択される可能性が高いと想定される反応内容を優先順位の上位とする。例えば、最近選択されたもの、あるいは、過去に何度も選択されたものが挙げられる。
システム制御部3は、スタブ反応ソート部10から、上述の並び替えが終了したことが通知されると、複数のスタブ反応情報をスタブ反応選択肢記憶部9から読み出し、スタブ反応ソート部10によって並び替えられた順番で各スタブ反応情報を、入出力装置2を介してユーザに提示して、ユーザの選択を受け付ける。ユーザによりスタブ反応情報が選択されると、システム制御部3は、上記選択されたスタブ反応情報をスタブ反応実行部62へ送るとともに、スタブ反応記憶部7に保持された当該スタブ反応情報を含むスタブ反応情報要素の最新利用時刻及び利用回数を更新する。
なお、上記説明では、ユーザが、提示されたスタブ反応情報のリストから所望のスタブ反応情報を選択する場合を示したが、スタブ反応履歴検索部8による検索でスタブ名が一致するスタブ呼出情報が1つも見つからなかった場合と同様に、入出力装置2を介してユーザと対話的にやり取りすることにより、新しいスタブ反応情報を作成させるようにしてもよい。このように、新しいスタブ反応情報が選択された場合は、先に説明したとおり、システム制御部3から指示を受けたスタブ反応履歴検索部8が、スタブ呼出されたスタブに関するスタブ呼出情報と新たに入力されたスタブ反応情報との組を、新しいスタブ反応情報要素としてスタブ反応選択肢記憶部9に記録するとともに、当該スタブ反応情報が、システム制御部3からスタブ反応実行部12へ送られる。
次に、スタブ反応履歴検索部8によるスタブ反応情報の検索動作について説明する。
図5は、図1中のスタブ反応履歴検索部による動作の流れを示すフローチャートであり、この図に沿って検索動作の詳細を説明する。
先ず、スタブ反応履歴検索部8は、システム制御部3からスタブ呼出情報が通知されると、当該スタブ呼出情報からスタブ名を取り出し、当該スタブ名の値を文字列の変数であるsnameに代入する(ステップST1)。続いて、スタブ反応履歴検索部8は、スタブ反応記憶部7に格納されているスタブ反応情報要素31の全数を整数の変数allに代入する(ステップST2)。
図5は、図1中のスタブ反応履歴検索部による動作の流れを示すフローチャートであり、この図に沿って検索動作の詳細を説明する。
先ず、スタブ反応履歴検索部8は、システム制御部3からスタブ呼出情報が通知されると、当該スタブ呼出情報からスタブ名を取り出し、当該スタブ名の値を文字列の変数であるsnameに代入する(ステップST1)。続いて、スタブ反応履歴検索部8は、スタブ反応記憶部7に格納されているスタブ反応情報要素31の全数を整数の変数allに代入する(ステップST2)。
ステップST3において、スタブ反応履歴検索部8は、スタブ反応記憶部7から現在読み出し中のスタブ反応情報要素31のインデックス数を表現する整数値が付与される変数iを0に初期化するとともに、スタブ反応選択肢記憶部9に格納されている過去の情報を消去する(初期化)。以上の処理が完了すると、スタブ反応履歴検索部8は、現在読み出し中のスタブ反応情報要素31の変数iが、ステップST2で設定した全数allよりも少ないか否かを判定する(ステップST4)。ここで、変数iが全数all以上である場合、検索処理を終了する。
一方、変数iが全数allより少なければ、スタブ反応履歴検索部8は、インデックス値i番目のスタブ反応情報要素31をスタブ反応記憶部7から読み出し、当該スタブ反応情報要素31のスタブ呼出情報を変数c[i]に代入するとともに、当該スタブ反応情報要素31のスタブ反応情報を変数r[i]に代入する(ステップST5)。
続いて、スタブ反応履歴検索部8は、変数c[i]に代入したスタブ呼出情報からスタブ名を取り出し、このスタブ名の値を文字列の変数iSnameに代入する(ステップST6)。この後、スタブ反応履歴検索部8は、変数snameの値と変数iSnameの値とが一致するか否かを判定する(ステップST7)。変数snameの値と変数iSnameの値とが一致する場合、スタブ反応履歴検索部8は、変数c[i]と変数r[i]との組をスタブ反応情報要素31としてスタブ反応選択肢記憶部9へ格納する(ステップST8)。
ステップST7で変数snameの値と変数iSnameの値とが一致しない場合、若しくは、ステップST8の処理が完了すると、スタブ反応履歴検索部8は、インデックス値である変数iを1増加させ(ステップST9)、ステップST4の処理に戻る。これにより、変数iが全数allに達するまで、ステップST4からステップST9までの処理が繰り返される。
次に、システム制御部3による制御動作について説明する。
図6は、図1中のシステム制御部による動作の流れを示すフローチャートであり、この図に沿って制御の概要を説明する。
先ず、システム制御部3は、スタブ呼出検出部61からのスタブ呼出の検出通知の待ち状態にある(ステップST1a)。この待ち状態は、スタブ呼出検出部61によってスタブ呼出が検出され、その検出通知が受信されるまで継続する。スタブ呼出検出部61からスタブ呼出の検出通知を受けると、システム制御部3は、当該スタブ呼出に関するスタブ呼出情報をスタブ呼出検出部61から変数cとして取得する(ステップST2a)。
図6は、図1中のシステム制御部による動作の流れを示すフローチャートであり、この図に沿って制御の概要を説明する。
先ず、システム制御部3は、スタブ呼出検出部61からのスタブ呼出の検出通知の待ち状態にある(ステップST1a)。この待ち状態は、スタブ呼出検出部61によってスタブ呼出が検出され、その検出通知が受信されるまで継続する。スタブ呼出検出部61からスタブ呼出の検出通知を受けると、システム制御部3は、当該スタブ呼出に関するスタブ呼出情報をスタブ呼出検出部61から変数cとして取得する(ステップST2a)。
システム制御部3は、スタブ呼出検出部61から取得したスタブ呼出情報cを、スタブ反応履歴検索部8に送り、当該スタブ呼出情報cのスタブ名と一致するスタブ呼出情報をスタブ反応記憶部7から検索するよう、指示する(ステップST3a)。これにより、システム制御部3は、スタブ反応履歴検索部8による検索結果の待ち状態となる(ステップST4a)。なお、この待ち状態は、スタブ反応履歴検索部8から検索結果を受けるまで継続される。
スタブ反応履歴検索部8から検索結果を受けると、システム制御部3は、当該検索結果の内容から検索が成功したか否かを判定する(ステップST5a)。ここで、検索に失敗したと判定された場合(ステップST5a;NO)、システム制御部3は、入出力装置2にスタブ呼出情報cを送り、ユーザへのスタブ反応情報の入力要求指示をすることにより、入出力装置2を介してユーザが当該スタブ呼出情報cに対するスタブ反応情報を入力するための入力用GUIが提供される(ステップST6a)。これにより、システム制御部3は、ユーザからのスタブ反応情報の入力待ち状態となる。この待ち状態は、ユーザによるスタブ反応情報の入力が確定するまで継続する。
ユーザによるスタブ反応情報の入力が確定すると、システム制御部3は、入出力装置2を介して取得された当該スタブ反応情報を変数rに代入する(ステップST7a)。この後、システム制御部3は、スタブ呼出情報cとスタブ反応情報rとの組をスタブ反応情報要素31として、スタブ反応記憶部7に追加記憶させる(ステップST8a)。
一方、検索成功と判定した場合(ステップST5a;Yes)、システム制御部3は、スタブ反応ソート部10に対して、スタブ反応選択肢記憶部9に格納されているスタブ呼出情報とスタブ反応情報との組からなるスタブ反応情報要素31の並び替え(ソート)を指示する(ステップST9a)。この後、システム制御部3は、スタブ反応ソート部10から並び替え処理の終了が通知されるまで待ち状態となる(ステップST10a)。
スタブ反応ソート部10から並び替えの終了が通知されると、システム制御部3は、並び替え済みのスタブ反応情報要素31をスタブ反応選択肢記憶部9から取り出し、スタブ反応ソート部10による並び替えの順番で、取り出したスタブ反応情報要素31のスタブ反応情報のリストを入出力装置2に出力して、ユーザにスタブ反応情報を選択させることを指示する(ステップST11a)。これによって、システム制御部3による制御の下、入出力装置2を介して、上記並び順でスタブ反応情報を選択させるための選択用画面等が提示され、ユーザによるスタブ反応情報の選択が受け付けられる。
この後、システム制御部3は、ユーザによるスタブ反応情報の選択肢の選択待ち状態に移行する(ステップST12a)。この待ち状態は、ユーザによりスタブ反応情報が選択入力されるまで継続する。
ユーザによって入出力装置2を介してスタブ反応情報が選択入力されると、システム制御部3は、ステップST11aで提示したスタブ反応情報リスト中の選択肢であるか否かを判定する(ステップST13a)。ユーザは、リスト中の選択肢に所望するスタブ反応情報がない場合、その旨を入出力装置2を介して入力する。この通知を入力すると、システム制御部3は、リストの選択肢からの選択でない(ステップST13a;NO)と判断して、ステップST6aの処理に戻り、ユーザが所望するスタブ反応情報の入力要求指示を行う。これにより、ステップST6aからステップST8aまで、ステップST15aの処理が実行される。
また、リスト中の選択肢からスタブ反応情報が選択された場合(ステップST13a;YES)、システム制御部3は、入出力装置2を介してリストから選択されたスタブ反応情報を取得し、変数rに代入する(ステップST14a)。ステップST8aの処理が完了するか、若しくは、ステップST14aの処理が完了すると、システム制御部3は、スタブ反応情報rをプログラム実行部6のスタブ反応実行部62へ送り、当該スタブ反応情報rで規定されるスタブ反応の実行を指示する(ステップST15a)。これによって、スタブ反応実行部62は、システム制御部3からのスタブ反応情報に基づいて、スタブの反応を実行する。システム制御部3は、スタブ反応実行部62にスタブ反応を実行させると、スタブ呼出検出部61に対し停止しているスタブ呼出処理の再開を指示する。
なお、実施の形態1では、図4に示したように、スタブ反応記憶部7において、スタブ呼出情報とスタブ反応情報との組、最終利用時刻及び利用回数の2つの情報を持たせたスタブ反応情報要素31が格納されている。そこで、システム制御部3は、スタブ反応履歴検索部8に指示することにより、ユーザが選択したスタブ反応情報rを保持するスタブ反応情報要素31において、最新の利用時刻として現在の時刻を入力するとともに、利用回数を1つ増加させる処理も併せて行う。
以上のように、この実施の形態1によれば、試験対象の状態遷移モジュールによる下位の未定義のスタブ関数の呼び出しを検出するスタブ呼出検出部61と、呼び出しされたスタブの反応内容をユーザとの間で対話的に決定する入出力装置2と、入出力装置2を介して決定されたスタブの反応内容を実行するスタブ反応実行部62と、過去に決定されたスタブの反応内容の履歴を記憶するスタブ反応記憶部7と、呼び出しされたスタブに対応する反応内容の履歴を選択肢としてスタブ反応記憶部7から検索するスタブ反応履歴検索部8と、スタブ反応履歴検索部8により検索された選択肢を記憶するスタブ反応選択肢記憶部9と、スタブ反応選択肢記憶部9に記憶されたスタブの反応内容の選択肢を、状態遷移の特徴から選択される可能性が高いと想定される順に並び替えるスタブ反応ソート部10と、スタブ反応選択肢記憶部9から読み出した選択肢を、スタブ反応ソート部10による並び替え順で入出力装置2を介して提示し、呼び出しされたスタブに対応する反応内容を当該選択肢から決定させるシステム制御部3とを備える。このように構成して、図5及び図6に示すように動作させることにより、ユーザとの間で過去に対話的に作成したスタブ反応情報が、利用される可能の高い順番でユーザに提示されるので、選択肢の発見に要する時間や作業量を削減することができる。また、一度入力したスタブ反応情報が再利用されやすくなるため、冗長なスタブ反応情報を入力しなくても済む機会が増加し、作業性の向上を図ることが可能である。
実施の形態2.
この実施の形態2では、試験対象モジュールが状態遷移表や状態遷移図に基づくことを利用して、ユーザにより選択される可能性が高いスタブ反応情報をスタブ反応ソート部に特定させるものである。なお、実施の形態2による単体試験支援装置は、上記実施の形態1で図1を用いて説明した構成と基本的に同一であるが、スタブ反応ソート部の処理が異なる。そこで、実施の形態2による単体試験支援装置の構成は、図1を参照することとする。
この実施の形態2では、試験対象モジュールが状態遷移表や状態遷移図に基づくことを利用して、ユーザにより選択される可能性が高いスタブ反応情報をスタブ反応ソート部に特定させるものである。なお、実施の形態2による単体試験支援装置は、上記実施の形態1で図1を用いて説明した構成と基本的に同一であるが、スタブ反応ソート部の処理が異なる。そこで、実施の形態2による単体試験支援装置の構成は、図1を参照することとする。
次に動作について説明する。
図7は、状態遷移図の一例を示す図であり、上記実施の形態1と同様にUMLによって状態遷移モジュールが当該状態遷移図で記述された場合を示している。図7の例では、説明の単純化のためアクションとして未定義な外部への呼出(以下、スタブ関数と呼ぶ)が1つだけある場合を示す。なお、実施の形態2としては、アクションが複数行あり、そこに複数の異なるスタブ関数があっても構わない。
図7は、状態遷移図の一例を示す図であり、上記実施の形態1と同様にUMLによって状態遷移モジュールが当該状態遷移図で記述された場合を示している。図7の例では、説明の単純化のためアクションとして未定義な外部への呼出(以下、スタブ関数と呼ぶ)が1つだけある場合を示す。なお、実施の形態2としては、アクションが複数行あり、そこに複数の異なるスタブ関数があっても構わない。
図7において、状態State1には、自己遷移(同じ状態への遷移)を行うイベント処理が2つ定義されており、状態State2へ遷移するイベント処理が1つ定義されている。自己遷移のイベント処理の0番目がevent1を受けて、未定義な外部への呼出となるスタブ関数function1()が実行される。1番目がevent2を受けてスタブ関数function1()が実行される。状態State2への遷移のイベント処理は、event3を受けて、スタブ関数function2()が実行される。
状態State2では、自己遷移を行うイベント処理が4つ定義されている。自己遷移の0番目は、event3を受けて、スタブ関数function2()が実行される。
自己遷移の1番目から3番目までは、ガード条件として、スタブ関数の戻り値を利用しており、1番目は、スタブ関数function3()が正の値(function3()>0)なら、スタブ関数function4()が実行される。2番目は、スタブ関数function3()の値が0(function3()=0)なら、スタブ関数function5()が実行される。3番目は、スタブ関数function3()が負の値(function3()<0)なら、スタブ関数function6()が実行される。
自己遷移の1番目から3番目までは、ガード条件として、スタブ関数の戻り値を利用しており、1番目は、スタブ関数function3()が正の値(function3()>0)なら、スタブ関数function4()が実行される。2番目は、スタブ関数function3()の値が0(function3()=0)なら、スタブ関数function5()が実行される。3番目は、スタブ関数function3()が負の値(function3()<0)なら、スタブ関数function6()が実行される。
このような状態遷移図に基づいて記述された状態遷移モジュールでは、同じ状態に定義されたイベント処理のアクションあるいはガード条件で同じスタブ関数を持つ場合、そのスタブ関数の反応は同じものを選択する可能性が高い。これは、図7においては、状態State1の自己遷移における0番目と1番目のイベント処理のアクションで呼び出されるスタブ関数function1()が相当する。
同じ状態から呼び出された同じスタブ関数であると、同じ反応を期待する可能性が高い理由としては、いずれのスタブ関数も、ある1状態(図7の例では、状態State1)のときに呼び出される。このため、当該スタブ関数を実現する下位モジュールについても同じ状態である可能性が高く、同じ反応を示しやすいためである。これを同一状態からの呼出と呼ぶこととする。
また、同じイベントのアクションあるいはガード条件から呼び出されるスタブ関数に対して、ユーザは同じ反応を期待する可能性が高い。例えば、図7に状態State1から状態State2への遷移を示す矢印上に記載した、状態State1から状態State2への遷移を伴うイベント処理であるevent3から呼び出されるスタブ関数function2()と、図7に示す状態State2における自己遷移の0番目のイベント処理event3から呼び出されるスタブ関数function2()とがある。これらは、同じイベントに対する処理である。この場合、それぞれのイベント処理におけるアクションは、同じような内容を記述することが多いため、同じような反応をユーザは期待しやすい。これを同一イベントからの呼出と呼ぶこととする。
一方、同一状態に定義された同一のイベントに対する処理のガード条件に記述されたスタブ関数は、以前とは異なる反応を期待しやすい。これは、図7に示す状態State2の自己遷移のイベント処理の1番目から3番目までに相当する。いずれもガード条件にてスタブ関数function3()を呼び出している。
ある試験において、スタブ関数function3()に対し、ユーザが正の値の反応を選択した場合、次にスタブ関数function3()に対して、正の値以外の反応(0や負の値)を選択すると、試験の網羅性をあげることができる。このため、ユーザは、異なる反応を選択しやすいと考えられる。これを、同一状態、同一イベントのガード条件からの呼出と呼ぶこととする。
上記実施の形態1と同様に、実施の形態2による単体試験支援装置においても、図4に示したような最新の利用時刻及び利用回数の情報がスタブ反応情報要素31毎に記録されている。そこで、実施の形態2によるスタブ反応ソート部10は、システム制御部3からソート指示(図6中のステップST9a参照)があった場合、通知されたスタブ呼出情報cに対して、スタブ反応選択肢記憶部9に格納されている複数のスタブ反情報要素31を下記に示す優先順位で並び替えを行う。
(1)アクションの場合
優先順位1;図3に示すような呼出箇所が完全に一致するスタブ反応情報を最上位に配置する。
優先順位2;同一状態からの呼出におけるスタブ反応情報を上位に並べる。
優先順位3;同一イベントからの呼出におけるスタブ反応情報を上位に並べる。
優先順位4;利用回数の多いスタブ反応情報を上位に並べる。
優先順位5;最新の利用時刻が現在時刻に近いスタブ反応情報を上位に並べる。
(2)ガード条件の場合
優先順位1;図3に示すような呼出箇所が完全に一致するスタブ反応情報を最上位に配置する。
優先順位2;同一状態同一イベントのガード条件からの呼出に相当しないスタブ反応情報を上位に並べる。
優先順位3;同一状態からの呼出におけるスタブ反応情報を上位に並べる。
優先順位4;同一イベントからの呼出におけるスタブ反応情報を上位に並べる。
優先順位5;利用回数の多いスタブ反応情報を上位に並べる。
優先順位6;最新の利用時刻が現在時刻に近いスタブ反応情報を上位に並べる。
優先順位1;図3に示すような呼出箇所が完全に一致するスタブ反応情報を最上位に配置する。
優先順位2;同一状態からの呼出におけるスタブ反応情報を上位に並べる。
優先順位3;同一イベントからの呼出におけるスタブ反応情報を上位に並べる。
優先順位4;利用回数の多いスタブ反応情報を上位に並べる。
優先順位5;最新の利用時刻が現在時刻に近いスタブ反応情報を上位に並べる。
(2)ガード条件の場合
優先順位1;図3に示すような呼出箇所が完全に一致するスタブ反応情報を最上位に配置する。
優先順位2;同一状態同一イベントのガード条件からの呼出に相当しないスタブ反応情報を上位に並べる。
優先順位3;同一状態からの呼出におけるスタブ反応情報を上位に並べる。
優先順位4;同一イベントからの呼出におけるスタブ反応情報を上位に並べる。
優先順位5;利用回数の多いスタブ反応情報を上位に並べる。
優先順位6;最新の利用時刻が現在時刻に近いスタブ反応情報を上位に並べる。
以上のように、この実施の形態2によれば、スタブ反応ソート部10が、試験対象モジュールの状態遷移におけるスタブの呼出箇所を特定する状態、イベント処理、利用回数、利用時刻及びこれらの組み合わせのいずれかに基づいて、スタブ反応選択肢記憶部9に記憶された反応内容の選択肢の並び替え順を決定する。このようにすることで、状態遷移の特徴に基づいて、ユーザが少ない作業時間及び作業量でスタブの反応内容を選択することができる。
実施の形態3.
図8は、この発明の実施の形態3による単体試験支援装置の構成を示すブロック図である。図8において、実施の形態3による単体試験支援装置1Aは、上記実施の形態1で図1を用いて説明した構成にユーザ入力代行時限処理部(処理部)11を追加したものである。なお、当該単体試験支援装置1Aにおいて、ユーザ入力代行時限処理部11及びこれに対応するシステム制御部3の処理以外は図1と同様である。
図8は、この発明の実施の形態3による単体試験支援装置の構成を示すブロック図である。図8において、実施の形態3による単体試験支援装置1Aは、上記実施の形態1で図1を用いて説明した構成にユーザ入力代行時限処理部(処理部)11を追加したものである。なお、当該単体試験支援装置1Aにおいて、ユーザ入力代行時限処理部11及びこれに対応するシステム制御部3の処理以外は図1と同様である。
ユーザ入力代行時限処理部11は、システム制御部3から起動通知とデフォルトの選択肢を受けると、予め設定された時間を計時するタイマ(図1において不図示)を起動し、システム制御部3からの終了要求を受ける前に当該設定時間が経過すると、ユーザが入出力装置2を介して入力する選択の代わりにデフォルトの選択肢を選択して、ユーザに変わって当該選択内容をシステム制御部3に出力する構成部である。
次に動作について説明する。
図9は、図8中のシステム制御部による動作の流れを示すフローチャートであり、この図に沿ってユーザ入力代行時限処理部11による処理に対応したシステム制御部3の動作の詳細を説明する。なお、図9において、図6と同一ステップ番号を付した処理は、同一内容の処理であるので説明を省略する。
図9は、図8中のシステム制御部による動作の流れを示すフローチャートであり、この図に沿ってユーザ入力代行時限処理部11による処理に対応したシステム制御部3の動作の詳細を説明する。なお、図9において、図6と同一ステップ番号を付した処理は、同一内容の処理であるので説明を省略する。
ステップST10aにてスタブ反応ソート部10から並び替えの終了が通知されると、システム制御部3は、新たに追加されたステップST10a−1の処理に移行する。このステップST10a−1において、システム制御部3は、スタブ反応ソート部10により並び替えられたスタブ反応選択肢記憶部9のスタブ反応情報要素から、スタブ呼出情報cと呼出箇所とが完全に一致する選択肢が存在するか否かを判定する。
ここで、スタブ呼出情報cと呼出箇所とが完全に一致する選択肢が存在しなければ(ステップST10a−1;NO)、システム制御部3は、並び替え済みのスタブ反応情報要素31をスタブ反応選択肢記憶部9から取り出し、スタブ反応ソート部10による並び替えの順番で、取り出したスタブ反応情報要素31のスタブ反応情報のリストを入出力装置2に出力し、ユーザにスタブ反応情報を選択させることを指示する(ステップST11a)。これによって、システム制御部3による制御の下、入出力装置2を介して、上記並び順でスタブ反応情報を選択させる選択用画面が提示され、ユーザによるスタブ反応情報の選択が受け付けられる。
一方、スタブ呼出情報cと呼出箇所が完全に一致する選択肢が存在する場合(ステップST10a−1;YES)、システム制御部3は、ユーザ入力代行時限処理部11を起動させる(ステップST10a−2)。このとき、スタブ呼出情報cと呼出箇所が完全に一致したスタブ反応情報要素31をデフォルトの選択肢として、ユーザ入力代行時限処理部11に通知する。この後、ステップST11aの処理に移行する。
ここで、ユーザ入力代行時限処理部11は、ステップST11aでユーザがスタブ反応情報を選択するまでに与えられる所定時間tを計時するタイマを設定する(計時開始)。なお、この所定時間tは、実施の形態3による単体試験支援装置1Aの設計者やユーザが予め任意に決定してもよい。タイマの計時で所定時間tが0になると(所定時間tに達すると)、ユーザ入力代行時限処理部11では、デフォルトの選択肢を即時に選択してシステム制御部3へ出力する。
この後、システム制御部3は、入力されたスタブ反応情報が、リスト中の選択肢から選択されたものであるか否かを判定する(ステップST13a)。なお、ユーザ入力代行時限処理部11によって所定時間tの経過のために即時に選択された結果は、ユーザが入力したものとして扱われる。
リスト中の選択肢からスタブ反応情報が選択された場合(ステップST13a;YES)、システム制御部3は、新たに設けたステップST13a−1の処理へ移行し、ユーザ入力代行時限処理部11の動作を停止する。この後に続くステップST14a及びステップST15aの処理は、上記実施の形態1と同様である。なお、ステップST14aにおいて、システム制御部3は、ユーザ入力代行時限処理部11によって選択されたデフォルトのスタブ反応情報要素31のスタブ反応情報を取得すると、当該スタブ反応情報を変数rに代入して後の処理を行う。
以上のように、この実施の形態3によれば、所定時間を経過すると、予め定めたデフォルトの選択肢を自動的に選択することから、ユーザの選択肢の回答に要する作業量を低減することができる。特に、単体試験を繰り返し行う場合、一度、全ての試験について対話的に試験を行ってデフォルトの選択肢を決定することにより、2回目からは自動的に試験を進めることが可能となる。
実施の形態4.
図10は、この発明の実施の形態4による単体試験支援装置の構成を示すブロック図である。図10において、実施の形態4による単体試験支援装置1Bは、上記実施の形態3で図8を用いて説明した構成にスタブ反応情報編集部(編集部)12を追加したものである。スタブ反応情報編集部12は、入出力装置2を介したGUIをユーザに提供することにより、ユーザによる指示に従って、スタブ反応記憶部7に蓄積されているスタブ反応情報要素31群を編集する構成部である。なお、当該単体試験支援装置1Bにおいて、スタブ反応情報編集部12及びこれに対応する入出力装置2やスタブ反応記憶部7に対する処理以外は図8と同様である。
図10は、この発明の実施の形態4による単体試験支援装置の構成を示すブロック図である。図10において、実施の形態4による単体試験支援装置1Bは、上記実施の形態3で図8を用いて説明した構成にスタブ反応情報編集部(編集部)12を追加したものである。スタブ反応情報編集部12は、入出力装置2を介したGUIをユーザに提供することにより、ユーザによる指示に従って、スタブ反応記憶部7に蓄積されているスタブ反応情報要素31群を編集する構成部である。なお、当該単体試験支援装置1Bにおいて、スタブ反応情報編集部12及びこれに対応する入出力装置2やスタブ反応記憶部7に対する処理以外は図8と同様である。
次に動作について説明する。
スタブ反応情報編集部12は、入出力装置2を介したGUIをユーザに提供することにより、ユーザによる指示に従って、スタブ反応記憶部7に蓄積されているスタブ反応情報要素31群を編集する。図11は、スタブ反応情報編集部12による編集後のスタブ反応記憶部の記憶内容の一例を示す図である。図11に示すように、編集後のスタブ反応情報要素31aのスタブ呼出情報の呼出箇所に、常に一致することを示すanyを記述する。
スタブ反応情報編集部12は、入出力装置2を介したGUIをユーザに提供することにより、ユーザによる指示に従って、スタブ反応記憶部7に蓄積されているスタブ反応情報要素31群を編集する。図11は、スタブ反応情報編集部12による編集後のスタブ反応記憶部の記憶内容の一例を示す図である。図11に示すように、編集後のスタブ反応情報要素31aのスタブ呼出情報の呼出箇所に、常に一致することを示すanyを記述する。
これにより、スタブ関数ext_funcは、呼出箇所がどこであっても、スタブ反応情報要素31aが完全一致することになる。この結果、上記実施の形態3で示した図9のステップST10a−1で、システム制御部3は、スタブ呼出情報cと呼出箇所とが完全に一致する選択肢が存在すると判定する。なお、上述のanyの指定は、図11のように呼出箇所全体に記述することもできるが、一部の要素のみに指定することもでき、一致条件を自在に編集することが可能である。
以上のように、この実施の形態4によれば、ユーザによる装置外部からの指示に従い、スタブ反応記憶部7に蓄積されているスタブ反応情報要素31群を編集するスタブ反応情報編集部12を備えたので、スタブ呼出情報cと呼出箇所との一致条件を編集することができ、これより、試験担当者の意図に沿った試験を効率的に実現することが可能である。
実施の形態5.
図12は、この発明の実施の形態5による単体試験支援装置の構成を示すブロック図である。図12において、実施の形態5による単体試験支援装置1Cは、上記実施の形態1で図1を用いて説明した構成において、スタブ反応履歴検索部8と通信ネットワークを介して通信可能なサーバ装置13にスタブ反応記憶部7を設けたものである。このサーバ装置13は、複数の単体試験支援装置1Cと通信ネットワークを介して通信接続することにより、複数の単体試験支援装置1Cに対して、スタブ反応記憶部7の機能を提供する。
このように、この実施の形態5では、複数のユーザによってそれぞれ利用される複数の単体試験支援装置間で、サーバ装置13を介してスタブ反応記憶部7が共有される。これにより、複数のユーザ間でのスタブ反応情報の共有や再利用が可能となる。
図12は、この発明の実施の形態5による単体試験支援装置の構成を示すブロック図である。図12において、実施の形態5による単体試験支援装置1Cは、上記実施の形態1で図1を用いて説明した構成において、スタブ反応履歴検索部8と通信ネットワークを介して通信可能なサーバ装置13にスタブ反応記憶部7を設けたものである。このサーバ装置13は、複数の単体試験支援装置1Cと通信ネットワークを介して通信接続することにより、複数の単体試験支援装置1Cに対して、スタブ反応記憶部7の機能を提供する。
このように、この実施の形態5では、複数のユーザによってそれぞれ利用される複数の単体試験支援装置間で、サーバ装置13を介してスタブ反応記憶部7が共有される。これにより、複数のユーザ間でのスタブ反応情報の共有や再利用が可能となる。
1,1A,1B,1C 単体試験支援装置、2 入出力装置(入出力部)、3 システム制御部(制御部)、4 状態遷移モジュール記憶部、5 テストドライバ記憶部、6 プログラム実行部、7 スタブ反応記憶部、8 スタブ反応履歴検索部(検索部)、9 スタブ反応選択肢記憶部(選択肢記憶部)、10 スタブ反応ソート部(ソート部)、11 ユーザ入力代行時限処理部(処理部)、12 スタブ反応情報編集部(編集部)、13 サーバ装置。
Claims (5)
- 実現すべき機能の状態を示す状態遷移に基づいて記述されたソフトウェアモジュールを対象とする単体試験の実行を支援する単体試験支援装置において、
試験対象の前記ソフトウェアモジュールによる下位の未定義のスタブ関数の呼び出しを検出するスタブ呼出検出部と、
前記呼び出しされたスタブの反応内容をユーザとの間で対話的に決定する入出力部と、
前記入出力部を介して決定されたスタブの反応内容を実行するスタブ反応実行部と、
過去に決定されたスタブの反応内容の履歴を記憶するスタブ反応記憶部と、
前記呼び出しされたスタブに対応する反応内容の履歴を選択肢として前記スタブ反応記憶部から検索する検索部と、
前記検索部により検索された前記選択肢を記憶する選択肢記憶部と、
前記選択肢記憶部に記憶されたスタブの反応内容の選択肢を、前記状態遷移の特徴から選択される可能性が高いと想定される順に並び替えるソート部と、
前記選択肢記憶部から読み出した前記選択肢を、前記ソート部による並び替え順で前記入出力部を介して提示して、前記呼び出しされたスタブに対応する反応内容を当該選択肢から決定させる制御部とを備えたことを特徴とする単体試験支援装置。 - ソート部は、試験対象のソフトウェアモジュールの状態遷移におけるスタブの呼出箇所を特定する状態、イベント処理、利用回数、利用時刻及びこれらの組み合わせのいずれかに基づいて、選択肢記憶部に記憶された反応内容の選択肢の並び替え順を決定することを特徴とする請求項1記載の単体試験支援装置。
- 呼び出されたスタブと呼出箇所が完全に一致するスタブの反応内容がスタブ反応記憶部に存在する場合、当該スタブの反応内容をデフォルト内容として保持し、入出力部を介してスタブの反応内容を対話的に決定させるにあたり、所定の時間が経過するまでに反応内容の選択がなかったとき、前記デフォルト内容として保持した反応内容を前記呼び出されたスタブの反応内容とする処理部を備えたことを特徴とする請求項1または請求項2記載の単体試験支援装置。
- 装置外部からの指示に従って、スタブ反応記憶部の記憶内容を編集する編集部を備えたことを特徴とする請求項1から請求項3のうちのいずれか1項記載の単体試験支援装置。
- 自身の装置内に設ける代わりに、複数の単体試験支援装置との間で通信ネットワークを介して通信接続するサーバ装置にスタブ反応記憶部を設け、当該スタブ反応記憶部を前記複数の単体試験支援装置間で共有することを特徴とする請求項1から請求項4のうちのいずれか1項記載の単体試験支援装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009092974A JP5328457B2 (ja) | 2009-04-07 | 2009-04-07 | 単体試験支援装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009092974A JP5328457B2 (ja) | 2009-04-07 | 2009-04-07 | 単体試験支援装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010244335A JP2010244335A (ja) | 2010-10-28 |
JP5328457B2 true JP5328457B2 (ja) | 2013-10-30 |
Family
ID=43097283
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009092974A Expired - Fee Related JP5328457B2 (ja) | 2009-04-07 | 2009-04-07 | 単体試験支援装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5328457B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5433638B2 (ja) * | 2011-06-29 | 2014-03-05 | 合同会社IP Bridge1号 | 開発支援方法及びプログラム |
JP5751115B2 (ja) * | 2011-09-28 | 2015-07-22 | 富士通株式会社 | 試験支援プログラム、試験支援方法および試験支援装置 |
US9317405B2 (en) * | 2014-01-31 | 2016-04-19 | Fujitsu Limited | Test double generation |
JP6406000B2 (ja) * | 2014-12-25 | 2018-10-17 | 株式会社デンソー | 車両制御システム |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06110730A (ja) * | 1992-04-24 | 1994-04-22 | Nec Corp | 結合テスト実行方式 |
JPH08249210A (ja) * | 1995-03-10 | 1996-09-27 | Canon Inc | テストデータ保存装置及びテストデータ自動入力装置並びに機能テスト装置 |
JPH1165888A (ja) * | 1997-08-19 | 1999-03-09 | Casio Comput Co Ltd | ソフトウェア試験装置および記憶媒体 |
JP2002169822A (ja) * | 2000-11-30 | 2002-06-14 | Ntt Data Corp | 入力支援装置及び入力支援プログラムを記録した記録媒体 |
JP2004086562A (ja) * | 2002-08-27 | 2004-03-18 | Fujitsu Ltd | コンテンツ中継装置及びコンテンツ中継方法及びコンテンツ中継プログラム |
JP2006091944A (ja) * | 2004-09-21 | 2006-04-06 | Fuji Xerox Co Ltd | ソフトウェアコンポーネントテストシステム及びソフトウェアコンポーネントテスト方法 |
-
2009
- 2009-04-07 JP JP2009092974A patent/JP5328457B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2010244335A (ja) | 2010-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4395761B2 (ja) | プログラムテスト支援装置およびその方法 | |
CN105209925B (zh) | 用于调试自动化器件测试的程序的计算机实现方法及系统 | |
US8359584B2 (en) | Debugging from a call graph | |
Paiva et al. | A model-to-implementation mapping tool for automated model-based GUI testing | |
US8887138B2 (en) | Debugging in a dataflow programming environment | |
US20140366005A1 (en) | Abstract layer for automatic user interface testing | |
US20070266368A1 (en) | System and method for synchronized workflow management | |
US20090199163A1 (en) | Debugger assistance for locating values at runtime | |
Grechanik et al. | Creating GUI testing tools using accessibility technologies | |
CA2708685A1 (en) | Modularizing and aspectizing graphical user interface directed test scripts | |
US20080244593A1 (en) | Task roster | |
JPH02272645A (ja) | プログラム・デバツグ支援方法 | |
JP5328457B2 (ja) | 単体試験支援装置 | |
JP2000122886A (ja) | 半導体試験装置のプログラム作成方式 | |
US9921946B2 (en) | Method and system to display and browse program trace using source code decoration | |
US8918756B2 (en) | Generating constraints in a class model | |
US20120110560A1 (en) | Data type provider for a web semantic store | |
van der Merwe et al. | Generation of library models for verification of android applications | |
CN106126213B (zh) | 一种基于IFML的Android开发建模方法 | |
Saddler et al. | EventFlowSlicer: a tool for generating realistic goal-driven GUI tests. | |
JP2005338987A (ja) | 例外テスト支援プログラム及び例外テスト支援装置 | |
JP2009545824A (ja) | プラズマ処理システムコンポーネント解析ソフトウェアおよびそのプラズマ処理システムコンポーネント解析ソフトウェアを製作するための方法およびシステム | |
JP2014044615A (ja) | グラフィカルユーザインタフェースの網羅的な自動操作方法及び装置 | |
JP7294609B2 (ja) | ソフトウェアの操作シナリオの生成を支援するプログラム、方法およびソフトウェアの操作シナリオの生成を支援する装置 | |
JP4925514B2 (ja) | 内外イベントドリブン方式によるプログラム実行制御方法、プログラム、実行制御装置および記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111012 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130618 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130625 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130723 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |