CN110688300A - 兼容性测试方法、装置、设备及存储介质 - Google Patents
兼容性测试方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110688300A CN110688300A CN201910745953.3A CN201910745953A CN110688300A CN 110688300 A CN110688300 A CN 110688300A CN 201910745953 A CN201910745953 A CN 201910745953A CN 110688300 A CN110688300 A CN 110688300A
- Authority
- CN
- China
- Prior art keywords
- code
- compatibility
- defect
- page
- tested
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 77
- 230000007547 defect Effects 0.000 claims abstract description 187
- 230000008439 repair process Effects 0.000 claims abstract description 92
- 238000012545 processing Methods 0.000 claims abstract description 25
- 238000012986 modification Methods 0.000 claims abstract description 21
- 230000004048 modification Effects 0.000 claims abstract description 21
- 238000012544 monitoring process Methods 0.000 claims abstract description 17
- 230000006870 function Effects 0.000 claims description 50
- 238000004590 computer program Methods 0.000 claims description 16
- 230000008859 change Effects 0.000 claims description 14
- 238000010998 test method Methods 0.000 claims description 9
- 238000000605 extraction Methods 0.000 claims description 8
- 238000000034 method Methods 0.000 abstract description 28
- 230000003068 static effect Effects 0.000 abstract description 7
- 230000008569 process Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 11
- 230000014509 gene expression Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000009517 secondary packaging Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000013589 supplement Substances 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (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
技术领域
本申请涉及性能测试领域,尤其涉及一种兼容性测试方法、装置、设备及存储介质。
背景技术
目前,许多平台都推出了适用于移动终端的H5页面。由于市场上移动终端类型繁多,并且不同的浏览器也有其各自的特性,因此,为了使H5页面能够适用于不同的终端设备和不同的浏览器,需要先进行兼容性测试。
常用的测试方式是实体机人工测试和第三方测试。实体机人工测试需要购买常用终端的实体机,通常将移动终端的销售数量、使用数量或者市场占比作为购买实体机的依据,但是该方案不能够覆盖全部机型,并且人工测试耗时耗力,测试覆盖率和测试效率都较为低下;而第三方测试需要购买专业的第三方云测服务进行测试,购买成本较高,导致测试成本提高。
因此,如何提高兼容性测试的覆盖率和效率测试成为亟待解决的问题。
发明内容
本申请提供了一种兼容性测试方法、装置、设备及存储介质,以提高兼容性测试的覆盖率和效率,同时对测试出的兼容性缺陷进行自动修复。
第一方面,本申请提供了一种兼容性测试方法,所述方法包括:
监测待测试页面对应的代码提交事件,根据所述代码提交事件获取代码改动文件;
对所述代码改动文件进行抽象处理得到与所述待测试页面对应的语法树;
加载预设的扫描规则库中的代码扫描规则,根据所述代码扫描规则扫描所述语法树的节点以判断所述待测试页面是否存在兼容性缺陷,所述代码扫描规则包括存在兼容性缺陷的错误代码以及与所述错误代码对应的修复代码;
若所述待测试页面存在兼容性缺陷,确定所述兼容性缺陷对应的错误代码以及所述错误代码对应的修复代码,根据所述修复代码修复所述兼容性缺陷。
第二方面,本申请还提供了一种兼容性测试装置,所述装置包括:
提交监测模块,用于监测待测试页面对应的代码提交事件,根据所述代码提交事件获取代码改动文件;
文件处理模块,用于对所述代码改动文件进行抽象处理得到与所述待测试页面对应的语法树;
缺陷判断模块,用于加载预设的扫描规则库中的代码扫描规则,根据所述代码扫描规则扫描所述语法树的节点以判断所述待测试页面是否存在兼容性缺陷,所述代码扫描规则包括存在兼容性缺陷的错误代码以及与所述错误代码对应的修复代码;
自动修复模块,用于若所述待测试页面存在兼容性缺陷,确定所述兼容性缺陷对应的错误代码以及所述错误代码对应的修复代码,根据所述修复代码修复所述兼容性缺陷。
第三方面,本申请还提供了一种计算机设备,所述计算机设备包括存储器和处理器;所述存储器用于存储计算机程序;所述处理器,用于执行所述计算机程序并在执行所述计算机程序时实现如上述的兼容性测试方法。
第四方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如上述的兼容性测试方法。
本申请公开了一种兼容性测试方法、装置、设备及存储介质,通过监测待测试页面的代码提交事件获取代码改动文件,然后对代码改动文件进行处理得到语法树,利用代码扫描规则扫描语法树的节点以判断待测试页面是否存在兼容性缺陷,如果存在兼容性缺陷,则确定兼容性缺陷对应的错误代码和错误代码对应的修复代码,最终根据修复代码修复该兼容性缺陷。利用代码扫描规则在待测试页面的代码改动文件中进行扫描,从而在代码阶段即可发现代码改动文件中存在的兼容性缺陷,提高了兼容性测试的覆盖率和效率,根据测试出的兼容性缺陷确定修复代码从而进行兼容性缺陷的修复,实现了兼容性缺陷的自动修复。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请的实施例提供的扫描规则库的建立方法的示意流程图;
图2是图1中提供的扫描规则库的建立方法的子步骤示意流程图;
图3是本申请实施例提供的一种兼容性测试方法的示意流程图;
图4是图3中提供的兼容性测试方法的子步骤示意流程图;
图5是图3中提供的兼容性测试方法的子步骤示意流程图;
图6是本申请实施例提供的另一种兼容性测试方法的步骤示意流程图;
图7是本申请一实施例提供的一种扫描规则库的建立模块的示意性框图;
图8是本申请的实施例提供的一种兼容性测试装置的示意性框图;
图9是本申请的实施例提供的另一种兼容性测试装置的示意性框图;
图10是本申请一实施例提供的一种计算机设备的结构示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
本申请的实施例提供了一种兼容性测试方法、装置、计算机设备及存储介质。该兼容性测试方法可用于对待测试页面进行兼容性测试,以使待测试页面能够适用于不同的终端和浏览器,提高了兼容性测试的效率和覆盖率,并且能够对测试出的兼容性缺陷进行自动修复。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参阅图1,图1是本申请的实施例提供的扫描规则库的建立方法的示意流程图。该扫描规则库是对兼容性案例进行分析和处理,从而得到代码扫描规则,然后将代码扫描规则进行保存以建立扫描规则库。
如图1所示,该扫描规则库的建立方法,用于根据兼容性案例建立代码扫描规则以便应用于兼容性测试方法上。其中,该扫描规则库的建立方法包括步骤S101至步骤S104。
S101、获取兼容性案例。
其中,兼容性案例是指出现过兼容性缺陷,并且出现的兼容性缺陷已经修复完成的案例。具体地,所述兼容性案例包括存在兼容性缺陷的错误代码。在具体实施过程中,兼容性案例可以是在工作过程中对兼容性案例的整理进行获取,也可以是在公网上对其他典型性兼容性案例的整理进行获取。在工作过程中获取兼容性案例时,可以通过监听代码提交事件获取,也可以通过定时轮询代码仓库获取。
S102、解析所述兼容性案例获得用于修复所述错误代码的修复代码,并建立所述修复代码与所述错误代码的对应关系。
具体地,由于兼容性案例中出现的兼容性缺陷已经修复完成,因此可以对兼容性案例进行解析,从而获取到用于修复存在兼容性缺陷的错误代码的修复代码。并且在获得修复代码后,建立修复代码与错误代码之间的对应关系。在具体实施过程中,修复代码与错误代码之间的对应关系也即修复代码与错误代码之间一一映射的关系。
S103、对所述错误代码和修复代码进行规则化处理得到规则字段。
具体地,所述规则化处理可以是提取关键字的处理。对错误代码和修复代码进行提取关键字的处理以便于得到规则字段。
在一个实施例中,请参考图2,步骤S103具体地可以包括以下步骤:
S103a、获取所述错误代码对应的兼容性缺陷的缺陷信息。
具体地,在获取到兼容性案例时,同时可以获取到兼容性案例中错误代码的ID。根据错误代码的ID在问题库中获取所述ID所指向的兼容性缺陷的缺陷信息。其中,问题库是指保存了兼容性缺陷的缺陷信息的数据库。所述缺陷信息包括描述信息和运行环境信息。描述信息可以包括兼容性缺陷的现象描述、影响范围和根本原因等信息,运行环境信息则可以包括硬件终端类型、操作系统版本或者浏览器类型和版本等信息。
例如,兼容性案例中的错误代码为A代码段。当出现兼容性缺陷时,提示的错误代码的ID为94,即可根据ID:94在问题库中查找与该ID对应的兼容性缺陷的缺陷信息。
S103b、对所述错误代码和修复代码进行抽象化处理以获取函数信息。
具体地,函数信息包括错误代码使用的函数方法及参数,还包括修复代码使用的函数方法及参数。在具体实施过程中,抽象化处理可以是先将错误代码和修复代码分别转化为抽象语法树(Abstract Syntax Tree,AST),然后基于AST获取到错误代码和修复代码中所使用的函数列表,其中,函数列表包括函数名以及参数。下面以将错误代码转化为AST为例进行详细描述。
在具体实施过程中,可以使用编译器将错误代码进行读入和解析,以建立错误代码的AST。在使用编译器建立AST时,首先,编译器前端的语法分析器会将错误代码作为字符串读入,在读取源代码后,然后将其按照预定规则合并成Token标识。同时,它会移除空白符、注释等。最后,整个错误代码将被分割进一个Tokens列表(或者说一维数组)。然后由编译器前端的语义分析器将分析出的数组转化为树形的表达形式。同时验证语法,语法如果有错的话,抛出语法错误。此时错误代码的AST建立完成。然后遍历AST,即可找到错误代码所使用的函数,并生成错误代码所使用的函数列表。
S103c、对所述描述信息、运行环境信息和函数信息进行特征抽取,以得到特征关键字作为规则字段。
具体地,所述进行特征抽取可以是进行特征关键字的抽取。对描述信息和运行环境信息进行特征抽取时,可以分别将描述信息和运行环境信息进行关键词的划分,然后对关键词进行提取和组合;对函数信息进行特征抽取时,可以分别将错误代码所调用的函数及参数和修复代码所调用的函数及参数进行函数名和参数的抽取,并建立函数名和与所述函数名相对应的参数之间的对应关系。
S104、根据所述规则字段生成代码扫描规则并保存以建立扫描规则库。
具体地,将生成的规则字段进行整合,并进行格式化处理,格式化处理是为了使多个兼容性案例生成的代码扫描规则格式相同,便于代码扫描规则的使用。最后将生成的代码扫描规则进行保存,以完成扫描规则库的建立。
上述实施例对兼容性案例进行分析,获取到错误代码和用于修复错误代码的修复代码,并对错误代码和修复代码进行规则化处理得到规则字段,最终形成扫描规则,以完成扫描规则库的建立,以便基于该扫描规则库实现兼容性测试方法。
请参阅图3,图3是本申请实施例提供的一种兼容性测试方法的示意流程图。该兼容性测试方法通过对待测试页面进行代码扫描,测试待测试页面是否存在兼容性缺陷,提高兼容性测试的效率和覆盖率,并且对测试出的兼容性缺陷进行自动修复。
如图3所示,该兼容性测试方法,具体包括:步骤S201至步骤S204。
S201、监测待测试页面对应的代码提交事件,根据所述代码提交事件获取代码改动文件。
具体地,当待测试页面发生代码提交事件时,根据该代码提交事件从代码仓库中提取代码改动文件。代码改动文件中包括了代码段。
S202、对所述代码改动文件进行抽象处理得到与所述待测试页面对应的语法树。
具体地,获取代码改动文件中的代码段,然后可以使用编译器对所述代码段进行读入、解析和分析,建立待测试页面对应的AST。在使用编译器建立AST时,由编译器的前端进行字符串的读入生成Token标识,并将Token标识按照语法组装为表达式或语句,从而得到AST。
S203、加载预设的扫描规则库中的代码扫描规则,根据所述代码扫描规则扫描所述语法树的节点以判断所述待测试页面是否存在兼容性缺陷。
具体地,所述代码扫描规则包括存在兼容性缺陷的错误代码以及与所述错误代码对应的修复代码。利用扫描规则库中的代码扫描规则对待测试页面进行静态代码扫描,从而判断待测试页面是否存在兼容性缺陷。在具体实施过程中,对待测试页面进行静态代码扫描的工具可以是对开源的代码扫描工具进行二次封装得到的。对开源的代码扫描工具进行二次封装是指对现有的静态代码扫描工具进行代码扫描规则的二次开发,以使得代码扫描工具能够对兼容性问题进行扫描。
在一个实施例中,如图4所示,根据所述代码扫描规则扫描所述语法树的节点以判断所述待测试页面是否存在兼容性缺陷,具体包括子步骤S203a和S203b。
S203a、根据所述代码扫描规则扫描所述语法树的节点以判断所述语法树中是否存在与所述代码扫描规则中的特征关键字相匹配的节点。
具体地,通过语法树的节点可以确定该节点标识所指定的函数和对应的操作。当利用代码扫描规则对语法树的节点进行扫描时,在每个可执行的节点时,可以通过该节点进入其指定的函数和对应的操作进行扫描,以判断是否存在与代码扫描规则中改的特征关键字相匹配的节点。
S203b、若所述语法树中存在与所述代码扫描规则中的特征关键字相匹配的节点,则输出所述待测试页面存在兼容性缺陷的判断结果。
具体地,如果语法树的节点中存在与代码扫描规则中的特征关键字相匹配的节点,则说明该节点命中了扫描规则库中的代码扫描规则,即可输出待测试页面存在兼容性缺陷的判断结果。
S204、若所述待测试页面存在兼容性缺陷,确定所述兼容性缺陷对应的错误代码以及所述错误代码对应的修复代码,根据所述修复代码修复所述兼容性缺陷。
具体地,在判断待测试页面存在兼容性缺陷后,根据代码扫描规则确定该兼容性缺陷对应的错误代码以及错误代码对应的修复代码,以便于根据修复代码修复兼容性缺陷。
在一个实施例中,为了实现兼容性缺陷的自动修复,请参考图5,步骤S204具体包括步骤S204a至步骤S204c。
S204a、基于所述代码扫描规则确定所述兼容性缺陷对应的函数信息。
具体地,当代码扫描规则与待测试页面对应的语法树的节点相匹配时,则判断该待测试页面存在兼容性缺陷。因此,可以基于该兼容性缺陷获取对应的代码扫描规则,然后即可基于代码扫描规则确定该兼容性缺陷对应的函数信息。
S204b、根据所述函数信息确定与所述兼容性缺陷对应的修复代码调用的函数和参数。
具体地,由于函数信息中包括修复代码调用的函数和参数,因此根据函数信息即可确定对于该兼容性缺陷所使用的修复代码的函数和参数。
S204c、根据所述函数和参数自动生成修复代码以修复所述兼容性缺陷。
具体地,在确定修复代码调用的函数和参数后,根据该函数和参数即可自动生成修复代码,以完成对兼容性缺陷的自动修复。在具体实施过程中,可以利用扫描规则中修复代码调用的函数和参数,对AST中对应的结构进行替换,对AST的修改完成后,即可自动生成新的修复代码,从而对兼容性缺陷进行修复。
上述实施例提供的兼容性测试方法,通过对待测试页面的代码改动文件进行抽象处理,得到待测试页面对应的语法树,然后利用代码扫描规则扫描所述语法树的节点以判断是否存在兼容性缺陷,当判断待测试页面存在兼容性缺陷时,即确定兼容性缺陷对应的错误代码和错误代码对应的修复代码,以根据修复代码修复兼容性缺陷。通过对代码改动文件生成的语法树进行扫描,可以对待测试页面的代码进行兼容性测试,避免了购买真机来进行实操测试,提高了兼容性测试的覆盖率和效率。并且,在确定兼容性缺陷后,根据修复代码对兼容性缺陷进行自动修复,也达到了对兼容性缺陷进行自动修复的目的。
请参阅图,6,图6是本申请实施例提供的另一种兼容性测试方法的步骤示意流程图。该兼容性测试方法能够提高兼容性测试的覆盖率和效率,并且能够针对兼容性缺陷进行示警。
如图6所示,该兼容性测试方法,具体包括:步骤S301至步骤S306。
S301、监测待测试页面对应的代码提交事件,根据所述代码提交事件获取代码改动文件。
具体地,当待测试页面发生代码提交事件时,根据该代码提交事件从代码仓库中提取代码改动文件。代码改动文件中包括了代码段。
S302、对所述代码改动文件进行抽象处理得到与所述待测试页面对应的语法树。
具体地,获取代码改动文件中的代码段,然后可以使用编译器对所述代码段进行读入、解析和分析,建立待测试页面对应的AST。在使用编译器建立AST时,由编译器的前端进行字符串的读入生成Token标识,并将Token标识按照语法组装为表达式或语句,从而得到AST。
S303、加载预设的扫描规则库中的代码扫描规则,根据所述代码扫描规则扫描所述语法树的节点以判断所述待测试页面是否存在兼容性缺陷。
具体地,所述代码扫描规则包括存在兼容性缺陷的错误代码以及与所述错误代码对应的修复代码。利用扫描规则库中的代码扫描规则对待测试页面进行静态代码扫描,从而判断待测试页面是否存在兼容性缺陷。在具体实施过程中,对待测试页面进行静态代码扫描的工具可以是对开源的代码扫描工具进行二次封装得到的。对开源的代码扫描工具进行二次封装是指对现有的静态代码扫描工具进行代码扫描规则的二次开发,以使得代码扫描工具能够对兼容性问题进行扫描。
S304、若所述待测试页面存在兼容性缺陷,确定所述兼容性缺陷对应的错误代码以及所述错误代码对应的修复代码,根据所述修复代码修复所述兼容性缺陷。
具体地,在判断待测试页面存在兼容性缺陷后,根据代码扫描规则确定该兼容性缺陷对应的错误代码以及错误代码对应的修复代码,以便于根据修复代码修复兼容性缺陷。
S305、获取所述错误代码对应的兼容性缺陷的缺陷信息,根据所述错误代码和所述缺陷信息生成并输出提示信息。
其中,在判断待测试页面存在兼容性缺陷后,根据存在的兼容性缺陷对应的错误代码获取兼容性缺陷的缺陷信息,然后根据错误代码和缺陷信息输出提示信息,以对测试人员进行提醒。提示信息可以是以系统广播的方式发出,也可以是以响铃等方式发出,还可以与手机、邮箱等连接,通过无线的方式进行提醒。
在一个实施例中,为了根据兼容性缺陷的影响范围进行不同等级的提示,步骤S305可以包括以下步骤:
基于所述错误代码对应的兼容性缺陷的缺陷信息确定所述兼容性缺陷的影响范围。将所述兼容性缺陷的影响范围按照预设的示警等级阈值进行等级划分,并发出对应等级的示警提示。
具体地,由于缺陷信息中包括了兼容性缺陷的影响范围,因此根据所述缺陷信息即可确定所述兼容性缺陷的影响范围。在具体实施过程中,将提示信息以系统广播的方式发出,可以是在待测试界面上弹出提示通知栏,通知栏内可以显示存在兼容性缺陷的错误代码和缺陷信息。用户可以预先设置一个或多个阈值,当兼容性缺陷的影响范围处于不同的区间时,可以根据兼容性缺陷的影响范围控制提示通知栏的颜色,从而产生不同等级的报警。
例如,用户设置的阈值为20%和50%时,当测试出的兼容性缺陷的缺陷信息中兼容性缺陷的影响范围处于0~20%的区间内时,示警通知栏的颜色为黄色,当兼容性缺陷的影响范围处于20%~50%的区间内时,示警通知栏的颜色为橙色,当兼容性缺陷的影响范围大于50%时,示警通知栏的颜色为红色。
S306、按照预设周期获取兼容性案例,根据所述兼容性案例更新所述扫描规则库。
具体地,预设周期可以是测试人员预先设置的,例如以一个月为周期。在预设周期内,如果出现了在测试过程中未检出的兼容性案例或在公网上发现了尚未录入扫描规则库中的兼容性案例,即可对这些兼容性案例进行获取和处理,并形成代码扫描规则,将形成的所述代码扫描规则更新至扫描规则库中以补充所述扫描规则库,实现规则库的生成和使用的闭环。在具体实施过程中,规则库可以自动定期进行更新,也可以根据测试人员的设置进行更新。
上述实施例提供的兼容性测试方法,通过代码扫描规则扫描待测试页面对应的语法树的节点以判断是否存在兼容性缺陷,当判断待测试页面存在兼容性缺陷时,即确定兼容性缺陷对应的错误代码和错误代码对应的修复代码,以根据修复代码修复兼容性缺陷,并且根据缺陷信息输出提示信息和更新扫描规则库。通过代码扫描进行兼容性测试,提高了兼容性测试的覆盖率和效率。并且更新扫描规则库也使扫描规则库逐渐完善,提高了兼容性测试的全面性。
请参阅图7,图7是本申请一实施例提供的一种扫描规则库的建立模块的示意性框图。
如图7所示,该扫描规则库的建立模块400,包括:案例获取模块401、案例解析模块402、代码处理模块403和规则生成模块404。
案例获取模块401,用于获取兼容性案例,所述兼容性案例包括存在兼容性缺陷的错误代码。
案例解析模块402,用于解析所述兼容性案例获得用于修复所述错误代码的修复代码,并建立所述修复代码与所述错误代码的对应关系。
代码处理模块403,用于对所述错误代码和修复代码进行规则化处理得到规则字段。
在一个实施例中,代码处理模块403包括缺陷获取子模块4031、函数获取子模块4032和特征抽取子模块4033。
其中,缺陷获取子模块4031,用于获取所述错误代码对应的兼容性缺陷的缺陷信息,所述缺陷信息包括描述信息和运行环境信息。
函数获取子模块4032,用于对所述错误代码和修复代码进行抽象化处理以获取函数信息。
特征抽取子模块4033,用于对所述描述信息、运行环境信息和函数信息进行特征抽取,以得到特征关键字作为规则字段。
规则生成模块404,用于根据所述规则字段生成代码扫描规则并保存以建立扫描规则库。
请参阅图8,图8是本申请的实施例还提供一种兼容性测试装置的示意性框图,该兼容性测试装置用于执行前述的兼容性测试方法。其中,该兼容性测试装置可以配置于服务器或终端中。
其中,服务器可以为独立的服务器,也可以为服务器集群。该终端可以是手机、平板电脑、笔记本电脑、台式电脑、个人数字助理和穿戴式设备等电子设备。
如图8所示,兼容性测试装置500包括:提交监测模块501、文件处理模块502、缺陷判断模块503和自动修复模块504。
提交监测模块501,用于监测待测试页面对应的代码提交事件,根据所述代码提交事件获取代码改动文件。
文件处理模块502,用于对所述代码改动文件进行抽象处理得到与所述待测试页面对应的语法树。
缺陷判断模块503,用于加载预设的扫描规则库中的代码扫描规则,根据所述代码扫描规则扫描所述语法树的节点以判断所述待测试页面是否存在兼容性缺陷,所述代码扫描规则包括存在兼容性缺陷的错误代码以及与所述错误代码对应的修复代码。
在一个实施例中,缺陷判断模块503包括匹配判断子模块5031和结果输出子模块5032。
其中,匹配判断子模块5031,用于根据所述代码扫描规则扫描所述语法树的节点以判断所述语法树中是否存在与所述代码扫描规则中的特征关键字相匹配的节点。结果输出子模块5032,用于若所述语法树中存在与所述代码扫描规则中的特征关键字相匹配的节点,则输出所述待测试页面存在兼容性缺陷的判断结果。
自动修复模块504,用于若所述待测试页面存在兼容性缺陷,确定所述兼容性缺陷对应的错误代码以及所述错误代码对应的修复代码,根据所述修复代码修复所述兼容性缺陷。
在一个实施例中,自动修复模块504包括信息确定子模块5041、函数确定子模块5042和代码生成子模块5043。
其中,信息确定子模块5041,用于基于所述代码扫描规则确定所述兼容性缺陷对应的函数信息;函数确定子模块5042,用于根据所述函数信息确定与所述兼容性缺陷对应的修复代码调用的函数和参数;代码生成子模块5043,用于根据所述函数和参数自动生成修复代码以修复所述兼容性缺陷。
请参阅图9,图9是本申请的实施例还提供另一种兼容性测试装置的示意性框图,该兼容性测试装置用于执行前述的兼容性测试方法。其中,该兼容性测试装置可以配置于服务器中。
如图9所示,该兼容性测试装置600包括:提交监测模块601、文件处理模块602、缺陷判断模块603、自动修复模块604、提示信息模块605和规则库更新模块606。
提交监测模块601,用于监测待测试页面对应的代码提交事件,根据所述代码提交事件获取代码改动文件。
文件处理模块602,用于对所述代码改动文件进行抽象处理得到与所述待测试页面对应的语法树。
缺陷判断模块603,用于加载预设的扫描规则库中的代码扫描规则,根据所述代码扫描规则扫描所述语法树的节点以判断所述待测试页面是否存在兼容性缺陷,所述代码扫描规则包括存在兼容性缺陷的错误代码以及与所述错误代码对应的修复代码。
规则生成模块604,用于根据所述规则字段生成代码扫描规则并保存以建立扫描规则库。
提示信息模块605,用于获取所述错误代码对应的兼容性缺陷的缺陷信息,根据所述错误代码和所述缺陷信息生成并输出提示信息。
规则库更新模块606,用于按照预设周期获取兼容性案例,根据所述兼容性案例更新所述扫描规则库。
需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的兼容性测试装置和各模块的具体工作过程,可以参考前述兼容性测试方法实施例中的对应过程,在此不再赘述。
上述的兼容性测试装置可以实现为一种计算机程序的形式,该计算机程序可以在如图10所示的计算机设备上运行。
请参阅图10,图10是本申请实施例提供的一种计算机设备的结构示意性框图。该计算机设备可以是服务器或终端。
参阅图10,该计算机设备包括通过系统总线连接的处理器、存储器和网络接口,其中,存储器可以包括非易失性存储介质和内存储器。
非易失性存储介质可存储操作系统和计算机程序。该计算机程序包括程序指令,该程序指令被执行时,可使得处理器执行任意一种兼容性测试方法。
处理器用于提供计算和控制能力,支撑整个计算机设备的运行。
内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行任意一种兼容性测试方法。
该网络接口用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
应当理解的是,处理器可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
其中,在一个实施例中,所述处理器用于运行存储在存储器中的计算机程序,以实现如下步骤:
监测待测试页面对应的代码提交事件,根据所述代码提交事件获取代码改动文件;对所述代码改动文件进行抽象处理得到与所述待测试页面对应的语法树;加载预设的扫描规则库中的代码扫描规则,根据所述代码扫描规则扫描所述语法树的节点以判断所述待测试页面是否存在兼容性缺陷,所述代码扫描规则包括存在兼容性缺陷的错误代码以及与所述错误代码对应的修复代码;若所述待测试页面存在兼容性缺陷,确定所述兼容性缺陷对应的错误代码以及所述错误代码对应的修复代码,根据所述修复代码修复所述兼容性缺陷。
在一个实施例中,所述处理器在实现所述根据所述代码扫描规则扫描所述语法树的节点以判断所述待测试页面是否存在兼容性缺陷时,用于实现:
根据所述代码扫描规则扫描所述语法树的节点以判断所述语法树中是否存在与所述代码扫描规则中的特征关键字相匹配的节点;若所述语法树中存在与所述代码扫描规则中的特征关键字相匹配的节点,则输出所述待测试页面存在兼容性缺陷的判断结果。
在一个实施例中,所述处理器在实现所述确定所述兼容性缺陷对应的错误代码以及所述错误代码对应的修复代码,根据所述修复代码修复所述兼容性缺陷时,用于实现:
基于所述代码扫描规则确定所述兼容性缺陷对应的函数信息;根据所述函数信息确定与所述兼容性缺陷对应的修复代码调用的函数和参数;根据所述函数和参数自动生成修复代码以修复所述兼容性缺陷。
其中,在另一实施例中,所述处理器用于运行存储在存储器中的计算机程序,以实现如下步骤:
监测待测试页面对应的代码提交事件,根据所述代码提交事件获取代码改动文件;对所述代码改动文件进行抽象处理得到与所述待测试页面对应的语法树;加载预设的扫描规则库中的代码扫描规则,根据所述代码扫描规则扫描所述语法树的节点以判断所述待测试页面是否存在兼容性缺陷,所述代码扫描规则包括存在兼容性缺陷的错误代码以及与所述错误代码对应的修复代码;若所述待测试页面存在兼容性缺陷,确定所述兼容性缺陷对应的错误代码以及所述错误代码对应的修复代码,根据所述修复代码修复所述兼容性缺陷;获取所述错误代码对应的兼容性缺陷的缺陷信息,根据所述错误代码和所述缺陷信息生成并输出提示信息;按照预设周期获取兼容性案例,根据所述兼容性案例更新所述扫描规则库。
本申请的实施例中还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序中包括程序指令,所述处理器执行所述程序指令,实现本申请实施例提供的任一项兼容性测试方法。
其中,所述计算机可读存储介质可以是前述实施例所述的计算机设备的内部存储单元,例如所述计算机设备的硬盘或内存。所述计算机可读存储介质也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种兼容性测试方法,其特征在于,包括:
监测待测试页面对应的代码提交事件,根据所述代码提交事件获取代码改动文件;
对所述代码改动文件进行抽象处理得到与所述待测试页面对应的语法树;
加载预设的扫描规则库中的代码扫描规则,根据所述代码扫描规则扫描所述语法树的节点以判断所述待测试页面是否存在兼容性缺陷,所述代码扫描规则包括存在兼容性缺陷的错误代码以及与所述错误代码对应的修复代码;
若所述待测试页面存在兼容性缺陷,确定所述兼容性缺陷对应的错误代码以及所述错误代码对应的修复代码,根据所述修复代码修复所述兼容性缺陷。
2.如权利要求1所述的兼容性测试方法,其特征在于,还包括:
获取兼容性案例,所述兼容性案例包括存在兼容性缺陷的错误代码;
解析所述兼容性案例获得用于修复所述错误代码的修复代码,并建立所述修复代码与所述错误代码的对应关系;
对所述错误代码和修复代码进行规则化处理得到规则字段;
根据所述规则字段生成代码扫描规则并保存以建立扫描规则库。
3.如权利要求2所述的兼容性测试方法,其特征在于,所述对所述错误代码和修复代码进行规则化处理得到规则字段,包括:
获取所述错误代码对应的兼容性缺陷的缺陷信息,所述缺陷信息包括描述信息和运行环境信息;
对所述错误代码和修复代码进行抽象化处理以获取函数信息;
对所述描述信息、运行环境信息和函数信息进行特征抽取,以得到特征关键字作为规则字段。
4.如权利要求3所述的兼容性测试方法,其特征在于,所述确定所述兼容性缺陷对应的错误代码以及所述错误代码对应的修复代码,根据所述修复代码修复所述兼容性缺陷,包括:
基于所述代码扫描规则确定所述兼容性缺陷对应的函数信息;
根据所述函数信息确定与所述兼容性缺陷对应的修复代码调用的函数和参数;
根据所述函数和参数自动生成修复代码以修复所述兼容性缺陷。
5.如权利要求2所述的兼容性测试方法,其特征在于,所述根据所述修复代码修复所述兼容性缺陷之后,还包括:
获取所述错误代码对应的兼容性缺陷的缺陷信息,根据所述错误代码和所述缺陷信息生成并输出提示信息。
6.如权利要求2所述的兼容性测试方法,其特征在于,还包括:
按照预设周期获取兼容性案例,根据所述兼容性案例更新所述扫描规则库。
7.如权利要求1所述的兼容性测试方法,其特征在于,所述根据所述代码扫描规则扫描所述语法树的节点以判断所述待测试页面是否存在兼容性缺陷,包括:
根据所述代码扫描规则扫描所述语法树的节点以判断所述语法树中是否存在与所述代码扫描规则中的特征关键字相匹配的节点;
若所述语法树中存在与所述代码扫描规则中的特征关键字相匹配的节点,则输出所述待测试页面存在兼容性缺陷的判断结果。
8.一种兼容性测试装置,其特征在于,包括:
提交监测模块,用于监测待测试页面对应的代码提交事件,根据所述代码提交事件获取代码改动文件;
文件处理模块,用于对所述代码改动文件进行抽象处理得到与所述待测试页面对应的语法树;
缺陷判断模块,用于加载预设的扫描规则库中的代码扫描规则,根据所述代码扫描规则扫描所述语法树的节点以判断所述待测试页面是否存在兼容性缺陷,所述代码扫描规则包括存在兼容性缺陷的错误代码以及与所述错误代码对应的修复代码;
自动修复模块,用于若所述待测试页面存在兼容性缺陷,确定所述兼容性缺陷对应的错误代码以及所述错误代码对应的修复代码,根据所述修复代码修复所述兼容性缺陷。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器;
所述存储器用于存储计算机程序;
所述处理器,用于执行所述计算机程序并在执行所述计算机程序时实现如权利要求1至7中任一项所述的兼容性测试方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如权利要求1至7中任一项所述的兼容性测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910745953.3A CN110688300A (zh) | 2019-08-13 | 2019-08-13 | 兼容性测试方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910745953.3A CN110688300A (zh) | 2019-08-13 | 2019-08-13 | 兼容性测试方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110688300A true CN110688300A (zh) | 2020-01-14 |
Family
ID=69108271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910745953.3A Pending CN110688300A (zh) | 2019-08-13 | 2019-08-13 | 兼容性测试方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110688300A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112101571A (zh) * | 2020-09-25 | 2020-12-18 | 北京百度网讯科技有限公司 | 用于监控深度学习框架下的算子兼容性的方法和装置 |
CN112256265A (zh) * | 2020-10-14 | 2021-01-22 | 北京百家科技集团有限公司 | H5页面稳定性的测试方法、装置及存储介质、电子设备 |
CN112379917A (zh) * | 2020-11-19 | 2021-02-19 | 康键信息技术(深圳)有限公司 | 浏览器兼容性提升方法、装置、设备及存储介质 |
CN112417338A (zh) * | 2020-11-30 | 2021-02-26 | 北京博瑞彤芸科技股份有限公司 | 一种页面适配方法、系统及设备 |
CN113051582A (zh) * | 2021-04-28 | 2021-06-29 | 重庆电子工程职业学院 | 一种计算机软件技术开发调试系统 |
CN113672512A (zh) * | 2021-08-20 | 2021-11-19 | 泰康保险集团股份有限公司 | 代码检查规则生成方法、代码检查方法、装置、介质 |
CN114201384A (zh) * | 2021-11-18 | 2022-03-18 | 北京三快在线科技有限公司 | 测试方法、装置、电子设备及存储介质 |
CN115470127A (zh) * | 2022-09-06 | 2022-12-13 | 北京海泰方圆科技股份有限公司 | 页面兼容性处理方法、装置、计算机设备和存储介质 |
CN115658374A (zh) * | 2022-12-23 | 2023-01-31 | 深圳市明源云科技有限公司 | 平台兼容性问题修复方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060015807A1 (en) * | 2004-07-15 | 2006-01-19 | Microsoft Corporation | Automatically generated compatibility reports |
CN103440337A (zh) * | 2013-09-09 | 2013-12-11 | 百度在线网络技术(北京)有限公司 | Api兼容性扫描方法和api兼容性扫描装置 |
CN104932973A (zh) * | 2014-03-21 | 2015-09-23 | 腾讯科技(深圳)有限公司 | 一种版本兼容测试方法和装置 |
CN109271181A (zh) * | 2017-07-14 | 2019-01-25 | 中兴通讯股份有限公司 | 应用兼容性修复方法、终端设备及计算机可读存储介质 |
CN109871319A (zh) * | 2019-01-18 | 2019-06-11 | 深圳壹账通智能科技有限公司 | 项目代码扫描方法、装置、计算机设备及存储介质 |
-
2019
- 2019-08-13 CN CN201910745953.3A patent/CN110688300A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060015807A1 (en) * | 2004-07-15 | 2006-01-19 | Microsoft Corporation | Automatically generated compatibility reports |
CN103440337A (zh) * | 2013-09-09 | 2013-12-11 | 百度在线网络技术(北京)有限公司 | Api兼容性扫描方法和api兼容性扫描装置 |
CN104932973A (zh) * | 2014-03-21 | 2015-09-23 | 腾讯科技(深圳)有限公司 | 一种版本兼容测试方法和装置 |
CN109271181A (zh) * | 2017-07-14 | 2019-01-25 | 中兴通讯股份有限公司 | 应用兼容性修复方法、终端设备及计算机可读存储介质 |
CN109871319A (zh) * | 2019-01-18 | 2019-06-11 | 深圳壹账通智能科技有限公司 | 项目代码扫描方法、装置、计算机设备及存储介质 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112101571A (zh) * | 2020-09-25 | 2020-12-18 | 北京百度网讯科技有限公司 | 用于监控深度学习框架下的算子兼容性的方法和装置 |
CN112256265A (zh) * | 2020-10-14 | 2021-01-22 | 北京百家科技集团有限公司 | H5页面稳定性的测试方法、装置及存储介质、电子设备 |
CN112379917A (zh) * | 2020-11-19 | 2021-02-19 | 康键信息技术(深圳)有限公司 | 浏览器兼容性提升方法、装置、设备及存储介质 |
CN112379917B (zh) * | 2020-11-19 | 2023-10-20 | 康键信息技术(深圳)有限公司 | 浏览器兼容性提升方法、装置、设备及存储介质 |
CN112417338A (zh) * | 2020-11-30 | 2021-02-26 | 北京博瑞彤芸科技股份有限公司 | 一种页面适配方法、系统及设备 |
CN113051582A (zh) * | 2021-04-28 | 2021-06-29 | 重庆电子工程职业学院 | 一种计算机软件技术开发调试系统 |
CN113672512A (zh) * | 2021-08-20 | 2021-11-19 | 泰康保险集团股份有限公司 | 代码检查规则生成方法、代码检查方法、装置、介质 |
CN114201384A (zh) * | 2021-11-18 | 2022-03-18 | 北京三快在线科技有限公司 | 测试方法、装置、电子设备及存储介质 |
CN115470127A (zh) * | 2022-09-06 | 2022-12-13 | 北京海泰方圆科技股份有限公司 | 页面兼容性处理方法、装置、计算机设备和存储介质 |
CN115470127B (zh) * | 2022-09-06 | 2023-08-15 | 北京海泰方圆科技股份有限公司 | 页面兼容性处理方法、装置、计算机设备和存储介质 |
CN115658374A (zh) * | 2022-12-23 | 2023-01-31 | 深圳市明源云科技有限公司 | 平台兼容性问题修复方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110688300A (zh) | 兼容性测试方法、装置、设备及存储介质 | |
CN108614707B (zh) | 静态代码检查方法、装置、存储介质和计算机设备 | |
CN110389896A (zh) | 代码自动化分析和测试方法、装置及计算机可读存储介质 | |
CN111142988A (zh) | 页面测试方法、装置、存储介质及电子设备 | |
EP3682324A1 (en) | Method and apparatus for finding long methods in code | |
CN111181805B (zh) | 一种基于测试用例的微服务测试挡板生成方法及系统 | |
CN113448862B (zh) | 软件版本测试方法、装置及计算机设备 | |
CN110287700B (zh) | 一种iOS应用安全分析方法及装置 | |
CN111415683A (zh) | 语音识别异常告警方法、装置、计算机设备和存储介质 | |
CN112650673A (zh) | 事务跟踪系统中测试用例的创建方法、装置及电子设备 | |
CN111859862A (zh) | 文本的数据标注方法和装置、存储介质及电子装置 | |
CN111813593A (zh) | 一种数据处理方法、设备、服务器及存储介质 | |
CN116415258A (zh) | 漏洞检测方法、装置、设备、介质及程序产品 | |
CN110928793A (zh) | 一种正则表达式检测方法、装置及计算机可读存储介质 | |
CN111459774A (zh) | 一种应用程序的流量的获取方法、装置、设备及存储介质 | |
CN114297057A (zh) | 一种自动化测试用例的设计及使用方法 | |
CN114385155A (zh) | vue项目可视化工具生成方法、装置、设备及存储介质 | |
CN112464237A (zh) | 一种静态代码安全诊断方法及装置 | |
CN113535594B (zh) | 业务场景测试用例的生成方法、装置、设备和存储介质 | |
CN113568662B (zh) | 一种基于调用关系的代码变更影响范围分析方法及系统 | |
CN112799956B (zh) | 资产识别能力测试方法、装置及系统装置 | |
CN112445391B (zh) | 一种服务数据生成方法、装置和计算机可读存储介质 | |
CN114237645A (zh) | 应用系统的部署方法、装置、终端以及存储介质 | |
CN114327753A (zh) | 一种容器构建结果的预测方法、装置、设备及介质 | |
CN110716866A (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 |