CN116521512A - 代码的精准测试方法、装置、电子设备及计算机可读介质 - Google Patents

代码的精准测试方法、装置、电子设备及计算机可读介质 Download PDF

Info

Publication number
CN116521512A
CN116521512A CN202211092976.7A CN202211092976A CN116521512A CN 116521512 A CN116521512 A CN 116521512A CN 202211092976 A CN202211092976 A CN 202211092976A CN 116521512 A CN116521512 A CN 116521512A
Authority
CN
China
Prior art keywords
code
interface
routing
target interface
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211092976.7A
Other languages
English (en)
Inventor
李莉
徐琼瑶
郭迎春
韩陈寿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Yunsizhixue Technology Co ltd
Original Assignee
Beijing Yunsizhixue Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Yunsizhixue Technology Co ltd filed Critical Beijing Yunsizhixue Technology Co ltd
Priority to CN202211092976.7A priority Critical patent/CN116521512A/zh
Publication of CN116521512A publication Critical patent/CN116521512A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

代码的精准测试方法、装置、电子设备及计算机可读介质
技术领域
本申请涉及计算机信息处理领域,具体而言,涉及一种代码的精准测试方法、装置、电子设备及计算机可读介质。
背景技术
随着软件系统的发展,软件的规模越来越庞大,复杂度越来越高,测试工程师在项目测试中,为了保障软件质量,势必会使用大量的测试用例来验证软件功能是否正常,软件测试时间和测试人力都大量上升;但是另一方面,随着敏捷项目流程的推广,软件迭代速度越来越快,这对软件测试的效率也提出了很大的挑战。
传统的软件测试方法主要包括黑盒测试和白盒测试,黑盒测试将程序看做一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试;白盒测试将程序看过一个可视的盒子,即清楚盒子内部的东西以及里面是如何运作的,白盒全面了解程序内部逻辑结构、对所有逻辑进行测试,在使用白盒时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
按照传统的黑盒测试和白盒测试,来进行敏捷流程下的大型软件系统的测试,必然存在以下情况:
1.为了软件质量不受本次代码修改的影响,使用全量测试用例进行测试,测试时间完全不受控(取决于软件全量的测试用例数量)
2.为了敏捷项目的迭代时间,使用白盒测试方案对本地代码修改的影响面进行评估,但是系统越来越复杂的情况下,评估依赖于软件测试工程师对系统的理解程度以及技术能力,很容易因为评估不够准确,造成测试用例遗漏的情况,从而出现线上问题
基于以上这些问题,精准测试应运而生。精准测试通过对代码层面的分析来评估本次代码修改的影响面,通过影响面来推荐测试用例。精准测试既解决了黑盒测试需要全量测试用例进行测试的问题,也解决了白盒测试影响面评估难度较大的问题。
目前业界也有不少使用精准测试的公司,但是基于精准测试的特性(通过代码层面的分析来推荐测试用例)以及各公司代码语言、代码框架的不同,精准测试工具很难复用,因此,需要一种新的代码的精准测试方法、装置、电子设备及计算机可读介质。
在所述背景技术部分公开的上述信息仅用于加强对本申请的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
有鉴于此,本申请提供一种代码的精准测试方法、装置、电子设备及计算机可读介质,能够自动生成精准测试用例,既不会因为测试用例规模过于庞大而增加工作量,也不会因为测试用例的缺失造成漏测。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请的一方面,提出一种代码的精准测试方法,该方法包括:获取待进行测试的代码的模块信息和分支信息;根据所述模块信息和分支信息获取所述代码对应的文件、类、函数、路由关系;基于所述文件、所述类、所述函数、所述路由关系确定所述代码对应的目标接口;根据所述目标接口确定关联接口;根据所述目标接口和所述关联接口生成自动化测试用例以对所述代码进行精准测试。
可选地,根据所述模块信息和分支信息获取所述代码对应的文件、类、函数、路由关系,包括:将所述代码对应的模块信息、分支信息和基线代码对应的模块信息、分支信息进行对比;根据对比结果生成所述代码的修改操作对应的文件、类、函数、路由关系。
可选地,根据对比结果生成所述代码的修改操作对应的文件、类、函数、路由关系,包括:根据对比结果提取新增文件和/或修改文件和/或删除文件和/或重命名文件;逐一提取新增文件和/或修改文件和/或删除文件和/或重命名文件对应的文件、类、函数、路由关系。
可选地,基于所述文件、所述类、所述函数、所述路由关系确定所述代码对应的目标接口,包括:在所述代码为php代码时,基于其对应的所述文件、所述类、所述函数、所述路由关系,通过预先生成的第一代码调用关系图确定其对应的目标接口;在所述代码为go代码时,基于其对应的所述文件、所述类、所述函数、所述路由关系,通过预先生成的第二代码调用关系图确定其对应的目标接口。
可选地,在所述代码为php代码时,基于其对应的所述文件、所述类、所述函数、所述路由关系,通过预先生成的第一代码调用关系图确定其对应的目标接口,包括:在所述代码为php代码时,对其对应的所述文件、所述类、所述函数进行解析,生成抽象语法树;基于所述抽象语法树生成所述第一代码调用关系图;基于所述第一代码调用关系图根据所述代码对应的路由关系获取所述目标接口和其对应的入口函数。
可选地,在所述代码为go代码时,基于其对应的所述文件、所述类、所述函数、所述路由关系,通过预先生成的第二代码调用关系图确定其对应的目标接口,包括:在所述代码为go代码时,通过所述文件、所述类、所述函数的输出信息生成所述第二代码调用关系图;基于所述第二代码调用关系图获取所述代码对应的所述目标接口和其对应的入口函数。
可选地,根据所述目标接口确定关联接口,包括:获取所述代码所在业务系统的系统代码;建立所述系统代码的trace链路关系;将所述目标接口和所述trace链路关系对比,提取所述目标接口上游接口和下游接口作为所述关联接口。
根据本申请的一方面,提出一种代码的精准测试装置,该装置包括:代码模块,用于获取待进行测试的代码的模块信息和分支信息;信息模块,用于根据所述模块信息和分支信息获取所述代码对应的文件、类、函数、路由关系;接口模块,用于基于所述文件、所述类、所述函数、所述路由关系确定所述代码对应的目标接口;关联模块,用于根据所述目标接口确定关联接口;测试模块,用于根据所述目标接口和所述关联接口生成自动化测试用例以对所述代码进行精准测试。
根据本申请的一方面,提出一种电子设备,该电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上文的方法。
根据本申请的一方面,提出一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上文中的方法。
根据本申请的代码的精准测试方法、装置、电子设备及计算机可读介质,通过获取待进行测试的代码的模块信息和分支信息;根据所述模块信息和分支信息获取所述代码对应的文件、类、函数、路由关系;基于所述文件、所述类、所述函数、所述路由关系确定所述代码对应的目标接口;根据所述目标接口确定关联接口;根据所述目标接口和所述关联接口生成自动化测试用例以对所述代码进行精准测试的方式,能够自动生成精准测试用例,既不会因为测试用例规模过于庞大而增加工作量,也不会因为测试用例的缺失造成漏测。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
通过参照附图详细描述其示例实施例,本申请的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种代码的精准测试方法的示意图。
图2是根据一示例性实施例示出的一种代码的精准测试方法的流程图。
图3是根据另一示例性实施例示出的一种代码的精准测试方法的流程图。
图4是根据另一示例性实施例示出的一种代码的精准测试方法的流程图。
图5是根据一示例性实施例示出的一种代码的精准测试方法的流程图。
图6是根据一示例性实施例示出的一种代码的精准测试方法的流程图。
图7是根据一示例性实施例示出的一种代码的精准测试装置的框图。
图8是根据一示例性实施例示出的一种电子设备的框图。
图9是根据一示例性实施例示出的一种计算机可读介质的框图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本申请将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本申请概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本申请所必须的,因此不能用于限制本申请的保护范围。
图1是根据一示例性实施例示出的一种代码的精准测试方法的示意图。图1的实施例,是本申请应用在php、golang的服务端的测试框架示意图。核心中台层服务包含测试代码分析、静态代码调用分析、接口调用关系分析、接口信息、自动化测试用例分析。应用层提供精准测试推荐web服务,通过输入被测代码的代码模块以及分支,推荐代码影响的接口信息以及涉及到的自动化测试用例。
在测试代码分析时,静态代码函数调用分析服务可定时离线分析生成每个代码模块的接口函数调用关系并进行数据存储;接口调用关系分析服务可定时离线分析生成接口-接口之间的调用关系数据并进行数据存储;测试代码分析,可通过配套保障层的git获取待测代码。将待测代码与基线代码进行对比以提取修改点,之后通过静态代码调用分析的数据提取出修改代码对应的接口,然后通过接口调用关系分析的数据提取出修改代码对应接口的关联接口,最后通过接口信息服务和自动化服务输出所有关联接口接口信息和相关的自动化测试用例。
通过本申请中的代码精准测试方法对应的测试用例生成系统可生成推荐测试用例,和代码接口分析表格。
其中,代码接口分析表格具体内容如下:
其中,测试用例具体内容如下:
测试用例编号 测试用例名称 业务线 描述 链接
330 下单 A
245 优惠 B
……
图2是根据一示例性实施例示出的一种代码的精准测试方法的流程图。代码的精准测试方法20至少包括步骤S202至S210。
如图2所示,在S202中,获取待进行测试的代码的模块信息和分支信息。可由开发人员提交修改过的待测试代码。
在S204中,根据所述模块信息和分支信息获取所述代码对应的文件、类、函数、路由关系。可将所述代码对应的模块信息、分支信息和基线代码对应的模块信息、分支信息进行对比;根据对比结果生成所述代码的修改操作对应的文件、类、函数、路由关系。
更具体的,可根据对比结果提取新增文件和/或修改文件和/或删除文件和/或重命名文件;逐一提取新增文件和/或修改文件和/或删除文件和/或重命名文件对应的文件、类、函数、路由关系。
在S206中,基于所述文件、所述类、所述函数、所述路由关系确定所述代码对应的目标接口。
在一个实施例中,在所述代码为php代码时,基于其对应的所述文件、所述类、所述函数、所述路由关系,通过预先生成的第一代码调用关系图确定其对应的目标接口;
更具体的,在所述代码为php代码时,对其对应的所述文件、所述类、所述函数进行解析,生成抽象语法树;基于所述抽象语法树生成所述第一代码调用关系图;基于所述第一代码调用关系图根据所述代码对应的路由关系获取所述目标接口和其对应的入口函数。
在一个实施例中,在所述代码为go代码时,基于其对应的所述文件、所述类、所述函数、所述路由关系,通过预先生成的第二代码调用关系图确定其对应的目标接口。
更具体的,在所述代码为go代码时,通过所述文件、所述类、所述函数的输出信息生成所述第二代码调用关系图;基于所述第二代码调用关系图获取所述代码对应的所述目标接口和其对应的入口函数。
在S208中,根据所述目标接口确定关联接口。可获取所述代码所在业务系统的系统代码;建立所述系统代码的trace链路关系;将所述目标接口和所述trace链路关系对比,提取所述目标接口上游接口和下游接口作为所述关联接口。
在S210中,根据所述目标接口和所述关联接口生成自动化测试用例以对所述代码进行精准测试。根据所述目标接口和所述关联接口在自动化测试用例中筛选出相关测试用例;获取到所述目标接口和所述关联接口的相关信息;根据所述测试用例和所述相关信息对所述代码进行精准测试。
通过以上各个服务的数据积累以及所提供对外服务,精准测试推荐系统通过输入待测代码的模块和测试分支,利用测试代码分析服务、代码调用分析服务、接口调用分析服务的能力和基础数据,返回待测代码影响的接口信息以及关联的自动化测试用例。为软件测试人员可根据自动生成的测试用例进行测试,或者在此基础上进行修改,以便于代码进行精准的测试和影响面评估。
根据本申请的代码的精准测试方法,通过获取待进行测试的代码的模块信息和分支信息;根据所述模块信息和分支信息获取所述代码对应的文件、类、函数、路由关系;基于所述文件、所述类、所述函数、所述路由关系确定所述代码对应的目标接口;根据所述目标接口确定关联接口;根据所述目标接口和所述关联接口生成自动化测试用例以对所述代码进行精准测试的方式,能够自动生成精准测试用例,既不会因为测试用例规模过于庞大而增加工作量,也不会因为测试用例的缺失造成漏测。
本申请的代码的精准测试方法,通过代码层面的解析,以及线上真实链路的分析,得到代码调用关系;再通过提测代码差异性分析,得到测试推荐,比人工分析精准快速
本申请的代码的精准测试方法,对使用工具的测试工程师无太多经验或者能力上的要求,帮助测试工程师更精准的编写测试用例,既不会因为测试用例规模过于庞大而增加工作量,也不会因为测试用例的缺失造成漏测。
应清楚地理解,本申请描述了如何形成和使用特定示例,但本申请的原理不限于这些示例的任何细节。相反,基于本申请公开的内容的教导,这些原理能够应用于许多其它实施例。
图3是根据另一示例性实施例示出的一种代码的精准测试方法的流程图。图3所示的流程30是对图2所示的流程中S204“根据所述模块信息和分支信息获取所述代码对应的文件、类、函数、路由关系”的详细描述。
如图3所示,在S302中,获取代码的模块信息、测试分支信息。
在S304中,通过git的接口获取测试分支和基线分支的diff信息。
在S306中,对新增文件进行分析。
在S308中,解析文件的文件名、类名、所有函数名、路由关系信息。
在S310中,对修改文件进行分析。
在S312中,合并所有修改的文件名、类名、函数名、路由关系信息。更具体的,可分别获取修改文件的测试分支和基线分支对应的文件,解析测试分析和基线分支文件中每个函数的开始行和结束行,根据diff信息中的行号等信息判断修改代码所属的文件、类、函数、路由关系。
在S314中,对删除/重命名文件进行分析。
在S316中,解析文件的文件名、类名、所有函数名、路由关系信息。
根据所述模块信息和分支信息获取所述代码对应的文件、类、函数、路由关系,更具体的,可通过git的diff接口,通过对测试代码与基线代码进行对比,获取本次提测代码的修改点,从修改点中分析得出修改代码的所属文件、所属类、所属函数、相关路由信息(路由主要针对路由文件的修改)。
图4是根据另一示例性实施例示出的一种代码的精准测试方法的流程图。图4所示的流程40是对图2所示的流程中S206“基于所述文件、所述类、所述函数、所述路由关系确定所述代码对应的目标接口”的详细描述。
如图4所示,在S402中,获取所述文件、所述类、所述函数、所述路由关系。
在S404中,解析所有classes的extends信息并存储至文件中。
在S406中,执行php-parser以解析所有php文件生成抽象语法树。
在S408中,遍历语法树中每个节点,解析获取所有的Stmt-Class、Stmt_ClassMethod、Expr_StaticCall、Expr_Assign、Stmt-Property节点类型,分析出class、funtion、args、variable信息。
在S410中,由上述信息和extends信息中组合拼装出所有函数的调用关系。
在S412中,解析每个入口class的入口函数、URI的入口class。还可将函数调用链、URI入口函数关系存储至图数据库以便后续调用。
php静态代码分析可通过开源的php代码分析工具php-parser,php-parser将php代码解析为抽象语法树,通过对抽象语法树的分析,解析出代码调用关系链。然后通过对路由文件的静态分析,获取uri和入口函数的关系。代码调用关系图和uri与入口函数的关系都存储至图数据库dgraph中,作为后续推荐系统的基础数据。
图5是根据另一示例性实施例示出的一种代码的精准测试方法的流程图。图5所示的流程50是对图2所示的流程中S206“基于所述文件、所述类、所述函数、所述路由关系确定所述代码对应的目标接口”的详细描述。
如图5所示,在S502中,获取所述文件、所述类、所述函数、所述路由关系。
在S504中,通过callgraph获取整个模块的函数调用关系。
在S506中,抽取出每个函数的包名、函数名、文件名、模块名等信息进行存储。
在S508中,抽取出调用方和被调用方信息进行存储。
在S510中,通过执行调用模块代码获取URI和入口函数的关系并进行存储。还可将上述信息存储至图数据库以便后续调用。
go静态代码分析可通过go自带工具callgraph,callgraph可以对go代码进行分析生成调用关系图,callgraph支持cha、rta、static、vta方式,本工具使用cha方式。同时对于接口uri和入口函数的关系,本工具通过运行模块代码的输出信息中分析获取。调用关系图和uri与入口函数的关系都存储至图数据库dgraph中,作为后续推荐系统的基础数据。
图6是根据另一示例性实施例示出的一种代码的精准测试方法的流程图。图6所示的流程60是对图2所示的流程中S208“根据所述目标接口确定关联接口”的详细描述。
如图6所示,在S602中,获取所述代码所在业务系统的系统代码。可包括product、server信息。
在S604中,根据product、server信息获取URI列表并存储URI信息,URI信息可包括其所属的ns,service,git地址。
在S606中,根据URI信息获取线上链路数据和原始数据。
在S608中,存储URI对应的trace ID。
在S610中,格式化线上链路原始数据之后,与已有链路数据进行对比,如无重复则进行存储。
在S612中,遍历链路数据,存储链路中每个URI和traceID关系。
在S614中,遍历URI的线上链路原始数据,获取URI的上游子节点和下游子节点,并进行存储。
可分析获取业务系统中所有的trace链路,以及线上链路原数据。通过对线上链路原数据的分析,获取到每个uri的非重复的链路数据和上下游关系数据并进行存储,作为后续推荐的基础数据。
本领域技术人员可以理解实现上述实施例的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本申请提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
此外,需要注意的是,上述附图仅是根据本申请示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图7是根据一示例性实施例示出的一种代码的精准测试装置的框图。如图7所示,代码的精准测试装置70包括:代码模块702,信息模块704,接口模块706,关联模块708,测试模块710。
代码模块702用于获取待进行测试的代码的模块信息和分支信息;
信息模块704用于根据所述模块信息和分支信息获取所述代码对应的文件、类、函数、路由关系;
接口模块706用于基于所述文件、所述类、所述函数、所述路由关系确定所述代码对应的目标接口;
关联模块708用于根据所述目标接口确定关联接口;
测试模块710用于根据所述目标接口和所述关联接口生成自动化测试用例以对所述代码进行精准测试。
根据本申请的代码的精准测试装置,通过获取待进行测试的代码的模块信息和分支信息;根据所述模块信息和分支信息获取所述代码对应的文件、类、函数、路由关系;基于所述文件、所述类、所述函数、所述路由关系确定所述代码对应的目标接口;根据所述目标接口确定关联接口;根据所述目标接口和所述关联接口生成自动化测试用例以对所述代码进行精准测试的方式,能够自动生成精准测试用例,既不会因为测试用例规模过于庞大而增加工作量,也不会因为测试用例的缺失造成漏测。
图8是根据一示例性实施例示出的一种电子设备的框图。
下面参照图8来描述根据本申请的这种实施方式的电子设备800。图8显示的电子设备800仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图8所示,电子设备800以通用计算设备的形式表现。电子设备800的组件可以包括但不限于:至少一个处理单元810、至少一个存储单元820、连接不同系统组件(包括存储单元820和处理单元810)的总线830、显示单元840等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元810执行,使得所述处理单元810执行本说明书中的根据本申请各种示例性实施方式的步骤。例如,所述处理单元810可以执行如图2,图3,图4,图5,图6中所示的步骤。
所述存储单元820可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)8201和/或高速缓存存储单元8202,还可以进一步包括只读存储单元(ROM)8203。
所述存储单元820还可以包括具有一组(至少一个)程序模块8205的程序/实用工具8204,这样的程序模块8205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线830可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备800也可以与一个或多个外部设备800’(例如键盘、指向设备、蓝牙设备等)通信,使得用户能与该电子设备800交互的设备通信,和/或该电子设备800能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口850进行。并且,电子设备800还可以通过网络适配器860与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器860可以通过总线830与电子设备800的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,如图9所示,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本申请实施方式的上述方法。
所述软件产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该计算机可读介质实现如下功能:获取待进行测试的代码的模块信息和分支信息;根据所述模块信息和分支信息获取所述代码对应的文件、类、函数、路由关系;基于所述文件、所述类、所述函数、所述路由关系确定所述代码对应的目标接口;根据所述目标接口确定关联接口;根据所述目标接口和所述关联接口生成自动化测试用例以对所述代码进行精准测试。
本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本申请实施例的方法。
以上具体地示出和描述了本申请的示例性实施例。应可理解的是,本申请不限于这里描述的详细结构、设置方式或实现方法;相反,本申请意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。

