JP6365276B2 - Program, information processing apparatus and information processing method - Google Patents

Program, information processing apparatus and information processing method Download PDF

Info

Publication number
JP6365276B2
JP6365276B2 JP2014247774A JP2014247774A JP6365276B2 JP 6365276 B2 JP6365276 B2 JP 6365276B2 JP 2014247774 A JP2014247774 A JP 2014247774A JP 2014247774 A JP2014247774 A JP 2014247774A JP 6365276 B2 JP6365276 B2 JP 6365276B2
Authority
JP
Japan
Prior art keywords
program
test
mutant
cpu
code
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
Application number
JP2014247774A
Other languages
Japanese (ja)
Other versions
JP2016110419A (en
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 JP2014247774A priority Critical patent/JP6365276B2/en
Publication of JP2016110419A publication Critical patent/JP2016110419A/en
Application granted granted Critical
Publication of JP6365276B2 publication Critical patent/JP6365276B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、プログラム、情報処理装置及び情報処理方法に関する。   The present invention relates to a program, an information processing apparatus, and an information processing method.

従来、プログラムを構成するソースコードモジュールの1つに構文上のミュータントを挿入することによりコンピュータプログラムの機能的シミュレーション及び検証を行う技術が開示されている(例えば特許文献1及び2参照)。   Conventionally, a technique for performing functional simulation and verification of a computer program by inserting a syntactic mutant into one of source code modules constituting the program has been disclosed (see, for example, Patent Documents 1 and 2).

特開2000−222244号公報JP 2000-222244 A 特開平08−044590号公報Japanese Patent Laid-Open No. 08-044590

しかしながら、従来の技術では修正したプログラムの欠損した箇所を推定することができないという問題がある。   However, the conventional technique has a problem that it is impossible to estimate a missing part of a corrected program.

一つの側面では、修正したプログラムの欠損した箇所を推定することが可能なプログラム等を提供することを目的とする。   In one aspect, an object is to provide a program or the like that can estimate a missing part of a modified program.

一つの案では、プログラムは、コンピュータに、元のプログラムを修正した修正プログラムに対し、複数のテストを実行することにより第1テスト結果を取得し、前記元のプログラムに基づき生成したミュータントに対し、前記複数のテストを実行することにより、第2テスト結果を取得し、前記第2テスト結果の内失敗したテストと前記第1テスト結果との相関に基づき、前記修正プログラムの欠損が推定されるコードを出力する処理を実行させる。   In one proposal, the program obtains a first test result by executing a plurality of tests on a modified program obtained by modifying the original program on a computer, and for a mutant generated based on the original program, A code that obtains a second test result by executing the plurality of tests, and that estimates a lack of the correction program based on a correlation between the failed test and the first test result among the second test results Is executed.

一つの側面では、修正したプログラムの欠損した箇所を推定することが可能となる。   In one aspect, it is possible to estimate missing portions of the modified program.

情報処理装置のハードウェア群を示すブロック図である。It is a block diagram which shows the hardware group of information processing apparatus. テストスイートDBの記憶内容を示す説明図である。It is explanatory drawing which shows the memory content of test suite DB. 修正プログラム実行結果DBのレコードレイアウトを示す説明図である。It is explanatory drawing which shows the record layout of correction program execution result DB. ミュータントオペレータDBの記憶内容を示す説明図である。It is explanatory drawing which shows the memory content of mutant operator DB. 実行結果DBのレコードレイアウトを示す説明図である。It is explanatory drawing which shows the record layout of execution result DB. ミュータント生成処理の手順を示すフローチャートである。It is a flowchart which shows the procedure of a mutant production | generation process. テスト結果の記憶処理手順を示すフローチャートである。It is a flowchart which shows the memory processing procedure of a test result. 欠損コードの推定処理を示すフローチャートである。It is a flowchart which shows the estimation process of a missing code. 上述した形態のコンピュータの動作を示す機能ブロック図である。It is a functional block diagram which shows operation | movement of the computer of the form mentioned above. 実施の形態2に係るコンピュータのハードウェア群を示すブロック図である。FIG. 6 is a block diagram illustrating a hardware group of a computer according to a second embodiment.

実施の形態1
以下実施の形態を、図面を参照して説明する。図1は情報処理装置1のハードウェア群を示すブロック図である。情報処理装置1はサーバコンピュータ、パーソナルコンピュータ、携帯電話、スマートフォン、ゲーム機またはPDA(Personal Digital Assistant)等である。以下では情報処理装置1をコンピュータ1と読み替えて説明する。コンピュータ1は制御部としてのCPU(Central Processing Unit)11、RAM(Random Access Memory)12、入力部13、表示部14、記憶部15、及び、通信部16等を含む。
Embodiment 1
Hereinafter, embodiments will be described with reference to the drawings. FIG. 1 is a block diagram illustrating a hardware group of the information processing apparatus 1. The information processing apparatus 1 is a server computer, a personal computer, a mobile phone, a smartphone, a game machine, a PDA (Personal Digital Assistant), or the like. Hereinafter, the information processing apparatus 1 will be described as being replaced with the computer 1. The computer 1 includes a CPU (Central Processing Unit) 11 as a control unit, a RAM (Random Access Memory) 12, an input unit 13, a display unit 14, a storage unit 15, a communication unit 16, and the like.

CPU11は、バス17を介してハードウェア各部と接続されている。CPU11は記憶部15に記憶された制御プログラム15Pに従いハードウェア各部を制御する。RAM12は例えば(Static RAM)、DRAM(Dynamic RAM)、フラッシュメモリ等である。RAM12は、記憶部としても機能し、CPU11による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。   The CPU 11 is connected to each part of the hardware via the bus 17. The CPU 11 controls each part of the hardware according to the control program 15P stored in the storage unit 15. The RAM 12 is, for example, (Static RAM), DRAM (Dynamic RAM), flash memory, or the like. The RAM 12 also functions as a storage unit, and temporarily stores various data generated when the CPU 11 executes various programs.

入力部13はマウスまたはキーボード、マウスまたはタッチパネル等の入力デバイスであり、受け付けた操作情報をCPU11へ出力する。表示部14は液晶ディスプレイまたは有機EL(electroluminescence)ディスプレイ等であり、CPU11の指示に従い各種情報を表示する。通信部16は通信モジュールであり、図示しない他のコンピュータとの間でインターネット等の通信網Nを介して、情報の送受信を行う。   The input unit 13 is an input device such as a mouse or a keyboard, a mouse or a touch panel, and outputs received operation information to the CPU 11. The display unit 14 is a liquid crystal display, an organic EL (electroluminescence) display, or the like, and displays various information according to instructions from the CPU 11. The communication unit 16 is a communication module, and transmits / receives information to / from other computers (not shown) via a communication network N such as the Internet.

記憶部15はハードディスクまたは大容量メモリであり、制御プログラム15P、テストスイートデータベース(以下、DBという)151、修正プログラム実行結果DB152、ミュータントオペレータDB153を含む。また、記憶部15は、ミュータントDB154及び実行結果DB155等を記憶している。なお、実施形態ではテストスイートDB151等を記憶部15に記憶する例を挙げたがこれに限るものではない。RAM12に記憶するほか、図示しない他のDBサーバ内に記憶するようにしても良い。   The storage unit 15 is a hard disk or a large-capacity memory, and includes a control program 15P, a test suite database (hereinafter referred to as DB) 151, a correction program execution result DB 152, and a mutant operator DB 153. The storage unit 15 stores a mutant DB 154, an execution result DB 155, and the like. In the embodiment, the example in which the test suite DB 151 and the like are stored in the storage unit 15 is described, but the present invention is not limited to this. In addition to being stored in the RAM 12, it may be stored in another DB server (not shown).

図2はテストスイートDB151の記憶内容を示す説明図である。テストスイートDB151にはプログラムに対して実行される複数のテストが記憶されている。本実施形態ではテスト1からテスト50までのテストを用いる例を挙げて説明するが、数値は一例であり、これに限るものではない。   FIG. 2 is an explanatory diagram showing the contents stored in the test suite DB 151. The test suite DB 151 stores a plurality of tests executed on the program. In the present embodiment, an example in which tests from Test 1 to Test 50 are used will be described. However, the numerical value is an example, and the present invention is not limited to this.

図3は修正プログラム実行結果DB152のレコードレイアウトを示す説明図である。各テストに対応付けて、実行結果が成功、または、失敗と記憶されている。図3の例ではテスト1及びテスト2は成功したが、テスト3は失敗している。CPU11は、元のプログラムを記憶部15から読み出し、表示部14に表示する。ユーザは元のプログラムを、入力部13を通じて適宜修正する。CPU11は、入力部13からプログラムの修正を受け付け、受け付けた修正後の修正プログラムを記憶部15に記憶する。   FIG. 3 is an explanatory diagram showing a record layout of the correction program execution result DB 152. In association with each test, the execution result is stored as success or failure. In the example of FIG. 3, test 1 and test 2 succeeded, but test 3 failed. The CPU 11 reads the original program from the storage unit 15 and displays it on the display unit 14. The user appropriately modifies the original program through the input unit 13. The CPU 11 receives the correction of the program from the input unit 13 and stores the received correction program after the correction in the storage unit 15.

CPU11は、修正プログラムを記憶部15から読み出し、テストスイートDB151に記憶されたテスト1からテスト50を実行し、各テストの実行結果を修正プログラム実行結果DB152に記憶する。   The CPU 11 reads the modification program from the storage unit 15, executes the tests 1 to 50 stored in the test suite DB 151, and stores the execution result of each test in the modification program execution result DB 152.

図4はミュータントオペレータDB153の記憶内容を示す説明図である。ミュータントオペレータDB153には、人工的な誤りを含むプログラムであるミュータントを生成するための複数のミュータントオペレータが記憶されている。例えば、「<→>」のミュータントオペレータは、元のプログラムのコードに「<」が存在する場合、大小関係が逆となる「>」に書き換える。CPU11は、元のプログラムの特定のコードを書き換えることにより、当該コードについての複数のミュータントを生成する。CPU11は、生成したミュータントをミュータントDB154に記憶する。   FIG. 4 is an explanatory diagram showing the contents stored in the mutant operator DB 153. The mutant operator DB 153 stores a plurality of mutant operators for generating a mutant that is a program including an artificial error. For example, the mutant operator “<→>” rewrites “>” in which the magnitude relationship is reversed when “<” exists in the code of the original program. The CPU 11 generates a plurality of mutants for the code by rewriting a specific code of the original program. The CPU 11 stores the generated mutant in the mutant DB 154.

図5は実行結果DB155のレコードレイアウトを示す説明図である。実行結果DB155は、元のプログラムフィールド、ミュータントオペレータフィールド、行フィールド、テストフィールド、成功数フィールド、失敗数フィールド、リスク値フィールド及びリスク平均値フィールド等を含む。元のプログラムフィールドには、修正前の元のプログラムのコードが記憶されている。なお、実行結果DB155の記憶内容は図5に示す例に限るものではない。データ間の関係が維持されていれば他の記憶形態であっても良い。   FIG. 5 is an explanatory diagram showing a record layout of the execution result DB 155. The execution result DB 155 includes an original program field, a mutant operator field, a row field, a test field, a success number field, a failure number field, a risk value field, a risk average value field, and the like. In the original program field, the code of the original program before correction is stored. The contents stored in the execution result DB 155 are not limited to the example shown in FIG. Other storage forms may be used as long as the relationship between data is maintained.

ミュータントオペレータフィールドには、元のプログラムのコードに対して書き換えを行うための複数のミュータントオペレータが記憶されている。行フィールドには、コードの行を特定するための行番号がコードに対応付けて記憶されている。テストフィールドには、テスト毎に、ミュータントに対してテストを行った結果が記憶されている。例えば、M2で示すミュータントオペレータを用いたミュータントに対するテスト結果は、テスト1が失敗したことを示す「1」、テスト2も失敗したことを示す「1」が記憶されている。   In the mutant operator field, a plurality of mutant operators for rewriting the code of the original program is stored. In the line field, a line number for specifying the line of the code is stored in association with the code. In the test field, the result of testing the mutant for each test is stored. For example, the test result for the mutant using the mutant operator indicated by M2 stores “1” indicating that the test 1 has failed and “1” indicating that the test 2 has also failed.

また例えば、M46で示すミュータントオペレータを用いたミュータントに対するテスト結果は、テスト1が成功したことを示す「0」、テスト3は失敗したことを示す「1」が記憶されている。なお、図5の下部には、説明を容易にするため、修正プログラムの実行結果を各テストに対応させて記載している。例えば修正プログラムに対するテスト1は「成功」しており、修正プログラムに対するテスト3は「失敗」していることが理解できる。なお、一つの行のコードに対するミュータントの数は一例であり特に限定するものではない。   Further, for example, the test result for the mutant using the mutant operator indicated by M46 stores “0” indicating that the test 1 has succeeded and “1” indicating that the test 3 has failed. In the lower part of FIG. 5, the execution result of the correction program is described corresponding to each test for easy explanation. For example, it can be understood that test 1 for the modification program is “successful” and test 3 for the modification program is “failed”. Note that the number of mutants for one line of code is an example and is not particularly limited.

成功数フィールドには、コード及びミュータントオペレータに対応付けて、成功数が記憶されている。具体的には、CPU11は、修正プログラム実行結果DB152及び実行結果DB155を参照し、元のプログラムのミュータントに対するテストが失敗し、かつ、修正プログラムに対する対応するテストが成功した数を記憶する。また失敗数フィールドには、コード及びミュータントオペレータに対応付けて、失敗数が記憶されている。具体的には、CPU11は、修正プログラム実行結果DB152及び実行結果DB155を参照し、元のプログラムのミュータントに対するテストが失敗し、かつ、修正プログラムに対する対応するテストが失敗した数を記憶する。   In the success number field, the success number is stored in association with the code and the mutant operator. Specifically, the CPU 11 refers to the correction program execution result DB 152 and the execution result DB 155, and stores the number of tests for the original program mutant that have failed and the corresponding test for the correction program succeeded. In the failure number field, the number of failures is stored in association with the code and the mutant operator. Specifically, the CPU 11 refers to the correction program execution result DB 152 and the execution result DB 155, and stores the number of tests for the original program mutant that have failed and the corresponding test for the correction program failed.

図5の例では、行11についてミュータントオペレータM2が用いられており、テスト1の結果は「1」であり、失敗している。対応するテスト1の修正プログラムの結果は成功である。この場合、CPU11は、実行結果DB155の成功数をインクリメントする。テスト2の結果は「1」であり失敗している。対応するテスト1の修正プログラム結果は成功である。この場合も、CPU11は、成功数をインクリメントする。テスト3の結果は「1」であり失敗している。対応するテスト1の修正プログラム結果は失敗である。この場合、CPU11は、失敗数をインクリメントする。同様の処理を各テストについて行った結果、全テスト50の内、成功数は40であり、失敗数は10と記憶される。   In the example of FIG. 5, the mutant operator M2 is used for the row 11, and the result of the test 1 is “1”, which is unsuccessful. The corresponding test 1 fix results are successful. In this case, the CPU 11 increments the number of successes in the execution result DB 155. The result of test 2 is “1”, which is unsuccessful. The corresponding test 1 fix result is successful. Also in this case, the CPU 11 increments the success number. The result of test 3 is “1”, which is unsuccessful. The corresponding test 1 fix results are unsuccessful. In this case, the CPU 11 increments the number of failures. As a result of performing the same processing for each test, among all the tests 50, the number of successes is 40 and the number of failures is stored as 10.

続いて17行のミュータントオペレータM46について着目する。テスト1及び2については、結果が成功を示す0であるため、成功数及び失敗数の計数処理を実行しない。テスト3については、結果が失敗を示す1であり、また修正プログラムのテスト3の結果も失敗であるので、CPU11は、失敗数を1インクリメントする。CPU11は、テスト50まで同様の処理を行う。なお図5の例では、ミュータントオペレータM46を用いた場合、成功数は0、失敗数は10となる。   Next, attention is paid to the mutant operator M46 in the 17th row. For tests 1 and 2, the result is 0 indicating success, so the number of successes and the number of failures are not executed. For test 3, the result is 1 indicating failure, and the result of test 3 of the correction program is also failure, so the CPU 11 increments the number of failures by 1. The CPU 11 performs the same processing up to the test 50. In the example of FIG. 5, when the mutant operator M46 is used, the number of successes is 0 and the number of failures is 10.

続いて、CPU11は、各ミュータントの失敗数の合計値を求め、ミュータント総数で除すことで平均失敗数を算出する。本実施形態では平均失敗数を後述するリスク値を求める上でのパラメータとする。なお、平均失敗数以外に、予め記憶部15に記憶した値をパラメータとして用いても良い。   Subsequently, the CPU 11 obtains a total value of the number of failures of each mutant and calculates an average number of failures by dividing by the total number of mutants. In the present embodiment, the average number of failures is used as a parameter for obtaining a risk value described later. In addition to the average failure count, a value stored in advance in the storage unit 15 may be used as a parameter.

CPU11は、各ミュータントの成功数が、失敗数に平均失敗数を加算した和(以下、加算値という)よりも大きいか否か判断する。CPU11は、大きくないと判断した場合、リスク値フィールドにリスク0を記憶する。CPU11は、大きいと判断した場合、リスク値フィールドに、当該ミュータントの失敗数を記憶する。図5の例では、ミュータントオペレータM42を用いたミュータントのリスク値が10と記憶されている。   The CPU 11 determines whether or not the number of successes of each mutant is greater than the sum of the number of failures plus the average number of failures (hereinafter referred to as an added value). If the CPU 11 determines that it is not large, it stores risk 0 in the risk value field. When the CPU 11 determines that the value is large, it stores the number of failures of the mutant in the risk value field. In the example of FIG. 5, the risk value of the mutant using the mutant operator M42 is stored as 10.

リスク平均値フィールドには、各コードのリスク値の平均値が記憶されている。CPU11は、行毎に、全ミュータントのリスク値の合計値を求める。CPU11は、合計値を当該行内の全ミュータント数で除すことで、各コードのリスク平均値を算出する。図5の例では第11行のコードのリスク平均値は0、第17行のコードのリスク平均値は4.29となっている。CPU11は、最も高いリスク平均値を有するコードが欠損したコードであると推定する。CPU11は、欠損を推定したコードを表示部14へ出力する。なお、推定したコードは通信部16を介して、他のコンピュータへ出力するようにしても良い。   The average risk value of each code is stored in the risk average value field. CPU11 calculates | requires the total value of the risk value of all the mutants for every line. The CPU 11 calculates the risk average value of each code by dividing the total value by the total number of mutants in the row. In the example of FIG. 5, the risk average value of the code of the 11th line is 0, and the risk average value of the code of the 17th line is 4.29. The CPU 11 estimates that the code having the highest risk average value is a missing code. The CPU 11 outputs the code that estimates the loss to the display unit 14. Note that the estimated code may be output to another computer via the communication unit 16.

以上のハードウェア群において、各種ソフトウェア処理を、フローチャートを用いて説明する。図6はミュータント生成処理の手順を示すフローチャートである。CPU11は、記憶部15から修正プログラムを読み出す(ステップS61)。CPU11は、テストスイートDB151から複数のテストを読み出す(ステップS62)。CPU11は、修正プログラムに対し全てのテストを行い、テスト結果を修正プログラム実行結果DB152に記憶する(ステップS63)。CPU11は、図3に示すようにテストに対応付けて成功または失敗を示す情報を、修正プログラム実行結果DB152に記憶する。   In the above hardware group, various software processes will be described with reference to flowcharts. FIG. 6 is a flowchart showing the procedure of the mutant generation process. CPU11 reads a correction program from the memory | storage part 15 (step S61). The CPU 11 reads a plurality of tests from the test suite DB 151 (step S62). The CPU 11 performs all tests on the correction program and stores the test result in the correction program execution result DB 152 (step S63). As illustrated in FIG. 3, the CPU 11 stores information indicating success or failure in association with the test in the correction program execution result DB 152.

CPU11は、修正前の元のプログラムを記憶部15から読み出す(ステップS64)。CPU11は、ミュータントオペレータを適用するコードを抽出する(ステップS65)。図5の例では、適用対象のコードとして、11行目、17行目等のコードを抽出している。CPU11は、ミュータントオペレータDB153から複数のミュータントオペレータを読み出す(ステップS66)。なお、CPU11は、元のプログラムのコード、行、及びミュータントオペレータを、実行結果DB155に記憶する。CPU11は、元のプログラムにミュータントオペレータを作用させ、ミュータントを生成する(ステップS67)。   CPU11 reads the original program before correction from the memory | storage part 15 (step S64). CPU11 extracts the code | cord | chord which applies a mutant operator (step S65). In the example of FIG. 5, codes such as the 11th and 17th lines are extracted as the codes to be applied. The CPU 11 reads a plurality of mutant operators from the mutant operator DB 153 (step S66). The CPU 11 stores the code, line, and mutant operator of the original program in the execution result DB 155. The CPU 11 causes a mutant operator to act on the original program and generates a mutant (step S67).

CPU11は、生成したミュータントをミュータントDB154に記憶する(ステップS68)。CPU11は、全てのミュータントオペレータに対する処理を終了したか否かを判断する(ステップS69)。CPU11は、全てのミュータントオペレータに対する処理を終了していないと判断した場合(ステップS69でNO)、処理をステップS67に処理を戻す。CPU11は、未処理のミュータントオペレータを用いて、ステップS67の処理を行う。これにより全てのミュータントオペレータを用いたミュータントが生成される。   The CPU 11 stores the generated mutant in the mutant DB 154 (step S68). The CPU 11 determines whether or not the processing for all the mutant operators has been completed (step S69). If the CPU 11 determines that the process for all the mutant operators has not been completed (NO in step S69), the process returns to step S67. The CPU 11 performs the process of step S67 using an unprocessed mutant operator. Thereby, a mutant using all the mutant operators is generated.

CPU11は、全てのミュータントオペレータに対する処理を終了したと判断した場合(ステップS69でYES)、処理をステップS610へ移行させる。CPU11は、全ての適用対象となるコードについて処理を終了したか否かを判断する(ステップS610)。CPU11は、全てのコードに対する処理を終了していないと判断した場合(ステップS610でNO)、処理をステップS66へ戻す。CPU11は、未処理のコードに対し、ステップS66以降の処理を行う。これにより各コードについて、複数のミュータントが生成される。CPU11は、全てのコードに対する処理を終了したと判断した場合(ステップS610でYES)、一連の処理を終了する。   If the CPU 11 determines that the process for all the mutant operators has been completed (YES in step S69), the process proceeds to step S610. The CPU 11 determines whether or not the processing has been completed for all the codes to be applied (step S610). If the CPU 11 determines that the processing for all codes has not been completed (NO in step S610), the process returns to step S66. The CPU 11 performs the processing from step S66 on the unprocessed code. As a result, a plurality of mutants are generated for each chord. If the CPU 11 determines that the processing for all the codes has been completed (YES in step S610), the series of processing ends.

図7はテスト結果の記憶処理手順を示すフローチャートである。CPU11は、元のプログラムのミュータントをミュータントDB154から読み出す(ステップS71)。CPU11は、テストスイートDB151からテストを読み出す(ステップS72)。CPU11は、ミュータントに対しテストを行い、テスト結果を、ミュータント及びテストに対応付けて、実行結果DB155に記憶する(ステップS73)。CPU11は、ミュータントのテスト結果が失敗、かつ、修正プログラムの対応するテスト結果が成功であるか否かを、修正プログラム実行結果DB152を参照して判断する(ステップS74)。   FIG. 7 is a flowchart showing a test result storing process. The CPU 11 reads the original program mutant from the mutant DB 154 (step S71). The CPU 11 reads a test from the test suite DB 151 (step S72). The CPU 11 performs a test on the mutant, and stores the test result in the execution result DB 155 in association with the mutant and the test (step S73). The CPU 11 refers to the modification program execution result DB 152 to determine whether or not the mutant test result is unsuccessful and the corresponding test result of the modification program is successful (step S74).

CPU11は、ミュータントのテスト結果が失敗、かつ、修正プログラムの対応するテスト結果が成功であると判断した場合(ステップS74でYES)、処理をステップS75へ移行させる。CPU11は、実行結果DB155における当該ミュータントの成功数をインクリメントする(ステップS75)。CPU11は、その後処理をステップS78へ移行させる。CPU11は、ミュータントのテスト結果が失敗、かつ、修正プログラムの対応するテスト結果が成功でないと判断した場合(ステップS74でNO)、処理をステップS76へ移行させる。   If the CPU 11 determines that the mutant test result is unsuccessful and the corresponding test result of the correction program is successful (YES in step S74), the CPU 11 causes the process to proceed to step S75. The CPU 11 increments the number of successful mutants in the execution result DB 155 (step S75). After that, the CPU 11 shifts the process to step S78. If the CPU 11 determines that the mutant test result is unsuccessful and the corresponding test result of the correction program is not successful (NO in step S74), the process proceeds to step S76.

CPU11は、ミュータントのテスト結果が失敗、かつ、修正プログラムの対応するテスト結果が失敗と判断した場合(ステップS76でYES)、処理をステップS77へ移行させる。CPU11は、実行結果DB155における当該ミュータントの失敗数をインクリメントする(ステップS77)。CPU11は、その後処理をステップS78へ移行させる。CPU11は、ミュータントのテスト結果が失敗、かつ、修正プログラムの対応するテスト結果が失敗でないと判断した場合(ステップS76でNO)、処理をステップS78へ移行させる。なお、本実施形態ではステップS74の処理をステップS76よりも先に行ったが、先にステップS76の処理を実行しても良い。   If the CPU 11 determines that the mutant test result is unsuccessful and the corresponding test result of the correction program is unsuccessful (YES in step S76), the CPU 11 proceeds to step S77. The CPU 11 increments the number of failure of the mutant in the execution result DB 155 (step S77). After that, the CPU 11 shifts the process to step S78. If the CPU 11 determines that the mutant test result is unsuccessful and the corresponding test result of the correction program is not unsuccessful (NO in step S76), the process proceeds to step S78. In the present embodiment, the process of step S74 is performed before step S76, but the process of step S76 may be performed first.

CPU11は、全てのテストに対し処理を終了したか否か判断する(ステップS78)。CPU11は、全てのテストに対し処理を終了していないと判断した場合(ステップS78でNO)、処理をステップS72に戻す。以上の処理を繰り返すことにより、ミュータントに対する各テスト結果、成功数及び失敗数が記憶される。   The CPU 11 determines whether or not the processing has been completed for all tests (step S78). If the CPU 11 determines that the process has not been completed for all tests (NO in step S78), the process returns to step S72. By repeating the above processing, each test result, the number of successes and the number of failures for the mutant are stored.

CPU11は、全てのテストに対し処理を終了したと判断した場合(ステップS78でYES)、処理をステップS79へ移行させる。CPU11は、全てのミュータントに対する処理を終了したか否かを判断する(ステップS79)。CPU11は、全てのミュータントに対する処理を終了していないと判断した場合(ステップS79でNO)、処理をステップS71に戻す。これにより全てのミュータントについてのテスト結果、成功数及び失敗数が記憶される。CPU11は、全てのミュータントに対する処理を終了したと判断した場合(ステップS79でYES)、処理を終了する。   If the CPU 11 determines that the process has been completed for all tests (YES in step S78), the process proceeds to step S79. The CPU 11 determines whether or not the processing for all the mutants has been completed (step S79). If the CPU 11 determines that the process for all the mutants has not been completed (NO in step S79), the process returns to step S71. As a result, test results, success numbers, and failure numbers for all mutants are stored. If the CPU 11 determines that the process for all the mutants has been completed (YES in step S79), the process ends.

図8は欠損コードの推定処理を示すフローチャートである。CPU11は、実行結果DB155を参照し、全てのミュータントの失敗数の合計値を算出する(ステップS81)。CPU11は、合計値を全てのミュータント数で除して平均失敗数を算出する(ステップS82)。CPU11は、各ミュータントの成功数が、失敗数に平均失敗数を加算した加算値より大きいか否かを判断する(ステップS83)。CPU11は、成功数が、失敗数に平均失敗数を加算した値よりも大きいと判断した場合(ステップS83でYES)、処理をステップS84へ移行させる。   FIG. 8 is a flowchart showing a missing code estimation process. The CPU 11 refers to the execution result DB 155 and calculates the total value of the number of failures of all mutants (step S81). The CPU 11 calculates the average number of failures by dividing the total value by the number of all mutants (step S82). The CPU 11 determines whether or not the number of successes of each mutant is greater than an addition value obtained by adding the average number of failures to the number of failures (step S83). If the CPU 11 determines that the number of successes is greater than the value obtained by adding the average number of failures to the number of failures (YES in step S83), the process proceeds to step S84.

CPU11は、ミュータントに対応付けてリスク値0を実行結果DB155に記憶する(ステップS84)。CPU11は、その後処理をステップS86へ移行させる。CPU11は、成功数が、失敗数に平均失敗数を加算した値より大きくないと判断した場合(ステップS83でNO)、処理をステップS85へ移行させる。CPU11は、当該ミュータントにおける失敗数をリスク値として、ミュータントに対応付けて実行結果DB155に記憶する(ステップS85)。CPU11は、全てのミュータントに対する処理を終了したか否かを判断する(ステップS86)。   The CPU 11 stores the risk value 0 in the execution result DB 155 in association with the mutant (step S84). After that, the CPU 11 shifts the process to step S86. If the CPU 11 determines that the number of successes is not greater than the value obtained by adding the average number of failures to the number of failures (NO in step S83), the process proceeds to step S85. The CPU 11 stores the number of failures in the mutant as a risk value in association with the mutant in the execution result DB 155 (step S85). The CPU 11 determines whether or not the processing for all the mutants has been completed (step S86).

CPU11は、全てのミュータントに対する処理を終えていない場合(ステップS86でNO)、処理をステップS83へ戻す。CPU11は、未処理のミュータントに対し、ステップS83以降の処理を行う。これにより全てのミュータントについてのリスク値が算出される。CPU11は、全てのミュータントに対する処理を終了したと判断した場合(ステップS86でYES)、処理をステップS87へ移行させる。   CPU11 returns a process to step S83, when the process with respect to all the mutants is not completed (it is NO at step S86). CPU11 performs the process after step S83 with respect to an unprocessed mutant. As a result, risk values for all mutants are calculated. If the CPU 11 determines that the process for all the mutants has been completed (YES in step S86), the process proceeds to step S87.

CPU11は、コード毎のリスク値の平均からリスク平均値を算出する(ステップS87)。具体的には、CPU11は、同一コード内のミュータントのリスク値の合計値を求め、同一コード内の全ミュータント数で除すことで、リスク平均値を算出する。CPU11は、最も大きいリスク平均値を有するコードを、欠損が推定されるコードとして表示部14へ出力する(ステップS88)。   CPU11 calculates a risk average value from the average of the risk value for every code (step S87). Specifically, the CPU 11 calculates a risk average value by obtaining a total value of the risk values of the mutants in the same code and dividing by the total number of mutants in the same code. CPU11 outputs the code | cord | chord which has the largest risk average value to the display part 14 as a code | cord | chord with which a defect | deletion is estimated (step S88).

なお、欠損が推定されるコードは、リスク平均値が最大のものを出力する例を示したがこれに限るものではない。リスク平均値が大きい上位数行のコードを欠損が推定されるコードとして出力しても良い。またリスク平均値ではなく、合計値が最も大きいコード、または合計値が大きい上位数行のコードを欠損が推定されるコードとして出力しても良い。これにより、修正したプログラムの欠損した箇所を推定することが可能となる。また修正プログラム及びミュータント双方の相関により精度良くコードの欠損箇所を推定する事ができる。またパラメータとして平均失敗数を利用することでより精度を向上させることができる。   In addition, although the example which outputs the code | cord | chord with the largest risk average value was shown for the code | symbol with which a loss is estimated, it is not restricted to this. You may output the code | cord | chord of the high-order several lines with a large average risk value as a code | symbol from which a defect | deletion is estimated. Further, instead of the risk average value, the code having the largest total value or the code of the top several lines having the largest total value may be output as the code for which the loss is estimated. As a result, it is possible to estimate the missing part of the modified program. Moreover, it is possible to accurately estimate the missing portion of the code by the correlation between the correction program and the mutant. Further, the accuracy can be improved by using the average number of failures as a parameter.

実施の形態2
図9は上述した形態のコンピュータ1の動作を示す機能ブロック図である。CPU11が制御プログラム15Pを実行することにより、コンピュータ1は以下のように動作する。第1取得部91は、元のプログラムを修正した修正プログラムに対し、複数のテストを実行することにより第1テスト結果を取得する。第2取得部92は、前記元のプログラムに基づき生成したミュータントに対し、前記複数のテストを実行することにより、第2テスト結果を取得する。出力部93は、前記第2テスト結果の内失敗したテストと前記第1テスト結果との相関に基づき、前記修正プログラムの欠損が推定されるコードを出力する。
Embodiment 2
FIG. 9 is a functional block diagram showing the operation of the computer 1 of the above-described form. When the CPU 11 executes the control program 15P, the computer 1 operates as follows. The 1st acquisition part 91 acquires a 1st test result by performing a plurality of tests with respect to a correction program which corrected an original program. The second acquisition unit 92 acquires the second test result by executing the plurality of tests on the mutant generated based on the original program. The output unit 93 outputs a code in which a defect of the correction program is estimated based on the correlation between the failed test of the second test results and the first test result.

図10は実施の形態2に係るコンピュータ1のハードウェア群を示すブロック図である。コンピュータ1を動作させるためのプログラムは、ディスクドライブ等の読み取り部10AにCD-ROM、DVD(Digital Versatile Disc)ディスク、メモリーカード、またはUSB(Universal Serial Bus)メモリ等の可搬型記録媒体1Aを読み取らせて記憶部15に記憶しても良い。また当該プログラムを記憶したフラッシュメモリ等の半導体メモリ1Bをコンピュータ1内に実装しても良い。さらに、当該プログラムは、インターネット等の通信網Nを介して接続される他のサーバコンピュータ(図示せず)からダウンロードすることも可能である。以下に、その内容を説明する。   FIG. 10 is a block diagram illustrating a hardware group of the computer 1 according to the second embodiment. A program for operating the computer 1 reads a portable recording medium 1A such as a CD-ROM, a DVD (Digital Versatile Disc) disk, a memory card, or a USB (Universal Serial Bus) memory into a reading unit 10A such as a disk drive. It may be stored in the storage unit 15. Further, a semiconductor memory 1B such as a flash memory storing the program may be mounted in the computer 1. Further, the program can be downloaded from another server computer (not shown) connected via a communication network N such as the Internet. The contents will be described below.

図10に示すコンピュータ1は、上述した各種ソフトウェア処理を実行するプログラムを、可搬型記録媒体1Aまたは半導体メモリ1Bから読み取り、或いは、通信網Nを介して他のサーバコンピュータ(図示せず)からダウンロードする。当該プログラムは、制御プログラム15Pとしてインストールされ、RAM12にロードして実行される。これにより、上述したコンピュータ1として機能する。   The computer 1 shown in FIG. 10 reads the program for executing the above-described various software processes from the portable recording medium 1A or the semiconductor memory 1B or downloads it from another server computer (not shown) via the communication network N. To do. The program is installed as the control program 15P, loaded into the RAM 12, and executed. Thereby, it functions as the computer 1 described above.

本実施の形態2は以上の如きであり、その他は実施の形態1から5と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。   The second embodiment is as described above, and the others are the same as those of the first to fifth embodiments. Therefore, the corresponding parts are denoted by the same reference numerals and detailed description thereof is omitted.

以上の実施の形態1及び2を含む実施形態に関し、さらに以下の付記を開示する。   With respect to the embodiments including the first and second embodiments, the following additional notes are disclosed.

(付記1)
コンピュータに、
元のプログラムを修正した修正プログラムに対し、複数のテストを実行することにより第1テスト結果を取得し、
前記元のプログラムに基づき生成したミュータントに対し、前記複数のテストを実行することにより、第2テスト結果を取得し、
前記第2テスト結果の内失敗したテストと前記第1テスト結果との相関に基づき、前記修正プログラムの欠損が推定されるコードを出力する
処理を実行させるプログラム。
(付記2)
ミュータントに対するテストに失敗し、かつ、修正プログラムに対する前記テストに成功した成功数を計数し、
ミュータントに対するテストに失敗し、かつ、修正プログラムに対する前記テストに失敗した失敗数を計数し、
前記成功数及び失敗数の大小関係に基づき、欠損が推定されるコードを出力する
付記1に記載のプログラム。
(付記3)
前記プログラムのコード毎に、複数のミュータントを生成し、
ミュータント毎に前記複数のテストを実行することにより、第2テスト結果を取得する
付記2に記載のプログラム。
(付記4)
計数した各ミュータントの失敗数に基づき平均失敗数を算出し、
計数した各ミュータントの成功数と、失敗数に前記平均失敗数を加算した和との大小関係に基づき、欠損が推定されるコードを出力する
付記3に記載のプログラム。
(付記5)
前記成功数よりも前記和が大きい場合に、失敗数を抽出し、
コード毎に、抽出した失敗数の平均値を算出し、
算出した平均値に基づき、欠損が推定されるコードを出力する
付記4に記載のプログラム。
(付記6)
元のプログラムを修正した修正プログラムに対し、複数のテストを実行することにより第1テスト結果を取得する第1取得部と、
前記元のプログラムに基づき生成したミュータントに対し、前記複数のテストを実行することにより、第2テスト結果を取得する第2取得部と、
前記第2テスト結果の内失敗したテストと前記第1テスト結果との相関に基づき、前記修正プログラムの欠損が推定されるコードを出力する出力部と
を備える情報処理装置。
(付記7)
元のプログラムを修正した修正プログラムに対し、複数のテストを実行することにより第1テスト結果を取得し、
前記元のプログラムに基づき生成したミュータントに対し、前記複数のテストを実行することにより、第2テスト結果を取得し、
前記第2テスト結果の内失敗したテストと前記第1テスト結果との相関に基づき、前記修正プログラムの欠損が推定されるコードを出力する
コンピュータを用いた情報処理方法。
(Appendix 1)
On the computer,
The first test result is obtained by executing a plurality of tests on the modified program obtained by modifying the original program,
A second test result is obtained by executing the plurality of tests on the mutant generated based on the original program,
A program for executing a process of outputting a code in which a deficiency of the correction program is estimated based on a correlation between a failed test among the second test results and the first test result.
(Appendix 2)
Count the number of successes that failed the test against the mutant and succeeded in the test against the modification program,
Count the number of failures that failed the test against the mutant and failed the test against the modification program,
The program according to appendix 1, wherein a code that estimates a deficiency is output based on the magnitude relationship between the number of successes and the number of failures.
(Appendix 3)
A plurality of mutants are generated for each code of the program,
The program according to appendix 2, wherein the second test result is obtained by executing the plurality of tests for each mutant.
(Appendix 4)
Calculate the average number of failures based on the number of failures of each mutant counted,
The program according to claim 3, wherein a code that estimates a deficiency is output based on a magnitude relationship between the counted number of successes of each mutant and the sum of the number of failures plus the average number of failures.
(Appendix 5)
If the sum is greater than the success number, extract the failure number;
Calculate the average number of failures extracted for each code,
The program according to appendix 4, which outputs a code for which a loss is estimated based on the calculated average value.
(Appendix 6)
A first acquisition unit that acquires a first test result by executing a plurality of tests on a correction program obtained by correcting the original program;
A second acquisition unit that acquires a second test result by executing the plurality of tests on the mutant generated based on the original program;
An information processing apparatus comprising: an output unit that outputs a code for which a deficiency of the correction program is estimated based on a correlation between a failed test of the second test results and the first test result.
(Appendix 7)
The first test result is obtained by executing a plurality of tests on the modified program obtained by modifying the original program,
A second test result is obtained by executing the plurality of tests on the mutant generated based on the original program,
An information processing method using a computer that outputs a code in which a deficiency of the correction program is estimated based on a correlation between a failed test of the second test results and the first test result.

1 コンピュータ
1A 可搬型記録媒体
1B 半導体メモリ
10A 読み取り部
11 CPU
12 RAM
13 入力部
14 表示部
15 記憶部
15P 制御プログラム
16 通信部
151 テストスイートDB
152 修正プログラム実行結果DB
153 ミュータントオペレータDB
154 ミュータントDB
155 実行結果DB
91 第1取得部
92 第2取得部
93 出力部
N 通信網
DESCRIPTION OF SYMBOLS 1 Computer 1A Portable recording medium 1B Semiconductor memory 10A Reading part 11 CPU
12 RAM
13 Input unit 14 Display unit 15 Storage unit 15P Control program 16 Communication unit 151 Test suite DB
152 Correction program execution result DB
153 Mutant Operator DB
154 Mutant DB
155 Execution result DB
91 first acquisition unit 92 second acquisition unit 93 output unit N communication network

Claims (5)

コンピュータに、
元のプログラムを修正した修正プログラムに対し、複数のテストを実行することにより第1テスト結果を取得し、
前記元のプログラムに基づき生成したミュータントに対し、前記複数のテストを実行することにより、第2テスト結果を取得し、
前記第2テスト結果の内失敗したテストと前記第1テスト結果との相関に基づき、前記修正プログラムの欠損が推定されるコードを出力する
処理を実行させるプログラム。
On the computer,
The first test result is obtained by executing a plurality of tests on the modified program obtained by modifying the original program,
A second test result is obtained by executing the plurality of tests on the mutant generated based on the original program,
A program for executing a process of outputting a code in which a deficiency of the correction program is estimated based on a correlation between a failed test among the second test results and the first test result.
ミュータントに対するテストに失敗し、かつ、修正プログラムに対する前記テストに成功した成功数を計数し、
ミュータントに対するテストに失敗し、かつ、修正プログラムに対する前記テストに失敗した失敗数を計数し、
前記成功数及び失敗数の大小関係に基づき、欠損が推定されるコードを出力する
請求項1に記載のプログラム。
Count the number of successes that failed the test against the mutant and succeeded in the test against the modification program,
Count the number of failures that failed the test against the mutant and failed the test against the modification program,
The program according to claim 1, wherein a code in which a deficiency is estimated is output based on a magnitude relationship between the success number and the failure number.
前記プログラムのコード毎に、複数のミュータントを生成し、
ミュータント毎に前記複数のテストを実行することにより、第2テスト結果を取得する
請求項2に記載のプログラム。
A plurality of mutants are generated for each code of the program,
The program according to claim 2, wherein the second test result is obtained by executing the plurality of tests for each mutant.
元のプログラムを修正した修正プログラムに対し、複数のテストを実行することにより第1テスト結果を取得する第1取得部と、
前記元のプログラムに基づき生成したミュータントに対し、前記複数のテストを実行することにより、第2テスト結果を取得する第2取得部と、
前記第2テスト結果の内失敗したテストと前記第1テスト結果との相関に基づき、前記修正プログラムの欠損が推定されるコードを出力する出力部と
を備える情報処理装置。
A first acquisition unit that acquires a first test result by executing a plurality of tests on a correction program obtained by correcting the original program;
A second acquisition unit that acquires a second test result by executing the plurality of tests on the mutant generated based on the original program;
An information processing apparatus comprising: an output unit that outputs a code for which a deficiency of the correction program is estimated based on a correlation between a failed test of the second test results and the first test result.
元のプログラムを修正した修正プログラムに対し、複数のテストを実行することにより第1テスト結果を取得し、
前記元のプログラムに基づき生成したミュータントに対し、前記複数のテストを実行することにより、第2テスト結果を取得し、
前記第2テスト結果の内失敗したテストと前記第1テスト結果との相関に基づき、前記修正プログラムの欠損が推定されるコードを出力する
コンピュータを用いた情報処理方法。
The first test result is obtained by executing a plurality of tests on the modified program obtained by modifying the original program,
A second test result is obtained by executing the plurality of tests on the mutant generated based on the original program,
An information processing method using a computer that outputs a code in which a deficiency of the correction program is estimated based on a correlation between a failed test of the second test results and the first test result.
JP2014247774A 2014-12-08 2014-12-08 Program, information processing apparatus and information processing method Expired - Fee Related JP6365276B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014247774A JP6365276B2 (en) 2014-12-08 2014-12-08 Program, information processing apparatus and information processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014247774A JP6365276B2 (en) 2014-12-08 2014-12-08 Program, information processing apparatus and information processing method

Publications (2)

Publication Number Publication Date
JP2016110419A JP2016110419A (en) 2016-06-20
JP6365276B2 true JP6365276B2 (en) 2018-08-01

Family

ID=56124324

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014247774A Expired - Fee Related JP6365276B2 (en) 2014-12-08 2014-12-08 Program, information processing apparatus and information processing method

Country Status (1)

Country Link
JP (1) JP6365276B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6748357B2 (en) * 2016-09-23 2020-09-02 富士通株式会社 Analysis device, analysis program, and analysis method

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014126900A (en) * 2012-12-25 2014-07-07 Nec Corp Program analysis device, program analysis method, and program analysis program

Also Published As

Publication number Publication date
JP2016110419A (en) 2016-06-20

Similar Documents

Publication Publication Date Title
US20140113257A1 (en) Automated evaluation of programming code
Heydt Python Web Scraping Cookbook: Over 90 proven recipes to get you scraping with Python, microservices, Docker, and AWS
US20220358269A1 (en) Simulation execution system, simulation execution method, and computer readable medium
JP2016099857A (en) Fraudulent program handling system and fraudulent program handling method
US9477582B2 (en) Executable software specification generation
JP2013156811A (en) Specification document check method, program, and system
CN107357588B (en) Object code generation method and device
Mohd-Shafie et al. Model-based test case prioritization using selective and even-spread count-based methods with scrutinized ordering criterion
JP6365276B2 (en) Program, information processing apparatus and information processing method
US9501390B1 (en) Enhancing automated mobile application testing
CN108196975B (en) Data verification method and device based on multiple checksums and storage medium
Borg Embrace your issues: compassing the software engineering landscape using bug reports
CN103634366A (en) Method and device for identifying network robot
JP6451417B2 (en) Debug support device, debug support system, debug support method, and debug support program
Nabuco et al. Inferring user interface patterns from execution traces of web applications
Nijhawan et al. An SRGM for multi-release open source software system
JP6740912B2 (en) Data compression device, data compression program, data compression method and program
JP6547345B2 (en) Test case generation program, test case generation method and test case generation apparatus
Ben Charrada et al. An automated hint generation approach for supporting the evolution of requirements specifications
JP2007226526A (en) Information processor, information processing method, program and storage medium
JP2021103354A (en) Program testing method
CN113051153A (en) Application software vulnerability scanning method and related equipment
JP2015069332A (en) Object range extractor, static verification system, object range extraction method, and object range extraction program for extracting object range to be subjected to static verification by static verification device
CN110045985B (en) Targetlink model calibration parameter setting method, device, equipment and medium
CN111522737B (en) Automatic test verification method and device for front-end interface and storage medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180419

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180515

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180618

R150 Certificate of patent or registration of utility model

Ref document number: 6365276

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees