CN112579437B - 一种程序运行过程符合性验证方法 - Google Patents

一种程序运行过程符合性验证方法 Download PDF

Info

Publication number
CN112579437B
CN112579437B CN202011378877.6A CN202011378877A CN112579437B CN 112579437 B CN112579437 B CN 112579437B CN 202011378877 A CN202011378877 A CN 202011378877A CN 112579437 B CN112579437 B CN 112579437B
Authority
CN
China
Prior art keywords
program
log
instrumentation
verification
information
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.)
Active
Application number
CN202011378877.6A
Other languages
English (en)
Other versions
CN112579437A (zh
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.)
Suzhou Research Institute Institute Of Electronics Chinese Academy Of Sciences
Southeast University
Original Assignee
Suzhou Research Institute Institute Of Electronics Chinese Academy Of Sciences
Southeast University
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 Suzhou Research Institute Institute Of Electronics Chinese Academy Of Sciences, Southeast University filed Critical Suzhou Research Institute Institute Of Electronics Chinese Academy Of Sciences
Priority to CN202011378877.6A priority Critical patent/CN112579437B/zh
Publication of CN112579437A publication Critical patent/CN112579437A/zh
Application granted granted Critical
Publication of CN112579437B publication Critical patent/CN112579437B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (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

一种程序运行过程符合性验证方法
技术领域
本发明涉及属于软件检测与评估领域,具体涉及一种程序运行过程符合性验证方法。
背景技术
随着软件应用规模的日益扩大和软件应用环境的日益复杂,如何保证软件质量、软件的规范性以及标准符合性等逐渐成为人们关注的焦点,软件检测技术也因此得到了迅猛的发展。软件缺陷检测通常分为静态检测和动态检测两个方面。一直以来,静态检测技术由于其更具有前瞻性的特点得到了良好的发展,被广泛应用于各类软件检测领域。而近年来,立足于软件运行过程的动态检测技术也越来越受到大家的重视,该技术通常采用动态插桩等手段对软件程序执行的每个环节进行数据监控分析,从而得到软件内部每个子功能的正确性、稳定性、性能等特点,同时也可得到软件运行时对系统环境的影响、资源占用情况等信息,从而对软件的质量进行综合评价。然而,经过研究发现,当前软件动态检测技术重在软件功能正确性和性能等方向,鲜有针对软件内部程序运行过程符合性的验证和评价方法。
软件插桩技术是软件自动化验证中的关键技术,对于软件运行时监测有着重要的意义。所谓插桩,即在目标程序内部植入 探针程序,通过探针程序嗅探目标软件内部的运行逻辑和流程并将特征数据抛出,分析这些特征数据获取目标程序控制流和数据流信息,进而得到逻辑覆盖等动态信息,以此来实现对目标程序的监测。在常用的插桩技术中,目标代码插桩技术因其高效性和低侵入性得到了很多软件测试开发者的青睐,该技术一直以来被广泛应用于软件系统监控、性能评价等领域,然而在软件程序的过程符合性验证领域,其能力并未得到很好的发挥。
发明内容
本发明的目的在于提出一种程序运行过程符合性验证方法。
实现本发明目的的技术解决方案为:一种程序运行过程符合性验证方法,包括动态插桩和过程验证两个环节,动态插桩工作时,接收并解析用户传入的指令,执行插桩启停过程,并回传过程数据日志;过程验证接收过程数据日志,提取日志中方法间的关系(包括顺序、并行、选择、循环等)建立过程图模型,并将过程图模型与标准规则进行顺序匹配,从而验证程序运行过程的标准符合性。
进一步的,所述动态插桩工作时,接收并解析用户传入的指令,执行插桩启停过程,并回传过程数据日志,具体过程如下:
(1)远程请求预处理
远程请求预处理设计的目的是接收并处理用户发来的终端请求,所述终端请求通过URL的形式传递,将插桩动作类型、任务ID、目标软件端口号以及拦截规则这些信息传入控制中心;远程请求预处理接收到URL请求后会进行相应的解析,将上述信息分类传递至后续过程使用;
(2)插桩控制
插桩控制接收预处理过程传递的信息,调用内部预先设计的插桩程序,完成插桩的开始和停止动作;所述插桩程序为本环节的核心部分,其在目标软件运行后,以一种目标软件无感知的方式链接到目标软件上,向拦截规则指定的程序段中植入 一段信息获取与日志记录的代码,当目标软件执行到插桩点时,会执行植入 的代码进行信息获取和日志信息生成;
(3)插桩日志处理
插桩日志作为最终图形化验证对象的数据来源,插桩日志需满足如下要求: 1)插桩日志为文本文件格式,其命名采用三段式风格,第一段内容为某次验证任务的唯一识别ID,第二段内容为日志生成的起始时间,第三段内容可用固定字符串标明该日志为插桩日志;2)日志保存路径存储在数据库中,日志生成和回传时会对路径信息进行读取,该信息在客户端中可配置;3)日志内容由若干条目组成,条目描述的信息细化至待测程序中的函数方法块。
更进一步的,所述插桩控制过程使用JavaAgent机制实现,采用两种针对字节码的辅助插桩方式:一是在JVM加载class文件之前进行拦截并对字节码执行所需的变更操作完成插桩;二是在JVM运行期间通过attach操作,将代码植入已经加载的类的字节码中完成对字节码的插桩。
最进一步的,所述插桩控制过程包括参数解析、插桩算法调度、语句块部署,具体为:
首先,JavaAgent程序将预处理过程传入的参数进行拆分和解析,得到待插桩程序段的绝对位置以及插桩拦截方式;
所述拦截方式有两种:定位到包进行拦截和定位到具体方法进行拦截,根据拦截方式的不同,调度对应的JavaAgent字节码处理程序对拦截目标代码进行遍历,并将遍历得到的字节码内容添加至JavaAgent机制提供的插桩算法程序中;
插桩算法程序获取到目标字节码后,会进行进一步遍历和过滤,判断该字节码对应的目标程序类是否已被加载至JVM中;若尚未加载,则根据JavaAgent 程序中预先编写完成的部署程序在目标字节码中进行插桩语句块部署;若已加载至JVM,则调用JavaAgent机制提供的“attach”功能将插桩语句块部署到目标字节码中。
进一步的,所述过程验证接收过程数据日志,提取日志中方法间的关系建立过程图模型,并将过程图模型与标准规则进行顺序匹配,从而验证程序运行过程的标准符合性,具体方法为:
(1)日志预处理
预处理提取描述程序执行过程的信息,根据插桩日志中记录的请求URI信息区分不同的操作,对于每一次操作,按照执行先后顺序提取日志中的方法名,据此,将方法名用数字编号形成数字链,通过一系列数字链实现对于某次任务不同操作轨迹信息的量化描述;
(2)过程图建模
对预处理得到的轨迹信息,采用α算法生成过程图模型,α算法相关定义如下:
①顺序“>”:若用以描述轨迹的数字链中,数字“1”直接出现在数字“3”前面,用“1>3”来表述二者之间的关系;
②并行“|”:若“1>3”且“3>1”成立,则“1|3”成立;
③选择“#”:若从未出现过“1>3”和“3>1”,则“1#3”成立;
(3)规则匹配
采用顺序方法验证目标软件的执行顺序是否符合规范,同时给出方法的相关信息,若不符合规范则报出相应的错误;所述顺序方法验证将规则文件中的过程规则描述信息通过数字进行编号,生成过程数字序列,然后并将这些序列逐条与轨迹模型图进行匹配,即得验证结果。
更进一步的,所述验证结果支持输出两种类型的错误:一是规则中出现了未执行的方法;二是规则顺序不符合规范,对于错误,会输出错误的原因和错误的定位。
一种程序运行过程符合性验证系统,基于所述方法进行程序运行过程符合性验证。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述方法进行程序运行过程符合性验证。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述方法进行程序运行过程符合性验证。
首先在不影响目标软件运行的前提下,对目标软件进行动态插桩,插桩点会对程序运行时的轨迹、调度关系等信息进行捕获,并将信息保存到日志文件中;
在目标程序完成预定的执行流程后,将该阶段生成的日志文件进行回传,然后通过数据挖掘算法得到日志中方法间的关系(包括顺序、并行、选择、循环等) 并建立过程图模型;最后,将过程图模型与标准规则进行顺序匹配,从而验证程序运行过程的标准符合性。
本发明与现有技术相比,其显著优点为:通过插桩埋点、数据建模等方法直观、定量地展示出程序运行时内部的执行流程信息,提供了一种程序运行流程验证的方法,填补了针对软件运行过程符合性验证的空白。
附图说明
图1为本发明的整体架构图;
图2为动态插桩示意图;
图3为过程验证示意图;
图4为插桩日志预处理示意图;
图5为过程模型建立示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本发明的整体框架及工作情况如图1所示,核心部分为动态插桩和过程验证两个环节。动态插桩工作时,可接收并解析用户传入的指令,执行插桩启停过程,并回传过程数据日志。过程验证可接收过程数据日志,通过预处理和建模形成过程信息模型,最后将该模型与标准规则进行匹配,输出程序运行过程符合性验证结果。
1、动态插桩
动态插桩对象为待测软件编译生成的字节码,动态插桩原理如图2所示。首先获取用户指令并解析,依照指令完成对目标软件特定程序段的插桩和解插桩,并将捕获的信息生成日志回传。该操作需要远程请求预处理、插桩启停控制和插桩日志处理三个过程配合完成。
(1)远程请求预处理
远程请求预处理设计的目的是接收并处理用户发来的终端请求。终端请求通过URL的形式传递,将插桩动作类型、任务ID、目标软件端口号以及拦截规则等信息传入控制中心。远程请求预处理接收到URL请求后会进行相应的解析,将上述信息分类传递至后续过程使用,并将其中的关键信息记录至数据库表中以备用户进行操作记录查询。
(2)插桩控制
插桩控制接收预处理过程传递的信息,调用内部预先设计的插桩程序,完成插桩的开始和停止动作。插桩程序为本环节的核心部分,其主要原理是:在目标软件运行后,以一种目标软件无感知的方式链接到目标软件上,向拦截规则指定的程序段(即插桩点)中植入 一段信息获取与日志记录的代码。当目标软件执行到插桩点时,会执行植入 的代码进行信息获取和日志信息生成。
插桩控制过程主要使用JavaAgent机制实现,本发明同时采用两种针对字节码的辅助插桩方式。一是在JVM加载class文件之前进行拦截并对字节码执行所需的变更操作完成插桩;二是在JVM运行期间通过attach操作,将代码植入已经加载的类的字节码中完成对字节码的插桩。
插桩控制过程包括参数解析、插桩算法调度、语句块部署。首先,JavaAgent 程序将预处理过程传入的参数进行拆分和解析,得到待插桩程序段的绝对位置以及插桩拦截方式。本发明支持输入的拦截方式有两种:定位到包进行拦截和定位到具体方法进行拦截。根据拦截方式的不同,调度对应的JavaAgent字节码处理程序对拦截目标代码进行遍历,并将遍历得到的字节码内容添加至JavaAgent机制提供的插桩算法程序中。插桩算法程序获取到目标字节码后,会进行进一步遍历和过滤,判断该字节码对应的目标程序类是否已被加载至JVM中。若尚未加载,则根据JavaAgent程序中预先编写完成的部署程序在目标字节码中进行插桩语句块部署;若已加载至JVM,则调用JavaAgent机制提供的“attach”功能将插桩语句块部署到目标字节码中。
插桩程序所需传入的参数有某次任务的唯一标识ID、插桩程序绝对位置、待测软件进程号、拦截方式、插桩启停标志位等。启动插桩时,程序会调用JDK 中自带的tools.jar工具包将开发完成的JavaAgent程序链接到待测软件上,并将解析完成的拦截规则等参数作为入参传递给JavaAgent程序。JavaAgent程序依照其内部逻辑、根据入参信息定位到待测软件的目标程序段,通过规则过滤获取到符合条件的类和方法,并根据预先输入的拦截规则确定具体的拦截方式,依次向类体或方法体的首末位置植入编辑完成的系统时间获取语句块和日志记录语句块,完成对目标代码的插桩。停止插桩的操作与启动插桩整体类似,最后一个环节改为去除已植入目标代码的语句块。停止插桩操作通常在插桩日志生成并回传完成之后进行。
(3)插桩日志处理
插桩日志作为最终图形化验证对象的数据来源,其生成和传输处理是本发明中极其重要的一环。
本发明对于插桩日志的要求有:1)对于某次验证任务,其插桩日志必须单一可识别;2)插桩日志必须有明确且可配置的保存路径,便于进行日志回传和运维过程查验;3)日志描述内容必须详尽且精确,可充分记录并还原程序运行过程的详细信息。
以此为依据,对插桩日志进行如下规定:1)插桩日志为文本文件格式,其命名采用三段式风格,第一段内容为某次验证任务的唯一识别ID,第二段内容为日志生成的起始时间,第三段内容可用固定字符串标明该日志为插桩日志;2) 日志保存路径存储在数据库中,日志生成和回传时会对路径信息进行读取,该信息在客户端中可配置;3)日志内容由若干条目组成,条目描述的信息细化至待测程序中的函数方法块。
2、过程验证原理
过程验证主要工作流程如图3所示。在动态插桩回传日志完成后,日志预处理环节首先对日志信息中的方法名进行提取并编号,形成逐条路径。然后,过程图生成环节借助过程验证经典算法α算法得到方法间的关系矩阵,再根据该矩阵生成图模型,作为之后规则验证的匹配对象。图模型生成后,将所要验证的规则与图模型进行匹配,生成匹配结果。
(1)日志预处理
过程验证获取到插桩过程传入的插桩日志后,需对日志进行预处理,提取描述程序执行过程的信息,如图4所示。根据插桩日志中记录的请求URI信息区分不同的操作,对于每一次操作,按照执行先后顺序提取日志中的方法名。据此,将方法名用数字编号形成数字链,通过一系列数字链实现对于某次任务不同操作轨迹信息的量化描述。
(2)过程图建模
本发明采用α算法生成过程图模型,α算法相关定义如下:
①顺序“>”:若用以描述轨迹的数字链中,数字“1”直接出现在数字“3”前面,我们就可以用“1>3”来表述二者之间的关系;
②并行“|”:若“1>3”且“3>1”成立,则“1|3”成立;
③选择“#”:若从未出现过“1>3”和“3>1”,则“1#3”成立。
对于图4所示的预处理轨迹信息,可以得出图5中“Ⅰ”所示的矩阵,并进一步得到“Ⅱ”所示的邻接矩阵。将矩阵信息进一步提取得到轨迹信息表达式,再通过α算法转化可得“Ⅲ”所示的轨迹模型图。
(3)规则匹配
本发明采用顺序方法验证目标软件的执行顺序是否符合规范,同时给出方法的相关信息,若不符合规范则报出相应的错误。顺序方法验证将规则文件中的过程规则描述信息通过数字进行编号,生成过程数字序列,然后并将这些序列逐条与轨迹模型图进行匹配,即可得到验证结果。对于匹配结果,本发明支持输出两种类型的错误:(1)规则中出现了未执行的方法;(2)规则顺序不符合规范。对于错误,会输出错误的原因和错误的定位。
以图5中建立的模型为例:对于路径“1,2,3”,会将“1,2”和“2,3”两两进行验证,看它们之间在图模型中是否存在路径,由图可知此条路径符合规范;若规则序列出现路径“1,3”,与过程模型图匹配可发现,虽然1和3之间没有直接的路径,但是1可以通2,2再通3,故此条路径符合规范,该次验证也通过;若规则序列中出现了路径“5,6”,过程图中未出现“5”和“6”对应的方法,该情形则对应上述的错误(1);若规则序列中出现了路径“1,3,2”,由于过程模型图中没有3到2的路径,该情形对应上述错误(2)的情况。
验证报告以指定格式输出,报告以某次任务的单一可识别ID为基础进行命名,若任务涉及到不同的程序包,则结果记录会以包进行分组显示。
本发明还提出一种程序运行过程符合性验证系统,基于所述方法进行程序运行过程符合性验证。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述方法进行程序运行过程符合性验证。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述方法进行程序运行过程符合性验证。
实施例
为了验证本发明方案的有效性,进行如下仿真实验。
Step1:将动态插桩程序部署在目标软件所在的机器上,其中远程请求预处理程序和插桩日志控制程序可以部署在同一JAR包中,插桩控制程序单独部署。
Step2:通过终端向部署完成的动态插桩程序发送HTTP请求,控制插桩程序启动,完成对目标软件程序的插桩,在终端提示插桩完成后手动停止,从而完成了插桩点的预埋。
Step3:目标软件正常运行过程中,当程序执行到预埋的插桩点时,其执行过程信息和当前系统信息等会被记录到监控日志中并保存在终端指定的路径下。
Step4:当目标软件程序的预定工作流程完成后,动态插桩程序可通过模拟 HTTP请求的方式将插桩日志回传到客户端。
Step5:验证过程处理程序捕获服务端回传的监控日志,对日志内容进行方法名提取、编号、排序等操作,最终形成由软件内部方法名按照一定规则组成的 csv文件。
Step6:通过α算法对csv文件进行进一步解析和处理,最终得到程序执行流程各方法之间的关系矩阵,建立起运行过程图模型。
Step7:将建立完成的过程图模型与软件运行过程标准中既定的规则进行匹配,最终得到该过程的运行符合性验证结果。
本发明通过插桩埋点、数据建模等方法直观、定量地展示出程序运行时内部的执行流程信息,提供了一种程序运行流程验证的方法,填补了针对软件运行过程符合性验证的空白。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (8)

