CN112559344A - 远程mock测试方法及系统 - Google Patents
远程mock测试方法及系统 Download PDFInfo
- Publication number
- CN112559344A CN112559344A CN202011455549.1A CN202011455549A CN112559344A CN 112559344 A CN112559344 A CN 112559344A CN 202011455549 A CN202011455549 A CN 202011455549A CN 112559344 A CN112559344 A CN 112559344A
- Authority
- CN
- China
- Prior art keywords
- mock
- file
- target
- target method
- name
- 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 143
- 238000000034 method Methods 0.000 claims abstract description 130
- 230000006870 function Effects 0.000 claims description 70
- 230000006978 adaptation Effects 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 10
- 238000004806 packaging method and process Methods 0.000 claims description 7
- 238000010998 test method Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 101000959883 Solanum tuberosum Aspartic protease inhibitor 3 Proteins 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- SPBWHPXCWJLQRU-FITJORAGSA-N 4-amino-8-[(2r,3r,4s,5r)-3,4-dihydroxy-5-(hydroxymethyl)oxolan-2-yl]-5-oxopyrido[2,3-d]pyrimidine-6-carboxamide Chemical compound C12=NC=NC(N)=C2C(=O)C(C(=O)N)=CN1[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O SPBWHPXCWJLQRU-FITJORAGSA-N 0.000 description 2
- 241000270666 Testudines Species 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 239000011800 void material 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/3664—Environments for testing or debugging software
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
本发明实施例提供了一种远程mock测试方法,包括:获取应用端所上传的测试配置指令,解析所述测试配置指令得到被测函数所依赖的目标方法名称;根据所述目标方法名称,向外部接口或本地预置的测试用例集获取所述目标方法对应的代码;复制获取到的代码并添加宏定义语句形成mock文件,所述宏定义语句用于定义所述目标方法为符号常量;当捕获到所述被测函数对所述mock文件的调用请求时,编译所述mock文件并返回mock报文。本发明避免了对被测函数的项目文件代码进行修改,提高了测试效率。
Description
技术领域
本发明实施例涉及软件测试领域,尤其涉及一种基于mock平台的测试的方法、系统、计算机设备及计算机可读存储介质。
背景技术
随着商业应用系统信息化水平的提高,为了满足业务发展的需要,客户对软件产品研发规模和频度的要求也越来越高。而传统的测试方法只会在整个软件开发完毕且代码“冻结”后才进行,加之耗时较长,不利于敏捷和迭代,约束了对业务需求的快速响应。测试人员在进行全流程测试时,会存在一个业务全流程中调用第三方提供的多个服务接口;对于流程中的某个具体的服务接口,需要第三方配合模拟一些极端的测试场景及异常场景返回的报文;如果全部通过真实测试环境来构造不同场景的测试数据,耗时耗力,且一些异常场景无法构造。
发明内容
有鉴于此,本发明实施例的目的是提供一种基于mock平台的测试的方法、系统、计算机设备及计算机可读存储介质,无需真实测试环境即可完成测试,所述方法包括:
获取应用端所上传的测试配置指令,解析所述测试配置指令得到被测函数所依赖的目标方法名称;
根据所述目标方法名称,向外部接口或本地预置的测试用例集获取所述目标方法对应的代码;
复制获取到的代码并添加宏定义语句形成mock文件,所述宏定义语句用于定义所述目标方法为符号常量;
当捕获到所述被测函数对所述mock文件的调用请求时,编译所述mock文件并返回mock报文。
可选的,所述获取应用端所上传的测试配置指令,解析所述测试配置指令得到被测函数所以来的目标方法名称的步骤包括:
获取应用端所上传的测试配置指令;
遍历所述测试配置指令所有字段,统计所述测试配置指令字段的总字节数,判断所述总字节数是否小于预置阈值,若是,则执行目标方法名称的第一获取步骤,若不是,则执行第二获取步骤。
可选的,所述第一获取步骤包括:
根据预置的匹配字段查询包含所述匹配字段的适配语句;
抽取所述适配语句,将所述匹配字段从所述适配语句中删除,将适配语句中剩余字段作为目标方法名称进行存储。
可选的,所述第二获取步骤包括:
查询所述测试配置指令中的用于定义函数的关键字;
提取所述关键字后缀字段并进行字段处理,得到目标方法名称;
若所述关键字为两个以上,创建数组结构,将每个处理后的后缀字段作为子元素注入所述数组结构。
可选的,所述根据所述目标方法名称,向外部接接口或本地预置的测试用例集获取所述目标方法对应的代码的步骤之后,还包括:
检测所述目标方法对应的代码是否包含输出项,若是,则不做处理,若否,则向代码尾部增添所需返回的期望值。
可选的,所述当捕获到所述被测函数对所述mock文件的调用请求时,编译所述mock文件并返回mock报文的步骤包括:
当捕获到所述被测函数对所述mock文件的调用请求时,编译所述mock文件得到编译结果;
将所述编译结果进行封装得到mock报文;
查询预置的路由表,根据路由表所指向的路径发送所述mock报文。
为实现上述目的,本发明实施例还提供一种远程mock测试方法,包括:
获取应用端所上传的测试配置指令,解析所述测试配置指令得到被测函数所依赖的目标类;
根据所述目标类名称,向外部接口或本地预置的测试用例集获取所述目标类对应的代码;
根据所述目标类对应的代码派生得到mock类;
向所述mock类中添加返回期望值,得到mock文件;
为实现上述目的,本发明实施例还提供一种远程mock测试系统,所述系统包括:解析模块,用于获取应用端所上传的测试配置指令,解析所述测试配置指令得到被测函数所依赖的目标方法名称;
获取模块,用于根据所述目标方法名称,向外部接口或本地预置的测试用例集获取所述目标方法对应的代码;
封装模块,用于复制获取到的代码并添加宏定义语句形成mock文件,所述宏定义语句用于定义所述目标方法为符号常量;
发送模块,用于当捕获到所述被测函数对所述mock文件的调用请求时,编译所述mock文件并返回mock报文。
为实现上述目的,本发明实施例还提供了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被处理器执行时实现如上所述的远程mock测试方法的步骤。
为实现上述目的,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如上所述的远程mock测试方法的步骤。
本发明实施例提供的远程mock测试方法,通过远程应用端所上传的测试配置指令,得到被测函数所依赖的目标方法名称;调用外部接口或本地预置的测试用例集获取目标方法对应的字段代码,添加宏定义语句,使得原有对目标方法的调用转为对所述目标方法对应的mock进行调用,避免了对被测函数的项目文件代码进行修改,提高了测试效率。
附图说明
图1为本发明远程mock测试方法实施例一对应的步骤流程图;
图2为本发明远程mock测试方法实施例一中步骤S100的流程示意图;
图3为本发明远程mock测试方法实施例一中步骤S120的流程示意图;
图4为本发明远程mock测试方法实施例一中步骤S120另一实施方式的流程示意图;
图5为本发明远程mock测试方法实施例步骤S400的流程示意图;
图6为本发明远程mock测试方法另一实施例的流程示意图;
图7为本发明远程mock测试系统实施例二程序模块示意图;
图8为本发明计算机设备实施例三的硬件结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应当理解,尽管在本发明实施例中可能采用术语第一、第二等来描述指定关键字,但指定关键字不应限于这些术语。这些术语仅用来将指定关键字彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一指定关键字也可以被称为第二指定关键字,类似地,第二指定关键字也可以被称为第一指定关键字。
取决于语境,如在此所使用的词语“如果”可以被解释称为“在……时”或“当……时”或“相应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或时间)”可以被解释成“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
实施例一
参考图1,一种远程mock测试方法,包括:
步骤S100获取应用端所上传的测试配置指令,解析所述测试配置指令得到被测函数所依赖的目标方法名称;
应用端的承载设备可以是手机,个人电脑或服务器等设备,技术人员通过应用端设备键入测试配置指令,并通过互联网或物联网等通讯方式传输至执行本方案的服务器。服务器在接收到测试配置指令后解析该指令,并获得被测函数所依赖的目标方法名称。
被测函数是技术人员根据实际场景需求所需进行测试的模块函数。其可以是单个函数或多个函数,本发明在此不做限定。目标方法为被测函数为实现模块功能或完成正常编译所需调用的方法,示例性的,被测模块“平安业务”的部分逻辑如下:
其中,your_file_open在另一文档B实例了具体实现步骤字段,如果想要测试模块“平安业务”,则必须对其中的read file()进行测试,而read file则是调用B文档中的your_file_open函数得以实现,所以可以说your_file_open()为目标方法,被测函数readfile()依赖于your_file_open()目标方法得以实现功能。
另外,实现本方案的服务器可以预先搭建与被测平台与第三方服务平台之间,例如A系统与D系统之间,这里所讲的A系统或B系统也可称作A平台或B平台,搭建之初向A平台与D平台发送握手测试,测试通过后则实现本方案的服务器搭建完成。
步骤S200根据所述目标方法名称,向外部接口或本地预置的测试用例集获取所述目标方法对应的代码;
在实际场景中,往往存在被测函数所依赖的目标方法并未完成,又或者目标方法为不容易构造或不容易获取,例如股市行情具有不可确定的行为,此时就需要对目标方法进行模拟,接续上述示例,假设目标方法your_file_open()并未开发完成,就需要对“平安业务”模块中被测函数read file()所依赖的your_file_open()进行模拟,得到mock文件。
在技术人员通过应用端远程发送测试配置指令后,服务器通过解析该指令得到目标方法名称,其中,获得目标方法名称的方式有三种,于下述实施例中具体阐述。获取所述目标方法名称后,由于目标方法往往存在于第三方平台的外部接口,又或者为提高获取效率,服务器在本地预置有测试用例集,通过目标方法名称,服务器向外部接口或本地预置的测试用例集查询并获取所述目标方法对应的代码。
步骤S300复制获取到的代码并添加宏定义语句形成mock文件,所述宏定义语句用于定义所述目标方法为符号常量。
在获取到目标方法代码后,可先检查目标方法代码是否完整,其检查方法可以为检查输入和输出项是否存在,又或者直接编译目标方法代码看是否成功编译,若不完整,可对代码进行调整,该调整步骤于下述实施例中具体阐述。
复制获取到的目标方法代码,并对代码添加宏定义语句形成mock文件。接续上述示例,已复制your_file_open()目标方法代码,在代码起始段落添加用于编译预处理的宏定义语句,申明目标方法为符号常量并且定义该符号常量的值为mock_your_file_open,因为包含被测函数的“平安业务”模块同时也会被编译,因此链接时被测函数read file()对your_file_open()的调用便转为对mock_your_file_opne的调用,该项设计及避免了对被测函数的调用字段修改,同时也为远程操作mock测试提供了基础。
S400当捕获到所述被测函数对所述mock文件的调用请求时,编译所述mock文件并返回mock报文。
具体的,一旦被测函数进行编译或测试时,由于已申明目标方法为符号常量且常量值为目标方法的模拟方法,则调用请求转而链接至对mock文件的调用,所述服务器编译mock文件并得到编译结果,将编译结果进行封装形成mock报文进行返回。
其中,服务器中还预置有针对mock报文的路由收发协议,以配合多平台之间的测试协作,于后文实施例中具体阐述。
另外,技术人员还可通过应用端上传路由收发协议修改指令,以更新各类mock报文所发送的地址。
本发明实施例提供的远程mock测试方法,通过远程应用端所上传的测试配置指令,得到被测函数所依赖的目标方法名称;调用外部接口或本地预置的测试用例集获取目标方法对应的字段代码,添加宏定义语句,使得原有对目标方法的调用转为对所述目标方法对应的mock进行调用,避免了对被测函数的项目文件代码进行修改,提高了测试效率。
可选的,参考图2,步骤S100获取应用端所上传的测试配置指令,解析所述测试配置指令得到被测函数所依赖的目标方法名称的步骤包括:
步骤S110获取应用端所上传的测试配置指令;
步骤S120遍历所述测试配置指令所有字段,统计所述测试配置指令字段的总字节数,判断所述总字节数是否小于预置阈值,若是,则执行目标方法名称的第一获取步骤,若不是,则执行第二获取步骤。
具体的,为提高测试效率,减少技术人员自行编写测试用例的时间,本发明设置有两种获取目标方法代码的具体实施步骤,以适配技术人员多种测试指令。例如,技术人员不自行编写测试用例,直接上传目标方法名称,服务器在收到目标方法名称后利用外部接口或本地预置的测试用例集进而获取目标方法代码,又或者技术人员在不清楚目标方法名称,直接复制包含被测函数的字段进行上传,此时服务器从技术人员通过应用端所上传的字段中,识别其中涉及的目标方法名称,再进行目标方法代码获取,而其中界定两者的方案的执行便是先对测试配置指令的总字节数进行计算和判定。前述第一种方案的指令所涵盖内容远少与第二种方案所涵盖的有效内容,因而本发明实施例设置有,在获取到应用端所上传的测试配置指令后,便利所述测试配置指令包括格式字段的所有字段,统计所述测试配置指令字段的总字节数,判断所述总字节数是否小于预置阈值,若是,则执行目标方法名称的第一获取步骤,即上述的第一种方案,若够,则执行目标方法名称的第二获取步骤。
本发明实施例将测试配置代码字节数作为预置设置为两种目标方法代码获取方案执行切换的判断依据,增加了技术人员在测试中的可使用方法选项,提高了测试效率。
可选的,参考图3,步骤S120中第一获取步骤包括:
步骤S121根据预置的匹配字段查询包含所述匹配字段的适配语句;
步骤S122抽取所述适配语句,将所述匹配字段从所述适配语句中删除,将适配语句中剩余字段作为目标方法名称进行存储。
接续上述示例,若统计得到的测试配置指令字段的总字节数小于预置阈值,则出发目标方法名称的第一获取方案步骤。
其中,服务器根据预置的匹配字段,将测试配置指令中字段拆分成以匹配字段为单位的多个单位,并与匹配字段进行一一匹配,若匹配成功,则获取包含匹配字段的适配语句,将匹配字段从适配语句中进行删除,将剩余字段作为目标方法名称进行存储。
示例性的,技术人员所上传的测试配置指令有效内容为function_name=your_file_open,预置的匹配字段function_name,则服务器进行匹配后,得到输出结果为function_name=your_file_open该语句,将匹配字段function_name从语句中删除,得到your_file_open字段,对该字段标注以目标方法名称进行存储。
另外,在匹配字段从适配语句删除后,服务器还对剩余字段进行文本预处理,删除多余符号,例如“=”和逗号等以规范存储数据,以避免后续步骤因格式问题进而无法编译的问题。
可选的,参考图4,步骤S120中第二获取步骤包括:
步骤S123查询所述测试配置指令中的用于定义函数的关键字;
具体的,在统计测试配置指令字段的总字节数后,总字节数小于预置阈值,出发目标方法代码的第二获取步骤。由于此时应用端所上传的是一段较长的且包含被测函数的代码段,因此需要先对代码结构进行初步解析,通过定义函数的关键字锁定代码段中阐述被测函数执行步骤的区间,其关键字可以使本领域技术人员所熟知的void,main等等。
步骤S124提取所述关键字后缀字段并进行字段处理,得到目标方法名称;
具体的,通过定义函数的关键字锁定代码段中阐述被测函数执行步骤的区间后,根据C语言中格式符号“{”,“}”进而提取关键词后缀字段,并进行处理得到目标方法名称。
其中,处理步骤为查询方法字段,示例性的,
提取有效内容,即格式符号“{”,“}”之间的代码,查询方法字段,得到your_file_open()以及your_file_close(),将该两者方法名称作为目标方法。
步骤S125若所述关键字为两个以上,创建数组结构,将每个处理后的后缀字段作为子元素注入所述数组结构。
具体的,若关键词为两个以上,创建一数组,将your_file_open()和your_file_close()作为数组的子元素进行实例化,即:
array a={your_file_open(),your_file_close()};
创建数组结构,将每个处理后的后缀字段作为子元素注入所述数组结构,可以提高后续步骤中数据输入的效率。
可选的,步骤S200根据所述目标方法名称,向外部接口或本地预置的测试用例集获取所述目标方法对应的代码的步骤之后:
检测所述目标方法对应的代码是否包含输出项,若是,则不做处理,若否,则向代码尾部增添所需返回的期望值。
具体的,根据所述目标方法名称,向外部接口或本地预置的测试用例集获取所述目标方法对应的代码后,检查所述目标方法对应的代码是否包含输出项,检查方法可以是检查是否包含print等输出字段,若无,则可向代码尾部增添所需返回的期望值,所述期望值为技术人员预先存储于服务器本地存储器中,例如return 0,赋予所述目标方法名称一个定义好的返回结果。另外,在检查完是否包含输出项后,还可以检查代码环境变量参数是否设置正确,在此本发明不做限定。
可选的,请参考图5,步骤S400所述当捕获到所述被测函数对所述mock文件的调用请求时,编译所述mock文件并返回mock报文的步骤包括:
步骤S410当捕获到所述被测函数对所述mock文件的调用请求时,编译所述mock文件得到编译结果;
步骤S420将所述编译结果进行封装得到mock报文;
步骤S430查询预置的路由表,根据路由表所指向的路径发送所述mock报文。
具体的,服务器中预置有路由协议,通过路由协议,实现同一个服务提供方的部分接口服务走mock,部分回源到真实的第三方,例如,
某一测试业务流程中,
第一步:A系统调用B系统的API-1服务接口,查询被保人保单列表
第二步:A系统调用B系统的API-2服务接口,获取具体保单的保单详情
第三步:A系统调用B系统的API-3服务接口,进行保单退保
第四步:A系统调用B系统的API-4服务接口,查询退保进度
如果想实现API-3返回多种异常的退保报文,对API-3进行mock,根据预置的路由协议,API-3直接返回mock报文,API-1、API-2、API-4直接回源到B系统。
可选的,请参考图6,在另一实施例中,本发明还公开一种远程mock测试方法,包括:
步骤S100-1获取应用端所上传的测试配置指令,解析所述测试配置指令得到被测函数所依赖的目标类名称;
步骤S200-1根据所述目标类名称,向外部接口或本地预置的测试用例集获取所述目标类对应的代码;
步骤S300-1根据所述目标类对应的代码派生得到mock类;
步骤S400-1向所述mock类中添加返回期望值,得到mock文件;
步骤S500-1当捕获到所述被测函数对所述mock文件的调用请求时,编译所述mock文件并返回mock报文。
具体的,本发明实施例是为java等面向对象语言环境所提供的实现方法。于上文中针对C语言的实现方法不同,本发明实施例不同于以目标方法为基础,而是以被测函数所依赖的目标类为基础。
其中,获取应用端所上传的测试配置指令,解析所述测试配置指令得到被测函数所依赖的目标类名称。于上文获取目标方法名称步骤相似,本发明实施例通过查询class关键字后缀字段将其作为目标类名称。
获取目标类名称之后,根据所述目标类名称发送请求至外部接口或本地预置的测试用例集获取所述目标类对应的代码。
在得到所述目标类对应的代码后,根据所述目标类派生得到mock类并对mock类进行实例化示例性的,
Class Turtle{//这个功能可能是别人做的还没完成
Virtual Turtle(){};
Virtual void GoTo(int x,int y)=0;//直接移动到指定位置;
则,相应的派生mock类为class MockTurtle:public Turtle派生类的生成可以通过遍历以及添加字段的预置规则生成。
其中,在对mock类进行实例化过程中,鉴于所获去的目标类很有可能出于未编写完整的情况,检查mock类中的功能实现字段是否包含输出项,若无,则向mock类中的尾部代码处添加返回期望值语句。
实施例二
参阅图6,示出了本发明远程mock测试系统实施例二的程序模块示意图。在本实施例中,远程mock测试系统20可以包括或被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本发明,并可实现上述远程mock测试方法。本发明实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合于描述远程mock测试系统20在存储介质中的执行过程。以下描述将具体介绍本实施例各程序模块的功能:
解析模块200,用于获取应用端所上传的测试配置指令,解析所述测试配置指令得到被测函数所依赖的目标方法名称;
在示例性的实施例中,所述解析模块200进一步用于获取应用端所上传的测试配置指令;
遍历所述测试配置指令所有字段,统计所述测试配置指令字段的总字节数,判断所述总字节数是否小于预置阈值,若是,则执行目标方法名称的第一获取步骤,若不是,则执行第二获取步骤。
在示例性的实施例中,所述解析模块200进一步用于根据预置的匹配字段查询包含所述匹配字段的适配语句;
抽取所述适配语句,将所述匹配字段从所述适配语句中删除,将适配语句中剩余字段作为目标方法名称进行存储。
在示例性的实施例中,所述解析模块200进一步用于查询所述测试配置指令中的用于定义函数的关键字;
提取所述关键字后缀字段并进行字段处理,得到目标方法名称;
若所述关键字为两个以上,创建数组结构,将每个处理后的后缀字段作为子元素注入所述数组结构。
获取模块210,用于根据所述目标方法名称,向外部接口或本地预置的测试用例集获取所述目标方法对应的代码;
在示例性的实施例中,所述获取模块210进一步用于检测所述目标方法对应的代码是否包含输出项,若是,则不做处理,若否,则向代码尾部增添所需返回的期望值。
封装模块220,用于复制获取到的代码并添加宏定义语句形成mock文件,所述宏定义语句用于定义所述目标方法为符号常量;
发送模块230,用于当捕获到所述被测函数对所述mock文件的调用请求时,编译所述mock文件并返回mock报文。
在示例性的实施例中,所述发送模块230进一步用于当捕获到所述被测函数对所述mock文件的调用请求时,编译所述mock文件得到编译结果;
将所述编译结果进行封装得到mock报文;
查询预置的路由表,根据路由表所指向的路径发送所述mock报文。
实施例三
参阅图7,是本发明实施例三之计算机设备的硬件架构示意图。本实施例中,所述计算机设备2是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。该计算机设备2可以是个人计算机、平板计算机、移动电话等,也可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等用于提供虚拟客户端的云设备。如图所示,所述计算机设备2至少包括,但不限于,可通过系统总线相互通信连接存储器21、处理器22、网络接口23、以及远程mock测试系统20。其中:
本实施例中,存储器21至少包括一种类型的计算机可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器21可以是计算机设备2的内部存储单元,例如该计算机设备2的硬盘或内存。在另一些实施例中,存储器21也可以是计算机设备2的外部存储设备,例如该计算机设备2上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器21还可以既包括计算机设备2的内部存储单元也包括其外部存储设备。本实施例中,存储器21通常用于存储安装于计算机设备2的操作系统和各类应用软件,例如实施例一的远程mock测试方法的程序代码等。此外,存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器22在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制计算机设备2的总体操作。本实施例中,处理器22用于运行存储器21中存储的程序代码或者处理数据,例如远程mock测试系统20,以实现实施例一的远程mock测试方法。
所述网络接口23可包括无线网络接口或有线网络接口,该网络接口23通常用于在所述计算机设备2与其他电子装置之间建立通信连接。例如,所述网络接口23用于通过网络将所述计算机设备2与外部终端相连,在所述计算机设备2与外部终端之间的建立数据传输通道和通信连接等。所述网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,GSM)、宽带码分多址(WidebandCode Division Multiple Access,WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图7仅示出了具有部件20-23的计算机设备2,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器21中的所述远程mock测试系统20还可以被分割为一个或者多个程序模块,所述一个或者多个程序模块被存储于存储器21中,并由一个或多个处理器(本实施例为处理器22)所执行,以完成本发明。
例如,附图示出了所述实现远程mock测试系统20实施例四的程序模块示意图,该实施例中,所述远程mock测试系统20可以被划分为解析模块200、获取模块210、封装模块220以及发送模块其中,本发明所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述所述远程mock测试系统20在所述计算机设备2中的执行过程。所述程序模块200-230的具体功能在实施例二中已有详细描述,在此不再赘述。
实施例四
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储基于mock平台的测试系统20,被处理器执行时实现实施例一的远程mock测试方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种远程mock测试方法,其特征在于,包括:
获取应用端所上传的测试配置指令,解析所述测试配置指令得到被测函数所依赖的目标方法名称;
根据所述目标方法名称,向外部接口或本地预置的测试用例集获取所述目标方法对应的代码;
复制获取到的代码并添加宏定义语句形成mock文件,所述宏定义语句用于定义所述目标方法为符号常量;
当捕获到所述被测函数对所述mock文件的调用请求时,编译所述mock文件并返回mock报文。
2.根据权利要求1所述的远程mock测试方法,其特征在于,所述获取应用端所上传的测试配置指令,解析所述测试配置指令得到被测函数所以来的目标方法名称的步骤包括:
获取应用端所上传的测试配置指令;
遍历所述测试配置指令所有字段,统计所述测试配置指令字段的总字节数,判断所述总字节数是否小于预置阈值,若是,则执行目标方法名称的第一获取步骤,若不是,则执行第二获取步骤。
3.根据权利要求2所述的远程mock测试方法,其特征在于,所述第一获取步骤包括:
根据预置的匹配字段查询包含所述匹配字段的适配语句;
抽取所述适配语句,将所述匹配字段从所述适配语句中删除,将适配语句中剩余字段作为目标方法名称进行存储。
4.根据权利要求2所述的远程mock测试方法,其特征在于,所述第二获取步骤包括:
查询所述测试配置指令中的用于定义函数的关键字;
提取所述关键字后缀字段并进行字段处理,得到目标方法名称;
若所述关键字为两个以上,创建数组结构,将每个处理后的后缀字段作为子元素注入所述数组结构。
5.根据权利要求1所述的远程mock测试方法,其特征在于,所述根据所述目标方法名称,向外部接口或本地预置的测试用例集获取所述目标方法对应的代码的步骤之后,还包括:
检测所述目标方法对应的代码是否包含输出项,若是,则不做处理,若否,则向代码尾部增添所需返回的期望值。
6.根据权利要求1所述的远程mock测试方法,其特征在于,所述当捕获到所述被测函数对所述mock文件的调用请求时,编译所述mock文件并返回mock报文的步骤包括:
当捕获到所述被测函数对所述mock文件的调用请求时,编译所述mock文件得到编译结果;
将所述编译结果进行封装得到mock报文;
查询预置的路由表,根据路由表所指向的路径发送所述mock报文。
7.一种远程mock测试方法,其特征在于,包括:
获取应用端所上传的测试配置指令,解析所述测试配置指令得到被测函数所依赖的目标类名称;
根据所述目标类名称,向外部接口或本地预置的测试用例集获取所述目标类对应的代码;
根据所述目标类对应的代码派生得到mock类;
向所述mock类中添加返回期望值,得到mock文件;
当捕获到所述被测函数对所述mock文件的调用请求时,编译所述mock文件并返回mock报文。
8.一种远程mock测试系统,其特征在于,包括:
解析模块,用于获取应用端所上传的测试配置指令,解析所述测试配置指令得到被测函数所依赖的目标方法名称;
获取模块,用于根据所述目标方法名称,向外部接口或本地预置的测试用例集获取所述目标方法对应的代码;
封装模块,用于复制获取到的代码并添加宏定义语句形成mock文件,所述宏定义语句用于定义所述目标方法为符号常量;
发送模块,用于当捕获到所述被测函数对所述mock文件的调用请求时,编译所述mock文件并返回mock报文。
9.一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的远程mock测试方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个存储器所执行,以使所述至少一个处理器执行如权利要求1至7中任一项所述的远程mock测试方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011455549.1A CN112559344A (zh) | 2020-12-10 | 2020-12-10 | 远程mock测试方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011455549.1A CN112559344A (zh) | 2020-12-10 | 2020-12-10 | 远程mock测试方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112559344A true CN112559344A (zh) | 2021-03-26 |
Family
ID=75061867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011455549.1A Pending CN112559344A (zh) | 2020-12-10 | 2020-12-10 | 远程mock测试方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112559344A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114826899A (zh) * | 2022-03-16 | 2022-07-29 | 青岛海尔科技有限公司 | 设备控制服务的调试方法和装置、存储介质及电子装置 |
WO2023103574A1 (zh) * | 2021-12-10 | 2023-06-15 | 深圳前海微众银行股份有限公司 | 单元测试方法、装置、电子设备、存储介质和程序 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1641601A (zh) * | 2004-01-04 | 2005-07-20 | 华为技术有限公司 | 一种软件的单元测试方法 |
CN105335281A (zh) * | 2014-07-30 | 2016-02-17 | 阿里巴巴集团控股有限公司 | 一种自动mock外部依赖的方法及装置 |
US20160170860A1 (en) * | 2014-12-15 | 2016-06-16 | Thomas Angermayer | Dependent object delegation tester |
CN110008113A (zh) * | 2019-02-20 | 2019-07-12 | 北京三快在线科技有限公司 | 一种测试方法、装置、电子设备 |
CN111026672A (zh) * | 2019-12-16 | 2020-04-17 | 广州品唯软件有限公司 | 测试方法、终端设备以及mock服务器 |
CN111459495A (zh) * | 2020-03-30 | 2020-07-28 | 招商局金融科技有限公司 | 单元测试代码文件生成方法、电子装置及存储介质 |
-
2020
- 2020-12-10 CN CN202011455549.1A patent/CN112559344A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1641601A (zh) * | 2004-01-04 | 2005-07-20 | 华为技术有限公司 | 一种软件的单元测试方法 |
CN105335281A (zh) * | 2014-07-30 | 2016-02-17 | 阿里巴巴集团控股有限公司 | 一种自动mock外部依赖的方法及装置 |
US20160170860A1 (en) * | 2014-12-15 | 2016-06-16 | Thomas Angermayer | Dependent object delegation tester |
CN110008113A (zh) * | 2019-02-20 | 2019-07-12 | 北京三快在线科技有限公司 | 一种测试方法、装置、电子设备 |
CN111026672A (zh) * | 2019-12-16 | 2020-04-17 | 广州品唯软件有限公司 | 测试方法、终端设备以及mock服务器 |
CN111459495A (zh) * | 2020-03-30 | 2020-07-28 | 招商局金融科技有限公司 | 单元测试代码文件生成方法、电子装置及存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023103574A1 (zh) * | 2021-12-10 | 2023-06-15 | 深圳前海微众银行股份有限公司 | 单元测试方法、装置、电子设备、存储介质和程序 |
CN114826899A (zh) * | 2022-03-16 | 2022-07-29 | 青岛海尔科技有限公司 | 设备控制服务的调试方法和装置、存储介质及电子装置 |
CN114826899B (zh) * | 2022-03-16 | 2024-01-23 | 青岛海尔科技有限公司 | 设备控制服务的调试方法和装置、存储介质及电子装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107766126B (zh) | 容器镜像的构建方法、系统、装置及存储介质 | |
CN111033468B (zh) | 实施不同类型的区块链合约的系统和方法 | |
CN109885311B (zh) | 一种应用程序的生成方法及设备 | |
US20060265469A1 (en) | XML based scripting framework, and methods of providing automated interactions with remote systems | |
CN111427561A (zh) | 业务代码的生成方法、装置、计算机设备和存储介质 | |
CN111124906A (zh) | 基于动态埋点的跟踪方法、编译方法、装置和电子设备 | |
CN111580926A (zh) | 模型发布方法、模型部署方法、装置、设备及存储介质 | |
CN110955409B (zh) | 在云平台上创建资源的方法和装置 | |
CN110532182B (zh) | 一种虚拟化平台的自动化测试方法及装置 | |
CN112559344A (zh) | 远程mock测试方法及系统 | |
CN113448862B (zh) | 软件版本测试方法、装置及计算机设备 | |
CN112579461A (zh) | 断言处理方法、系统和存储介质 | |
CN111737140A (zh) | 接口自动化测试方法、装置、设备及计算机可读存储介质 | |
ITMI951510A1 (it) | Emulatore per un database relazionale in linguaggio sql | |
CN111538659A (zh) | 业务场景的接口测试方法、系统、电子设备和存储介质 | |
CN114398673A (zh) | 应用程序的合规检测方法、装置、存储介质与电子设备 | |
CN113778897A (zh) | 接口的自动测试方法、装置、设备及存储介质 | |
CN112561690A (zh) | 信用卡分期业务接口的测试方法、系统、设备及存储介质 | |
WO2023151397A1 (zh) | 应用程序部署方法、装置、设备及介质 | |
CN111752841A (zh) | 单测模拟方法、装置、设备与计算机可读存储介质 | |
CN111258562A (zh) | Java代码质量检查方法、装置、设备和存储介质 | |
CN110826074A (zh) | 一种应用漏洞检测方法、装置和计算机可读存储介质 | |
CN114911541B (zh) | 配置信息的处理方法、装置、电子设备及存储介质 | |
CN110659022A (zh) | 一种基于Java自动调用Python脚本的方法 | |
CN111427770B (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 |