(57)【要約】      （修正有）【課題】デバッガなどの装置を必要としないで、ソースコードが提供されずにバイナリデータしか手元にないソフトウェアに対しても網羅試験を実施することを可能とする。【解決手段】網羅試験装置１は、試験対象ソフトウェアの命令コードをプログラムエラーとなるダミーコードに置換した試験用ソフトウェアを予め記憶部１２に保存し、試験部１３は、ダミーコードで発生するプログラムエラーに基づいて、当該プログラムエラーを発生させたダミーコードを元の命令コードに戻し、元に戻した命令コードを演算処理部１１に実行させる。演算処理部は、試験用ソフトウェアを実行し、ダミーコードの数に対する元の命令コードに戻されたダミーコードの数の割合を網羅率として算出する。【選択図】図１
2016146032.tif 000002
【特許請求の範囲】
【請求項１】
試験対象ソフトウェアの命令コードをプログラムエラーとなるダミーコードに置換した試験用ソフトウェアを予め保存する記憶部と、
前記試験用ソフトウェアを実行する演算処理部と、
前記ダミーコードで発生するプログラムエラーに基づいて、当該プログラムエラーを発生させた前記ダミーコードを元の前記命令コードに戻し、元に戻した前記命令コードを前記演算処理部に実行させる試験部と、を有し、
前記演算処理部は、前記ダミーコードの数に対する元の前記命令コードに戻された前記ダミーコードの数の割合を網羅率として算出する、網羅試験装置。
【請求項２】
前記演算処理部は、前記試験用ソフトウェアの実行終了後に前記網羅率を算出する、請求項１記載の網羅試験装置。
【請求項３】
前記試験部は、前記プログラムエラーに基づく前記試験用ソフトウェアの例外処理として、前記ダミーコードを元の前記命令コードに戻す、請求項１または２記載の網羅試験装置。
【請求項４】
前記試験部は、前記プログラムエラーに基づいて元の前記命令コードに戻された前記ダミーコードを再び前記ダミーコードに戻し、前記プログラムエラーを生じた前記ダミーコードの実行回数の計数をする、請求項１から３の内の１項記載の網羅試験装置。
【請求項５】
前記試験部は、前記命令コードに戻された前記ダミーコードの数を、前記ダミーコードの実行回数の計数に基づいて取得する、請求項５記載の網羅試験装置。
【請求項６】
試験対象ソフトウェアの命令コードをプログラムエラーとなるダミーコードに置換することで予め用意された試験用ソフトウェアを実行する際に、
前記ダミーコードで発生するプログラムエラーに基づいて、当該プログラムエラーを発生させた前記ダミーコードを元の前記命令コードに戻し、
元に戻した前記命令コードを実行し、
前記ダミーコードの数に対する元の前記命令コードに戻された前記ダミーコードの数の割合を網羅率として算出する、網羅試験方法。
【請求項７】
前記試験用ソフトウェアの実行終了後に前記網羅率を算出する、請求項６記載の網羅試験方法。
【請求項８】
前記プログラムエラーに基づく前記試験用ソフトウェアの例外処理として、前記ダミーコードを元の前記命令コードに戻す、請求項６または７記載の網羅試験方法。
【請求項９】
前記プログラムエラーに基づいて元の前記命令コードに戻された前記ダミーコードを再び前記ダミーコードに戻し、前記プログラムエラーを生じた前記ダミーコードの実行回数の計数をする、請求項６から８の内の１項記載の網羅試験方法。
【請求項１０】
前記命令コードに戻された前記ダミーコードの数を、前記ダミーコードの実行回数の計数に基づいて取得する、請求項９記載の網羅試験方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータで動作するソフトウェアの品質を評価する網羅率を測定する網羅試験装置および網羅試験方法に関する。
【背景技術】
【０００２】
コンピュータで動作するプログラムの品質評価を行うための指標として、網羅率（カバレッジとも云う）が知られている。網羅率とは、プログラムの全コードに対して、実行テストにより実行されたコードの割合である。すなわち、実行テストを行った際に、プログラムを構成するコードにおいて、どのコードが実行されたか、または実行されなかったかを判別することによって、実行されたコード割合として網羅率が測定される。この網羅率を実行テストが十分にプログラムを試験しているか否かを示す信頼性の指標とすることにより、実行テストが正当に行われているか否かを判別することができる。よって、網羅率が高いほどプログラムの信頼性も高いこととなる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−２２１６５６号公報
【特許文献２】特開平２−２０６８４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
網羅率を測定するためには、例えば特許文献１のように、測定対象のプログラム構造を解析し、網羅率を測定するための網羅試験を追加する必要がある。このため、コンパイラを含むソフトウェア開発ツールを使用して網羅試験を実施するための専用ソフトウェアを用意する必要があり、このためには測定対象のプログラムのソースコードを必要としている。よって、ソースコードを入手することが困難で、バイナリ形式のソフトウェアしか入手できない場合には、網羅試験を実施することができないという問題があった。
【０００５】
また、特許文献２では、デバッグ支援ツール（以下、デバッガという）を用いて、試験対象プログラムの解析する部分の命令を不正命令に置き換えて、網羅試験を実施する方法が開示されている。しかしながら、特許文献２に開示された方法では、デバッガを導入するためのコストの増大や、デバッガを接続するための端子やケーブルを引き出すための経路を設ける等の設計コストの増大をもたらしている。さらに、省スペース化が求められる最近の製品では、デバッガのスペースの確保が難しい、もしくは不可能な場合がある。この場合、評価用の試作機を別に作製する必要があり、余計なコストが生じてしまう。さらにまた、デバッガを用いる場合は、デバッガからプロセッサに介入してデバッグのための処理を実行させる動作となるため、プログラムの実行テストは実際のプログラムの実行動作と異なってしまうという問題もある。
【０００６】
本発明は、上記の課題に鑑みてなされたものであり、その目的は、デバッガなどの装置を必要としないで、ソースコードが提供されずにバイナリデータしか手元にないソフトウェアに対しても網羅試験を実施することを可能とすることにある。
【課題を解決するための手段】
【０００７】
本発明による網羅試験装置は、試験対象ソフトウェアの命令コードをプログラムエラーとなるダミーコードに置換した試験用ソフトウェアを予め保存する記憶部と、前記試験用ソフトウェアを実行する演算処理部と、前記ダミーコードで発生するプログラムエラーに基づいて、当該プログラムエラーを発生させた前記ダミーコードを元の前記命令コードに戻し、元に戻した前記命令コードを前記演算処理部に実行させる試験部と、を有し、前記演算処理部は、前記ダミーコードの数に対する元の前記命令コードに戻された前記ダミーコードの数の割合を網羅率として算出する。
【０００８】
本発明による網羅試験方法は、試験対象ソフトウェアの命令コードをプログラムエラーとなるダミーコードに置換することで予め用意された試験用ソフトウェアを実行する際に、前記ダミーコードで発生するプログラムエラーに基づいて、当該プログラムエラーを発生させた前記ダミーコードを元の前記命令コードに戻し、元に戻した前記命令コードを実行し、前記ダミーコードの数に対する元の前記命令コードに戻された前記ダミーコードの数の割合を網羅率として算出する。
【発明の効果】
【０００９】
本発明によれば、デバッガなどの装置を必要としないで、ソースコードが提供されずにバイナリデータしか手元にないソフトウェアに対しても網羅試験を実施することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態の網羅試験装置の構成を示す図である。
【図２】本発明の実施形態の網羅試験装置の試験用ソフトウェアの構成例を示す図である。
【図３】本発明の実施形態の網羅試験装置の動作を示す図である。
【図４】本発明の実施形態の網羅試験装置を情報処理機器上で構成した図である。
【図５】本発明の実施形態の網羅試験装置の記憶部の領域構成を示す図である。
【図６】本発明の実施形態の網羅試験装置の動作の一部を示すフローチャートである。
【図７】本発明の実施形態の網羅試験装置の記憶部の領域構成を示す図である。
【図８】本発明の実施形態の網羅試験装置の動作の一部を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、図を参照しながら、本発明の実施形態を詳細に説明する。但し、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。
【００１２】
図１は、本発明の実施形態の網羅試験装置の構成を示す図である。本実施形態の網羅試験装置１は、試験対象ソフトウェアの命令コードをプログラムエラーとなるダミーコードに置換した試験用ソフトウェアを予め保存する記憶部１２と、前記試験用ソフトウェアを実行する演算処理部１１と、前記ダミーコードで発生するプログラムエラーに基づいて、当該プログラムエラーを発生させた前記ダミーコードを元の前記命令コードに戻し、元に戻した前記命令コードを前記演算処理部１１に実行させる試験部１３と、を有する。さらに、前記演算処理部１１は、前記ダミーコードの数に対する元の前記命令コードに戻された前記ダミーコードの数の割合を網羅率として算出する。
【００１３】
また、本実施形態の網羅試験方法は、試験対象ソフトウェアの命令コードをプログラムエラーとなるダミーコードに置換することで予め用意された試験用ソフトウェアを実行する際に、前記ダミーコードで発生するプログラムエラーに基づいて、当該プログラムエラーを発生させた前記ダミーコードを元の前記命令コードに戻し、元に戻した前記命令コードを実行し、前記ダミーコードの数に対する元の前記命令コードに戻された前記ダミーコードの数の割合を網羅率として算出する。
【００１４】
本実施形態では、図２に示すように、ソースコードもしくはバイナリデータからなる試験対象ソフトウェア２と、これを解析して命令コードの一部もしくは全てをプログラムエラーとなるダミーコードに置き換えた試験用ソフトウェア３とを、予め用意して記憶部１２に保存する。
【００１５】
図２は、正規の命令コードを有する試験対象ソフトウェア２と、試験用ソフトウェア３の構成例として、Ａｄｄｒｅｓｓ  Ｎ＋２番地の命令コードがダミーコードに置き換えられた試験用ソフトウェア３を示している。試験用ソフトウェア３の構成としては、網羅試験が命令コードを対象とする命令網羅試験の場合は、試験対象ソフトウェア２の全ての命令コードをダミーコードに置き換えた試験用ソフトウェア３とする。また、網羅試験が分岐命令を対象とする分岐網羅試験の場合は、分岐命令から分岐先の最初の命令コードをダミーコードに置き換えた試験用ソフトウェア３とする。
【００１６】
命令コードをダミーコードに置き換えた試験用ソフトウェア３の実行の様子を、図１から図３を用いて説明する。図２に示す、Ａｄｄｒｅｓｓ  Ｎ＋２番地の命令コードがダミーコードに置き換えられた試験用ソフトウェア３は、演算処理部１１にて、図３に示すように、まず、Ａｄｄｒｅｓｓ  Ｎの命令コードであるＳｔｅｐ  Ｎ、次に、Ａｄｄｒｅｓｓ  Ｎ＋１の命令コードであるＳｔｅｐ  Ｎ＋１の順に実行される。
【００１７】
さらに、Ａｄｄｒｅｓｓ  Ｎ＋２のダミーコードが実行されると、演算処理部１１はプログラムエラーを発生する。このプログラムエラーを契機に、試験部１３は、エラーが発生したＡｄｄｒｅｓｓ  Ｎ＋２のダミーコードを試験対象ソフトウェア２の有する正規の命令コードであるＳｔｅｐ  Ｎ＋２で置き換え、置き換えた後の命令データでＡｄｄｒｅｓｓ  Ｎ＋２の処理を、再度、演算処理部１１に実行させる。このときには正規の命令コードであるため、エラーは発生しない。
【００１８】
続いて、Ａｄｄｒｅｓｓ  Ｎ＋３の命令コードであるＳｔｅｐ  Ｎ＋３、さらに、Ａｄｄｒｅｓｓ  Ｎ＋４の命令コードであるＳｔｅｐ  Ｎ＋４（図示せず）が実行され、試験が終了する。演算処理部１１は、試験用ソフトウェア３による試験終了後に、ダミーコードの数に対する元の命令コードに戻されたダミーコードの数の割合を算出して網羅率とする（図示せず）。
【００１９】
図４は、本実施形態の網羅試験装置１を情報処理機器上で構成した図を示す。図４の網羅試験装置１０は、図１の試験部１３をプログラムエラーのハンドラ、すなわち例外処理を行う機能で実現している。
【００２０】
網羅試験装置１０は、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）やサーバなどの情報処理機器とすることができる。網羅試験装置１０は、演算部２０として、演算処理部２１であるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、割込み制御部２２（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ  Ｃｏｎｔｒｏｌｌｅｒ、ＰＩＣと略す）、メモリ制御部２３（Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ）を有し、これらは内部バス２４で接続されている。
【００２１】
記憶部１２であるメモリ３０は、メモリ制御部２３の配下に設けられ、メモリ制御部２３により制御される。メモリ３０は、Ｄｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ（ＤＤＲ）  Ｒａｎｄｏｍ−Ａｃｃｅｓｓ−Ｍｅｍｏｒｙ（ＲＡＭ）などとすることができる。
【００２２】
網羅試験装置１０は、さらに、データを入力する入力部（図示なし）であるキーボードやマウスやタッチパネル、試験結果などを表示する表示部（図示なし）であるディスプレイなどを備えることができる。
【００２３】
図５は、メモリ３０の領域の構成を示す。メモリ３０は、予め試験対象ソフトウェア２の一部または全部をダミーコードで置き換えた試験用ソフトウェア３のデータを格納する試験用ソフトウェア領域３１と、プログラムエラーの発生を契機に実行されるエラーハンドラ（例外処理）を備えた試験処理ソフトウェア４を格納する試験処理ソフトウェア領域３２と、試験対象ソフトウェア２のオリジナルデータを格納する試験対象ソフトウェア領域３３とを備える。試験用ソフトウェア３はまた、網羅率を算出するソフトウェアを組み込むことができる。
【００２４】
割込み制御部２２は、例外の種別ごとに実行するハンドラを設定することができる。通常、エラー発生時のハンドラは全て試験用ソフトウェア領域３１に格納されたソフトウェア内に含まれるが、プログラムエラーが発生した場合のみ、試験用ソフトウェア領域３１に格納されたソフトウェア内部のエラーハンドラではなく、試験処理ソフトウェア領域３２に格納されたエラーハンドラによる処理を実行するよう、あらかじめ設定する。
【００２５】
以上の構成により、図１の試験部１３は、割込み制御部２２による割込みによって、演算処理部２１が試験処理ソフトウェア４を実行することにより実現される。
【００２６】
以下に、網羅試験装置１０の動作を説明する。
１．試験用ソフトウェア３の実行
網羅試験装置１０は、試験対象ソフトウェア２の一部または全部をダミーコードで置き換えた試験用ソフトウェア３を、予めメモリ３０に保存する。演算処理部２１は、メモリ３０に保存された試験用ソフトウェア３を実行する。図３に示すように、試験用ソフトウェア３のＡｄｄｒｅｓｓ  Ｎ＋２番地にあるダミーコードを実行した際にはプログラムエラーが発生する。
２．試験処理ソフトウェア４の実行
このプログラムエラーを契機に演算処理部２１は、割込み制御部２２の設定に従ってプログラムエラーの例外処理として、試験処理ソフトウェア領域３２内の試験処理ソフトウェア４を実行する。
【００２７】
図６は、試験処理ソフトウェア４の動作を示すフローチャートである。試験処理ソフトウェア４は、割込み制御部２２が、演算処理部２１でのプログラムエラーの発生を検知して、演算処理部２１での試験処理ソフトウェア４の実行を指示することによって、開始となる。
【００２８】
まず、試験処理ソフトウェア４は、試験用ソフトウェア３のエラー発生アドレスを取得する（ステップＳ１００）。図２を参照するとすれば、Ａｄｄｒｅｓｓ  Ｎ＋２番地である。次に、試験処理ソフトウェア４は、メモリ３０の試験対象ソフトウェア領域３３から、エラーが発生したアドレスの試験対象ソフトウェア２の正規の命令コードを取得する（ステップＳ１１０）。
【００２９】
次に、試験処理ソフトウェア４は、取得した命令コードで、試験用ソフトウェア領域３１の試験用ソフトウェア３のエラーが発生したダミーコードを置き換える（ステップＳ１２０）。これにより、Ａｄｄｒｅｓｓ  Ｎ＋２番地のダミーコードは正規の命令コードであるＳｔｅｐ  Ｎ＋２に戻される。次に、試験処理ソフトウェア４は、エラーが発生したアドレスに戻り、置き換えた正規の命令コードで再実行し（ステップＳ１３０）、終了する。
３．試験処理ソフトウェア４実行後の試験継続
図６のステップＳ１３０では、Ａｄｄｒｅｓｓ  Ｎ＋２番地のデータはＳｔｅｐ  Ｎ＋２に戻されているため正常に処理を終了する。試験用ソフトウェア３は、次のＡｄｄｒｅｓｓ  Ｎ＋３番地、さらにその次のＡｄｄｒｅｓｓ  Ｎ＋４番地へと処理を移す。これにより、試験用ソフトウェア３は、試験を継続し終了することができる。
４．試験終了後の網羅率の算出
試験終了後、演算処理部２１は、試験用ソフトウェア３に組み込まれた網羅率算出処理を実行し、試験用ソフトウェア３において予め置き換えられていたダミーコードの数に対する正規の命令コードに戻されたダミーコードの数の割合を算出して網羅率とする。なお、網羅率算出処理を行うソフトウェアは、試験用ソフトウェア３とは別に設けられていてもよい。
【００３０】
再実行されたダミーコードは正規の命令コードに戻されているため、網羅率が１００％であれば全ての試験対象の命令コードが実行されたことになる。このとき試験用ソフトウェア３のダミーコードは全て正規の命令コードに置き換えられているため、試験用ソフトウェア３と正規の試験対象ソフトウェア２のデータは一致していることになる。
【００３１】
本実施形態の別の試験方法として、ダミーコードを実行する際のアドレスごとにその実行回数をカウントする方法が可能である。プログラムは、例えばループ処理などで同じアドレスの処理を複数回実行する場合がある。以下の試験方法では、試験用ソフトウェア３の開始から終了までの１回の試験で、同じアドレスの実行回数をカウントすることができる。図７は、図５に加えてさらに、このためのソフトウェアである実行回数カウンタを格納する実行回数カウンタ領域３４と、最後に正規の命令コードに置き換えられたアドレスを保存するアドレス保存領域３５とを設けたメモリ３０の領域構成を示す。
【００３２】
図８は、図７に示す実行回数カウンタ領域３４を設けて実行回数をカウントする場合の、試験処理ソフトウェア４の動作を示すフローチャートである。試験処理ソフトウェア４は、割込み制御部２２が、演算処理部２１で実行されている試験用ソフトウェア３のプログラムエラーの発生を検知し、演算処理部２１での試験処理ソフトウェア４と実行回数カウンタの実行を指示することによって、開始となる。
【００３３】
まず、試験処理ソフトウェア４は、アドレス保存領域３５から、前回の処理の最後に正規の命令コードに置き換えられたアドレスを取得し、取得したアドレスの正規の命令コードをダミーコードに戻す（ステップＳ２００）。今回の処理が初回の処理である場合は、アドレス保存領域３５に保存されているアドレスは存在しないことから、正規の命令コードをダミーコードに戻す処理は行われない。
【００３４】
次に、試験処理ソフトウェア４と実行回数カウンタは、試験用ソフトウェア３のエラー発生アドレスを取得する（ステップＳ２１０）。図２を参照するとすれば、Ａｄｄｒｅｓｓ  Ｎ＋２番地である。次に、実行回数カウンタは、エラー発生アドレスのカウンタを＋１する（ステップＳ２２０）。次に、試験処理ソフトウェア４は、メモリ３０の試験対象ソフトウェア領域３３から、エラーが発生したアドレスの試験対象ソフトウェア２の正規の命令コードを取得する（ステップＳ２３０）。
【００３５】
次に、試験処理ソフトウェア４は、試験用ソフトウェア３のエラーが発生したアドレスのダミーコードを、取得した正規の命令コードで置き換える（ステップＳ２４０）。さらに、試験処理ソフトウェア４は、アドレス保存領域３５に保存されている最後に正規の命令コードに置き換えられたアドレスを、ステップ２４０で処理されたアドレスで更新する（ステップＳ２５０）。このとき、置き換えられたダミーコードをアドレスとともに保存しておくことで、ステップＳ２００において、正規の命令コードをこの保存されたダミーコードに戻すことができる。
【００３６】
さらに、試験処理ソフトウェア４は、ステップＳ２４０で正規の命令コードに置き換えたアドレスの命令コードを実行させる（ステップＳ２６０）。Ａｄｄｒｅｓｓ  Ｎ＋２番地のダミーコードは正規の命令コードであるＳｔｅｐ  Ｎ＋２に置き換えられているため、エラーを発生することなく終了する。終了後は、試験用ソフトウェア３は、次のアドレス（Ａｄｄｒｅｓｓ  Ｎ＋３）のコードを実行する。
【００３７】
試験終了後、演算処理部２１は、試験用ソフトウェア３に組み込まれた網羅率算出処理を実行し、試験用ソフトウェア３において予め置き換えられていたダミーコードの数に対する正規の命令コードに戻されたダミーコードの数の割合を算出して網羅率とする。このとき、正規の命令コードに戻されたダミーコードの数を、実行回数カウンタが１以上であるアドレスの数として得ることができる。なお、網羅率算出処理を行うソフトウェアは、試験用ソフトウェア３とは別に設けられていてもよい。
【００３８】
試験処理ソフトウェア４はまた、ステップＳ２６０の後、終了する前に、アドレス保存領域３５から、最後に正規の命令コードに置き換えられたアドレスを取得し、取得したアドレスの正規の命令コードをダミーコードに戻す処理を行うこともできる。このようにした場合は、ステップＳ２００の処理は既に済んでいるため、ステップＳ２１０の処理から開始する動作とすることができる。
【００３９】
以上のように、本実施形態によれば、デバッガなどの装置を必要としないで、ソースコードが提供されずにバイナリデータしか手元にないソフトウェアに対しても網羅試験を実施することが可能となる。
【００４０】
本発明は上記実施形態に限定されることなく、特許請求の範囲に記載した発明の範囲内で種々の変形が可能であり、それらも本発明の範囲内に含まれるものである。
【符号の説明】
【００４１】
１、１０    網羅試験装置
２    試験対象ソフトウェア
３    試験用ソフトウェア
４    試験処理ソフトウェア
１１    演算処理部
１２    記憶部
１３    試験部
２０    演算部
２１    演算処理部
２２    割込み制御部
２３    メモリ制御部
２４    内部バス
３０    メモリ
３１    試験用ソフトウェア領域
３２    試験処理ソフトウェア領域
３３    試験対象ソフトウェア領域
３４    実行回数カウンタ領域
３５    アドレス保存領域
【図１】
2016146032.tif 000003
【図２】
2016146032.tif 000004
【図３】
2016146032.tif 000005
【図４】
2016146032.tif 000006
【図５】
2016146032.tif 000007
【図６】
2016146032.tif 000008
【図７】
2016146032.tif 000009
【図８】
2016146032.tif 000010