CN114281673A - 基于虚拟化服务的测试方法、设备以及存储介质 - Google Patents
基于虚拟化服务的测试方法、设备以及存储介质 Download PDFInfo
- Publication number
- CN114281673A CN114281673A CN202111397552.7A CN202111397552A CN114281673A CN 114281673 A CN114281673 A CN 114281673A CN 202111397552 A CN202111397552 A CN 202111397552A CN 114281673 A CN114281673 A CN 114281673A
- Authority
- CN
- China
- Prior art keywords
- test
- request
- dependent
- test request
- simulation
- 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
- 238000010998 test method Methods 0.000 title claims abstract description 16
- 238000012360 testing method Methods 0.000 claims abstract description 530
- 238000004088 simulation Methods 0.000 claims abstract description 158
- 230000001419 dependent effect Effects 0.000 claims abstract description 155
- 230000004044 response Effects 0.000 claims abstract description 145
- 238000000034 method Methods 0.000 claims abstract description 80
- 230000008569 process Effects 0.000 claims abstract description 28
- 230000015654 memory Effects 0.000 claims description 34
- 238000012545 processing Methods 0.000 claims description 15
- 238000004590 computer program Methods 0.000 description 17
- 238000013461 design Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000001360 synchronised effect Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 241001481659 Syrphidae Species 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种基于虚拟化服务的测试方法、设备以及存储介质。该方法包括:在执行测试案例的过程中,若该测试案例中的依赖测试请求执行失败n次,则获取该依赖测试请求的模拟响应,该模拟响应为该虚拟化服务器预先获取的成功执行该依赖测试请求的历史响应,n为大于0的整数,并将该依赖测试请求的模拟响应作为该依赖测试请求的执行结果,继续执行该测试案例中剩余的测试请求,得到该测试案例的第一测试结果,其中,该测试案例包括目标测试请求和至少一个依赖测试请求,该依赖测试请求是为了执行该目标测试请求而需执行的测试请求。提高测试案例执行的成功率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于虚拟化服务的测试方法、设备以及存储介质。
背景技术
在计算机技术领域,常通过测试案例(或称作测试用例)对业务***进行自动化的测试。一个测试案例中可以包括至少一个目标测试请求,以及目标测试请求相关联的至少一个依赖测试请求。其中,目标测试请求可以理解为该测试案例所需实现的测试目标;依赖测试请求为为了执行目标测试请求而必须执行的测试请求。
现有技术中,在通过测试案例对业务***进行自动化测试的过程中,任一测试请求执行失败,均会导致该测试案例执行失败,而难以完成对目标测试请求的测试,导致测试案例的执行成功率较低。
发明内容
本申请提供一种基于虚拟化服务的测试方法、设备以及存储介质,以期提高测试案例的执行成功率。
第一方面,本申请实施例提供一种基于虚拟化服务的测试方法,应用于测试装置,该方法包括:在执行测试案例的过程中,若该测试案例中的依赖测试请求执行失败n次,则获取该依赖测试请求的模拟响应,该模拟响应为该虚拟化服务器预先获取的成功执行该依赖测试请求的历史响应,n为大于0的整数;将该依赖测试请求的模拟响应作为该依赖测试请求的执行结果,继续执行该测试案例中剩余的测试请求,得到该测试案例的第一测试结果;其中,该测试案例包括目标测试请求和该目标测试请求的至少一个依赖测试请求。
在一种可能的实施方式中,该获取该依赖测试请求的模拟响应,包括:向虚拟化服务器发送模拟响应请求,该模拟响应请求携带有该依赖测试请求;接收该虚拟化服务器发送的该依赖测试请求的模拟响应。
在一种可能的实施方式中,在该向该虚拟化服务器发送模拟响应请求之前,该方法还包括:向该虚拟化服务器发送第一指令,该第一指令用于指示该虚拟化服务器通过虚拟化服务提供模拟响应。
在一种可能的实施方式中,该方法还包括:在该测试案例执行失败时,确定执行失败的请求是否为依赖测试请求;若该执行失败的请求为依赖测试请求,则重复执行该依赖测试请求,直至该依赖测试请求执行成功或者该依赖测试请求的执行次数达到n次。
在一种可能的实施方式中,该方法还包括:若该执行失败的请求为该目标测试请求,则结束测试,并得到该测试案例的第二测试结果,该第二测试结果指示该测试案例测试失败。
第二方面,本申请实施例提供一种基于虚拟化服务的测试方法,应用于虚拟化服务器,该方法包括:接收测试装置发送的模拟响应请求,该模拟响应请求携带有执行失败的依赖测试请求,该依赖测试请求为测试案例中目标测试请求的至少一个依赖测试请求中的一个;根据该依赖测试请求和预先存储的多个模拟模板,确定与该依赖测试请求对应的模拟响应,该模拟响应为该虚拟化服务器预先获取的成功执行测试请求的历史响应,该测试请求与该依赖测试请求对应,该模拟模板包括该测试请求和该测试请求对应的历史响应;向测试装置发送该依赖测试请求对应的模拟响应。
在一种可能的实施方式中,该根据该依赖测试请求和预先存储的多个模拟模板,确定与该依赖测试请求对应的模拟响应,包括:将该依赖测试请求分别与该多个模拟模板中的测试请求进行匹配,得到与该依赖测试请求匹配度最高的模拟模板,并将该模拟模板中的历史响应作为该依赖测试请求对应的模拟响应。
在一种可能的实施方式中,该方法还包括:接收该测试装置发送的第一指令;根据该第一指令,开启虚拟化服务和/或将虚拟化服务的模式切换至模拟模式,该模拟模式用于提供模拟响应。
在一种可能的实施方式中,该方法还包括:获取该测试装置执行该测试案例的过程中成功执行的至少一个测试请求,以及该测试请求的执行结果;将该测试请求的执行结果作为该测试请求的历史响应,和该测试请求组合,得到该模拟模板。
第三方面,本申请实施例提供一种电子设备,包括:获取单元,用于在执行测试案例的过程中,若该测试案例中的依赖测试请求执行失败n次,则获取该依赖测试请求的模拟响应,该模拟响应为该虚拟化服务器预先获取的成功执行该依赖测试请求的历史响应,n为大于0的整数;测试执行单元,用于将该依赖测试请求的模拟响应作为该依赖测试请求的执行结果,继续执行该测试案例中剩余的测试请求,得到该测试案例的第一测试结果;其中,该测试案例包括目标测试请求和该目标测试请求的至少一个依赖测试请求。
第四方面,本申请实施例提供一种服务器,包括:接收单元,用于接收测试装置发送的模拟响应请求,该模拟响应请求携带有执行失败的依赖测试请求,该依赖测试请求为测试案例中目标测试请求的至少一个依赖测试请求中的一个;处理单元,用于根据该依赖测试请求和预先存储的多个模拟模板,确定与该依赖测试请求对应的模拟响应,该模拟响应为该虚拟化服务器预先获取的成功执行该依赖测试请求的历史响应,该测试请求与该依赖测试请求对应,该模拟模板包括该测试请求和该测试请求对应的模拟响应;发送单元,用于向测试装置发送该依赖测试请求对应的模拟响应。
第五方面,本申请实施例提供一种电子设备,包括:处理器和存储器,该存储器用于存储计算机程序,该处理器用于调用并运行该存储器中存储的计算机程序,执行如第一方面或各可能的实现方式中的方法。
第六方面,本申请实施例提供一种服务器,包括:处理器和存储器,该存储器用于存储计算机程序,该处理器用于调用并运行该存储器中存储的计算机程序,执行如第二方面或各可能的实现方式中的方法。
第七方面,本申请实施例提供一种计算机可读存储介质,用于存储计算机程序指令,该计算机程序使得计算机执行如第一方面、第二方面或各可能的实现方式中的方法。
本申请提供的基于虚拟化服务的测试方法、设备以及存储介质,针对测试案例中执行失败的测试请求是依赖测试请求的情况,考虑通过从虚拟化服务器获取该依赖测试请求的模拟响应,以模拟依赖测试请求的成功执行,而不对后续测试请求的执行带来影响,提高测试案例执行的成功率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种测试***100的应用场景示意图;
图2为本申请实施例提供的一种基于虚拟化服务的测试方法200的流程示意图;
图3为本申请实施例提供的一种基于虚拟化服务的测试方法300的流程示意图;
图4为本申请实施例提供的一种基于虚拟化服务的测试方法400的交互流程示意图;
图5是本申请实施例提供的电子设备的示意性框图;
图6是本申请实施例提供的服务器的示意性框图;
图7为本申请实施例提供的一种电子设备示意性结构图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,常通过测试案例(或称作测试用例)对业务***进行自动化的测试,在一个测试案例中包括多个测试请求,每个测试请求可以请求对被测的业务***的一个业务服务进行测试,该测试请求可以是对被测的业务***的接口进行请求,以接收业务***的相应接口响应于该测试请求返回的执行结果。一个测试案例中可以包括至少一个目标测试请求,以及目标测试请求相关联的至少一个依赖测试请求。其中,目标测试请求可以理解为该测试案例所需实现的测试目标,例如需要测试业务***的“领取奖品”的业务服务是否正常,对业务***的领取奖品对应的接口发送的测试请求即为目标测试请求;依赖测试请求为为了执行目标测试请求而必须执行的测试请求,例如在测试“领取奖品”的业务服务之前,需要“登录账户”和“获取奖品列表”,那么对业务***的“登录账户”和“获取奖品列表”对应的接口发送的测试请求即为依赖测试请求。
现有技术中,在通过测试案例对业务***进行自动化测试的过程中,任一测试请求执行失败,均会导致该测试案例执行失败。可以理解的是,依赖测试请求执行失败可能由于对应的业务服务不可用(如正在重启或服务异常),或者对应的业务服务不稳定(如配置正在被修改、存在脏数据、服务负载过高等),或者由于网络原因导致执行失败。这些原因造成的测试案例执行失败,并非本测试案例的有效测试结果。因此测试案例的执行成功率较低。
针对上述技术问题,本申请实施例提供的测试方法,能够在依赖测试请求执行失败时,基于虚拟化服务获取模拟响应,以模拟依赖测试请求成功执行,不影响目标测试请求的执行结果,提高了测试案例的执行成功率。
需要说明的是,本申请实施例对被测的业务***不做任何限定,其可以是应用于任意领域(例如通信、电商、数据统计等)的业务***,一般来说,被测的业务***可以是实现业务功能的软件***,例如具有多个服务(功能)模块的软件代码。
下面将结合附图对本申请实施例进行说明。
图1为本申请实施例提供的一种测试***100的应用场景示意图。测试***100可以包括测试装置110、虚拟化服务器120和业务服务器(或业务服务器集群)130。其中,虚拟化服务器120可以是独立的服务器,或者可以和业务服务器(或业务服务器集群)130属于同一服务器集群。
测试装置110可以部署在电子设备上,该电子设备例如可以是服务器、终端设备、芯片等,其中终端设备例如可以是智能手机、笔记本电脑、平板电脑、个人台式电脑等。当电子设备是服务器时,部署有测试装置110的服务器可以与虚拟化服务器120和/或业务服务器(或业务服务器集群)130属于同一服务器集群。
测试装置110还可以直接部署在虚拟化服务器120或业务服务器(或服务器集群)130中。
测试装置110分别与虚拟化服务器120和业务服务器(或业务服务器集群)130通过有线或者无线的方式连接。
作为一种示例而非限制性的说明,本实施例中的测试装置的整体架构可以是在斯普瑞布特(springboot)中集成测试框架(如testNG),搭建成一个既可以手动运行自动化测试案例也可以定时自动运行自动化测试案例的自动化测试框架。
示例而非限制性的,本实施例中的虚拟化服务器中搭建有服务虚拟化工具(如hoverfly)。
图2为本申请实施例提供的一种基于虚拟化服务的测试方法200的流程示意图。图2所示实施例提供的方法,其执行主体可以是上述测试装置110,或者部署有测试装置110的电子设备。示例性的,如图1所示,该方法包括:
S210:测试装置在执行测试案例的过程中,若该测试案例中的依赖测试请求执行失败n次,则获取该依赖测试请求的模拟响应,该模拟响应为该虚拟化服务器预先获取的成功执行该依赖测试请求的历史响应,n为大于0的整数;
S220:测试装置将该依赖测试请求的模拟响应作为该依赖测试请求的执行结果,继续执行该测试案例中剩余的测试请求,得到该测试案例的第一测试结果;
其中,该测试案例包括目标测试请求和该目标测试请求的至少一个依赖测试请求。
本申请实施例中,为了提高测试案例执行的成功率,针对测试案例中执行失败的测试请求是依赖测试请求的情况,考虑通过获取该依赖测试请求的模拟响应,例如从虚拟化服务器获取该依赖测试请求的模拟响应,以模拟依赖测试请求的成功执行,而不对后续测试请求的执行带来影响。
可选的,测试装置可以在依赖测试请求执行失败后,即从虚拟化服务器获取该依赖测试请求的模拟响应,也即n=1;或者,测试装置可以在依赖测试请求执行失败多次后,从虚拟化服务器获取该依赖测试请求的模拟响应,此时n为大于1的整数。可选的,n可以等于3。
需要说明的是,测试装置从虚拟化服务器获取该依赖测试请求的模拟响应,可以理解为在第n+1次执行该依赖测试请求的过程中从虚拟化服务器获取该依赖测试请求的模拟响应。
测试装置从虚拟化服务器获取该依赖测试请求的模拟响应,可以理解为,在第n+1次通过代理进行请求,代理地址为虚拟化服务的地址。
可选的,测试装置执行测试案例可以是周期性触发的、定时触发的或者用户操作触发的。再测试装置触发一次测试过程后,可以执行一个或多个测试案例。当测试装置在一次测试过程中执行多个测试案例时,该多个测试案例可以是依次执行的或者并行执行的,本实施例对此不做限定。
图3为本申请实施例提供的一种基于虚拟化服务的测试方法300的流程示意图。如图3所示,该方法包括以下部分或者全部步骤:
S310:测试装置在该测试案例执行失败时,确定执行失败的请求是否为依赖测试请求。
若该执行失败的请求为依赖测试请求,则执行S320;若该执行失败的请求为该目标测试请求,则执行S350。
S320:测试装置重复执行该依赖测试请求,直至该依赖测试请求执行成功或者该依赖测试请求的执行次数达到n次。
若在重复执行该依赖测试请求的过程中重复次数未达到n次且依赖测试请求执行成功,则继续执行该测试案例中剩余的测试请求,得到该测试案例的第一测试结果,n为大于0的整数;若在重复执行该依赖测试请求的过程中依赖测试请求执行次数达到n次,则执行S330。
S330:测试装置从虚拟化服务器获取该依赖测试请求的模拟响应,该模拟响应为该虚拟化服务器预先获取的成功执行该依赖测试请求的执行结果。
S340:测试装置将该依赖测试请求的模拟响应作为该依赖测试请求的执行结果,继续执行该测试案例中剩余的测试请求,得到该测试案例的第一测试结果。
S350:测试装置结束测试,并得到该测试案例的第二测试结果,该测试结果指示该测试案例测试失败。
上述S330和S340与图2所示实施例中的S210和S220的过程以及效果相同或者相似,此处不再赘述。
在上述S310中,测试装置在执行测试案例的过程中,确定执行失败的请求是否为依赖测试请求,可以基于该依赖测试请求的请求头、请求体或预设的标识,识别该测试请求是否为依赖测试请求。
在上述S320中,若重复执行该依赖测试请求的执行次数达到n次,依赖测试请求仍未执行成功,可以从虚拟化服务器获取该依赖测试请求的模拟响应,若从虚拟化服务器中未能获取该依赖测试请求的模拟响应,则结束该测试案例的测试过程。可选的,若从虚拟化服务器中未能获取该依赖测试请求的模拟响应,可以手动添加该依赖测试请求的模拟响应,例如在虚拟化服务器中添加包含该依赖测试请求的模拟响应的模拟模板。
图4为本申请实施例提供的一种基于虚拟化服务的测试方法400的交互流程示意图。如图4所示,该方法包括以下部分或者全部步骤:
S410:测试装置向该虚拟化服务器发送第一指令,该第一指令用于指示该虚拟化服务器开启虚拟化服务,和/或,将虚拟化服务的模式切换至模拟模式,该模拟模式用于提供模拟响应。
相应的,虚拟化服务器接收该测试装置发送的第一指令;
S420:虚拟化服务器根据该第一指令,开启虚拟化服务和/或将虚拟化服务的模式切换至模拟模式,该模拟模式用于提供模拟响应。
S430:测试装置向该虚拟化服务器发送模拟响应请求,该模拟响应请求携带有执行失败的依赖测试请求;
相应的,虚拟化服务器接收测试装置发送的该模拟响应请求;
S440:虚拟化服务器根据该依赖测试请求和预先存储的多个模拟模板,确定与该依赖测试请求对应的模拟响应,该模拟响应为该虚拟化服务器预先获取的成功执行测试请求的历史响应,该测试请求与执行失败的依赖测试请求对应,该模拟模板包括该测试请求和该测试请求对应的历史响应;
S450:虚拟化服务器向测试装置发送该依赖测试请求对应的模拟响应。
相应的,测试装置接收该虚拟化服务器发送的该依赖测试请求的模拟响应。
S460:测试装置将该依赖测试请求的模拟响应作为该依赖测试请求的执行结果,继续执行该测试案例中剩余的测试请求,得到该测试案例的测试结果
针对上述S410和S420需要说明的是,虚拟化服务器的虚拟化服务可以是关闭的或者默认处于关闭状态,测试装置为确保成功获取依赖测试请求的模拟响应,可以向虚拟化服务器发送第一指令,以指示虚拟化服务器开启虚拟化服务;或者,虚拟化服务器的虚拟化服务可以是开启的或者默认处于开启状态,但是虚拟化服务的当前模式非模拟模式,例如虚拟化服务的模式为捕获模式(下文中将对捕获模式进行说明),测试装置可以向虚拟化服务器发送第一指令,以指示虚拟化服务器将虚拟化服务的模式切换至模拟模式;当然,测试装置向虚拟化服务器发送的第一指令可以指示虚拟化服务器开启虚拟化服务并将虚拟化服务的模式切换至模拟模式。
在上述S430至S450中,作为测试装置从虚拟化服务器获取依赖测试请求的模拟响应的一种具体实现方式,测试装置和虚拟化服务器之间可以通过信令的交互传输模拟响应请求以及模拟响应请求所请求的模拟响应。
针对S440需要说明的是,每个模拟模板中包括一个测试请求和与该测试请求对应的历史响应。
在一些实施例中,该模拟模板可以是虚拟化服务器在捕获模式下获取的。
例如,测试装置向该虚拟化服务器发送第一指令之前,虚拟化服务器的虚拟化服务的模式可以为捕获模式。在该捕获模式下,虚拟化服务器可以对正在执行测试案例的测试装置的执行结果进行捕获。示例性的,虚拟化服务器获取该测试装置执行该测试案例的过程中成功执行的至少一个测试请求,以及该测试请求的执行结果(即上述历史响应),并根据该测试请求和该测试请求的执行结果,得到该模拟模板,换言之,虚拟化服务器将成功执行的测试请求作为模拟模板中的测试请求,将该测试请求对应的执行结果作为该模拟模板中的历史响应。
可选的,上述任一测试请求(包括测试装置执行测试案例的过程中执行的依赖测试请求和目标测试请求)可以包括所请求的服务接口的路径,那么模拟模板中的测试请求可以是该测试请求所请求的服务接口的路径。例如,测试装置执行的测试请求中包括http://xxx/userInfo/getName,则将“xxx/userInfo/getName”作为模拟模板中的测试请求的标识。
上述S440具体可以包括:虚拟化服务器可以将该依赖测试请求分别与该多个模拟模板中的测试请求进行匹配,得到与该依赖测试请求匹配度最高的模拟模板,并将该模拟模板中的历史响应作为该依赖测试请求对应的模拟响应。
例如,该依赖测试请求包括的服务接口的路径为http://xxx/userInfo/getName,虚拟化服务器可以在多个模拟模板中查找与之匹配的测试请求“xxx/userInfo/getName”,即可确定与该依赖测试请求匹配的模拟模板,进而将匹配的模拟模板中的历史响应作为该依赖测试请求对应的模拟响应。
可选的,在集成测试框架(如testNG)中创建测试用例重试(TestCaseRetry)类,实现重试分析器(IRetryAnalyzer)接口,实现重试(retry)方法,完成以下逻辑:
a.设置最大重试次数为n+1(例如4)。
b.在进行第n+1次重试前,启动虚拟化服务,设置虚拟化服务的模式为模拟模式,将需要重试的依赖测试请求所匹配到的模拟模板导入,此时,再进行第4次请求重试,在这次重试过程中,会将该依赖测试请求所匹配到的模拟模板中的模拟响应返回,从而模拟了该请求成功的响应。其中,对虚拟化服务的所有操作,都是通过空闲应用程序接口(restapi)进行远程操作,由测试装置执行程序自动完成。
c.如果匹配不到需要重试的依赖测试请求对应的模拟模板,则该请求很可能会继续失败,最终导致这条测试案例执行失败。对应这种情况,用户可以通过手动导入模拟模板的方式,使得该请求在测试案例重新执行时,能够匹配到模拟模板,从而能够请求成功。
d.如果重试的依赖测试请求是目标测试请求,则不进行模拟,只进行重试,继续访问真实的请求地址,而非代理地址。
可选的,在集成测试框架(如testNG)中创建测试用例重试侦听器(TestCaseRetryListener)类,实现注释转换器(IAnnotationTransformer)接口,实现新的转换(transform)方法,完成以下逻辑:
a.监听所有测试案例。
b.当发现测试案例没有添加注解重试分析器(retryAnalyzer)时,动态地添加注解,从而确保所有测试用例失败后会触发重跑。
可选的,优化自动化测试案例的代码的架构,完成以下逻辑:
a.将每一个测试请求及其关联处理的代码,都包裹在异常捕获(try-catch)代码块中。
b.当第n次(例如第3次)请求响应处理失败时,在捕获(catch)中记录下失败请求的信息(请求头、请求体、标记是目标测试请求还是依赖测试请求)。
c.在第n+1次(例如第4次)请求前,设置请求方式为通过代理进行请求,代理地址为虚拟化服务的地址。
d.当第n+1次(例如第4次)请求响应处理失败时,将失败请求信息写入测试报告中(这种情况是由于无法匹配到模拟模板导致请求仍然失败)
可选的,本实施例还可以包括以下示例中的至少一项:
(1)在开发了TestCaseRetry类以后,testNG执行自动化测试用例失败时,会自动地执行一次TestCaseRetry类中的retry方法;
(2)在开发了TestCaseRetryListener类以后,testNG会自动监控所有测试用例,执行transform方法里实现的逻辑;
(3)try-catch代码块可以实现当代码执行异常时,捕捉该异常并进行相关处理;
(4)当通过代理(代理地址为虚拟化服务的地址)的方式发起接口请求时,该测试请求会被发送到虚拟化服务器被虚拟化服务处理,而不会被发送到被测的业务***,从而实现了模拟成功的响应的效果。
(5)每个测试请求的模拟模板是可以个性化修改的,以便应对复杂的请求场景。比如,对于获取奖品列表请求,可能不同用户的奖品是不一样的,此时就需要将模板修改为能够根据不同用户标识(id)来区分返回响应的奖品。例如可以通过hoverfly实现。
(6)设置最多重跑次数为n+1(例如4),是为了避免测试案例无限地重跑。一般来说,如果依赖测试请求在短时间内访问n次(例如3次)都是失败的,那大概率第n+1次(例如第4次)也会失败,所以此时启动模拟响应是合适的。
(7)由于目标请求正是该测试案例所要测试的对象,如果是目标测试请求失败,则不启动模拟响应,否则将导致该测试案例的测试结果无效。
以上,结合图2至图4详细说明了本申请实施例提供的方法。以下,结合图5至图7详细说明本申请实施例提供的装置。
图5是本申请实施例提供的电子设备的示意性框图。如图5所示,该电子设备500可以包括:
获取单元510,用于在执行测试案例的过程中,若该测试案例中的依赖测试请求执行失败n次,则获取该依赖测试请求的模拟响应,该模拟响应为该虚拟化服务器预先获取的成功执行该依赖测试请求的历史响应;其中,n为大于或等于0的整数;
测试执行单元520,用于将该依赖测试请求的模拟响应作为该依赖测试请求的执行结果,继续执行该测试案例中剩余的测试请求,得到该测试案例的第一测试结果;
其中,该测试案例包括目标测试请求和所述目标测试请求的至少一个依赖测试请求。
在一种可能的设计中,获取单元510具体用于:向虚拟化服务器发送模拟响应请求,该模拟响应请求携带有该依赖测试请求;接收该虚拟化服务器发送的该依赖测试请求的模拟响应。
在一种可能的设计中,电子设备500还包括发送单元530,用于向该虚拟化服务器发送第一指令,该第一指令用于指示该虚拟化服务器开启虚拟化服务,和/或,将虚拟化服务的模式切换至模拟模式,该模拟模式用于提供模拟响应。
在一种可能的设计中,测试执行单元520还用于在该测试案例执行失败时,确定执行失败的请求是否为依赖测试请求;若该执行失败的请求为依赖测试请求,则重复执行该依赖测试请求,直至该依赖测试请求执行成功或者该依赖测试请求的执行次数达到n次。
在一种可能的设计中,测试执行单元520还用于若该执行失败的请求为该目标测试请求,则结束测试,并得到该测试案例的第二测试结果,该第二测试结果指示该测试案例测试失败。
上述实施例提供的电子设备,可以执行上述方法实施例中测试装置侧的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
图6是本申请实施例提供的服务器的示意性框图。如图6所示,该服务器600可以包括:
接收单元610,用于接收测试装置发送的模拟响应请求,该模拟响应请求携带有执行失败的依赖测试请求,该依赖测试请求为测试案例中目标测试请求的至少一个依赖测试请求中的一个;
处理单元620,用于根据该依赖测试请求和预先存储的多个模拟模板,确定与该依赖测试请求对应的模拟响应,该模拟响应为该虚拟化服务器预先获取的成功执行该依赖测试请求的历史响应,该测试请求和该依赖测试请求对应,该模拟模板包括该测试请求和该测试请求对应的历史响应;
发送单元630,用于向测试装置发送该依赖测试请求对应的模拟响应。
在一种可能的设计中,处理单元620具体用于将该依赖测试请求分别与该多个模拟模板中的测试请求进行匹配,得到与该依赖测试请求匹配度最高的模拟模板,并将该模拟模板中的模拟响应作为该依赖测试请求对应的历史响应。
在一种可能的设计中,接收单元610还用于接收该测试装置发送的第一指令;处理单元620还用于根据该第一指令,开启虚拟化服务和/或将虚拟化服务的模式切换至模拟模式,该模拟模式用于提供模拟响应。
在一种可能的设计中,处理单元620还用于获取该测试装置执行该测试案例的过程中成功执行的至少一个测试请求,以及该测试请求的执行结果;将该测试请求的执行结果作为该测试请求的历史响应,和该测试请求组合,得到该模拟模板。
上述实施例提供的服务器,可以执行上述方法实施例中虚拟化服务器侧的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
本申请实施例还提供一种服务器,参见图7,本申请实施例仅以图7为例进行说明,并不表示本申请仅限于此。
图7为本申请实施例提供的一种电子设备示意性结构图。如图7所示的电子设备700包括处理器710,处理器710可以从存储器中调用并运行计算机程序,以实现本申请实施例中的方法。
可选地,如图7所示,电子设备700还可以包括存储器730。其中,处理器710可以从存储器730中调用并运行计算机程序,以实现本申请实施例中的方法。
其中,存储器730可以是独立于处理器710的一个单独的器件,也可以集成在处理器710中。
可选地,如图7所示,电子设备700还可以包括收发器720,处理器710可以控制该收发器720与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。
其中,收发器720可以包括发射机和接收机。收发器720还可以进一步包括天线,天线的数量可以为一个或多个。
可选地,该电子设备700可以实现本申请实施例的各个方法中测试装置对应的相应流程,为了简洁,在此不再赘述。
可选地,该电子设备700可以实现本申请实施例的各个方法中虚拟化服务器对应的相应流程,为了简洁,在此不再赘述。
该电子设备700可以是终端设备或者服务器。
应理解,本申请实施例的处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
可以理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DR RAM)。应注意,本文描述的***和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
应理解,上述存储器为示例性但不是限制性说明,例如,本申请实施例中的存储器还可以是静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch link DRAM,SLDRAM)以及直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)等等。也就是说,本申请实施例中的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本申请实施例还提供了一种计算机可读存储介质,用于存储计算机程序。
可选的,该计算机可读存储介质可应用于本申请实施例中的电子设备,并且该计算机程序使得计算机执行本申请实施例的各个方法中由测试装置或虚拟化服务器执行的相应流程,为了简洁,在此不再赘述。
本申请实施例还提供了一种计算机程序产品,包括计算机程序指令。
可选的,该计算机程序产品可应用于本申请实施例中的电子设备,并且该计算机程序指令使得计算机执行本申请实施例的各个方法中由测试装置或虚拟化服务器执行的相应流程,为了简洁,在此不再赘述。
本申请实施例还提供了一种计算机程序。
可选的,该计算机程序可应用于本申请实施例中的电子设备,当该计算机程序在计算机上运行时,使得计算机执行本申请实施例的各个方法中由测试装置或虚拟化服务器执行的相应流程,为了简洁,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。针对这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (14)
1.一种基于虚拟化服务的测试方法,其特征在于,应用于测试装置,所述方法包括:
在执行测试案例的过程中,若所述测试案例中的依赖测试请求执行失败n次,则获取所述依赖测试请求的模拟响应,所述模拟响应为所述虚拟化服务器预先获取的成功执行所述依赖测试请求的历史响应,n为大于0的整数;
将所述依赖测试请求的模拟响应作为所述依赖测试请求的执行结果,继续执行所述测试案例中剩余的测试请求,得到所述测试案例的第一测试结果;
其中,所述测试案例包括目标测试请求和所述目标测试请求的至少一个依赖测试请求。
2.根据权利要求1所述的方法,其特征在于,所述获取所述依赖测试请求的模拟响应,包括:
向虚拟化服务器发送模拟响应请求,所述模拟响应请求携带有所述依赖测试请求;
接收所述虚拟化服务器发送的所述依赖测试请求的模拟响应。
3.根据权利要求2所述的方法,其特征在于,在所述向所述虚拟化服务器发送模拟响应请求之前,所述方法还包括:
向所述虚拟化服务器发送第一指令,所述第一指令用于指示所述虚拟化服务器开启虚拟化服务,和/或,将虚拟化服务的模式切换至模拟模式,所述模拟模式用于提供模拟响应。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述方法还包括:
在所述测试案例执行失败时,确定执行失败的请求是否为依赖测试请求;
若所述执行失败的请求为依赖测试请求,则重复执行所述依赖测试请求,直至所述依赖测试请求执行成功或者所述依赖测试请求的执行次数达到n次。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述执行失败的请求为所述目标测试请求,则结束测试,并得到所述测试案例的第二测试结果,所述第二测试结果指示所述测试案例测试失败。
6.一种基于虚拟化服务的测试方法,其特征在于,应用于虚拟化服务器,所述方法包括:
接收测试装置发送的模拟响应请求,所述模拟响应请求携带有执行失败的依赖测试请求,所述依赖测试请求为测试案例中目标测试请求的至少一个依赖测试请求中的一个;
根据所述依赖测试请求和预先存储的多个模拟模板,确定与所述依赖测试请求对应的模拟响应,所述模拟响应为所述虚拟化服务器预先获取的成功执行测试请求的历史响应,所述测试请求与所述依赖测试请求对应,所述模拟模板包括所述测试请求和所述测试请求对应的历史响应;
向测试装置发送所述依赖测试请求对应的模拟响应。
7.根据权利要求6所述的方法,其特征在于,所述根据所述依赖测试请求和预先存储的多个模拟模板,确定与所述依赖测试请求对应的模拟响应,包括:
将所述依赖测试请求分别与所述多个模拟模板中的测试请求进行匹配,得到与所述依赖测试请求匹配度最高的模拟模板,并将所述模拟模板中的历史响应作为所述依赖测试请求对应的模拟响应。
8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:
接收所述测试装置发送的第一指令;
根据所述第一指令,开启虚拟化服务和/或将虚拟化服务的模式切换至模拟模式,所述模拟模式用于提供模拟响应。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
获取所述测试装置执行所述测试案例的过程中成功执行的至少一个测试请求,以及所述测试请求的执行结果;
将所述测试请求的执行结果作为所述测试请求的历史响应,和所述测试请求组合,得到所述模拟模板。
10.一种电子设备,其特征在于,包括:
获取单元,用于在执行测试案例的过程中,若所述测试案例中的依赖测试请求执行失败n次,则获取所述依赖测试请求的模拟响应,所述模拟响应为所述虚拟化服务器预先获取的成功执行所述依赖测试请求的历史响应,n为大于0的整数;
测试执行单元,用于将所述依赖测试请求的模拟响应作为所述依赖测试请求的执行结果,继续执行所述测试案例中剩余的测试请求,得到所述测试案例的第一测试结果;
其中,所述测试案例包括目标测试请求和所述目标测试请求的至少一个依赖测试请求。
11.一种服务器,其特征在于,包括:
接收单元,用于接收测试装置发送的模拟响应请求,所述模拟响应请求携带有执行失败的依赖测试请求,所述依赖测试请求为测试案例中目标测试请求的至少一个依赖测试请求中的一个;
处理单元,用于根据所述依赖测试请求和预先存储的多个模拟模板,确定与所述依赖测试请求对应的模拟响应,所述模拟响应为所述虚拟化服务器预先获取的成功执行所述依赖测试请求的历史响应,所述测试请求与所述依赖测试请求对应,所述模拟模板包括所述测试请求和所述测试请求对应的模拟响应;
发送单元,用于向测试装置发送所述依赖测试请求对应的模拟响应。
12.一种电子设备,其特征在于,包括:存储器和处理器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执行如权利要求1至5任一项所述的方法。
13.一种服务器,其特征在于,包括:存储器和处理器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执行如权利要求6至9任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111397552.7A CN114281673A (zh) | 2021-11-23 | 2021-11-23 | 基于虚拟化服务的测试方法、设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111397552.7A CN114281673A (zh) | 2021-11-23 | 2021-11-23 | 基于虚拟化服务的测试方法、设备以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114281673A true CN114281673A (zh) | 2022-04-05 |
Family
ID=80869871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111397552.7A Pending CN114281673A (zh) | 2021-11-23 | 2021-11-23 | 基于虚拟化服务的测试方法、设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114281673A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170220448A1 (en) * | 2016-02-01 | 2017-08-03 | Linkedin Corporation | Regression testing of software services |
CN108563567A (zh) * | 2018-04-09 | 2018-09-21 | 平安普惠企业管理有限公司 | 自动化测试方法、装置、设备及计算机可读存储介质 |
CN109831355A (zh) * | 2019-01-28 | 2019-05-31 | 网联清算有限公司 | 测试方法、测试装置及介质 |
CN110032454A (zh) * | 2018-01-12 | 2019-07-19 | 北京京东尚科信息技术有限公司 | 远程调用方法、***和相关设备及计算机可读存储介质 |
CN110704307A (zh) * | 2019-09-09 | 2020-01-17 | 平安普惠企业管理有限公司 | 应用产品的测试方法、装置、用户设备及计算机存储介质 |
CN111258885A (zh) * | 2020-01-08 | 2020-06-09 | 聚好看科技股份有限公司 | 一种单元测试方法及*** |
CN112162925A (zh) * | 2020-09-29 | 2021-01-01 | 新华三大数据技术有限公司 | 一种基于服务虚拟化的测试方法和*** |
-
2021
- 2021-11-23 CN CN202111397552.7A patent/CN114281673A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170220448A1 (en) * | 2016-02-01 | 2017-08-03 | Linkedin Corporation | Regression testing of software services |
CN110032454A (zh) * | 2018-01-12 | 2019-07-19 | 北京京东尚科信息技术有限公司 | 远程调用方法、***和相关设备及计算机可读存储介质 |
CN108563567A (zh) * | 2018-04-09 | 2018-09-21 | 平安普惠企业管理有限公司 | 自动化测试方法、装置、设备及计算机可读存储介质 |
CN109831355A (zh) * | 2019-01-28 | 2019-05-31 | 网联清算有限公司 | 测试方法、测试装置及介质 |
CN110704307A (zh) * | 2019-09-09 | 2020-01-17 | 平安普惠企业管理有限公司 | 应用产品的测试方法、装置、用户设备及计算机存储介质 |
CN111258885A (zh) * | 2020-01-08 | 2020-06-09 | 聚好看科技股份有限公司 | 一种单元测试方法及*** |
CN112162925A (zh) * | 2020-09-29 | 2021-01-01 | 新华三大数据技术有限公司 | 一种基于服务虚拟化的测试方法和*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108984389B (zh) | 一种应用程序测试方法及终端设备 | |
CN107436844B (zh) | 一种接口用例合集的生成方法及装置 | |
CN109683997B (zh) | 通过沙箱访问应用程序接口的方法、沙箱及沙箱设备 | |
US10802847B1 (en) | System and method for reproducing and resolving application errors | |
CN108228444B (zh) | 一种测试方法和装置 | |
KR20050060013A (ko) | 가입자 식별 모듈(sim)을 에뮬레이팅하는 방법,시스템, 및 컴퓨터 판독가능 매체 | |
CN105487966A (zh) | 程序测试方法、装置及*** | |
CN107621963B (zh) | 一种软件部署方法、软件部署***及电子设备 | |
CN109558313B (zh) | 构建异常测试场景的方法及装置 | |
CN103457783A (zh) | 用于测试移动网络应用的方法和*** | |
CN109041267B (zh) | 一种网络连接故障处理方法、装置及电子设备 | |
CN111158987B (zh) | 微服务架构的健康检查方法及装置 | |
CN106997313B (zh) | 一种应用程序的信号处理方法、***及终端设备 | |
CN108628712B (zh) | 一种应用程序测试方法及终端设备 | |
CN109857963A (zh) | 本地资源访问方法、装置及电子设备 | |
CN111128139B (zh) | 无侵入式语音测试方法及装置 | |
CN112699034B (zh) | 虚拟登录用户构建方法、装置、设备及存储介质 | |
CN109933479B (zh) | 故障模拟与仿真方法以及相关设备 | |
CN107391036B (zh) | 一种存储的vpd信息访问方法及*** | |
CN108132832A (zh) | 应用程序启动方法和装置 | |
CN109885420B (zh) | 一种PCIe链路故障的分析方法、BMC及存储介质 | |
CN114281673A (zh) | 基于虚拟化服务的测试方法、设备以及存储介质 | |
CN115276844B (zh) | 通信模组的测试方法、装置、存储介质及电子设备 | |
CN109995931B (zh) | 一种实现自动呼叫的方法及装置 | |
CN111782291B (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 |