CN115454826A - 回归测试方法、装置、电子设备以及存储介质 - Google Patents
回归测试方法、装置、电子设备以及存储介质 Download PDFInfo
- Publication number
- CN115454826A CN115454826A CN202211008898.8A CN202211008898A CN115454826A CN 115454826 A CN115454826 A CN 115454826A CN 202211008898 A CN202211008898 A CN 202211008898A CN 115454826 A CN115454826 A CN 115454826A
- Authority
- CN
- China
- Prior art keywords
- change
- component
- page
- code
- determining
- 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
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/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- 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/3676—Test management for coverage analysis
-
- 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/368—Test management for test version control, e.g. updating test cases to a new software version
-
- 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)
- Stored Programmes (AREA)
Abstract
本公开提供了回归测试方法、装置、电子设备以及存储介质,涉及计算机技术领域,尤其涉及软件测试领域。具体实现方案为:确定迭代测试中当前待测试代码相对于最近一次已完成测试代码所产生的变更文件集;基于代码知识图谱,确定变更文件集对应的变更组件集;基于代码知识图谱和所变更组件集,确定待回归页面;其中,代码知识图谱用于描述源码中文件与组件之间的对应关系,并用于描述组件与页面之间的对应关系;基于变更组件集和待回归页面,进行回归测试。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及软件测试技术领域。
背景技术
随着计算机的不断发展,由程序构建而成的产品越来越多,并且此类产品的数量在不断的攀升。为了满足人们的各种需求,由程序构建的产品需要不断的进行更新和迭代,而产品进行更新和迭代需要更改产品中公共模块的代码,并在修改之后对产品进行回归测试。回归测试是指修改了旧代码,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
在云原生微服务架构大力推行的背景下,一个产品动辄要搭建几百个应用,并且随着前端组件化开发方式的普及,导致整体服务拓扑十分庞大,调用关系错综复杂。目前在对前端进行回归测试时,主要靠测试人员的经验,存在对代码改动影响面评估不准确,而导致回归漏测的风险。
发明内容
本公开提供了一种回归测试方法、装置、电子设备以及存储介质。
根据本公开的一方面,提供了一种回归测试方法,包括:确定迭代测试中当前待测试代码相对于最近一次已完成测试代码所产生的变更文件集;基于代码知识图谱,确定所述变更文件集对应的变更组件集;基于所述代码知识图谱和所述变更组件集,确定待回归页面;其中,所述代码知识图谱用于描述源码中文件与组件之间的对应关系,并用于描述组件与页面之间的对应关系;基于所述变更组件集和所述待回归页面,进行回归测试。
根据本公开的另一方面,提供了一种回归测试装置,包括:确定模块,用于确定迭代测试中当前待测试代码相对于最近一次已完成测试代码所产生的变更文件集;基于代码知识图谱,确定所述变更文件集对应的变更组件集;基于所述代码知识图谱和所述变更组件集,确定待回归页面;其中,所述代码知识图谱用于描述源码中文件与组件之间的对应关系,并用于描述组件与页面之间的对应关系;测试模块,用于基于所述变更组件集和所述待回归页面,进行回归测试。
根据本公开的另一方面,提供一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的方法。
根据本公开的另一方面,提供一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行上述的方法。
根据本公开的另一方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现上述的方法。
本公开提供的回归测试方法,基于代码知识图谱可以确定变更文件集对应的变更组件集,进一步根据变更组件集通过代码知识图谱确定待回归页面,并基于所述变更组件集和所述待回归页面,进行回归测试。由于代码知识图谱用于描述源码中文件与组件之间的对应关系以及描述组件与页面之间的对应关系,因此能够提供更加精准的回归范围,减少回归遗漏,无需人为进行回归范围的划分,提升人力效能。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开实施例提供的一种组件引用关系的示意图;
图2是根据本公开实施例提供的一种生成知识代码图谱的场景示意图;
图3是根据本公开实施例提供的一种应用于回归测试方法的场景示意图;
图4是根据本公开实施例提供的一种回归测试方法的流程示意图;
图5是根据本公开实施例提供的一种确定回归测试范围的场景示意图;
图6是根据本公开实施例提供的一种回归测试方法的流程示意图;
图7是根据本公开实施例提供的一种组件引用关系的示意图;
图8是根据本公开实施例提供的一种回归测试方法的流程示意图;
图9是根据本公开实施例提供的一种确定风险等级的场景示意图;
图10是根据本公开实施例提供的一种回归测试方法的流程示意图;
图11是根据本公开实施例提供的一种定位异常组件的场景示意图;
图12是根据本公开实施例提供的一种回归测试的装置的框图;
图13是用来实现本公开实施例的回归测试的方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在云原生微服务架构大力推行的背景下,一个产品动辄要搭建几百个应用,并且随着前端组件化开发方式的普及,导致整体服务拓扑十分庞大,调用关系错综复杂。针对前端进行回归测试时,主要靠测试人员的经验,存在对代码改动影响面评估不准确,而导致回归漏测的风险。特别是当存在服务间引用关系时,如果研发人员修改了上游服务的组件,但其对下游有多少服务引用了该组件缺乏了解,因而没有及时通知下游进行回归测试,很可能导致下游产品出现问题。
目前还有采用自动化回归测试的方案,如果端到端自动化做得比较完善,也会在回归阶段运行自动化测试用例来进行提效和弥补疏漏。但是采用端到端自动化的方式进行回归测试,首先对自动化用例的完备度有很高的要求,否则无法召回边界场景问题;其次当用例完备度很高时,自动化的维护成本、运行稳定性和运行效率存在很大的挑战,如果项目经常升级,自动化的维护成本甚至高于人工测试。
在一些项目中还会采用精准测试的方案,首先在代码中进行插桩,接下来录制用例,将产生的代码覆盖率数据与该用例进行关联,将用例与代码的关联关系进行维护,这样当代码发生变更时,通过变更代码就可以将用例筛选出来,作为主要回归用例。前端精准测试技术对提升自动化的运行效率有比较好的改善,但不管是对于人工测试还是自动化测试,当项目升级时就需要重新录制用例与代码的关联关系,仍然存在维护成本高的问题。
基于上述问题,本公开提供一种回归测试的方法,基于代码知识图谱确定变更文件集对应的变更组件集,进一步根据变更组件集通过代码知识图谱确定待回归页面,并基于所述变更组件集和所述待回归页面,进行回归测试。由于代码知识图谱用于描述源码中文件与组件之间的对应关系以及描述组件与页面之间的对应关系,因此能够提供更加精准的回归范围,减少回归遗漏,无需人为进行回归范围的划分,提升人力效能。
下面首先对前端组件的关系进行简要描述:在组件式开发的WEB或H5项目中,页面功能被拆分,独立进行封装,将将一段界面样式和其对应的功能用黑盒的形式放到一个组件内,暴露出一些开箱即用的函数和属性供外部组件调用。组件可以多层封装,通过引用多个组件,最后封装成一个大组件。比如一个输入框可以是一个组件,一个表单引用了输入框组件形成了新的表单组件,一个页面引用了表单组件形成了一个页面组件。组件可以引用本服务自定义组件、项目公共组件库组件、已经开源库组件等。在微服务框架中,项目中各服务的组件之间互相引用,整体构成一个大的拓扑结构。
示例性的,如图1所示,页面中包括页面组件a,页面组件a又包括服务组件b和开源组件c,服务组件b又包括其他服务组件e和公共库组件f,则组件链路之间的引用关系为a→b→e、a→b→f以及为a→c。当组件e的代码发生改动时,组件b和组件a都会受到影响。
下面对代码知识图谱的生成进行说明:
一些实施例中,如图2所示,代码提交后,根据项目使用框架和业务编码规范按照前端语法特征,将组件定义特征、自定义组件引用特征、页面路由定义特征以及公共组件引用特征梳理出来,作为组件特征。例如vue前端框架,每个.vue文件即是一个组件,组件的引用形式为通过在.vue文件中引入文件、声明组件、标签引用的形式来对模块内部、外部组件进行引用。
将代码中定义页面与组件的映射关系的格式梳理出来,作为页面特征。例如代码中存在路由文件,其中定义了页面的名称、统一资源定位符、页面入口文件。
进一步的,将源码中的文件进行ast抽象语法树解析,从ast解析结果中将组件特征、页面与组件的映射特征识别出来,获得组件的定义、组件与文件的对应关系、组件链路之间的相互引用关系以及页面与组件的对应关系,以及其他的一些组件配置数据(例如页面配置、团队配置、模块配置等),生成以组件为主体的代码知识图谱。
作为一示例性实施方式,图3是根据本公开一示例性实施方式中示出的应用回归测试的方法的应用场景图。
本公开主要应用于微服务架构组件化开发的WEB或H5项目,本地开发完成后,开发人员对代码进行自测,自测完成后将代码提交,并对代码中的模块进行测试,测试通过后合入线上分支,并进行集成测试,继承测试通过后执行发布上线,并在线上进行问题排查。
在本公开实施例中,在每次发布时将待测试代码与最近一次已完成测试代码进行对比,更新代码知识图谱和本次迭代的变更组件,应用更新后的代码知识图谱在不同的阶段进行回归测试范围的确定、问题定位查询、辅助代码审查(code review)、测试左移、风险披露等服务。
例如,当代码检查人员在代码提交后进行前端代码code review时,可以基于代码知识图谱,得到本次待测试代码的回归页面有哪些,据此更具全局观地评估修改的代码是否完全、是否产生了预期外的影响等,提升code review的效果,避免遗漏和存在盲区。
当开发人员或测试人员进行回归测试时,可以基于代码知识图谱,得到本次待测试代码的回归页面有哪些,以及变更组件的风险等级,作为回归测试的依据,根据风险等级的高低对待回归页面进行回归,以减少漏测。
在项目集成测试阶段,除了测试人员主动查询回归范围进行测试之外,也可设置自动风险披露系统。根据组件的变更风险等级和影响范围,结合其他业务风险因素(如页面访问量、开发人员bug率等),自动识别高危风险变更场景,提醒测试人员关注并处理,在项目迭代中自动进行风险闭环。
在项目测试负责人进行测试排期时,将变更组件的影响范围和风险等级,作为测试左移决策的判断依据,例如根据数据判断某次改动的影响面较小且风险较低,开发人员自主测试即可保障项目质量,不需要测试人员参与,就可以做出相应的决策。
当线上/线下发现项目存在故障时,负责排查故障原因的开发人员可以基于知识代码图谱,得到本迭代改动的哪些底层组件影响到了异常页面,集合变更组件的风险等级,开发人员可依次按照风险等级直接排查这些底层组件是否存在问题,免去了中间根据组件引用路径一层层排查的步骤,提升故障排查效率。
作为一示例性实施方式,图4是根据本公开一示例性实施方式中示出的一种回归测试的方法流程图。
在步骤S401中,确定迭代测试中当前待测试代码相对于最近一次已完成测试代码所产生的变更文件集。
在步骤S402中,基于代码知识图谱,确定变更文件集对应的变更组件集。
其中,代码知识图谱用于描述源码中文件与组件之间的对应关系,并用于描述组件与页面之间的对应关系。
在步骤S403中,基于代码知识图谱和变更组件集,确定待回归页面。
在步骤S404中,基于变更组件集和待回归页面,进行回归测试。
示例性的,如图5所示,当前待测试代码与最近一次已完成测试代码发生变更,获取变更明细并解析哪些文件发生了变更,获取变更文件集,然后递归查询代码知识图谱获取变更组件为组件d,基于代码知识图谱确定组件d对应的待回归页面。
在本公开实施例中,基于代码知识图谱确定变更文件集对应的变更组件集,进一步根据变更组件集通过代码知识图谱确定待回归页面,并基于所述变更组件集和所述待回归页面,进行回归测试。由于代码知识图谱用于描述源码中文件与组件之间的对应关系以及描述组件与页面之间的对应关系,因此能够提供更加精准的回归范围,减少回归遗漏,无需人为进行回归范围的划分,提升人力效能。同时,本公开实施例相对于端到端自动化和前端精准测试技术,本公开实施例对项目基建(自动化用例、用例与代码的关系建立)的完善度没有那么高的要求,由于本公开实施例可以完全自动化运行,不需要人工进行自动化用例创建和维护、用例与代码关系的录制和维护工作,节省巨大人力成本。
一些实施例中,代码知识图谱还用于描述组件链路之间的相互引用关系。
基于此,图6是根据本公开实施例中基于代码知识图谱和变更组件集,确定待回归页面的流程示意图,参照图6,包括以下步骤:
在步骤S601中,基于代码知识图谱所描述的组件链路之间的相互引用关系,按照组件链路引用关系从下到上的顺序逐级遍历变更组件集中各组件,得到最上层链路对应的变更组件。
在步骤S602中,将最上层链路对应的变更组件所对应的页面,作为待回归页面。
示例性的,如图7所示,变更组件为组件d,按照如图所示的组件链路引用关系,得到组件d最上层链路对应的变更组件为a,组件a所对应的页面为页面1,则页面1为待回归页面。
在本公开实施例中,通过代码知识图谱可以被变更组件集影响的全部组件,进而可以确定受影响的全部待回归页面,使精准的回归范围更加精准,减少回归遗漏。
一些实施例中,如果待回归的页面较多,全部回归成本较高,可以为待回归页面划分出优先等级,有选择性地进行回归测试。
图8是根据本公开实施例中基于所述变更组件集和所述待回归页面,进行回归测试的流程示意图,参照图8,包括以下步骤:
在步骤S801中,基于变更组件集中每个变更组件的风险等级,确定待回归页面的优先级。
应理解,风险等级越高的组件,组件对应的待回归页面的优先级就越高。
在步骤S802中,基于待回归页面的优先级,按照优先级顺序,对待回归页面集进行回归测试。
在本公开实施例中,基于变更组件集中每个变更组件的风险等级确定待回归页面的优先级,基于待回归界面的优先级对优先级高的待回归页面优先进行回归测试,并重点对优先级高的待回归页面进行回归测试,避免出现纰漏。
一些实施例中,变更组件集中的任一变更组件的风险等级基于以下方式确定:获取变更组件中一个或多个变更行的变更方式和变更语法类型;基于一个或多个变更行的变更方式和变更语法类型,确定一个或多个变更行的风险等级;将一个或多个变更行中风险等级最高的等级,确定为变更组件的风险等级。
其中,基于一个或多个变更行的变更方式和变更语法类型,可以根据预先指定的规则确定一个或多个变更行的风险等级。
例如,如图9所示,根据变更内容对业务的影响程度,对变更方式action(新增、修改、删除)和变更语法类型type(方法、属性、声明、注释、日志、文案、样式等)的组合划分风险等级priority(P0、P1、P2、P3),以二级字典的结构进行存储。比如:P0-删除方法、修改属性,P1-修改元素、修改属性、删除元素、删除属性等,P2-新增元素、新增方法、新增样式等,P3-修改日志、修改文案、修改注释等。
具体的,将变更组件对应的代码/文件commit与基准版本代码/文件commit进行一致性比对,获取变更组件中一个或多个变更行的变更方式。变更方式包括:新增行、删除行以及修改行。例如,修改-行1,删除-行3。
进一步的,将变更组件对应的代码进行ast抽象语法树解析,对ast解析结果进行语法识别,获得每一行所对应的变更语法类型。变更语法类型包括:方法、属性、声明、注释、日志、文案、样式等。比如:行1-声明,行2-属性,行3-方法。
再进一步的,将变更方式和变更语法类型结合起来,得到变更行-变更方式-变更语法类型的对应关系。比如行1-修改-声明,行3-删除-方法。将该对应关系与上述二级字典进行映射,获取变更行对应的风险等级。
最后,将变更组件中所有变更行对应的风险等级进行汇总,去最高风险等级作为该变更组件的风险等级。例如,变更组件1中行1的风险等级为P0、行2和4的风险等级为P2、行3的风险等级为P3,则变更组件1的风险等级为行3对应的风险等级P3。
在本公开实施例中,基于变更行的变更方式和变更语法类型确定变更组件的风险等级,用户可以根据自定义的规则来确定变更行的变更方式和变更语法类型与变更组件的风险等级,从而用户可以根据变更组件的风险等级判断风险组件是否为首先需要测试的组件。
当业务功能发生故障时,传统的报警自动定位能力一般只能定位运维类故障,代码层面的问题仍然需要前端研发人工梳理代码进行排查。代码层面故障的人工定位效率较低,特别是当项目采用微服务架构时,如果故障的上下游链路较长,则需要逐级进行梳理和追溯,直到排查到故障的源服务,服务拓扑的复杂性为人工定位增加了成倍的难度和耗时。
由于人工排查效率较低,有方案采用事先制定故障树规则,通过规则引擎自动判断故障原因。但是对于故障树所包含故障原因的全面性有很高的要求,其次故障树规则的梳理和维护也需要耗费很多人力成本。
基于此,在本公开实施例中,当发生线上/线下故障时,利用代码知识图谱,可以通过故障页面进行反向追溯,定位到本迭代修改的底层组件,辅助开发人员进行快速代码定位。
一些实施例中,图10是根据本公开一示例性实施方式中示出的一种回归测试的方法流程图。
在步骤S1001中,响应于存在异常页面,基于组件链路之间的相互引用关系,定位异常界面所对应组件引用的最下层链路对应的组件。
可选的,本公开实施例中组件链路之间的引用关系为本次迭代测试中当前待测试代码中组件链路之间的引用关系,也即本公开实施例中基于当前待测试代码构建基准代码知识图谱,并利用基于代码知识图谱数据进行定位。
在步骤S1002中,将最下层链路对应的组件,确定为异常组件。
在本公开实施例中,当前端某功能发生故障时,相对于人工定位,本公开提供了代码层面的自动定位能力,基于异常界面可以直接确定出最下层发生异常的异常组件,免去了根据组件引用路径一层层排查的步骤,有效降低定位难度,提升定位的效率。特别是在微服务架构时,服务模块众多并且互相引用链路长,定位的难度将成倍提升,应用本公开进行辅助定位,效率会得到显著提升,且无需人工进行定位,对故障排查人员对模块间关联熟悉度的要求大幅降低。相对于规则引擎定位方案,本公开无需事先制定十分完善的故障树规则,并且由于可以完全自动化运行,节省了日常维护故障树规则的人力。
在本公开实施例中,还可以在代码知识图谱中存储变更组件的风险等级,在确定异常组件时,将异常组件对应的风险等级一并显示出来,从而使故障排查人员根据异常组件的风险等级从高到低一次排查。
示例性的,如图11所示,基于当前待测试代码建立或更新代码知识图谱,并在代码知识图谱中圈定当前待测试代码相对于最近一次已完成测试代码所产生的变更文件集的组件链路以及各个组件的风险等级,当发现有异常页面1时,基于代码知识图谱中的组件链路引用关系定位异常界面所对应组件引用的最下层链路对应的组件,也即导致异常界面1产生的源组件为组件f。
基于相同的构思,本公开实施例还提供一种回归测试的装置。
可以理解的是,本公开实施例提供的回归测试的装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。结合本公开实施例中所公开的各示例的单元及算法步骤,本公开实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本公开实施例的技术方案的范围。
作为一示例性实施方式,图12是根据本公开一示例性实施方式中示出的一种回归测试的装置的框图1200。参阅图12所示,包括确定模块1201、测试模块1202以及定位模块1203。
确定模块1201,用于确定迭代测试中当前待测试代码相对于最近一次已完成测试代码所产生的变更文件集;基于代码知识图谱,确定所述变更文件集对应的变更组件集;基于代码知识图谱和所述变更组件集,确定待回归页面;其中,代码知识图谱用于描述源码中文件与组件之间的对应关系,并用于描述组件与页面之间的对应关系;
测试模块1202,用于基于变更组件集和所述待回归页面,进行回归测试。
一种实施方式中,代码知识图谱还用于描述组件链路之间的相互引用关系;
确定模块1201,具体用于基于代码知识图谱所描述的组件链路之间的相互引用关系,按照组件链路引用关系从下到上的顺序逐级遍历变更组件集中各组件,得到最上层链路对应的变更组件;将最上层链路对应的变更组件所对应的页面,作为待回归页面。
一种实施方式中,测试模块1202,具体用于基于变更组件集中每个变更组件的风险等级,确定待回归页面的优先级;基于待回归页面集的优先级,按照优先级顺序,对待回归页面进行回归测试。
一种实施方式中,变更组件集中的任一变更组件的风险等级基于以下方式确定:获取变更组件中一个或多个变更行的变更方式和变更语法类型;基于一个或多个变更行的变更方式和变更语法类型,确定一个或多个变更行的风险等级;将一个或多个变更行中风险等级最高的等级,确定为变更组件的风险等级。
一种实施方式中,定位模块1203,用于响应于存在异常页面,基于组件链路之间的相互引用关系,定位异常界面所对应组件引用的最下层链路对应的组件;
确定模块1201,还用于将最下层链路对应的组件,确定为异常组件。
关于本公开上述涉及的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图13示出了可以用来实施本公开的实施例的示例电子设备1300的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图13所示,设备1300包括计算单元1301,其可以根据存储在只读存储器(ROM)1302中的计算机程序或者从存储单元1308加载到随机访问存储器(RAM)1303中的计算机程序,来执行各种适当的动作和处理。在RAM1303中,还可存储设备1300操作所需的各种程序和数据。计算单元1301、ROM1302以及RAM 1303通过总线1304彼此相连。输入/输出(I/O)接口1305也连接至总线1304。
设备1300中的多个部件连接至I/O接口1305,包括:输入单元1306,例如键盘、鼠标等;输出单元1307,例如各种类型的显示器、扬声器等;存储单元1308,例如磁盘、光盘等;以及通信单元1309,例如网卡、调制解调器、无线通信收发机等。通信单元1309允许设备1300通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元1301可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1301的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1301执行上文所描述的各个方法和处理,例如回归测试方法。例如,在一些实施例中,方法XXX可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1308。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1302和/或通信单元1309而被载入和/或安装到设备1300上。当计算机程序加载到RAM 1303并由计算单元1301执行时,可以执行上文描述的方法回归测试方法的一个或多个步骤。备选地,在其他实施例中,计算单元1301可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行回归测试。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (13)
1.一种回归测试方法,包括:
确定迭代测试中当前待测试代码相对于最近一次已完成测试代码所产生的变更文件集;
基于代码知识图谱,确定所述变更文件集对应的变更组件集;
基于所述代码知识图谱和所述变更组件集,确定待回归页面集;
其中,所述代码知识图谱用于描述源码中文件与组件之间的对应关系,并用于描述组件与页面之间的对应关系;
基于所述变更组件集和所述待回归页面,进行回归测试。
2.根据权利要求1所述的方法,所述代码知识图谱还用于描述组件链路之间的相互引用关系;
所述基于所述代码知识图谱和所述变更组件集,确定待回归页面,包括:
基于所述代码知识图谱所描述的组件链路之间的相互引用关系,按照组件链路引用关系从下到上的顺序逐级遍历所述变更组件集中各组件,得到最上层链路对应的变更组件;
将所述最上层链路对应的变更组件所对应的页面,作为待回归页面。
3.根据权利要求1或2所述的方法,所述基于所述变更组件集和所述待回归页面,进行回归测试,包括:
基于所述变更组件集中每个变更组件的风险等级,确定所述待回归页面的优先级;
基于所述待回归页面集的优先级,按照优先级顺序,对所述待回归页面进行回归测试。
4.根据权利要求3所述的方法,所述变更组件集中的任一变更组件的风险等级基于以下方式确定:
获取变更组件中一个或多个变更行的变更方式和变更语法类型;
基于所述一个或多个变更行的变更方式和变更语法类型,确定所述一个或多个变更行的风险等级;
将所述一个或多个变更行中风险等级最高的等级,确定为所述变更组件的风险等级。
5.根据权利要求1至4中任意一项所述的方法,所述方法还包括:
响应于存在异常页面,基于所述组件链路之间的相互引用关系,定位所述异常界面所对应组件引用的最下层链路对应的组件;
将所述最下层链路对应的组件,确定为异常组件。
6.一种回归测试装置,包括:
确定模块,用于确定迭代测试中当前待测试代码相对于最近一次已完成测试代码所产生的变更文件集;基于代码知识图谱,确定所述变更文件集对应的变更组件集;基于所述代码知识图谱和所述变更组件集,确定待回归页面;其中,所述代码知识图谱用于描述源码中文件与组件之间的对应关系,并用于描述组件与页面之间的对应关系;
测试模块,用于基于所述变更组件集和所述待回归页面,进行回归测试。
7.根据权利要求6所述的装置,所述代码知识图谱还用于描述组件链路之间的相互引用关系;
所述确定模块,具体用于基于所述代码知识图谱所描述的组件链路之间的相互引用关系,按照组件链路引用关系从下到上的顺序逐级遍历所述变更组件集中各组件,得到最上层链路对应的变更组件;将所述最上层链路对应的变更组件所对应的页面,作为待回归页面。
8.根据权利要求6或7所述的装置,
所述测试模块,具体用于基于所述变更组件集中每个变更组件的风险等级,确定所述待回归页面的优先级;基于所述待回归页面的优先级,按照优先级顺序,对所述待回归页面进行回归测试。
9.根据权利要求8所述的装置,所述变更组件集中的任一变更组件的风险等级基于以下方式确定:
获取变更组件中一个或多个变更行的变更方式和变更语法类型;
基于所述一个或多个变更行的变更方式和变更语法类型,确定所述一个或多个变更行的风险等级;
将所述一个或多个变更行中风险等级最高的等级,确定为所述变更组件的风险等级。
10.根据权利要求6至9任意一项所述的装置,
定位模块,用于响应于存在异常页面,基于所述组件链路之间的相互引用关系,定位所述异常界面所对应组件引用的最下层链路对应的组件;
所述确定模块,还用于将所述最下层链路对应的组件,确定为异常组件。
11.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-5中任意一项所述的方法。
12.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-5中任意一项所述的方法。
13.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-5中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211008898.8A CN115454826A (zh) | 2022-08-22 | 2022-08-22 | 回归测试方法、装置、电子设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211008898.8A CN115454826A (zh) | 2022-08-22 | 2022-08-22 | 回归测试方法、装置、电子设备以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115454826A true CN115454826A (zh) | 2022-12-09 |
Family
ID=84299565
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211008898.8A Pending CN115454826A (zh) | 2022-08-22 | 2022-08-22 | 回归测试方法、装置、电子设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115454826A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116661768A (zh) * | 2023-07-25 | 2023-08-29 | 苏州浮木云科技有限公司 | 基于知识图谱的页面代码生成方法、系统、装置和介质 |
-
2022
- 2022-08-22 CN CN202211008898.8A patent/CN115454826A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116661768A (zh) * | 2023-07-25 | 2023-08-29 | 苏州浮木云科技有限公司 | 基于知识图谱的页面代码生成方法、系统、装置和介质 |
CN116661768B (zh) * | 2023-07-25 | 2023-12-29 | 苏州浮木云科技有限公司 | 基于知识图谱的页面代码生成方法、系统、装置和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210279577A1 (en) | Testing of Computing Processes Using Artificial Intelligence | |
CN107844424B (zh) | 基于模型的测试系统及方法 | |
US9466041B2 (en) | User selected flow graph modification | |
CN108345532A (zh) | 一种自动化测试用例生成方法和装置 | |
US20210191845A1 (en) | Unit testing of components of dataflow graphs | |
US8775392B1 (en) | Revision control and configuration management | |
Runge et al. | Test case generation using visual contracts | |
Meedeniya et al. | Traceability establishment and visualization of software artefacts in devops practice: a survey | |
CN112506771A (zh) | 一种报文比对方法和装置 | |
CN115509522A (zh) | 面向低代码场景的接口编排方法、系统、电子设备 | |
CN115454826A (zh) | 回归测试方法、装置、电子设备以及存储介质 | |
US9507592B2 (en) | Analysis of data integration job | |
KR100869886B1 (ko) | 메인프레임 시스템 환경을 개방형 시스템 환경으로전환하는 리호스팅 방법 | |
CN112988578A (zh) | 一种自动化测试方法和装置 | |
US11132286B1 (en) | Dynamic reordering of test case execution | |
US12001823B2 (en) | Systems and methods for building and deploying machine learning applications | |
CN113127357A (zh) | 单元测试方法、装置、设备、存储介质及程序产品 | |
US11790249B1 (en) | Automatically evaluating application architecture through architecture-as-code | |
Karami et al. | Maintaining accurate web usage models using updates from activity diagrams | |
Sakai et al. | Constructing a service process model based on distributed tracing for conformance checking of microservices | |
CN113051479A (zh) | 文件处理、推荐信息生成方法、装置、设备及存储介质 | |
CN112380118A (zh) | 单元测试方法、装置、介质及电子设备 | |
CN115176233A (zh) | 以确定性顺序执行测试 | |
CN110399296A (zh) | 测试客户端与服务端之间交互接口的方法、系统和介质 | |
CN111338963B (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 |