CN113742208A - 一种软件检测方法、装置、设备及计算机可读存储介质 - Google Patents
一种软件检测方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113742208A CN113742208A CN202011119458.0A CN202011119458A CN113742208A CN 113742208 A CN113742208 A CN 113742208A CN 202011119458 A CN202011119458 A CN 202011119458A CN 113742208 A CN113742208 A CN 113742208A
- Authority
- CN
- China
- Prior art keywords
- branch
- node
- logic
- code
- logical
- 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
- 238000001514 detection method Methods 0.000 claims abstract description 68
- 238000000034 method Methods 0.000 claims abstract description 67
- 238000012360 testing method Methods 0.000 claims abstract description 51
- 238000012545 processing Methods 0.000 claims description 59
- 238000000354 decomposition reaction Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 9
- 238000013024 troubleshooting Methods 0.000 abstract description 14
- 238000013522 software testing Methods 0.000 abstract description 11
- 238000011161 development Methods 0.000 abstract description 8
- 238000010586 diagram Methods 0.000 description 16
- 238000012544 monitoring process Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 7
- 238000007639 printing Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 239000000243 solution Substances 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 230000009545 invasion Effects 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000006467 substitution reaction 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/3688—Test management for test execution, e.g. scheduling of test suites
Abstract
本申请提供一种软件检测方法、装置、设备及计算机可读存储介质,其中,所述方法包括:获取基于待检测软件的代码建立的逻辑分析树,所述逻辑分析树包括至少一个逻辑分支;获取所述逻辑分支的分支标识和目标节点,所述目标节点为所述逻辑分支的一个节点;根据所述目标节点对应代码块的位置,在所述代码中插入埋点,并基于所述埋点进行信息采集,得到采集到的信息;基于所述分支标识和所述采集到的信息对所述逻辑分支进行检测,得到检测结果。如此,通过结构化埋点,能够减少执行逻辑分支时所做的大量的日志输出工作,在满足逻辑分支检测同时,能够降低开发成本,提高软件测试与故障排查效率,在软件测试中有助于提升测试质量。
Description
技术领域
本申请涉及计算机应用技术领域,涉及但不限于一种软件检测方法、装置、设备及计算机可读存储介质。
背景技术
随着信息技术的普及,软件的复杂度越来越高,尤其是在互联网时代,面向亿级用户的软件系统,其复杂度相当之高,每个核心的业务操作都会涉及到复杂而庞大的逻辑分支,如何能检测出每一条逻辑分支,对于保障软件的质量或者排查软件的故障,都有非常大的帮助。相关技术中,在软件开发阶段,软件开发人员通过在业务逻辑分支中增加打印日志功能;在软件运行时,将各个逻辑分支的日志打印,形成日志;再通过查找日志分析业务逻辑分支,排查软件故障。
相关技术为了检测逻辑分支需要加入大量日志打印代码,每个逻辑分支还需要进行上下游节点的关联,因此需要处理很多信息,并在日志中打印,导致开发成本较高;另外当出现线上故障的时候,如果是排查逻辑问题,则需要通过日志进行大量的查找,然后进行分析得到某个用户请求的执行路径,通过执行路径分析确定该请求是否执行了错误的逻辑分支,导致逻辑问题排查速度慢、排查效率低。
发明内容
有鉴于此,本申请实施例提供一种软件检测方法、装置、设备及计算机可读存储介质。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种软件检测方法,所述方法包括:
获取基于待检测软件的代码建立的逻辑分析树,所述逻辑分析树包括至少一个逻辑分支;
获取所述逻辑分支的分支标识和目标节点,所述目标节点为所述逻辑分支的一个节点;
根据所述目标节点对应代码块的位置,在所述代码中插入埋点,并基于所述埋点进行信息采集,得到采集到的信息;
基于所述分支标识和所述采集到的信息对所述逻辑分支进行检测,得到检测结果。
在一些实施例中,所述方法还包括:
获取待检测软件的代码,并根据预设关键词确定所述代码中的逻辑判断语句;
根据所述逻辑判断语句对所述代码进行划分,得到代码块;
将所述代码块作为节点,基于所述节点和所述逻辑判断语句建立逻辑分析树。
在一些实施例中,所述将所述代码块作为节点,基于所述节点和所述逻辑判断语句建立逻辑分析树,包括:
将位于当前逻辑判断语句之前的代码块确定为所述当前逻辑判断语句的父节点;
将位于所述当前逻辑判断语句之后的代码块确定为所述父节点的子节点;
基于各个逻辑判断语句确定的父节点和子节点建立逻辑分析树。
在一些实施例中,所述获取所述逻辑分支的分支标识和目标节点,包括:
对所述逻辑分支的各个节点进行编码,得到各个节点编码,其中,各个节点编码满足父节点编码为子节点编码的前缀;
将所述各个节点编码进行组合处理,得到所述逻辑分支的分支标识;
将所述逻辑分支中不存在子节点的节点确定为目标节点。
在一些实施例中,所述根据所述目标节点对应代码块的位置,在所述代码中插入埋点,包括:
在所述目标节点对应代码块之后,插入用于记录处理结果的程序代码;
确定所述程序代码为埋点。
在一些实施例中,所述基于所述埋点进行信息采集,得到采集到的信息,包括:
根据所述逻辑分支中的各个节点执行所述逻辑分支对应的代码,得到各个节点的执行结果;
基于所述埋点获取所述各个节点的执行结果,并将所述各个节点的执行结果确定为采集到的信息。
在一些实施例中,所述基于所述分支标识和所述采集到的信息对所述逻辑分支进行检测,得到检测结果,包括:
获取故障检测请求,所述故障检测请求中携带检测标识和测试数据;
基于所述检测标识、所述测试数据和所述逻辑分析树,在所述至少一个逻辑分支中确定待检测逻辑分支,所述待检测逻辑分支的分支标识与所述检测标识相匹配;
根据所述测试数据和所述待检测逻辑分支,确定测试结果;
对所述采集到的信息和所述测试结果进行对比,得到检测结果。
在一些实施例中,所述方法还包括:
将所述待检测逻辑分支对应的分支标识进行分解处理,得到所述待检测逻辑分支的各个节点编码;其中,所述分解处理为组合处理的逆操作;
按照所述各个节点编码确定各个节点的路径图;
输出所述路径图和所述路径图中各个节点的执行结果。
本申请实施例提供一种软件检测装置,所述装置包括:
第一获取模块,用于获取基于待检测软件的代码建立的逻辑分析树,所述逻辑分析树包括至少一个逻辑分支;
第二获取模块,用于获取所述逻辑分支的分支标识和目标节点,所述目标节点为所述逻辑分支的一个节点;
插入模块,用于根据所述目标节点对应代码块的位置,在所述代码中插入埋点;
采集模块,用于基于所述埋点进行信息采集,得到采集到的信息;
检测模块,用于基于所述分支标识和所述采集到的信息对所述逻辑分支进行检测,得到检测结果。
本申请实施例提供一种软件检测设备,包括:
处理器;以及
存储器,用于存储可在所述处理器上运行的计算机程序;
其中,所述计算机程序被处理器执行时实现上述软件检测方法的步骤。
本申请实施例提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令配置为执行上述软件检测方法的步骤。
本申请实施例提供一种软件检测方法、装置、设备及计算机可读存储介质,其中,所述方法包括:获取基于待检测软件的代码建立的逻辑分析树,所述逻辑分析树包括至少一个逻辑分支;获取所述逻辑分支的分支标识和目标节点,所述目标节点为所述逻辑分支的一个节点;根据所述目标节点对应代码块的位置,在所述代码中插入埋点,并基于所述埋点进行信息采集,得到采集到的信息;基于所述分支标识和所述采集到的信息对所述逻辑分支进行检测,得到检测结果。如此,通过结构化埋点,能够减少执行逻辑分支时所做的大量的日志输出工作,在满足逻辑分支检测同时,能够降低开发成本,提高软件测试与故障排查效率,在软件测试中有助于提升测试质量。
附图说明
在附图(其不一定是按比例绘制的)中,相似的附图标记可在不同的视图中描述相似的部件。附图以示例而非限制的方式大体示出了本文中所讨论的各个实施例。
图1为本申请实施例提供的软件检测方法的一种实现流程示意图;
图2为本申请实施例提供的软件检测方法建立的逻辑分支的示意图;
图3为本申请实施例提供的软件检测方法建立的逻辑分支的各个节点编码示意图;
图4为本申请实施例提供的软件检测方法的另一种实现流程示意图;
图5为本申请实施例提供的逻辑分支检测方法的一种实现流程示意图;
图6为本申请实施例提供的软件检测装置的组成结构示意图;
图7为本申请实施例提供的软件检测设备的组成结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
本申请实施例提供一种软件检测方法,所述方法应用于软件检测设备。本申请实施例提供的方法可以通过计算机程序来实现,该计算机程序在执行的时候,完成本申请实施例提供的软件检测方法中各个步骤。在一些实施例中,该计算机程序可以软件检测设备中的处理器执行。图1为本申请实施例提供的软件检测方法的一种实现流程示意图,如图1所示,所述软件检测方法包括以下步骤:
步骤S101,获取基于待检测软件的代码建立的逻辑分析树。
其中,所述逻辑分析树包括至少一个逻辑分支。
在一些实施例中,开发人员在设计代码的同时,建立逻辑分析树,并将建立好的逻辑分析树存储在本机或服务器。软件检测设备对待检测软件进行检测时,从本机或服务器获取预先建立的逻辑分析树。
在另一些实施例中,开发人员在设计代码时未建立逻辑分析树,或者未存储逻辑分析树,又或者从本地或服务器获取逻辑分析树获取失败时,软件检测设备先基于待检测软件的代码建立逻辑分析树,然后再获取建立好的逻辑分析树。
软件检测设备在基于待检测软件的代码建立逻辑分析树,在实际实现时,软件检测设备可先获取待检测软件的代码,根据预设关键词确定代码中的逻辑判断语句,然后根据所述逻辑判断语句对代码进行划分,得到代码块;将代码块作为节点,基于所述节点和所述逻辑判断语句建立逻辑分析树。例如,预设关键词是“if”,代码中存在一个逻辑判断语句为“if(a>0)”,则将a>0的代码作为一个代码块,将a≤0的代码作为另一个代码块,若划分的a>0或a≤0的代码块中仍存在逻辑判断语句,继续划分,直到划分的代码块中不再有逻辑判断语句,即不再包括分支结构。将最终得到的一个代码块确定为一个节点,根据各个代码块之间的逻辑关系,将多个节点构造为逻辑分析树。
需要说明的是,本申请实施例中,获取到的逻辑分析树可以为一个,此时,软件只有一个入口,该入口代码即为逻辑分析树的根节点。获取到的逻辑分析树也可以为多个,此时软件有多个入口,该多个入口代码即为多个逻辑分析树的根节点。
图2为本申请实施例提供的软件检测方法建立的逻辑分支的示意图,如图2所示,分析得到待检测软件的入口有三个,如图2所示的21、22和23,分别记为A1、B1、C1,从每个入口出发,后面与之连接的节点为处理分支,每经过一个逻辑判断语句,将一个处理分支分为至少两个子分支,多层处理分支形成一个树状处理结构,树状处理结构的一条路径即为一个逻辑分支,如图2中虚线框所示。
步骤S102,获取所述逻辑分支的分支标识和目标节点。
这里,所述分支标识具有唯一性,用于标识所述逻辑分支。所述目标节点为所述逻辑分支的一个节点,该目标节点为逻辑分支的叶子节点。
建立树状处理结构后,进一步获取每个逻辑分支的分支标识和目标节点。
在一种可能的实现方式中,获取逻辑分支的分支编码可以实现为:对所述逻辑分支的各个节点进行编码,得到各个节点编码;将所述各个节点编码进行组合处理,得到所述逻辑分支的分支标识。其中,各个节点编码满足父节点编码为子节点编码的前缀这一条件,即子节点编码继承父节点编码。随着逻辑分支的深入,每个节点的编码会越来越长,这样做的好处是,只要记录最后一个编码即可以追溯出之前所有的节点,从而追溯当前逻辑分支此前所有的请求处理环节。
图3为本申请实施例提供的软件检测方法建立的逻辑分支的各个节点编码示意图,如图3所示,以入口A1对应的一个逻辑分支举例说明:对入口A1的一个逻辑分支的各个节点进行编码,得到各个节点编码A11、A111、A1111。对一个逻辑分支的各个节点编码时,按照父节点编码为子节点编码的前缀这一编码方式进行编码,得到逻辑分支的各个节点编码A1、A11、A111、A1111,例如,父节点的编码A11是其子节点的编码A111的前缀。
得到各个节点编码后,将各个节点编码进行组合处理,得到逻辑分支的分支标识。一种组合方式中,将各个节点编码按顺序排列,得到逻辑分支的分支标识为A1A11A111A1111。或者,由于各个节点编码满足父节点编码为子节点编码的前缀这一条件,使得叶子节点A1111中包括其所有祖先节点的节点编码,如A1、A11、A111,因此可以将该节点编码A1111作为逻辑分支的分支标识A1111。在得到分支标识后,可以根据每个父节点编码为子节点编码的前缀这一条件,反向逆推获取分支编码A1111的各个节点编码为A1111、A111、A11、A1。
本申请实施例中,确定逻辑分支的目标节点可以实现为:将所述逻辑分支中不存在子节点的节点确定为目标节点。仍以图3为例说明,A1111、A112等节点为叶子节点,其不存在子节点,即该段程序代码为出口,其后不存在程序代码,用户发送的业务请求已经执行完成,则将该叶子节点作为目标节点。
步骤S103,根据所述目标节点对应代码块的位置,在所述代码中插入埋点。
在一些实施例中,所述根据所述目标节点对应代码块的位置,在所述代码中插入埋点可以实现为:在目标节点对应的代码块之后,插入用于记录处理结果的程序代码;确定所述程序代码为埋点。
本申请实施例中,在确定了目标节点后,在目标节点对应的代码块之后,插入用于记录处理结果的程序代码,该程序代码可以为日志打印代码,在待检测软件检测过程中,记录日志数据。
步骤S104,基于所述埋点进行信息采集,得到采集到的信息。
利用日志打印代码对检测逻辑分支过程中产生的日志进行记录,得到的日志数据即为采集到的信息。
在一些实施例中,所述基于所述埋点进行信息采集,得到采集到的信息,可以实现为:首先根据所述逻辑分支中的各个节点执行所述逻辑分支对应的代码,得到各个节点的执行结果,该执行结果包括执行值和执行日志数据;然后基于所述埋点获取所述各个节点的执行结果,利用埋点获取各个代码块的执行值和执行日志数据,得到各个节点的执行结果;最后将所述各个节点的执行结果确定为采集到的信息。
本申请实施例通过结构化埋点,无需记录每条代码语句的日志数据,以节点为单位采集信息,能够减少执行逻辑分支时所做的大量的日志输出工作,从而降低开发成本。
在一些实施例中,得到采集到的信息后,可以将其存储到存储设备中。这里,将各个节点的执行结果存储到存储设备中,可以是缓存到中间件,也可以是存储到数据库。当节点数量较多时,可将每个节点的处理结果暂时存储在缓存中,将最终得到的各个节点的处理结果再由缓存存储到数据库中,能够避免频繁地访问数据库,确保数据库的安全性。
步骤S105,基于所述分支标识和所述采集到的信息对所述逻辑分支进行检测,得到检测结果。
将埋点对应逻辑分支的日志数据和对应的分支编码关联存储。
逻辑分支采集到的信息存储到软件检测设备后,即可对当前采集到的的信息进行检索。例如当某个请求需要进行故障排查时,则可以根据请求标识,查找其对应的日志记录,该日志记录中包括该请求经过的完整的处理路径和详细的数据对象,然后根据日志记录进行故障排查。本申请实施例中通过对各个逻辑分支检测实现对待检测软件的检测,与基于日志的软件故障排查相比,基于逻辑分支的软件故障排查更加便捷、清晰,且能够提升故障排查的处理效率,同时,在软件测试过程中,可通过逻辑分析树获取各测试用例覆盖的逻辑分支,确定各个逻辑分支的覆盖率,基于覆盖率提高测试用例的全面性,有助于提升测试质量。
本申请实施例提供的软件检测方法,通过软件检测设备获取基于待检测软件的代码建立的逻辑分析树,所述逻辑分析树包括至少一个逻辑分支;获取所述逻辑分支的分支标识和目标节点,所述目标节点为所述逻辑分支的一个节点;根据所述目标节点对应代码块的位置,在所述代码中插入埋点,并基于所述埋点进行信息采集,得到采集到的信息;基于所述分支标识和所述采集到的信息对所述逻辑分支进行检测,得到检测结果。如此,通过结构化埋点,能够减少执行逻辑分支时所做的大量的日志输出工作,在满足逻辑分支检测同时,能够降低开发成本,提高软件测试与故障排查效率,在软件测试中有助于提升测试质量。
在一些实施例中,可将对同一个逻辑分支采集到的信息和该逻辑分支对应的分支标识进行关联存储,以便进行逻辑分支检测。
在一些实施例中,图1所示实施例中步骤S105“基于所述分支标识和所述采集到的信息对所述逻辑分支进行检测,得到检测结果”,可通过以下步骤来实现。
步骤S1051,获取故障检测请求。
这里,所述故障检测请求中携带检测标识和测试数据。
根据请求中携带的检测标识,确定当前检测的逻辑分支的入口,即从哪一入口进入检测,例如,接收到的请求中携带的检测标识为“A1”,进一步根据测试数据和逻辑判断语句,确定检测哪一逻辑分支。
步骤S1052,基于所述检测标识、所述测试数据和所述逻辑分析树,在所述至少一个逻辑分支中确定待检测逻辑分支。
根据检测标识,获取与检测标识相匹配的分支标识,例如检测标识为“A1”,与“A1”相匹配的分支标识有“A1111”、“A1112”、“A1131”和“A1132”,再根据测试数据和逻辑分析树,从多个逻辑分支中确定出待检测逻辑分支。
步骤S1053,根据所述测试数据和所述待检测逻辑分支,确定测试结果。
将测试数据代入待检测逻辑分支对应的代码中,测试该段代码得到测试日志数据和测试值,将测试日志数据和测试值确定为测试结果。
在一些实施例中,在步骤S1053之后,所述方法还可以包括以下步骤:
步骤S0531,将所述待检测逻辑分支对应的分支标识进行分解处理,得到所述待检测逻辑分支的各个节点编码。
其中,所述分解处理为组合处理的逆操作。
当组合方式为将各个节点编码按顺序组合时,对应的分解处理的分解方式为将分支编码拆分,由于各个节点编码满足父节点编码为子节点编码的前缀这一条件,可根据这一条件,确定各个节点编码,例如,分支编码为A1A11A111A1111,根据父节点编码为子节点编码的前缀,分解得到各个节点编码A1、A11、A111、A1111。
步骤S0532,按照所述各个节点编码确定各个节点的路径图。
根据节点编码可确定各个节点的继承关系,根据继承关系确定出各个节点的路径图。例如,各个节点编码A1、A11、A111、A1111,确定的路径如图3所示。
步骤S0533,输出所述路径图和所述路径图中各个节点的执行结果。
本申请实施例通过图形化展示,在得到逻辑分支的处理路径后,则可以根据埋点方法还原整个请求路径,即图3所示获取到的逻辑分支处理中的梳理出来的路径图。在得到请求路径图后,即可快速的检查各个处理环节的处理数据,例如业务数据,并根据业务数据进行业务问题排查,提升问题处理效率;并且无需通过日志检索来检查逻辑分支,能够提升测试效率。
步骤S1054,对所述采集到的信息和所述测试结果进行对比,得到检测结果。
将执行值与测试值相比较,若测试值与执行值相同,表明当前逻辑分支无误;若测试值与执行值不同时,表明当前逻辑分支存在故障,需要进一步对该逻辑分支对应的代码进行修改。
在相关技术中,也可以由测试人员根据步骤S0533输出的路径图和执行结果,人工地对采集到的信息和测试结果进行对比,得到检测结果。
本申请实施例再提供一种软件检测方法,图4为本申请实施例提供的软件检测方法的另一种实现流程示意图,如图4所示,所述方法包括以下步骤:
步骤S401,获取待检测软件的代码,并根据预设关键词确定所述代码中的逻辑判断语句。
步骤S402,根据所述逻辑判断语句对所述代码进行划分,得到代码块。
步骤S403,将所述代码块作为节点,基于所述节点和所述逻辑判断语句建立逻辑分析树。
在一种实现方式中,步骤S403可以实现为:
步骤S4031,将位于当前逻辑判断语句之前的代码块确定为所述当前逻辑判断语句的父节点。
步骤S4032,将位于所述当前逻辑判断语句之后的代码块确定为所述父节点的子节点。
步骤S4033,基于各个逻辑判断语句确定的父节点和子节点建立逻辑分析树。
参见图2,A1、B1、C1为业务请求入口,后面与之连接的节点为处理分支,将代码块作为节点,形成一个树状处理结构。
步骤S404,获取基于待检测软件的代码建立的逻辑分析树。
其中,所述逻辑分析树包括至少一个逻辑分支。
步骤S405,对所述逻辑分支的各个节点进行编码,得到各个节点编码。
其中,各个节点编码满足父节点编码为子节点编码的前缀。
步骤S406,将所述各个节点编码进行组合处理,得到所述逻辑分支的分支标识。
所述分支编码用于标识所述逻辑分支。
步骤S407,将所述逻辑分支中不存在子节点的节点确定为目标节点。
所述目标节点为所述逻辑分支的一个节点。
步骤S408,在所述目标节点对应代码块之后,插入用于记录处理结果的程序代码。
步骤S409,确定所述程序代码为埋点。
步骤S410,根据所述逻辑分支中的各个节点执行所述逻辑分支对应的代码,得到各个节点的执行结果。
步骤S411,基于所述埋点获取所述各个节点的执行结果,并将所述各个节点的执行结果确定为采集到的信息。
步骤S412,将所述埋点的采集到的信息和所述埋点所在逻辑分支的分支标识进行关联存储。
步骤S413,获取故障检测请求。
所述故障检测请求中携带检测标识和测试数据。
步骤S414,基于所述检测标识、所述测试数据和所述逻辑分析树,在所述至少一个逻辑分支中确定待检测逻辑分支。
所述待检测逻辑分支的分支标识与所述检测标识相匹配。
步骤S415,根据所述测试数据和所述待检测逻辑分支,确定测试结果。
步骤S416,将所述待检测逻辑分支对应的分支标识进行分解处理,得到所述待检测逻辑分支的各个节点编码。
其中,所述分解处理为组合处理的逆操作。
步骤S417,按照所述各个节点编码确定各个节点的路径图。
步骤S418,输出所述路径图和所述路径图中各个节点的执行结果。
步骤S419,对所述采集到的信息和所述测试结果进行对比,得到检测结果。
本申请实施例提供的软件检测方法,通过软件检测设备获取待检测软件的代码,基于所述代码建立逻辑分析树,梳理出逻辑分支;然后对所述逻辑分支的各个节点进行编码,得到各个节点编码;在各逻辑分支的最后一个节点之后,插入用于记录处理结果的埋点;根据所述逻辑分支中的各个节点执行所述逻辑分支对应的代码,得到各个节点的执行结果;基于所述埋点获取所述各个节点的执行结果。在获取到故障检测请求时,对测试数据进行检测得到测试结果,将测试结果与对应逻辑分支的执行结果进行对比,得到检测结果。如此,通过结构化埋点,能够减少执行逻辑分支时所做的大量的日志输出工作,在满足逻辑分支检测同时,能够降低开发成本,提高软件测试与故障排查效率,在软件测试中有助于提升测试质量。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
随着信息技术的普及,软件的复杂度越来越高,尤其是在互联网时代,面向亿级用户的软件系统,其复杂度相当之高,每个核心的业务操作都会涉及到复杂而庞大的逻辑分支,如何能检测出每一条逻辑分支,对于保障软件的质量或者软件故障的排查,都有非常大的帮助。当前通过软件开发人员在业务逻辑分支中增加打印日志功能,然后在运行时将各个逻辑分支的日志打印,然后再通过查找日志分析业务逻辑分支,排查问题。
现有一些开源的微服务调用链路分析工具,大都是基于方法层面进行监控的,缺少从逻辑分支层面的支持,以下为几个现有工具:
Google-Dapper是谷歌开源的分布式跟踪系统,应用于性能、行为分析和监控,可以生成业务链路跟踪树,低消耗,无入侵。该分析工具属于方法级别监控。
Zipkin是Twitter开源的调用链分析工具,目前基于服务链路追踪(Spring CloudSleuth)得到了广泛的使用,特点是轻量,使用部署简单。该分析工具属于方法级别监控。
Pinpoint是基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能强大,接入端无代码侵入。该分析工具属于方法级别监控。
SkyWalking是基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,用户界面(UI,User Interface)功能较强,接入端无代码侵入。该分析工具属于属于方法级别监控。
可见,现有的软件检测方法,主要存在以下缺陷:
1)局限于方法级别的调用跟踪分析和监控:目前流行的分布式调用跟踪分析主要用于行为分析和监控,都属于方法级别的,有一定的局限性,虽然可以用于逻辑分支检测,但需要将业务逻辑分析都拆解成方法进行实现,所有逻辑判断都拆解成方法不太现实。另外主要用于性能监控,需要查找日志或者逻辑错误排查还无法做到。
2)软件开发成本高:为了检测逻辑分支需要加入很多日志打印代码,每个逻辑分支还需要进行上下游节点的关联,因此需要处理很多信息,并在日志中打印,开发的成本会比较高。
3)逻辑问题排查慢:当出现线上故障的时候,如果是排查逻辑问题,则需要通过日志进行大量的查找,然后进行分析得到某个用户请求的执行路径,通过执行路径分析确定该请求是否执行了错误的逻辑分支。
图5为本申请实施例提供的逻辑分支检测方法的一种实现流程示意图,如图5所示,所述逻辑分支检测方法,主要包括以下三步:
步骤S501,逻辑分支梳理。
本申请实施例中,上述步骤S501的一种实现方式包括以下步骤:
步骤S5011,从软件的入口开始分析软件的所有逻辑分支。
步骤S5012,为每个逻辑分支定义一个编码。
对各个逻辑分支设置编码标记,
步骤S5013,输出整体的逻辑分支图。
1)逻辑分支梳理:首先是分析整个软件的入口,然后从每个入口出发绘制总体的逻辑分支处理图,并且为每个处理节点设置编码,得到如图2所示的结构。A1、B1、C1为业务请求入口,后面与之连接的节点为处理分支,形成一个树状处理结构。
为每个处理节点进行编码,编码规则可以按如上所示,每增加一层分支,则其编码长度加一,子编码(对应上文子节点编码)继承父编码(对应上文父节点编码)。随着请求逻辑分支的深入,每个分支的编码逐步加深,编码会越来越长,这样做的好处是,只要记录最后一个编码即可以追溯出以前所有的请求处理环节。
步骤S502,逻辑分支埋点。
修改软件的代码,在逻辑分支处理完成的节点植入埋点,记录关键处理结果。
逻辑分支埋点:梳理完逻辑分支图之后则可以对软件代码进行改造,通过建立用户请求会话,植入埋点并写入会话,存储会话信息三个步骤实现埋点信息采集。
步骤S5021,建立用户请求会话。
为每个请求建立一个会话,包括请求的基本信息及逻辑分支埋点信息,其数据结构描述如下:
分支处理记录:只记录最后一个处理节点即可追溯之前的节点,每一条路径有独立的编码,每经过一个分支,则当前分支的处理记录编码会覆盖上一个编码,也就是只记录最后一次的处理编码即可。
分支处理关键数据:记录各个环节的关键数据,是一个数组,每个元素为处理环节的详细数据,主要为业务数据,例如当前请求的订单信息等,此处不作详细说明。
会话的传递:该会话为每个请求的全局数据,需要能够向后续的逻辑分支路径进行传递,该装置中可以通过缓存中间件进行传递,中间件可以为远程字典服务(REDIS,Remote Dictionary Server)将请求的标识(ID,Identity Doc ument)放到本地线程变量进行隐式传递,在处理分支中获取请求id(req_id),再根据请求id读取完整的会话即可。
步骤S5022,在软件代码中的每个逻辑分支处理完成的节点植入埋点,将分支编码计入会话。
在逻辑分支处理的结束环节,取出步骤S5021的请求会话,将当前的逻辑分支路径编码、处理的数据结果,存入会话。
步骤S5023,将埋点会话输出到存储设备。
在数据存储时,将每一个会话数据存储到存储设备中,可以是缓存中间件,也可以是数据库,当对性能要求较高时,可以存入缓存中再入库。表1为埋点会话在数据库中的存储属性。
表1埋点会话在数据库中的存储属性
字段名称 | 类型 | 说明 |
req_id | 数字 | 请求的唯一标志 |
logic_log | 字符串 | 分支处理记录 |
logic_data | 对象数组 | 分支处理关键数据 |
........ | ........ | ........ |
步骤S503,处理路径展示。
本申请实施例中,步骤S503的一种实现方式包括以下步骤:
步骤S5031,根据用户请求查找逻辑分支数据,以图形化展示各个逻辑分支节点。
展示用户请求的逻辑分支处理路径,以图形化方式展示用户请求的处理路径。
逻辑分支埋点数据采集到存储设备后,即可对当前的数据进行检索,例如当某个请求需要进行故障排查时,则可以根据会话id,查找其对应的会话记录,包括该请求经过的完整的处理路径和详细的数据对象。
图形化展示,当取得逻辑分支的处理路径后,则可以根据埋点方法还原整个请求路径,即第一步逻辑分支处理中的梳理出来的请求路径图。
步骤S5032,选择每个节点查看具体信息,辅助故障排查。
当用户得到请求路径图,即可快速的检查各个处理环节的业务数据,并根据业务数据进行业务问题排查,也可以用于提升测试效率,避免通过日志检索来检查逻辑分支。
本申请实施例提供的逻辑分支检测方法,能够为软件故障排查及测试提供帮助,提升问题处理效率。并且通过结构化埋点,能够减少软件为了处理逻辑分支所做的大量的日志输出工作,在满足逻辑分支检测同时,降低开发成本,提高软件测试与故障排查效率,在软件测试中有助于提升测试质量。
基于前述的实施例,本申请实施例提供一种软件检测装置,该装置包括的各模块、以及各模块包括的各单元,可以通过计算机设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CPU,Central ProcessingUnit)、微处理器(MPU,Microprocessor Unit)、数字信号处理器(DSP,Digital SignalProcessing)或现场可编程门阵列(FPG A,Field Programmable Gate Array)等。
本申请实施例再提供一种软件检测装置,图6为本申请实施例提供的软件检测装置的组成结构示意图,如图6所示,所述软件检测装置60包括:
第一获取模块61,用于获取基于待检测软件的代码建立的逻辑分析树,所述逻辑分析树包括至少一个逻辑分支;
第二获取模块62,用于获取所述逻辑分支的分支标识和目标节点,所述目标节点为所述逻辑分支的一个节点;
插入模块63,用于根据所述目标节点对应代码块的位置,在所述代码中插入埋点;
采集模块64,用于基于所述埋点进行信息采集,得到采集到的信息;
检测模块65,用于基于所述分支标识和所述采集到的信息对所述逻辑分支进行检测,得到检测结果。
在一些实施例中,所述软件检测装置60还包括:
第三获取模块,用于获取待检测软件的代码,并根据预设关键词确定所述代码中的逻辑判断语句;
划分模块,用于根据所述逻辑判断语句对所述代码进行划分,得到代码块;
建立模块,用于将所述代码块作为节点,基于所述节点和所述逻辑判断语句建立逻辑分析树。
在一些实施例中,所述建立模块,还用于:
将位于当前逻辑判断语句之前的代码块确定为所述当前逻辑判断语句的父节点;
将位于所述当前逻辑判断语句之后的代码块确定为所述父节点的子节点;
基于各个逻辑判断语句确定的父节点和子节点建立逻辑分析树。
在一些实施例中,所述第二获取定模块62,还用于:
对所述逻辑分支的各个节点进行编码,得到各个节点编码,其中,各个节点编码满足父节点编码为子节点编码的前缀;
将所述各个节点编码进行组合处理,得到所述逻辑分支的分支标识;
将所述逻辑分支中不存在子节点的节点确定为目标节点。
在一些实施例中,所述插入模块63,还用于:
在所述目标节点对应代码块之后,插入用于记录处理结果的程序代码;
确定所述程序代码为埋点。
在一些实施例中,所述采集模块64,还用于:
根据所述逻辑分支中的各个节点执行所述逻辑分支对应的代码,得到各个节点的执行结果;
基于所述埋点获取所述各个节点的执行结果,并将所述各个节点的执行结果确定为采集到的信息。
在一些实施例中,所述检测模块65,还用于:
获取故障检测请求,所述故障检测请求中携带检测标识和测试数据;
基于所述检测标识、所述测试数据和所述逻辑分析树,在所述至少一个逻辑分支中确定待检测逻辑分支,所述待检测逻辑分支的分支标识与所述检测标识相匹配;
根据所述测试数据和所述待检测逻辑分支,确定测试结果;
对所述采集到的信息和所述测试结果进行对比,得到检测结果。
在一些实施例中,所述检测模块65,还用于:
将所述待检测逻辑分支对应的分支标识进行分解处理,得到所述待检测逻辑分支的各个节点编码;其中,所述分解处理为组合处理的逆操作;
按照所述各个节点编码确定各个节点的路径图;
输出所述路径图和所述路径图中各个节点的执行结果。
这里需要指出的是:以上软件检测装置实施例项的描述,与上述方法描述是类似的,具有同方法实施例相同的有益效果。对于本申请软件检测装置实施例中未披露的技术细节,本领域的技术人员请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的软件检测方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,ReadOnly Memory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
相应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例中提供的软件检测方法中的步骤。
本申请实施例提供一种软件检测设备,图7为本申请实施例提供的软件检测设备的组成结构示意图,根据图7示出的软件检测设备70的示例性结构,可以预见软件检测设备70的其他的示例性结构,因此这里所描述的结构不应视为限制,例如可以省略下文所描述的部分组件,或者,增设下文所未记载的组件以适应某些应用的特殊需求。
图7所示的软件检测设备70包括:一个处理器71、至少一个通信总线72、用户接口73、至少一个外部通信接口74和存储器75。其中,通信总线72配置为实现这些组件之间的连接通信。其中,用户接口73可以包括显示屏,外部通信接口74可以包括标准的有线接口和无线接口。其中,所述处理器71配置为执行存储器中存储的软件检测方法的程序,以实现上述实施例提供的软件检测方法中的步骤。
以上软件检测设备和存储介质实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请软件检测设备和存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台设备执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种软件检测方法,其特征在于,所述方法包括:
获取基于待检测软件的代码建立的逻辑分析树,所述逻辑分析树包括至少一个逻辑分支;
获取所述逻辑分支的分支标识和目标节点,所述目标节点为所述逻辑分支的一个节点;
根据所述目标节点对应代码块的位置,在所述代码中插入埋点,并基于所述埋点进行信息采集,得到采集到的信息;
基于所述分支标识和所述采集到的信息对所述逻辑分支进行检测,得到检测结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取待检测软件的代码,并根据预设关键词确定所述代码中的逻辑判断语句;
根据所述逻辑判断语句对所述代码进行划分,得到代码块;
将所述代码块作为节点,基于所述节点和所述逻辑判断语句建立逻辑分析树。
3.根据权利要求2所述的方法,其特征在于,所述将所述代码块作为节点,基于所述节点和所述逻辑判断语句建立逻辑分析树,包括:
将位于当前逻辑判断语句之前的代码块确定为所述当前逻辑判断语句的父节点;
将位于所述当前逻辑判断语句之后的代码块确定为所述父节点的子节点;
基于各个逻辑判断语句确定的父节点和子节点建立逻辑分析树。
4.根据权利要求1所述的方法,其特征在于,所述获取所述逻辑分支的分支标识和目标节点,包括:
对所述逻辑分支的各个节点进行编码,得到各个节点编码,其中,各个节点编码满足父节点编码为子节点编码的前缀;
将所述各个节点编码进行组合处理,得到所述逻辑分支的分支标识;
将所述逻辑分支中不存在子节点的节点确定为目标节点。
5.根据权利要求4所述的方法,其特征在于,所述根据所述目标节点对应代码块的位置,在所述代码中插入埋点,并基于所述埋点进行信息采集,得到采集到的信息,包括:
在所述目标节点对应代码块之后,插入用于记录处理结果的程序代码;
确定所述程序代码为埋点;
根据所述逻辑分支中的各个节点执行所述逻辑分支对应的代码,得到各个节点的执行结果;
基于所述埋点获取所述各个节点的执行结果,并将所述各个节点的执行结果确定为采集到的信息。
6.根据权利要求5所述的方法,其特征在于,所述基于所述分支标识和所述采集到的信息对所述逻辑分支进行检测,得到检测结果,包括:
获取故障检测请求,所述故障检测请求中携带检测标识和测试数据;
基于所述检测标识、所述测试数据和所述逻辑分析树,在所述至少一个逻辑分支中确定待检测逻辑分支,所述待检测逻辑分支的分支标识与所述检测标识相匹配;
根据所述测试数据和所述待检测逻辑分支,确定测试结果;
对所述采集到的信息和所述测试结果进行对比,得到检测结果。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
将所述待检测逻辑分支对应的分支标识进行分解处理,得到所述待检测逻辑分支的各个节点编码;其中,所述分解处理为组合处理的逆操作;
按照所述各个节点编码确定各个节点的路径图;
输出所述路径图和所述路径图中各个节点的执行结果。
8.一种软件检测装置,其特征在于,所述装置包括:
第一获取模块,用于获取基于待检测软件的代码建立的逻辑分析树,所述逻辑分析树包括至少一个逻辑分支;
第二获取模块,用于获取所述逻辑分支的分支标识和目标节点,所述目标节点为所述逻辑分支的一个节点;
插入模块,用于根据所述目标节点对应代码块的位置,在所述代码中插入埋点;
采集模块,用于基于所述埋点进行信息采集,得到采集到的信息;
检测模块,用于基于所述分支标识和所述采集到的信息对所述逻辑分支进行检测,得到检测结果。
9.一种软件检测设备,其特征在于,包括:
处理器;以及
存储器,用于存储可在所述处理器上运行的计算机程序;
其中,所述计算机程序被处理器执行时实现权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,其特征在于,存储有计算机可执行指令,所述计算机可执行指令配置为执行权利要求1至7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011119458.0A CN113742208B (zh) | 2020-10-19 | 一种软件检测方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011119458.0A CN113742208B (zh) | 2020-10-19 | 一种软件检测方法、装置、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113742208A true CN113742208A (zh) | 2021-12-03 |
CN113742208B CN113742208B (zh) | 2024-05-17 |
Family
ID=
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106371999A (zh) * | 2016-10-20 | 2017-02-01 | 腾讯科技(深圳)有限公司 | 程序代码测试方法及装置 |
US20170169021A1 (en) * | 2015-12-11 | 2017-06-15 | International Business Machines Corporation | Retrieving database score contextual information |
WO2018103532A1 (zh) * | 2016-12-05 | 2018-06-14 | 北京国双科技有限公司 | 一种无埋点部署监测方法及相关装置 |
CN109508298A (zh) * | 2018-12-25 | 2019-03-22 | 网易(杭州)网络有限公司 | 图形化的脚本测试方法及系统 |
CN111191335A (zh) * | 2018-10-29 | 2020-05-22 | 北京金风科创风电设备有限公司 | 风力发电机组故障原因追溯方法、装置、设备及存储介质 |
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170169021A1 (en) * | 2015-12-11 | 2017-06-15 | International Business Machines Corporation | Retrieving database score contextual information |
CN106371999A (zh) * | 2016-10-20 | 2017-02-01 | 腾讯科技(深圳)有限公司 | 程序代码测试方法及装置 |
WO2018103532A1 (zh) * | 2016-12-05 | 2018-06-14 | 北京国双科技有限公司 | 一种无埋点部署监测方法及相关装置 |
CN111191335A (zh) * | 2018-10-29 | 2020-05-22 | 北京金风科创风电设备有限公司 | 风力发电机组故障原因追溯方法、装置、设备及存储介质 |
CN109508298A (zh) * | 2018-12-25 | 2019-03-22 | 网易(杭州)网络有限公司 | 图形化的脚本测试方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108090567B (zh) | 电力通信系统故障诊断方法及装置 | |
CN111459799A (zh) | 一种基于Github的软件缺陷检测模型建立、检测方法及系统 | |
CN110569214A (zh) | 用于日志文件的索引构建方法、装置及电子设备 | |
CN111090860A (zh) | 一种基于深度学习的代码漏洞检测方法及装置 | |
Wang et al. | Empirical study of the effects of different profiles on regression test case reduction | |
CN105630656A (zh) | 基于日志模型的系统健壮性分析方法及装置 | |
CN112328499A (zh) | 一种测试数据生成方法、装置、设备及介质 | |
CN116108446A (zh) | 基于深度学习的漏洞补丁存在性检测方法 | |
JP2017068293A (ja) | テストdbデータ生成方法及び装置 | |
CN111885064B (zh) | 基于多源数据的安全事件分析方法、装置、电子装置和存储介质 | |
CN117940894A (zh) | 用于检测代码克隆的系统和方法 | |
CN116775488A (zh) | 异常数据确定方法、装置、设备、介质及产品 | |
CN114879985B (zh) | 一种证书文件的安装方法、装置、设备及存储介质 | |
CN116149669A (zh) | 一种基于二进制文件的软件成分分析方法、装置以及介质 | |
CN113742208A (zh) | 一种软件检测方法、装置、设备及计算机可读存储介质 | |
CN113742208B (zh) | 一种软件检测方法、装置、设备及计算机可读存储介质 | |
CN115576831A (zh) | 一种测试案例推荐方法、装置、设备及存储介质 | |
CN114417883A (zh) | 一种数据处理方法、装置及设备 | |
Akram et al. | DroidSD: An Efficient Indexed Based Android Applications Similarity Detection Tool. | |
CN111290943A (zh) | 代码覆盖率处理方法、装置、服务器及存储介质 | |
CN113128213A (zh) | 日志模板提取方法及装置 | |
CN117688564B (zh) | 一种用于智能合约事件日志的检测方法、装置和存储介质 | |
CN113138936B (zh) | 数据处理方法、装置、存储介质及处理器 | |
CN117171038A (zh) | 一种埋点数据的测试方法、装置、电子设备及存储介质 | |
CN112445896A (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 |