CN102782649A - 应用程序修改部分搜索装置和应用程序修改部分搜索方法 - Google Patents
应用程序修改部分搜索装置和应用程序修改部分搜索方法 Download PDFInfo
- Publication number
- CN102782649A CN102782649A CN201180012313.3A CN201180012313A CN102782649A CN 102782649 A CN102782649 A CN 102782649A CN 201180012313 A CN201180012313 A CN 201180012313A CN 102782649 A CN102782649 A CN 102782649A
- Authority
- CN
- China
- Prior art keywords
- parameter
- candidate
- daily
- daily record
- application
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/368—Test management for test version control, e.g. updating test cases to a new software version
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
所公开的应用程序修改部分搜索装置设有测试执行单元和结果处理单元,测试执行单元用于当基于已输入的参数对应用程序执行穷尽测试时创建多个日志,结果处理单元用于基于多个日志创建点候选报告。多个日志中的每一个示出了当穷尽测试被执行时调用的多个方法中指定该参数作为自变量的方法的调用栈。调用栈额外示出了已定义了方法的调用的应用程序中的位置。点候选报告示出了在应用程序内的点中当通过参数执行处理切换时对其来说修改是必要的点的候选。
Description
技术领域
本发明涉及一种应用程序修改部分(application modification portion)搜索装置和一种应用程序修改部分搜索方法,具体地,涉及用于应用程序定制的应用程序修改部分搜索装置和应用程序修改部分搜索方法。
背景技术
希望简化定制应用程序的过程。日本专利公报(JP-P2007-122670A)公开了一种表单(form)生成系统,其能够定制任意功能和信息而显著地减少与表单定制相关的用户工作负荷,并能够遵循版本升级。
该表单生成系统使用了软件包用于表单生成。表单生成系统包括保留部分、新部分和输出部分。保留部分将输出表单的定制信息保留为软件包的差异信息。当修改软件包时,更新部分反映被保留在被修改软件包上保留部分内的定制信息。当修改软件包时,输出部分输出定制表单,其上反映了由于定制信息产生的修改。
也就是说,当通过版本升级来修改应用程序时,根据日本专利公报(JP-P2007-122670A)的版本升级功能执行将软件包的修改部分应用于定制表单的处理。另外,将定制信息保存在定制信息文件中。将定制差异信息保存在定制差异信息文件中。
日本专利公报(JP-P2008-310679A)公开了一种动态设计信息生成设备,其能够甚至在规范等不完全时动态生成动态设计信息。动态设计信息生成设备包括程序分析部分、信息增加部分、程序执行部分和设计信息生成部分。程序分析部分分析程序的结构。信息增加部分参考由程序分析部分所分析的程序并将用于生成程序的执行顺序信息的信息增加到程序。程序执行部分依照预定执行环境执行增加了信息的程序。根据通过程序执行部分执行程序所获得的程序的执行顺序信息来生成动态设计信息。
日本专利公报(JP-P2007-213487A)公开了一种方面(aspect)生成设备,其能够轻松地生成将被并入程序假定位置的方面,作为使用面向方面编程的应用开发中的整合目标。
方面生成设备生成了方面,方面是对作为开发目标的程序中使用的类(class)公用的处理。方面生成设备包括类信息分析部分、建议分析部分、用户接口管理部分和方面生成部分。
类信息分析部分从第一存储部分中读出用于程序中作为开发目标的类文件,并分析所述类文件中每一个类的结构。随后,所述部分获取用于每个类中的类名、方法名和签名,并基于获取的类名、方法名和签名生成在将生成的方面中定义的类名、方法名和签名的候选。
建议分析部分从第二存储部分读出由将要被删除的方面提供的建议的候选用作公共处理,并分析建议的候选的数据结构。
基于类信息分析部分的类结构的分析结果,用户接口管理部分使得图形用户界面屏幕显示示出了用于程序中作为开发目标的类的类名、方法名和签名的类图以及由建议分析部分所分析的建议的候选。
当由用户从被显示在图形用户界面屏幕上的建议的候选中选择的任意图标被拖到类图中的任意类的位置时,方面生成部分显示由类信息分析部分所生成的并能够在所述类中被选择的类名、方法名和签名的候选。随后,所述部分通过将由用户所选择的类名、方法名和签名的候选的数据应用于由用户所选择的建议候选的数据结构来生成方面。
日本专利公报(JP-P2007-213498A)公开了一种方面显示系统,其能够基于建议的方面和指定的点切除把将被并入的方面的处理显示在目标程序处理的源代码的圆周上,并能够轻松地追踪其中并入了该方面的程序的最终处理的整个流程。
方面显示系统把将被并入计算机程序中的方面显示在计算机程序的源代码中。方面显示系统包括读出部分、代码分析部分、方面分析部分和显示控制部分。
读出部分读出计算机程序的源代码和已编译的可执行代码,以及根据面向方面编程的方面程序的源代码和已编译的可执行代码。
代码分析部分分析计算机程序的已编译可执行代码以获取用于识别属于计算机程序的过程定义的信息,以及计算机程序的对应于所述过程定义的开始命令和结束命令的开始源代码行和结束源代码行,并将它们存入存储部分。
方面分析部分分析方面程序的已编译可执行代码。随后,所述部分基于用于识别属于方面程序的整合部分定义和在整合部分定义中定义的字符串的信息来检测整合目标过程的信息。随后,所述部分获取用于识别与整合部分定义相关联的整合过程定义的信息,以及方面程序的对应于整合过程的开始命令和结束命令的开始源代码行和结束源代码行。
显示控制部分选择计算机程序的源代码并搜索与识别属于所选计算机程序的过程定义的信息一致的整合目标过程的信息。随后,所述部分获取用于识别与用于识别所述一致整合目标过程所属于的整合部分定义的信息相关联的整合过程定义的信息。随后,所述部分通过插入或替换将在整合过程定义的开始源代码行和结束源代码行之间的整合处理显示在属于所述对应计算机程序的过程定义的开始源代码行和结束源代码行的圆周上。
引用文献列表
专利文献
专利文献1:日本专利公报(JP-P2007-122670A)
专利文献2:日本专利公报(JP-P2008-310679A)
专利文献3:日本专利公报(JP-P2007-213487A)
专利文献4:日本专利公报(JP-P2007-213498A)
发明内容
对于相关应用程序定制,提出了一种程序修改部分的应用程序,如通过修改程序部分实现定制操作的版本升级功能。另一方面,未提出对用于判断程序的哪一部分应被修改以定制程序的支持。因此,存在用于定制的必需的程序开发困难的问题。
本发明的示例性目的是提供一种简化用于现有应用程序的定制过程的应用程序修改部分搜索装置和应用程序修改部分搜索方法。
根据本发明的应用程序修改部分搜索装置包括:测试执行部分,该测试执行部分在基于输入参数对应用程序执行覆盖测试时生成多个日志;以及结果处理部分,该结果处理部分基于多个日志生成点候选报告。多个日志分别指示了在覆盖测试执行期间被调用的多个方法中将参数指定为自变量的方法的调用栈(call stack)。该调用栈指示在其中定义了方法的调用的应用程序上的位置。点候选报告指示了在应用程序中点的候选,当基于参数执行处理的调度时,对于该点的候选来说修改是必要的。
根据本发明的应用程序修改部分搜索方法包括:在基于输入参数对应用程序执行覆盖测试时生成多个日志的步骤;基于所述多个日志生成点候选报告的步骤;以及基于所述点候选报告定制应用程序的步骤。多个日志分别指示了在覆盖测试执行期间被调用的多个方法中将参数指示为自变量的方法的调用栈。该调用栈指示在其中定义了方法的调用的应用程序上的位置。点候选报告指示了在应用程序中点的候选,当基于参数执行处理调度时,对于该点的候选来说修改是必要的。
根据本发明的应用程序修改部分搜索装置和应用程序修改部分搜索方法,用户能够参考应用程序中对其来说修改是必要的点的候选,并且因此能够轻松地定制应用程序。
附图说明
结合附图和对示例性实施例的说明,本发明的上述目的、优势和特征将更加明显,其中:
图1是示出了根据本发明的应用程序修改部分搜索装置的方框图;
图2是示出了根据本发明的应用程序修改部分搜索方法的流程图;
图3是示出了输入输出验证部分的操作的流程图;
图4是示出了结果处理部分的操作的流程图;
图5示出了参数定义的示例;
图6示出了方面定义的示例;
图7示出了操作日志的示例;
图8示出了步骤A300的处理结果的一部分;
图9示出了步骤A300的处理结果的另一部分;
图10示出了步骤A301的处理结果;
图11示出了步骤A302到A305的处理结果;
图12示出了步骤A306到A308的处理结果;以及
图13示出了点候选报告。
具体实施方式
下面将参照附图来说明根据本发明的应用程序修改部分搜索装置的示例性实施例。然而,这些示例性实施例并不限制本发明的技术范围。如图1所示,应用程序修改部分搜索装置包括测试执行部分100和结果处理部分200。测试执行部分100是应用程序121操作的基本环境。结果处理部分200处理输出自测试执行部分100的操作日志,并生成点候选报告。
测试执行部分100包括方面处理部分110、执行引擎部分120、输入输出验证部分130和日志提取部分140。方面处理部分110具有将用于输出操作日志的处理插入应用程序121中的功能。执行引擎部分120具有执行应用程序121的功能。而且,执行引擎部分120通过使用测试程序310执行应用程序121的逻辑的覆盖测试。根据本发明的应用程序修改部分搜索装置包括输入装置(未图示)。根据本发明的应用程序修改部分搜索装置通过输入装置输入应用程序121和测试程序310。覆盖测试(coverage test)是指以一条件作为输入的测试,在该条件下在应用程序121中实现的逻辑被彻底地(无遗漏地)执行。通常将覆盖测试准备为单元测试,与应用程序121一起实现。输入输出验证部分130具有判断发生在应用程序121中的方法调用的自变量是否与参数列表300匹配的功能。日志提取部分140具有以调用栈(调用路径)的形式输出发生在应用程序121中的方法调用的功能。
方面处理部分110包括方面生成部分111和方面应用部分112。方面生成部分111具有生成方面形式的逻辑的功能,其判断发生在应用程序121中的方法调用的自变量是否与在参数列表300中定义的参数组匹配。根据本发明的应用程序修改部分搜索装置通过输入装置输入参数列表300。方面应用部分112具有将由方面生成部分111所生成的方面应用于应用程序121的功能。
结果处理部分200包括处理栈分析部分210和报告生成部分220。处理栈分析部分210具有分析由日志提取部分140所输出的多个调用栈和合并多个调用栈的功能。报告生成部分220具有基于被合并的多个调用栈生成修改点候选报告330的功能。修改点候选报告330指示了由处理栈分析部分210所合并的处理调用栈,其作为修改部分的候选。结果处理部分200还包括输出装置(未图示)。输出装置显示修改点候选报告330。
图2示出了根据本发明的应用程序修改部分搜索方法。首先,用户生成参数定义并基于参数定义生成参数列表300。用户使得方面处理部分110通过输入装置输入参数列表300(步骤A101)。在参数列表300中所述的参数是用于识别定制目标的ID,其由文件名、URL和数据库名例示。
方面生成部分111从输入的参数列表300生成方面定义(步骤A102)。这里,生成的方面定义用来检查参数是否是作为在应用程序中每一个方法调用的自变量出现。使用比较定义在参数列表300中的参数组和关于每一个方法调用的方法的自变量的处理来实现方面定义。
方面应用部分112将由方面生成部分111所生成的方面定义应用到应用程序121(步骤A103)。由于应用过程,对在方面定义中定义的参数和方法的自变量的检查在该应用程序121中每一个方法调用的定时被执行。
执行引擎部分120通过使用测试程序310执行应用程序121的逻辑的覆盖测试(步骤A104)。覆盖测试是指以一条件作为输入的测试,在该条件下在应用程序121中实现的逻辑被彻底地执行。一般将覆盖测试准备为单元测试,与应用程序121一起实现。测试执行部分100进一步执行在步骤A104执行时由方面生成部分111所生成的方面定义中定义的处理。作为在方面定义中定义的处理的执行结果,生成操作日志。
结果处理部分200合并在步骤A104中生成的操作日志(步骤A105)。结果处理部分200将被合并的操作日志输出为修改点候选报告330(步骤A106)。修改点候选报告330指示了在应用程序源代码上的部分的位置,该部分中定义了调用特定输入参数的方法。也就是说,被包括在修改点候选报告330中的信息是参数标识符、方法名、以及定义了相应方法的应用程序源代码的行数。
图3示出了由方面生成部分111所生成的方面定义中定义的处理。在步骤A104执行期间每次当调用应用程序121的方法时,执行所述处理。输入输出验证部分130首先在当调用应用程序121的方法时将指示了在处理中的参数列表300中参数索引的m重置为0(步骤A201)。接下来,输入输出验证部分130评估m是否大于在参数列表300中定义的参数数量(步骤A202)。当步骤A202的评估为真时,即当m大于参数数量时(在步骤A202处为“是”),输入输出验证部分130结束所述处理。
当步骤A202的评估为假时,即当m不大于参数数量时(在步骤A202处为“否”),输入输出验证部分130将指示了在处理中方法自变量的索引(顺序)的n重置为0(步骤A203)。接下来,输入输出验证部分130评估n是否大于在处理中的方法中定义的自变量数量(步骤A204)。当步骤A204的评估为真时,即当n大于自变量数量时(在步骤A204处为“是”),输入输出验证部分130将m增加1(步骤A205)并返回到步骤A202的处理。
当步骤A204的评估为假时,即当n不大于自变量数量时(在步骤A204处为“否”),输入输出验证部分130评估第n个方法的自变量是否与参数列表300中的第m个值相同(步骤A206)。当步骤A206的评估为真时,即,当第n个方法的自变量与第m个值相同时(在步骤A206处为“是”),输入输出验证部分130在相应方法被调用的时刻将调用栈输出到操作日志(步骤A207)。在参数定义中被匹配的参数、指示被匹配方法的调用顺序的调用栈信息、以及关于源代码的被匹配方法的位置(行数量)被记录在操作日志中以被输出。
当步骤A206的评估为假时,即当第n个方法的自变量与第m个值不同时(在步骤A206处为“否”)或者在步骤A207之后,输入输出验证部分130将n增加1(步骤A208)并返回到步骤A204的处理。
图4示出了步骤A105的操作。首先,处理栈分析部分210将针对每一个参数在步骤A207中输出的操作日志划分为比较目标(步骤A300)。接下来,处理栈分析部分210将每一个参数的操作日志集以调用栈深度的升序分类(步骤A301)。例如,当存在调用栈D100(方法A→方法B→方法C→方法D)和调用栈D101(方法A→方法B→方法C)时,处理栈分析部分210以顺序(调用栈D101→调用栈D100)对调用栈D100和D101分类,因为调用栈D101的深度较浅。
接下来,处理栈分析部分210将预定处理重复与在步骤A301中被分类的列表的入口(entry)数量相同的次数(步骤A302)。
接下来,处理栈分析部分210将预定处理重复与调用栈的入口(b)数量相同的次数,入口(b)具有与在处理中的入口(a)的调用栈相同的深度(步骤A303)。
接下来,处理栈分析部分210评估入口(a)的调用栈是否与入口(b)的调用栈相同(步骤A304)。当步骤A304的评估为真时,即当入口(a)的调用栈与入口(b)的调用栈相同时(在步骤A304处为“是”),处理栈分析部分210从操作日志中删除入口(b)(步骤A305)。
当步骤A304的评估为假时,即当入口(a)的调用栈与入口(b)的调用栈不同时(在步骤A304处为“否”),或者在步骤A305的处理结束之后,处理栈分析部分210继续步骤A303的循环。也就是说,处理栈分析部分210对具有与在处理中的入口(a)的调用栈相同深度的调用栈的每一个入口(b)执行步骤A304和步骤A305的处理。
接下来,处理栈分析部分210将预定处理重复与具有深度为(在处理中的入口(a)的调用栈深度-1)的调用栈的入口(c)数量相同的次数(步骤A303)。
处理栈分析部分210评估入口(c)的调用栈是否被包括在入口(a)的调用栈中(步骤A307)。当步骤A307的评估为真,即当入口(c)的调用栈被包括在入口(a)的调用栈中时(在步骤A307处为“是”),处理栈分析部分210从操作日志中删除入口(c)(步骤A308)。
当步骤A307的评估为假,即当入口(c)的调用栈不被包括在入口(a)的调用栈中时(在步骤A307处为“否”),或者在步骤A308的处理结束之后,处理栈分析部分210继续步骤A306的循环。也就是说,处理栈分析部分210对具有深度等于(在处理中的入口(a)的调用栈深度-1)的调用栈的每一个入口(c)执行步骤A307和步骤A308的处理。
在步骤A306的循环结束之后,处理栈分析部分210继续步骤A302的循环。也就是说,处理栈分析部分210对在步骤A301中分类的列表的每一个入口执行步骤A303到A308的处理。
通过执行上述操作,根据本发明的应用修改部分搜索装置能够自动地查找用于定制应用程序所必须的处理的修改候选部分。另外,应用程序开发者不需要理解整个应用程序源代码,并且能够通过参考点候选报告330得知在定制应用程序121中修改是必要的源代码上的部分,据此能够轻松定制应用程序121。
根据本发明的应用程序修改部分搜索装置使用方面技术通过嵌入方法自变量的比较性逻辑和参数生成了用于查找对于定制应用程序121所必须的处理的修改候选部分的日志。因此,根据本发明的应用程序修改部分搜索装置能够达到如上所述的全面搜索而不需要另外在应用程序121中实现特殊逻辑,并且能够防止应用程序121的源代码污染。
当修改候选部分包括相同调用栈时,根据本发明的应用程序修改部分搜索装置采用具有最浅处理调用栈的修改候选部分,并排除重叠的修改候选部分的信息。因此,冗余修改候选部分的信息未被包括在获得的修改候选部分的报告中,且避免了定制处理被双重并入等问题。
另外,根据本发明的应用程序修改部分搜索装置能够在单元测试和合并测试(其通常针对应用程序执行)期间查找源代码上对其来说修改是必要的部分。结果,根据本发明的应用程序修改部分搜索装置能够以低成本定制应用程序,因为开发处理不需要被改变也不需要被扩展。
[示例]
本示例示出了在由应用程序开发者生成预定参数列表以及测试执行部分100输出预定操作日志情况中的操作。
图5示出了参数列表。参数列表示出了参数E100和参数E101。参数E100指示作为数据库的连接目的地的“dataSource”将在定制中被修改。参数E101指示作为设置文件路径的“setting.properties”将在定制中被修改。方面生成部分111基于参数定义生成了方面定义。
图6示出了方面定义。方面定义使用AspectJ作为方面实现。方面定义实现了图3中的流程图。方面定义是由包括行F100到行F104的多个行组成。行F100指示了指示每一个方法调用的中断的定义。行F101定义了由“checkParameter”所定义的处理在由行F100所定义的时间处被执行。行F102表示行F103以及此后的行的处理被重复与图5中定义的参数的数量相同的次数。行F103表示行F104以及此后的行的处理被重复与作为检查目标的方法的自变量数量相同的次数。行F104表示对作为检查目标的参数和作为检查目标的方法自变量是否是相同的值进行检查并且在相同值的情况中处理调用栈被输出到操作日志。
接下来,方面生成部件111将以上述方式生成的图6中的方面定义输出到方面应用部分112。接下来,方面应用部分112将图6中的方面定义应用到执行引擎部分120,并应用到应用程序121。应用方法取决于执行引擎,并且未在本发明中定义。例如,当Java和AspectJ被用作执行引擎时,通过使用Java的代理功能附加了被称为加载时编织器(Load Time Weaver)的AspectJ工具,以应用所述方面。
接下来,执行引擎部分120执行测试程序310以执行用于应用程序121的覆盖测试。测试程序310使用了在图5中参数列表中定义的参数。也就是说,其被作为数据库连接到连接目的地“dataSource”并且“setting.properties”被用作为设置文件。在覆盖测试期间,每次当被包括在应用程序121中的方法调用发生时,被定义在图6的方面定义中的检查处理进行操作。也就是说,输入输出验证部分130检测方法调用。日志提取部分140基于由输入输出验证部分130所检测的方法调用来生成操作日志。
图7示出自从日志提取部分140中输出的操作日志的示例。操作日志由多个入口G100到G104构成。入口G100指示了图5的参数定义的参数E100的参数值“dataSource”表现为类“A”的方法“二(two)”的自变量。入口G100也指示了类“应用程序(Application)”的“主要(main)”方法,类“A”的“一(one)”方法和类“A”的“二(two)”方法按此顺序被调用为引导到类“A”的方法“二(two)”的调用栈。在每一个入口的右边的圆括号示出了在其中定义了相应方法的源代码上的位置,即源代码的文件和行数量。也就是说,入口G100指示了类“A”的方法“二(two)”被定义在源代码“A.java”的第150行中。
入口G101指示了图5的参数定义的参数E100的参数值“dataSource”表现为类“A”的方法“二(two)”的自变量。入口G102指示了图5的参数定义的参数E100的参数值“dataSource”表现为类“A”的方法“三(three)”的自变量。入口G103指示了图5的参数定义的参数E100的参数值“dataSource”表现为类“A”的方法“四(four)”的自变量。入口G104指示了图5的参数定义的参数E100的参数值“setting.properties”表现为类“A”的方法“五(five)”的自变量。
在图4中的步骤A300的处理中,处理栈分析部分210将图7中的操作日志划分成数量与作为由参数定义所定义的参数的数量相同的数据片段。
图8示出了对应于被划分的多个数据片段之间的参数E100的数据。数据由入口G100、入口G101、入口G102和入口G103构成。在图7所示的多个入口中,入口G100到G103分别指示了指示参数E100的参数值出现的入口。也就是说,入口G100对应于图7所示的入口G100。入口G101对应于图7所示的入口G101。入口G102对应于图7所示的入口G102。入口G103对应于图7所示的入口G103。
图9示出了对应于被划分的多个数据片段之间的参数E101的数据。数据由入口G104构成。在图7所示的多个入口中,入口G104指示了指示参数E101的参数值出现的入口。也就是说,入口G104对应于图7所示的入口G104。
在图4的步骤S301的处理中,处理栈分析部分210将图8中的数据的入口分类并将图9中数据的入口分类。
图10示出了通过将图8中数据的入口G100到G103分类所生成的数据。数据由入口G100、入口G101、入口G103和入口G102构成。数据示出:入口G100的下一个是入口G101,入口G101的下一个是入口G103,入口G103的下一个是入口G102。由于入口G100的调用栈的深度是三,入口G101的调用栈的深度是三,入口G102的调用栈的深度是四,入口G103的调用栈的深度是三,因此数据示出:入口G100、入口G101、入口G103和入口G102被以深度的升序分类。也就是说,数据示出图8中数据的入口G102和入口G103的顺序互换。
图9的数据由单个入口G104构成,并且因此在图4的步骤A301的处理中未被改变以保留图9中所示的数据。
在图4的步骤A303到A305的处理中,处理栈分析部分210从图10的数据入口中删除了预定入口并从图9的数据入口中删除了预定入口。
图11示出了通过从图10的数据中删除预定入口所生成的数据。数据由入口G100、入口G103和入口G102构成。由于图10的数据的入口G100和G101的调用栈相同,因此数据示出了从图10的数据中删除入口G101所生成的数据。
图9的数据由单个入口G104构成,并且因此在图4的步骤A303到A305的处理中未删除入口从而使数据保留为如图9所示。
在图4的步骤A306到A308的处理中,处理栈分析部分210从图11的数据入口中删除了预定入口并从图9的数据入口中删除了预定入口。
图12示出了通过从图11的数据入口中删除预定入口所生成的数据。数据由入口G100和入口G103构成。由于图11的数据的入口G103的调用栈被包括在入口G102的调用栈中,因此数据示出了通过从图11的数据中删除入口G102所生成的数据。
图9的数据由单个入口G104构成,并且因此在图4的步骤A306到A308的处理中未删除入口从而使数据保留为如图9所示。
在图2的步骤A106的处理中,报告生成部分220基于图12的数据和图9的数据生成点候选报告。
图13示出了基于图12的数据和图9的数据生成的点候选报告。点候选报告由入口G100、入口G102和入口G104构成。
通过参考这样的点候选报告,应用程序开发者不需要理解整个应用程序源代码,并且能够了解在定制应用程序121中对其来说修改是必要的源代码上的部分,据此能够轻松定制应用程序121。
在示例中,与图7所示的多个入口的数量相比,图11所示的多个入口的数量较小。也就是说,示例进一步指示使用根据本发明的应用程序修改部分搜索装置的根据本发明的应用程序修改部分搜索方法的执行能够阻止在修改候选部分包括相同调用栈的情况下定制处理被双重并入等问题。
注意,根据本发明的应用程序修改部分搜索装置可由计算机实现。计算机包括可移除存储器驱动器或通信装置。当插入记录介质时,可移除存储器驱动器用来读出被记录在记录介质中的数据。当插入记录介质时,可移除存储器驱动器进一步用来安装被记录在计算机上的记录介质中的计算机程序。记录介质由闪存、磁盘(软盘、硬盘)、磁带(录像磁带)、光盘(CD,DVD)和磁光盘例示。通信装置用来通过通信网络读出被记录在其他计算机上的信息。通信装置进一步用来将公开给通信网络的计算机程序安装到在计算机上。通信网络由LAN、互联网和专用线路例示。在此情况中,通过将实现这些功能的多个计算机程序安装到计算机上,计算机执行根据本发明的应用程序修改部分搜索方法。
关于在本说明书和附图之间的对应关系,参考标记100指示测试执行部分。参考标记200指示结果处理部分。参考标记300指示参数列表。参考标记110指示方面处理部分。参考标记111指示方面生成部分。参考标记112指示方面应用部分。参考标记120指示执行引擎部分。参考标记121指示应用程序。参考标记130指示输入输出验证部分。参考编号140指示日志提取部分。参考标记210指示处理栈分析部分。参考标记220指示报告生成部分。参考标记310指示测试程序。参考标记330指示点候选报告。
已参照示例性实施例(其包括示例)具体说明了本发明,然而本发明不局限于上述实施例和示例。在不背离本发明的精神和范围的情况下,可以作出能够被本领域普通技术人员理解的本发明的各种形式和细节的变化。
以上已与示例性实施例(其包括示例)一起说明了本发明,然而,对于本领域普通技术人员来说明显的是,这些示例性实施例(其包括示例)仅仅被提供用来解释本发明;示例性实施例(其包括示例)不应依赖于将权利要求解释为限制意义的目的。
本申请基于并要求于2010年3月4日提交的日本专利申请No.2010-047845的优选权权益,其全部内容通过引用结合于此。
上述实施例的部分或全部能够被说明为下列补充说明但不限于以下内容。
(补充说明1)一种应用程序修改部分搜索装置,包括:
测试执行部分,该测试执行部分当基于输入参数对应用程序执行覆盖测试时生成多个日志;以及
结果处理部分,该结果处理部分基于所述多个日志生成点候选报告,
其中所述多个日志分别指示在所述覆盖测试的执行期间被调用的多个方法中、将所述参数指定为自变量的方法的调用栈,
所述调用栈指示在所述应用程序上的其中定义了所述方法的调用的位置,并且
所述点候选报告指示了在所述应用程序中当基于所述参数执行处理调度时对其来说修改是必要的点的候选。
(补充说明2)
根据补充说明1所述的应用程序修改部分搜索装置,其中所述测试执行部分包括:
方面处理部分,该方面处理部分基于所述参数生成程序逻辑;
执行引擎部分,该执行引擎部分将所述程序逻辑应用到所述应用程序;
输入输出验证部分,该输入输出验证部分当每一个方法被调用时基于所述程序逻辑评估所述参数是否表现为所述应用程序的每一个方法的自变量;以及
日志提取部分,该日志提取部分当所述参数表现为所述每一个方法的自变量时基于所述每一个方法的调用栈生成所述日志。
(补充说明3)
根据补充说明2所述的应用程序修改部分搜索装置,其中所述结果处理部分包括:
处理栈分析部分,该处理栈分析部分从所述多个日志中提取多个提取日志;以及
报告生成部分,该报告生成部分基于所述多个提取日志生成所述点候选报告,
由所述点候选报告所指示的多个候选对应于所述多个提取日志;并且
所述多个候选中对应于单个日志的候选指示了由所述单个日志所指示的调用栈中的最深调用。
(补充说明4)
根据补充说明3所述的应用程序修改部分搜索装置,其中当所述多个日志的第一日志包括所述多个日志的第二日志时,所述处理栈分析部分通过从所述多个日志中删除所述第一日志来生成所述多个提取日志。
(补充说明5)
根据补充说明3或补充说明4所述的应用程序修改部分搜索装置,其中所述测试执行部分当不同于所述参数的另一参数被进一步输入时生成多个完整日志,
所述处理栈分析部分进一步将所述多个完整日志划分成所述多个日志和指示所述多个方法中将所述另一参数指定为自变量的另一方法的调用栈的多个其他日志,并且从所述多个其他日志中提取多个其他提取日志,并且
所述报告生成部分进一步基于所述多个其他提取日志生成所述点候选报告。
(补充说明6)
一种应用程序修改部分搜索方法,包括:
当基于输入参数对应用程序执行覆盖测试时生成多个日志的步骤;
基于所述多个日志生成点候选报告的步骤;以及
基于所述点候选报告定制所述应用程序的步骤,
其中所述多个日志分别指示在所述覆盖测试的执行期间被调用的多个方法中将所述参数指定为自变量的方法的调用栈,
所述调用栈指示在所述应用程序上的其中定义了所述方法的调用的位置,并且
所述点候选报告指示了在所述应用程序中当基于所述参数执行处理调度时对其来说修改是必要的点的候选。
(补充说明7)
根据补充说明6所述的应用程序修改部分搜索方法,还包括:
基于所述参数生成程序逻辑的步骤;
将所述程序逻辑应用到所述应用程序的步骤;
当调用每一个方法时,基于所述程序逻辑评估所述参数是否表现为所述应用程序的每一个方法的自变量的步骤;以及
当所述参数表现为所述每一个方法的自变量时,基于所述每一个方法的调用栈生成所述日志的步骤。
(补充说明8)
根据补充说明7所述的应用程序修改部分搜索方法,还包括:
从所述多个日志中提取多个提取日志的步骤;以及
基于所述多个提取日志生成所述点候选报告的步骤,
其中由所述点候选报告所指示的多个候选对应于所述多个提取日志;
并且
所述多个候选中对应于单个日志的候选指示了由所述单个日志所指示的调用栈中的最深调用。
(补充说明9)
根据补充说明8所述的应用程序修改部分搜索方法,其中当所述多个日志的第一日志包括所述多个日志的第二日志时,通过从所述多个日志中删除所述第一日志来生成所述多个提取日志。
(补充说明10)
根据补充说明8或补充说明9所述的应用程序修改部分搜索方法,还包括:
将不同于所述参数的另一参数被进一步输入时生成的多个完整日志划分成所述多个日志和指示所述多个方法中将所述另一参数指定为自变量的另一方法的调用栈的多个其他日志的步骤;以及
从所述多个其他日志中提取多个其他提取日志的步骤,
其中进一步基于所述多个其他提取日志生成所述点候选报告。
(补充说明11)
一种使得计算机执行根据补充说明6到10中任意一项所述的应用程序修改部分搜索方法的计算机程序。
(补充说明12)
一种记录了根据补充说明11所述的应用程序修改部分搜索方法的计算机可读记录介质。
Claims (10)
1.一种应用程序修改部分搜索装置,包括:
测试执行部分,该测试执行部分当基于输入参数对应用程序执行覆盖测试时生成多个日志;以及
结果处理部分,该结果处理部分基于所述多个日志生成点候选报告,
其中所述多个日志分别指示在所述覆盖测试的执行期间被调用的多个方法中、将所述参数指定为自变量的方法的调用栈,
所述调用栈指示在所述应用程序上的其中定义了所述方法的调用的位置,并且
所述点候选报告指示了在所述应用程序中当基于所述参数执行处理调度时对其来说修改是必要的点的候选。
2.根据权利要求1所述的应用程序修改部分搜索装置,其中所述测试执行部分包括:
方面处理部分,该方面处理部分基于所述参数生成程序逻辑;
执行引擎部分,该执行引擎部分将所述程序逻辑应用到所述应用程序;
输入输出验证部分,该输入输出验证部分当所述应用程序的每一个方法被调用时基于所述程序逻辑评估所述参数是否表现为所述每一个方法的自变量;以及
日志提取部分,该日志提取部分当所述参数表现为所述每一个方法的自变量时基于所述每一个方法的调用栈生成所述日志。
3.根据权利要求2所述的应用程序修改部分搜索装置,其中所述结果处理部分包括:
处理栈分析部分,该处理栈分析部分从所述多个日志中提取多个提取日志;以及
报告生成部分,该报告生成部分基于所述多个提取日志生成所述点候选报告,
其中,由所述点候选报告所指示的多个候选对应于所述多个提取日志;并且
所述多个候选中对应于单个日志的候选指示了由所述单个日志所指示的调用栈中的最深调用。
4.根据权利要求3所述的应用程序修改部分搜索装置,其中当所述多个日志的第一日志包括所述多个日志的第二日志时,所述处理栈分析部分通过从所述多个日志中删除所述第一日志来生成所述多个提取日志。
5.根据权利要求3或4所述的应用程序修改部分搜索装置,其中所述测试执行部分当不同于所述参数的另一参数被进一步输入时生成多个完整日志,
所述处理栈分析部分进一步将所述多个完整日志划分成所述多个日志和指示所述多个方法中将所述另一参数指定为自变量的另一方法的调用栈的多个其他日志,并且从所述多个其他日志中提取多个其他提取日志,并且
所述报告生成部分进一步基于所述多个其他提取日志生成所述点候选报告。
6.一种应用程序修改部分搜索方法,包括:
当基于输入参数对应用程序执行覆盖测试时生成多个日志的步骤;
基于所述多个日志生成点候选报告的步骤;以及
基于所述点候选报告定制所述应用程序的步骤,
其中所述多个日志分别指示在所述覆盖测试的执行期间被调用的多个方法中将所述参数指定为自变量的方法的调用栈,
所述调用栈指示在所述应用程序上的其中定义了所述方法的调用的位置,并且
所述点候选报告指示了在所述应用程序中当基于所述参数执行处理调度时对其来说修改是必要的点的候选。
7.根据权利要求6所述的应用程序修改部分搜索方法,还包括:
基于所述参数生成程序逻辑的步骤;
将所述程序逻辑应用到所述应用程序的步骤;
当调用所述应用程序的每一个方法时,基于所述程序逻辑评估所述参数是否表现为所述每一个方法的自变量的步骤;以及
当所述参数表现为所述每一个方法的自变量时,基于所述每一个方法的调用栈生成所述日志的步骤。
8.根据权利要求7所述的应用程序修改部分搜索方法,还包括:
从所述多个日志中提取多个提取日志的步骤;以及
基于所述多个提取日志生成所述点候选报告的步骤,
其中由所述点候选报告所指示的多个候选对应于所述多个提取日志;
并且
所述多个候选中对应于单个日志的候选指示了由所述单个日志所指示的调用栈中的最深调用。
9.根据权利要求8所述的应用程序修改部分搜索方法,其中当所述多个日志的第一日志包括所述多个日志的第二日志时,通过从所述多个日志中删除所述第一日志来生成所述多个提取日志。
10.根据权利要求8或9所述的应用程序修改部分搜索方法,还包括:
将不同于所述参数的另一参数被进一步输入时生成的多个完整日志划分成所述多个日志和指示所述多个方法中将所述另一参数指定为自变量的另一方法的调用栈的多个其他日志的步骤;以及
从所述多个其他日志中提取多个其他提取日志的步骤,
其中进一步基于所述多个其他提取日志生成所述点候选报告。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010047845 | 2010-03-04 | ||
JP2010-047845 | 2010-03-04 | ||
PCT/JP2011/054758 WO2011108584A1 (ja) | 2010-03-04 | 2011-03-02 | アプリケーション改変部位探索装置およびアプリケーション改変部位探索方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102782649A true CN102782649A (zh) | 2012-11-14 |
Family
ID=44542231
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180012313.3A Pending CN102782649A (zh) | 2010-03-04 | 2011-03-02 | 应用程序修改部分搜索装置和应用程序修改部分搜索方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9003370B2 (zh) |
JP (1) | JPWO2011108584A1 (zh) |
CN (1) | CN102782649A (zh) |
WO (1) | WO2011108584A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104407855A (zh) * | 2014-11-12 | 2015-03-11 | 国家电网公司 | 一种插件动态参数设置方法及装置 |
CN107463485A (zh) * | 2017-06-26 | 2017-12-12 | 北京五八信息技术有限公司 | 基于方法栈的日志获取方法、装置和终端 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9509697B1 (en) * | 2014-09-15 | 2016-11-29 | Symantec Corporation | Systems and methods for authorizing attempts to access shared libraries |
JP6801267B2 (ja) * | 2016-07-04 | 2020-12-16 | 富士通株式会社 | 評価プログラム、評価方法、評価装置および情報処理装置 |
CN106354639A (zh) * | 2016-08-29 | 2017-01-25 | 天脉聚源(北京)传媒科技有限公司 | 一种NSLog输出函数的处理方法及装置 |
CN106776293A (zh) * | 2016-11-29 | 2017-05-31 | 天脉聚源(北京)传媒科技有限公司 | 一种程序段检测的方法及装置 |
CN108845941A (zh) * | 2018-06-15 | 2018-11-20 | 郑州云海信息技术有限公司 | 一种sql注入测试覆盖率统计方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1123930A (zh) * | 1994-04-28 | 1996-06-05 | 东芝株式会社 | 支援并行程序设计的装置以及设计并行程序的方法 |
CN1359492A (zh) * | 1999-01-21 | 2002-07-17 | 毕事快公司 | 对具有嵌入式操作系统的设备进行测试和确认的系统和方法 |
US20030014734A1 (en) * | 2001-05-03 | 2003-01-16 | Alan Hartman | Technique using persistent foci for finite state machine based software test generation |
CN101079000A (zh) * | 2007-05-29 | 2007-11-28 | 华为技术有限公司 | 一种快速定位问题的自动化测试的方法及其设备 |
US20090319996A1 (en) * | 2008-06-23 | 2009-12-24 | Microsoft Corporation | Analysis of thread synchronization events |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6182246B1 (en) * | 1999-01-21 | 2001-01-30 | Bsquare Corporation | Protocol acknowledgment between homogeneous system |
JP2007122670A (ja) | 2005-10-31 | 2007-05-17 | Toshiba Corp | 帳票作成システムおよびプログラム |
JP2007213498A (ja) | 2006-02-13 | 2007-08-23 | Hitachi Software Eng Co Ltd | アスペクト表示システム |
JP2007213487A (ja) | 2006-02-13 | 2007-08-23 | Hitachi Software Eng Co Ltd | アスペクト生成方法及び装置 |
JPWO2008096632A1 (ja) * | 2007-02-05 | 2010-05-20 | 日本電気株式会社 | オブジェクト図表示装置、オブジェクト図表示方法、プログラム、及びコンピュータ読み取り可能な記録媒体 |
JP2008310679A (ja) | 2007-06-15 | 2008-12-25 | Toshiba Corp | 動的設計情報生成装置およびプログラム |
JP4764405B2 (ja) * | 2007-11-06 | 2011-09-07 | 株式会社東芝 | 情報処理装置 |
-
2011
- 2011-03-02 CN CN201180012313.3A patent/CN102782649A/zh active Pending
- 2011-03-02 US US13/582,701 patent/US9003370B2/en not_active Expired - Fee Related
- 2011-03-02 WO PCT/JP2011/054758 patent/WO2011108584A1/ja active Application Filing
- 2011-03-02 JP JP2012503213A patent/JPWO2011108584A1/ja not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1123930A (zh) * | 1994-04-28 | 1996-06-05 | 东芝株式会社 | 支援并行程序设计的装置以及设计并行程序的方法 |
CN1359492A (zh) * | 1999-01-21 | 2002-07-17 | 毕事快公司 | 对具有嵌入式操作系统的设备进行测试和确认的系统和方法 |
US20030014734A1 (en) * | 2001-05-03 | 2003-01-16 | Alan Hartman | Technique using persistent foci for finite state machine based software test generation |
CN101079000A (zh) * | 2007-05-29 | 2007-11-28 | 华为技术有限公司 | 一种快速定位问题的自动化测试的方法及其设备 |
US20090319996A1 (en) * | 2008-06-23 | 2009-12-24 | Microsoft Corporation | Analysis of thread synchronization events |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104407855A (zh) * | 2014-11-12 | 2015-03-11 | 国家电网公司 | 一种插件动态参数设置方法及装置 |
CN107463485A (zh) * | 2017-06-26 | 2017-12-12 | 北京五八信息技术有限公司 | 基于方法栈的日志获取方法、装置和终端 |
CN107463485B (zh) * | 2017-06-26 | 2020-11-10 | 北京五八信息技术有限公司 | 基于方法栈的日志获取方法、装置和终端 |
Also Published As
Publication number | Publication date |
---|---|
WO2011108584A1 (ja) | 2011-09-09 |
US20130055216A1 (en) | 2013-02-28 |
US9003370B2 (en) | 2015-04-07 |
JPWO2011108584A1 (ja) | 2013-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102782649A (zh) | 应用程序修改部分搜索装置和应用程序修改部分搜索方法 | |
US6067639A (en) | Method for integrating automated software testing with software development | |
US7478365B2 (en) | Method and system for rule-based generation of automation test scripts from abstract test case representation | |
Silva et al. | The GUISurfer tool: towards a language independent approach to reverse engineering GUI code | |
US9582394B2 (en) | Encapsulating and managing diagnostic information | |
US20070061641A1 (en) | Apparatus and method for generating test driver | |
US10565089B2 (en) | Identification of code features potentially associated with code behavior | |
CN101866315B (zh) | 软件开发工具的测试方法及系统 | |
CN103052943A (zh) | 源代码转换方法和源代码转换程序 | |
CN112306855B (zh) | 接口自动化测试方法、装置、终端和存储介质 | |
US20100218168A1 (en) | System and Method for Generating a Test Environment Script File | |
US20070061780A1 (en) | Enterprise resource planning system test framework | |
Silva et al. | Model-based user interface testing with spec explorer and concurtasktrees | |
JP2021182415A (ja) | コントロールを使用して汎用プログラムを構成する技法 | |
US11514237B2 (en) | Spreadsheet and method for updating same | |
US10496379B2 (en) | Facilitated production of code for software testing | |
CN112256271B (zh) | 一种基于静态分析的区块链智能合约安全检测系统 | |
CN108090355B (zh) | 一种apk自动触发工具 | |
CN108334441A (zh) | 一种软件开发工具包的自动化测试方法和系统 | |
CN115080448B (zh) | 一种软件代码不可达路径自动检测的方法和装置 | |
Wang et al. | Automatic generation of test models for model transformations | |
CN113805861B (zh) | 基于机器学习的代码生成方法、代码编辑系统及存储介质 | |
US10762211B2 (en) | Source code diagnostic instrument | |
KR20220003106A (ko) | 컴퓨터-보조 컴퓨터 프로그래밍의 시스템 및 방법 | |
CN112069080A (zh) | 一种自动化可执行的脚本测试方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20121114 |