一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

mock点检测方法、装置、存储介质、电子设备与流程

2022-06-05 10:03:20 来源:中国专利 TAG:


1.本公开的实施方式涉及计算机信息技术领域,更具体地,本公开的实施方式涉及mock点检测方法、装置、存储介质、电子设备。


背景技术:

2.本部分旨在为权利要求中陈述的本公开的实施方式提供背景或上下文,此处的描述不因为包括在本部分中就承认是现有技术。
3.应用程序(包括客户端和服务端)及其功能模块的代码更新上线之前,皆需要进行测试,以确定应用程序及其功能模块的代码执行和执行流程是否正常。


技术实现要素:

4.在一些技术中,可以在应用程序及其功能模块的代码更新上线之前进行引流测试。引流测试中,通过录制一些应用程序及其功能模块的代码方法的参数和返回值,在测试时使用录制参数重新执行一遍代码方法来进行回放,并验证回放的返回值是否和录制一致。在相同参数的情况下,运行同一段代码,如果回放返回值和录制的返回值不一致,说明代码执行未达到预期(未通过引流测试),可能存在缺陷(bug)。录制参数可用来多次回放。由此,引流测试利用录制数据代替传统测试繁杂的参数构造和结果验证,能有效降低传统自动化的编写成本。
5.在应用程序测试过程中,对于某些不容易构造或者不容易获取的方法对象可以作为mock点,根据mock点创建的虚拟对象可以作为真实方法在测试期间的替代,来对应用程序进行测试。
6.在应用程序的代码中,常常可以分为两部分:核心方法和非核心方法。核心方法是待测方法的核心逻辑,是应用程序的引流测试的主要对象。非核心方法,相对于核心方法来说,对其主要功能的实现起辅助作用,例如,非核心方法可以实现一些核心逻辑运算前的前置准备工作、核心逻辑运算结果的保存等。
7.应用程序的复杂功能通过代码中的多个方法的相互调用来实现。在引流测试中,被调用的外部的方法一般为非核心方法,可以将其作为mock点,从而创建对应的虚拟对象在引流测试中使用。在引流测试通常是线上录制的参数在线下回放测试,然而,线上的用户、数据环境等和线下完全不一样,为此,在执行功能的核心方法的测试之前,通常需要对其中的一些对象(诸如用户是否注册、用户是否有权限、商品是否存在等)进行前置检查,为了保证核心逻辑能够在引流测试中被执行,这些前置检查对应的非核心方法也可以将其作为mock点,从而创建对应的虚拟对象在引流测试中使用。在执行完核心方法后,会对执行结果做保存。而在引流测试中,由于线上参数在线下执行,数据差异性使得核心方法的结果数据对于测试环境来说是无用的脏数据,为了避免污染测试环境,也可以对保存类方法可以将其作为mock点,从而创建对应的虚拟对象在引流测试中使用。
8.在一些技术中,为了在进行引流测试前从待测代码中找到这些mock点,需要人工
阅读待测代码,从而进行代码分析。相关测试人员可以通过对代码的逐行阅读,找到mock点并进行记录。当待测代码所要实现的功能复杂时,其代码中的多个方法往往都是层层嵌套调用,有些方法较为隐蔽,不易于查找到待测代码中所有的mock点。由此可见,这样的mock点查找方式对查找人员的代码阅读能力要求较高;当所要实现的功能复杂时,mock点的查找时间也较长;当代码改动时,需要人工再次阅读代码,可能存在重复工作。
9.为此,非常需要一种改进的mock点检测方法及装置、存储介质和电子设备,以自动实现mock点的识别,以在减少人工成本的同时,提高测试效率。
10.在本上下文中,本发明的实施方式期望提供一种mock点检测方法和装置、存储介质和电子设备。
11.根据本公开的一个方面,提供一种mock点检测方法,包括:
12.根据待测试代码中多个方法之间的调用关系,将被调用方的多个方法与标识符规则集合进行匹配;
13.保留与所述标识符规则集合匹配的方法作为mock点,其中,根据所述mock点创建的虚拟对象用以辅助所述待测试代码的测试。
14.根据本公开的一个方面,提供一种mock点检测装置,包括:
15.匹配模块,用于根据待测试代码中多个方法之间的调用关系,将被调用方的多个方法与标识符规则集合进行匹配;
16.确定模块,用于保留与所述标识符规则集合匹配的方法作为mock点,其中,根据所述mock点创建的虚拟对象用以辅助所述待测试代码的测试。
17.根据本公开的一个方面,提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时上述的mock点检测方法。
18.根据本公开的一个方面,提供一种电子设备,包括:
19.处理器;以及
20.存储器,用于存储所述处理器的可执行指令;
21.其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的mock点检测方法。
22.在本公开实施方式中,根据待测试代码中方法之间的调用关系自动识别出将被调用方的多个方法,并基于被调用方的多个方法与标识符规则集合的匹配,来自动识别出mock点,以能够根据所述mock点创建的虚拟对象辅助所述待测试代码的测试。由此,本公开无需人工参与,即可实现mock点的自动识别,从而对测试人员没有代码阅读能力的要求;待测试代码的复杂性对mock点的识别效率的影响较小,从而无论待测试代码是否复杂,mock点的识别效率皆获得了有效地提高;当待测试代码改动时,也无需人工再次阅读代码,由此,本公开能够自动实现mock点的识别,以在减少人工成本的同时,提高测试效率。
附图说明
23.通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,其中:
24.图1示意性地示出了根据本公开实施方式的mock点检测方法的流程图;
25.图2示意性地示出了根据本公开实施方式的确定待测试代码中多个方法之间的调用关系的流程图;
26.图3示意性地示出了根据本公开一种实施方式的待测试代码的方法之间的调用关系的示意图;
27.图4示意性地示出了根据本公开另一种实施方式的待测试代码的执行过程的示意图;
28.图5示意性地示出了图4中的待测试代码的测试过程的示意图;
29.图6示意性地示出了根据本公开实施方式的用于购买商品生成订单的待测试代码的下单界面;
30.图7示意性地示出了根据本公开实施方式的用于购买商品生成订单的待测试代码的实际订单生成界面;
31.图8示意性地示出了根据本公开实施方式的用于购买商品生成订单的待测试代码的测试订单生成界面;
32.图9示意性地示出了根据本公开实施方式的mock点检测装置的方框图;
33.图10示出了根据本公开实施方式的存储介质的示意图;以及
34.图11示意性示出了根据公开实施方式的电子设备的方框图。
35.在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
36.下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
37.本领域技术人员知道,本公开的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
38.根据本公开的实施方式,提供一种mock点检测方法、mock点检测装置、存储介质和电子设备。
39.在本文中,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
40.下面参考本公开的若干代表性实施方式,详细阐述本公开的原理和精神。
41.发明概述
42.本发明人发现,目前,为了在进行引流测试前从待测代码中找到这些mock点,需要人工阅读待测代码,从而进行代码分析。相关测试人员可以通过对代码的逐行阅读,找到mock点并进行记录。
43.在上述方案中存在如下问题:
44.1)mock点的查找依赖于测试同学的代码阅读能力,难以进行推广以提高mock点查找的整体效率;2)当当待测代码所要实现的功能复杂时,代码通常也较为复杂,其中的多个方法往往都是层层嵌套调用,有些方法较为隐蔽,不易于查找到待测代码中所有的mock点,
由此,查找mock的将花费较长时间;3)当代码发生变更时,可能会引起mock点变化,从而需要人工再次阅读代码,比对增量差异,补充或者去掉mock点。由于代码更新频率较快,从而需要经常进行mock点的更新,对人工成本的消耗较大,也降低了代码测试效率;4)虽然引流测试模式旨在减少传统测试的成本,也确实在参数构建和返回值校验上降低了复杂度、减少了成本,但由于人工mock点的寻找方式,反而增加了引流测试的整体成本,降低了测试效率。
45.鉴于上述内容,本发明的基本思想在于:根据待测试代码中方法之间的调用关系自动识别出将被调用方的多个方法,并基于被调用方的多个方法与标识符规则集合的匹配,来自动识别出mock点,以能够根据所述mock点创建的虚拟对象辅助所述待测试代码的测试。由此,一方面,本公开无需人工参与,即可实现mock点的自动识别,从而对测试人员没有代码阅读能力的要求;另一方面,待测试代码的复杂性对mock点的识别效率的影响较小,从而无论待测试代码是否复杂,mock点的识别效率皆获得了有效地提高;再一方面,当待测试代码改动时,也无需人工再次阅读代码。由此,本公开能够自动实现mock点的识别,以在减少人工成本的同时,提高测试效率。
46.在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
47.示例性方法
48.下面结合图1来描述根据本公开示例性实施方式的mock点检测方法。
49.参考图1所示,所述mock点检测方法可以包括以下步骤:
50.步骤s110、根据待测试代码中多个方法之间的调用关系,将被调用方的多个方法与标识符规则集合进行匹配;
51.步骤s120、保留与所述标识符规则集合匹配的方法作为mock点,其中,根据所述mock点创建的虚拟对象用以辅助所述待测试代码的测试。
52.在本公开实施方式的mock点检测方法中,根据待测试代码中方法之间的调用关系自动识别出将被调用方的多个方法,并基于被调用方的多个方法与标识符规则集合的匹配,来自动识别出mock点,以能够根据所述mock点创建的虚拟对象辅助所述待测试代码的测试。由此,本公开无需人工参与,即可实现mock点的自动识别,从而对测试人员没有代码阅读能力的要求;待测试代码的复杂性对mock点的识别效率的影响较小,从而无论待测试代码是否复杂,mock点的识别效率皆获得了有效地提高;当待测试代码改动时,也无需人工再次阅读代码,由此,本公开能够自动实现mock点的识别,以在减少人工成本的同时,提高测试效率。
53.根据本公开的示例性实施例,待测试代码用以实现一个或多个业务功能。待测试代码可以为应用程序、应用程序的功能模块、应用程序的更新代码等。待测试代码中包括多个方法。方法是用于执行某一行为的代码语句的集合。本公开各实施例中,待测试代码中的方法也可以被称之为函数。
54.根据本公开的示例性实施例,所述标识符规则集合包括:所述方法中包括与所述待测试代码所属公司的标识符。具体而言,在被测试代码中,仅待测试代码所属公司自行封装的方法才可能够实现基于业务数据的验证、或者数据存储封装等应作为mock点识别的辅助性方法。其他如软件开发工具包方法、开源方法通常只做运算(核心方法),不会有业务相
关的辅助作用,因此不需要识别为mock点。由此,可以通过识别方法是否由待测试代码所属公司自行封装,来判断该方法是否应识别为mock点。由于,方法若由待测试代码所属公司自行封装,则该方法中会包含有待测试代码所属公司的标识符,因此,可以通过判断方法中包括与所述待测试代码所属公司的标识符,来识别方法是否由待测试代码所属公司自行封装。
55.根据本公开的示例性实施例,所述标识符规则集合包括所述方法中不包括数据承载类标识符。由于数据承载类方法用于实现业务数据到对象的转换,其本身没有复杂的逻辑,从而无需作为mock点构建虚拟对象。数据承载类方法会在其方法的代码中具有数据承载类标识符,从而可以根据方法中是否包括数据承载类标识符,来确定该方法是否需要识别为mock点。根据不同的代码语言,其数据承载类标识符可能有所不同。以java为例,所述数据承载类标识符包括数据传输对象、元数据、实体、枚举、结果、常量、消息、信息封装、参数中的一项或多项。数据传输对象的标识符为dto;元数据的标识符为meta;实体的标识符为entity;枚举的标识符为enum;结果的标识符为result;常量的标识符为constant;消息的标识符为message、信息封装的标识符为info、参数的标识符为param。
56.根据本公开的示例性实施例,所述标识符规则集合包括:所述方法中不包括共同行为管控标识符。由于共同行为管控方法是通用的整体性的方法,其对不同的数据/对象执行统一的处理,从而无需作为mock点构建虚拟对象。共同行为管控方法可以包括异常处理方法、链路追踪方法以及日志记录方法中的一项或多项。异常处理方法的代码用于对出错情况执行统一的处理。链路追踪方法的代码用于对服务链上的所有方法的信息进行查询。日志记录方法用于对各方法执行时的相关信息进行记录。
57.共同行为管控方法会在其方法的代码中具有共同行为管控标识符,从而可以根据方法中是否包括共同行为管控标识符,来确定该方法是否需要识别为mock点。根据不同的代码语言,其共同行为管控标识符可能有所不同。以java为例,共同行为管控标识符包括异常处理、链路追踪、日志记录中的一项或多项。其中,异常处理的标识符为exception;链路追踪的标识符为trace、日志记录的标识符为log。
58.根据本公开的示例性实施例,所述标识符规则集合包括:所述方法中不包括构造函数标识符。考虑到构造函数不会具有数据验证的功能,因此无需作为mock点构建虚拟对象。构造函数会在其方法的代码中具有共同行为管控标识符,从而可以根据方法中是否包括构造函数标识符,来确定该方法是否需要识别为mock点。以java为例,构造函数标识符例如可以为初始化(int),本公开并非以此为限制。
59.根据本公开的示例性实施例,所述标识符规则集合可以包括上述规则中的一项或多项的组合。在进一步的实施例中,各规则的匹配执行顺序可以按需设置。
60.根据本公开的示例性实施例,所述标识符规则集合中用于进行匹配的标识符可以关联所述待测试代码的语言。由此,对于不同语言的待测试代码,可以将被调用方的多个方法与标识符规则集合中关联所述待测试代码的语言的标识符规则进行匹配,以保证mock点的识别准确性。
61.根据本公开的示例性实施例,图1中的步骤s110响应于所述待测试代码的提交执行。由此,可以实现mock点识别的自动触发。进一步地,mock点识别步骤可以与待测试代码的引流测试异步执行,以保证被测试代码的引流测试的正常执行。
62.根据本公开的示例性实施例,步骤s110的执行可以包括图2示出的流程图中的步骤。图2共示出如下步骤:
63.步骤s101:获取待测试代码中多个方法之间的调用关系。
64.根据本公开的示例性实施例,方法之间可以通过将所需调用的方法的方法名、入参定义、返回参数定义等纳入到调用方的方法的代码中。由此,通过对待测试代码进行识别和分析,以获取其中的多个方法之间的调用关系。根据本公开的示例性实施例,可以采用代码语义分析算法来获取所述待测试代码中多个方法之间的调用关系。通过代码语义分析算法来对待测试代码进行语义分析,从而基于语义分析的结果获取所述待测试代码中多个方法之间的调用关系。
65.根据本公开的示例性实施例,代码语义分析算法例如可以为构造抽象语法树(abstract syntax tree,ast),通过抽象语法树可对待测试代码的方法调用关系形成一种抽象表示,其可以树状的形式表现待测试代码的语法结构。具体而言,针对不同的代码语言,其方法之间的调用语法可能不同,因此,可以针对不同的代码语言,提供不同的代码语义分析方式。例如,对于java,可以结合字节码操作库(byte code engineering library,bcel)对待测试代码进行语义解析,从而基于所解析的语义内容生成抽象语法树。
66.结合图3,图3示出了应用程序a的各方法的抽象语法树。应用程序a的待测试代码中包括了调用方的方法以及被调用方的方法。如图3,应用程序a的测试代码中方法a1调用了方法a2、方法b1、方法c1以及方法a3;方法a2调用了方法c2、方法a4;方法a3调用了方法d1;方法a4调用了方法e1。其中,调用方的方法包括方法a1、方法a2、方法a3以及方法a4;被调用方的方法包括方法a2、方法b1、方法c1、方法a3、方法c2、方法a4、方法d1以及方法e1。其中,调用方的方法包括方法a1、方法a2、方法a3以及方法a4皆为应用程序a的方法,而被调用方的方法中,方法b1、方法c1、方法c2、方法d1以及方法e1皆为所要调用的外部方法。
67.步骤s102:获取被调用方的多个方法。
68.步骤s103:获取调用方的多个方法。
69.步骤s104:将调用方的多个方法从被调用方的多个方法中剔除。
70.根据对各类待测试代码的分析,在待测试代码的核心功能的实现中,起到辅助作用的,往往是所要调用的外部服务的方法,以辅助进行数据查询、数据保存等。由此,在所要调用的外部服务的方法中,需要创建虚拟对象的mock点占比较高。因此,可以通过前述的调用关系的获取,从而将调用方的多个方法从被调用方的多个方法中剔除,以获得所要调用的外部服务的方法。继续以图3为例,将调用方的方法(方法a1、方法a2、方法a3以及方法a4)自被调用方的方法(方法a2、方法b1、方法c1、方法a3、方法c2、方法a4、方法d1以及方法e1)中剔除,以获得为所要调用的外部方法(方法b1、方法c1、方法c2、方法d1以及方法e1)。通过上述待测试代码的语义分析获得的抽象语法树,可以对所要匹配的被调用方的方法进行筛选,以获得被调用方的外部方法,减少后续标识符规则集合匹配的方法数量,由此,提高mock点识别效率。
71.进一步地,由于外部方法通常以接口、jar(java语言文件压缩格式)等形式嵌入待测试代码,从而本公开还可以通过集成开发环境工具在被调用方的多个方法中进行查看,以识别处被调用方的外部方法。
72.下面参见图4,图4示意性地示出了根据本公开另一种实施方式的待测试代码的执
行过程的示意图。
73.在该待测试代码的执行过程中,首先执行s11:查询用户信息方法。查询用户信息方法可以为外部方法,由会员中心1提供用户信息查询接口,通过调用该接口以查询用户信息。用户信息的查询为辅助性方法,可以作为该待测试代码的非核心方法。
74.然后执行s12:用户信息处理方法和参数校验方法。用户信息处理方法和参数校验方法皆无需调用外部方法,且其执行该待测试代码的核心逻辑,因此,可以作为该待测试代码的核心方法。
75.然后执行s13:查询商品信息方法。查询商品信息方法可以为外部方法,由商品中心2提供商品信息查询接口,通过调用该接口以查询商品信息。商品信息的查询为辅助性方法,可以作为该待测试代码的非核心方法。
76.然后执行s14:价格计算方法。价格计算方法皆无需调用外部方法,且其执行该待测试代码的核心逻辑,因此,可以作为该待测试代码的核心方法。
77.然后执行s15:生成订单方法。生成订单方法可以为外部方法,由订单中心3提供订单生成接口,通过调用该接口以生成订单。生成订单为辅助性方法,可以作为该待测试代码的非核心方法。
78.然后执行s16:扣减库存方法。扣减库存方法可以为外部方法,由商品中心3提供库存数据更改接口,通过调用该接口以在商品中心3扣减库存。扣减库存方法为辅助性方法,可以作为该待测试代码的非核心方法。
79.结合图6和图7,图6示意性地示出了根据本公开实施方式的用于购买商品生成订单的待测试代码的下单界面;图7示意性地示出了根据本公开实施方式的用于购买商品生成订单的待测试代码的实际订单生成界面。在回流测试过程中,相当于模拟用户实际使用待测试代码时的执行过程,但回流测试环境与用户实际环境有所不同。
80.在实际使用时,用户在图6示出的下单界面310,选择下单按钮,对所显示的商品进下单后。购买商品生成订单的代码需完成生成订单的流程(如图4),并向用户提供如图7示出的实际订单生成界面320。根据图4示出的步骤以及订单生成界面320中所需要显示的信息,在图4示出的步骤s11中首先调用会员中心1的接口来获取用户信息。然后利用所获取的用户信息执行步骤s12用户信息处理方法和参数校验方法,无需与外部任意设备交互。然后执行步骤s13调用商品中心2提供的商品信息查询接口,查询商品信息,并显示在订单生成界面320。在步骤s14执行价格计算方法,并将所计算的价格显示于订单生成界面320,无需与外部任意设备交互。在步骤s15调用订单中心3提供的订单生成接口生成订单,并将相关订单信息显示于订单生成界面320。最后,执行步骤s16调用商品中心3提供的库存数据更改接口,修改库存并更新于下单界面310中。由此,在用户实际进行下单时,步骤s11、步骤s13、步骤s15以及步骤s16分别调用会员中心1、商品中心2、订单中心3的接口执行。而在测试环境中,执行待测试代码的测试设备不与会员中心1、商品中心2、订单中心3连接,从而无法通过调用会员中心1、商品中心2、订单中心3的接口来获取信息,为了保证测试的正常执行,需要将这些方法作为mock点,虚拟化该些方法,以在测试执行的过程中,当执行到这些方法时,直接由虚拟化的方法返回原本应该由会员中心1、商品中心2、订单中心3等返回的数据。
81.进一步地,上述示例的mock点可以按如下方式进行识别,基于该待测试代码,通过对各方法的调用关系的分析,可以获得被调用方的多个方法。由于本地方法会有方法定义,
而外部方法直接调用不会有方法定义,因此可以经过代码语义分析可以得到本地方法和外部方法。以java为例,方法定义具有形如public void方法名,若方法中存在public void修饰符表示的是本地方法。其它方法可以认为是外部方法。
82.由此,可以获得用于与标识符规则集合进行匹配的被调用方的多个方法(查询用户信息方法、查询商品信息方法、生成订单方法以及扣减库存方法)。将查询用户信息方法、查询商品信息方法、生成订单方法以及扣减库存方法分别与标识符规则集合进行匹配。以查询用户信息方法为例,根据对其代码的扫描和识别,可以确定其包括与所述待测试代码所属公司的标识符、不包括数据承载类标识符、不包括共同行为管控标识符也不包括构造函数标识符,从而将查询用户信息方法自动识别为mock点。类似地,对于查询商品信息方法、生成订单方法以及扣减库存方法根据上述方式的扫描匹配,其也自动识别为mock点。
83.下面参见图5,图5示意性地示出了图4中的待测试代码的测试过程的示意图。
84.在对待测试代码进行测试前,可以根据所识别的各mock点的方法构建虚拟对象。例如,针对查询用户信息方法mock点1构建虚拟用户信息;针对查询商品信息方法mock点2构建虚拟商品信息;针对生成订单方法mock点3构建虚拟订单;针对扣减库存方法mock点4构建虚拟扣减结果。由此,在进行测试时,可以首先执行s21:查询用户信息方法以获得虚拟用户信息;执行s22:用户信息处理方法和参数校验方法;执行s23:查询商品信息方法以获得商品用户信息;执行s24:价格计算方法;执行s25:生成订单方法以获得虚拟订单;执行s26:执行扣减库存方法以获得虚拟扣减结果。
85.下面参见图8,图8示意性地示出了根据本公开实施方式的用于购买商品生成订单的待测试代码的测试订单生成界面。
86.在测试过程中,当基于测试用例自动在图6示出的下单界面310,选择下单按钮,对所显示的商品进下单后。购买商品生成订单的代码在测试过程中需完成生成订单的流程(如图5),并向用户提供如图8示出的测试订单生成界面330。根据图5和图8,在测试过程中,待测试代码的执行与会员中心1、商品中心2、订单中心3皆未连接。从而基于上述mock点识别方法,将步骤s11、步骤s13、步骤s15以及步骤s16识别为mock点,并虚拟化为对应的步骤s21、步骤s23、步骤s25以及步骤s26。当执行步骤s21时,步骤s21直接构建虚拟用户信息,并进行返回,无需调用会员中心1的接口;当执行步骤s23时,步骤s23直接构建虚拟商品信息,并进行返回,无需调用商品中心2的接口;当执行步骤s25时,步骤s25直接构建虚拟订单信息,并进行返回,无需调用订单中心3的接口;当执行步骤s26时,步骤s26直接构建虚拟扣减结果,并进行返回,无需调用商品中心2的接口。由此,以保证待测试代码的测试过程的正常执行。
87.以上仅仅是示意性示出本公开的一种具体实现方式,本公开并非以此为限制。
88.示例性装置
89.在介绍了本公开示例性实施方式的mock点检测方法之后,接下来,参考图9对本公开示例性实施方式的mock点检测装置进行描述。
90.参考图9所示,本公开示例性实施方式的mock点检测装置200可以包括:匹配模块210以及确定模块220。其中,
91.匹配模块210用于根据待测试代码中多个方法之间的调用关系,将被调用方的多个方法与标识符规则集合进行匹配;
92.确定模块220用于保留与所述标识符规则集合匹配的方法作为mock点,其中,根据所述mock点创建的虚拟对象用以辅助所述待测试代码的测试。
93.根据本公开的示例性实施例,所述匹配模块包括:第一获取模块,用于获取待测试代码中多个方法之间的调用关系;第二获取模块,用于获取被调用方的多个方法;第三获取模块,用于获取调用方的多个方法;筛选模块,用于将调用方的多个方法从被调用方的多个方法中剔除。
94.根据本公开的示例性实施例,所述第一获取模块包括:代码语义分析模块,用于采用代码语义分析算法获取所述待测试代码中多个方法之间的调用关系。
95.根据本公开的示例性实施例,所述标识符规则集合包括:所述方法中包括与所述待测试代码所属公司的标识符。
96.根据本公开的示例性实施例,所述标识符规则集合包括:所述方法中不包括数据承载类标识符,所述数据承载类标识符包括数据传输对象、元数据、实体、枚举、结果、常量、消息、信息封装、参数中的一项或多项。
97.根据本公开的示例性实施例,所述标识符规则集合包括:所述方法中不包括共同行为管控标识符,所述共同行为管控标识符包括异常处理、链路追踪、日志记录中的一项或多项。
98.根据本公开的示例性实施例,所述标识符规则集合包括:所述方法中不包括构造函数标识符。
99.根据本公开的示例性实施例,所述标识符规则集合中的标识符关联所述待测试代码的语言,所述确定包括:关联匹配模块,用于将被调用方的多个方法与标识符规则集合中关联所述待测试代码的语言的标识符规则进行匹配。
100.根据本公开的示例性实施例,所述匹配模块执行的步骤应于所述待测试代码的提交执行。
101.由于本公开实施方式的mock点检测装置的各个功能模块与上述mock点检测方法公开实施方式中相同,因此在此不再赘述。
102.示例性存储介质
103.在介绍了本公开示例性实施方式的mock点检测方法、装置和系统之后,接下来,参考图10对本公开示例性实施方式的存储介质进行说明。
104.参考图10所示,描述了根据本公开的实施方式的用于实现上述方法的程序产品1000,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
105.所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
106.计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
107.可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
108.可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如java、c 等,还包括常规的过程式程序设计语言-诸如"c"语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
109.示例性电子设备
110.在介绍了本公开示例性实施方式的存储介质之后,接下来,参考图10对本公开示例性实施方式的电子设备进行说明。
111.图11显示的电子设备800仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
112.如图11所示,电子设备800以通用计算设备的形式表现。电子设备800的组件可以包括但不限于:上述至少一个处理单元810、上述至少一个存储单元820、连接不同系统组件(包括存储单元820和处理单元810)的总线830、显示单元840。
113.其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元810执行,使得所述处理单元810执行本说明书上述"示例性方法"部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元810可以执行如图1中所示的步骤。
114.存储单元820可以包括易失性存储单元,例如随机存取存储单元(ram)8201和/或高速缓存存储单元8202,还可以进一步包括只读存储单元(rom)8203。
115.存储单元820还可以包括具有一组(至少一个)程序模块8205的程序/实用工具8204,这样的程序模块8205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
116.总线830可以包括数据总线、地址总线和控制总线。
117.电子设备800也可以与一个或多个外部设备900(例如键盘、指向设备、蓝牙设备等)通信,这种通信可以通过输入/输出(i/o)接口850进行。电子设备800还包括显示单元840,其连接到输入/输出(i/o)接口850,用于进行显示。并且,电子设备800还可以通过网络适配器860与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器860通过总线830与电子设备800的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
118.应当注意,尽管在上文详细描述中提及了mock点检测装置的若干模块或子模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
119.此外,尽管在附图中以特定顺序描述了本公开方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
120.虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献