CN116955120A - 测试脚本生成方法、装置、计算机设备以及存储介质 - Google Patents
测试脚本生成方法、装置、计算机设备以及存储介质 Download PDFInfo
- Publication number
- CN116955120A CN116955120A CN202210353118.7A CN202210353118A CN116955120A CN 116955120 A CN116955120 A CN 116955120A CN 202210353118 A CN202210353118 A CN 202210353118A CN 116955120 A CN116955120 A CN 116955120A
- Authority
- CN
- China
- Prior art keywords
- test case
- test
- new
- script
- sequence
- 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 1249
- 238000013515 script Methods 0.000 title claims abstract description 550
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000013101 initial test Methods 0.000 claims description 41
- 238000013507 mapping Methods 0.000 claims description 22
- 230000006870 function Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 6
- 238000012217 deletion Methods 0.000 claims description 6
- 230000037430 deletion Effects 0.000 claims description 6
- 230000000875 corresponding effect Effects 0.000 description 303
- 238000010586 diagram Methods 0.000 description 20
- 230000008569 process Effects 0.000 description 14
- 238000004364 calculation method Methods 0.000 description 12
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000007726 management method Methods 0.000 description 8
- 238000013139 quantization Methods 0.000 description 8
- 238000012423 maintenance Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000011002 quantification Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/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)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例公开了一种测试脚本生成方法、装置、计算机设备以及存储介质。其中方法包括:获取新测试用例以及参考测试用例集合,所述参考测试用例集合中包括一个或多个参考测试用例;分别计算所述新测试用例和各个参考测试用例之间的相似度;根据所述新测试用例和各个参考测试用例之间的相似度从所述参考测试用例集合中确定目标测试用例;获取所述目标测试用例对应的目标测试脚本以及所述目标测试脚本的目标脚本执行序列,并利用所述目标脚本执行序列中各个执行子序列对应的操作实现代码,生成所述新测试用例对应的新测试脚本。实施本申请实施例,有助于提高测试脚本的生成效率,以及有助于保证测试脚本的质量。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种测试脚本生成方法、装置、计算机设备以及存储介质。
背景技术
随着计算机技术的快速发展,各种软件的应用越来越频繁,为了保证软件的正常运行,在软件的开发阶段,通常会对软件进行各种测试。而在测试场景中,一般是利用测试用例来生产对应的测试脚本。目前,测试脚本的生产通常是人工操作,即对于未曾建设过的新测试用例,通常会分配给脚本调试员进行建设,以使脚本调试员利用新测试用例手动编写对应的测试脚本。可以看出,这种生产方式,在脚本的生产过程中依赖人工操作,费时费力,无法提高工作效率。并且,通常每个脚本调试员的技能和经验有所差异,也会导致生产的测试脚本质量难以保证。
发明内容
本申请实施例提供了一种测试脚本生成方法、装置、计算机设备以及存储介质,有助于提高测试脚本的生成效率及保证测试脚本的质量。
第一方面,本申请提供一种测试脚本生成方法,包括:
获取新测试用例以及参考测试用例集合,所述参考测试用例集合中包括一个或多个参考测试用例;
分别计算所述新测试用例和各个参考测试用例之间的相似度;
根据所述新测试用例和各个参考测试用例之间的相似度从所述参考测试用例集合中确定目标测试用例;
获取所述目标测试用例对应的目标测试脚本以及所述目标测试脚本的目标脚本执行序列,并利用所述目标脚本执行序列中各个执行子序列对应的操作实现代码,生成所述新测试用例对应的新测试脚本;所述目标脚本执行序列包括一个或多个执行子序列。
第二方面,本申请提供一种测试脚本生成装置,包括:
获取单元,用于获取新测试用例以及参考测试用例集合,所述参考测试用例集合中包括一个或多个参考测试用例;
计算单元,用于分别计算所述新测试用例和各个参考测试用例之间的相似度;
确定单元,用于根据所述新测试用例和各个参考测试用例之间的相似度从所述参考测试用例集合中确定目标测试用例;
生成单元,用于获取所述目标测试用例对应的目标测试脚本以及所述目标测试脚本的目标脚本执行序列,并利用所述目标脚本执行序列中各个执行子序列对应的操作实现代码,生成所述新测试用例对应的新测试脚本;所述目标脚本执行序列包括一个或多个执行子序列。
第三方面,本申请提供了一种计算机设备,包括:处理器、存储器、网络接口;
上述处理器与存储器、网络接口相连,其中,网络接口用于提供数据通信功能,上述存储器用于存储计算机程序,上述处理器用于调用上述计算机程序,以使包含该处理器的计算机设备执行上述数据处理方法。
第四方面,本申请提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序适于由处理器加载并执行,以使得具有该处理器的计算机设备执行上述测试脚本生成方法。
第五方面,本申请提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令被处理器执行时实现上述测试脚本生成方法。
本申请实施例中,可以获取新测试用例以及包括一个或多个参考测试用例的参考测试用例集合;然后分别计算新测试用例和各个参考测试用例之间的相似度,以根据新测试用例和各个参考测试用例之间的相似度从参考测试用例集合中确定目标测试用例;进一步的,可以获取目标测试用例对应的目标测试脚本以及目标测试脚本的目标脚本执行序列,并利用目标脚本执行序列中各个执行子序列对应的操作实现代码,生成新测试用例对应的新测试脚本。通过实施上述方法,可以基于测试用例之间的相似性,找出所需要的已建设的测试用例,并利用该已建设的测试用例对应的测试脚本,自动为待建设的测试用例(即新测试用例)生成对应的测试脚本,以提高测试脚本的生成效率,也可以大大减小因人工操作或调试所增加的成本(如人力成本、时间成本、维护成本等);相比于手动编写方式中因脚本调试员的技能和经验之间的差异所带来的质量问题,本申请中的新测试脚本可以基于已交付的测试脚本进行复用,相当于复用了有效的调试经验,可在一定程度保证了新测试脚本的质量。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请实施例提供的一种测试脚本生成系统的架构示意图;
图1b是本申请实施例提供的另一种测试脚本生成系统的架构示意图;
图2是本申请实施例提供的一种测试脚本生成方法的流程示意图;
图3a是本申请实施例提供的一种测试用例的信息示意图;
图3b是本申请实施例提供的另一种测试用例的信息示意图;
图3c是本申请实施例提供的又一种测试用例的信息示意图;
图3d是本申请实施例提供的一种脚本执行序列的信息示意图;
图3e是本申请实施例提供的一种脚本实现代码的信息示意图;
图4a是本申请实施例提供的一种新测试数据的结构示意图;
图4b是本申请实施例提供的另一种新测试数据的结构示意图;
图4c是本申请实施例提供的又一种新测试数据的结构示意图;
图4d是本申请实施例提供的又一种新测试数据的结构示意图;
图5a是本申请实施例提供的一种新测试数据的信息示意图;
图5b是本申请实施例提供的一种基于测试脚本调试的界面示意图;
图6是本申请实施例提供的另一种测试脚本生成方法的流程示意图;
图7a是本申请实施例提供的一种测试用例与标识序列之间的关系示意图;
图7b是本申请实施例提供的另一种测试用例与标识序列之间的关系示意图;
图8是本申请实施例提供的一种测试脚本生成装置的组成结构示意图;
图9是本申请实施例提供的一种计算机设备的组成结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提出了一种测试脚本生成方案;具体的,该方案大致原理如下:可以获取新测试用例以及参考测试用例集合,以利用参考测试用例集合中参考测试用例的测试脚本自动生成性测试脚本对应的测试脚本。其中,参考测试用例可以是指已建设过的测试用例,即已存在对应的测试脚本的测试用例,而新测试用例则可以是指未曾建设过的测试用例,即还不存在对应的测试脚本的测试用例。具体地,可以基于参考测试用例和新测试用例之间的相似度,利用已建设的测试脚本(即参考测试用例的测试脚本),自动为待建设的测试用例(即新测试用例)生成测试脚本。为方便后续描述,可以将参考测试用例的测试脚本称之为参考测试脚本,将新测试用例的测试脚本称之为新测试脚本。
可选的,可以分别计算新测试用例和各个参考测试用例之间的相似度,以根据新测试用例和各个参考测试用例之间的相似度从参考测试用例集合中确定目标测试用例。例如,该目标测试用例可以是指最大相似度对应的参考测试用例。那么,在确定目标测试用例之后,即可以获取目标测试用例对应的测试脚本(或称之为目标测试脚本),并利用目标测试脚本生成新测试用例对应的新测试脚本。例如,可以利用目标脚本执行序列中各个执行子序列对应的操作实现代码,生成新测试用例对应的新测试脚本。其中,目标测试脚本可以是指已交付的测试脚本,即可利用在实际测试环境中的测试脚本。通过实施上述方法,可以基于测试用例之间的相似性,找出所需要的已建设的测试用例,并利用已建设的测试用例对应的测试脚本,自动为未建设的测试用例(即新测试用例)生成对应的测试脚本,可以提高测试脚本的生成的智能化,也可以提高脚本的生成效率,同时,大大减小了因人工操作(或调试)所增加的成本(如人工成本、时间成本、维护成本等);相比于手动编写方式中因脚本调试员的技能和经验之间的差异所带来的质量问题,新测试脚本可以基于已交付的测试脚本进行复用,相当于复用了有效的调试经验,则可以在一定程度保证了新测试脚本的质量。
在具体实现中,上述所提及的测试脚本生成方案的执行主体可以是计算机设备,该计算机设备可以是终端或者服务器。此处所提及的终端可以是智能手机、平板电脑、笔记本电脑、台式电脑等设备,还可以是例如手柄、触摸屏等外设设备;服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器,等等。需要说明的是,当计算机设备为服务器时,本申请实施例提供了一种测试脚本生成系统,如图1a所示,该测试脚本生成系统包括至少一个终端和至少一个服务器;终端可以获取新测试用例,并将获取到的新测试用例上传至服务器(即计算机设备),以使计算机设备可以获取到该新测试用例,并生成该新测试用例对应的新测试脚本。
或者,上述所提及的测试脚本生成方案也可由终端和服务器共同执行。例如,终端在获取到新测试用例之后,也可以由终端继续获取参考测试用例集合;并由终端分别计算新测试用例和各个参考测试用例之间的相似度;然后,终端将新测试用例和各个参考测试用例之间的相似度上传至服务器,以使服务器可以基于新测试用例和各个参考测试用例之间的相似度,确定目标测试用例,并进一步基于目标测试用例的目标测试脚本生成新测试用例的新测试脚本。又如,终端在获取到新测试用例之后,也可以由终端继续获取参考测试用例集合;进一步由终端分别计算新测试用例和各个参考测试用例之间的相似度,并基于相似度确定目标测试用例;然后,终端将目标测试用例上传至服务器,以使服务器可以基于目标测试用例的目标测试脚本生成新测试用例的新测试脚本。其中,当该测试脚本生成方案由终端和服务器共同执行时,该终端和服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例在此不做限制。
在一种实现场景中,本申请还提供了另一种应用该测试脚本生成方案的测试脚本生成系统,如图1b是本申请实施例提供的一种测试脚本生成系统的架构示意图。如图1b所示,该测试脚本生成系统可以包括测试脚本管理子系统、脚本代码生成子系统、脚本测试数据生成子系统、脚本断言生成子系统。在具体实现中,当测试脚本管理子系统获取到新测试用例时,该测试脚本管理子系统可以基于该新测试用例和已建设的测试用例(即参考测试用例)做相似性计算,以确定目标测试用例,例如,该目标测试用例可以是与新测试用例之间相似度最高的已建设的测试用例。
在确定目标测试用例之后,即可以通过该目标测试用例生成新测试用例的新测试脚本。可选的,执行一个测试所需要的数据可以包括测试脚本代码、脚本测试数据以及测试脚本断言。在一种可能的实现方式中,可以通过脚本代码生成子系统、脚本测试数据生成子系统和脚本断言生成子系统,基于目标测试用例,为新测试用例自动生成新测试脚本。其中,脚本代码生成子系统可以用来自动为新测试用例生成新测试脚本对应的测试脚本代码(可以对应于本申请中的新测试脚本);脚本测试数据生成子系统可以用来自动为新测试用例生成新测试脚本对应的脚本测试数据(或称之为新测试数据);脚本断言生成子系统可以用来自动为新测试用例生成新测试脚本对应的测试脚本断言(或称之为新脚本断言)。
可选的,该测试脚本生成系统还可以包括测试用例自动生成子系统,该测试用例自动生成子系统可以用来生成各种新的测试用例。在一种可能的实现方式中,当测试用例自动生成子系统中存在新增的新测试用例时,可以将新增的新测试用例推送给测试脚本管理子系统,以使测试脚本管理子系统可以为新增的新测试用例自动生成测试脚本,以提高系统的自动化。可选的,测试用例自动生成子系统中新增的新测试用例可以定时推送,也可以实时推送,在本申请不做限定。则本申请中的新测试用例可以从测试用例自动生成子系统中获取。
可选的,该测试脚本生成系统还可以包括脚本工单管理子系统,该脚本工单管理子系统可以用来为新测试脚本生成对应的脚本工单,以便于对新测试脚本进行管理;脚本工单管理子系统还可以将脚本工单分配给脚本调试员,以使脚本调试员可以处理脚本工单,即对新测试脚本进行调试,以确定新测试脚本的有效性。
在一种实现方式中,上述所有子系统均可为后台服务,即可部署在服务器上,具体参数可如表1和表2所示。其中,表1中的参数表示的是部署环境对应的硬件参数,表2表示的是部署环境对应的软件参数。
表1:
硬件参数 | 值 |
服务器机型 | XX品牌 |
内存 | 8G*2 |
CPU | E3-1230v2*1 |
硬盘 | 1T*1 |
表2:
需要说明的是,上述表1和表2中部署环境参数仅是示例性举例,还可以为其他参数,在本申请不作具体限定。
基于上述所提供的测试脚本生成方案,本申请实施例提供了一种测试脚本生成方法,该测试脚本生成方法可由上述所提及的计算机设备执行。请参阅图2,该测试脚本生成方法包括但不限于以下步骤:
S201,获取新测试用例以及参考测试用例集合。
其中,新测试用例可以是指还不存在对应测试脚本的测试用例,其中,新测试用例的数量可以是一个或多个,在新测试用例的数量为多个的情况下,后续在生成各个新测试用例的新测试脚本时,可以是并行处理,也可以是串行处理,在本申请不做具体限定。参考测试用例集合中可以包括一个或多个参考测试用例,任一参考测试用例可以是指已存在测试脚本的测试用例。测试用例可以是指针对测试任务的语言描述,后续提及的测试用例的测试脚本可以是指用于计算机执行具体测试任务的代码、数据等。
举例来说,可以以Excel表格的形式展现测试用例,如图3a所示的表格中的每一行可以为一条测试用例,表头分别为:用例类型、自动化、用例名、前置条件、用例步骤、预期结果。其中,表头中的用例步骤可以理解为本申请中用来进行下述计算两个测试用例相似度所要用到的数据。例如,新测试用例对应的描述可以如图3b所示,参考测试用例集合中一个参考测试用例对应的描述可以如图3c所示。
在一种实现方式中,可以在当存在针对新测试用例的测试脚本的生成需求时,获取新测试用例以及参考测试用集合。
可选的,可以是在计算机设备接收到一个脚本生成请求时,确定当前存在针对新测试用例的测试脚本的生成需求。例如,脚本调试员可以向计算机设备发送一个针对新测试用例的脚本生成请求,以使计算机设备接收该脚本生成请求,而在计算机设备接收到该脚本生成请求之后,也就确定存在针对新测试用例的测试脚本的生成需求。在一种实现方式中,当脚本调试员需要对一个新测试用例生产对应的测试脚本时,脚本调试员可以通过在终端所输出的用户操作界面执行相关操作,以向计算机设备发送针对新测试用例的脚本生成请求。其中,该脚本生成请求中可以携带有新测试用例;或该脚本生成请求中可以携带有新测试用例的用例地址。则计算机设备在接收到脚本生成请求之后,可以将脚本生成请求中所携带的新测试用例作为本申请中的新测试用例;或基于脚本生成请求中的用例地址获取到新测试用例。进一步,计算机设备可以获取参考测试用例集合。
可选的,针对新测试用例的测试脚本的生成需求还可以是触发脚本生成定时任务所产生的。如可以设置一个脚本生成定时任务,该脚本生成定时任务中指示了对新生成的测试用例进行脚本生成的触发条件。例如,该触发条件可以是当前时间到达预设时间,该预设时间可以任意设定,在本申请不做限定;或者,新生成的测试用例的数量到达了预设数量等等。在一种可能实现的方式中,所新生产的测试用例可以存储在某一预设位置,则在触发了脚本生成定时任务时,可以从该预设位置中获取新测试用例。并进一步获取参考测试用例集合。
可选的,测试用例可以由一设备所生产,则当该设备生产一个新的测试用例时,可以将该新的测试用例推送给计算机设备,则计算机设备在接收到该新的测试用例后,则可以确定存在针对新测试用例的测试脚本的生成需求,该新的测试用例即是新测试用例。在获取到新测试用例之后,可以进一步获取参考测试用例集合。
在一种实现方式中,计算机设备可以进一步获取参考测试用例集合,在一种实现方式中,大量的参考测试用例可以存储在一个预设存储区域。则可以从该预设存储区域中获取参考测试用例集合。
S202,分别计算新测试用例和各个参考测试用例之间的相似度。
在一种实现方式中,一个测试脚本的实现通常是依次调用一个或多个操作API(Application Programming Interface,应用程序接口),即要进行测试时所要调用的应用程序接口,此处的操作API可以理解为本申请提及的操作步骤。可选的,一个操作API下也可能会关联一个或多个业务规则,即一个操作步骤下也可以包括一个或多个业务规则。例如,如图3b所示,操作步骤可以是:系统反馈收款下单凭证-值连商户系统请求收款、系统请求XX用户确认收款结果-系统验证XX用户犯规的结果为确认完成,等等。在操作步骤为系统反馈收款下单凭证-值连商户系统请求收款下的业务规则可以包括:身份证照上传信息查询结果,业务结果是否为:是;或,身份证照上传信息查询结果,是否已上传身份证照是否为:是;等等。
通过实践可观察到,在庞大的测试用例集合里,有一些测试用例间的相似度是很高的,测试用例通常有些测试用例之间可能只会相差一个操作步骤或一个业务规则。例如,如图3b和图3c所示的两个测试用例,仅仅相差了图3b中由301标记的一个操作步骤。可以理解的是,测试脚本是基于测试用例描述进行建设的,因此,从理论上分析,若测试用例间相似度很高,那其对应的测试脚本相似度也会很高。而在本申请中,可以考虑对测试用例的相似度进行量化,即对于新测试用例,和参考测试用例集合中的各个参考测试用例做相似性计算,即分别计算新测试用例和各个参考测试用例之间的相似度。在一种可能实现的方式中,相似性计算可以利用自然语言处理技术中的文本相似方法,其具体相似算法在本申请不做限定。
S203,根据新测试用例和各个参考测试用例之间的相似度从参考测试用例集合中确定目标测试用例。
在一种实现方式中,可以进一步根据新测试用例和各个参考测试用例之间的相似度从参考测试用例集合中确定目标测试用例。例如,该目标测试用例可以是指相似度最高的参考测试用例,具体实现中,可以从新测试用例和各个参考测试用例之间的相似度中确定最大相似度,并将最大相似度对应的参考测试用例作为目标测试用例。那么,后续可以基于相似度最高的测试用例的测试脚本,为新测试用例自动生成测试脚本,可以理解的是,若某一测试用例与新测试用例相似度较高,则该测试用例对应的测试脚本与新测试脚本对应的新测试脚本相似度较高,即本申请可以利用最高相似度的测试脚本生成后续所需要的新测试脚本,可以以省却人工建设环节,也可以有效提高测试脚本的生成准确性。
S204,获取目标测试用例对应的目标测试脚本以及目标测试脚本的目标脚本执行序列,并利用目标脚本执行序列中各个执行子序列对应的操作实现代码,生成新测试用例对应的新测试脚本。
在一种实现方式中,一个测试脚本可以是根据测试脚本对应的脚本执行序列生成的,其中,一个脚本执行序列可以包括一个或多个执行子序列,任一个执行子序列可以具有对应的操作代码实现。在具体实现中,在生成一个测试脚本时,可以利用脚本执行序列中各个执行子序列对应的操作代码实现进行组合,得到测试脚本。
其中,一个执行子序列对应一个操作步骤,执行子序列可以是指对操作步骤的代码描述。例如,如图3d所示的是一个脚本执行序列,其中,图3d中由302标记的方框中的代码语句即是一个执行子序列,该方框中的中文文字即是该执行子序列对应的操作步骤的描述。可以理解的是,新测试用例与目标测试用例之间的相似度较高,而相似度是基于两个测试用例间的操作步骤来确定的,则新测试用例所包括的操作步骤和目标测试用例所包括的操作步骤的相似度较高;而通过上述描述可知,一个测试脚本的生成与对应的测试用例所包括的操作步骤相关。
综上所述,新测试用例的测试脚本与目标测试用例的测试脚本的相似度也较高,则可以获取目标测试用例对应的测试脚本,以对该测试脚本进行复用,得到新测试用例对应的测试脚本。目标测试脚本可以是指已交付的测试脚本,即可利用在实际测试环境中的测试脚本,该测试脚本已具备相应的准确性和有效性。新测试用例对应的测试脚本是基于已交付的测试脚本进行复用,相当于复用了有效的调试经验,可在一定程度保证了新测试脚本的质量。为方便后续描述,可以将目标测试用例对应的测试脚本称之为目标测试脚本。
其中,本申请中的测试脚本可以是指在进行测试时计算机设备所执行的代码语句,即也可以将该测试脚本称之为测试脚本代码。可以理解的是,一个完整的测试脚本通常除了可以包括测试脚本代码之外,还可以包括测试数据以及脚本断言。其中,测试数据可以是指在测试过程中测试脚本所依赖的数据,例如,一个测试脚本依赖的测试数据可以包含用户号、商户号、用于测试的API、输入等;脚本断言可以用于检查测试中得到的响应数据等是否符合预期,以保证测试过程中的数据交互与预期一致。为方便后续描述,在本申请中,可以将新测试用例对应的测试脚本称之为新测试脚本,将目标测试用例对应的测试脚本称之为目标测试脚本;将新测试脚本对应的测试数据以及脚本断言分别称之为新测试数据、以及新脚本断言。下述对新测试脚本、新测试数据、以及新脚本断言的生成进行相关描述。
在一种实现方式中,可以获取目标测试用例对应的目标测试脚本以及该目标测试脚本的目标脚本执行序列,该目标脚本执行序列可以包括一个或多个执行子序列;进一步的,可以利用该目标脚本执行序列中各个执行子序列对应的操作实现代码,以生成新测试用例对应的新测试脚本。
可选的,利用该目标脚本执行序列中各个执行子序列对应的操作实现代码,生成新测试脚本的具体实施方式可以是:首先,可生成新测试用例对应的脚本执行序列,例如,可以基于新测试用例所包括的操作步骤生成脚本执行序列。其中,脚本执行序列可以包括一个或多个执行子序列,一个执行子序列对应新测试用例中的一个操作步骤。则基于新测试用例所包括的操作步骤生成脚本执行序列的具体实现可以是:获取新测试用例所包括的操作步骤中每个操作步骤的执行子序列;然后,依照各个操作步骤在新测试用例的步骤顺序对各个执行子序列进行依次排列,从而得到脚本执行序列。
在得到脚本执行序列之后,可以根据目标脚本执行序列和脚本执行序列生成新测试用例对应的新测试脚本。例如,可以将脚本执行序列中的执行子序列与目标脚本执行序列中各个执行子序列进行序列匹配,并利用序列匹配结果和目标脚本执行序列中各个执行子序列对应的操作实现代码,生成新测试用例对应的新测试脚本。
如果序列匹配结果指示脚本执行序列中存在与目标测试脚本中相同的执行子序列,则可以从目标测试脚本中复制相同的执行子序列对应的操作实现代码,例如,如图3e所示的是一个执行子序列对应的操作实现代码;如果序列匹配结果指示脚本执行序列中还存在与目标测试脚本中不相同的执行子序列,则可以从操作实现代码库中获取不相同的执行子序列对应的操作实现代码。从而实现根据新测试用例的各个执行子序列对应的操作实现代码,生成新测试用例对应的新测试脚本。
其中,操作实现代码库中可以存储有大量操作API(或者说执行子序列)对应的操作实现代码,其中,执行子序列与对应的操作实现代码关联存储在操作实现代码库中。在需要操作实现代码时,可以直接利用执行子序列从该操作实现代码库中获取对应的操作实现代码即可。简单来说,对于新测试脚本和已建设测试脚本同时具有的操作API,可以从已建设测试脚本中拷贝其实现到新测试脚本中。而对应不存在在已建设测试脚本的操作API,则可以从操作实现代码库中获取对应的实现到新测试脚本中。
在一种实现方式中,在生成新测试脚本之后,还可以进一步生成新测试脚本对应的测试数据,以便于后续在进行利用新测试脚本进行测试时,可以调用对应的测试数据进行测试。为方便后续描述,可以将新测试脚本对应的测试数据称之为新测试数据,同理,在下述描述目标测试脚本对应的测试数据时,可以将该测试数据称之为目标测试数据。可选的,可以拷贝已建设测试脚本(可理解为上述的目标测试脚本)的所有测试数据到新测试脚本;然后,再基于新测试用例的业务规则,从新测试脚本中剔除不具有相关业务规则的测试数据,从而可以避免拷贝了不相关测试数据的情况。而对于所拷贝的测试数据中不存在新测试用例中某一个或多个业务规则时,则可以从测试数据库中获取对应的测试数据,以保证新测试脚本中测试数据的完整性。其中,测试数据库中可以存储有大量业务规则对应的测试数据,在需要测试数据时,可以直接从该测试数据库中获取即可。
综上所述,确定新测试脚本对应的新测试数据的具体实施方式可以为如下描述:可以将目标测试脚本对应的目标测试数据拷贝到新测试脚本中,以将目标测试数据作为新测试脚本对应的初始测试数据。其中,目标测试数据可以包括:目标测试用例所包含的各个业务规则对应的测试数据。进一步的,可以基于目标测试用例所包括业务规则和新测试用例所包括的业务规则对初始测试数据进行处理,以得到新测试脚本对应的新测试数据。例如,可以将新测试用例的业务规则与目标测试用例的业务规则进行规则匹配,以根据规则匹配结果和初始测试数据生成新测试脚本中的新测试数据。
可选的,如果规则匹配结果指示初始测试数据中存在第一业务规则对应的测试数据,则可以从初始测试数据中将第一业务规则对应的测试数据进行删除。其中,第一业务规则可以是指:不存在新测试用例中,且存在目标测试用例中的业务规则。如果初始测试数据中不存在第二业务规则对应的测试数据,则可以从测试数据库中获取第二业务规则对应的测试数据,并可以将获取到的测试数据添加到所初始测试数据中。其中,第二业务规则可以是指:存在新测试用例中,且不存在目标测试用例中的业务规则。从而可以根据新测试用例所包含的各个业务规则对应的测试数据确定新测试脚本的测试数据。
举例来说,如图4a所示,如果目标测试用例中的业务规则包括:规则A、规则B、规则C;新测试用例中的业务规则包括:规则A、规则B、规则C;复制到新测试脚本中的初始测试数据包括:规则A对应的数据A、规则B对应的数据B、规则C对应的数据C。因为目标测试用例和新测试用例所包括的业务规则是相同的,则可以直接将复制的测试数据(即初始测试数据)作为新测试脚本的测试数据。
举例再说,如图4b所示,如果目标测试用例中的业务规则包括:规则A、规则B、规则C;新测试用例中的业务规则包括:规则A、规则B;复制到新测试脚本中的初始测试数据包括:规则A对应的数据A、规则B对应的数据B、规则C对应的数据C。因为相对于目标测试用例而言,新测试用例中删减了规则C,则可以将初始测试数据中规则C对应的数据C进行删减,并将删减数据C后的初始测试数据作为新测试脚本的测试数据。
举例又说,如图4c所示,如果目标测试用例中的业务规则包括:规则A、规则B、规则C;新测试用例中的业务规则包括:规则A、规则B、规则C、规则D;复制到新测试脚本中的初始测试数据包括:规则A对应的数据A、规则B对应的数据B、规则C对应的数据C。因为相对于目标测试用例而言,新测试用例中增加了规则D,则可以从测试数据库中获取规则D对应的数据D,并将添加数据D后的初始测试数据作为新测试脚本的测试数据。
举例又说,如图4d所示,如果目标测试用例中的业务规则包括:规则A、规则B、规则C;新测试用例中的业务规则包括:规则A、规则B、规则D;则复制到新测试脚本中的初始测试数据包括:规则A对应的数据A、规则B对应的数据B、规则C对应的数据C。因为相对于目标测试用例而言,新测试用例中删减了规则C,并增加了规则D,则可以将初始测试数据中规则C对应的数据C进行删减,并测试数据库中获取规则D对应的数据D,并将删减数据C、添加数据D后的初始测试数据作为新测试脚本的测试数据。
在一种实现方式中,一个测试脚本依赖的测试数据可以包含用户号、商户号、用于测试的API、输入等,其可以被保存到系统的后台服务中,在测试脚本执行时可通过访问后台服务接口动态获取,以达到脚本代码和测试数据解耦的目的,可便于测试脚本的测试数据的调整。同理,本申请中的新测试数据也可以保存在系统的后台服务中。例如,测试脚本对应的测试数据可如图5a所示的数据所示。
在一种实现方式中,还可以生成新测试脚本中的脚本断言,如可以直接从目标测试脚本中拷贝脚本断言作为新测试脚本的脚本断言。其中,测试脚本的脚本断言可以用于检查测试中得到的响应数据等是否符合预期,以保证测试过程中的数据交互与预期一致。例如在支付的用户验收测试(User Acceptance Test,UAT)场景中,脚本断言可以用于校验测试脚本执行完后界面显示的文字是否符合预期。例如,如图5b所示,是一个测试脚本执行后所得到的脚本调试记录,该记录可以是一个如图5b所示的界面。其中,该测试脚本对应的预期结果可如表3所示,表3:
从表3可知,测试脚本对应的预期结果是需要在支付完成之后的显示界面上显示“支付成功”或“完成”;通过图5b所示的调试结果可以看出,显示界面上所显示的是“完成”,则可以确定测试脚本执行完后界面显示的文字符合预期。
可选的,脚本断言也可以存储到后台服务中,以和测试脚本代码解耦,便于调整。测试脚本执行时可通过访问后台服务接口动态获取对应的脚本断言。同理,本申请中的新测试脚本对应的脚本断言(或称之为新脚本断言)也可以存储在后台服务中。
本申请实施例中,可以获取新测试用例以及包括一个或多个参考测试用例的参考测试用例集合;然后分别计算新测试用例和各个参考测试用例之间的相似度,以根据新测试用例和各个参考测试用例之间的相似度从参考测试用例集合中确定目标测试用例;进一步的,可以获取目标测试用例对应的目标测试脚本以及目标测试脚本的目标脚本执行序列,并利用目标脚本执行序列中各个执行子序列对应的操作实现代码,生成新测试用例对应的新测试脚本。通过实施上述方法,可以基于测试用例之间的相似性,找出所需要的已建设的测试用例,并利用已建设的测试用例对应的测试脚本,自动为待建设的测试用例(即新测试用例)生成对应的测试脚本,以提高测试脚本的生成效率,也可以大大减小因人工操作或调试所增加的成本(如人力成本、时间成本、维护成本等);新测试脚本可以基于已交付的测试脚本进行复用,相当于复用了有效的调试经验,则在一定程度保证了新测试脚本的质量。本申请中的测试用例生成方案可以很好的用于在大量测试用例需建设的场景下,可以基于少量已建设的测试用例为大量相似的测试用例自动生成测试脚本,从而可以有效节省因人工建设测试用例的测试脚本时,所带来的大量的人工调试和维护等成本。
基于上述描述,本申请实施例进一步提出了另一种测试脚本生成方法;在本申请实施例中,主要以计算机设备执行该测试脚本生成方法为例进行说明。
如图6所示,该测试脚本生成方法包括但不限于以下步骤:
S601,获取新测试用例以及参考测试用例集合。
其中,新测试用例可以是指还不存在对应测试脚本的测试用例,参考测试用例集合中的任一参考测试用例可以是指已存在测试脚本的测试用例(或者说已交付的测试用例)。
在一种实现方式中,可以在当存在针对新测试用例的测试脚本的生成需求时,可以获取新测试用例以及参考测试用集合。
可选的,可以是在计算机设备接收到一个脚本生成请求时,确定当前存在针对新测试用例的测试脚本的生成需求。例如,脚本调试员可以向计算机设备发送一个针对新测试用例的脚本生成请求,以使计算机设备接收该脚本生成请求,而在计算机设备接收到该脚本生成请求之后,也就确定存在针对新测试用例的测试脚本的生成需求。其中,该脚本生成请求中可以携带有新测试用例;或该脚本生成请求中可以携带有新测试用例的用例地址,以使计算机设备可以基于该用例地址获取新测试用例。
可选的,可以在触发脚本生成定时任务后确定当前存在针对新测试用例的测试脚本的生成需求。该脚本生成定时任务中指示了对新生成的测试用例进行脚本生成的触发条件。例如,该触发条件可以是当前时间到达预设时间;或者,新生成的测试用例的数量到达了预设数量等等。
可选的,测试用例可以由一设备所生产,则当该设备生产一个新测试用例时,可以将该新测试用例推送给计算机设备,则计算机设备在接收到该新测试用例后,则可以确定存在针对新测试用例的测试脚本的生成需求。
在一种实现方式中,计算机设备在获取到新测试用例之后,还可以进一步获取参考测试用例集合。在一种可行的实现方式中,大量的候选测试用例可以存储在一个预设存储区域,则可以基于该预设存储区域中的候选测试用例中获取参考测试用例集合。其中,候选测试用例可以是指已交付的测试用例。
可选的,可以将预设存储区域中的候选测试用例作为参考测试用例,并添加到参考测试用例集合中,即可以直接从该预设存储区域获取候选测试用例作为参考测试用例即可。
可选的,预设存储区域中的候选测试用例的数量比较庞大,若获取所有的候选测试用例作为参考测试用例集合,在后续计算两个测试用例之间的相似度时,计算量可能比较大,从而影响目标测试用例的确定速度,进而使得新测试脚本的生成速度较慢。而为了加快新测试脚本的生成速度,可以从预设存储区域所包括的候选测试用例中进行筛选,以减少参考测试用例的数量,从而可以较少后续相似度的计算量,从而加快新测试脚本的生成速度。
可选的,预设存储区域中存储的候选测试用例可以具备对应的类型标识,该类型标识可以用于指示对应测试用例的用例类型,用例类型可以用来区分各个测试用例的用例特征,该用例特征可以利用测试用例所适用的测试环境或测试功能等来表征。例如,可用于同一测试环境的测试用例可以划分为一个用例类型;又如,可用于同一测试功能的测试用例可以划分为一个用例类型;也可以基于其他用例特征进行用例类型的划分,在本申请不一一举例。其中,类型标识可以是数字编号,比特值(位),或者其他信息,本申请不做限定。可以理解的是,同一测试环境或同一测试功能对应的测试用例是比较相似的,则测试用例对应的测试脚本也是比较相似的,则基于类型标识可以从大量的候选测试用例中初步筛选出与新测试用例相似的测试用例。
综上所述,可以利用新测试用例的类型标识和预设存储区域中各个候选测试用例的类型标识,从预设存储区域中筛选出参考测试用例集合。具体实现中,可以先获取新测试用例以及该新测试用例对应的类型标识;然后,可以将新测试用例对应的类型标识与预设存储区域中各个候选测试用例对应的类型标识进行匹配,从而可以将匹配到的类型标识对应的候选测试用例作为参考测试用例,并添加到参考测试用例集合中,以得到所需要的参考测试用例集合。其中,类型标识的匹配操作也就查看新测试用例的类型标识是否一致,如果某一候选测试用例与新测试用例的类型标识是一致的,则可以确定该候选测试用例与新测试用例的类型标识可以匹配到;相反的,如果某一候选测试用例与新测试用例的类型标识是不一致的,则可以确定该候选测试用例与新测试用例的类型标识不能匹配到。
可选的,预设存储区域中存储的候选测试用例可以依照用例特征进行区域存储。在具体实现中,可以将预设存储区域划分为多个预设存储子区域,其中,每一个预设存储子区域用于存储同一用例特征下的候选测试用例,则后续在获取新测试用例对应的参考测试用例集合时,可以根据新测试用例对应的用例特征从预设存储区域快速查找到所需要的参考测试用例。那么,在获取参考测试用例集合的具体实施方式可以是:首先,可以获取新测试用例的用例特征;然后,可以根据该用例特征从预设存储区域中查找目标预设存储子区域,该目标预设存储子区域存储有该用例特征下的候选测试用例;进一步,可以获取该目标预设存储子区域中的候选测试用例,并将获取到的候选测试用例作为参考测试用例。
S602,利用新测试用例所包括的一个或多个操作步骤生成新测试用例对应的新标识序列,并利用各个参考测试用例所包括的一个或多个操作步骤生成相应参考测试用例对应的参考标识序列。
其中,可将新测试用例对应的标识序列称之为新标识序列,将参考测试用例对应的标识序列称之为参考标识序列。新标识序列可以包括一个或多个标识,任一参考标识序列可以包括一个或多个标识,为方便后续描述,可以将新标识序列中的标识称之为新标识,将参考标识序列中的标识称之为参考标识。
可以理解的是,一个测试脚本的实现通常是依次调用一个或多个操作API,即要进行测试时所要调用的应用程序接口,此处的操作API可以理解为本申请提及的操作步骤。可选的,一个操作API下也可能会关联一个或多个业务规则,即一个操作步骤下也可以包括一个或多个业务规则。在一种可能的实现方式中,可以预先给每个操作API关联上标识(Identity Document,ID,身份标识号(可简称为标识)),每个业务规则也可以关联上标识,则可以预先设置操作步骤和操作标识的第一映射关系,以及业务规则和规则标识的第二映射关系。如表4表示的是操作步骤和操作标识的第一映射关系,表5表示的是业务规则和规则标识的第二映射关系:
表4:
表5:
业务规则 | 规则标识 |
业务规则A | 991 |
业务规则B | 992 |
业务规则C | 993 |
… | … |
需要说明的是,上述操作标识和规则标识仅是示例性举例,标识(操作标识和规则标识)可以是数字编号,比特值(位),或者其他信息,本申请不做具体限定。标识值本身没有业务含义,如在本申请中,可以是指特征对应的标识,特征可以理解为一种表示测试用例描述的方式,一个测试用例可由一个多个特征组成,例如,上述提及的操作步骤和业务规则均可以理解为特征;标识序列的长度是不确定的,如可以对应测试用例描述来看,每个测试用例中操作步骤和业务规则可以是不同的,也是不确定的,则对应的标识序列是不确定的;标识值的取值范围是比较大的,如可以是2的32次方,或其他范围。
通过上述可知,如果测试用例中仅包括操作步骤,则可以通过测试用例所包括的操作步骤来确定测试用例对应的标识序列。具体地,可以确定测试用例所包括的所有操作步骤;然后,可以基于操作步骤与操作标识之间的第一映射关系,获取新测试用例所包括的一个或多个操作步骤中各个操作步骤对应的操作标识,以基于各个操作步骤对应的操作标识确定对应的标识序列。例如,可以依照各个操作步骤的操作顺序依次排列对应的操作标识,以得到测试用例的标识序列。
可选的,如果任一操作步骤下还关联有业务规则,则可以基于操作步骤以及业务规则共同来确定测试用例对应的标识序列。具体地,可以确定测试用例所包括的所有操作步骤以及各个操作步骤所关联的业务规则,其中,一个操作步骤所关联的业务规则的数量可以是0个、或1个、或多个;然后,可以基于操作步骤与操作标识之间的第一映射关系,获取新测试用例所包括的一个或多个操作步骤中各个操作步骤对应的操作标识,并可以基于业务规则与规则标识之间的第二映射关系,获取操作步骤下关联的各个业务规则的规则标识;从而实现利用操作步骤对应的操作标识以及业务规则对应的规则标识确定对应的标识序列。例如,可以依照各个操作步骤的操作顺序以及操作步骤下各个业务规则的规则顺序依次排列对应的操作标识和规则标识,得到测试用例的标识序列。
其中,操作顺序可以是指在测试脚本执行时调用各个操作步骤的顺序,同理,规则顺序可以是指在测试脚本执行时调用各个业务规则的顺序。
其中,在本申请中所涉及到的新标识序列和参考标识序列的确定方式一致的,下述主要以确定新测试用例对应的新标识序列为例进行举例说明,新标识序列的确定过程可为如下描述:
首先,可以确定新测试用例所包括的一个或多个操作步骤;然后,可以基于操作步骤和操作标识的第一映射关系,确定各个操作步骤对应的操作标识,例如,假设某一操作步骤为操作步骤B,则根据表1所示的第一映射关系可知该操作步骤对应的操作标识为112。在确定各个操作步骤对应的操作标识之后,即可以根据各个操作步骤对应的操作标识的新标识序列。考虑到在测试脚本的实现中,是依次调用各个操作步骤来执行测试的,为了便于后续两个标识序列之间的比较,则可以按照某一组合规则将各个操作标识进行组合,以得到对应的标识序列,例如,在本申请中,该组合规则可以是指按照操作步骤的操作顺序来进行组合,如可以依照各个操作步骤的操作顺序依次排列对应的操作标识,得到新测试用例的新标识序列。
举例来说,假设新测试用例中包括操作步骤A、操作步骤B、操作步骤C,基于表1所示的第一映射关系可得对应的操作标识分别为111、112、113;各个操作步骤的操作顺序依次为操作步骤A、操作步骤B、操作步骤C,则该新测试用例的新标识序列为:[111,112,113]。
可选的,如果任一操作步骤下关联有一个或多个业务规则,则可以在基于操作步骤与操作标识之间的第一映射关系,确定各个操作步骤对应的操作标识之外,还可以进一步基于业务规则与规则标识之间的第二映射关系,确定操作步骤下关联的各个业务规则的规则标识;以依照各个操作步骤的操作顺序以及操作步骤下各个业务规则的规则顺序依次排列对应的操作标识和规则标识,得到新测试用例的新标识序列。
举例来说,针对如图7a所示的新测试用例,利用第一映射关系和第二映射关系确定该新测试用例中的各个操作步骤对应的操作标识和业务规则对应的规则标识可如图7a中所示的标识。例如,图7a中由701标识的虚线框中的标识表示的是操作标识为7684的操作步骤下业务规则所对应的规则标识,图中其他标识表示的是操作标识。其中,各个操作步骤的操作顺序和业务规则的规则顺序也就是对应文字在新测试用例中的排列顺序,则该新测试用例的新标识序列可以为:[7871,7684,r7158,r7011,r5908,r7064,r6727,r7127,r7012,7756,7860,7756]。
举例再说,针对如图7b所示的参考测试用例,利用第一映射关系和第二映射关系可以确定该参考测试用例对应的参考标识序列可以为:[7871,7684,r7158,r7011,r5908,r7064,r6727,r7127,r7012,7860,7756],其中,图7b中由702标记的标识是操作标识为7684的操作步骤下业务规则所对应的规则标识。
S603,针对参考测试用例集合中的任一参考测试用例,根据新标识序列和参考测试用例对应的参考标识序列,得到新测试用例和参考测试用例之间的相似度。
在一种实现方式中,标识序列中的标识对应测试用例中的操作步骤或业务规则,则标识序列之间的相似度越高,对应的测试用例的相似度也越高。因此,测试用例的相似性计算问题,可转换成任意两个标识序列的相似性计算问题。
在一种实现方式中,对新标识序列包括的新标识和参考标识序列包括的参考标识进行标识匹配,得到新标识序列和参考标识序列之间的差异标识,其中,差异标识可以是指两个标识序列之间所包含的不同的标识。
例如,假设新标识序列为:[1230,1231,1163,1033,1027,979,993,985,999,1017],一个参考标识序列为[1230,1231,1163,1033,1027,962,985,999,1017];可以看出,这两个标识序列中的所包含的不同的标识有979、993、962,则这两个标识序列之间的差异标识包括979、993、962。又如,如图7a和图7b中分别所展示的两个标识序列之间的差异标识是图7a中由703标记的标识。
在确定新标识序列与参考标识序列之间的差异标识之后,即可以根据差异标识确定新测试用例和参考测试用例之间的相似度。可选的,可以统计差异标识的标识数量,并利用标识数量获取新标识序列和所述参考标识序列之间的相似度。其中,差异标识的标识数量可以与相似度呈负相关,即两个标识序列之间的差异标识的标识数量越小,则该两个标识序列之间的相似度越大,对应的,两个标识序列之间的差异标识的标识数量越大,则该两个标识序列之间的相似度越小。
举例来说,参考标识序列集合包括参考标识序列1、参考标识序列2、参考标识序列3、参考标识序列4;新标识序列与各个参考标识序列之间的差异标识的数量分别为3、2、4、6;则新标识序列与各个参考标识序列之间的相似度从大到小的排列顺序为:参考标识序列2、参考标识序列1、参考标识序列3、参考标识序列4。
在一种实现方式中,在上述描述的得到差异标识之后,还可以基于差异标识进行进一步处理,以得到两个测试用例之间的相似度。则在具体实现中,可以对新标识序列包括的新标识和参考标识序列包括的参考标识进行匹配,以确定新标识序列和参考标识序列之间的差异标识;然后,再根据差异标识确定新测试用例和参考测试用例之间的标识距离,以根据标识距离确定新测试用例和参考测试用例之间的相似度。可选的,标识距离的确定方式可以为如下描述,可以对差异标识进行编辑操作,并统计将参考标识序列和新标识序列转化为同一标识序列所需要的编辑操作的操作次数,该编辑操作包括替换标识操作、删除标识操作以及新增标识操作中的一种或多种。其中,该操作次数可以指将参考标识序列转化为新标识序列的编辑操作的操作次数,或者,可以是指将参考标识序列转化为新标识序列的编辑操作的操作次数,这两种情况下的操作次数是一致。在得到操作次数之后,进而可以将操作次数作为新测试用例和参考测试用例之间的标识距离。
可选的,本申请中的标识距离可以参考Levenshtein距离(也称为编辑距离)的理解,同理,本申请中的编辑操作可以参考Levenshtein距离中编辑操作的理解。即可以采用Levenshtein距离作为标识序列的相似性量化算法。其中,Levenshtein距离是指两个字符串之间,由一个字符串转换为另一个字符串所需的最少编辑操作次数。例如,允许的编辑操作包含以下三种:
a)将一个字符替换成另一个字符;
b)插入一个字符;
c)删除一个字符;
例如,从字符串“kitten”修改为字符串“sitting”需要3次单字符编辑操作,如下:
sitten(k->s);
sittin(e->i);
sitting(_->g);
因此“kitten”和“sitting”的Levenshtein距离为3。
可以理解的是,Levenshtein距离一般用于计算两个字符串之间的相似度,但测试用例的标识序列并不是字符串。因此,若需要将Levenshtein距离应用在标识序列之间相似度的量化,可以将标识序列中所包括的标识类比成单个字符。
例如,假设新标识序列为:[1230,1231,1163,1033,1027,979,993,985,999,1017],一个参考标识序列为[1230,1231,1163,1033,1027,962,985,999,1017];为了确定这两个标识序列之间的相似度,等同于可以确定两个标识序列之间的编辑距离(即标识距离),而计算编辑距离(标识距离)的过程可以如下描述:
将新标识序列[1230,1231,1163,1033,1027,979,993,985,999,1017]修改为参考标识序列[1230,1231,1163,1033,1027,962,985,999,1017],所要经过的编辑过程如下:
A、将新标识序列中的979替换为参考标识序列中的962,则替换后的新标识序列为[1230,1231,1163,1033,1027,962,993,985,999,1017];
B、将替换后的新标识序列中的993删除,则删除后的新标识序列为[1230,1231,1163,1033,1027,962,985,999,1017]。
可以看出,经过上述两个编辑操作(替换标识操作和删除标识操作)之后,可以将新标识序列更新为参考标识序列,则操作次数为2,进一步可以确定新标识序列和参考标识序列之间的编辑距离(标识距离)为2。
可选的,标识距离可以与相似度呈负相关,即两个标识序列之间的标识距离越小,则该两个标识序列之间的相似度越大,对应的,两个标识序列之间的标识距离越大,则该两个标识序列之间的相似度越小。则在确定新标识序列与各个参考标识序列之间的标识距离之后,即可以根据各个标识距离确定新标识序列与各个参考标识序列之间的相似度。
举例来说,参考标识序列结合包括参考标识序列1、参考标识序列2、参考标识序列3、参考标识序列4;新标识序列与各个参考标识序列之间的编辑距离分别为6、2、3、4;则新标识序列与各个参考标识序列之间的相似度从大到小的排列顺序为:参考标识序列2、参考标识序列3、参考标识序列4、参考标识序列1。
在一种实现方式中,在进行相似度计算时,可以利用上述描述的两种测试用例相似度量化算法(与编辑距离相关的量化算法和与两序列差异标识数量相关的量化算法)中的任意一种;也可以分场景选取其中一种。例如,如果在进行相似度计算的过程中,所确定的差异标识存在对应的重要性标记,则可以考虑优先使用与两序列差异标识数量相关的量化算法。其中,该重要性标记可以预先标记在对应的操作步骤或业务规则上,则在确定测试用例对应的标记序列时,也可以将操作步骤或业务规则对应的标识上携带上重要性标识。重要性标记可以用于指示对应的操作步骤或业务规则在整个测试用例中占据比较重要的位置,例如,某一操作步骤在测试用例中是关键步骤,则可以将该操作步骤关联上重要性标记。
可选的,若所确定的差异标识存在对应的重要性标记,使用与两序列差异标识数量相关的量化算法来确定测试用例之间的相似度的具体实施方式可以是:针对新测试用例和一个参考测试用例而言,在利用上述所描述的方式确定对应的新标识序列和参考标识序列之间的所有差异标识之后,若检测到具有重要性标记的差异标识,则可以根据该重要性标记确定该差异标识对应的第一数量,然后再统计其他不具有重要性标记的差异标识的第二数量;进一步可以根据第一数量和第二数量确定差异标识的数量,例如,差异标识的数量可以是第一数量与第二数量之和。后续则可以根据差异标识的数量确定新测试用例与参考测试用例之间的相似度。
可选的,根据该重要性标记确定该差异标识对应的第一数量的具体实施方式可以是:获取该重要性标记对应的加权系数,将该加权系数与具有重要性标记的差异标识的数量之间的乘积作为第一数量。该加权系数可以是一个固定值,如可以是2、3等数值。若重要性标记也具有不同程度的划分,则各个重要性标记可以存在对应的加权系数,且重要性标记可以与加权系数呈正相关,例如,某一重要性标记对应的重要程度越高,则对应的加权系数也就越大。例如,假设存在一个具有重要性标记的差异标识,且加权系数为2,则第一数量可以是2×1=2。
举例来说,如果两个标识序列之间的差异标识包括差异标识1、差异标识2、差异标识3,且差异标识1具有重要性标记,该重要性标记对应的加权系数为2。则第一数量为2×1=2,第二数量为2(即差异标识2和差异标识3对应的数量),可以第一数量与第二数量的和可以作为差异标识的数量,即差异标识的数量为4。
可以看出,相比于与编辑距离相关的量化算法,利用与两序列差异标识数量相关的量化算法可以进一步考虑两个测试用例中具有差异的操作步骤或业务规则的重要程度,引入强度区分,可以更加有效的表现两个测试用例之间的差异,从而可以有效提高两个测试用例之间相似度的准确性。
S604,根据新测试用例和各个参考测试用例之间的相似度从参考测试用例集合中确定目标测试用例。
在一种实现方式中,可以从新测试用例和各个参考测试用例之间的相似度中选择出最大相似度,并将该最大相似度对应的参考测试用例作为目标测试用例。
S605,获取目标测试用例对应的目标测试脚本以及目标测试脚本的目标脚本执行序列,并利用目标脚本执行序列中各个执行子序列对应的操作实现代码,生成新测试用例对应的新测试脚本。
其中,测试脚本可以是指在进行测试时计算机设备所执行的代码语句;目标脚本执行序列可以包括一个或多个执行子序列。
在一种实现方式中,利用该目标脚本执行序列中各个执行子序列对应的操作实现代码,生成新测试脚本的具体实施方式可以是:首先,可生成新测试用例对应的脚本执行序列,例如,可以基于新测试用例所包括的操作步骤生成脚本执行序列。其中,脚本执行序列可以包括一个或多个执行子序列,一个执行子序列对应新测试用例中的一个操作步骤,执行子序列可以是指对操作步骤的代码描述。可选的,基于新测试用例所包括的操作步骤生成脚本执行序列的具体实现可以是:获取新测试用例所包括的操作步骤中每个操作步骤的执行子序列;然后,依照各个操作步骤在新测试用例的步骤顺序对各个执行子序列进行依次排列,从而得到脚本执行序列。
在得到脚本执行序列之后,可以根据目标脚本执行序列和脚本执行序列生成新测试用例对应的新测试脚本。例如,可以将脚本执行序列中的执行子序列与目标脚本执行序列中各个执行子序列进行序列匹配,并利用序列匹配结果和目标脚本执行序列中各个执行子序列对应的操作实现代码,生成新测试用例对应的新测试脚本。
如果序列匹配结果指示脚本执行序列中存在与目标测试脚本中相同的执行子序列,则可以从目标测试脚本中复制相同的执行子序列对应的操作实现代码;如果序列匹配结果指示脚本执行序列中还存在与目标测试脚本中不相同的执行子序列,则可以从操作实现代码库中获取不相同的执行子序列对应的操作实现代码。从而实现根据新测试用例的各个执行子序列对应的操作实现代码,生成新测试用例对应的新测试脚本中的测试脚本代码。
举例来说,如果目标测试脚本对应的目标脚本执行序列中的执行子序列包括:序列A、序列B、序列C;新测试脚本对应的脚本执行序列中的执行子序列包括:序列A、序列B、序列C。目标脚本执行序列和脚本执行序列存在完全相同的执行子序列,则可以将目标脚本执行序列中执行子序列对应的操作实现代码进行复制,作为新测试脚本对应的脚本执行序列中执行子序列的操作实现代码,则可以直接将复制的操作实现代码作为新测试脚本。
举例再说,如果目标测试脚本对应的目标脚本执行序列中的执行子序列包括:序列A、序列B、序列C;新测试脚本对应的脚本执行序列中的执行子序列包括:序列A、序列B。目标脚本执行序列和脚本执行序列存在相同的执行子序列包括序列A和序列B,则可以将目标脚本执行序列中序列A和序列B分别对应的操作实现代码进行复制,作为新测试脚本对应的脚本执行序列中执行子序列的操作实现代码,从而得到新测试脚本。
举例又说,如果目标测试脚本对应的目标脚本执行序列中的执行子序列包括:序列A、序列B;新测试脚本对应的脚本执行序列中的执行子序列包括:序列A、序列B、序列C。目标脚本执行序列和脚本执行序列存在相同的执行子序列包括序列A和序列B,不相同的执行子序列包括序列C;则可以将目标脚本执行序列中序列A和序列B分别对应的操作实现代码进行复制,并从操作实现代码库中获取序列C对应的操作实现代码。从而可以根据序列A、序列B、序列C分别对应的操作实现代码得到新测试脚本。
其中,操作实现代码库中可以存储有大量操作API(或者说执行子序列)对应的操作实现代码,其中,执行子序列与对应的操作实现代码关联存储在操作实现代码库中。
可选的,操作实现代码库中的操作实现代码可以依照用例特征进行区域存储。在具体实现中,可以将操作实现代码库划分为多个操作实现代码子库,其中,每一个操作实现代码子库可以用于存储同一用例特征下的操作实现代码,该用例特征可以包括测试环境和测试功能的一种或多种,或其他用例特征,在此处不一一举例。则后续在获取不相同的执行子序列对应的操作实现代码时,可以根据新测试用例对应的用例特征从操作实现代码库中快速查找到所需要的操作实现代码。
那么,获取不相同的执行子序列对应的操作实现代码的具体实施方式可以是:首先,可以获取新测试用例的用例特征;然后,可以根据该用例特征从操作实现代码库中查找目标操作实现代码子库,该操作实现代码库是依照不同用例特征划分为多个操作实现代码子库的数据库,而目标操作实现代码子库则是指该用例特征下所对应的操作实现代码;进一步,可以从该目标操作实现代码子库中获取不相同的执行子序列对应的操作实现代码。
可以看出,通过在操作实现代码库中实现操作实现代码的区域存储,在查找不相同的执行子序列对应的操作实现代码时,不需要从一个数据量庞大的操作实现代码库中一一查找,而可以从一个数据量相对较小的操作实现代码子库中查找,从而有利于操作实现代码的快速查找,进而加快脚本生成速度。
可以理解的是,一个完整的测试脚本通常除了可以包括测试脚本代码之外,还可以包括测试数据以及脚本断言。其中,测试数据可以是指在测试过程中测试脚本所依赖的数据;脚本断言可以用于检查测试中得到的响应数据等是否符合预期,以保证测试过程中的数据交互与预期一致。为方便后续描述,可以将新测试脚本对应的测试数据以及脚本断言分别称之为新测试数据、以及新脚本断言。
下述对新测试数据、以及新脚本断言的生成进行相关描述。
在一种实现方式中,可以根据目标测试脚本对应的测试数据(可称之为目标测试数据)生成新测试数据。具体实现中,可先获取目标测试脚本对应的目标测试数据,以将目标测试脚本对应的目标测试数据作为新测试脚本对应的初始测试数据。其中,目标测试数据可以包括:目标测试用例所包含的各个业务规则对应的测试数据。在确定初始测试数据之后,可以基于新测试用例的业务规则与目标测试用例的业务规则来生成新测试脚本的新测试数据。例如,可以将新测试用例的业务规则与目标测试用例的业务规则进行规则匹配,以根据规则匹配结果和初始测试数据生成新测试脚本的新测试数据。
可选的,根据规则匹配结果和初始测试数据生成新测试脚本中的新测试数据的具体实施方式可以是:如果规则匹配结果指示初始测试数据中存在第一业务规则对应的测试数据,则可以从初始测试数据中将第一业务规则对应的测试数据进行删除。其中,该第一业务规则可以是指:不存在新测试用例中,且存在目标测试用例中的业务规则。而如果规则匹配结果指示初始测试数据中不存在第二业务规则对应的测试数据,则可以从测试数据库中获取第二业务规则对应的测试数据,并将获取到的测试数据添加到所初始测试数据中。其中,第二业务规则可以是指:存在新测试用例中,且不存在目标测试用例中的业务规则。进而可以根据新测试用例所包含的各个业务规则对应的测试数据确定新测试脚本中的新测试数据。
其中,测试数据库中可以存储有大量业务规则对应的测试数据,其中,业务规则与对应的测试数据关联存储在测试数据库中。
可选的,从测试数据库中获取第二业务规则对应的测试数据的实现方式可以是:直接利用第二业务规则从测试数据库中查找对应的测试数据,并将查找到的测试数据作为第二业务规则对应的测试数据。
可选的,测试数据库中的测试数据可以依照用例特征进行区域存储,以便于可以快速从测试数据库中查找到所需要的测试数据。其中,在测试数据库中对测试数据进行区域存储的情况下获取测试数据的具体实施方式,可以参考上述在操作实现代码库中对操作实现代码进行区域存储的情况下获取操作实现代码的具体实施方式,在此处不再赘述。
在一种实现方式中,可以从目标测试脚本中拷贝对应的脚本断言作为新脚本断言。
本申请实施例中,可以获取新测试用例以及参考测试用例集合,并进一步确定新测试用例对应的新标识序列以及参考测试用例集合中各个参考测试用例对应的参考标识序列;然后,可以针对参考测试用例集合中的任一参考测试用例,根据新标识序列和参考测试用例对应的参考标识序列,确定新测试用例和参考测试用例之间的相似度。以根据新测试用例和各个参考测试用例之间的相似度从参考测试用例集合中确定目标测试用例,从而可以利用目标测试用例对应的目标测试脚本生成新测试用例对应的新测试脚本。通过实施上述方法,可以基于测试用例之间的相似性,找出所需要的已建设的测试用例,并利用已建设的测试用例对应的测试脚本,自动为未建设的测试用例生成对应的测试脚本,可以提高测试脚本的生成的智能化,也可以提高脚本的生成效率;并且,可将两个测试用例之间的相似度计算问题,转换成两个标识序列的相似性计算问题,可以将较为复杂的文本相似度问题转化为较为简单的标识序列的相似度问题,从而可以简化相似度计算,以有效提高相似度计算的速度,从而可以提高脚本生成效率;新测试脚本可以基于已交付的测试脚本进行复用,相当于复用了有效的调试经验,则可以在一定程度保证了新测试脚本的质量。
在一种实现方式中,本申请中的测试用例的测试脚本的生成也可以通过模型来实现。例如,可以利用利用大量已建设的测试用例来训练脚本生成模型,以使得该脚本生成模型具有自动生成脚本的功能,则可以在获取到新测试用例后,直接将该新测试用例输入脚本生成模型中,以得到一个新测试脚本。
上面介绍了本申请实施例的方法,下面介绍本申请实施例的装置。
参见图8,图8是本申请实施例提供的一种测试脚本生成装置的组成结构示意图,上述测试脚本生成装置可以是运行于计算机设备中的一个计算机程序(包括程序代码);该测试脚本生成装置可以用于执行本申请实施例提供的测试脚本生成方法中的相应步骤。例如,该测试脚本生成装置80包括:
获取单元801,用于获取新测试用例以及参考测试用例集合,该参考测试用例集合中包括一个或多个参考测试用例;
计算单元802,用于分别计算该新测试用例和各个参考测试用例之间的相似度;
确定单元803,用于根据该新测试用例和各个参考测试用例之间的相似度从该参考测试用例集合中确定目标测试用例;
生成单元804,用于获取该目标测试用例对应的目标测试脚本以及该目标测试脚本的目标脚本执行序列,并利用该目标脚本执行序列中各个执行子序列对应的操作实现代码,生成该新测试用例对应的新测试脚本;该目标脚本执行序列包括一个或多个执行子序列。
在一种实现方式中,该计算单元802,具体用于:
利用该新测试用例所包括的一个或多个操作步骤生成该新测试用例对应的新标识序列,并利用各个参考测试用例所包括的一个或多个操作步骤生成相应参考测试用例对应的参考标识序列;该新标识序列包括一个或多个新标识,任一该参考标识序列包括一个或多个参考标识;
针对该参考测试用例集合中的任一参考测试用例,根据该新标识序列和该参考测试用例对应的参考标识序列,得到该新测试用例和该参考测试用例之间的相似度。
在一种实现方式中,该计算单元802,具体用于:
基于操作步骤与操作标识之间的第一映射关系,获取该新测试用例所包括的一个或多个操作步骤中各个操作步骤对应的操作标识;
依照各个操作步骤的操作顺序依次排列对应的操作标识,生成该新测试用例的新标识序列。
在一种实现方式中,该计算单元802,具体用于:
若任一操作步骤下关联有一个或多个业务规则,则基于业务规则与规则标识之间的第二映射关系,获取该操作步骤下关联的各个业务规则的规则标识;
依照各个操作步骤的操作顺序以及该操作步骤下各个业务规则的规则顺序依次排列对应的操作标识和规则标识,得到该新测试用例的新标识序列。
在一种实现方式中,该计算单元802,具体用于:
对该新标识序列包括的新标识和该参考标识序列包括的参考标识进行标识匹配,得到该新标识序列和该参考标识序列之间的差异标识;
对该差异标识进行编辑操作,并统计将该参考标识序列转化为该新标识序列的编辑操作的操作次数;该编辑操作包括替换标识操作、删除标识操作以及新增标识操作中的一种或多种;
将该操作次数作为该新测试用例和该参考测试用例之间的标识距离,并利用该标识距离获取该新测试用例和该参考测试用例之间的相似度;该操作次数和该相似度呈负相关。
在一种实现方式中,该计算单元802,具体用于:
对该新标识序列包括的新标识和该参考标识序列包括的参考标识进行匹配,得到该新标识序列和该参考标识序列之间的差异标识;
统计该差异标识的标识数量,并利用该标识数量获取该新标识序列和该参考标识序列之间的相似度;该标识距离和该相似度呈负相关。
在一种实现方式中,该生成单元804,具体用于:
基于该新测试用例所包括的操作步骤生成脚本执行序列;该脚本执行序列包括一个或多个执行子序列,一个执行子序列对应一个操作步骤;
将该脚本执行序列中的执行子序列与该目标脚本执行序列中各个执行子序列进行序列匹配,并利用序列匹配结果和该目标脚本执行序列中各个执行子序列对应的操作实现代码,生成该新测试用例对应的新测试脚本。
在一种实现方式中,该生成单元804,具体用于:
若序列匹配结果指示该脚本执行序列中存在与该目标测试脚本中相同的执行子序列,则从该目标测试脚本中复制该相同的执行子序列对应的操作实现代码;
若序列匹配结果指示该脚本执行序列中存在与该目标测试脚本中不相同的执行子序列,则从操作实现代码库中获取该不相同的执行子序列对应的操作实现代码;
根据该新测试用例的各个执行子序列对应的操作实现代码,生成该新测试用例对应的新测试脚本。
在一种实现方式中,该生成单元804,还用于:
获取该目标测试脚本对应的目标测试数据,将该目标测试脚本对应的目标测试数据作为该新测试脚本对应的初始测试数据,该目标测试数据包括:该目标测试用例所包含的各个业务规则对应的测试数据;
将该新测试用例的业务规则与目标测试用例的业务规则进行规则匹配,并根据规则匹配结果和该初始测试数据生成该新测试脚本中的新测试数据。
在一种实现方式中,该生成单元804,具体用于:
若规则匹配结果指示该初始测试数据中存在第一业务规则对应的测试数据,则从该初始测试数据中将该第一业务规则对应的测试数据进行删除;该第一业务规则是指:不存在该新测试用例中,且存在该目标测试用例中的业务规则;
若规则匹配结果指示该初始测试数据中不存在第二业务规则对应的测试数据,则从测试数据库中获取该第二业务规则对应的测试数据;该第二业务规则是指:存在该新测试用例中,且不存在该目标测试用例中的业务规则;
根据该新测试用例所包含的各个业务规则对应的测试数据确定该新测试脚本的新测试数据。
在一种实现方式中,该生成单元804,具体用于:
获取该新测试用例的用例特征,该用例特征包括测试环境和测试功能的一种或多种;
根据该用例特征从操作实现代码库中查找目标操作实现代码子库;该操作实现代码库依照不同用例特征划分为多个操作实现代码子库;
从该目标操作实现代码子库中获取该不相同的执行子序列对应的操作实现代码。
在一种实现方式中,该生成单元804,具体用于:
获取新测试用例以及该测试用例的类型标识;该类型标识用于指示该新测试用例的用例类型;
将新测试用例对应的类型标识与预设存储区域中所包括的候选测试用例对应的类型标识进行匹配,将匹配到的类型标识对应的候选测试用例作为参考测试用例,并添加到参考测试用例集合中;该预设存储区域存储有一个或多个候选测试用例,各个候选测试用例携带有对应的类型标识。
需要说明的是,图8对应的实施例中未提及的内容可参见方法实施例的描述,这里不再赘述。
本申请实施例中,可以获取新测试用例以及包括一个或多个参考测试用例的参考测试用例集合;然后分别计算新测试用例和各个参考测试用例之间的相似度,以根据新测试用例和各个参考测试用例之间的相似度从参考测试用例集合中确定目标测试用例;进一步的,可以获取目标测试用例对应的目标测试脚本以及目标测试脚本的目标脚本执行序列,并利用目标脚本执行序列中各个执行子序列对应的操作实现代码,生成新测试用例对应的新测试脚本。通过实施上述方法,可以基于测试用例之间的相似性,利用已建设的测试用例对应的测试脚本,自动为待建设的测试用例(即新测试用例)生成对应的测试脚本,以提高测试脚本的生成效率,也可以大大减小因人工操作或调试所增加的成本(如人力成本、时间成本、维护成本等);新测试脚本可以基于已交付的测试脚本进行复用,相当于复用了有效的调试经验,则在一定程度保证了新测试脚本的质量。
参见图9,图9是本申请实施例提供的一种计算机设备的组成结构示意图。如图9所示,上述计算机设备90可以包括:处理器901、存储器902以及网络接口903。处理器901连接到存储器902和网络接口903,例如处理器901可以通过总线连接到存储器902和网络接口903。
处理器901被配置为支持测试脚本生成装置执行上述的测试脚本生成方法中相应的功能。该处理器901可以是中央处理器(Central Processing Unit,CPU),网络处理器(Network Processor,NP),硬件芯片或者其任意组合。上述硬件芯片可以是专用集成电路(Application-Specific Integrated Circuit,ASIC),可编程逻辑器件(ProgrammableLogic Device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(ComplexProgrammable Logic Device,CPLD),现场可编程逻辑门阵列(Field-Programmable GateArray,FPGA),通用阵列逻辑(Generic Array Logic,GAL)或其任意组合。
存储器902存储器用于存储程序代码等。存储器902可以包括易失性存储器(Volatile Memory,VM),例如随机存取存储器(Random Access Memory,RAM);存储器902也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如只读存储器(Read-OnlyMemory,ROM),快闪存储器(flash memory),硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);存储器902还可以包括上述种类的存储器的组合。本申请实施例中,存储器902用于存储网站安全检测的程序、交互流量数据等。
网络接口903用于提供网络通讯功能。
处理器901可以调用该程序代码以执行以下操作:
获取新测试用例以及参考测试用例集合,该参考测试用例集合中包括一个或多个参考测试用例;
分别计算该新测试用例和各个参考测试用例之间的相似度;
根据该新测试用例和各个参考测试用例之间的相似度从该参考测试用例集合中确定目标测试用例;
获取该目标测试用例对应的目标测试脚本以及该目标测试脚本的目标脚本执行序列,并利用该目标脚本执行序列中各个执行子序列对应的操作实现代码,生成该新测试用例对应的新测试脚本;该目标脚本执行序列包括一个或多个执行子序列。
在一种实现方式中,该处理器901,具体用于:
利用该新测试用例所包括的一个或多个操作步骤生成该新测试用例对应的新标识序列,并利用各个参考测试用例所包括的一个或多个操作步骤生成相应参考测试用例对应的参考标识序列;该新标识序列包括一个或多个新标识,任一该参考标识序列包括一个或多个参考标识;
针对该参考测试用例集合中的任一参考测试用例,根据该新标识序列和该参考测试用例对应的参考标识序列,得到该新测试用例和该参考测试用例之间的相似度。
在一种实现方式中,该处理器901,具体用于:
基于操作步骤与操作标识之间的第一映射关系,获取该新测试用例所包括的一个或多个操作步骤中各个操作步骤对应的操作标识;
依照各个操作步骤的操作顺序依次排列对应的操作标识,生成该新测试用例的新标识序列。
在一种实现方式中,该处理器901,具体用于:
若任一操作步骤下关联有一个或多个业务规则,则基于业务规则与规则标识之间的第二映射关系,获取该操作步骤下关联的各个业务规则的规则标识;
依照各个操作步骤的操作顺序以及该操作步骤下各个业务规则的规则顺序依次排列对应的操作标识和规则标识,得到该新测试用例的新标识序列。
在一种实现方式中,该处理器901,具体用于:
对该新标识序列包括的新标识和该参考标识序列包括的参考标识进行标识匹配,得到该新标识序列和该参考标识序列之间的差异标识;
对该差异标识进行编辑操作,并统计将该参考标识序列转化为该新标识序列的编辑操作的操作次数;该编辑操作包括替换标识操作、删除标识操作以及新增标识操作中的一种或多种;
将该操作次数作为该新测试用例和该参考测试用例之间的标识距离,并利用该标识距离获取该新测试用例和该参考测试用例之间的相似度;该操作次数和该相似度呈负相关。
在一种实现方式中,该处理器901,具体用于:
对该新标识序列包括的新标识和该参考标识序列包括的参考标识进行匹配,得到该新标识序列和该参考标识序列之间的差异标识;
统计该差异标识的标识数量,并利用该标识数量获取该新标识序列和该参考标识序列之间的相似度;该标识距离和该相似度呈负相关。
在一种实现方式中,该处理器901,具体用于:
基于该新测试用例所包括的操作步骤生成脚本执行序列;该脚本执行序列包括一个或多个执行子序列,一个执行子序列对应一个操作步骤;
将该脚本执行序列中的执行子序列与该目标脚本执行序列中各个执行子序列进行序列匹配,并利用序列匹配结果和该目标脚本执行序列中各个执行子序列对应的操作实现代码,生成该新测试用例对应的新测试脚本。
在一种实现方式中,该处理器901,具体用于:
若序列匹配结果指示该脚本执行序列中存在与该目标测试脚本中相同的执行子序列,则从该目标测试脚本中复制该相同的执行子序列对应的操作实现代码;
若序列匹配结果指示该脚本执行序列中存在与该目标测试脚本中不相同的执行子序列,则从操作实现代码库中获取该不相同的执行子序列对应的操作实现代码;
根据该新测试用例的各个执行子序列对应的操作实现代码,生成该新测试用例对应的新测试脚本。
在一种实现方式中,该处理器901,还用于:
获取该目标测试脚本对应的目标测试数据,将该目标测试脚本对应的目标测试数据作为该新测试脚本对应的初始测试数据,该目标测试数据包括:该目标测试用例所包含的各个业务规则对应的测试数据;
将该新测试用例的业务规则与目标测试用例的业务规则进行规则匹配,并根据规则匹配结果和该初始测试数据生成该新测试脚本中的新测试数据。
在一种实现方式中,该处理器901,具体用于:
若规则匹配结果指示该初始测试数据中存在第一业务规则对应的测试数据,则从该初始测试数据中将该第一业务规则对应的测试数据进行删除;该第一业务规则是指:不存在该新测试用例中,且存在该目标测试用例中的业务规则;
若规则匹配结果指示该初始测试数据中不存在第二业务规则对应的测试数据,则从测试数据库中获取该第二业务规则对应的测试数据;该第二业务规则是指:存在该新测试用例中,且不存在该目标测试用例中的业务规则;
根据该新测试用例所包含的各个业务规则对应的测试数据确定该新测试脚本的新测试数据。
在一种实现方式中,该处理器901,具体用于:
获取该新测试用例的用例特征,该用例特征包括测试环境和测试功能的一种或多种;
根据该用例特征从操作实现代码库中查找目标操作实现代码子库;该操作实现代码库依照不同用例特征划分为多个操作实现代码子库;
从该目标操作实现代码子库中获取该不相同的执行子序列对应的操作实现代码。
在一种实现方式中,该处理器901,具体用于:
获取新测试用例以及该测试用例的类型标识;该类型标识用于指示该新测试用例的用例类型;
将新测试用例对应的类型标识与预设存储区域中所包括的候选测试用例对应的类型标识进行匹配,将匹配到的类型标识对应的候选测试用例作为参考测试用例,并添加到参考测试用例集合中;该预设存储区域存储有一个或多个候选测试用例,各个候选测试用例携带有对应的类型标识。
应当理解,本申请实施例中所描述的计算机设备90可执行前文图2和图6所对应实施例中对上述测试脚本生成方法的描述,也可执行前文图8所对应实施例中对上述测试脚本生成装置的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被计算机执行时使该计算机执行如前述实施例的方法,该计算机可以为上述提到的计算机设备的一部分。例如为上述的处理器901。作为示例,程序指令可被部署在一个计算机设备上执行,或者被部署位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行,分布在多个地点且通过通信网络互连的多个计算机设备可以组成区块链网络。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令被处理器执行时可实现上述方法的部分或全部步骤。可选的,该计算机指令存储在计算机可读存储介质中。例如,计算机设备的处理器可从计算机可读存储介质读取该计算机指令,处理器可执行该计算机指令,使得该计算机设备执行上述各方法的实施例中所执行的步骤。
本领域普通技术人员可以理解实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,该的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (15)
1.一种测试脚本生成方法,其特征在于,包括:
获取新测试用例以及参考测试用例集合,所述参考测试用例集合中包括一个或多个参考测试用例;
分别计算所述新测试用例和各个参考测试用例之间的相似度;
根据所述新测试用例和各个参考测试用例之间的相似度从所述参考测试用例集合中确定目标测试用例;
获取所述目标测试用例对应的目标测试脚本以及所述目标测试脚本的目标脚本执行序列,并利用所述目标脚本执行序列中各个执行子序列对应的操作实现代码,生成所述新测试用例对应的新测试脚本;所述目标脚本执行序列包括一个或多个执行子序列。
2.根据权利要求1所述的方法,其特征在于,所述分别计算所述新测试用例和各个参考测试用例之间的相似度,包括:
利用所述新测试用例所包括的一个或多个操作步骤生成所述新测试用例对应的新标识序列,并利用各个参考测试用例所包括的一个或多个操作步骤生成相应参考测试用例对应的参考标识序列;所述新标识序列包括一个或多个新标识,任一所述参考标识序列包括一个或多个参考标识;
针对所述参考测试用例集合中的任一参考测试用例,根据所述新标识序列和所述参考测试用例对应的参考标识序列,得到所述新测试用例和所述参考测试用例之间的相似度。
3.根据权利要求2所述的方法,其特征在于,所述利用所述新测试用例所包括的一个或多个操作步骤生成所述新测试用例对应的新标识序列,包括:
基于操作步骤与操作标识之间的第一映射关系,获取所述新测试用例所包括的一个或多个操作步骤中各个操作步骤对应的操作标识;
依照各个操作步骤的操作顺序依次排列对应的操作标识,生成所述新测试用例的新标识序列。
4.根据权利要求3所述的方法,其特征在于,所述依照各个操作步骤的操作顺序依次排列对应的操作标识,得到所述新测试用例的新标识序列,包括:
若任一操作步骤下关联有一个或多个业务规则,则基于业务规则与规则标识之间的第二映射关系,获取所述操作步骤下关联的各个业务规则的规则标识;
依照各个操作步骤的操作顺序以及所述操作步骤下各个业务规则的规则顺序依次排列对应的操作标识和规则标识,得到所述新测试用例的新标识序列。
5.根据权利要求2所述的方法,其特征在于,所述根据所述新标识序列和所述参考测试用例对应的参考标识序列,得到所述新测试用例和所述参考测试用例之间的相似度,包括:
对所述新标识序列包括的新标识和所述参考标识序列包括的参考标识进行标识匹配,得到所述新标识序列和所述参考标识序列之间的差异标识;
对所述差异标识进行编辑操作,并统计将所述参考标识序列转化为所述新标识序列的编辑操作的操作次数;所述编辑操作包括替换标识操作、删除标识操作以及新增标识操作中的一种或多种;
将所述操作次数作为所述新测试用例和所述参考测试用例之间的标识距离,并利用所述标识距离获取所述新测试用例和所述参考测试用例之间的相似度;所述操作次数和所述相似度呈负相关。
6.根据权利要求2所述的方法,其特征在于,所述对所述新标识序列和所述参考测试用例对应的参考标识序列进行序列匹配,确定所述新测试用例和所述参考测试用例之间的相似度,包括:
对所述新标识序列包括的新标识和所述参考标识序列包括的参考标识进行匹配,得到所述新标识序列和所述参考标识序列之间的差异标识;
统计所述差异标识的标识数量,并利用所述标识数量获取所述新标识序列和所述参考标识序列之间的相似度;所述标识距离和所述相似度呈负相关。
7.根据权利要求1所述的方法,其特征在于,所述利用所述目标脚本执行序列中各个执行子序列对应的操作实现代码,生成所述新测试用例对应的新测试脚本,包括:
基于所述新测试用例所包括的操作步骤生成脚本执行序列;所述脚本执行序列包括一个或多个执行子序列,一个执行子序列对应一个操作步骤;
将所述脚本执行序列中的执行子序列与所述目标脚本执行序列中各个执行子序列进行序列匹配,并利用序列匹配结果和所述目标脚本执行序列中各个执行子序列对应的操作实现代码,生成所述新测试用例对应的新测试脚本。
8.根据权利要求7所述的方法,其特征在于,所述利用序列匹配结果和所述目标脚本执行序列中各个执行子序列对应的操作实现代码,生成所述新测试用例对应的新测试脚本,包括:
若序列匹配结果指示所述脚本执行序列中存在与所述目标测试脚本中相同的执行子序列,则从所述目标测试脚本中复制所述相同的执行子序列对应的操作实现代码;
若序列匹配结果指示所述脚本执行序列中存在与所述目标测试脚本中不相同的执行子序列,则从操作实现代码库中获取所述不相同的执行子序列对应的操作实现代码;
根据所述新测试用例的各个执行子序列对应的操作实现代码,生成所述新测试用例对应的新测试脚本。
9.根据权利要求1所述的方法,其特征在于,还包括:
获取所述目标测试脚本对应的目标测试数据,将所述目标测试脚本对应的目标测试数据作为所述新测试脚本对应的初始测试数据,所述目标测试数据包括:所述目标测试用例所包含的各个业务规则对应的测试数据;
将所述新测试用例的业务规则与目标测试用例的业务规则进行规则匹配,并根据规则匹配结果和所述初始测试数据生成所述新测试脚本中的新测试数据。
10.根据权利要求9所述的方法,其特征在于,所述根据规则匹配结果和所述初始测试数据生成所述新测试脚本中的新测试数据,包括:
若规则匹配结果指示所述初始测试数据中存在第一业务规则对应的测试数据,则从所述初始测试数据中将所述第一业务规则对应的测试数据进行删除;所述第一业务规则是指:不存在所述新测试用例中,且存在所述目标测试用例中的业务规则;
若规则匹配结果指示所述初始测试数据中不存在第二业务规则对应的测试数据,则从测试数据库中获取所述第二业务规则对应的测试数据;所述第二业务规则是指:存在所述新测试用例中,且不存在所述目标测试用例中的业务规则;
根据所述新测试用例所包含的各个业务规则对应的测试数据确定所述新测试脚本的新测试数据。
11.根据权利要求8所述的方法,其特征在于,所述从操作实现代码库中获取所述不相同的执行子序列对应的操作实现代码,包括:
获取所述新测试用例的用例特征,所述用例特征包括测试环境和测试功能的一种或多种;
根据所述用例特征从操作实现代码库中查找目标操作实现代码子库;所述操作实现代码库依照不同用例特征划分为多个操作实现代码子库;
从所述目标操作实现代码子库中获取所述不相同的执行子序列对应的操作实现代码。
12.根据权利要求1所述的方法,其特征在于,所述获取新测试用例以及参考测试用例集合,包括:
获取新测试用例以及所述测试用例的类型标识;所述类型标识用于指示所述新测试用例的用例类型;
将新测试用例对应的类型标识与预设存储区域中所包括的候选测试用例对应的类型标识进行匹配,将匹配到的类型标识对应的候选测试用例作为参考测试用例,并添加到参考测试用例集合中;所述预设存储区域存储有一个或多个候选测试用例,各个候选测试用例携带有对应的类型标识。
13.一种测试脚本生成装置,其特征在于,包括:
获取单元,用于获取新测试用例以及参考测试用例集合,所述参考测试用例集合中包括一个或多个参考测试用例;
计算单元,用于分别计算所述新测试用例和各个参考测试用例之间的相似度;
确定单元,用于根据所述新测试用例和各个参考测试用例之间的相似度从所述参考测试用例集合中确定目标测试用例;
生成单元,用于获取所述目标测试用例对应的目标测试脚本以及所述目标测试脚本的目标脚本执行序列,并利用所述目标脚本执行序列中各个执行子序列对应的操作实现代码,生成所述新测试用例对应的新测试脚本;所述目标脚本执行序列包括一个或多个执行子序列。
14.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;
所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供数据通信功能,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以使得所述计算机设备执行权利要求1-12任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1-12任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210353118.7A CN116955120A (zh) | 2022-04-02 | 2022-04-02 | 测试脚本生成方法、装置、计算机设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210353118.7A CN116955120A (zh) | 2022-04-02 | 2022-04-02 | 测试脚本生成方法、装置、计算机设备以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116955120A true CN116955120A (zh) | 2023-10-27 |
Family
ID=88458855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210353118.7A Pending CN116955120A (zh) | 2022-04-02 | 2022-04-02 | 测试脚本生成方法、装置、计算机设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116955120A (zh) |
-
2022
- 2022-04-02 CN CN202210353118.7A patent/CN116955120A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108459964B (zh) | 测试用例选择方法、装置、设备以及计算机可读存储介质 | |
CN111090788B (zh) | json文件的比对方法、装置、存储介质及计算机设备 | |
CN111563051B (zh) | 基于爬虫的数据核验方法、装置、计算机设备及存储介质 | |
CN112100071B (zh) | 测试用例生成方法、装置、计算机设备和存储介质 | |
CN108874661B (zh) | 测试映射关系库生成方法、装置、计算机设备和存储介质 | |
CN110321284B (zh) | 测试数据录入方法、装置、计算机设备和存储介质 | |
CN110046155B (zh) | 特征数据库的更新、数据特征的确定方法、装置及设备 | |
CN110362479B (zh) | 系统升级测试方法和系统 | |
CN108415998B (zh) | 应用依赖关系更新方法、终端、设备及存储介质 | |
CN112328499A (zh) | 一种测试数据生成方法、装置、设备及介质 | |
CN110688305B (zh) | 测试环境同步方法、装置、介质、电子设备 | |
US11422917B2 (en) | Deriving software application dependency trees for white-box testing | |
CN113961768B (zh) | 敏感词检测方法、装置、计算机设备和存储介质 | |
CN116561003A (zh) | 测试数据生成方法、装置、计算机设备和存储介质 | |
CN114879985B (zh) | 一种证书文件的安装方法、装置、设备及存储介质 | |
CN113448869B (zh) | 测试用例生成的方法、装置、电子设备及计算机可读介质 | |
CN116955120A (zh) | 测试脚本生成方法、装置、计算机设备以及存储介质 | |
CN114546799A (zh) | 埋点日志校验方法、装置、电子设备、存储介质及产品 | |
CN115705297A (zh) | 代码调用检测方法、装置、计算机设备以及存储介质 | |
CN113505078A (zh) | 配置文件更新方法、装置、设备及存储介质 | |
CN109491699B (zh) | 应用程序的资源检查方法、装置、设备及存储介质 | |
CN113127357A (zh) | 单元测试方法、装置、设备、存储介质及程序产品 | |
CN114371866A (zh) | 业务系统的版本重构测试方法、装置和设备 | |
CN111538651A (zh) | 接口测试方法、装置、服务器及存储介质 | |
CN113360365A (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 |