1.一种程序运行过程符合性验证方法,其特征在于,包括动态插桩和过程验证两个环节,动态插桩工作时,接收并解析用户传入的指令,执行插桩启停过程,并回传过程数据日志;过程验证接收过程数据日志,提取日志中方法间的关系建立过程图模型,并将过程图模型与标准规则进行顺序匹配,从而验证程序运行过程的标准符合性;
所述动态插桩工作时,接收并解析用户传入的指令,执行插桩启停过程,并回传过程数据日志,具体过程如下:
(1)远程请求预处理
远程请求预处理设计的目的是接收并处理用户发来的终端请求,所述终端请求通过URL的形式传递,将插桩动作类型、任务ID、目标软件端口号以及拦截规则这些信息传入控制中心;远程请求预处理接收到URL请求后会进行相应的解析,将上述信息分类传递至后续过程使用;
(2)插桩控制
插桩控制接收预处理过程传递的信息,调用内部预先设计的插桩程序,完成插桩的开始和停止动作;所述插桩程序为本环节的核心部分,其在目标软件运行后,以一种目标软件无感知的方式链接到目标软件上,向拦截规则指定的程序段中植入一段信息获取与日志记录的代码,当目标软件执行到插桩点时,会执行植入的代码进行信息获取和日志信息生成;
(3)插桩日志处理
插桩日志作为最终图形化验证对象的数据来源,插桩日志需满足如下要求:1)插桩日志为文本文件格式,其命名采用三段式风格,第一段内容为某次验证任务的唯一识别ID,第二段内容为日志生成的起始时间,第三段内容用固定字符串标明该日志为插桩日志;2)日志保存路径存储在数据库中,日志生成和回传时会对路径信息进行读取,该信息在客户端中配置;3)日志内容由若干条目组成,条目描述的信息细化至待测程序中的函数方法块。
2.根据权利要求1所述的程序运行过程符合性验证方法,其特征在于,插桩控制过程使用JavaAgent机制实现,采用两种针对字节码的辅助插桩方式:一是在JVM加载class文件之前进行拦截并对字节码执行所需的变更操作完成插桩;二是在JVM运行期间通过attach操作,将代码植入已经加载的类的字节码中完成对字节码的插桩。
3.根据权利要求2所述的程序运行过程符合性验证方法,其特征在于,插桩控制过程包括参数解析、插桩算法调度、语句块部署,具体为:
首先,JavaAgent程序将预处理过程传入的参数进行拆分和解析,得到待插桩程序段的绝对位置以及插桩拦截方式;
所述拦截方式有两种:定位到包进行拦截和定位到具体方法进行拦截,根据拦截方式的不同,调度对应的JavaAgent字节码处理程序对拦截目标代码进行遍历,并将遍历得到的字节码内容添加至JavaAgent机制提供的插桩算法程序中;
插桩算法程序获取到目标字节码后,会进行进一步遍历和过滤,判断该字节码对应的目标程序类是否已被加载至JVM中;若尚未加载,则根据JavaAgent程序中预先编写完成的部署程序在目标字节码中进行插桩语句块部署;若已加载至JVM,则调用JavaAgent机制提供的“attach”功能将插桩语句块部署到目标字节码中。
4.根据权利要求1所述的程序运行过程符合性验证方法,其特征在于,所述过程验证接收过程数据日志,提取日志中方法间的关系建立过程图模型,并将过程图模型与标准规则进行顺序匹配,从而验证程序运行过程的标准符合性,具体方法为:
(1)日志预处理
预处理提取描述程序执行过程的信息,根据插桩日志中记录的请求URI信息区分不同的操作,对于每一次操作,按照执行先后顺序提取日志中的方法名,据此,将方法名用数字编号形成数字链,通过一系列数字链实现对于某次任务不同操作轨迹信息的量化描述;
(2)过程图建模
对预处理得到的轨迹信息,采用α算法生成过程图模型,α算法相关定义如下:
①顺序“>”:若用以描述轨迹的数字链中,数字“1”直接出现在数字“3”前面,用“1>3”来表述二者之间的关系;
②并行“|”:若“1>3”且“3>1”成立,则“1|3”成立;
③选择“#”:若从未出现过“1>3”和“3>1”,则“1#3”成立;
(3)规则匹配
采用顺序方法验证目标软件的执行顺序是否符合规范,同时给出方法的相关信息,若不符合规范则报出相应的错误;所述顺序方法验证将规则文件中的过程规则描述信息通过数字进行编号,生成过程数字序列,然后并将这些序列逐条与轨迹模型图进行匹配,即得验证结果。
5.根据权利要求4所述的程序运行过程符合性验证方法,其特征在于,所述验证结果支持输出两种类型的错误:一是规则中出现了未执行的方法;二是规则顺序不符合规范,对于错误,会输出错误的原因和错误的定位。
6.一种程序运行过程符合性验证系统,其特征在于,基于权利要求1-5任一项所述方法进行程序运行过程符合性验证。
7.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现权利要求1-5任一项所述方法进行程序运行过程符合性验证。
8.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5任一项所述方法进行程序运行过程符合性验证。
CN202011378877.6A 2020-12-01 2020-12-01 一种程序运行过程符合性验证方法 Active CN112579437B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011378877.6A CN112579437B (zh) 2020-12-01 2020-12-01 一种程序运行过程符合性验证方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011378877.6A CN112579437B (zh) 2020-12-01 2020-12-01 一种程序运行过程符合性验证方法

