CN116431476A - 一种基于代码上下文变异的jvm模糊测试方法 - Google Patents
一种基于代码上下文变异的jvm模糊测试方法 Download PDFInfo
- Publication number
- CN116431476A CN116431476A CN202310240369.9A CN202310240369A CN116431476A CN 116431476 A CN116431476 A CN 116431476A CN 202310240369 A CN202310240369 A CN 202310240369A CN 116431476 A CN116431476 A CN 116431476A
- Authority
- CN
- China
- Prior art keywords
- test
- information
- mutation
- code
- mutation operator
- 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
- 238000010998 test method Methods 0.000 title claims abstract description 10
- 238000012360 testing method Methods 0.000 claims abstract description 84
- 230000035772 mutation Effects 0.000 claims abstract description 68
- 238000000034 method Methods 0.000 claims description 35
- 230000008569 process Effects 0.000 claims description 8
- 239000000284 extract Substances 0.000 claims description 7
- 230000007547 defect Effects 0.000 claims description 6
- 230000008676 import Effects 0.000 claims description 6
- 102100033814 Alanine aminotransferase 2 Human genes 0.000 claims description 3
- 101710096000 Alanine aminotransferase 2 Proteins 0.000 claims description 3
- 230000001419 dependent effect Effects 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 claims description 3
- 238000013136 deep learning model Methods 0.000 claims description 2
- 239000008186 active pharmaceutical agent Substances 0.000 claims 3
- 230000001960 triggered effect Effects 0.000 claims 1
- 238000013135 deep learning Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 6
- 238000000605 extraction Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000007849 functional defect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer 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/3684—Test management for test design, e.g. generating new test cases
-
- 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/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/088—Non-supervised learning, e.g. competitive learning
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及JVM模糊测试领域,且公开了一种基于代码上下文变异的JVM模糊测试方法,包括以下步骤:1、构建种子池,利用代码重构,语法检查和深度学习等手段从原始语料提取语义丰富且语法正确的种子程序;2、获取变异算子和代码上下文信息,即获取有效的变异算子和与其直接相关的上下文信息;3、基于代码上下文实现测试用例变异,即将变异算子插入种子程序,并给变异算子生成完整准确的上下文代码,获得语法正确的测试用例;4、执行差分测试并分析测试结果,使用差分测试的手段执行所有测试用例,并根据运行时信息分析其是否触发了JVM的潜在错误。本发明解决了种子程序与变异算子之间的变量冲突,有效提高了强类型语言测试用例的语法正确率。
Description
技术领域
本发明属于软件自动化测试领域,特别涉及一种基于代码上下文变异的JVM模糊测试方法。
背景技术
模糊测试(Fuzz i ng)起源于20世纪80年代,美国威斯康星大学的巴顿·米勒教授在开设的研究生课程项目上,开发了一个基本的命令列模糊器来测试Un i x程式,用随机数据来持续测试这些程式直到程序崩溃,这就是软件模糊测试技术首次被正式提出。软件模糊测试起初常被用于发现文件系统的漏洞和缺陷,而随着计算机技术的快速发展,这项技术在业界得到广泛应用,模糊测试逐渐被应用于其他各个领域的测试,例如网络协议、操作系统和其他应用程序,用于挖掘软件中可能存在的安全漏洞,在保障软件质量,降低软件维护成本等方面做出了重要贡献。
模糊测试是一种自动化的测试技术,它的基本思路是利用自动或半自动的手段,随机生成大量的输入数据,并将这些输入数据传递给被测试程序执行,并且通过监视程序的异常表现,例如断言、崩溃、输出错误等,来发现软件中潜在的漏洞。基于模糊器生成的输入数据的强随机性,模糊测试能够发现许多容易被软件开发人员和测试人员忽略的漏洞和缺陷。在软件测试领域,通过模糊测试既可以有效发现线程不安全、类型混淆和内存泄漏等常见漏洞,也能够发现API参数取值边界未处理,代码文档错误,程序优化失败等隐蔽的软件缺陷。
随着编译器模糊测试技术的不断发展和完善,基于变异的模糊测试方法已经成为一种常见测试技术,该技术通过使用特定手段修改已有种子输入数据,来生成新的输入数据,进而传递给编译器执行测试。近年来,工业界和学术界已经提出了多种有效的变异技术,例如2019年CCF-A类会议ISSTA公布了测试工具ZEST,它可以结合程序的语义信息,在高度结构化的输入上实现随机变异,取得了显著的测试成果。Confuzz ion可以调用JDK标准库的API并随机改变其参数,添加类型检查语句,从而判断虚拟机是否出现类型混淆问题。在2022年CCF-A类会议ICSE发表了CONFETT I,它结合污点分析技术生成全局提示信息,指导了指定内容的变异算子的生成。
虽然以上JVM测试工具都已经取得了成功,发现了许多软件的缺陷和漏洞,但是模糊测试系统在变异获得测试用例的阶段,特别是针对强类型的程序语言,还有一个重要问题需要解决。那就是必须使用特定方法来确保强类型语言变异结果的语法正确性,否则大多数变异获得的测试用例无法通过编译器的语法检查,这样一来就不能执行触发更深层次的功能代码,遗漏了软件潜在的缺陷和漏洞,严重影响测试效率。
发明内容
本部分的目的在于概述本发明的实施例的一些方面以及简要介绍一些较佳实施例。在本部分以及本申请的说明书摘要和发明名称中可能会做些简化或省略以避免使本部分、说明书摘要和发明名称的目的模糊,而这种简化或省略不能用于限制本发明的范围。
鉴于上述现有技术存在的问题,提出了本发明。
针对现有技术的不足,本发明以使用强类型语言Java,对JVM进行测试为例,提供了一种基于代码上下文变异的JVM模糊测试方法,旨在针对性解决对强类型程序语言编译器进行模糊测试的技术难点。本发明包含了以下步骤:
(1)构建语义丰富且语法正确的种子池
首先收集大量Java类型文件作为原始语料,获取开源平台G ithub中Star排名前10000的热门仓库代码,提取其中所有Java文件。而基于Java程序语言的强类型与强依赖特性,这些文件只能在原项目的目录结构下,经过复杂的配置步骤才能正常执行,因此为了进一步获得语法正确、语义丰富的种子池,首先,检查原始语料并重构Java文件,筛选并去除了文件中依赖和调用原代码仓库程序的代码片段;接着进行了语法检查,保留其中语法正确的Java文件;最后,训练了深度学习模型GPT-2扩大种子池,提供了大量包含常用语法和丰富语义的Java代码进行模型预训练,继而使用语法正确的原始语料进行无监督学习,最后获得了语义丰富,语法正确的种子池。
(2)获取有效的变异算子和代码上下文信息
本发明以JVM的历史测试数据中的变量和代码块作为变异算子,使用了工具JavaParser,结合Java文件的语法解析树结构,提取了包含循环结构和分支结构的代码块并且识别了API标准库调用的代码块,也提取了基本类型以及引用类型的变量。根据Orac le JDK11的标准AP I文档建立了包含所有类的构造器,可调用方法,参数列表,返回类型,抛出错误类型等信息的数据库,与数据库匹配识别,对代码块中类的定义和方法的调用情况进行解析,存储了它们的类型,名称,内容,相关导入模块等基本详细信息。
同时,解析并存储与各个变异算子的完整代码上下文信息,即与变异算子直接相关的变量名称信息,变量类型信息,导入包信息等,使用变异算子时,将会把完整的代码上下文依赖信息和变异算子作为一个整体插入种子文件,即根据存储的上下文信息以生成新的变量声明,添加导入包信息等形式,生成真正的代码上下文,以此保证变异算子的语法有效性。
(3)基于代码上下文实现测试用例变异
为了使种子文件和变异算子充分结合,本发明随机选择了种子内部的被调用方法的任意位置来插入变异算子,并且在使用代码块类型变异算子时,除了添加必需的代码上下文信息以外,还需随机选择一个变量类型变异算子,与代码上下文中类型相同的变量替换;对应地,在使用变量类型变异算子时,除了添加它的代码上下文信息以外,还需要随机匹配一个包含相同类型变量的代码块类型变异算子,追加到变量后面。这样做可以使两类变异算子互相补充,充分利用它们的语义信息,提高变异结果的代码复杂性。
(4)执行差分测试并分析测试结果
为了更有效地发现JVM的功能缺陷和软件漏洞,本发明采用了差分测试的方式进行测试。该方法将产生变异测试用例集,交由多个JVM同时执行,并使用差分的思想标记可疑的执行结果。具体地说,执行结果按照少数服从多数的投票机制进行差分分类,将与大多数JVM执行结果不同的少数结果标记为可疑用例。这种方法提高了测试效率,同时也能够更准确地定位问题。
本发明采用了来自不同开发团队,支持不同JDK版本的JVM参与差分测试,这样做一方面可以横向对比由不同团队开发的JVM,更加全面地评估不同JVM的在性能和功能上实现的差别,另一方面也能够纵向对比相同JVM在两个不同版本JDK上的表现,有效评估由版本迭代更新造成的功能和性能差异。
分析测试结果的同时,本发明重点分析了差分测试结果的显著特征,例如特定的输出结果,报错信息,JVM执行返回值,特定测试用例语句等等,旨在将重复出现次数较多的误报过滤掉,实现减少人工分析的成本的目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明模糊测试流程;
图2为提取变量类型变异算子算法;
图3为提取代码块类型变异算子算法;
图4为变异算子提取示例;
图5为提取变异算子代码上下文信息算法。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非有特殊说明,本发明中的术语或方法根据相关领域普通技术人员的认识理解或采用已有相关方法实现。
本发明测试集的构建方法采用现有方法或在不违背本发明目的和构思的前提下所改进的方法构建。如可采用基于语法解析树的代码提取工具或基于深度学习的文本生成工具进行构建获取;更具体例如:JavaParser代码解析工具,GPT-2文本生成模型等构建获取。
本发明提取变量类型变异算子的算法如附图2所示,算法的功能是利用Javaparser获取每个Java文件的可解析单元Comp i l at ionUn its,接着分别从字段声明语句,静态初始化声明语句,方法声明语句三个位置着手,提取变量的名称,类型,初始化赋值内容,提取过程中需注意:不是所有变量都像基础类型变量一样不依赖任何其他变量,大多数变量初始赋值也拥有较为复杂的程序结构和语义信息,直接使用变异算子只会因为包含未声明变量而导致语法无效,在Java代码编译为字节码的阶段会报出“cannot fi ndsymbo l”的错误信息。譬如图3中展示了从历史测试文件Secur ityProv iderModu larTest.java中识别到的变量safeArgs,它的初始值内部包含了Li st<Str i ng>类型变量commonArgs和Str i ng类型变量args,并且使用了包java.ut i l.stream.Stream提供的Stream.cancat和Stream.of方法,将这些重要信息一并提取是非常必要的;最后,本发明将提取的变量名称,类型,初始值,相关变量信息,相关导入包信息等一系列变异算子和代码上下文信息整合并存储到数据库中。
本发明提取代码块类型变异算子的算法如附图4所示,首先利用Javaparser获取每个Java文件的可解析单元Compi l at ionUn its,接着按照类型定位代码块,将ForStmt,DoStmt,Wh i l eStmt,ForEachStmt以及I fStmt等包含分支结构与循环结构的不同类型代码块作为提取目标,然后对已定为的代码块继续进行解析,与标准API数据库匹配识别,将匹配到的标准类的定义和API调用情况进行记录,同时,还需提取与标准API库中匹配成功的变量名称和类型信息,记录代码块的完整代码上下文信息,保存到数据库中。
在进行变异算子插入时,需要按照前述提取并保存的代码上下文信息生成真正的代码上下文,具体过程见附图5,生成上下文的过程与变异算子插入过程是相辅相成的,只有生成了正确的代码上下文才能保证插入变异算子后测试用例的语法有效性。所以本发明需要获取种子文件中从起始位置到变异算子插入位置的所有被声明变量的名称和类型信息列表,为了避免种子文件与变异算子之间的变量冲突,需要遵循“所有已声明的变量不再重复声明,所有出现在程序中的新变量需要先被声明”的语法原则,对比变异算子和种子文件的两张变量信息列表,在变异算子的插入位置生成新的变量声明,将涉及重复声明的变量名称进行修正,这样才能保证生成的测试用例具有较高的语法有效性。
本发明的差分测试由Orac l e公司开发的HotSpot,由IBM公司开发的OpenJ9,由Orac l e公司开发的Graa lVM以及由Azu l公司开发的Zu l u这四个最具代表性、并且被长期维护的开源JVM参与差分测试,并且给每个JVM分别配置了两种由官方长期维护的JDK版本:JDK11与JDK17,共准备了8个不同的测试环境。
在更具体的方案中,JVM的执行结果是根据返回值和输出信息来确定的。举个例子,如果执行测试用例的返回值为-9,则执行结果为“T imeout”(即执行超过指定时长);如果返回值为其他负数,则执行结果为“Crash”(即软件崩溃);如果返回值为0,且各JVM输出信息均一致,则执行结果为“Pass”(即执行通过);如果返回值为0,但各JVM输出信息不一致,则执行结果为“Output Error”(即输出信息错误);如果出现部分JVM报错,部分执行通过的情况,则执行结果为“Scr ipt Error”(即程序运行过程出错)。
如果出现可疑的执行结果(除了“执行通过”),需要结合JDK标准文档和JVM说明文档对测试用例和执行过程信息进行人工分析。最终,应提交错误报告以得出结论。在分析过程中,对于频繁出现的误报结果,提取其输出信息,报错内容,测试用例特征和返回值,将其余类似误报过滤掉,有效减少了分析可疑结果花费的时间成本。
实施例
在本实施例中,实验平台是一台搭载了主频3.30GHz的I nte li9-9940X处理器,内存为128GB的Ubuntu 18.04(内核版本5.4.0)操作系统的高性能服务器。
本实施例的被测试JVM是8个最新版本的JVM,分别为:HotSpot的jdk11和jdk17版本、OpenJ9的jdk11和jdk17版本、Graa lVM的jdk11和jdk17版本和Zu l u的jdk11和jdk17版本;
在本实施例中测试集按照发明内容所述的种子池构建方法,收集到种子文件20万余个,按照实施方法中所述提取两种类型的变异算子,变量类型变异算子共有252950个,代码块类型变异算子共有109804个,其中循环类型语句有34469个,分支类型语句共有75335个;同时,通过解析JDK标准文档获得2712个类的描述信息,构造语句,参数列表等内容,构建了标准API数据库。通过使用本发明的变异方法,获得了20万余个测试用例,语法正确率超过了85%,达到了使用代码上下文提高强类型语言语法正确率的目的。
采用本发明的产生的测试用例对上述被测JVM进行了测试:
对8个JVM进行了长达60天的差分测试,在进行差分测试时,该实施例将投票机制的阈值默认设定为60%(即为多数),即对测试用例集合中的每一个测试用例,利用8个JVM同时进行测试,如果有5个以上的JVM执行结果一致,此执行结果将被视为正确结果,与此结果不一致的执行结果标记为可疑结果,对应的测试集用例将被标记为可疑用例,最后对可疑测试用例进行分析。
本方法已经发现了13个被开发团队确认的、并且与JVM中的功能,文档以及性能相关的软件缺陷,均已经提交了详细的错误报告,并被开发团队修复。以下测试用例实例展示了本发明方法的测试效果,证明了本方法能够有效发现JVM中的功能,文档以及性能方面的问题:
测试用例1:
测试用例1展示的是OpenJ9的功能实现错误,OpenJ9在此测试用例中使用Try-Catch语句捕获了I l l ega l StateExcept i on类型对象,但在调用它的getCause方法时返回了空值,而不是一个具体的对象,这种行为与HotSpot不一致;并且,JDK标准文档中规定,I l l ega l StateExcept i on类型对象调用getCause方法时,应返回一个Throwabl e对象,由此可见,OpenJ9的实现也违反了JDK编标准文档的规定。
测试用例2:
测试用例2是OpenJ9的代码文档说明错误,根据标准,用例中的方法ensureCapacity用于保证Str i ngBu i l der类型对象sb的容量为指定值,此处的指定值说的是:对象原容量的2倍与所传参数之中取最大值;而Openj9的jdk11版本在给方法传递参数为I nteger.MAX_VALUE+1时,却在执行期间报出“Out Of Memory”的错误,这与JDK标准文档要求不符。经过与开发团队的分析与讨论,该情况出现的实际原因是:由于执行时未指定虚拟机参数CompactStr i ngs,JVM就会报错,这是OpenJ9的特定的设置,但在OpenJ9的代码文档中并未对此情况做出明确规定或说明。
测试用例3:
测试用例3是JVM的性能问题,即OpenJ9在执行test2方法中定义的大规模循环时,与其他JVM相比,出现了明显性能差异。只有OpenJ9的执行时间超过了60s,性能非常低,而其他JVM执行该循环只花费了不到7毫秒。这个问题出现的实际原因是:在此测试用例上,OpenJ9的J IT启发式优化功能没有成功启动,DLT模块(动态循环缩减)没有成功执行,导致了测试用例耗时过长
最后:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (2)
1.一种基于代码上下文变异的JVM模糊测试方法,其特征在于,整体运行过程依序包括四个步骤,即构建语义丰富且语法正确的种子池,获取有效的变异算子和代码上下文信息,基于代码上下文实现测试用例变异以及执行差分测试并分析测试结果,具体过程描述如下:
步骤1、构建语义丰富且语法正确的种子池。收集大量Java类型文件作为原始语料,使用代码重构,语法检查和利用深度学习模型GPT-2生成Java程序等手段,获得了语义丰富且语法正确的种子池。
步骤2、获取有效的变异算子和代码上下文信息。本发明使用了工具JavaParser,结合Java文件的语法解析树结构,提取了历史数据中基本类型以及引用类型的变量和所有循环结构类型和分支结构类型的代码块作为变异算子,并且构建了API标准库,准确识别变异算子中调用API的信息,收集并保存了与变异算子直接相关的变量名称,类型和导入包等代码上下文信息。
步骤3、基于代码上下文实现测试用例变异。随机选择了种子程序的被调用方法的任意位置来插入变异算子,基于步骤2所收集信息,给变异算子生成必需的上下文代码。使用代码块类型变异算子时,还需随机选择一个变量类型变异算子,与上下文中类型相同的变量替换;对应地,在使用变量类型变异算子时,也需要追加一个与其相关的代码块类型变异算子,既提高了测试用例的语法正确率,也充分利用两类变异算子的语义信息;
步骤4、执行差分测试并分析测试结果。配置了来自不同团队,不同版本的JVM,使用差分测试的手段执行步骤3中所有的测试用例,执行结果按照少数服从多数的投票机制进行差分分类,将与大多数JVM执行结果不同的少数结果标记为可疑用例,并根据运行时信息分析其是否触发了JVM的潜在错误和缺陷。
2.根据权利要求1所述的一种基于代码上下文变异的JVM模糊测试方法,其特征在于,步骤2中提取的代码上下文信息包括:
与变异算子直接相关的API标准库调用信息,即类的构造器,可调用方法,参数列表,返回类型,抛出错误类型等信息;还有与变异算子直接相关的变量名称信息,变量类型信息,导入包信息等其他上下文信息。对于每个变异算子,它在变异时与它的完整代码上下文依赖信息是一个不可分割的整体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310240369.9A CN116431476A (zh) | 2023-03-14 | 2023-03-14 | 一种基于代码上下文变异的jvm模糊测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310240369.9A CN116431476A (zh) | 2023-03-14 | 2023-03-14 | 一种基于代码上下文变异的jvm模糊测试方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116431476A true CN116431476A (zh) | 2023-07-14 |
Family
ID=87089806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310240369.9A Pending CN116431476A (zh) | 2023-03-14 | 2023-03-14 | 一种基于代码上下文变异的jvm模糊测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116431476A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117009231A (zh) * | 2023-07-28 | 2023-11-07 | 浙江大学 | 基于对话式大语言模型的高可靠单元测试自动生成方法及装置 |
CN117370994A (zh) * | 2023-12-08 | 2024-01-09 | 浙江君同智能科技有限责任公司 | 基于模糊测试的大语言模型漏洞检测方法和装置 |
-
2023
- 2023-03-14 CN CN202310240369.9A patent/CN116431476A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117009231A (zh) * | 2023-07-28 | 2023-11-07 | 浙江大学 | 基于对话式大语言模型的高可靠单元测试自动生成方法及装置 |
CN117009231B (zh) * | 2023-07-28 | 2024-03-29 | 浙江大学 | 基于对话式大语言模型的高可靠单元测试自动生成方法及装置 |
CN117370994A (zh) * | 2023-12-08 | 2024-01-09 | 浙江君同智能科技有限责任公司 | 基于模糊测试的大语言模型漏洞检测方法和装置 |
CN117370994B (zh) * | 2023-12-08 | 2024-02-27 | 浙江君同智能科技有限责任公司 | 基于模糊测试的大语言模型漏洞检测方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | Are code examples on an online q&a forum reliable? a study of api misuse on stack overflow | |
JP5791698B2 (ja) | アバップソースコードのコード検査遂行システム | |
Martin et al. | Finding application errors and security flaws using PQL: a program query language | |
Liang et al. | AntMiner: mining more bugs by reducing noise interference | |
US6928393B2 (en) | Method and system for supporting negative testing in combinatorial test case generators | |
CN116431476A (zh) | 一种基于代码上下文变异的jvm模糊测试方法 | |
Wang et al. | Pynose: A test smell detector for python | |
CN114490353A (zh) | 数据库管理系统模糊测试方法、装置及电子设备 | |
Bundell et al. | A software component verification tool | |
Zhong | Enriching compiler testing with real program from bug report | |
Nguyen et al. | Extracting significant specifications from mining through mutation testing | |
Di Nardo et al. | Augmenting field data for testing systems subject to incremental requirements changes | |
CN111666216B (zh) | 一种智能合约分析方法及装置 | |
Antal et al. | Is JavaScript Call Graph Extraction Solved Yet? A Comparative Study of Static and Dynamic Tools | |
CN115098355A (zh) | 基于历史数据驱动的jvm测试程序生成方法 | |
Chen et al. | Tracking down dynamic feature code changes against Python software evolution | |
CN110321130B (zh) | 基于系统调用日志的不可重复编译定位方法 | |
Lee et al. | Evaluating lexical approximation of program dependence | |
Xiao et al. | Performing high efficiency source code static analysis with intelligent extensions | |
Van Thuy et al. | Automated large program repair based on big code | |
CN113849814A (zh) | 一种可配置系统漏洞复现系统以及复现方法 | |
Chen et al. | Constructing exception handling chains for testing Java virtual machine implementations | |
Robertson | Java lock contention antipatterns and their detection within Java code | |
Stepanov et al. | BACKEND BUG FINDER-A PLATFORM FOR EFFECTIVE COMPILER FUZZING | |
Ginelli | Understanding and Improving Automatic Program Repair: A Study of Code-removal Patches and a New Exception-driven Fault Localization Approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |