CN118057329A - 应用程序的测试方法、装置、电子设备及存储介质 - Google Patents
应用程序的测试方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN118057329A CN118057329A CN202211444321.1A CN202211444321A CN118057329A CN 118057329 A CN118057329 A CN 118057329A CN 202211444321 A CN202211444321 A CN 202211444321A CN 118057329 A CN118057329 A CN 118057329A
- Authority
- CN
- China
- Prior art keywords
- target
- node
- application program
- strategy
- rule
- 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
- 238000000605 extraction Methods 0.000 claims abstract description 123
- 238000012360 testing method Methods 0.000 claims abstract description 119
- 238000012795 verification Methods 0.000 claims abstract description 37
- 238000010998 test method Methods 0.000 claims abstract description 17
- 238000012549 training Methods 0.000 claims description 60
- 238000000034 method Methods 0.000 claims description 59
- 238000012545 processing Methods 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 20
- 230000004927 fusion Effects 0.000 claims description 19
- 230000002159 abnormal effect Effects 0.000 claims description 10
- 230000008485 antagonism Effects 0.000 claims description 4
- 238000007499 fusion processing Methods 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 abstract description 22
- 238000013473 artificial intelligence Methods 0.000 abstract description 14
- 238000013461 design Methods 0.000 abstract description 9
- 238000011161 development Methods 0.000 abstract description 9
- 230000006870 function Effects 0.000 description 67
- 230000008569 process Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 16
- 238000010801 machine learning Methods 0.000 description 16
- 230000000694 effects Effects 0.000 description 11
- 230000018109 developmental process Effects 0.000 description 8
- 230000009286 beneficial effect Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000003631 expected effect Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012827 research and development Methods 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000003042 antagnostic effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- ZLIBICFPKPWGIZ-UHFFFAOYSA-N pyrimethanil Chemical compound CC1=CC(C)=NC(NC=2C=CC=CC=2)=N1 ZLIBICFPKPWGIZ-UHFFFAOYSA-N 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013526 transfer learning Methods 0.000 description 1
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
-
- 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/084—Backpropagation, e.g. using gradient descent
-
- 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 Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种应用程序的测试方法、装置、电子设备及存储介质,通过对应用程序的代码数据进行语法编译,得到对应的语法树来表征应用程序的各个策略节点;然后将应用程序对应的语法树输入到策略抽取模型,通过策略抽取模型抽取出应用程序的目标策略规则,该目标策略规则记录了应用程序对应的语法树中用于达到指定功能的若干目标节点和这些目标节点之间的路径关系,通过一致性校验直观地获知当前所实现的目标策略规则与预先设定的期望策略规则之间的差异,从而确定代码开发进度是否达到了应用程序的预期设计要求。该测试方法能够提高应用程序的测试全面性和高效性。本申请可广泛应用于云技术、人工智能、智慧交通、辅助驾驶等技术领域。
Description
技术领域
本申请涉及软件技术领域,特别是涉及一种应用程序的测试方法、装置、电子设备及存储介质。
背景技术
当下,随着信息技术的发展,不少应用程序被开发出来。例如游戏、即时通信、视频、购物等类型的应用程序,给人们的工作、生活以及娱乐带来了丰富多彩的体验。在应用程序发布后,开发者可能会根据实际的运营需求,对应用程序进行配置更新,以解决应用程序中存在的问题或者提供新的业务功能。
相关技术中,为了尽可能提高应用程序的运行稳定性,一般会对应用程序进行测试,以校验其功能是否满足设计的预期效果。当下常见的测试方法,是面向测试用例的校验,其目的是校验测试结果是否正确。而实际上,应用程序在功能上是依赖策略规则进行设计的,即面临不同的条件,基于策略规则去实现对应的业务流程。由于策略规则的复杂化和多层嵌套关系,面向测试用例的校验,无法满足策略规则的测试需求,依赖人工阅读代码数据来校验策略规则是否完备,容易遗漏且时间成本较高。
发明内容
本申请实施例提供了一种应用程序的测试方法、装置、电子设备及存储介质,能够提高应用程序策略规则校验的测试全面性和高效性,有利于应用程序的稳定运行。
一方面,本申请实施例提供了一种应用程序的测试方法,所述方法包括:
获取所述应用程序的代码数据;
对所述代码数据进行语法编译,得到所述应用程序对应的语法树;所述语法树中包括多个节点;
将所述语法树输入到策略抽取模型,通过所述策略抽取模型从所述语法树中抽取得到目标策略规则;所述目标策略规则用于记录所述语法树中的若干目标节点和各个所述目标节点之间的路径关系;
通过预先设定的期望策略规则对所述目标策略规则进行一致性校验,得到所述应用程序的测试结果。
另一方面,本申请实施例还提供了一种应用程序的测试装置,包括:
获取单元,用于获取所述应用程序的代码数据;
编译单元,用于对所述代码数据进行语法编译,得到所述应用程序对应的语法树;所述语法树中包括多个节点;
抽取单元,用于将所述语法树输入到策略抽取模型,通过所述策略抽取模型从所述语法树中抽取得到目标策略规则;所述目标策略规则用于记录所述语法树中的若干目标节点和各个所述目标节点之间的路径关系;
校验单元,用于通过预先设定的期望策略规则对所述目标策略规则进行一致性校验,得到所述应用程序的测试结果。
进一步,上述的编译单元具体用于:
通过词法分析器从左向右对所述代码数据的节点符号进行扫描,得到节点符号串;
基于所述节点符号串,通过语法分析器建立所述应用程序对应的语法树。
进一步,上述的抽取单元具体用于:
将所述语法树输入到所述策略抽取模型;
通过所述策略抽取模型对所述语法树中各个节点的节点信息进行提取,得到第一特征数据;
通过所述策略抽取模型对所述语法树中各个节点之间的路径信息进行提取,得到第二特征数据;
对所述第一特征数据和所述第二特征数据进行特征融合处理,得到融合特征数据;
根据所述融合特征数据,从所述语法树中抽取得到所述目标策略规则。
进一步,上述的抽取单元具体用于:
根据所述融合特征数据对所述语法树中的各个节点进行分类,得到各个节点对应的分类结果;所述分类结果用于表征所述节点属于目标节点或者不属于目标节点;
根据所述分类结果,从所述语法树中确定出全部的目标节点;
根据所述目标节点和各个所述目标节点之间的路径关系,得到所述目标策略规则。
进一步,上述的抽取单元具体用于:
根据所述融合特征数据对所述语法树中的各个节点进行分析,得到第一输出概率和第二输出概率;其中,所述第一输出概率用于表征所述语法树中的各个节点为所述目标策略规则的起始节点的概率,所述第二输出概率用于表征所述语法树中的各个节点为所述目标策略规则的终止节点的概率;
根据所述第一输出概率和所述第二输出概率,从所述语法树中抽取得到所述目标策略规则。
进一步,上述的抽取单元具体用于:
根据所述第一输出概率,从所述语法树的各个节点中确定所述目标策略规则的起始节点;
根据所述第二输出概率,从所述语法树的各个节点中确定所述目标策略规则的终止节点;
将所述语法树中所述起始节点和所述终止节点之间的节点确定为目标节点;
根据所述目标节点和各个所述目标节点之间的路径关系,得到所述目标策略规则。
进一步,上述的抽取单元具体用于:
按照数值的大小关系,对所述第二输出概率进行排序;将数值最大的所述第二输出概率对应的节点确定为所述目标策略规则的终止节点;
或者,比较各个所述第二输出概率和预设概率阈值的大小;将数值大于所述预设概率阈值的第二输出概率对应的节点确定为所述目标策略规则的终止节点。
进一步,上述的测试装置还包括训练单元,所述训练单元具体用于:
获取训练数据集;所述训练数据集包括样本语法树和策略规则标签;
将所述样本语法树输入到初始化的策略抽取模型,通过所述策略抽取模型从所述样本语法树中抽取得到预测策略规则;
根据所述策略规则标签和所述预测策略规则,确定训练的损失值;
基于所述损失值,对所述策略抽取模型的参数进行更新,得到训练好的策略抽取模型。
进一步,所述策略抽取模型包括生成网络和对抗网络,上述的训练单元具体用于:
将所述策略规则标签和所述预测策略规则输入到所述对抗网络进行鉴别,得到鉴别结果;
检测当前所述策略抽取模型所处的训练阶段;
当所述策略抽取模型处于所述对抗网络的训练阶段时,根据所述鉴别结果和真实结果的偏离度,确定所述损失值,并通过所述损失值对所述对抗网络的参数进行更新;
或者,当所述策略抽取模型处于所述生成网络的训练阶段时,根据所述鉴别结果和所述真实结果的吻合度,确定所述损失值,并通过所述损失值对所述生成网络的参数进行更新。
进一步,上述的校验单元具体用于:
比较所述期望策略规则和所述目标策略规则中的各个语法树节点、以及各个所述语法树节点之间的路径关系是否一致;
若所述期望策略规则和所述目标策略规则中存在不同的语法树节点,或者所述期望策略规则和所述目标策略规则中语法树节点之间的路径关系不同,确定所述应用程序的测试结果为校验异常。
进一步,上述的校验单元具体用于:
若所述期望策略规则和所述目标策略规则中的各个语法树节点、以及各个所述语法树节点之间的路径关系均一致,获取随机生成的测试参数;
将所述测试参数输入到所述期望策略规则中执行,得到第一处理结果;
将所述测试参数输入到所述目标策略规则中执行,得到第二处理结果;
若所述第一处理结果和所述第二处理结果不同,确定所述应用程序的测试结果为校验异常。
另一方面,本申请实施例还提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述的应用程序的测试方法。
另一方面,本申请实施例还提供了一种计算机可读存储介质,所述存储介质存储有程序,所述程序被处理器执行实现上述的应用程序的测试方法。
另一方面,本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行实现上述的应用程序的测试方法。
本申请实施例至少包括以下有益效果:本申请提供一种应用程序的测试方法,该方法通过对应用程序的代码数据进行语法编译,得到对应的语法树来表征应用程序的各个策略节点;然后将应用程序对应的语法树输入到策略抽取模型,通过策略抽取模型抽取出应用程序的目标策略规则,该目标策略规则记录了应用程序对应的语法树中用于达到指定功能的若干目标节点和这些目标节点之间的路径关系,能够以较低的成本,通过一致性校验直观地获知当前所实现的目标策略规则与预先设定的期望策略规则之间的差异,从而便于了解到当前的代码开发进度是否达到了应用程序的预期设计要求。该测试方法能够提高应用程序策略规则校验的测试全面性和高效性,降低了应用程序的测试复杂度和不可观测性,有利于优化应用程序的研发效率,提高应用程序的运行稳定性,进而改善应用程序的使用体验。
本申请的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本申请技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1为本申请实施例提供的一种应用程序的测试方法的实施环境示意图;
图2为本申请实施例提供的一种应用程序的测试方法的流程示意图;
图3为本申请实施例提供的一种语法树的结构示意图;
图4为本申请实施例提供的图3中语法树压缩后的结构示意图;
图5为本申请实施例提供的另一种语法树的结构示意图;
图6为本申请实施例提供的一种对语法树中的节点进行分类的示意图
图7为本申请实施例提供的一种对抗生成网络的原理示意图;
图8为本申请实施例提供的一种基于对抗生成网络实现的策略抽取模型的原理示意图;
图9为本申请实施例提供的一种对目标策略规则进行一致性校验的示意图;
图10为本申请实施例提供的一种应用程序的测试方法的具体实现流程示意图;
图11为本申请实施例提供的一种应用程序的测试装置的结构框图;
图12为本申请实施例提供的一种电子设备的结构框图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在对本申请实施例进行详细说明之前,首先对本申请实施例中涉及的部分名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)应用程序,指为完成某项或多项特定工作的计算机程序,它一般运行在终端设备上,可以和目标对象进行交互,具有可视的界面。
2)语法树,在计算机科学中,抽象语法树(Abstract Syntax Tree,AST),或简称语法树(Syntax tree),是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。
3)策略规则,代码执行的规则,其包含函数的调用顺序、调用条件以及上下文的情况。在语法树中,策略规则以节点以及节点之间的路径信息来表征。
4)人工智能(Artificial Intelligence,AI),是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
5)机器学习(Machine Learning,ML),是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科,它专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,机器学习(深度学习)通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。
6)区块链(Blockchain),是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。区块链可以包括公有链、联盟链以及私有链,其中,公有链是指任何人均可以随时进入到区块链网络中读取数据、发送数据或竞争记账的区块链;联盟链是指若干组织或机构共同参与管理的区块链;私有链是指存在一定的中心化控制的区块链,私有链的账本的写入权由某个组织或机构控制,数据的访问和使用有严格的权限管理。
7)图数据:指由许多节点(也可以称为顶点)通过相互之间的连接而组成的一种数据形式,其中的节点可以是人,机构等实体,节点之间的连接(称作边)表示某种关系(如好友关系,从属关系等);一个图谱可以只有一种节点和一种边(称为单一图),也可以有多种节点或多种边(称为异构图),其中图谱中的边可以是有向边(称为有向图)或无向边(称为无向图)。
8)对抗生成网络(GAN,Generative Adversarial Networks):也叫生成式对抗网络是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。模型通过框架中(至少)两个模块:生成网络(Generative Model)和判别网络(DiscriminativeModel)的互相博弈学习产生相当好的输出。
本申请实施例中所提供的应用程序的测试方法,可以在涉及购物、游戏、社交等领域的应用程序中被执行:例如,在涉及购物的应用程序中,可能存在消费者充值返利或者参与某些促销活动的业务流程,这些业务流程依照事先设计好的策略,通过开发对应的代码数据在购物应用程序中实现。在该场景下,为了验证开发后的代码数据是否和事先设计好的策略吻合,以支持业务流程的正常运转,可以通过本申请实施例中提供的方法,抽取出代码数据中隐含的策略规则,和事先设计好的期望策略规则进行一致性校验,从而测试购物应用程序的开发是否能够满足预定需求。又比如,在涉及游戏的应用程序中,可能存在基于某些条件触发不同游戏剧情的业务流程。在该场景下,类似地,同样可以抽取出游戏程序对应的代码数据中隐含的策略规则,和事先设计好的期望策略规则进行一致性校验,从而测试游戏应用程序是否能够按照设计的脚本正常运行。
当然,需要说明的是,以上的应用场景仅起到示例性的作用,并不意味着对本申请实施例中方法的实际应用形成限制。本领域技术人员可以理解,在不同应用场景中,都可以利用本申请实施例中提供的方法执行指定的任务。
并且,需要补充说明的是,在本申请的各个具体实施方式中,当涉及到需要根据目标对象的信息、目标对象的行为数据、目标对象的历史数据以及目标对象的位置信息等与目标对象身份或特性相关的数据进行相关处理时,都会先获得目标对象的许可或者同意,而且,对这些数据的收集、使用和处理等,都会遵守相关国家和地区的相关法律法规和标准。此外,当本申请实施例需要获取目标对象的敏感信息时,会通过弹窗或者跳转到确认页面等方式获得目标对象的单独许可或者单独同意,在明确获得目标对象的单独许可或者单独同意之后,再获取用于使本申请实施例能够正常运行的必要的目标对象相关数据。
本申请实施例中所提供的应用程序的测试方法,涉及人工智能技术,其中,主要涉及人工智能技术领域内的机器学习/深度学习等技术。具体地,本申请实施例中提供的方法,可以采用机器学习技术搭建、训练相应的处理模型,即策略抽取模型,然后采用训练好的策略抽取模型抽取出待检测应用程序对应语法树中的目标策略规则,将目标策略规则和预先设定的期望策略规则进行对比,从而检测当前的应用程序是否满足预先设定的业务功能需求。
当下,随着信息技术的发展,不少应用程序被开发出来。例如游戏、即时通信、视频、购物等类型的应用程序,给人们的工作、生活以及娱乐带来了丰富多彩的体验。在应用程序发布后,开发者可能会根据实际的运营需求,对应用程序进行配置更新,以解决应用程序中存在的问题或者提供新的业务功能。
相关技术中,为了尽可能提高应用程序的运行稳定性,一般会对应用程序进行测试,以校验其功能是否满足设计的预期效果。当下常见的测试方法,是面向测试用例的校验,其目的是校验测试结果是否正确。而实际上,应用程序在功能上是依赖策略规则进行设计的,即面临不同的条件,基于策略规则去实现对应的业务流程。由于策略规则的复杂化和多层嵌套关系,面向测试用例的校验,无法满足策略规则的测试需求,依赖人工阅读代码数据来校验策略规则是否完备,容易遗漏且时间成本较高。
基于此,本申请实施例提供了一种应用程序的测试方法、装置、电子设备及存储介质,通过对应用程序的代码数据进行语法编译,得到对应的语法树来表征应用程序的各个策略节点;然后将应用程序对应的语法树输入到策略抽取模型,通过策略抽取模型抽取出应用程序的目标策略规则,该目标策略规则记录了应用程序对应的语法树中用于达到指定功能的若干目标节点和这些目标节点之间的路径关系,能够以较低的成本,通过一致性校验直观地获知当前所实现的目标策略规则与预先设定的期望策略规则之间的差异,从而便于了解到当前的代码开发进度是否达到了应用程序的预期设计要求。本申请实施例能够提高应用程序策略规则校验的测试全面性和高效性,降低了应用程序的测试复杂度和不可观测性,有利于优化应用程序的研发效率,提高应用程序的运行稳定性,进而改善应用程序的使用体验。
下面结合附图,对本申请实施例的具体实施方式进行详细说明。
参照图1,图1示出了本申请实施例中提供的应用程序的测试方法一种实施环境的示意图。在该实施环境中,主要涉及的软硬件主体包括终端设备110、后台服务器120。
具体地,终端设备110中可以安装有相关的应用程序,后台服务器120为该应用程序的后台服务器。终端设备110、后台服务器120之间通信连接。本申请实施例中提供的应用程序的测试方法,可以在终端设备110或者后台服务器120侧执行,或者通过终端设备110和后台服务器120之间的数据交互来执行。例如,在一些实施例中,终端设备110侧可以从后台服务器120处获取得到应用程序的代码数据,对该代码数据进行处理得到应用程序的测试结果,并将测试结果返回给后台服务器120,从而实现应用程序的自动化测试。
其中,以上实施例的终端设备110可以包括智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表以及车载终端等,但并不局限于此。
后台服务器120可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
另外,后台服务器120还可以是区块链网络中的一个节点服务器。
终端设备110和后台服务器120之间可以通过无线网络或有线网络建立通信连接。该无线网络或有线网络使用标准通信技术和/或协议,网络可以设置为因特网,也可以是其它任何网络,例如包括但不限于局域网(Local Area Network,LAN)、城域网(MetropolitanAreaNetwork,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合。并且,上述的这些软硬件主体之间,既可以采用相同的通信连接方式,也可以采用不同的通信连接方式,本申请对此不作具体限制。
当然,可以理解的是,图1中的实施环境只是本申请实施例中提供的应用程序的测试方法一些可选的应用场景,实际的应用并不固定为图1所示出的软硬件环境。本申请实施例提供的方法可应用于各种技术领域,例如购物、游戏、社交、云技术、人工智能、智慧交通、辅助驾驶等领域,本申请对此不作具体限制。
参照图2,图2为本申请实施例提供的一种应用程序的测试方法的流程示意图,该应用程序的测试方法可以由终端单独执行,也可以由终端与服务器配合执行,该应用程序的测试方法包括但不限于以下步骤210至步骤240。
步骤210、获取应用程序的代码数据。
本申请实施例中,针对应用程序的测试需求,可以获取其对应的代码数据,通过代码数据来检测、校验应用程序的业务功能是否符合预定的设计要求。此处,可以理解的是,对于应用程序来说,其基于程序代码实现业务功能,而一个应用程序中存在的业务功能可能是多种多样的,相对应地,对应用程序各类业务功能的测试也可以根据实际的需求来执行。例如,在一些实施例中,对于新开发的应用程序来说,其整体的运行稳定性可能偏低。因此,在正式投入运行前,可以对全部的业务功能进行测试。在另一些实施例中,对于仅更新了部分业务功能的应用程序来说,为了尽可能减少对硬件资源的消耗,可以单单对被更新的部分业务功能进行测试。故而,本步骤中,在获取应用程序的代码数据时,其可以获取能够单独执行应用程序新的业务功能的部分代码数据,也可以包括能够执行应用程序全部业务功能的完整代码数据,本领域技术人员可以根据需要进行灵活应用,本申请对此不作限制。
需要说明的是,在本步骤中,应用程序的代码数据可以从本地获取,也可以从云端获取,本申请实施例对此不做限定。并且,本申请实施例中,对代码数据所包含的具体格式、内容同样不作限定,本领域技术人员可以根据应用程序实际的业务需求,灵活选取编程语言来生成代码数据。例如,在一种可能的实现方式中,该代码数据可以包括Shell、Python、Java、Scala等至少一种编程语言所描述的源代码文本,还可以包括xml、properties等配置文件的内容。
步骤220、对代码数据进行语法编译,得到应用程序对应的语法树;语法树中包括多个节点。
本步骤中,在得到应用程序的代码数据后,可以对其进行语法编译,得到待测试的应用程序对应的语法树。具体地,在本申请相关的技术领域中,应用程序基于代码数据执行,在执行过程中会经历三个步骤,这三个步骤可以被统称为编译过程。首先是分词(词法分析)阶段,这个阶段会将由字符组成的字符串分解成有意义的代码块,这些代码块统称为词法单元(token),例如:“let a=1”这段代码数据通常会被分解成为“let”、“a”、“=”、“1”这些词法单元(空格是否被当成词法单元,取决于空格在具体的编程语言中的意义)。接着,将进行解析(语法分析)阶段,该过程是将各个词法单元转换成一个由元素嵌套所组成的、代表了应用程序的语法结构的树,即本步骤中的语法树。然后再将语法树转换为可执行代码,即可完成应用程序的编译。语法树(Syntax tree)一般为抽象语法树(Abstract SyntaxTree,AST)的简称,它是应用程序的代码数据中抽象语法结构的树状表现形式,独立于具体的编程语言(C++、Java、C等)。语法树可以按照一定的规则,将代码数据转换成一种树形结构,即将应用程序的代码数据表示为树上的节点以及节点之间的连接关系,一个语法树上包括有多个节点,节点的具体数量和应用程序的功能丰富程度以及代码数据的内容量相关,本申请对其不作具体限定。
具体地,在一种可能实现的方式中,在对代码数据进行语法编译以得到语法树的过程中,可以首先采用词法分析器,从左向右对代码数据的节点符号进行扫描,从而得到节点符号串,然后基于该节点符号串,可以通过语法分析器建立得到应用程序对应的语法树。此处,词法分析器(Lexical analyzer,简称Lexer)是进行词法分析的程序或者函数,一般以函数的形式存在,供语法分析器调用。语法分析器则主要用于进行语法检查,并构建由输入的符号串组成的数据结构。本申请实施例中,对具体采用的词法分析器和语法分析器的类型不作限制。
以具体的代码数据为例,例如某个业务功能的作用是执行一段判断和数据处理的业务逻辑。具体是当变量a大于某个常量c时,在循环体内做一个if条件:如果变量a大于变量b,则让a等于a减去b后的值,否则交换a和b的值。该段代码数据的具体伪代码形式为:
参照图3,图3为对上述代码数据进行语法编译得到的语法树示意图。可以理解的是,按照语法树中各个节点对应的功能进行划分,可以将其分为不同的节点类型,例如图3的语法树节点可以分为入口节点、分支节点、比较节点(条件节点)、计算节点等。如此,一个策略规则可以被简单定义为:在某些前置条件的情况下,经过条件节点后前往哪个分支节点,相应的变量和常量发生了什么变化。因此,本申请实施例中,可以进一步压缩语法树的结构,使之更符合策略规则的描述方式,即可以将其中的部分节点聚合成一个节点,参照图4,图4中示出了对图3语法树进行压缩后得到的语法树,可以理解的是,对语法树中的部分节点进行压缩,有利于减轻后续的数据处理压力,提高应用程序的测试效率。
需要补充说明的是,通过前述步骤210的说明可以了解到,本申请实施例中,对于应用程序来说,可以对其全部或者部分的业务功能进行测试。因此,本步骤中,对代码数据进行语法编译所得到的应用程序对应的语法树,既可以是应用程序全部业务功能对应的语法树,也可以是部分业务功能对应的语法树。并且,在一些实施例中,可以分别独立地对应用程序的各个业务功能进行测试,此时,应用程序对应的代码数据可以按照业务功能来进行划分,如此,对划分后的代码数据进行语法编译后得到的语法树和业务功能一一对应,通过多次执行本申请实施例中的测试方法,即可得到每个业务功能对应的测试结果。
步骤230、将语法树输入到策略抽取模型,通过策略抽取模型从语法树中抽取得到目标策略规则;目标策略规则用于记录语法树中的若干目标节点和各个目标节点之间的路径关系;
本步骤中,在得到应用程序对应的语法树后,可以将语法树输入到策略抽取模型中,该策略抽取模型是基于机器学习技术搭建的,用于执行本申请中的策略抽取任务,得到语法树中包含的策略规则,记为目标策略规则。本申请实施例中,首先,对于语法树来说,由于其是应用程序代码数据的图形化表示,故而可以采用图数据来作为语法树的数据结构。具体地,在图数据中,图的结构包括节点和节点之间的边,图数据也可以相应地分为节点处的数据和边处的数据。本申请实施例中,可以将节点处的数据记为节点数据,将边处的数据记为边数据。其中,节点数据可以用于表示节点本身的一些信息,边数据可以用于表示该条边两侧所连接的节点之间的关系,对于语法树来说,节点数据可以包括该节点对应的原始代码数据、节点的类型信息等;边数据可以包括节点的连接关系以及数据传输关系。此处,需要说明的是,本申请实施例中,节点数据和边数据的数据格式可以包括数值、向量或者矩阵等;其可根据语法树构建过程中的需要灵活设定,本申请对此不作限定。本申请实施例中,可以将节点数据记为V,边数据记为E,则一个语法树对应的数据可以表示为G(V,E)。可以理解的是,图数据可以显式地表达出数据间的复杂关联结构,以辅助机器学习的数据分析过程,帮助机器学习算法更好地挖掘出数据背后的结构特征,从而有利于提供更精准、可靠的决策支持,提高应用程序测试的准确性。
本步骤中,对于策略抽取模型来说,其可以从语法树的节点中确定出属于目标策略规则的目标节点,从而可以基于目标节点和目标节点之间的路径关系,记录得到目标策略规则。可以理解的是,该目标策略规则用于记录目标节点和目标节点之间的路径关系,故而其数据结构也可以采用前述的图数据来实现,在此不作赘述。
可以理解的是,在机器学习领域内,实现上述策略抽取模型可以选用的模型结构和算法的种类是多种多样的,因此本申请实施例中,对进行应用程序测试所选用的策略抽取模型不作限定,其具体的一些实现方式将在后文中进行详细介绍和说明,在此不作赘述。
需要说明的是,本申请实施例中,目标策略规则指的是语法树中存在的、用于执行应用程序特定的业务功能的策略规则。而策略规则的具体类型和内容可以根据需求灵活设定,例如,在一些实施例中,对于某个购物应用程序,其中含有和抽奖活动相关的业务功能,实现该业务功能时,需要获取参与者相关的业务数据,即参与者使用购物应用程序过程中产生的各类数据,例如充值数据、消费流水数据、活动积分等,然后基于这些业务数据和预先设定好的抽奖策略来判断参与者是否具备抽奖资格,以及执行对应的业务逻辑。此时,上述实现抽奖活动相关的整体数据处理流程,可以被视为一种策略规则;在整体数据处理流程中,针对某些特定情况的闭环处理子流程,也可以被视为一种策略规则。换而言之,只要能够实现一个具体的业务功能,无论该业务功能的复杂程度如何,均可将其作为独立的策略规则看待。
步骤240、通过预先设定的期望策略规则对目标策略规则进行一致性校验,得到应用程序的测试结果。
本步骤中,在抽取得到应用程序对应的语法树中的目标策略规则后,可以将其和预先设定的期望策略规则进行一致性校验,即对目标策略规则和期望策略规则进行对比匹配,通过二者的匹配情况来确定应用程序的测试结果。此处,目标策略规则是基于应用程序的业务功能提取得到的,而期望策略规则可以是该应用程序的业务功能在设计时确定的,即应用程序开发或者更新前,制定好后希望应用程序能够实现的策略规则。
可以理解的是,本步骤中,对目标策略规则和期望策略规则进行一致性校验,如果二者完全匹配对应,说明应用程序开发或者更新后的代码数据,符合设定的预期效果,能够实现预先设定的策略规则,故而此时可以认为应用程序校验正常,测试通过。反之,如果二者存在不匹配的情况,例如,目标策略规则中部分目标节点和期望策略规则不同,则说明目标策略规则偏离了应用程序的预期设计,不符合预先设定的策略规则,其对应的代码数据可能存在相应的漏洞或者逻辑错误需要更改,故而此时可以认为应用程序校验异常,测试不通过。
可以理解的是,本申请实施例中提供的应用程序的测试方法,能够以较低的成本,通过一致性校验直观地获知当前应用程序的代码数据所实现的目标策略规则与预先设定的期望策略规则之间的差异,从而便于了解到当前的代码开发进度是否达到了应用程序的预期设计要求。该测试方法能够提高应用程序策略规则校验的测试全面性和高效性,降低应用程序的测试复杂度和不可观测性,有利于优化应用程序的研发效率,提高应用程序的运行稳定性,进而改善应用程序的使用体验。
具体地,在一种可能的实现方式中,将语法树输入到策略抽取模型,通过策略抽取模型从语法树中抽取得到目标策略规则,包括:
将语法树输入到策略抽取模型;
通过策略抽取模型对语法树中各个节点的节点信息进行提取,得到第一特征数据;
通过策略抽取模型对语法树中各个节点之间的路径信息进行提取,得到第二特征数据;
对第一特征数据和第二特征数据进行特征融合处理,得到融合特征数据;
根据融合特征数据,从语法树中抽取得到目标策略规则。
本申请实施例中,如前所述的,可以采用图数据来作为语法树的数据结构。在这种情况下,语法树对应的数据内容主要包括节点数据和边数据两部分,此时,对于策略抽取模型来说,其可以采用相关的特征提取器分别对两部分数据进行特征提取。例如,在一些实施例中,策略抽取模型中可以包括第一特征提取器、第二特征提取器以及特征融合器,其中,第一特征提取器和第二特征提取器可以任一种常规的编码器结构来实现,第一特征提取器用于对语法树中各个节点的节点信息进行提取,得到的特征数据可以记为第一特征数据;第二特征提取器用于对语法树中各个节点之间的路径信息进行提取,得到的特征数据可以记为第二特征数据。具体地,本申请实施例中,语法树的节点信息,可以包括该节点对应的原始代码数据、节点的类型信息等;节点之间的路径信息,可以包括节点的连接关系以及数据传输关系。
本申请实施例中,在得到第一特征数据和第二特征数据后,可以对第一特征数据和第二特征数据进行融合处理,得到融合特征数据。此处,对第一特征数据和第二特征数据进行特征融合的方式可以包括数据拼接、数据加权等的至少一种,本申请对此不作具体限制。然后,基于融合特征数据,可以通过全连接层及输出层映射得到策略抽取模型的输出,从而可以从语法树中抽取得到目标策略规则。
需要说明的是,本申请实施例中,对于得到的各个特征数据,其数据格式可以包括数字、向量、矩阵或者张量中的至少一种,本申请对此不做限制。
具体地,在一种可能的实现方式中,根据融合特征数据,从语法树中抽取得到目标策略规则,包括:
根据融合特征数据对语法树中的各个节点进行分类,得到各个节点对应的分类结果;分类结果用于表征节点属于目标节点或者不属于目标节点;
根据分类结果,从语法树中确定出全部的目标节点;
根据目标节点和各个目标节点之间的路径关系,得到目标策略规则。
本申请实施例中,对于目标策略规则来说,其内容主要包含目标节点和各个目标节点之间的路径关系。而要通过策略抽取模型抽取出目标策略规则时,在一些实施例中,可以将其视为从语法树的各个节点中确定目标节点的任务,原因在于:当确定出各个目标节点后,目标节点之间的路径关系可以轻松地从原来的语法树得到。因此,本申请实施例中,可以将抽取目标策略规则的任务转换为从语法树中确定目标节点的任务。
参照图5,图5中示出了一种语法树的结构示意图,在图5示出的语法树中,一共包括有12个节点,各个节点对应有不同的编号,分别为1至12。以图5为例,在从语法树的各个节点中确定目标节点时,在一种可能的实现方式中,可以将该任务视为二分类任务,即直接采用分类的方式判断各个节点是否属于目标节点,得到的分类结果对应为某个节点属于目标节点或者某个节点不属于目标节点。参照图6,图6示出了一种对图5中语法树各个节点进行分类的分类结果示意图,在图6中,经过分类处理后,编号为5、7、9、10的节点被判断为属于目标节点,因此,可以从图5所示的语法树中提取出编号为5、7、9、10的节点所形成的策略路径,即可抽取得到目标策略规则。当然,需要说明的是,图5和图6仅用于对本申请实施例的一种实现原理进行介绍和说明,并不意味对具体的语法树结构、目标策略规则进行限制。
具体地,在另一种可能的实现方式中,根据融合特征数据,从语法树中抽取得到目标策略规则,包括:
根据融合特征数据对语法树中的各个节点进行分析,得到第一输出概率和第二输出概率;其中,第一输出概率用于表征语法树中的各个节点为目标策略规则的起始节点的概率,第二输出概率用于表征语法树中的各个节点为目标策略规则的终止节点的概率;
根据第一输出概率和第二输出概率,从语法树中抽取得到目标策略规则。
本申请实施例中,由于目标策略规则用于实现应用程序中一个独立完整的业务功能,因此,其中的数据处理流程也应当是连续的。故而,可以理解的是,目标策略规则中的每个目标节点,一般和其他的至少一个目标节点之间会存在连接关系。因此,在一些实施例中,在从语法树中确定各个目标节点时,可以将其视为从语法树的各个节点中目标节点所在路径的起始位置和终止位置的任务,也即可以从语法树中确定出目标策略规则的起始节点,以及目标策略规则的终止节点,起始节点和终止节点之间的路径中所有的节点均为目标节点。
具体地,仍以图5所示的语法树为例进行说明,例如,在一些实施例中,假设对语法树中的各个节点进行分析,确定出其中编号为1的节点为起始节点,编号为8的节点为终止节点,那么检测连通起始节点和终止节点之间的所有路径,可以判断出存在编号为1、4、8的节点所组成的路径。那么可以确定出编号为1、4、8的节点属于目标节点,可以从图5所示的语法树中提取出编号为1、4、8的节点所形成的策略路径,即可抽取得到目标策略规则。
当然,需要说明的是,在一些情况下,可能一个目标策略规则中存在多条策略路径,例如当需要分不同的情况处理某些业务数据时,在语法树中就会存在相应的树杈。故而,本申请实施例中,可能存在有多个终止节点的情况。例如,在一些实施例中,假设对语法树中的各个节点进行分析,确定出其中编号为5的节点为起始节点,编号为9、11的节点为终止节点,那么检测连通起始节点和终止节点之间的所有路径,可以判断出在该目标策略规则中存在两条策略路径,分别是编号为5、7、9的节点所组成的路径,以及编号为5、7、10、11的节点所组成的路径。那么此时可以确定出编号为5、7、9、10、11的节点属于目标节点,可以从图5所示的语法树中提取出编号为5、7、9、10、11的节点所形成的策略路径,即可抽取得到目标策略规则。
具体地,本申请实施例中,对于策略抽取模型来说,其通过融合特征数据对语法树中的各个节点进行分析,确定其中目标策略规则的起始节点和终止节点的实现方式可以是检测语法树中各个节点属于起始节点的概率,以及属于终止节点的概率。比如说,对于图5所示的语法树为例,策略抽取模型可以输出两组数据,第一组数据为各个节点属于目标策略规则的起始节点的概率,记为第一输出概率;第二组数据为各个节点属于目标策略规则的终止节点的概率,记为第二输出概率。然后,可以根据第一输出概率的大小,从语法树的各个节点中确定目标策略规则的起始节点,以及根据第二输出概率的大小,从语法树的各个节点中确定目标策略规则的终止节点。接着,可以将语法树中在起始节点和终止节点路径之间的节点确定为目标节点,从而可以根据目标节点和目标节点之间的路径关系,得到目标策略规则。
需要说明的是,本申请实施例中,在根据第一输出概率和第二输出概率确定起始节点和终止节点的过程中,在一些情况下,可以直接将对应第一输出概率最大的节点确定为起始节点,将对应第二输出概率最大的节点确定为终止节点。例如,以终止节点为例,可以按照数值的大小关系,对第二输出概率进行排序,然后将数值最大的第二输出概率对应的节点确定为目标策略规则的终止节点。当然,上述的这种方式,适用于那些不存在需要分多种情况处理业务数据的策略规则。在另一些情况下,对于可能存在多个终止节点的策略规则,可以事先设置一个比较阈值,记为预设概率阈值。然后可以比较各个第二输出概率和预设概率阈值的大小,将数值大于预设概率阈值的第二输出概率对应的节点确定为目标策略规则的终止节点,如此,可以从语法树中确定出多个终止节点,从而提高抽取的目标策略规则的准确性。
需要说明的是,在机器学习领域,模型在投入使用前一般需要经过训练调参,因此本申请实施例中,还提供一种策略抽取模型的训练方法。
具体地,在一种可能的实现方式中,策略抽取模型通过以下步骤训练得到:
获取训练数据集;训练数据集包括样本语法树和策略规则标签;
将样本语法树输入到初始化的策略抽取模型,通过策略抽取模型从样本语法树中抽取得到预测策略规则;
根据策略规则标签和预测策略规则,确定训练的损失值;
基于损失值,对策略抽取模型的参数进行更新,得到训练好的策略抽取模型。
本申请实施例中,在对策略抽取模型进行训练时,可以获取批量的训练数据,组成训练数据集,该训练数据集中可以包括有多个样本语法树和样本语法树对应的策略规则标签。此处,策略规则标签用于标注样本语法树中的策略路径,其可以记录语法树中属于需要关注的真实策略规则的节点。当然,根据具体抽取策略规则的不同,策略规则标签的构造方式也可以根据需要灵活设定。例如,在一些实施例中,假设采用前述分类的方式抽取时,策略规则标签可以标注出语法树中每个节点是否属于真实策略规则,比如说,每个节点可以对应有一个标签向量,当标签向量为(1,0)时,说明该节点属于真实策略规则。反之,当标签向量为(0,1)时,说明该节点不属于真实策略规则。在另一些实施例中,假设采用前述预测各个节点是否属于目标策略规则的起始节点或者终止节点的方式抽取策略规则时,策略规则标签可以包括两组标签数据,分别用于标注语法树中每个节点是否属于真实策略规则的起始节点或者终止节点。如此,策略抽取模型的输出和标签的数据含义统一,能够方便数据处理和模型训练。
具体地,对于各个样本语法树,可以将其输入到策略抽取模型中,提取其特征数据,并根据特征数据进行预测处理,得到策略抽取模型输出的样本语法树的策略规则预测结果,本申请中,将其记为预测策略规则。预测策略规则的抽取方式和前述的目标策略规则类似,在此不作赘述。得到预测策略规则后,可以根据预测策略规则和前述的策略规则标签评估机器学习模型预测的准确性,以对模型进行反向传播训练,更新其内部的相关参数。
具体地,对于机器学习模型来说,它预测的准确性可以通过损失函数(LossFunction)来衡量,损失函数是定义在单个训练数据上的,用于衡量一个训练数据的预测误差,具体是通过单个训练数据的标签和模型对该训练数据的预测结果确定该训练数据的损失值。而实际训练时,一个训练数据集有很多训练数据,因此一般采用代价函数(CostFunction)来衡量训练数据集的整体误差,代价函数是定义在整个训练数据集上的,用于计算所有训练数据的预测误差的平均值,能够更好地衡量出模型的预测效果。对于一般的机器学习模型来说,基于前述的代价函数,再加上衡量模型复杂度的正则项即可作为训练的目标函数,基于该目标函数便能求出整个训练数据集的损失值。常用的损失函数种类有很多,例如0-1损失函数、平方损失函数、绝对损失函数、对数损失函数、交叉熵损失函数等均可以作为机器学习模型的损失函数,在此不再一一阐述。本申请实施例中,可以从中任选一种损失函数来确定训练的损失值,也即策略规则标签和预测策略规则之间的损失值。基于训练的损失值,采用反向传播算法对模型的参数进行更新,迭代预设的轮次,或者在损失值小于预设的比较阈值时,可认为训练完成,得到训练好的策略抽取模型。
前述实施例中,描述了一种通用的策略抽取模型的训练流程,在一种可能的实现方式中,该策略抽取模型可以包括生成网络和对抗网络,根据策略规则标签和预测策略规则,确定训练的损失值;基于损失值,对策略抽取模型的参数进行更新,包括:
将策略规则标签和预测策略规则输入到对抗网络进行鉴别,得到鉴别结果;
检测当前策略抽取模型所处的训练阶段;
当策略抽取模型处于对抗网络的训练阶段时,根据鉴别结果和真实结果的偏离度,确定损失值,并通过损失值对对抗网络的参数进行更新;
或者,当策略抽取模型处于生成网络的训练阶段时,根据鉴别结果和真实结果的吻合度,确定损失值,并通过损失值对生成网络的参数进行更新。
本申请实施例中,可以采用对抗生成网络的结构来搭建策略抽取模型。参照图7,图7示出了一种经典的对抗生成网络的原理示意图,在对抗生成网络中,包括生成网络710和对抗网络720,其中,生成网络710用于基于输入数据,生成输出能够尽可能和测试集中的真样本接近的假样本;然后将测试集的真样本和生成网络生成的假样本一起输入到对抗网络中,由对抗网络判断样本的真假。通过对生成网络和对抗网络的参数进行更新,以完成该模型的训练。
具体地,参照图8,本申请实施例中,将对抗生成网络应用在策略抽取模型时,该生成网络用于从训练数据集的样本语法树中抽取目标策略规则,该对抗网络用于对生成网络的抽取效果进行鉴别。该鉴别过程的目的是为了确定生成网络抽取的目标策略规则和实际的真实策略规则的接近、相似程度,也即以假乱真的程度。因此,本申请实施例中,在通过对抗网络进行鉴别处理时,可以将生成网络抽取的目标策略规则和实际的策略规则标签一起输入到对抗网络中,让对抗网络鉴别后输出各个策略规则是生成网络抽取的目标策略规则和实际的策略规则标签,从而得到对应的鉴别结果。当鉴别结果正确时,可以确定其为真,反之,当鉴别结果错误时,可以确定其为假。此处,真和假的鉴别结果,对应的数据形式可以根据需要灵活设定,例如,在一些实施例中,鉴别结果的数据形式可以是数值,比如说数值0和数值1。当鉴别结果为数值0时,可以表示鉴别结果输出判定为假,当鉴别结果为数值1时,可以表示鉴别结果输出判定为真。
本申请实施例中,在对策略抽取模型进行训练时,由于其中包括生成网络和对抗网络,故而可以采用交替循环的方式训练。具体地,在对其进行训练时,在对抗网络的训练阶段中,将保持生成网络的参数不变,主要更新对抗网络的参数,此时,前述的鉴别结果本身即可以反映出对抗网络的效果,鉴别结果和真实结果的吻合度越高,说明对抗网络的鉴别效果越好,鉴别结果和真实结果的偏离度越高,说明对抗网络的鉴别效果越差。因此,此时损失值与鉴别结果和真实结果的吻合度呈负相关,与鉴别结果和真实结果的偏离度呈正相关。为方便起见,可以直接根据鉴别结果和真实结果的偏离度,确定损失值。然后通过损失值对对抗网络的参数进行反向传播更新。
在生成网络的训练阶段中,将保持对抗网络的参数不变,主要更新生成网络的参数,此时,对抗网络的鉴别效果越好,即鉴别结果和真实结果的吻合度越高,说明生成网络抽取的目标策略规则越容易被识别出来,生成效果越差。因此,该阶段中可以通过鉴别结果和真实结果的吻合度,确定损失值,然后通过损失值对生成网络的参数进行反向传播更新。
综上,本申请实施例中,可以检测当前策略抽取模型所处的训练阶段,通过对应的方式确定出训练生成网络和对抗网络过程中的损失值,从而进行参数更新。需要说明的是,本申请实施例中,生成网络和对抗网络训练阶段的个数,以及每个训练阶段中参数的迭代轮次,可以根据需要灵活设定,本申请对此不作限制。
具体地,在一种可能的实现方式中,通过预先设定的期望策略规则对目标策略规则进行一致性校验,得到应用程序的测试结果,包括:
比较期望策略规则和目标策略规则中的各个语法树节点、以及各个语法树节点之间的路径关系是否一致;
若期望策略规则和目标策略规则中存在不同的语法树节点,或者期望策略规则和目标策略规则中语法树节点之间的路径关系不同,确定应用程序的测试结果为校验异常。
本申请实施例中,在通过期望策略规则对目标策略规则进行一致性校验时,在一些实施例中,可以比较期望策略规则和目标策略规则中的各个语法树节点、以及各个语法树节点之间的路径关系是否一致,可以理解的是,如果期望策略规则和目标策略规则中的语法树节点存在不同,那么它们的数据处理流程必然存在区别;或者如果期望策略规则和目标策略规则中语法树节点的路径关系存在不同,那么它们的数据流向必然存在区别。这种情况下,说明目标策略规则和预先设定的期望策略规则所实现的业务功能是不一致的,也即目标策略规则无法完全实现预先设定的业务功能,故而此时可以确定应用程序的测试结果为校验异常。
具体地,例如参照图9,图9中的910为针对某次应用程序的测试过程中,从图5所示出的语法树中抽取得到的目标策略规则,而920则为预先设定的期望策略规则。从图9中可以看出,期望策略规则中还包括了编号为13的语法树节点,而抽取得到的目标策略规则中并不存在该节点。此时,可以查验对应用程序的代码数据进行语法编译时得到的语法树中是否存在该节点,如果也不存在该节点,说明应用程序的代码数据存在问题,缺少实现编号为13的语法树节点的数据内容。如果语法树中存在该节点,则说明策略抽取模型的抽取效果不够稳定,此时可以将该测试例加入到训练数据集中,后续可以再对策略抽取模型的参数进行优化更新。
需要说明的是,本申请实施例中,即使期望策略规则和目标策略规则中的各个语法树节点、以及各个语法树节点之间的路径关系均一致,也不能完全说明应用程序的策略规则不存在问题。原因在于,上述的校验过程仅可说明策略规则的路径符合要求,但策略规则中还包括有存在于节点中的具体数据处理参数,比如判断节点中用于参与比较的参数等。因此,在一些实施例中,本申请中还可以继续获取一些测试参数,这些测试参数可以用于进一步校验策略规则中的数据处理参数是否一致。具体地,此处的测试参数,可以在节点可处理的数据范围内随机生成或者人工设置,然后可以将测试参数输入到期望策略规则中执行,得到第一处理结果,以及将测试参数输入到目标策略规则中执行,得到第二处理结果。接着,可以比较第一处理结果和第二处理结果是否一致,当二者存在区别时,说明目标策略规则中部分目标节点的数据处理参数可以存在问题,故此时也可以确定应用程序的测试结果为校验异常,从而提醒开发人员对代码数据进行检查修正,使得应用程序更符合预期效果。
下面,结合一些更为具体的实施例,对本申请中提供的应用程序的测试方法进行详细说明。
参照图10,本申请实施例中,在应用程序的开发或者更新过程中,开发人员可以根据实际的业务需求,先制定应用程序需要满足的期望策略规则,即产品策略,从而形成后续作为一致性校验比较标准的数据,同时可以建立一个用于进行策略规则比对的流水线,记为策略比对流水线,可以通过不断地扫描提取的代码数据中的目标策略路径来判断当前代码数据的策略规则与制定的产品策略是否一致,为当前代码数据的策略规则提供可视化的理解。
具体地,在整个测试过程中,首先,当前版本的代码数据可以经过编译器得到对应的语法树,将其输入到策略抽取模型中,可以提取出代码数据的目标策略规则。比如图10中提到得到的目标策略规则1010中包括多个目标节点,即策略节点A、策略节点B和策略节点C。将产品策略中的期望策略规则1020和目标策略规则1010一起输入到策略比对流水线中,并配置好特定逻辑的入参、条件以及期望结果等。策略比对流水线可以是一个类似测试用例自动化执行脚本机制的程序,该程序能够将一条或者多条策略规则作为程序执行,例如可以将每个策略节点当成一个函数执行,得到的输出结果可以直接与期望结果进行比对。在具体进行一致性校验时,可以将策略抽取模型找到的策略节点加入到策略比对流水线中,通过比较节点是否对应,使用相同的入参、条件判断是否能够正确执行以及是否得到期望的结果,得到应用程序的校验结果。具体地,如果策略比对流水线发现目标策略规则1010中有节点多余、丢失的情况,可以标记相关的数据,方便将其加入到训练数据集,应用到策略抽取模型中继续训练。如果策略比对流水线发现目标策略规则1010的路径不对,则表示当前的代码数据逻辑存在不正确的情况;若期望结果不对,则表明目标策略规则1010中的计算节点或者入参处理存在不正确的情况,需要进行更正。
可以理解的是,本申请实施例中,上述的应用程序测试方法,能够通过快速地对应用程序当前开发的策略规则和产品的期望策略规则进行比对,发现可能存在问题的策略路径,并协同进行问题排查,可以降低应用程序的测试复杂度和不可观测性,有利于优化应用程序的研发效率,提高应用程序的运行稳定性,进而改善应用程序的使用体验。
参照图11,图11为本申请实施例提供的应用程序的测试装置的结构示意图,该应用程序的测试装置包括:
获取单元,用于获取应用程序的代码数据;
编译单元,用于对代码数据进行语法编译,得到应用程序对应的语法树;语法树中包括多个节点;
抽取单元,用于将语法树输入到策略抽取模型,通过策略抽取模型从语法树中抽取得到目标策略规则;目标策略规则用于记录语法树中的若干目标节点和各个目标节点之间的路径关系;
校验单元,用于通过预先设定的期望策略规则对目标策略规则进行一致性校验,得到应用程序的测试结果。
进一步,上述的编译单元具体用于:
通过词法分析器从左向右对代码数据的节点符号进行扫描,得到节点符号串;
基于节点符号串,通过语法分析器建立应用程序对应的语法树。
进一步,上述的抽取单元具体用于:
将语法树输入到策略抽取模型;
通过策略抽取模型对语法树中各个节点的节点信息进行提取,得到第一特征数据;
通过策略抽取模型对语法树中各个节点之间的路径信息进行提取,得到第二特征数据;
对第一特征数据和第二特征数据进行特征融合处理,得到融合特征数据;
根据融合特征数据,从语法树中抽取得到目标策略规则。
进一步,上述的抽取单元具体用于:
根据融合特征数据对语法树中的各个节点进行分类,得到各个节点对应的分类结果;分类结果用于表征节点属于目标节点或者不属于目标节点;
根据分类结果,从语法树中确定出全部的目标节点;
根据目标节点和各个目标节点之间的路径关系,得到目标策略规则。
进一步,上述的抽取单元具体用于:
根据融合特征数据对语法树中的各个节点进行分析,得到第一输出概率和第二输出概率;其中,第一输出概率用于表征语法树中的各个节点为目标策略规则的起始节点的概率,第二输出概率用于表征语法树中的各个节点为目标策略规则的终止节点的概率;
根据第一输出概率和第二输出概率,从语法树中抽取得到目标策略规则。
进一步,上述的抽取单元具体用于:
根据第一输出概率,从语法树的各个节点中确定目标策略规则的起始节点;
根据第二输出概率,从语法树的各个节点中确定目标策略规则的终止节点;
将语法树中起始节点和终止节点之间的节点确定为目标节点;
根据目标节点和各个目标节点之间的路径关系,得到目标策略规则。
进一步,上述的抽取单元具体用于:
按照数值的大小关系,对第二输出概率进行排序;将数值最大的第二输出概率对应的节点确定为目标策略规则的终止节点;
或者,比较各个第二输出概率和预设概率阈值的大小;将数值大于预设概率阈值的第二输出概率对应的节点确定为目标策略规则的终止节点。
进一步,上述的测试装置还包括训练单元,训练单元具体用于:
获取训练数据集;训练数据集包括样本语法树和策略规则标签;
将样本语法树输入到初始化的策略抽取模型,通过策略抽取模型从样本语法树中抽取得到预测策略规则;
根据策略规则标签和预测策略规则,确定训练的损失值;
基于损失值,对策略抽取模型的参数进行更新,得到训练好的策略抽取模型。
进一步,策略抽取模型包括生成网络和对抗网络,上述的训练单元具体用于:
将策略规则标签和预测策略规则输入到对抗网络进行鉴别,得到鉴别结果;
检测当前策略抽取模型所处的训练阶段;
当策略抽取模型处于对抗网络的训练阶段时,根据鉴别结果和真实结果的偏离度,确定损失值,并通过损失值对对抗网络的参数进行更新;
或者,当策略抽取模型处于生成网络的训练阶段时,根据鉴别结果和真实结果的吻合度,确定损失值,并通过损失值对生成网络的参数进行更新。
进一步,上述的校验单元具体用于:
比较期望策略规则和目标策略规则中的各个语法树节点、以及各个语法树节点之间的路径关系是否一致;
若期望策略规则和目标策略规则中存在不同的语法树节点,或者期望策略规则和目标策略规则中语法树节点之间的路径关系不同,确定应用程序的测试结果为校验异常。
进一步,上述的校验单元具体用于:
若期望策略规则和目标策略规则中的各个语法树节点、以及各个语法树节点之间的路径关系均一致,获取随机生成的测试参数;
将测试参数输入到期望策略规则中执行,得到第一处理结果;
将测试参数输入到目标策略规则中执行,得到第二处理结果;
若第一处理结果和第二处理结果不同,确定应用程序的测试结果为校验异常。
可以理解的是,如图2所示的应用程序的测试方法实施例中的内容均适用于本应用程序的测试装置实施例中,本应用程序的测试装置实施例所具体实现的功能与如图2所示的应用程序的测试实施例相同,并且达到的有益效果与如图2所示的应用程序的测试实施例所达到的有益效果也相同。
参照图12,本申请实施例还公开了一种电子设备,包括:
至少一个处理器1210;
至少一个存储器1220,用于存储至少一个程序;
当至少一个程序被至少一个处理器1210执行,使得至少一个处理器1210实现如图2所示的应用程序的测试方法实施例。
可以理解的是,如图2所示的应用程序的测试方法实施例中的内容均适用于本电子设备实施例中,本电子设备实施例所具体实现的功能与如图2所示的应用程序的测试方法实施例相同,并且达到的有益效果与如图2所示的应用程序的测试方法实施例所达到的有益效果也相同。
本申请实施例还公开了一种计算机可读存储介质,其中存储有处理器可执行的程序,处理器可执行的程序在由处理器执行时用于实现如图2所示的应用程序的测试方法实施例。
可以理解的是,图2所示的应用程序的测试方法实施例中的内容均适用于本计算机可读存储介质实施例中,本计算机可读存储介质实施例所具体实现的功能与图2所示的应用程序的测试方法实施例相同,并且达到的有益效果与图2所示的应用程序的测试方法实施例所达到的有益效果也相同。
本申请实施例还公开了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在上述的计算机可读存储介质中;图12所示的电子设备的处理器可以从上述的计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行图2所示的应用程序的测试方法实施例。
可以理解的是,图2所示的应用程序的测试方法实施例中的内容均适用于本计算机程序产品或计算机程序实施例中,本计算机程序产品或计算机程序实施例所具体实现的功能与图2所示的应用程序的测试方法实施例相同,并且达到的有益效果与图2所示的应用程序的测试方法实施例所达到的有益效果也相同。
在一些可选择的实施例中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或方框有时能以相反顺序被执行。此外,在本申请的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。
此外,虽然在功能性模块的背景下描述了本申请,但应当理解的是,除非另有相反说明,功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本申请是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本申请。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本申请的范围,本申请的范围由所附权利要求书及其等同方案的全部范围来决定。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读存储介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的上述描述中,参考术语“一个实施方式/实施例”、“另一实施方式/实施例”或“某些实施方式/实施例”等的描述意指结合实施方式或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
尽管已经示出和描述了本申请的实施方式,本领域的普通技术人员可以理解:在不脱离本申请的原理和宗旨的情况下可以对这些实施方式进行多种变化、修改、替换和变型,本申请的范围由权利要求及其等同物限定。
以上是对本申请的较佳实施进行了具体说明,但本申请并不限于实施例,熟悉本领域的技术人员在不违背本申请精神的前提下可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
Claims (15)
1.一种应用程序的测试方法,其特征在于,所述方法包括:
获取所述应用程序的代码数据;
对所述代码数据进行语法编译,得到所述应用程序对应的语法树;所述语法树中包括多个节点;
将所述语法树输入到策略抽取模型,通过所述策略抽取模型从所述语法树中抽取得到目标策略规则;所述目标策略规则用于记录所述语法树中的若干目标节点和各个所述目标节点之间的路径关系;
通过预先设定的期望策略规则对所述目标策略规则进行一致性校验,得到所述应用程序的测试结果。
2.根据权利要求1所述的应用程序的测试方法,其特征在于,所述对所述代码数据进行语法编译,得到所述应用程序对应的语法树,包括:
通过词法分析器从左向右对所述代码数据的节点符号进行扫描,得到节点符号串;
基于所述节点符号串,通过语法分析器建立所述应用程序对应的语法树。
3.根据权利要求1或者2所述的应用程序的测试方法,其特征在于,所述将所述语法树输入到策略抽取模型,通过所述策略抽取模型从所述语法树中抽取得到目标策略规则,包括:
将所述语法树输入到所述策略抽取模型;
通过所述策略抽取模型对所述语法树中各个节点的节点信息进行提取,得到第一特征数据;
通过所述策略抽取模型对所述语法树中各个节点之间的路径信息进行提取,得到第二特征数据;
对所述第一特征数据和所述第二特征数据进行特征融合处理,得到融合特征数据;
根据所述融合特征数据,从所述语法树中抽取得到所述目标策略规则。
4.根据权利要求3所述的应用程序的测试方法,其特征在于,所述根据所述融合特征数据,从所述语法树中抽取得到所述目标策略规则,包括:
根据所述融合特征数据对所述语法树中的各个节点进行分类,得到各个节点对应的分类结果;所述分类结果用于表征所述节点属于目标节点或者不属于目标节点;
根据所述分类结果,从所述语法树中确定出全部的目标节点;
根据所述目标节点和各个所述目标节点之间的路径关系,得到所述目标策略规则。
5.根据权利要求3所述的应用程序的测试方法,其特征在于,所述根据所述融合特征数据,从所述语法树中抽取得到所述目标策略规则,包括:
根据所述融合特征数据对所述语法树中的各个节点进行分析,得到第一输出概率和第二输出概率;其中,所述第一输出概率用于表征所述语法树中的各个节点为所述目标策略规则的起始节点的概率,所述第二输出概率用于表征所述语法树中的各个节点为所述目标策略规则的终止节点的概率;
根据所述第一输出概率和所述第二输出概率,从所述语法树中抽取得到所述目标策略规则。
6.根据权利要求5所述的应用程序的测试方法,其特征在于,所述根据所述第一输出概率和所述第二输出概率,从所述语法树中抽取得到所述目标策略规则,包括:
根据所述第一输出概率,从所述语法树的各个节点中确定所述目标策略规则的起始节点;
根据所述第二输出概率,从所述语法树的各个节点中确定所述目标策略规则的终止节点;
将所述语法树中所述起始节点和所述终止节点之间的节点确定为目标节点;
根据所述目标节点和各个所述目标节点之间的路径关系,得到所述目标策略规则。
7.根据权利要求6所述的应用程序的测试方法,其特征在于,所述根据所述第二输出概率,从所述语法树的各个节点中确定所述目标策略规则的终止节点,包括:
按照数值的大小关系,对所述第二输出概率进行排序;将数值最大的所述第二输出概率对应的节点确定为所述目标策略规则的终止节点;
或者,比较各个所述第二输出概率和预设概率阈值的大小;将数值大于所述预设概率阈值的第二输出概率对应的节点确定为所述目标策略规则的终止节点。
8.根据权利要求1所述的应用程序的测试方法,其特征在于,所述策略抽取模型通过以下步骤训练得到:
获取训练数据集;所述训练数据集包括样本语法树和策略规则标签;
将所述样本语法树输入到初始化的策略抽取模型,通过所述策略抽取模型从所述样本语法树中抽取得到预测策略规则;
根据所述策略规则标签和所述预测策略规则,确定训练的损失值;
基于所述损失值,对所述策略抽取模型的参数进行更新,得到训练好的策略抽取模型。
9.根据权利要求8所述的应用程序的测试方法,其特征在于,所述策略抽取模型包括生成网络和对抗网络,所述根据所述策略规则标签和所述预测策略规则,确定训练的损失值;基于所述损失值,对所述策略抽取模型的参数进行更新,包括:
将所述策略规则标签和所述预测策略规则输入到所述对抗网络进行鉴别,得到鉴别结果;
检测当前所述策略抽取模型所处的训练阶段;
当所述策略抽取模型处于所述对抗网络的训练阶段时,根据所述鉴别结果和真实结果的偏离度,确定所述损失值,并通过所述损失值对所述对抗网络的参数进行更新;
或者,当所述策略抽取模型处于所述生成网络的训练阶段时,根据所述鉴别结果和所述真实结果的吻合度,确定所述损失值,并通过所述损失值对所述生成网络的参数进行更新。
10.根据权利要求1所述的应用程序的测试方法,其特征在于,所述通过预先设定的期望策略规则对所述目标策略规则进行一致性校验,得到所述应用程序的测试结果,包括:
比较所述期望策略规则和所述目标策略规则中的各个语法树节点、以及各个所述语法树节点之间的路径关系是否一致;
若所述期望策略规则和所述目标策略规则中存在不同的语法树节点,或者所述期望策略规则和所述目标策略规则中语法树节点之间的路径关系不同,确定所述应用程序的测试结果为校验异常。
11.根据权利要求1所述的应用程序的测试方法,其特征在于,所述通过预先设定的期望策略规则对所述目标策略规则进行一致性校验,得到所述应用程序的测试结果,还包括:
若所述期望策略规则和所述目标策略规则中的各个语法树节点、以及各个所述语法树节点之间的路径关系均一致,获取随机生成的测试参数;
将所述测试参数输入到所述期望策略规则中执行,得到第一处理结果;
将所述测试参数输入到所述目标策略规则中执行,得到第二处理结果;
若所述第一处理结果和所述第二处理结果不同,确定所述应用程序的测试结果为校验异常。
12.一种应用程序的测试装置,其特征在于,所述装置包括:
获取单元,用于获取所述应用程序的代码数据;
编译单元,用于对所述代码数据进行语法编译,得到所述应用程序对应的语法树;所述语法树中包括多个节点;
抽取单元,用于将所述语法树输入到策略抽取模型,通过所述策略抽取模型从所述语法树中抽取得到目标策略规则;所述目标策略规则用于记录所述语法树中的若干目标节点和各个所述目标节点之间的路径关系;
校验单元,用于通过预先设定的期望策略规则对所述目标策略规则进行一致性校验,得到所述应用程序的测试结果。
13.一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11任意一项所述的应用程序的测试方法。
14.一种计算机可读存储介质,所述存储介质存储有程序,其特征在于,所述程序被处理器执行时实现权利要求1至11任意一项所述的应用程序的测试方法。
15.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11任意一项所述的应用程序的测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211444321.1A CN118057329A (zh) | 2022-11-18 | 2022-11-18 | 应用程序的测试方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211444321.1A CN118057329A (zh) | 2022-11-18 | 2022-11-18 | 应用程序的测试方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118057329A true CN118057329A (zh) | 2024-05-21 |
Family
ID=91068568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211444321.1A Pending CN118057329A (zh) | 2022-11-18 | 2022-11-18 | 应用程序的测试方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118057329A (zh) |
-
2022
- 2022-11-18 CN CN202211444321.1A patent/CN118057329A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200341755A1 (en) | Automatic identification of appropriate code reviewers using machine learning | |
Dey et al. | Representation of developer expertise in open source software | |
Montandon et al. | Mining the technical roles of GitHub users | |
CN112819024B (zh) | 模型处理方法、用户数据处理方法及装置、计算机设备 | |
CN111638883B (zh) | 基于决策树的决策引擎实现方法 | |
CN117195220A (zh) | 基于Tree-LSTM和BiLSTM的智能合约漏洞检测方法及系统 | |
Wu et al. | Turn tree into graph: Automatic code review via simplified ast driven graph convolutional network | |
CN116361788A (zh) | 一种基于机器学习的二进制软件漏洞预测方法 | |
CN116305119A (zh) | 基于预测指导原型的apt恶意软件分类方法和装置 | |
CN116340793A (zh) | 一种数据处理方法、装置、设备以及可读存储介质 | |
CN117743601B (zh) | 一种自然资源知识图谱补全方法、装置、设备及介质 | |
CN115099233A (zh) | 一种语义解析模型的构建方法、装置、电子设备及存储介质 | |
Wang et al. | Gvd-net: Graph embedding-based machine learning model for smart contract vulnerability detection | |
CN112132269B (zh) | 模型处理方法、装置、设备及存储介质 | |
Yeo et al. | Framework for evaluating code generation ability of large language models | |
Zhen et al. | DA-GNN: A smart contract vulnerability detection method based on Dual Attention Graph Neural Network | |
CN113468017A (zh) | 应用于区块链的在线业务状态检测方法及业务服务器 | |
Chen et al. | MTQA: Text‐Based Multitype Question and Answer Reading Comprehension Model | |
CN113591892A (zh) | 一种训练数据的处理方法及装置 | |
CN118057329A (zh) | 应用程序的测试方法、装置、电子设备及存储介质 | |
CN115310606A (zh) | 基于数据集敏感属性重构的深度学习模型去偏方法及装置 | |
CN114493850A (zh) | 基于人工智能的在线公证方法、系统及存储介质 | |
KR102677726B1 (ko) | 자연어를 트리 구조화된 형식 언어로 변환하기 위한 장치, 방법 및 컴퓨터 프로그램 | |
CN113537372B (zh) | 一种地址识别方法、装置、设备及存储介质 | |
CN116843432B (zh) | 一种基于地址文本信息的反欺诈方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |