(57)【特許請求の範囲】
【請求項１】
コンピュータに、
元のプログラムを修正した修正プログラムに対し、複数のテストを実行することにより第１テスト結果を取得し、
前記元のプログラムに基づき生成したミュータントに対し、前記複数のテストを実行することにより、第２テスト結果を取得し、
前記第２テスト結果の内失敗したテストと前記第１テスト結果との相関に基づき、前記修正プログラムの欠損が推定されるコードを出力する
処理を実行させるプログラム。
【請求項２】
ミュータントに対するテストに失敗し、かつ、修正プログラムに対する前記テストに成功した成功数を計数し、
ミュータントに対するテストに失敗し、かつ、修正プログラムに対する前記テストに失敗した失敗数を計数し、
前記成功数及び失敗数の大小関係に基づき、欠損が推定されるコードを出力する
請求項１に記載のプログラム。
【請求項３】
前記プログラムのコード毎に、複数のミュータントを生成し、
ミュータント毎に前記複数のテストを実行することにより、第２テスト結果を取得する
請求項２に記載のプログラム。
【請求項４】
元のプログラムを修正した修正プログラムに対し、複数のテストを実行することにより第１テスト結果を取得する第１取得部と、
前記元のプログラムに基づき生成したミュータントに対し、前記複数のテストを実行することにより、第２テスト結果を取得する第２取得部と、
前記第２テスト結果の内失敗したテストと前記第１テスト結果との相関に基づき、前記修正プログラムの欠損が推定されるコードを出力する出力部と
を備える情報処理装置。
【請求項５】
元のプログラムを修正した修正プログラムに対し、複数のテストを実行することにより第１テスト結果を取得し、
前記元のプログラムに基づき生成したミュータントに対し、前記複数のテストを実行することにより、第２テスト結果を取得し、
前記第２テスト結果の内失敗したテストと前記第１テスト結果との相関に基づき、前記修正プログラムの欠損が推定されるコードを出力する
コンピュータを用いた情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
従来、プログラムを構成するソースコードモジュールの１つに構文上のミュータントを挿入することによりコンピュータプログラムの機能的シミュレーション及び検証を行う技術が開示されている（例えば特許文献１及び２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−２２２２４４号公報
【特許文献２】特開平０８−０４４５９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では修正したプログラムの欠損した箇所を推定することができないという問題がある。
【０００５】
一つの側面では、修正したプログラムの欠損した箇所を推定することが可能なプログラム等を提供することを目的とする。
【課題を解決するための手段】
【０００６】
一つの案では、プログラムは、コンピュータに、元のプログラムを修正した修正プログラムに対し、複数のテストを実行することにより第１テスト結果を取得し、前記元のプログラムに基づき生成したミュータントに対し、前記複数のテストを実行することにより、第２テスト結果を取得し、前記第２テスト結果の内失敗したテストと前記第１テスト結果との相関に基づき、前記修正プログラムの欠損が推定されるコードを出力する処理を実行させる。
【発明の効果】
【０００７】
一つの側面では、修正したプログラムの欠損した箇所を推定することが可能となる。
【図面の簡単な説明】
【０００８】
【図１】情報処理装置のハードウェア群を示すブロック図である。
【図２】テストスイートＤＢの記憶内容を示す説明図である。
【図３】修正プログラム実行結果ＤＢのレコードレイアウトを示す説明図である。
【図４】ミュータントオペレータＤＢの記憶内容を示す説明図である。
【図５】実行結果ＤＢのレコードレイアウトを示す説明図である。
【図６】ミュータント生成処理の手順を示すフローチャートである。
【図７】テスト結果の記憶処理手順を示すフローチャートである。
【図８】欠損コードの推定処理を示すフローチャートである。
【図９】上述した形態のコンピュータの動作を示す機能ブロック図である。
【図１０】実施の形態２に係るコンピュータのハードウェア群を示すブロック図である。
【発明を実施するための形態】
【０００９】
実施の形態１
以下実施の形態を、図面を参照して説明する。図１は情報処理装置１のハードウェア群を示すブロック図である。情報処理装置１はサーバコンピュータ、パーソナルコンピュータ、携帯電話、スマートフォン、ゲーム機またはＰＤＡ（Personal Digital Assistant）等である。以下では情報処理装置１をコンピュータ１と読み替えて説明する。コンピュータ１は制御部としてのＣＰＵ（Central Processing Unit）１１、ＲＡＭ(Random Access Memory)１２、入力部１３、表示部１４、記憶部１５、及び、通信部１６等を含む。
【００１０】
ＣＰＵ１１は、バス１７を介してハードウェア各部と接続されている。ＣＰＵ１１は記憶部１５に記憶された制御プログラム１５Ｐに従いハードウェア各部を制御する。ＲＡＭ１２は例えば（Static RAM）、ＤＲＡＭ(Dynamic RAM)、フラッシュメモリ等である。ＲＡＭ１２は、記憶部としても機能し、ＣＰＵ１１による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。
【００１１】
入力部１３はマウスまたはキーボード、マウスまたはタッチパネル等の入力デバイスであり、受け付けた操作情報をＣＰＵ１１へ出力する。表示部１４は液晶ディスプレイまたは有機ＥＬ（electroluminescence）ディスプレイ等であり、ＣＰＵ１１の指示に従い各種情報を表示する。通信部１６は通信モジュールであり、図示しない他のコンピュータとの間でインターネット等の通信網Ｎを介して、情報の送受信を行う。
【００１２】
記憶部１５はハードディスクまたは大容量メモリであり、制御プログラム１５Ｐ、テストスイートデータベース（以下、ＤＢという）１５１、修正プログラム実行結果ＤＢ１５２、ミュータントオペレータＤＢ１５３を含む。また、記憶部１５は、ミュータントＤＢ１５４及び実行結果ＤＢ１５５等を記憶している。なお、実施形態ではテストスイートＤＢ１５１等を記憶部１５に記憶する例を挙げたがこれに限るものではない。ＲＡＭ１２に記憶するほか、図示しない他のＤＢサーバ内に記憶するようにしても良い。
【００１３】
図２はテストスイートＤＢ１５１の記憶内容を示す説明図である。テストスイートＤＢ１５１にはプログラムに対して実行される複数のテストが記憶されている。本実施形態ではテスト１からテスト５０までのテストを用いる例を挙げて説明するが、数値は一例であり、これに限るものではない。
【００１４】
図３は修正プログラム実行結果ＤＢ１５２のレコードレイアウトを示す説明図である。各テストに対応付けて、実行結果が成功、または、失敗と記憶されている。図３の例ではテスト１及びテスト２は成功したが、テスト３は失敗している。ＣＰＵ１１は、元のプログラムを記憶部１５から読み出し、表示部１４に表示する。ユーザは元のプログラムを、入力部１３を通じて適宜修正する。ＣＰＵ１１は、入力部１３からプログラムの修正を受け付け、受け付けた修正後の修正プログラムを記憶部１５に記憶する。
【００１５】
ＣＰＵ１１は、修正プログラムを記憶部１５から読み出し、テストスイートＤＢ１５１に記憶されたテスト１からテスト５０を実行し、各テストの実行結果を修正プログラム実行結果ＤＢ１５２に記憶する。
【００１６】
図４はミュータントオペレータＤＢ１５３の記憶内容を示す説明図である。ミュータントオペレータＤＢ１５３には、人工的な誤りを含むプログラムであるミュータントを生成するための複数のミュータントオペレータが記憶されている。例えば、「＜→＞」のミュータントオペレータは、元のプログラムのコードに「＜」が存在する場合、大小関係が逆となる「＞」に書き換える。ＣＰＵ１１は、元のプログラムの特定のコードを書き換えることにより、当該コードについての複数のミュータントを生成する。ＣＰＵ１１は、生成したミュータントをミュータントＤＢ１５４に記憶する。
【００１７】
図５は実行結果ＤＢ１５５のレコードレイアウトを示す説明図である。実行結果ＤＢ１５５は、元のプログラムフィールド、ミュータントオペレータフィールド、行フィールド、テストフィールド、成功数フィールド、失敗数フィールド、リスク値フィールド及びリスク平均値フィールド等を含む。元のプログラムフィールドには、修正前の元のプログラムのコードが記憶されている。なお、実行結果ＤＢ１５５の記憶内容は図５に示す例に限るものではない。データ間の関係が維持されていれば他の記憶形態であっても良い。
【００１８】
ミュータントオペレータフィールドには、元のプログラムのコードに対して書き換えを行うための複数のミュータントオペレータが記憶されている。行フィールドには、コードの行を特定するための行番号がコードに対応付けて記憶されている。テストフィールドには、テスト毎に、ミュータントに対してテストを行った結果が記憶されている。例えば、Ｍ２で示すミュータントオペレータを用いたミュータントに対するテスト結果は、テスト１が失敗したことを示す「１」、テスト２も失敗したことを示す「１」が記憶されている。
【００１９】
また例えば、Ｍ４６で示すミュータントオペレータを用いたミュータントに対するテスト結果は、テスト１が成功したことを示す「０」、テスト３は失敗したことを示す「１」が記憶されている。なお、図５の下部には、説明を容易にするため、修正プログラムの実行結果を各テストに対応させて記載している。例えば修正プログラムに対するテスト１は「成功」しており、修正プログラムに対するテスト３は「失敗」していることが理解できる。なお、一つの行のコードに対するミュータントの数は一例であり特に限定するものではない。
【００２０】
成功数フィールドには、コード及びミュータントオペレータに対応付けて、成功数が記憶されている。具体的には、ＣＰＵ１１は、修正プログラム実行結果ＤＢ１５２及び実行結果ＤＢ１５５を参照し、元のプログラムのミュータントに対するテストが失敗し、かつ、修正プログラムに対する対応するテストが成功した数を記憶する。また失敗数フィールドには、コード及びミュータントオペレータに対応付けて、失敗数が記憶されている。具体的には、ＣＰＵ１１は、修正プログラム実行結果ＤＢ１５２及び実行結果ＤＢ１５５を参照し、元のプログラムのミュータントに対するテストが失敗し、かつ、修正プログラムに対する対応するテストが失敗した数を記憶する。
【００２１】
図５の例では、行１１についてミュータントオペレータＭ２が用いられており、テスト１の結果は「１」であり、失敗している。対応するテスト１の修正プログラムの結果は成功である。この場合、ＣＰＵ１１は、実行結果ＤＢ１５５の成功数をインクリメントする。テスト２の結果は「１」であり失敗している。対応するテスト１の修正プログラム結果は成功である。この場合も、ＣＰＵ１１は、成功数をインクリメントする。テスト３の結果は「１」であり失敗している。対応するテスト１の修正プログラム結果は失敗である。この場合、ＣＰＵ１１は、失敗数をインクリメントする。同様の処理を各テストについて行った結果、全テスト５０の内、成功数は４０であり、失敗数は１０と記憶される。
【００２２】
続いて１７行のミュータントオペレータＭ４６について着目する。テスト１及び２については、結果が成功を示す０であるため、成功数及び失敗数の計数処理を実行しない。テスト３については、結果が失敗を示す１であり、また修正プログラムのテスト３の結果も失敗であるので、ＣＰＵ１１は、失敗数を１インクリメントする。ＣＰＵ１１は、テスト５０まで同様の処理を行う。なお図５の例では、ミュータントオペレータＭ４６を用いた場合、成功数は０、失敗数は１０となる。
【００２３】
続いて、ＣＰＵ１１は、各ミュータントの失敗数の合計値を求め、ミュータント総数で除すことで平均失敗数を算出する。本実施形態では平均失敗数を後述するリスク値を求める上でのパラメータとする。なお、平均失敗数以外に、予め記憶部１５に記憶した値をパラメータとして用いても良い。
【００２４】
ＣＰＵ１１は、各ミュータントの成功数が、失敗数に平均失敗数を加算した和（以下、加算値という）よりも大きいか否か判断する。ＣＰＵ１１は、大きくないと判断した場合、リスク値フィールドにリスク０を記憶する。ＣＰＵ１１は、大きいと判断した場合、リスク値フィールドに、当該ミュータントの失敗数を記憶する。図５の例では、ミュータントオペレータＭ４２を用いたミュータントのリスク値が１０と記憶されている。
【００２５】
リスク平均値フィールドには、各コードのリスク値の平均値が記憶されている。ＣＰＵ１１は、行毎に、全ミュータントのリスク値の合計値を求める。ＣＰＵ１１は、合計値を当該行内の全ミュータント数で除すことで、各コードのリスク平均値を算出する。図５の例では第１１行のコードのリスク平均値は０、第１７行のコードのリスク平均値は4.29となっている。ＣＰＵ１１は、最も高いリスク平均値を有するコードが欠損したコードであると推定する。ＣＰＵ１１は、欠損を推定したコードを表示部１４へ出力する。なお、推定したコードは通信部１６を介して、他のコンピュータへ出力するようにしても良い。
【００２６】
以上のハードウェア群において、各種ソフトウェア処理を、フローチャートを用いて説明する。図６はミュータント生成処理の手順を示すフローチャートである。ＣＰＵ１１は、記憶部１５から修正プログラムを読み出す（ステップＳ６１）。ＣＰＵ１１は、テストスイートＤＢ１５１から複数のテストを読み出す（ステップＳ６２）。ＣＰＵ１１は、修正プログラムに対し全てのテストを行い、テスト結果を修正プログラム実行結果ＤＢ１５２に記憶する（ステップＳ６３）。ＣＰＵ１１は、図３に示すようにテストに対応付けて成功または失敗を示す情報を、修正プログラム実行結果ＤＢ１５２に記憶する。
【００２７】
ＣＰＵ１１は、修正前の元のプログラムを記憶部１５から読み出す（ステップＳ６４）。ＣＰＵ１１は、ミュータントオペレータを適用するコードを抽出する（ステップＳ６５）。図５の例では、適用対象のコードとして、１１行目、１７行目等のコードを抽出している。ＣＰＵ１１は、ミュータントオペレータＤＢ１５３から複数のミュータントオペレータを読み出す（ステップＳ６６）。なお、ＣＰＵ１１は、元のプログラムのコード、行、及びミュータントオペレータを、実行結果ＤＢ１５５に記憶する。ＣＰＵ１１は、元のプログラムにミュータントオペレータを作用させ、ミュータントを生成する（ステップＳ６７）。
【００２８】
ＣＰＵ１１は、生成したミュータントをミュータントＤＢ１５４に記憶する（ステップＳ６８）。ＣＰＵ１１は、全てのミュータントオペレータに対する処理を終了したか否かを判断する（ステップＳ６９）。ＣＰＵ１１は、全てのミュータントオペレータに対する処理を終了していないと判断した場合（ステップＳ６９でＮＯ）、処理をステップＳ６７に処理を戻す。ＣＰＵ１１は、未処理のミュータントオペレータを用いて、ステップＳ６７の処理を行う。これにより全てのミュータントオペレータを用いたミュータントが生成される。
【００２９】
ＣＰＵ１１は、全てのミュータントオペレータに対する処理を終了したと判断した場合（ステップＳ６９でＹＥＳ）、処理をステップＳ６１０へ移行させる。ＣＰＵ１１は、全ての適用対象となるコードについて処理を終了したか否かを判断する（ステップＳ６１０）。ＣＰＵ１１は、全てのコードに対する処理を終了していないと判断した場合（ステップＳ６１０でＮＯ）、処理をステップＳ６６へ戻す。ＣＰＵ１１は、未処理のコードに対し、ステップＳ６６以降の処理を行う。これにより各コードについて、複数のミュータントが生成される。ＣＰＵ１１は、全てのコードに対する処理を終了したと判断した場合（ステップＳ６１０でＹＥＳ）、一連の処理を終了する。
【００３０】
図７はテスト結果の記憶処理手順を示すフローチャートである。ＣＰＵ１１は、元のプログラムのミュータントをミュータントＤＢ１５４から読み出す（ステップＳ７１）。ＣＰＵ１１は、テストスイートＤＢ１５１からテストを読み出す（ステップＳ７２）。ＣＰＵ１１は、ミュータントに対しテストを行い、テスト結果を、ミュータント及びテストに対応付けて、実行結果ＤＢ１５５に記憶する（ステップＳ７３）。ＣＰＵ１１は、ミュータントのテスト結果が失敗、かつ、修正プログラムの対応するテスト結果が成功であるか否かを、修正プログラム実行結果ＤＢ１５２を参照して判断する（ステップＳ７４）。
【００３１】
ＣＰＵ１１は、ミュータントのテスト結果が失敗、かつ、修正プログラムの対応するテスト結果が成功であると判断した場合（ステップＳ７４でＹＥＳ）、処理をステップＳ７５へ移行させる。ＣＰＵ１１は、実行結果ＤＢ１５５における当該ミュータントの成功数をインクリメントする（ステップＳ７５）。ＣＰＵ１１は、その後処理をステップＳ７８へ移行させる。ＣＰＵ１１は、ミュータントのテスト結果が失敗、かつ、修正プログラムの対応するテスト結果が成功でないと判断した場合（ステップＳ７４でＮＯ）、処理をステップＳ７６へ移行させる。
【００３２】
ＣＰＵ１１は、ミュータントのテスト結果が失敗、かつ、修正プログラムの対応するテスト結果が失敗と判断した場合（ステップＳ７６でＹＥＳ）、処理をステップＳ７７へ移行させる。ＣＰＵ１１は、実行結果ＤＢ１５５における当該ミュータントの失敗数をインクリメントする（ステップＳ７７）。ＣＰＵ１１は、その後処理をステップＳ７８へ移行させる。ＣＰＵ１１は、ミュータントのテスト結果が失敗、かつ、修正プログラムの対応するテスト結果が失敗でないと判断した場合（ステップＳ７６でＮＯ）、処理をステップＳ７８へ移行させる。なお、本実施形態ではステップＳ７４の処理をステップＳ７６よりも先に行ったが、先にステップＳ７６の処理を実行しても良い。
【００３３】
ＣＰＵ１１は、全てのテストに対し処理を終了したか否か判断する（ステップＳ７８）。ＣＰＵ１１は、全てのテストに対し処理を終了していないと判断した場合（ステップＳ７８でＮＯ）、処理をステップＳ７２に戻す。以上の処理を繰り返すことにより、ミュータントに対する各テスト結果、成功数及び失敗数が記憶される。
【００３４】
ＣＰＵ１１は、全てのテストに対し処理を終了したと判断した場合（ステップＳ７８でＹＥＳ）、処理をステップＳ７９へ移行させる。ＣＰＵ１１は、全てのミュータントに対する処理を終了したか否かを判断する（ステップＳ７９）。ＣＰＵ１１は、全てのミュータントに対する処理を終了していないと判断した場合（ステップＳ７９でＮＯ）、処理をステップＳ７１に戻す。これにより全てのミュータントについてのテスト結果、成功数及び失敗数が記憶される。ＣＰＵ１１は、全てのミュータントに対する処理を終了したと判断した場合（ステップＳ７９でＹＥＳ）、処理を終了する。
【００３５】
図８は欠損コードの推定処理を示すフローチャートである。ＣＰＵ１１は、実行結果ＤＢ１５５を参照し、全てのミュータントの失敗数の合計値を算出する（ステップＳ８１）。ＣＰＵ１１は、合計値を全てのミュータント数で除して平均失敗数を算出する（ステップＳ８２）。ＣＰＵ１１は、各ミュータントの成功数が、失敗数に平均失敗数を加算した加算値より大きいか否かを判断する（ステップＳ８３）。ＣＰＵ１１は、成功数が、失敗数に平均失敗数を加算した値よりも大きいと判断した場合（ステップＳ８３でＹＥＳ）、処理をステップＳ８４へ移行させる。
【００３６】
ＣＰＵ１１は、ミュータントに対応付けてリスク値０を実行結果ＤＢ１５５に記憶する（ステップＳ８４）。ＣＰＵ１１は、その後処理をステップＳ８６へ移行させる。ＣＰＵ１１は、成功数が、失敗数に平均失敗数を加算した値より大きくないと判断した場合（ステップＳ８３でＮＯ）、処理をステップＳ８５へ移行させる。ＣＰＵ１１は、当該ミュータントにおける失敗数をリスク値として、ミュータントに対応付けて実行結果ＤＢ１５５に記憶する（ステップＳ８５）。ＣＰＵ１１は、全てのミュータントに対する処理を終了したか否かを判断する（ステップＳ８６）。
【００３７】
ＣＰＵ１１は、全てのミュータントに対する処理を終えていない場合（ステップＳ８６でＮＯ）、処理をステップＳ８３へ戻す。ＣＰＵ１１は、未処理のミュータントに対し、ステップＳ８３以降の処理を行う。これにより全てのミュータントについてのリスク値が算出される。ＣＰＵ１１は、全てのミュータントに対する処理を終了したと判断した場合（ステップＳ８６でＹＥＳ）、処理をステップＳ８７へ移行させる。
【００３８】
ＣＰＵ１１は、コード毎のリスク値の平均からリスク平均値を算出する（ステップＳ８７）。具体的には、ＣＰＵ１１は、同一コード内のミュータントのリスク値の合計値を求め、同一コード内の全ミュータント数で除すことで、リスク平均値を算出する。ＣＰＵ１１は、最も大きいリスク平均値を有するコードを、欠損が推定されるコードとして表示部１４へ出力する（ステップＳ８８）。
【００３９】
なお、欠損が推定されるコードは、リスク平均値が最大のものを出力する例を示したがこれに限るものではない。リスク平均値が大きい上位数行のコードを欠損が推定されるコードとして出力しても良い。またリスク平均値ではなく、合計値が最も大きいコード、または合計値が大きい上位数行のコードを欠損が推定されるコードとして出力しても良い。これにより、修正したプログラムの欠損した箇所を推定することが可能となる。また修正プログラム及びミュータント双方の相関により精度良くコードの欠損箇所を推定する事ができる。またパラメータとして平均失敗数を利用することでより精度を向上させることができる。
【００４０】
実施の形態２
図９は上述した形態のコンピュータ１の動作を示す機能ブロック図である。ＣＰＵ１１が制御プログラム１５Ｐを実行することにより、コンピュータ１は以下のように動作する。第１取得部９１は、元のプログラムを修正した修正プログラムに対し、複数のテストを実行することにより第１テスト結果を取得する。第２取得部９２は、前記元のプログラムに基づき生成したミュータントに対し、前記複数のテストを実行することにより、第２テスト結果を取得する。出力部９３は、前記第２テスト結果の内失敗したテストと前記第１テスト結果との相関に基づき、前記修正プログラムの欠損が推定されるコードを出力する。
【００４１】
図１０は実施の形態２に係るコンピュータ１のハードウェア群を示すブロック図である。コンピュータ１を動作させるためのプログラムは、ディスクドライブ等の読み取り部１０ＡにCD-ROM、DVD（Digital Versatile Disc）ディスク、メモリーカード、またはUSB(Universal Serial Bus)メモリ等の可搬型記録媒体１Ａを読み取らせて記憶部１５に記憶しても良い。また当該プログラムを記憶したフラッシュメモリ等の半導体メモリ１Ｂをコンピュータ１内に実装しても良い。さらに、当該プログラムは、インターネット等の通信網Ｎを介して接続される他のサーバコンピュータ（図示せず）からダウンロードすることも可能である。以下に、その内容を説明する。
【００４２】
図１０に示すコンピュータ１は、上述した各種ソフトウェア処理を実行するプログラムを、可搬型記録媒体１Ａまたは半導体メモリ１Ｂから読み取り、或いは、通信網Ｎを介して他のサーバコンピュータ（図示せず）からダウンロードする。当該プログラムは、制御プログラム１５Ｐとしてインストールされ、ＲＡＭ１２にロードして実行される。これにより、上述したコンピュータ１として機能する。
【００４３】
本実施の形態２は以上の如きであり、その他は実施の形態１から５と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【００４４】
以上の実施の形態１及び２を含む実施形態に関し、さらに以下の付記を開示する。
【００４５】
（付記１）
コンピュータに、
元のプログラムを修正した修正プログラムに対し、複数のテストを実行することにより第１テスト結果を取得し、
前記元のプログラムに基づき生成したミュータントに対し、前記複数のテストを実行することにより、第２テスト結果を取得し、
前記第２テスト結果の内失敗したテストと前記第１テスト結果との相関に基づき、前記修正プログラムの欠損が推定されるコードを出力する
処理を実行させるプログラム。
（付記２）
ミュータントに対するテストに失敗し、かつ、修正プログラムに対する前記テストに成功した成功数を計数し、
ミュータントに対するテストに失敗し、かつ、修正プログラムに対する前記テストに失敗した失敗数を計数し、
前記成功数及び失敗数の大小関係に基づき、欠損が推定されるコードを出力する
付記１に記載のプログラム。
（付記３）
前記プログラムのコード毎に、複数のミュータントを生成し、
ミュータント毎に前記複数のテストを実行することにより、第２テスト結果を取得する
付記２に記載のプログラム。
（付記４）
計数した各ミュータントの失敗数に基づき平均失敗数を算出し、
計数した各ミュータントの成功数と、失敗数に前記平均失敗数を加算した和との大小関係に基づき、欠損が推定されるコードを出力する
付記３に記載のプログラム。
（付記５）
前記成功数よりも前記和が大きい場合に、失敗数を抽出し、
コード毎に、抽出した失敗数の平均値を算出し、
算出した平均値に基づき、欠損が推定されるコードを出力する
付記４に記載のプログラム。
（付記６）
元のプログラムを修正した修正プログラムに対し、複数のテストを実行することにより第１テスト結果を取得する第１取得部と、
前記元のプログラムに基づき生成したミュータントに対し、前記複数のテストを実行することにより、第２テスト結果を取得する第２取得部と、
前記第２テスト結果の内失敗したテストと前記第１テスト結果との相関に基づき、前記修正プログラムの欠損が推定されるコードを出力する出力部と
を備える情報処理装置。
（付記７）
元のプログラムを修正した修正プログラムに対し、複数のテストを実行することにより第１テスト結果を取得し、
前記元のプログラムに基づき生成したミュータントに対し、前記複数のテストを実行することにより、第２テスト結果を取得し、
前記第２テスト結果の内失敗したテストと前記第１テスト結果との相関に基づき、前記修正プログラムの欠損が推定されるコードを出力する
コンピュータを用いた情報処理方法。
【符号の説明】
【００４６】
１      コンピュータ
１Ａ    可搬型記録媒体
１Ｂ    半導体メモリ
１０Ａ  読み取り部
１１    ＣＰＵ
１２    ＲＡＭ
１３    入力部
１４    表示部
１５    記憶部
１５Ｐ  制御プログラム
１６    通信部
１５１  テストスイートＤＢ
１５２  修正プログラム実行結果ＤＢ
１５３  ミュータントオペレータＤＢ
１５４  ミュータントＤＢ
１５５  実行結果ＤＢ
９１    第１取得部
９２    第２取得部
９３    出力部
Ｎ      通信網
【図１】
0006365276.tif 000002
【図２】
0006365276.tif 000003
【図３】
0006365276.tif 000004
【図４】
0006365276.tif 000005
【図５】
0006365276.tif 000006
【図６】
0006365276.tif 000007
【図７】
0006365276.tif 000008
【図８】
0006365276.tif 000009
【図９】
0006365276.tif 000010
【図１０】
0006365276.tif 000011