(57)【要約】【課題】コンピュータプログラムの開発の際に、動作検証試験により発生した不具合の原因の究明を容易に且つ効率的に行えるようにする。【解決手段】開発者は、試験前に不具合発生の特定に有用であると思われる記録契機事象（特定の操作など）と観察対象（入出力など）とを設定しておく。検証支援システムの上で試験者により試験対象プログラムの試験が実行されると、記憶契機事象検出部３１が記録契機事象の有無を繰り返し判断する。記録契機事象が検出されると、情報収集部３２は観察対象の情報を収集する。記憶制御部３３は、収集された情報の変化の有無などに基づき記録の要否を判定する。要記録事項が試験ログ作成部３４により試験ログ３に記録され、開発者にフィードバックされる。開発者実行環境の下では、不具合再現部３６が試験ログ３に基づいて試験対象プログラムの不具合動作を再現し、記録対象事象に対し観察対象の変化が明確になるように表示部２５上に表示がなされる。【選択図】図２
2009205314.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ上で動作するソフトウエアを開発するために該ソフトウエアの動作の検証を支援するソフトウエア検証支援システムであって、
a)試験対象プログラムの動作試験の際に記録を実施する契機を与える記録契機事象と、記録される観察対象と、を予め設定するための記録条件設定手段と、
b)試験対象プログラムの動作試験実行時に、前記記録契機事象の発生に応じて前記観察対象についての情報を収集して、該情報を記録契機事象と対応付けて試験ログとして記録し、それを試験対象プログラムの動作不具合の発生による動作中断が起こるまで又は動作不具合の発生に応じた所定の指示があるまで継続して行う試験ログ記録手段と、
c)試験対象プログラムの動作試験終了後に、所定の操作に応じて前記試験ログに基づいて、前記試験対象プログラムの動作試験実行時の不具合発生状況を再現する不具合再現手段と、
を備えることを特徴とするソフトウエア検証支援システム。
【請求項２】
コンピュータ上で動作するソフトウエアを開発するために該ソフトウエアの動作の検証を支援する機能がそのソフトウエアの一部に組み込まれて成るコンピュータプログラムであって、その検証支援機能は、
a)試験対象プログラムの動作試験の際に記録を実施する契機を与える記録契機事象と、記録される観察対象と、を予め設定するための記録条件設定機能と、
b)試験対象プログラムの動作試験実行時に、前記記録契機事象の発生に応じて前記観察対象についての情報を収集して、該情報を記録契機事象と対応付けて試験ログとして記録し、それを試験対象プログラムの動作不具合の発生による動作中断が起こるまで又は動作不具合の発生に応じた所定の指示があるまで継続して行う試験ログ記録機能と、
c)試験対象プログラムの動作試験終了後に、所定の操作に応じて前記試験ログに基づいて、前記試験対象プログラムの動作試験実行時の不具合発生状況を再現する不具合再現機能と、
を有することを特徴とする、検証支援機能を有するコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、各種のソフトウエアを開発するときに行われる、ソフトウエアの不具合を見つけるための動作検証試験や、その試験の結果に基づくデバッグ作業などを支援するためのソフトウエア検証支援システム、及びそのソフトウエア自体が検証支援機能を内蔵しているコンピュータプログラムに関する。
【背景技術】
【０００２】
コンピュータ上で動作する各種のソフトウエアを開発する過程では、そのソフトウエアの開発者による試験のみならず、試験担当者による試験が行われたり、或いは、試験用コンピュータプログラムを利用した自動的な試験が実施されたりすることが多い。以下、試験担当者や試験用コンピュータプログラムを合わせて「試験者」ということとする。試験者は、対象とするソフトウエアの動作や機能が妥当であるか否かを検証するために、コンピュータ上で実際にそのソフトウエアを実行させることで動作の検証試験を行う。そして、その試験結果が報告書にまとめられ、開発者（設計者やプログラマ）にフィードバックされる。その報告書に不具合の発生があったことが記されていた場合、開発者は不具合の原因を特定し、その不具合が発生しないようにプログラムを修正する必要がある。
【０００３】
一般的に、開発者は試験者からの報告に基づいてプログラムの不具合の原因を調査するが、それだけでは情報が不足し、不具合の原因の特定に時間が掛かる場合や特定ができない場合があった。特に、不具合が観測された時点から時間的にかなり遡った時点での操作などに不具合の原因がある場合や、そのコンピュータで使用している他のプログラムや通信負荷など、試験者には観測が難しい要素が不具合の要因である場合などには、そうした事象は報告には現れないため、開発者が不具合の原因を特定するのはかなり困難である。
【０００４】
従来、ソフトウエアの試験が正しい環境の下で実施されたのか否かなどについて後から容易に検証ができるように、試験開始時点から試験終了時点までの全てのテスト作業画面を動画像として記録しておくシステムが知られている（特許文献１参照）。しかしながら、こうした作業画面の遷移は不具合の要因を解明するための情報の１つとはなり得るが、試験者の操作や作業とは関係のない不具合である場合には、作業画面からの情報では不具合の原因を解明するのは難しい。一例を挙げれば、プログラムの記述ミスによってプログラムの実行中に正常でない値が設定されてしまい、その後の操作で正常でない値を使用したことによって動作の不具合が発生した場合を考えると、動作の不具合が起こった時点における作業画面を見ても、不具合の原因を特定することはかなり難しい。
【０００５】
【特許文献１】特開２００４−１８５１９３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は上記課題を解決するために成されたものであり、その主たる目的は、ソフトウエアの動作試験における不具合の発生の原因となった可能性のあることを示す情報を開発者に的確にフィードバックし、且つ開発者側でもその情報から不具合の原因を容易に探すことができるようにすることにより、ソフトウエアの開発を円滑に行うことができるソフトウエア検証支援システム、及び検証支援機能を有するコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために成された第１発明は、コンピュータ上で動作するソフトウエアを開発するために該ソフトウエアの動作の検証を支援するソフトウエア検証支援システムであって、
a)試験対象プログラムの動作試験の際に記録を実施する契機を与える記録契機事象と、記録される観察対象と、を予め設定するための記録条件設定手段と、
b)試験対象プログラムの動作試験実行時に、前記記録契機事象の発生に応じて前記観察対象についての情報を収集して、該情報を記録契機事象と対応付けて試験ログとして記録し、それを試験対象プログラムの動作不具合の発生による動作中断が起こるまで又は動作不具合の発生に応じた所定の指示があるまで継続して行う試験ログ記録手段と、
c)試験対象プログラムの動作試験終了後に、所定の操作に応じて前記試験ログに基づいて、前記試験対象プログラムの動作試験実行時の不具合発生状況を再現する不具合再現手段と、
を備えることを特徴としている。
【０００８】
また上記課題を解決するために成された第２発明は、コンピュータ上で動作するソフトウエアを開発するために該ソフトウエアの動作の検証を支援する機能がそのソフトウエアの一部に組み込まれて成るコンピュータプログラムであって、その検証支援機能は、
a)試験対象プログラムの動作試験の際に記録を実施する契機を与える記録契機事象と、記録される観察対象と、を予め設定するための記録条件設定機能と、
b)試験対象プログラムの動作試験実行時に、前記記録契機事象の発生に応じて前記観察対象についての情報を収集して、該情報を記録契機事象と対応付けて試験ログとして記録し、それを試験対象プログラムの動作不具合の発生による動作中断が起こるまで又は動作不具合の発生に応じた所定の指示があるまで継続して行う試験ログ記録機能と、
c)試験対象プログラムの動作試験終了後に、所定の操作に応じて前記試験ログに基づいて、前記試験対象プログラムの動作試験実行時の不具合発生状況を再現する不具合再現機能と、
を有することを特徴としている。
【０００９】
記録契機事象とは試験対象プログラムの実行により起こり得る任意の事象とすることができる。例を挙げると、試験者により行われる特定の操作、外部機器からの特定の指令・指示、試験開始時点からの所定時間の経過、試験対象プログラムに対する特定の入出力、試験対象プログラムと連携して又は非連携で動作する他の各種プログラムの動作開始、特定のファイルの使用、通信負荷量やメモリ使用量などの所定の状態（使用量）への到達、などが考えられる。
【００１０】
また観察対象とは試験対象プログラムの実行により変化し得る任意の対象とすることができる。例を挙げると、試験対象プログラムに対する入出力、使用されているメモリの内部状態、実行されているファイルの数や種類、試験者による操作部に対する操作内容、などが考えられる。
【発明の効果】
【００１１】
第１発明及び第２発明によれば、試験対象プログラムの動作検証試験で何らかの不具合が発生した場合に、その不具合の状況を開発者の環境の下で再現し、しかも開発者が予め不具合の原因の特定に必要と考える情報を確実に得ることができる。特に、試験者の操作や指令・指示に関連した項目だけでなく、他の各種プログラムの状態や内部メモリの状態などについての情報も得られるため、不具合の発生から時間的に遡った時点におけるプログラムの記述ミスに原因がある場合や、他のプログラムとの干渉などに原因がある場合でも、そうした原因を容易に特定することが可能となる。
【００１２】
また好ましくは、試験ログ記録手段（試験ログ記録機能）は、記録契機事象が発生した場合に観察対象の全てについて何ら変化がない場合や予め設定された正常範囲内に収まっている場合には記録を行わず、少なくとも１つの観察対象が何らかの変化を生じた場合や正常範囲を逸脱した場合に試験ログとして記録を行うようにするとよい。これにより、試験ログを保存するメモリの記憶容量を節約することができる。また、開発者に対し無駄な情報を提供せずに済むため、開発者が不具合の原因を特定することが容易になり、その作業効率の向上が図れる。
【００１３】
さらに好ましくは、記録契機事象とそれに対応した観察対象の変化との関係を保存した不具合事例に関するデータベースを用意し、そのデータベースを参照して、試験対象プログラムについて得られた試験ログ中の記録契機事象とそれに対応した観察対象の変化との関係に類似した事例を検索するようにするとよい。これにより、開発者が不具合の原因を特定することが一層容易に且つ迅速に行えるようになり、ソフトウエアの開発促進に有益である。
【発明を実施するための最良の形態】
【００１４】
本発明に係るソフトウエア検証支援システムの一実施例について、図面を参照して説明する。
【００１５】
図１は本実施例のソフトウエア検証支援システムを利用したソフトウエア検証作業を行う際の実行環境を示す概念図である。試験者１６が試験を行う試験実行環境１、及び、開発者がプログラム開発やそれに伴うデバッグを行う開発実行環境２において、それぞれ設けられる検証支援システム１１、２１は、いずれも図示しない汎用のパーソナルコンピュータ（又はワークステーション）にインストールされた専用の検証支援プログラムが該コンピュータ上で実行されることにより具現化される。
【００１６】
試験実行環境１においては、検証支援システム１１が構築されるコンピュータに試験対象プログラム（ソフトウエア）１２が導入されるが、このコンピュータにはそのほかに各種プログラム（例えば文書作成ソフトウエアや表計算ソフトウエアなどの汎用的なアプリケーションソフトウエア）１３が導入されている。試験対象プログラム１２の動作の際にこうした各種プログラムも並行して動作している場合があり得る。また、コンピュータは試験者１６に対するユーザインターフェイスとしての操作部１４及び表示部１５を備える。試験者１６が検証支援システム１１を利用して試験対象プログラム１２の試験を実行すると、その結果として試験ログ３が作成され、この試験ログ３が開発者２６にフィードバックされる。
【００１７】
開発実行環境２においても、検証支援システム２１が構築されるコンピュータに上記試験対象プログラム１２と同じ試験対象プログラム２２が導入されている。コンピュータは開発者２６に対するユーザインターフェイスとしての操作部２４及び表示部２５を備える。開発者２６により操作部２４から所定の指示が与えられると、検証支援システム２１は試験実行環境１の下で作成された試験ログ３を用い、試験実行環境１の下で試験対象プログラム１２の試験が実施された際に発生した不具合の状況を再現し表示部２５の画面上に表示する。
【００１８】
図２は検証支援システム１１、２１の要部の機能ブロックである。検証支援システム１１、２１は、試験実行環境１の下で利用される機能として、試験対象プログラム１２の動作に伴い、予め設定された記録契機事象の発生を検出する記録契機事象検出部３１と、記録契機事象の発生に対応して、予め設定された観察対象を観察して情報を収集する情報収集部３２と、収集された情報について記録すべきものか否かを判定する記録制御部３３と、記録すべきであると判定された情報を試験ログとして保存する試験ログ作成部３４と、を含む。また検証支援システム１１、２１は、開発実行環境２の下で利用される機能として、試験ログ３の記録事項に基づいて、試験対象プログラム２２の実行に伴う不具合の発生を再現する不具合再現部３６と、記録契機事象と観察対象の変化との関係などを把握して、その関係と類似の状態を例えば不具合事象データベース（図示せず）などから検索する記録内容解析部３７と、を含む。
【００１９】
次に本実施例の検証支援システムを用いた試験対象プログラムの試験の手順の一例を、図３に示すフローチャートに従って説明する。
【００２０】
試験者１６による試験の実行の前に、開発者２６は、プログラム実行過程で不具合が発生した場合にその不具合の特定に必要と思われる情報を記録しておくために、記録契機事象と観察対象とを設定しておく。記録契機事象とは例えば、試験者１６による特定の操作、試験開始時点からの所定時間の経過、試験対象プログラム１２に対する特定の入出力、この試験対象プログラム１２と連携して動作する他の各種プログラム１３の動作開始、特定のファイルの使用、など、任意のものとすることができる。また、観察対象とは例えば、試験対象プログラム１２に対する入出力、使用されているメモリの内部状態、実行されているファイルの数や種類、試験者１６による操作部１４に対する操作内容、など、これも任意のものとすることができる。記録契機事象と観察対象とを多数設定しておくことが可能であることは言うまでもない。
【００２１】
試験者１６が試験対象プログラム１２を実行して試験を開始すると（ステップＳ１）、記録契機事象検出部３１は上述のように予め設定されている記録契機事象が発生したか否かを繰り返し判定する（ステップＳ２）。記録契機事象の発生が確認されると情報収集部３２は、予め設定された観察対象の情報の取得を開始する（ステップＳ３）。但し、ここで収集された情報は全て記録されるわけではなく、記録制御部３３により、記録すべき情報であるか否か、つまりは不具合状況の解析に重要であるか否かが判断される（ステップＳ４）。
【００２２】
例えば、記録契機事象が発生しても観察対象に全く変化がない場合や、変化があったとしてもその変化量が事前に設定された正常範囲内に収まっている場合には、要記録情報でないと判断する。また、全ての観察対象について過去に記録された状態と全ての観察対象について現在取得された情報に基づく状態とが同一であると確認できる場合には、その同一である部分については要記録情報でないと判断し、新たに記録することを省略することができる。このように記録すべき情報を取捨選択することで、記録する情報を削減して試験ログ３の保存のために必要な記憶容量を減らすことができる。
【００２３】
試験ログ作成部３４は記録制御部３３からの指示に基づき、要記録情報については、その試験対象プログラム１２に対する試験ログ３として記録を行う（ステップＳ５）。そして、試験者１６により操作部１４から試験中断の指示がなされたり（ステップＳ６でＹＥＳ）、又は試験対象プログラム１２の動作が中断してしまったりした（ステップＳ７でＹＥＳ）場合には、新たな試験ログ３の記録を中止する（ステップＳ８）。ステップＳ６でＹＥＳとなるのは、試験者１６が不具合を発見して所定の中止操作を行った場合であり、その不具合によって試験対象プログラム１２の動作が停止しなくても試験ログ３の記録を中止することができる。また、たとえ試験者１６が不具合の発生に気付かなくても、自動的に試験対象プログラム１２が動作しなくなれば試験ログ３の記録は中止される。
【００２４】
こうして不具合の発生により試験ログ３の記録が中止されるまで記録が継続される。試験が終了すると試験者１６は、例えば試験の内容を記述した試験用仕様書などとともに、自動的に作成された試験ログ３を試験報告として開発者２６に渡す。試験ログ３は、ＵＳＢメモリやメモリカードなどの不揮発性記憶媒体に記憶してもよいし、或いは試験ログ３がサーバ等に保存され、その保存先を示す情報が報告書に記載されているだけでもよい。
【００２５】
報告を受けた開発者２６は手元のコンピュータにより構築されている検証支援システム２１上で試験ログ３を読み込み、試験対象プログラム２２の不具合特定作業を実施する。即ち、検証支援システム２１にあって不具合再現部３６は、試験ログ３の記録内容に従って不具合が発見された又は不具合によりプログラム動作が停止した状態を復元し、記録契機事象とそれに対応する観察対象の内容の変化を表示部２５の画面上に表示する。このとき、観察対象の内容の中で変化が生じた個所を検出し、それを開発者２６に視認容易に表示するとよい。図４はこうした表示の一例を示す図である。
【００２６】
この表示画面４０において、マウス操作で横方向に移動自在の水平スクロールバー４１は、時系列の順に配置された記録契機事象を試験ログ３の中から選択するためのものであり、この例では「ファイルを開く」、「５分経過」、「ボタンＡを押す」といった記録契機事象が選択されている。また、マウス操作などで縦方向に移動自在の垂直スクロールバー４２は、観察対象項目を試験ログ３の中から選択するためのものであり、この例では「受信データ数」、「開いているファイル」の種類、「変数Ａ」、「メモリ」の記憶内容、が選択されている。また、記録契機事象により変化した個所が一目で分かるように、変化した項目の枠（例えば４２）が他とは異なる表示色や他とは異なる線種（例えば太線）で表示される等、少なくとも他と区別が容易な態様で表示され、さらに変化した個所４３（例えば数値、文字等）が他と区別が容易な態様で表示される。
【００２７】
図４の例では、例えば「５分経過」の記録契機事象において「メモリ」の内容の中で「３３」、「ｂｂ」の２つのデータが変化していることがすぐに分かる。また「ボタンＡを押す」の記録契機事象において上記２つのデータがさらに「３６」、「ｄｂ」に変化していることがすぐに分かる。もちろん、こうした変化が不具合の発生の原因であるのか否かは開発者２６が判断する必要があるが、少なくとも、こうした変化が生じた個所を開発者２６が探す面倒な手間が不要であるので、不具合原因の究明作業が効率的に行える。
【００２８】
また、このような記録契機事象とそれに対する観察対象の変化が明らかになっても、それが試験対象プログラム１２の不具合の原因であるのか否かをすぐに判断するのは容易ではない。そこで、記録内容解析部３７はその記録契機事象と観察対象の変化との関係について、同様の事象があるか否かを不具合データベース上で検索する。不具合データベースには、過去に同様のプログラムを開発した際に発生した不具合の事例が保存されており、記録契機事象と観察対象の変化との関係について、過去に同様の不具合の事例に該当するものがあれば、それが抽出されて表示部２５に表示されるようになっている。これにより、開発者２６は上記のように表示された観察対象の変化が不具合の原因となり得るかを迅速に判断し、不具合の原因究明の作業を一層効率良く行うことが可能となる。
【００２９】
上記実施例は、試験対象のプログラムとは別の専用の検証支援プログラムがコンピュータ上で実行されることで検証支援システムが構築されていたが、この検証支援プログラムの機能を試験対象プログラムに組み込むようにしてもよい。この場合、検証支援の機能が組み込まれた試験対象プログラムをコンピュータ上で動作させることで、仮想的に検証支援システムが構築される。そしてその仮想的な検証支援システムが、試験対象プログラム中の試験対象機能について上述したように記録契機事象に対する観察対象の記録を実行する。
【００３０】
図５はこの場合にソフトウエア検証作業を行う際の実行環境を示す概念図である。即ち、試験対象プログラム１７、２７は、上記実施例における試験対象プログラム１２、２２に相当する試験対象機能１７ａ、２７ａと検証支援プログラムに相当する検証支援機能１７ｂ、２７ｂとを含むが、試験者１６や開発者２６が行う作業や得られる結果は上記実施例と何ら変わるものではない。
【００３１】
なお、上記実施例は本発明の一例に過ぎず、本発明の趣旨の範囲で適宜、変形、修正、追加を行っても本願特許請求の範囲に包含されることは当然である。
【図面の簡単な説明】
【００３２】
【図１】本発明の一実施例であるソフトウエア検証支援システムを利用した検証作業を行う際の実行環境を示す概念図。
【図２】本実施例のソフトウエア検証支援システムの要部の機能ブロック図。
【図３】本実施例の検証支援システムを用いた試験対象プログラムの試験の手順の一例を示すフローチャート。
【図４】本実施例の検証支援システムを用いて試験の再現を行う際の表示の一例を示す図。
【図５】本発明の一実施例であるソフトウエア検証支援機能を有するコンピュータプログラムを利用した検証作業を行う際の実行環境を示す概念図。
【符号の説明】
【００３３】
１…試験実行環境
２…開発実行環境
１１、２１…検証支援システム
１２、２２…試験対象プログラム
１３…その他の各種プログラム
１４、２４…操作部
１５、２５…表示部
１６…試験者
１７、２７…試験対象プログラム
１７ａ、２７ａ…試験対象機能
１７ｂ、２７ｂ…検証支援機能
２６…開発者
３…試験ログ
３１…記録契機事象検出部
３２…情報収集部
３３…記録制御部
３４…試験ログ作成部
３６…不具合再現部
３７…記録内容解析部
【図１】
2009205314.tif 000003
【図２】
2009205314.tif 000004
【図３】
2009205314.tif 000005
【図４】
2009205314.tif 000006
【図５】
2009205314.tif 000007