JP6724673B2 - テスト支援プログラム、テスト支援方法及びテスト支援装置 - Google Patents

テスト支援プログラム、テスト支援方法及びテスト支援装置 Download PDF

Info

Publication number
JP6724673B2
JP6724673B2 JP2016178020A JP2016178020A JP6724673B2 JP 6724673 B2 JP6724673 B2 JP 6724673B2 JP 2016178020 A JP2016178020 A JP 2016178020A JP 2016178020 A JP2016178020 A JP 2016178020A JP 6724673 B2 JP6724673 B2 JP 6724673B2
Authority
JP
Japan
Prior art keywords
driver
stub
program
test
target program
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.)
Active
Application number
JP2016178020A
Other languages
English (en)
Other versions
JP2018045325A (ja
Inventor
英生 谷田
英生 谷田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016178020A priority Critical patent/JP6724673B2/ja
Publication of JP2018045325A publication Critical patent/JP2018045325A/ja
Application granted granted Critical
Publication of JP6724673B2 publication Critical patent/JP6724673B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、テスト支援プログラム、テスト支援方法及びテスト支援装置に関する。
プログラムのテストを行う場合、ドライバとスタブが必要になる。ドライバは、テスト対象プログラムに引数を与えて呼び出すプログラムである。スタブは、テスト対象プログラムから呼び出されるダミー実装のプログラムであり、戻り値を返す。
図5は、ドライバとスタブを説明するための図である。図5において、関数funca()がテスト対象プログラムである。関数funca()は引数argを受け取り、関数suba()を呼び出す。このため、関数main()がドライバとして引数fooを与えて関数funca()を呼び出し、関数suba()がスタブとして戻り値barを返す。
プログラムのテストを支援するために、ドライバ及びスタブを自動生成するテスト支援装置がある。テスト支援装置は、ドライバを生成する際には、適切な型の値を引数として与えるようにする必要があり、スタブを生成する際には、適切な型の値を返すようにする必要がある。
しかしながら、JavaScript(登録商標)、Python、Ruby等の動的型付けを行う言語では、実行時に型を決めるので、実行前に型がわからない。したがって、動的型付けを行う言語で作成されたプログラムをテストする場合、テスト支援装置は、ドライバの引数及びスタブの戻り値として適切な型の値を与えることができない。
このため、アノテーションを利用してドライバ及びスタブを自動生成する方法がある。ここで、アノテーションとは、ソースコード内のコメントである。図6は、アノテーションを利用してドライバ及びスタブを自動生成する方法を説明するための図である。
図6において、「/**」と「*/」で挟まれた記載はコメントである。図6において、アノテーション「@type EventInfo」は、変数evInfoの型がEventInfoであることを表す。また、「evInfo.getItemId()」の記載は、evInfoは、関数getItemId()が存在するEventInfo型であることを表す。テスト支援装置は、アノテーションから型を取得することによって、ドライバの引数及びスタブの戻り値として適切な型の値を与えることができる。
なお、テスト対象プログラムの特定のクラス内に例外が発生する可能性のある特定のメソッドを検出した場合、特定のクラス、特定のメソッド及び例外データに基づいて、クラス名及びメソッド名が同じであって例外を発生させるスタブクラスを生成する技術がある。この技術によれば、例外処理のテストを自動化することができる。
また、プログラムの実行中に所定の条件が満たされたかを監視し、所定の条件が満たされると、所定の条件に対応付けられた例外用プログラム部品を呼び出すことで、プログラムのテストを効率よく行う技術がある。
また、プログラムの更新後の動作記述と共通性の高い動作記述を複数の更新前動作記述から選択し、選択した更新前動作記述のテストパターンから更新後の動作記述のテストパターンを生成することで、テストパターンの生成を効率的に行う技術がある。
特開2005−338987号公報 特開2012−108692号公報 特開2004−118403号公報
アノテーションを利用してドライバ及びスタブを自動生成する方法には、アノテーションに誤りがあるとテスト対象プログラムを正しく実行できないという問題がある。図7は、アノテーションを利用してドライバ及びスタブを自動生成する方法の問題を説明するための図である。図7(a)は、自動生成されたドライバを示し、図7(b)は、テスト対象プログラムを示す。
図7(a)に示すように、ドライバは、EventInfo型の変数evInfoを生成する(var evInfo = new EventInfo())。そして、ドライバは、evInfoを引数としてテスト対象プログラムfuncUnderTestを呼び出す(funcUnderTest(evInfo))。
ここで、EventInfoが関数getItemId()のみ定義された型であるとする。図7(b)のテスト対象プログラムfuncUnderTest()が実行されると、arg.getItemId()は、EventInfoに関数getItemId()が定義されているため、正しく実行される。しかしながら、arg.getObj()は、EventInfoに関数getObj()が定義されていないため、正しく実行されない。
アノテーションに誤りが生じる場合としては、例えば、EventInfoの定義が開発中に変更になった場合がある。
本発明は、1つの側面では、テスト対象プログラムの正しい実行を可能とするドライバ及びスタブを生成することを目的とする。
1つの態様では、テスト支援プログラムは、動的型付けを行うプログラム言語により記載されたテスト対象プログラムのテスト時にテスト対象プログラムを呼び出すドライバを生成する処理をコンピュータに実行させる。また、テスト支援プログラムは、テスト対象プログラムに呼び出されるスタブを生成する処理をコンピュータに実行させる。テスト支援プログラムは、使用する引数の定義箇所を識別する識別情報を該引数のメンバとして追加した識別子に設定するコードを含めたドライバを生成する処理をコンピュータに実行させる。テスト支援プログラムは、使用する戻り値の定義箇所を識別する識別情報を該戻り値のメンバとして追加した識別子に設定するコードを含めたスタブを生成する処理をコンピュータに実行させる。そして、テスト支援プログラムは、生成したドライバとスタブの少なくとも1つをテスト対象プログラムと共に実行してエラー発生個所と未定義関数を特定する処理をコンピュータに実行させる。そして、テスト支援プログラムは、特定したエラー発生個所の直前に識別情報を出力するコードを挿入してテスト対象プログラムを修正した修正プログラムを生成する処理をコンピュータに実行させる。そして、テスト支援プログラムは、ドライバを修正プログラムと共に実行して出力された識別情報に基づいて、引数のメンバとして含まれる未定義関数の定義をドライバに追加した修正ドライバを生成する処理をコンピュータに実行させる。また、テスト支援プログラムは、スタブを修正プログラムと共に実行して出力された識別情報に基づいて、戻り値のメンバとして含まれる未定義関数の定義をスタブに追加した修正スタブを生成する処理をコンピュータに実行させる。
1つの側面では、テスト対象プログラムの正しい実行を可能とするドライバ及びスタブを生成することができる。
図1Aは、実施例に係るテスト支援装置が生成するドライバ及びスタブを説明するための第1の図である。 図1Bは、実施例に係るテスト支援装置が生成するドライバ及びスタブを説明するための第2の図である。 図1Cは、実施例に係るテスト支援装置が生成するドライバ及びスタブを説明するための第3の図である。 図1Dは、実施例に係るテスト支援装置が生成するドライバ及びスタブを説明するための第4の図である。 図1Eは、実施例に係るテスト支援装置が生成するドライバ及びスタブを説明するための第5の図である。 図1Fは、実施例に係るテスト支援装置が生成するドライバ及びスタブを説明するための第6の図である。 図1Gは、実施例に係るテスト支援装置が生成するドライバ及びスタブを説明するための第7の図である。 図1Hは、実施例に係るテスト支援装置が生成するドライバ及びスタブを説明するための第8の図である。 図2は、実施例に係るテスト支援装置の機能構成を示す図である。 図3は、テスト支援装置による処理のフローを示すフローチャートである。 図4は、実施例に係るテスト支援プログラムを実行するコンピュータのハードウェア構成を示す図である。 図5は、ドライバとスタブを説明するための図である。 図6は、アノテーションを利用してドライバ及びスタブを自動生成する方法を説明するための図である。 図7は、アノテーションを利用してドライバ及びスタブを自動生成する方法の問題を説明するための図である。
以下に、本願の開示するテスト支援プログラム、テスト支援方法及びテスト支援装置の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
まず、実施例に係るテスト支援装置が生成するドライバ及びスタブについて説明する。図1A〜図1Hは、実施例に係るテスト支援装置が生成するドライバ及びスタブを説明するための図である。図1A(a)は、ドライバを示し、図1A(b)は、テスト対象プログラムを示す。図1A(a)に示すように、実施例に係るテスト支援装置は、テスト対象プログラムに与える引数evInfoの定義箇所を示す情報をメンバ変数idに設定するコード「evInfo.id=“driver0.js,line 1”」をドライバに追加する。
ここで、idは、evInfoに動的に追加されたメンバ変数である。「driver0.js」は、ドライバ名であり、ドライバを格納するファイルの名前である。「line 1」は、引数evInfoの定義箇所が1行目「var evInfo=new EventInfo」であることを示す。実施例に係るテスト支援装置は、テスト中に引数に関してエラーが発生した際にevInfo.idに設定された情報を出力することで、引数がドライバのどこで定義された変数かを特定することができる。
そして、実施例に係るテスト支援装置は、図1Bに示すように、ドライバに対して、テスト対象プログラム実行中に発生したエラーを補足して解析するコードを追加する。図1Bでは、catch(ex){inspectException(ex);}が追加されたコードであり、inspectException()がエラーを解析する関数である。inspectException()は、例外オブジェクトに含まれる情報からエラー発生個所とエラーメッセージを出力する。
そして、実施例に係るテスト支援装置は、ドライバとテスト対象プログラムを実行する。すると、図1Cに示すように、「var obj=arg.getObj();」でエラーが発生し、inspectException()によって、エラー発生個所として「target.js,line 6」が出力される。また、inspectException()によって、エラーメッセージ「TypeError:arg.getObj is not a function」が出力される。
そして、実施例に係るテスト支援装置は、inspectException()により出力された情報を基に、図1Dに示すように、テスト対象プログラムのエラー発生個所の直前に未定義関数を含む変数のメンバ変数idの値を出力するコードを挿入する。図1Dでは、「console.log(arg.id);」が挿入されたコードである。
そして、実施例に係るテスト支援装置は、ドライバとテスト対象プログラムを再実行する。すると、evInfo.idに設定された情報「“driver0.js,line 1”」が出力される。そして、実施例に係るテスト支援装置は、driver0.jsの1行目で定義された変数evInfoに関数getObj()が定義されていなかったためにエラーが発生したことを特定する。
そして、実施例に係るテスト支援装置は、図1Eに示すように、未定義関数getObj()のスタブ定義をドライバに追加する。図1Eでは、2行目〜6行目に関数evInfo.getObj()のスタブ定義が挿入されている。3行目は、evInfo.getObj()の戻り値retvalを定義しているので、4行目に、戻り値retvalの定義箇所を示す情報をメンバ変数idに設定するコード「retval.id=“driver1.js,line 3”」が追加されている。また、ドライバが修正されたため、ドライバ名が「driver1.js」に変更されている。
そして、実施例に係るテスト支援装置は、ドライバとテスト対象プログラムを実行する。すると、図1Fに示すように、「obj.getType();」でエラーが発生し、inspectException()によって、エラー発生個所として「target.js,line 7」が出力される。また、inspectException()によって、エラーメッセージ「TypeError:obj.getType is not a function」が出力される。
そして、実施例に係るテスト支援装置は、inspectException()により出力された情報を基に、図1Gに示すように、テスト対象プログラムのエラー発生個所の直前に未定義関数を含む変数のメンバ変数idの値を出力するコードを挿入する。図1Gでは、「console.log(obj.id);」が挿入されたコードである。
そして、実施例に係るテスト支援装置は、ドライバとテスト対象プログラムを再実行する。すると、retval.idに設定された情報「“driver1.js,line 3”」が出力される。そして、実施例に係るテスト支援装置は、driver1.jsの3行目で定義された変数retvalに関数getType()が定義されていなかったためにエラーが発生したことを特定する。
そして、実施例に係るテスト支援装置は、図1Hに示すように、未定義関数getType()のスタブ定義をドライバに追加する。図1Hでは、4行目〜8行目に関数retval.getType()のスタブ定義が挿入されている。5行目は、retval.getType()の戻り値retval2を定義しているので、6行目に、戻り値retval2の定義箇所を示す情報をメンバ変数idに設定するコード「retval2.id=“driver2.js,line 5”」が追加されている。また、ドライバが修正されたため、ドライバ名が「driver2.js」に変更されている。
そして、実施例に係るテスト支援装置は、ドライバとテスト対象プログラムを再実行する。すると、エラーが発生しないため、実施例に係るテスト支援装置は、driver2.jsを生成したドライバとする。
このように、実施例に係るテスト支援装置は、変数の型が期待したものと異なるために、プログラムに関数が未定義のエラーが存在する場合に、エラーをなくすドライバ及びスタブを生成する。このため、実施例に係るテスト支援装置は、エラー発生時の情報を基に原因となる変数と未定義の関数を特定し、必要な関数を定義したドライバ及びスタブを再生成する。
すなわち、実施例に係るテスト支援装置は、テスト時に使用するドライバから与える引数及びスタブから返す戻り値にメンバ変数idを追加し、定義箇所を示す情報を設定する。そして、実施例に係るテスト支援装置は、テスト実行中に発生したエラーを補足して、エラーメッセージを解析することで、エラー発生の原因となった変数の名前を特定する。
そして、実施例に係るテスト支援装置は、エラー発生個所の直前にメンバ変数idの値を出力するコードを挿入してプログラムを再実行することで、エラー発生個所での未定義関数名とドライバでの引数名又はスタブでの戻り値名との対応付けを行う。そして、実施例に係るテスト支援装置は、未定義関数を定義したドライバ又はスタブを再生成する。そして、実施例に係るテスト支援装置は、エラーが発生しなくなるまでドライバ又はスタブの再生成を繰り返す。
したがって、実施例に係るテスト支援装置は、未定義関数のないドライバ及びスタブを生成し、テスト対象プログラムを正しく実行することができる。
次に、実施例に係るテスト支援装置の機能構成について説明する。図2は、実施例に係るテスト支援装置の機能構成を示す図である。図2に示すように、実施例に係るテスト支援装置1は、初期ドライバ生成部11と、テスト実行部12と、出力コード挿入部13と、検出部14と、ドライバ再生成部15と、判定部16とを有する。
初期ドライバ生成部11は、引数の定義箇所を示す情報を引数のメンバ変数idに設定するコード、及び、エラーを補足して解析するコードを含むドライバを初期ドライバとして生成する。
テスト実行部12は、初期ドライバ生成部11又はドライバ再生成部15により生成されたドライバを用いてテスト対象プログラム2を実行し、未定義関数が原因のエラーを検出する。そして、エラー発生個所を出力コード挿入部13に出力し、未定義関数名を検出部14に出力する。
出力コード挿入部13は、テスト実行部12が出力したエラー発生個所から、エラー発生個所の直前に、引数又は戻り値のメンバ変数idに設定された定義箇所情報を出力するコードをテスト対象プログラム2に追加する。テスト実行部12は、出力コード挿入部13により出力コードが追加されたテスト対象プログラムをドライバを用いて実行する。
検出部14は、出力コード挿入部13により出力コードが追加されたテスト対象プログラムの出力結果に基づいて、エラー発生原因となった変数のドライバ又はスタブ内での定義箇所及び変数名を調べる。そして、検出部14は、エラー発生原因変数の定義箇所及び変数名をドライバ再生部15に出力する。
ドライバ再生成部15は、エラー発生原因変数の定義箇所及び変数名と未定義関数名に基づいて、ドライバに未定義関数の定義を追加してドライバを再生成する。判定部16は、テスト実行部12でのエラーの有無から、テスト対象プログラムをエラーなく実行する完成ドライバ3が得られたか否かを判定し、得られたと判定した場合には、完成ドライバ3を出力する。
次に、テスト支援装置1による処理のフローについて説明する。図3は、テスト支援装置1による処理のフローを示すフローチャートである。図3に示すように、テスト支援装置1は、関数fを呼び出す初期ドライバを生成してdとする(ステップS1)。ここで、関数fは、テスト対象プログラムである。
そして、テスト支援装置1は、引数の定義箇所を示す情報を設定するコード、及び、エラーを補足して解析するコードをdに挿入してドライバを生成してdとする(ステップS2)。そして、テスト支援装置1は、ドライバdを用いて関数fを実行し(ステップS3)、未定義関数によるエラーが発生したか否かを判定する(ステップS4)。そして、未定義関数によるエラーが発生しなかった場合には、テスト支援装置1は、ドライバdを完成ドライバ3として出力して処理を終了する。
一方、未定義関数によるエラーが発生した場合には、テスト支援装置1は、エラー情報よりエラー発生個所m、未定義関数名u、変数名iを特定する(ステップS5)。そして、テスト支援装置1は、エラー発生個所mの直前に変数名iの定義箇所を示す情報を出力するコードを挿入した関数f’を生成する(ステップS6)。
そして、テスト支援装置1は、ドライバdを用いて関数f’を実行し、ドライバ又はスタブでの変数名jを取得する(ステップS7)。そして、テスト支援装置1は、ドライバdで変数名jをもつ変数に名前がuのスタブ関数を定義したドライバを生成してdとし(ステップS8)、ステップS3に戻る。
このように、未定義関数によるエラーが発生しなくなるまでドライバの再生成を繰り返すことで、テスト支援装置1は、完成ドライバ3を生成することができる。
上述してきたように、実施例では、初期ドライバ生成部11が、引数の定義箇所を示す情報を引数のメンバ変数idに設定するコードを含むドライバを初期ドライバとして生成する。そして、テスト実行部12が、初期ドライバを用いてテスト対象プログラム2を実行して未定義関数が原因のエラーを検出し、エラー発生個所と未定義関数名を特定する。そして、出力コード挿入部13が、エラー発生個所の直前に、引数のメンバ変数idに設定された定義箇所情報を出力するコードをテスト対象プログラム2に追加する。そして、テスト実行部12は、出力コード挿入部13により出力コードが追加されたテスト対象プログラムをドライバを用いて実行する。そして、検出部14が、実行結果に基づいて、エラー発生原因となった変数に関して、ドライバ又はスタブ内での定義箇所及び変数名を特定する。そして、ドライバ再生成部15が、エラー発生原因変数の定義箇所及び変数名と未定義関数名に基づいて、ドライバに未定義関数の定義を追加してドライバを再生成する。したがって、テスト支援装置1は、テスト対象プログラム2を正しく実行するドライバを生成することができる。
また、実施例では、判定部16が、テスト実行部12でのエラーの有無から、テスト対象プログラムをエラーなく実行する完成ドライバ3が得られたか否かを判定し、得られたと判定した場合には、完成ドライバ3を出力する。一方、完成ドライバ3が得られなかった場合には、テスト支援装置1は、テスト対象プログラム2を修正して実行する処理、エラー発生原因となった変数に関して、ドライバ又はスタブ内での定義箇所及び変数名を特定する処理、及び、ドライバを再生成する処理を繰り返す。したがって、テスト支援装置1は、テスト対象プログラム2を正しく実行するドライバを最終的に生成することができる。
なお、実施例では、テスト支援装置1について説明したが、テスト支援装置1が有する構成をソフトウェアによって実現することで、同様の機能を有するテスト支援プログラムを得ることができる。そこで、テスト支援プログラムを実行するコンピュータについて説明する。
図4は、実施例に係るテスト支援プログラムを実行するコンピュータのハードウェア構成を示す図である。図4に示すように、コンピュータ50は、メインメモリ51と、CPU(Central Processing Unit)52と、LAN(Local Area Network)インタフェース53と、HDD(Hard Disk Drive)54とを有する。また、コンピュータ50は、スーパーIO(Input Output)55と、DVI(Digital Visual Interface)56と、ODD(Optical Disk Drive)57とを有する。
メインメモリ51は、プログラムやプログラムの実行途中結果などを記憶するメモリである。CPU52は、メインメモリ51からプログラムを読み出して実行する中央処理装置である。CPU52は、メモリコントローラを有するチップセットを含む。
LANインタフェース53は、コンピュータ50をLAN経由で他のコンピュータに接続するためのインタフェースである。HDD54は、プログラムやデータを格納するディスク装置であり、スーパーIO55は、マウスやキーボードなどの入力装置を接続するためのインタフェースである。DVI56は、液晶表示装置を接続するインタフェースであり、ODD57は、DVDの読み書きを行う装置である。
LANインタフェース53は、PCIエクスプレス(PCIe)によりCPU52に接続され、HDD54及びODD57は、SATA(Serial Advanced Technology Attachment)によりCPU52に接続される。スーパーIO55は、LPC(Low Pin Count)によりCPU52に接続される。
そして、コンピュータ50において実行されるテスト支援プログラムは、DVDに記憶され、ODD57によってDVDから読み出されてコンピュータ50にインストールされる。あるいは、テスト支援プログラムは、LANインタフェース53を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてコンピュータ50にインストールされる。そして、インストールされたテスト支援プログラムは、HDD54に記憶され、メインメモリ51に読み出されてCPU52によって実行される。
また、実施例では、ドライバを生成する場合について説明したが、本発明はこれに限定されるものではなく、スタブを生成する場合にも同様に適用することができる。
1 テスト支援装置
2 テスト対象プログラム
3 完成ドライバ
11 初期ドライバ生成部
12 テスト実行部
13 出力コード挿入部
14 検出部
15 ドライバ再生成部
16 判定部
50 コンピュータ
51 メインメモリ
52 CPU
53 LANインタフェース
54 HDD
55 スーパーIO
56 DVI
57 ODD

Claims (4)

  1. 動的型付けを行うプログラム言語により記載されたテスト対象プログラムのテスト時に前記テスト対象プログラムを呼び出すドライバと、前記テスト対象プログラムに呼び出されるスタブの少なくとも1つを生成して支援するテスト支援プログラムにおいて、
    使用する引数の定義箇所を識別する識別情報を該引数のメンバとして追加した識別子に設定するコードを含めた前記ドライバと、使用する戻り値の定義箇所を識別する識別情報を該戻り値のメンバとして追加した識別子に設定するコードを含めた前記スタブの少なくとも1つを生成し、
    生成した前記ドライバと前記スタブの少なくとも1つを前記テスト対象プログラムと共に実行してエラー発生個所と未定義関数を特定し、
    特定したエラー発生個所の直前に前記識別情報を出力するコードを挿入して前記テスト対象プログラムを修正した修正プログラムを生成し、
    前記ドライバを前記修正プログラムと共に実行して出力された前記識別情報に基づいて、前記引数のメンバとして含まれる前記未定義関数の定義を前記ドライバに追加した修正ドライバと、前記スタブを前記修正プログラムと共に実行して出力された前記識別情報に基づいて、前記戻り値のメンバとして含まれる前記未定義関数の定義を前記スタブに追加した修正スタブの少なくとも1つを生成する
    処理をコンピュータに実行させることを特徴とするテスト支援プログラム。
  2. 前記修正ドライバと前記修正スタブの少なくとも1つを前記テスト対象プログラムと共に実行してエラーが発生したか否かを判定し、エラーが発生しなかった場合には、前記修正ドライバと前記修正スタブの少なくとも1つを出力し、エラーが発生した場合には、前記テスト対象プログラム、及び、前記ドライバと前記スタブの少なくとも1つを修正する処理を前記コンピュータに更に実行させることを特徴とする請求項1に記載のテスト支援プログラム。
  3. 動的型付けを行うプログラム言語により記載されたテスト対象プログラムのテスト時に前記テスト対象プログラムを呼び出すドライバと、前記テスト対象プログラムに呼び出されるスタブの少なくとも1つを生成して支援するテスト支援方法において、
    使用する引数の定義箇所を識別する識別情報を該引数のメンバとして追加した識別子に設定するコードを含めた前記ドライバと、使用する戻り値の定義箇所を識別する識別情報を該戻り値のメンバとして追加した識別子に設定するコードを含めた前記スタブの少なくとも1つを生成し、
    生成した前記ドライバと前記スタブの少なくとも1つを前記テスト対象プログラムと共に実行してエラー発生個所と未定義関数を特定し、
    特定したエラー発生個所の直前に前記識別情報を出力するコードを挿入して前記テスト対象プログラムを修正した修正プログラムを生成し、
    前記ドライバを前記修正プログラムと共に実行して出力された前記識別情報に基づいて、前記引数のメンバとして含まれる前記未定義関数の定義を前記ドライバに追加した修正ドライバと、前記スタブを前記修正プログラムと共に実行して出力された前記識別情報に基づいて、前記戻り値のメンバとして含まれる前記未定義関数の定義を前記スタブに追加した修正スタブの少なくとも1つを生成する
    処理をコンピュータが実行することを特徴とするテスト支援方法。
  4. 動的型付けを行うプログラム言語により記載されたテスト対象プログラムのテスト時に前記テスト対象プログラムを呼び出すドライバと、前記テスト対象プログラムに呼び出されるスタブの少なくとも1つを生成して支援するテスト支援装置において、
    使用する引数の定義箇所を識別する識別情報を該引数のメンバとして追加した識別子に設定するコードを含めた前記ドライバと、使用する戻り値の定義箇所を識別する識別情報を該戻り値のメンバとして追加した識別子に設定するコードを含めた前記スタブの少なくとも1つを生成する第1生成部と、
    前記第1生成部により生成された前記ドライバと前記スタブの少なくとも1つを前記テスト対象プログラムと共に実行してエラー発生個所と未定義関数を特定する特定部と、
    前記特定部により特定されたエラー発生個所の直前に前記識別情報を出力するコードを挿入して前記テスト対象プログラムを修正した修正プログラムを生成する第2生成部と、
    前記ドライバを前記修正プログラムと共に実行して出力された前記識別情報に基づいて、前記引数のメンバとして含まれる前記未定義関数の定義を前記ドライバに追加した修正ドライバと、前記スタブを前記修正プログラムと共に実行して出力された前記識別情報に基づいて、前記戻り値のメンバとして含まれる前記未定義関数の定義を前記スタブに追加した修正スタブの少なくとも1つを生成する第3生成部と
    を有することを特徴とするテスト支援装置。
JP2016178020A 2016-09-12 2016-09-12 テスト支援プログラム、テスト支援方法及びテスト支援装置 Active JP6724673B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016178020A JP6724673B2 (ja) 2016-09-12 2016-09-12 テスト支援プログラム、テスト支援方法及びテスト支援装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016178020A JP6724673B2 (ja) 2016-09-12 2016-09-12 テスト支援プログラム、テスト支援方法及びテスト支援装置

Publications (2)

Publication Number Publication Date
JP2018045325A JP2018045325A (ja) 2018-03-22
JP6724673B2 true JP6724673B2 (ja) 2020-07-15

Family

ID=61694921

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016178020A Active JP6724673B2 (ja) 2016-09-12 2016-09-12 テスト支援プログラム、テスト支援方法及びテスト支援装置

Country Status (1)

Country Link
JP (1) JP6724673B2 (ja)

Also Published As

Publication number Publication date
JP2018045325A (ja) 2018-03-22

Similar Documents

Publication Publication Date Title
JP6621204B2 (ja) 安全重視ソフトウェア開発のためのモデルベース技術および過程のためのシステムおよび方法
US8417998B2 (en) Targeted black box fuzzing of input data
US10049031B2 (en) Correlation of violating change sets in regression testing of computer software
US20080270842A1 (en) Computer operating system handling of severe hardware errors
US10481893B1 (en) Identifying and resolving firmware component dependencies
US10209984B2 (en) Identifying a defect density
US20140214396A1 (en) Specification properties creation for a visual model of a system
CA2811617C (en) Commit sensitive tests
US8589734B2 (en) Verifying correctness of processor transactions
CN112306568A (zh) 服务实例配置方法、装置、电子设备及存储介质
JP6724673B2 (ja) テスト支援プログラム、テスト支援方法及びテスト支援装置
JP2009193335A (ja) 静的検証ツールのアノテーション自動挿入方法
US10481969B2 (en) Configurable system wide tests
JP2016128941A (ja) 出力判定装置、出力判定方法、出力判定プログラム、及び、静的解析装置
JP5865091B2 (ja) ソフトウェア検証支援装置、ソフトウェア検証支援方法、ソフトウェア検証支援プログラム
JP5799823B2 (ja) テストデータ生成装置、テストデータ生成プログラムおよびテストデータ生成方法
JP4957521B2 (ja) ソフトウェア部分テストシステム、それに用いる方法およびプログラム
US9632912B1 (en) Method and system for debugging a program
KR101534493B1 (ko) 구조 변환에 기초한 소스코드 보안 약점 탐지 장치 및 방법
US9448903B2 (en) Multiple test type analysis for a test case using test case metadata
JP2016126700A (ja) プログラム検証装置、プログラム検証方法及びプログラム検証プログラム
JP6748357B2 (ja) 解析装置、解析プログラムおよび解析方法
JP5799589B2 (ja) 検証方法及び検証プログラム
US9280441B2 (en) Detection and correction of race conditions in workflows
TW201818271A (zh) 程式能力評估系統與程式能力評估方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190611

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200423

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: 20200526

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200608

R150 Certificate of patent or registration of utility model

Ref document number: 6724673

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150