Publications (2)

Publication Number Publication Date
CN112579437A CN112579437A (zh) 2021-03-30
CN112579437B true CN112579437B (zh) 2022-11-29

Family

ID=75126842

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011378877.6A Active CN112579437B (zh) 2020-12-01 2020-12-01 一种程序运行过程符合性验证方法

Country Status (1)

Country Link
CN (1) CN112579437B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113391997A (zh) * 2021-05-27 2021-09-14 东南大学 一种基于有向图的服务运行正确性验证方法
CN113778860B (zh) * 2021-08-16 2023-11-28 北京仿真中心 基于模型检测的系统运行时验证方法、系统和计算机设备
CN114168454B (zh) * 2021-11-23 2023-03-10 叶嵩 一种基于动态插桩-销桩技术的异步测试方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170140067A1 (en) * 2015-11-12 2017-05-18 Sick Ag Method Having a Search Program and a Search Box
US20180032423A1 (en) * 2016-07-27 2018-02-01 Undo Ltd. Debugging systems
CN108536581A (zh) * 2018-03-08 2018-09-14 华东师范大学 一种针对源代码的运行时形式化验证方法及系统
CN109697163A (zh) * 2018-12-14 2019-04-30 西安四叶草信息技术有限公司 程序测试方法及设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170140067A1 (en) * 2015-11-12 2017-05-18 Sick Ag Method Having a Search Program and a Search Box
US20180032423A1 (en) * 2016-07-27 2018-02-01 Undo Ltd. Debugging systems
CN108536581A (zh) * 2018-03-08 2018-09-14 华东师范大学 一种针对源代码的运行时形式化验证方法及系统
CN109697163A (zh) * 2018-12-14 2019-04-30 西安四叶草信息技术有限公司 程序测试方法及设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
面向云计算模式运行环境可信性动态验证机制;刘川意等;《软件学报》;20130725;第662-674页 *