Claims (10)

1.一种代码的精准测试方法,其特征在于,包括:
获取待进行测试的代码的模块信息和分支信息;
根据所述模块信息和分支信息获取所述代码对应的文件、类、函数、路由关系;
基于所述文件、所述类、所述函数、所述路由关系确定所述代码对应的目标接口;
根据所述目标接口确定关联接口;
根据所述目标接口和所述关联接口生成自动化测试用例以对所述代码进行精准测试。
2.如权利要求1所述的方法,其特征在于,根据所述模块信息和分支信息获取所述代码对应的文件、类、函数、路由关系,包括:
将所述代码对应的模块信息、分支信息和基线代码对应的模块信息、分支信息进行对比;
根据对比结果生成所述代码的修改操作对应的文件、类、函数、路由关系。
3.如权利要求2所述的方法,其特征在于,根据对比结果生成所述代码的修改操作对应的文件、类、函数、路由关系,包括:
根据对比结果提取新增文件和/或修改文件和/或删除文件和/或重命名文件;
逐一提取新增文件和/或修改文件和/或删除文件和/或重命名文件对应的文件、类、函数、路由关系。
4.如权利要求1所述的方法,其特征在于,基于所述文件、所述类、所述函数、所述路由关系确定所述代码对应的目标接口,包括:
在所述代码为php代码时,基于其对应的所述文件、所述类、所述函数、所述路由关系,通过预先生成的第一代码调用关系图确定其对应的目标接口;
在所述代码为go代码时,基于其对应的所述文件、所述类、所述函数、所述路由关系,通过预先生成的第二代码调用关系图确定其对应的目标接口。
5.如权利要求4所述的方法,其特征在于,在所述代码为php代码时,基于其对应的所述文件、所述类、所述函数、所述路由关系,通过预先生成的第一代码调用关系图确定其对应的目标接口,包括:
在所述代码为php代码时,对其对应的所述文件、所述类、所述函数进行解析,生成抽象语法树;
基于所述抽象语法树生成所述第一代码调用关系图;
基于所述第一代码调用关系图根据所述代码对应的路由关系获取所述目标接口和其对应的入口函数。
6.如权利要求4所述的方法,其特征在于,在所述代码为go代码时,基于其对应的所述文件、所述类、所述函数、所述路由关系,通过预先生成的第二代码调用关系图确定其对应的目标接口,包括:
在所述代码为go代码时,通过所述文件、所述类、所述函数的输出信息生成所述第二代码调用关系图;
基于所述第二代码调用关系图获取所述代码对应的所述目标接口和其对应的入口函数。
7.如权利要求1所述的方法,其特征在于,根据所述目标接口确定关联接口,包括:
获取所述代码所在业务系统的系统代码;
建立所述系统代码的trace链路关系;
将所述目标接口和所述trace链路关系对比,提取所述目标接口上游接口和下游接口作为所述关联接口。
8.一种代码的精准测试方法,其特征在于,包括:
代码模块,用于获取待进行测试的代码的模块信息和分支信息;
信息模块,用于根据所述模块信息和分支信息获取所述代码对应的文件、类、函数、路由关系;
接口模块,用于基于所述文件、所述类、所述函数、所述路由关系确定所述代码对应的目标接口;
关联模块,用于根据所述目标接口确定关联接口;
测试模块,用于根据所述目标接口和所述关联接口生成自动化测试用例以对所述代码进行精准测试。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至7中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至7中任一所述的方法。
CN202211092976.7A 2022-09-08 2022-09-08 代码的精准测试方法、装置、电子设备及计算机可读介质 Pending CN116521512A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211092976.7A CN116521512A (zh) 2022-09-08 2022-09-08 代码的精准测试方法、装置、电子设备及计算机可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211092976.7A CN116521512A (zh) 2022-09-08 2022-09-08 代码的精准测试方法、装置、电子设备及计算机可读介质

