CN112363954A - 基于对象状态一致性的软件动态更新测试方法 - Google Patents
基于对象状态一致性的软件动态更新测试方法 Download PDFInfo
- Publication number
- CN112363954A CN112363954A CN202011444437.6A CN202011444437A CN112363954A CN 112363954 A CN112363954 A CN 112363954A CN 202011444437 A CN202011444437 A CN 202011444437A CN 112363954 A CN112363954 A CN 112363954A
- Authority
- CN
- China
- Prior art keywords
- test
- state
- java
- dynamic update
- type
- 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.)
- Granted
Links
- 238000010998 test method Methods 0.000 title claims description 11
- 238000012360 testing method Methods 0.000 claims abstract description 116
- 238000000034 method Methods 0.000 claims abstract description 69
- 230000004048 modification Effects 0.000 claims description 12
- 238000012986 modification Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 11
- 230000009977 dual effect Effects 0.000 claims description 8
- 230000002068 genetic effect Effects 0.000 claims description 7
- 230000001960 triggered effect Effects 0.000 claims description 7
- 230000006399 behavior Effects 0.000 claims description 6
- 230000035772 mutation Effects 0.000 claims description 6
- 238000004458 analytical method Methods 0.000 claims description 5
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 230000008713 feedback mechanism Effects 0.000 abstract description 4
- 238000013461 design Methods 0.000 abstract description 2
- 238000013522 software testing Methods 0.000 abstract 1
- 230000006870 function Effects 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000013101 initial test Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
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
- 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/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开一种基于对象状态一致性的软件动态更新测试方法,包括如下步骤:步骤一、基于既定规则自动生成测试文件(包含双版本执行器和每个参数的状态构造器),并采用抽取字面值的方法提高状态构造器的可靠性;步骤二、执行基于模糊思想的动态更新测试。每轮工具根据状态构造器随机生成一组测试输入,并由双版本执行器同时运行两版本程序。随后比较对象状态,将产生不一致的特殊输入加入种子池,指导下一轮生成更符合条件的输入。本发明可以自动构建测试用例,减轻人工负担;利用特殊字面量,加速构造合法的对象状态;并且借助模糊的思想,设计新型反馈机制,提升测试效率。
Description
技术领域
本发明涉及一种基于对象状态一致性的软件动态更新测试方法,是一种针对动态更新场景下对软件动态更新进行测试的方法,属于软件更新技术领域。
背景技术
软件动态更新是相对离线更新的一种软件在线演化技术,核心思想是在旧版本程序运行的过程中在线地更新为新版本程序。此更新技术的特点是:
1)动态地更新和部署新版本的程序代码,不需要停止正在运行的程序或服务器;
2)触发更新时,允许开发者操控内存堆中Java对象的状态,转换后移至新版本使用。
测试人员通过限制第一点中的更新时间和版本一致性来提高软件动态更新的可靠性。然而在逻辑层面,动态更新开发者往往更难保证第二点中“转换后”的对象状态和新版本代码语义是一致的。目前缺少这种基于对象状态一致性的测试研究,有如下原因:
1)现有技术定义的“一致性”不符合动态更新场景。传统的相关测试更多地针对两个版本程序的动态行为(内存使用情况、执行路径、抛出异常等),而动态更新场景下的测试主要关注对象的状态是否一致;
2)现有技术采用的测试手段没有充分利用动态更新场景中的一些反馈。传统有指导的测试方法都是利用每一轮执行测试后得到的结果,提高下一轮生成测试用例的可靠性。然而在动态更新场景下,缺少能够利用动态更新测试结论来指导生成测试用例的相关工作。
因此本发明公开的这种软件动态更新测试方法,将关注点锁定在“对象状态”,并利用动态更新的测试结论来提高测试的效率。
发明内容
发明目的:针对现有技术中存在的问题与不足,本发明提供一种基于对象状态一致性的软件动态更新测试方法,发明目的如下:
1)能够定义动态更新场景下的“一致性”,即测试目标。明确软件动态更新测试具体测的是什么,并且能够说明什么是对象状态一致性;
2)能够提供实现这种测试目标的自动化工具。动态更新的测试人员需要同时兼顾两个版本的程序代码,往往要做大量的准备工作。本发明的目的也是能够自动化地进行测试的准备工作,自动化地进行测试的编译、执行、反馈和报告,帮助测试人员大幅减轻人工负担;
3)提高测试的执行效率。本发明希望能够充分利用动态更新测试中的一些临时结果,从而指导下一轮测试,达到提高测试效率的目的。
技术方案:本发明公开一种基于对象状态一致性的软件动态更新测试方法,分为两个主要的部分,一是定义了动态更新场景下的一致性,二是该方法实现的技术步骤和要点。
1)定义动态更新场景下的“一致性”
动态更新场景下的“一致性”,即测试的目标。设更新发生在某个类的方法M中。为了帮助动态更新开发者更可靠地操控内存堆中Java对象的状态,测试的目标即是:当两个版本的程序采用相同输入执行完方法M后,两个程序的行为是否仍然保持一致。在动态更新场景中,程序的行为主要是指“对象状态”。
2)该测试方法实现的技术步骤和要点
该测试方法主要包含两个步骤,第一个步骤的主要目的是减轻动态更新测试人员的人工负担,第二个步骤的主要目的是执行测试并尽量提高测试执行的效率。
步骤1、基于既定规则自动生成测试文件(包含双版本执行器和每个参数的状态构造器),并采用抽取字面值的方法提高状态构造器的可靠性;
步骤2、执行基于模糊思想的动态更新测试。每轮工具将根据状态构造器随机生成一组测试输入,并由双版本执行器同时运行两版本程序。随后比较对象状态,将产生不一致的特殊输入加入种子池,指导下一轮生成更符合条件的输入。
所述的步骤1中,测试文件是执行软件动态更新测试的必要元素,包含双版本执行器和状态构造器。根据上述的假设,一次修改发生在某个类的方法M中,对其的形式化表示为returnType M(Type p1,Type p2…),可认为该方法具有一个返回值类型,且接受若干个参数。每个参数都需要一个所述的“状态构造器”,用来指导如何随机地生成该参数的实例。“双版本执行器”负责使用状态构造器生成的这些参数来执行两个版本的程序(即将p1,p2应用到方法M中执行),并实现如图2所示的测试目标。例如,一个方法int M(String str)则需要为String类型的参数准备一个状态构造器,同时也需要一个双版本执行器来运行两个版本程序中的M方法。
所述的步骤1中,自动地生成上述的测试文件是需要既定规则的,即采用一个固定的流程来生成测试文件。为被测试的方法M生成“双版本执行器”的逻辑为:1)根据状态构造器获得参数实例→2)应用至两版本程序的方法M→3)比较两个程序的对象状态→4)结果报告给用户,并重新开始执行直到时间结束。为类型为T的参数生成状态构造器的逻辑为:1)若T是Java中的基础类型或包装类型,则返回在预设区间内的类型为T的随机值。例如,要为int类型的参数生成构造器,则会得到intGen.java的类,其功能是随机返回一个在(-100,100)区间内的整数值;2)若T是Java中的引用类型,则会先创建它的实例,再对其相关字段应用本生成逻辑。其中,相关字段是根据Java调用图分析得到的、与本次修改有直接或间接关系的Java Field;3)若T是Java中的集合类型,则会先创建一个随机长度的相应集合,再根据集合的泛型类型,往其中随机地添加元素。
所述的步骤1中,抽取字面量是为了获取Java文件中的一些特殊值,并按照指定的概率将特殊值注入到状态构造器,从而测试过程中更容易根据这些特殊值来触发两个版本程序的对象状态不一致。例如,特定的输入“100”会触发两版本程序对象状态的不一致,而该数字恰好出现在方法M的代码中。因此,“100”这个数字会被加入到状态构造器,在之后生成整数类型的值时会以一定的概率随机到该数,这个概率值也可以由用户指定。
所述的步骤2中,在获得必要的测试文件后,测试工具开始进行软件动态更新的测试。测试的必要参数可以由状态构造器生成,测试流程由双版本执行器指定(如执行方法M、比较两版本对象状态等)。特别地,测试技术借助的是模糊测试的思想,根据原来很少的输入经过突变等手段获得大量的输入进行执行,旨在很快且有指导性地生成测试的输入。具体的执行逻辑为:1)状态构造器和测试人员提供的测试种子均可作为初始的种子,存进模糊测试概念中的种子池。一般基础性或具有特殊意义的输入会被加入种子池,因为模糊测试认为从种子池中选择种子进行突变更容易生成符合条件的输入→2)选择一个种子进行遗传算法的突变,获得第一组输入,交给双版本执行器→3)双版本执行器执行后得到本次软件动态更新测试临时的结果反馈→4)分析本次结果,若触发了对象状态不一致,则认为本次输入是关键且有效的,将其加入种子池用来指导下一组输入的生成→跳回到2)执行下一轮。上述的遗传算法是公知的一个求最优解的算法,模拟生物的选择组合和变异来使目标更加靠近开发者所设定的条件,达到提高测试效率的目的。传统的模糊测试把“扩大程序覆盖率”的输入看作关键且有效的输入,然而在动态更新场景下,本发明额外地将“两个版本对象状态不一致”的情况考虑进种子池的更替策略。
有益效果:与现有技术相比,本发明提供的基于对象状态一致性的软件动态更新测试方法,具有如下优点:1)自动构建测试输入,减轻人工负担;2)利用特殊字面量,加速构造合法的对象状态;3)借助模糊的方法,设计新型反馈机制,提升测试效率。
附图说明
图1为本发明方法工作流程图;
图2为本发明中动态更新场景下的测试目标;
图3为本发明新设计的结果反馈机制。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
如图1所示,基于对象状态一致性的软件动态更新测试系统,包括两个功能部分。其一是测试文件的生成部分,其二是测试的执行与效率加强部分。如表1所示,它们接受的输入和输出为:
表1
本发明定义了动态更新场景下的“一致性”,即测试的目标。如图2所示,由于动态更新场景下的更新往往比较微小,本发明假设更新发生在某个类的方法M中。为了帮助动态更新开发者更可靠地操控内存堆中Java对象的状态,本发明测试的目标即是:当两个版本的程序采用相同输入执行完方法M后,两个程序的行为是否仍然保持一致。在动态更新场景中,程序的行为主要是指“对象状态”。例如,图2的两个版本程序按照相同输入执行完了方法M,却造成了不同的对象状态(旧的O.value变为了10,而新的O.value变为了20),此时可以认为对象状态出现了不一致,本发明的工具会将导致这种不一致的测试输入报告给用户。
测试执行与效率加强是本发明的主要功能部分,测试文件的生成部分主要目的是协助动态更新的测试人员减少人工准备测试文件的负担。现在从三方面进行阐述:
一、测试文件的生成部分
如图1的“步骤一”所示,具体的流程和步骤为:
(1)解析用户给定的版本A、B程序,并自动获得本次修改所发生的位置。设本次修改发生在类C的方法int M(String str)。
(2)自动生成测试文件。测试文件包含双版本执行器和状态构造器。每个参数都需要一个“状态构造器”,用来指导如何随机地生成该参数的实例(即String类型的参数需要一个状态构造器来随机生成一个字符串对象)。而“双版本执行器”则负责使用状态构造器生成的这些参数来执行两个版本的程序(即将生成的字符串对象应用到方法M中执行),并实现如图2所示的测试目标。因此,测试文件的生成部分会为本次修改的测试准备一个能随机生成字符串的状态构造器,同时也需要一个双版本执行器来运行两个版本程序中的M方法。为被测试的方法M生成“双版本执行器”的逻辑为:1)根据状态构造器获得参数实例→2)应用至两版本程序的方法M→3)比较两个程序的对象状态→4)结果报告给用户,并重新开始执行直到时间结束。为类型为T的参数生成状态构造器的逻辑为:1)若T是Java中的基础类型或包装类型,则返回在预设区间内的类型为T的随机值。例如,要为int类型的参数生成构造器,则会得到intGen.java的类,其功能是随机返回一个在(-100,100)区间内的整数值;2)若T是Java中的引用类型,则会先创建它的实例,再对其相关字段应用本生成逻辑。其中,相关字段是根据Java调用图分析得到的、与本次修改有直接或间接关系的Java Field;3)若T是Java中的集合类型,则会先创建一个随机长度的相应集合,再根据集合的泛型类型,往其中随机地添加元素。
(3)为提高状态构造器的可靠程度,本发明在生成状态构造器时加入了常量抽取步骤,从而测试过程中更容易根据这些特殊值来触发两个版本程序的对象状态不一致。例如,M方法内部出现了"abc""str"等字符串,则它们会被加入到该String类型参数的状态构造器中。在之后生成整数类型的值时会以一定的概率随机到该数,这个概率值也可以由用户指定。
完成这些步骤后便生成了一个双版本执行器和若干个状态构造器,它们是测试执行部分的必要元素。若一个Java方法不接受任何参数,则可以不生成状态构造器。特别需要注意的是,动态更新的测试人员可以人工地编写这些测试文件,本发明尽可能地提供自动化地手段以减少测试人员的人工开销。
二、测试执行部分
测试执行部分完成软件动态更新测试的主要功能,所需的两个版本程序由用户提供,所需的测试文件(双版本执行器和状态构造器)可由“测试文件的生成部分”自动获得,也可由测试人员手动编写。执行该部分,最终会获得软件动态更新的测试结果,即本次修改是否会造成两个版本程序的对象状态出现不一致。
执行该部分的主要组件为“测试器”。状态构造器和双版本执行器均为Java类文件,而测试器的主要任务就是衔接这两者,使得测试过程能够顺利开展。如图1的“步骤二”所示,具体的流程和步骤为:
1)测试器收到各个参数的状态构造器。这些构造器十分重要,因为这在一定程度上规范了随机生成的实例状态,使这些状态是符合测试人员预期的。测试器尽管能以各种算法生成出更好的状态,但初始的状态构造器规定了能够随机的最大范围空间。例如,测试人员在一个整数类型参数的状态构造器中规定随机范围为(-100,100),则测试器在求解最优解时,会以此作为最大搜索范围;
2)测试器根据状态构造器的规定,通过一些算法随机生成参数的一个实例。本发明使用基于模糊的思想来指导测试器的生成过程,算法能够将搜索空间进一步地缩小和收敛至较优解,具体的阐释在第三部分“测试效率加强”;
3)测试器将生成的参数实例传递给双版本执行器,由它负责将参数应用在两个版本的程序之上。双版本执行器的主要任务逻辑为:1)获得参数实例→2)应用至两版本程序的方法M→3)比较两个程序的对象状态→4)结果报告给用户,并重新开始执行直到时间结束。如图1所示,其中的“对象状态比较模块”所完成的任务正是上述的第三点。
“对象状态比较模块”主要负责比较相关的对象状态,其中需要特别说明的有两个问题,其一是如何寻找“相关的对象”,其二是如何比较两个对象的状态。对于第一个问题,假设本次修改发生在某个类的方法M中,本发明通过字节码分析的方法,分析Java方法中的指令集并构造Java值域和方法之间的调用图,从而寻找和该方法有直接或间接关系的类的对象。对于第二个问题,本发明摒弃Java中传统的equals或其他比较方法,提供一个通用的状态比较器,其具体比较流程如下:
①若两个对象的名称、类型、字段数量不相同,则直接返回不相同,否则负责逐一比较它们的字段;
②若对应字段的类型、名称不相同,则直接返回不相同,否则比较该字段;
③若字段是Java基础类型,使用”==”进行比较,若不相同则直接返回不相同;
④若字段是Java包装类型,使用equals进行比较,若不相同则直接返回不相同;
⑤若字段是Java集合类型,则根据每个Java集合的特性,比较集合内的元素,若出现不相同则直接返回不相同;
⑥若字段是其他引用类型,则获取代表该字段的对象,再重复第①步进行比较。
三、测试效率加强部分
本发明采用模糊测试的思想指导测试输入的生成。在“测试执行部分”也提到测试器的主要任务是根据状态构造器来随机生成参数的实例,生成的参数实例即是“测试输入”。测试的效率在软件动态更新过程的测试中也是一个很重要的指标。例如,假设一次修改发生在int M(String str)方法中,只有输入以”ab”开头的字符串才能够触发两个版本程序的对象状态不一致。那么在这种情况下,对于完全无指导的生成手段来说是致命的,因为它会漫无目的地随机。不仅仅是随机地生成字符串,在触发过状态不一致之后它仍然会漫无目的地继续生成,这样就会造成资源和时间的大量浪费。因此,本发明提出以图3所示的新型反馈机制,用来指导测试器更加“聪明地”去生成下一轮的测试输入。
如图3所示,本发明是对模糊测试的进一步优化。模糊测试的主要思想是一开始给定少量的基础输入(如用户给定的测试种子),进行遗传算法的突变后可以获得大量与种子类似或有关联的变种输入。根据生物学的规律,种子池中的“种子”可以认为是人类R,遗传算法得到的变种输入即为R的后代。如果种子原本是较优解,那么种子的后代也会围绕在较优解的附近。这符合生物学对于人类进化的看法,也能够很好的用于空间范围内的最优化搜索。
在本发明中,用户可以提供一些符合语义的初始测试种子,或通过状态构造器的方式进行规定。随后,基于模糊思想的测试器会进行如下的步骤:1)选择一个种子进行遗传算法的突变(可用生物学的角度进行二进制表示的选择、组合和变异等等),获得第一组输入,交给双版本执行器→2)双版本执行器执行后得到本次软件动态更新测试临时的结果反馈→3)分析本次结果,若触发了对象状态不一致,则认为本次输入是关键且有效的,将其加入种子池用来指导下一组输入的生成→跳回到1)执行下一轮。
模糊思想和遗传算法在学术界已有广泛的研究,然而大量的工作都关注于能够“扩大程序覆盖率”的种子之上。在动态更新场景下,本发明将“触发对象状态不一致”的情况也加入到种子的迭代规则之中,使得之后生成的输入更容易触发对象状态不一致,从而提高测试的效率。
Claims (9)
1.一种基于对象状态一致性的软件动态更新测试方法,其特征在于,包括动态更新场景下的一致性定义和测试方法实现的技术步骤:
所述动态更新场景下的一致性,即测试的目标;设更新发生在某个类的方法M中,测试的目标即是:当两个版本的程序采用相同输入执行完方法M后,两个程序的行为是否仍然保持一致;
该测试方法主要包含两个步骤:
步骤1、基于既定规则自动生成测试文件,并采用抽取字面值的方法提高状态构造器的可靠性;
步骤2、执行基于模糊思想的动态更新测试;每轮工具将根据状态构造器随机生成一组测试输入,并由双版本执行器同时运行两版本程序;随后比较对象状态,将产生不一致的特殊输入加入种子池,指导下一轮生成更符合条件的输入。
2. 根据权利要求1所述的基于对象状态一致性的软件动态更新测试方法,其特征在于,所述的步骤1中, 测试文件是执行软件动态更新测试的必要元素,包含双版本执行器和状态构造器;设一次修改发生在某个类的方法M中,对其的形式化表示为 returnType M(Type p1, Type p2 …),认为该方法具有一个返回值类型,且接受若干个参数;每个参数都需要一个所述的状态构造器,用来指导如何随机地生成该参数的实例;双版本执行器负责使用状态构造器生成的这些参数来执行两个版本的程序,并实现测试目标。
3. 根据权利要求1所述的基于对象状态一致性的软件动态更新测试方法,其特征在于,所述的步骤1中,自动地生成所述的测试文件是需要既定规则的,即采用一个固定的流程来生成测试文件;为被测试的方法M生成双版本执行器的逻辑为:1) 根据状态构造器获得参数实例 → 2) 应用至两版本程序的方法M → 3) 比较两个程序的对象状态 → 4)结果报告给用户,并重新开始执行直到时间结束。
4. 根据权利要求1所述的基于对象状态一致性的软件动态更新测试方法,其特征在于,所述的步骤1中,为类型为T的参数生成状态构造器的逻辑为:1) 若T是Java中的基础类型或包装类型,则返回在预设区间内的类型为T的随机值;2) 若T是Java中的引用类型,则会先创建它的实例,再对其相关字段应用本生成逻辑;3) 若T是Java中的集合类型,则会先创建一个随机长度的相应集合,再根据集合的泛型类型,往其中随机地添加元素。
5.根据权利要求4所述的基于对象状态一致性的软件动态更新测试方法,其特征在于,所述相关字段是根据Java调用图分析得到的、与程序修改有直接或间接关系的Java字段。
6.根据权利要求1所述的基于对象状态一致性的软件动态更新测试方法,其特征在于,所述的步骤1中,抽取字面量是为了获取Java文件中的一些特殊值,并按照指定的概率将特殊值注入到状态构造器。
7. 根据权利要求1所述的基于对象状态一致性的软件动态更新测试方法,其特征在于,所述的步骤2中,在获得必要的测试文件后,测试工具开始进行软件动态更新的测试;测试的必要参数可以由状态构造器生成,测试流程由双版本执行器指定;测试技术借助的是模糊测试的思想,具体的执行逻辑为:1) 状态构造器和测试人员提供的测试种子均可作为初始的种子,存进模糊测试概念中的种子池 → 2) 选择一个种子进行遗传算法的突变,获得第一组输入,交给双版本执行器 → 3) 双版本执行器执行后得到本次软件动态更新测试临时的结果反馈 → 4) 分析本次结果,若触发了对象状态不一致,则认为本次输入是关键且有效的,将其加入种子池用来指导下一组输入的生成 → 跳回到2) 执行下一轮。
8.根据权利要求1所述的基于对象状态一致性的软件动态更新测试方法,其特征在于,比较两个程序的对象状态,包括两个方面:其一是如何寻找相关的对象,其二是如何比较两个对象的状态;对于第一个问题,设本次修改发生在某个类的方法M中通过字节码分析的方法,分析Java方法中的指令集并构造Java值域和方法之间的调用图,从而寻找和该方法有直接或间接关系的类的对象。
9.根据权利要求8所述的基于对象状态一致性的软件动态更新测试方法,其特征在于,比较两个对象的状态的流程如下:
①若两个对象的名称、类型、字段数量不相同,则直接返回不相同,否则负责逐一比较它们的字段;
②若对应字段的类型、名称不相同,则直接返回不相同,否则比较该字段;
③若字段是Java基础类型,使用”==”进行比较,若不相同则直接返回不相同;
④若字段是Java包装类型,使用equals进行比较,若不相同则直接返回不相同;
⑤若字段是Java集合类型,则根据每个Java集合的特性,比较集合内的元素,若出现不相同则直接返回不相同;
⑥若字段是其他引用类型,则获取代表该字段的对象,再重复第①步进行比较。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011444437.6A CN112363954B (zh) | 2020-12-08 | 2020-12-08 | 基于对象状态一致性的软件动态更新测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011444437.6A CN112363954B (zh) | 2020-12-08 | 2020-12-08 | 基于对象状态一致性的软件动态更新测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112363954A true CN112363954A (zh) | 2021-02-12 |
CN112363954B CN112363954B (zh) | 2021-07-30 |
Family
ID=74536092
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011444437.6A Active CN112363954B (zh) | 2020-12-08 | 2020-12-08 | 基于对象状态一致性的软件动态更新测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112363954B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113055465A (zh) * | 2021-03-11 | 2021-06-29 | 南京大学 | 一种支持事务一致性的微服务动态更新方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080301813A1 (en) * | 2007-05-31 | 2008-12-04 | Microsoft Corporation | Testing Software Applications with Schema-based Fuzzing |
US20090164478A1 (en) * | 2007-12-19 | 2009-06-25 | Microsoft Corporation | Relations in fuzzing data |
CN101963914A (zh) * | 2010-11-12 | 2011-02-02 | 南京大学 | 一种基于字节码文件重构的Java类在线更新方法 |
CN104503875A (zh) * | 2014-12-08 | 2015-04-08 | 深圳市阿龙电子有限公司 | Android设备的测试方法及系统 |
CN106155901A (zh) * | 2015-04-21 | 2016-11-23 | 中国科学院信息工程研究所 | 黑盒与白盒相结合的执行反馈驱动的并行模糊测试方法 |
CN106201876A (zh) * | 2016-07-07 | 2016-12-07 | 厦门美图移动科技有限公司 | 一种应用测试方法、装置和移动终端 |
CN108027722A (zh) * | 2015-11-20 | 2018-05-11 | 谷歌有限责任公司 | 在编译和部署中动态更新应用 |
CN108334365A (zh) * | 2017-08-23 | 2018-07-27 | 中国电子科技集团公司第四十研究所 | 一种实现自动测试系统软件中仪器参数界面动态配置方法 |
CN108647145A (zh) * | 2018-05-10 | 2018-10-12 | 清华大学 | 软件内存安全检测方法及系统 |
CN110837472A (zh) * | 2019-11-06 | 2020-02-25 | 腾讯科技(深圳)有限公司 | 一种浏览器测试方法、装置及计算机设备 |
EP3639141A1 (en) * | 2017-06-15 | 2020-04-22 | Microsoft Technology Licensing, LLC | Machine learning for constrained mutation-based fuzz testing |
-
2020
- 2020-12-08 CN CN202011444437.6A patent/CN112363954B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080301813A1 (en) * | 2007-05-31 | 2008-12-04 | Microsoft Corporation | Testing Software Applications with Schema-based Fuzzing |
US20090164478A1 (en) * | 2007-12-19 | 2009-06-25 | Microsoft Corporation | Relations in fuzzing data |
CN101963914A (zh) * | 2010-11-12 | 2011-02-02 | 南京大学 | 一种基于字节码文件重构的Java类在线更新方法 |
CN104503875A (zh) * | 2014-12-08 | 2015-04-08 | 深圳市阿龙电子有限公司 | Android设备的测试方法及系统 |
CN106155901A (zh) * | 2015-04-21 | 2016-11-23 | 中国科学院信息工程研究所 | 黑盒与白盒相结合的执行反馈驱动的并行模糊测试方法 |
CN108027722A (zh) * | 2015-11-20 | 2018-05-11 | 谷歌有限责任公司 | 在编译和部署中动态更新应用 |
CN106201876A (zh) * | 2016-07-07 | 2016-12-07 | 厦门美图移动科技有限公司 | 一种应用测试方法、装置和移动终端 |
EP3639141A1 (en) * | 2017-06-15 | 2020-04-22 | Microsoft Technology Licensing, LLC | Machine learning for constrained mutation-based fuzz testing |
CN108334365A (zh) * | 2017-08-23 | 2018-07-27 | 中国电子科技集团公司第四十研究所 | 一种实现自动测试系统软件中仪器参数界面动态配置方法 |
CN108647145A (zh) * | 2018-05-10 | 2018-10-12 | 清华大学 | 软件内存安全检测方法及系统 |
CN110837472A (zh) * | 2019-11-06 | 2020-02-25 | 腾讯科技(深圳)有限公司 | 一种浏览器测试方法、装置及计算机设备 |
Non-Patent Citations (4)
Title |
---|
TIANXIAO GU 等: "Improving Reliability of Dynamic Software Updating Using Runtime Recovery", 《IN PROCEEDINGS OF THE 23RD ASIA-PACIFIC SOFTWARE ENGINEERING CONFERENCE (APSEC)》 * |
XIN PENGA 等: "Self-tuning of software systems through dynamic quality tradeoff and value-based feedback control loop", 《THE JOURNAL OF SYSTEMS AND SOFTWARE》 * |
张开便 等: "基于模糊测试的网络协议漏洞挖掘研究", 《现代电子技术》 * |
邹燕燕 等: "变异策略感知的并行模糊测试研究", 《信息安全学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113055465A (zh) * | 2021-03-11 | 2021-06-29 | 南京大学 | 一种支持事务一致性的微服务动态更新方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112363954B (zh) | 2021-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Tonella | Evolutionary testing of classes | |
Moghadam et al. | Automated refactoring using design differencing | |
US6944848B2 (en) | Technique using persistent foci for finite state machine based software test generation | |
US7644398B2 (en) | System and method for automatic test-case generation for software | |
Christopoulou et al. | Automated refactoring to the strategy design pattern | |
EP3244306B1 (en) | A computer-implemented method for allowing modification of a region of original code | |
CN112363954B (zh) | 基于对象状态一致性的软件动态更新测试方法 | |
Mahouachi et al. | Search-based refactoring detection using software metrics variation | |
Pizzorno et al. | CoverUp: Coverage-Guided LLM-Based Test Generation | |
CN115757149A (zh) | 一种自动化测试方法、系统、电子设备及存储介质 | |
Ahrendt et al. | Proof-based test case generation | |
CN111221731B (zh) | 一种快速获取到达程序指定点测试用例的方法 | |
Li et al. | FuzzBoost: Reinforcement compiler fuzzing | |
Saumya et al. | Xstressor: Automatic generation of large-scale worst-case test inputs by inferring path conditions | |
CN115098355B (zh) | 基于历史数据驱动的jvm测试程序生成方法 | |
Molderez et al. | Automated generalization and refinement of code templates with ekeko/x | |
CN115310095A (zh) | 一种区块链智能合约混合形式化验证方法及系统 | |
CN110209593B (zh) | 一种面向偏好设置的安卓应用测试方法 | |
Palka | Testing an Optimising Compiler by Generating Random Lambda Terms | |
Derezińska et al. | Mutation testing process combined with test-driven development in. net environment | |
Xu et al. | Using genetic algorithms to repair JUnit test cases | |
Gabor et al. | Software-fault injection in source code with Clang | |
Diepenbeck et al. | Towards automatic scenario generation from coverage information | |
CN113064821A (zh) | 一种基于搜索的编译器优化序列故障定位方法 | |
Sukur et al. | Evaluating Fitness Functions for Automated Code Transformations. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220119 Address after: 250014 No. 41-1 Qianfo Shandong Road, Jinan City, Shandong Province Patentee after: SHANDONG CVIC SOFTWARE ENGINEERING Co.,Ltd. Address before: 210023 163 Xianlin Road, Qixia District, Nanjing, Jiangsu Patentee before: NANJING University |