Also Published As

Publication number Publication date
CN112579437A (zh) 2021-03-30

Similar Documents

Publication Publication Date Title
CN112579437B (zh) 一种程序运行过程符合性验证方法
CN110427331B (zh) 基于接口测试工具自动生成性能测试脚本的方法
Walkinshaw et al. Reverse engineering state machines by interactive grammar inference
CN108459954A (zh) 应用程序漏洞检测方法和装置
US20170293551A1 (en) Separating test verifications from test executions
CN112540924A (zh) 接口自动化测试方法、装置、设备及存储介质
CN110231937A (zh) 脚本缺陷扫描方法、装置、计算机设备和存储介质
CN111797006B (zh) 一种线程测试的方法、装置、设备以及存储介质
CN110688313A (zh) 一种VxWorks操作系统下软件测试的故障注入方法
US7797590B2 (en) Consensus testing of electronic system
CN112559343B (zh) 测试路径生成方法及相关设备
CN108446224B (zh) 移动端上应用程序的性能分析方法、存储介质
CN111221721A (zh) 一种单元测试案例自动化录制和执行方法及装置
CN112612697A (zh) 一种基于字节码技术的软件缺陷测试定位方法及系统
CN111124937B (zh) 基于插桩函数辅助提高生成测试用例效率的方法及系统
CN111459796B (zh) 自动化测试方法、装置、计算机设备和存储介质
CN109101355B (zh) 一种提取错误现场特征测试激励的处理器调试方法
CN110427287A (zh) 主板功能测试通用系统及其方法
CN115391230A (zh) 一种测试脚本生成、渗透测试方法、装置、设备及介质
CN108228448B (zh) 一种代码跟踪方法及装置
CN115373984A (zh) 代码覆盖率确定方法及装置
WO2021104027A1 (zh) 代码性能检测方法、装置、设备及存储介质
CN110321130B (zh) 基于系统调用日志的不可重复编译定位方法
CN113495826A (zh) 一种单元测试代码的生成方法、单元测试方法和装置
CN113568662B (zh) 一种基于调用关系的代码变更影响范围分析方法及系统

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