Publications (1)

Publication Number Publication Date
CN116521512A true CN116521512A (zh) 2023-08-01

Family

ID=87405224

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211092976.7A Pending CN116521512A (zh) 2022-09-08 2022-09-08 代码的精准测试方法、装置、电子设备及计算机可读介质

Country Status (1)

Country Link
CN (1) CN116521512A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117112413A (zh) * 2023-08-18 2023-11-24 鱼快创领智能科技(南京)有限公司 一种自动生成接口测试用例的方法
CN117215965A (zh) * 2023-11-09 2023-12-12 恒生电子股份有限公司 基于测试用例识别的测试方法、装置、电子设备和介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117112413A (zh) * 2023-08-18 2023-11-24 鱼快创领智能科技(南京)有限公司 一种自动生成接口测试用例的方法
CN117215965A (zh) * 2023-11-09 2023-12-12 恒生电子股份有限公司 基于测试用例识别的测试方法、装置、电子设备和介质
CN117215965B (zh) * 2023-11-09 2024-02-27 恒生电子股份有限公司 基于测试用例识别的测试方法、装置、电子设备和介质

Similar Documents

Publication Publication Date Title
US20230281012A1 (en) Systems and methods for automating and monitoring software development operations
CN116521512A (zh) 代码的精准测试方法、装置、电子设备及计算机可读介质
CN110018955A (zh) 通过转换手动测试用例来生成自动化测试脚本
CN113032195A (zh) 芯片仿真验证方法、系统、设备及存储介质
US10380263B2 (en) Translation synthesizer for analysis, amplification and remediation of linguistic data across a translation supply chain
US11307975B2 (en) Machine code analysis for identifying software defects
CN109857641A (zh) 对程序源文件进行缺陷检测的方法及装置
EP3682324A1 (en) Method and apparatus for finding long methods in code
CN115543781A (zh) 汽车软件模型自动化验证的方法及交互系统
CN107066302B (zh) 缺陷检测方法、装置及服务终端
CN117215944A (zh) 一种大模型代码生成能力的自动评测方法及相关产品
US11615016B2 (en) System and method for executing a test case
CN112242136B (zh) 提高会话模型的测试覆盖
CN110928535B (zh) 衍生变量部署方法、装置、设备及可读存储介质
CN113064811A (zh) 基于工作流的自动化测试方法、装置以及电子设备
CN112650673A (zh) 事务跟踪系统中测试用例的创建方法、装置及电子设备
CN116225377A (zh) 一种跨平台小程序的统一开发方法、装置和电子设备
CN115599683A (zh) 自动化测试方法、装置、设备及存储介质
Frechette et al. Regression Test Reduction for Object‐Oriented Software: A Control Call Graph Based Technique and Associated Tool
CN113032256B (zh) 自动化测试方法、装置、计算机系统和可读存储介质
CN111367791B (zh) 一种生成测试用例的方法、装置、介质和电子设备
CN114546850A (zh) 一种埋点的自动化测试方法、系统、装置及存储介质
CN113656045A (zh) 智能语音机器人的上线部署系统、方法、装置及电子设备
CN112380118A (zh) 单元测试方法、装置、介质及电子设备
Juhnke et al. Challenges concerning test case specifications in automotive software testing

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