CN117931612A - 测试用例生成方法、装置、计算设备集群及存储介质 - Google Patents

测试用例生成方法、装置、计算设备集群及存储介质 Download PDF

Info

Publication number
CN117931612A
CN117931612A CN202211265274.4A CN202211265274A CN117931612A CN 117931612 A CN117931612 A CN 117931612A CN 202211265274 A CN202211265274 A CN 202211265274A CN 117931612 A CN117931612 A CN 117931612A
Authority
CN
China
Prior art keywords
target
call
interface
test
call chain
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211265274.4A
Other languages
English (en)
Inventor
尤海威
刘涛涛
谢冬梅
尧智奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Priority to CN202211265274.4A priority Critical patent/CN117931612A/zh
Publication of CN117931612A publication Critical patent/CN117931612A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种测试用例生成方法、装置、计算设备集群及存储介质,属于计算机技术领域。该方法包括:基于对被测系统的页面所实施的目标操作,获取该目标操作的多个调用链,基于各个调用链中首层接口的历史请求数据和历史响应数据,生成该目标操作的测试用例。通过这种方式,能够基于对被测系统的页面所实施的一次操作,自动生成该操作的测试用例,从而降低了测试用例的生成成本,提高了测试效率。

Description

测试用例生成方法、装置、计算设备集群及存储介质
技术领域
本申请涉及计算机技术领域,特别涉及一种测试用例生成方法、装置、计算设备集群及存储介质。
背景技术
随着计算机技术的快速发展,微服务架构已成为软件架构的主流模式。在微服务架构下,系统解耦为小的、独立的、分布式的单元,每个单元通过应用程序编程接口(application programming interface,API)对外提供服务。
相关技术中,在对基于微服务架构的系统进行测试时通常采用如下方法:例如,针对目标对象在被测系统的页面所实施的操作,获取基于该操作进行多次接口调用的调用链,由测试人员根据各个接口的调用链,人工编写各个接口的测试用例,实现针对被测系统的各个接口的测试。
然而,上述人工编写测试用例的方式导致生成测试用例的成本较高,且测试效率较低。
发明内容
本申请实施例提供了一种测试用例生成方法、装置、计算设备集群及存储介质,能够有效降低测试用例的生成成本,提高测试效率。该技术方案如下:
第一方面,提供了一种测试用例生成方法,该方法包括:
基于对被测系统的页面所实施的目标操作的操作标识,获取该目标操作的多个调用链,该调用链指示该目标操作所调用的多个接口;
基于各个该调用链中首层接口的历史请求数据和历史响应数据,生成该目标操作的测试用例,该测试用例用于对该被测系统中该目标操作所调用的多个接口进行测试。
在该方法中,基于对被测系统的页面所实施的目标操作,获取该目标操作的多个调用链,基于各个调用链中首层接口的历史请求数据和历史响应数据,生成该目标操作的测试用例。通过这种方式,能够基于对被测系统的页面所实施的一次操作,自动生成该操作的测试用例,从而降低了测试用例的生成成本,提高了测试效率。
在一些实施例中,该调用链包括该目标操作的操作标识和该调用链的调用链标识。
通过在调用链中携带目标操作的操作标识,为通过一次操作获取到该操作的所有调用链提供了技术支撑。
在一些实施例中,基于各个该调用链中首层接口的历史请求数据和历史响应数据,生成该目标操作的测试用例,包括:
基于各个该调用链中首层接口的历史请求数据和历史响应数据,生成各个该调用链中首层接口的测试请求和预期响应;
基于各个该调用链中首层接口的测试请求和预期响应,生成该目标操作的测试用例。
通过生成各个调用链中首层接口的测试请求和预期响应以得到目标测试的测试用例,便于在后续执行测试用例的过程中,对目标操作所调用的各个接口的请求数据和响应数据进行验证,实现高效精准的问题定位。
在一些实施例中,基于各个该调用链中首层接口的历史请求数据和历史响应数据,生成各个该调用链中首层接口的测试请求和预期响应,包括:
将目标调用链中首层接口的历史请求数据中的第一参数替换为第一变量,得到该目标调用链中首层接口的测试请求,该目标调用链为多个调用链中任一个调用链;
将该目标调用链中首层接口的历史响应数据中的第二参数替换为第二变量,得到该目标调用链中首层接口的预期响应。
其中,第一参数是指历史请求数据中的特定参数,第二参数是指历史响应数据中的特定参数,例如对象ID、订单ID等等,对此不作限定。通过将第一参数和第二参数替换为变量,使得最终生成的测试用例在执行过程中,这些变量能够随机生成,从而减少了测试人员的后期维护工作量,保证了测试用例的可重复执行,提高了测试效率。
在一些实施例中,该方法还包括:
在识别到目标调用链中存在目标接口不属于该被测系统的情况下,基于该目标调用链中该目标接口的历史请求数据和历史响应数据,在模拟系统中配置该目标接口的预期响应,该目标接口为该目标调用链中除首层接口以外的任一个接口,该目标调用链为多个调用链中任一个调用链。
其中,目标接口不属于被测系统也即是该目标接口属于第三方系统。应理解,由于第三方系统并不属于被测系统,也即是研发环境没有真实的第三方系统来执行测试,因此通过模拟系统(也称为mock系统)来配置该目标接口的预期响应,能够确保调用链中存在第三方接口时仍然可以实现对被测系统的测试。
在一些实施例中,该方法还包括:
响应于针对该测试用例的用例执行请求,执行该测试用例;
基于该测试用例和执行该测试用例的过程中获取到的该多个接口的请求数据和响应数据,获取该目标操作的测试结果。
其中,通过将获取到的多个接口的请求数据和响应数据与测试用用例中的测试请求和预期响应进行对比,以确定该多个接口是否测试通过,得到该目标操作的测试结果,实现了基于一次操作的完整接口测试,提高了测试效率。
第二方面,本申请实施例提供了一种测试用例生成装置,该装置包括至少一个功能模块,用于执行如前述第一方面或第一方面的任意一种可能的实现方式所提供的测试用例生成方法。
第三方面,本申请实施例提供了一种计算设备集群,包括至少一个计算设备,每个计算设备包括处理器和存储器;该至少一个计算设备的处理器用于执行该至少一个计算设备的存储器中存储的指令,以使得该计算设备集群执行如上述第一方面或第一方面的任意一种可能的实现方式所提供的测试用例生成方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质用于存储至少一段程序代码,该至少一段程序代码用于实现前述第一方面或第一方面的任意一种可能的实现方式所提供的测试用例生成方法。该存储介质包括但不限于易失性存储器,例如随机访问存储器,非易失性存储器,例如快闪存储器、硬盘(hard disk drive,HDD)、固态硬盘(solid state drive,SSD)。
第五方面,本申请实施例提供了一种计算机程序产品,当该计算机程序产品在计算设备上运行时,使得该计算设备实现前述第一方面或第一方面的任意一种可能的实现方式所提供的测试用例生成方法。该计算机程序产品可以为一个软件安装包,在需要实现上述测试用例生成方法的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。
附图说明
图1是本申请实施例提供的一种测试用例生成方法的实施环境示意图;
图2是本申请实施例提供的一种测试用例生成方法的流程示意图;
图3是本申请实施例提供的一种基于目标操作调用多个接口的示意图;
图4是本申请实施例提供的一种操作标识的示意图;
图5是本申请实施例提供的一种调用链标识的示意图;
图6是本申请实施例提供的另一种调用链标识的示意图;
图7是本申请实施例提供的一种目标操作的多个调用链的示意图;
图8是本申请实施例提供的一种调用信息的解析过程示意图;
图9是本申请实施例提供的一种生成测试请求的示意图;
图10是本申请实施例提供的一种生成预期响应的示意图;
图11是本申请实施例提供的一种测试用例的示意图;
图12是本申请实施例提供的一种测试用例执行过程的示意图;
图13是本申请实施例提供的一种测试用例生成装置的结构示意图;
图14是本申请实施例提供的一种计算设备的硬件结构示意图;
图15是本申请实施例提供的一种计算设备集群的结构示意图;
图16是本申请实施例提供的一种计算设备集群的连接方式示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为了方便理解,下面先对本申请涉及的关键术语和关键概念进行说明。
微服务(micro service),是指一种软件开发技术,具体包括将系统解耦为小的、独立的、分布式的单元(也即微服务),每个单元通过应用程序编程接口(applicationprogramming interface,API)对外提供服务,各个单元之间互相协调、互相配合,以实现具体业务。
测试用例(test case),是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。或者说,测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。
统一资源标识符(uniform resource identifier,URI),是互联网中用于标识某一网络资源名称的字符串。该标识允许对资源(包括本地和互联网)通过特定的协议进行交互操作。
统一资源定位系统(uniform resource locator,URL),是互联网中用于指定资源位置的表示方法。
调用链,是指在系统完成一次业务的过程中,把服务之间的调用情况(时间、接口、层次、结果等)记录到日志中,然后将所有的调用情况连接为一个树状链条,就产生了一个调用链。示意性地,调用链包括下述几种信息:
1、跟踪(trace)信息,是指一次请求调用的链路过程,其中,trace ID是指这次请求调用的ID,也称为调用链标识。在一次请求中,系统会在最开始生成一个全局唯一的、用于标识此次请求的trace ID,这个trace ID在这次请求调用过程中无论经过多少个接口都会保持不变,并且在随着每一层的调用不停的传递,最终,可以通过trace ID将这一次请求在系统中的路径全部串起来。
2、跨距(span)信息,是指一个接口的调用过程,其中,span ID是指这次接口调用的ID,也称为调用信息标识。在一次请求中,系统会调用不同的接口,每一次接口调用都会生成一个新的span ID来记录。这样,就可以通过span ID来定位当前接口调用在整个调用链中所处的位置,以及它的上下游接口分别是什么。每个span都包括相应接口的调用信息,也可以理解为是附属在每个span上自定义的数据。
下面对本申请涉及的应用场景和实施环境进行介绍。
本申请实施例提供的技术方案能够应用于对基于微服务架构的系统进行测试的场景中。例如,在基于微服务架构的系统中,一个业务往往涉及多个微服务之间的交互,也即是,针对系统的页面所实施的一次操作会调用多个接口,以实现该操作对应的业务。在本申请实施例中,提供了一种测试用例生成方法,能够基于对被测系统的页面所实施的一次操作,自动生成该操作的测试用例,从而降低测试用例的生成成本,提高测试效率。
图1是本申请实施例提供的一种测试用例生成方法的实施环境示意图。如图1所示,该实施环境包括:终端101和服务器102,终端101和服务器102之间通过无线网络或有线网络直接或间接相连,对此不作限定。
终端101可以是智能手机、台式计算机、增强现实终端、平板电脑、电子书阅读器和膝上型便携计算机中的至少一种。终端101能够安装和运行应用程序。该应用程序可以是客户端应用,也可以是浏览器应用等,对此不作限定。示意性地,终端101安装和运行有提供系统测试功能的应用程序,终端101显示该应用程序的界面,用户(如测试人员)通过对该界面实施操作,触发终端101提供相应的系统测试功能,如用户能够选择被测系统和相应的测试用例,触发终端101对该被测系统进行测试等。
服务器102为独立的物理服务器,或者是多个物理服务器构成的服务器集群或者分布式文件系统,又或者是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,CDN)以及大数据和人工智能平台等基础云计算服务的云服务器。示意性地,服务器102用于为终端101上运行的应用程序提供后台服务。示意性地,终端101上运行有提供系统测试功能的应用程序,服务器102用于为该应用程序提供系统测试功能所需的计算资源和存储资源等,如生成测试用例、存储测试用例以及执行测试用例等等,对此不作限定。
上述终端101可以泛指多个终端中的一个,或者多个终端组成的集合;上述服务器102可以是单独的计算设备、计算设备集群、虚拟机或容器引擎等等,本申请实施例对实施环境中每种设备的数量和设备类型不做限定。
在一些实施例中,上述无线网络或有线网络使用标准通信技术和/或协议。网络包括但不限于数据中心网络(data center network)、存储区域网(storage area network,SAN)、局域网(local area network,LAN)、城域网(metropolitan area network,MAN)、广域网(wide area network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合。在一些实现方式中,使用包括超级文本标记语言(hyper text markuplanguage,HTML)、可扩展标记语言(extensible markup language,XML)等的技术和/或格式来代表通过网络交换的数据。此外还能够使用诸如安全套接字层(secure socketslayer,SSL)、传输层安全(transport layer security,TLS)、虚拟专用网络(virtualprivate network,VPN)、网际协议安全(internet protocol security,IPsec)等常规加密技术来加密所有或者部分链路。在另一些实施例中,还能够使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
下面对本申请实施例提供的测试用例生成方法进行介绍。
图2是本申请实施例提供的一种测试用例生成方法的流程示意图。如图2所示,该测试用例生成方法由上述图1所示实施环境中的服务器执行,该方法包括下述步骤201至步骤204。
201、服务器接收对被测系统的页面所实施的目标操作的测试用例生成请求,该测试用例生成请求包括该目标操作的操作标识。
在本申请实施例中,被测系统为基于微服务架构的任意一个系统,该系统能够响应于对该系统的页面所实施的各种操作,调用系统中的多个接口来实现各种各样的业务。目标操作是指对被测系统的页面所实施的任意一次操作。示意性地,被测系统能够响应于该目标操作,调用该目标操作对应的多个接口来实现相应业务。另外,对于对被测系统的页面所实施的任意一次操作,被测系统能够生成相应的操作标识,来对不同的操作进行区分。
该测试用例生成请求用于请求生成该目标操作的测试用例,该测试用例用于对被测系统中目标操作所调用的多个接口进行测试。示意性地,该测试用例生成请求由终端发送。终端上运行有提供系统测试功能的应用程序,终端显示该应用程序的界面,该界面提供针对被测系统中不同操作的测试用例生成功能,终端响应于用户(如测试人员)在该界面上实施的操作,确定要生成测试用例的目标操作,基于该目标操作的操作标识,生成测试用例生成请求,将该测试用例生成请求发送给服务器。应理解,终端也可以针对用户选中的多种操作,生成相应的测试用例生成请求,同步发送给服务器,本申请实施例对此不作限定。
202、服务器基于该目标操作的操作标识,获取该目标操作的多个调用链,该调用链指示该目标操作所调用的多个接口。
在本申请实施例中,服务器存储有被测系统的历史运行数据(也可以理解为是被测系统的真实运行数据),该历史运行数据包括被测系统中多次操作所对应的调用链。服务器基于该目标操作的操作标识,从历史运行数据中获取该目标操作的多个调用链。其中,对于任一个调用链,该调用链包括该目标操作的操作标识和该调用链的调用链标识。当然,该历史运行数据也可以存储在其他设备中,服务器能够根据需求从其他设备中获取相应数据,本申请实施例对此不作限定。
示意性地,在被测系统的历史运行过程中,被测系统基于该目标操作生成多个调用请求,基于各个调用请求调用多个第一接口(这些接口也称为首层接口),通过各个第一接口再次调用多个第二接口,以实现该目标操作对应的业务,基于此,多个第一接口的调用信息与多个第二接口的调用信息形成该目标操作的多个调用链,对于任一个调用链,该调用链指示基于该目标操作所调用的第一接口和至少一个第二接口。
其中,对于调用链中任意一个接口的调用信息,该调用信息包括下述至少一项:该接口对应的调用信息标识(如span ID)、通过该接口调用的下一个接口对应的调用信息标识(也称为下一跳span ID)、该接口的调用开始时间(start time)、调用耗费时间(timeused)、服务名称(cluster name)、服务实例名称(instance name)、调用类型(type)(例如,若接口属于被测系统,则调用类型表示为cse-client,若接口不属于被测系统,则调用类型表示为http-client)、接口URI以及扩展参数(parameters)等。其中,扩展参数包括该接口的历史请求数据和历史响应数据,例如:扩展参数包括请求消息头(request header)、请求体(request body)、请求方法(http method)、响应码(result code)以及响应体(responsebody)等,对此不作限定。
下面参考图3至图7,基于被测系统的历史运行过程,对目标操作的多个调用链进行示意性说明。
图3是本申请实施例提供的一种基于目标操作调用接口的示意图。如图3所示,以被测系统能够实现购物业务为例,在对被测系统的页面实施操作的情况下,被测系统能够获取基于每次操作所调用的接口的调用信息。例如,以“选择订单”操作为例,被测系统响应于对页面上“选择订单”选项的选中操作,生成调用请求1和调用请求2,其中,调用请求1用于调用微服务A对应的接口a,调用请求2用于调用微服务C对应的接口c,调用请求1和调用请求2的调用过程都会携带该操作的操作标识groupID1。又例如,以“选择支付”操作为例,被测系统响应于对页面上“选择支付”选项的选中操作,生成调用请求3和调用请求4,其中,调用请求3用于调用微服务A对应的接口a,调用请求4用于调用微服务B对应的接口b,调用请求3和调用请求4的调用过程都会携带该操作的操作标识groupID2。这一过程也可以理解为被测系统的前端在消息头中传递操作的操作标识给被测系统的后端。示意性地,操作标识的具体形式可参考图4,图4是本申请实施例提供的一种操作标识的示意图。
继续参考图3,对于每次操作所调用的多个接口中的任意一个接口,被测系统通过该接口继续调用其他接口以实现整个业务。例如,以“选择订单”操作为例,被测系统基于调用请求1调用微服务A对应的接口a,通过接口a继续调用微服务D对应的接口d;基于调用请求2调用微服务C对应的接口c,通过接口c继续调用微服务E对应的接口e,其中,调用请求1的调用过程会携带调用链标识traceID1,调用请求2的调用过程会携带调用链标识traceID2。又例如,以“选择支付”操作为例,被测系统基于调用请求3调用微服务A对应的接口a,通过接口a继续调用微服务B对应的接口b、微服务E对应的接口e以及微服务D对应的接口d;基于调用请求4调用微服务B对应的接口b,通过接口b继续调用微服务E对应的接口e,其中,调用请求3的调用过程会携带调用链标识traceID3,调用请求4的调用过程会携带调用链标识traceID4。这一过程也可以理解为被测系统在首层接口的消息头中生成调用链标识,在接口之间调用传递,并将生成的调用链标识作为消息头返回。示意性地,调用链标识的具体形式可参考图5,图5是本申请实施例提供的一种调用链标识的示意图。应理解,相同操作标识对应的首层接口会返回不同的调用链标识,该调用链标识能够作为全局唯一的标识来对不同调用链进行区分。示意性地,参考图6,图6是本申请实施例提供的另一种调用链标识的示意图。
基于上述图3至图6所示内容可知,基于某一操作的操作标识能够获取到该操作的全部调用链。参考图7,图7是本申请实施例提供的一种目标操作的多个调用链的示意图。以“选择订单”操作为例,该操作的所有调用过程都会携带该操作的操作标识groupID1,被测系统基于该操作调用接口a,并通过该接口a继续向后调用其他接口,这一过程会携带该次请求调用的调用链标识traceID1,相应地,被测系统基于该操作调用接口c,并通过该接口c继续向后调用其他接口,这一过程会调用该次请求调用的调用链标识traceID2。应理解,“选择支付”操作与上述“选择订单”操作同理,故不再赘述。
203、服务器基于各个调用链中首层接口的历史请求数据和历史响应数据,生成各个调用链中首层接口的测试请求和预期响应。
在本申请实施例中,对于任一个调用链,服务器对该调用链中首层接口的调用信息进行解析,得到该调用链中首层接口的历史请求数据(如请求URL、请求方法、请求消息头、请求体)和历史响应数据(如响应体、响应码),以生成该调用链中首层接口的测试请求和预期响应。其中,该测试请求和预期响应用于在被测系统的测试过程,对该首层接口的请求数据和响应数据进行验证。通过生成各个调用链中首层接口的测试请求和预期响应以得到目标测试的测试用例,便于在后续执行测试用例的过程中,对获取到的目标操作所调用的各个接口的请求数据和响应数据进行验证,实现高效精准的问题定位。
下面以任一个调用链为例(以下称为目标调用链),对生成该调用链中首层接口的测试请求和预期响应的过程进行介绍,示意性地,这一过程包括:将目标调用链中首层接口的历史请求数据中的第一参数替换为第一变量,得到该目标调用链中首层接口的测试请求;将该目标调用链中首层接口的历史响应数据中的第二参数替换为第二变量,得到该目标调用链中首层接口的预期响应。
其中,第一参数是指历史请求数据中的特定参数,第二参数是指历史响应数据中的特定参数,例如对象ID、订单ID等等,对此不作限定。通过将第一参数和第二参数替换为变量,使得最终生成的测试用例在执行过程中,这些变量能够随机生成,从而减少了测试人员的后期维护工作量,保证了测试用例的可重复执行,提高了测试效率。应理解,第一参数和第二参数能够根据实际需求进行设置,这类参数也可以理解为是可变参数,本申请实施例对于这类参数的具体内容不作限定。以下仅以举例的方式进行示意性说明:例如,将协议和服务器地址信息相关参数替换为变量(如${VAR_ER_URL});又例如,将与鉴权相关的参数替换为变量(如“x-auth-token”:“xxxx”,改为“x-auth-token”:“${X_Auth_Token}”);再例如,将业务相关参数替换为变量(如“customer_id”:“508040863”,改为“customer_id”:“${customerId}”),等等。
当然,在一些实施例中,还能够根据需求删除历史请求数据和历史响应数据中的部分参数(如删除调用链相关的消息头以及浏览器携带的消息头),或者,以变量的形式补充部分参数(如URI中没有携带协议和服务器地址信息相关参数,则以变量的形式进行补充,得到接口URL),本申请实施例对此不作限定。
下面参考图8至图10,对生成目标调用链中首层接口的测试请求和预期响应的过程进行举例说明。其中,图8是本申请实施例提供的一种调用信息的解析过程示意图,图9是本申请实施例提供的一种生成测试请求的示意图,图10是本申请实施例提供的一种生成预期响应的示意图。如图8所示,服务器对目标调用链中首层接口的调用信息进行解析,得到目标调用链中首层接口的历史请求数据和历史响应数据。如图9所示,服务器基于历史请求数据中的接口URI、请求方法、请求消息头以及请求体,生成相应的测试请求。如图10所示,服务器基于历史响应数据中的响应码和响应体,生成相应的预期响应。
在一些实施例中,对于目标调用链中不属于被测系统的接口(也即是该接口属于第三方系统),服务器能够在模拟系统中配置该接口的预期响应。示意性地,这一过程包括:在识别到目标调用链中存在目标接口不属于该被测系统的情况下,基于该目标调用链中该目标接口的历史请求数据和历史响应数据,在模拟系统中配置该目标接口的预期响应,该目标接口为该目标调用链中除首层接口以外的任一个接口。
其中,服务器识别目标调用链中除首层接口以外的各个接口的接口类型,以确定目标调用链中是否存在不属于被测系统的接口,在识别到存在目标接口不属于被测系统时,通过模拟系统来配置该目标接口的预期响应。应理解,由于第三方系统并不属于被测系统,也即是研发环境没有真实的第三方系统来执行测试,因此通过模拟系统(也称为mock系统或mock服务器)来配置该目标接口的预期响应,能够确保目标调用链中存在第三方接口时仍然可以实现对被测系统的测试。
在一些实施例中,服务器基于该目标接口的历史请求数据,在模拟系统中配置响应匹配规则,该响应匹配规则能够指示模拟系统在测试用例执行过程中,基于该目标接口发起的请求数据所返回的响应数据。应理解,在后续测试用例的执行过程中,模拟系统会基于该目标接口,随机(或按照预设规则)生成调用链标识,该调用链标识与该目标接口的历史请求数据中的调用链标识往往并不相同,因此,通过在模拟系统中配置响应匹配规则,能够确保模拟系统根据该目标接口的请求数据,返回与该请求数据匹配的响应数据。例如,目标接口的历史请求数据中调用链标识为traceID1,历史响应数据为ABC,在测试用例执行时,模拟系统随机生成调用链标识traceID3,并基于预先配置的响应匹配规则,会返回响应数据ABC。此处举例仅为示意性说明,在实际应用中,能够根据需求配置模拟系统的响应匹配规则,本申请实施例对此不作限定。
204、服务器基于各个调用链中首层接口的测试请求和预期响应,生成该目标操作的测试用例,该测试用例用于对该被测系统中该目标操作所调用的多个接口进行测试。
在本申请实施例中,服务器将各个调用链中首层接口的测试请求和预期响应进行组合,得到该目标操作的测试用例,存储该测试用例。参考图11,图11是本申请实施例提供的一种测试用例的示意图。如图11所示,服务器将调用链1(也即对应调用请求1)和调用链2(也即对应调用请求2)中首层接口的测试请求和预期响应进行组合,得到“选择订单”这一操作的测试用例。
经过上述步骤201至步骤204,服务器基于目标操作的测试用例生成请求,自动生成了该目标操作的测试用例,降低了测试用例的生成成本,提高了测试效率。
在一些实施例中,服务器响应于针对该测试用例的用例执行请求,执行该测试用例;基于该测试用例和执行该测试用例的过程中获取到的该多个接口的请求数据和响应数据,获取该目标操作的测试结果。其中,服务器将获取到的多个接口的请求数据和响应数据与测试用用例中的测试请求和预期响应进行对比,以确定该多个接口是否测试通过,得到该目标操作的测试结果。示意性地,参考图12,图12是本申请实施例提供的一种测试用例执行过程的示意图。如图12所示,服务器基于目标操作的多个调用链,生成该目标操作的测试用例,并将其进行存储。服务器响应于针对该测试用例的用例执行请求,执行该测试用例,调用被测系统中的接口,其中,对于不属于被测系统的接口,通过模拟系统来实现接口调用,最终,基于测试用例,对获取到的多个接口的请求数据和响应数据进行验证,得到该目标操作的测试结果。
综上,在本申请实施例提供的测试用例生成方法中,基于对被测系统的页面所实施的目标操作,获取该目标操作的多个调用链,基于各个调用链中首层接口的历史请求数据和历史响应数据,生成该目标操作的测试用例。通过这种方式,能够基于对被测系统的页面所实施的一次操作,自动生成该操作的测试用例,从而降低了测试用例的生成成本,提高了测试效率。
图13是本申请实施例提供的一种测试用例生成装置的结构示意图。该测试用例生成装置可以通过软件、硬件或者两者的结合实现成为前述测试用例生成方法。如图13所示,该测试用例生成装置包括获取模块1301和生成模块1302。
获取模块1301,用于基于对被测系统的页面所实施的目标操作的操作标识,获取该目标操作的多个调用链,该调用链指示该目标操作所调用的多个接口;
生成模块1302,用于基于各个该调用链中首层接口的历史请求数据和历史响应数据,生成该目标操作的测试用例,该测试用例用于对该被测系统中该目标操作所调用的多个接口进行测试。
在一些实施例中,该调用链包括该目标操作的操作标识和该调用链的调用链标识。
在一些实施例中,该生成模块1302,包括:
第一生成单元,用于基于各个该调用链中首层接口的历史请求数据和历史响应数据,生成各个该调用链中首层接口的测试请求和预期响应;
第二生成单元,用于基于各个该调用链中首层接口的测试请求和预期响应,生成该目标操作的测试用例。
在一些实施例中,该第一生成单元,用于:
将目标调用链中首层接口的历史请求数据中的第一参数替换为第一变量,得到该目标调用链中首层接口的测试请求,该目标调用链为多个调用链中任一个调用链;
将该目标调用链中首层接口的历史响应数据中的第二参数替换为第二变量,得到该目标调用链中首层接口的预期响应。
在一些实施例中,该装置还包括配置模块,该配置模块用于:
在识别到目标调用链中存在目标接口不属于该被测系统的情况下,基于该目标调用链中该目标接口的历史请求数据和历史响应数据,在模拟系统中配置该目标接口的预期响应,该目标接口为该目标调用链中除首层接口以外的任一个接口,该目标调用链为多个调用链中任一个调用链。
在一些实施例中,该装置还包括测试用例执行模块,该测试用例执行模块用于:
响应于针对该测试用例的用例执行请求,执行该测试用例;
基于该测试用例和执行该测试用例的过程中获取到的该多个接口的请求数据和响应数据,获取该目标操作的测试结果。
在本申请实施例提供的测试用例生成装置中,基于对被测系统的页面所实施的目标操作,获取该目标操作的多个调用链,基于各个调用链中首层接口的历史请求数据和历史响应数据,生成该目标操作的测试用例。通过这种方式,能够基于对被测系统的页面所实施的一次操作,自动生成该操作的测试用例,从而降低了测试用例的生成成本,提高了测试效率。
另外,在上述测试用例生成装置中,获取模块1301和生成模块1302均可以通过软件实现,或者可以通过硬件实现。示例性的,接下来以获取模块1301为例,介绍获取模块1301的实现方式。类似的,生成模块1302以及其他模块的实现方式可以参考获取模块1301的实现方式。
模块作为软件功能单元的一种举例,获取模块1301可以包括运行在计算实例上的代码。其中,计算实例可以包括物理主机(计算设备)、虚拟机、容器中的至少一种。进一步地,上述计算实例可以是一台或者多台。例如,获取模块1301可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的区域(region)中,也可以分布在不同的region中。进一步地,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的可用区(availability zone,AZ)中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。
同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个区域(region)内,同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。
模块作为硬件功能单元的一种举例,获取模块1301可以包括至少一个计算设备。或者,获取模块1301也可以是利用专用集成电路(application-specific integratedcircuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
获取模块1301包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。获取模块1301包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,获取模块1301包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,该多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。
需要说明的是,在其他实施例中,获取模块1301可以用于执行测试用例生成方法中的任意步骤,即,获取模块1301和生成模块1302负责实现的步骤可根据需要指定,通过获取模块1301和生成模块1302分别实现测试用例生成方法中不同的步骤来实现测试用例生成装置的全部功能。另外,上述实施例提供的测试用例生成装置与测试用例生成方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请还提供了一种计算设备,能够配置为上述实施环境中的服务器。参考图14,图14是本申请实施例提供的一种计算设备的硬件结构示意图。如图14所示,计算设备1400包括:总线1402、处理器1404、存储器1406和通信接口1408。处理器1404、存储器1406和通信接口1408之间通过总线1402通信。应理解,本申请不限定计算设备1400中的处理器、存储器的个数。
总线1402可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线1404可包括在计算设备1400各个部件(例如,存储器1406、处理器1404、通信接口1408)之间传送信息的通路。
处理器1404可以包括中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
存储器1406可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。处理器1404还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard diskdrive,HDD)或固态硬盘(solid state drive,SSD)。
存储器1406中存储有可执行的程序代码,处理器1404执行该可执行的程序代码以分别实现前述获取模块1301和生成模块1302的功能,从而实现测试用例生成方法。也即,存储器1406上存有用于执行测试用例生成方法的指令。
通信接口1403使用例如但不限于网络接口卡、收发器一类的收发模块,来实现计算设备1400与其他设备或通信网络之间的通信。
本申请实施例还提供了一种计算设备集群。该计算设备集群包括至少一台计算设备。该计算设备可以配置为上述实施环境中的服务器,例如是中心服务器、边缘服务器,或者是本地数据中心中的本地服务器。
图15是本申请实施例提供的一种计算设备集群的结构示意图。如图15所示,该计算设备集群包括至少一个计算设备1400。计算设备集群中的一个或多个计算设备1400中的存储器1406中可以存有相同的用于执行测试用例生成方法的指令。
在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备1400的存储器1406中也可以分别存有用于执行测试用例生成方法的部分指令。换言之,一个或多个计算设备1400的组合可以共同执行用于执行测试用例生成方法的指令。
需要说明的是,计算设备集群中的不同的计算设备1400中的存储器1406可以存储不同的指令,分别用于执行测试用例生成装置的部分功能。也即,不同的计算设备1400中的存储器1406存储的指令可以实现获取模块1301和生成模块1302中的一个或多个模块的功能。
在一些实施例中,计算设备集群中的一个或多个计算设备可以通过网络连接。其中,该网络可以是广域网或局域网等等。图16是本申请实施例提供的一种计算设备集群的连接方式示意图。如图16所示,两个计算设备1400之间通过网络进行连接。具体地,通过各个计算设备中的通信接口与该网络进行连接。在这一类可能的实现方式中,图16所示的计算设备集群之间的连接方式考虑到本申请提供的测试用例生成方法涉及不同类型的步骤,因此在不同计算设备的存储器中存有执行不同类型步骤的指令。例如,一个计算设备1400中的存储器1406中存有执行获取调用链的指令。另一个计算设备1400中的存储器1406中存有执行生成测试用例的指令。
应理解,图16中示出的计算设备1400的功能也可以由多个计算设备1400完成。
本申请实施例还提供了一种包含指令的计算机程序产品。该计算机程序产品可以是包含指令的,能够运行在计算设备上或被储存在任何可用介质中的软件或程序产品。当该计算机程序产品在至少一个计算设备上运行时,使得至少一个计算设备执行测试用例生成方法。
本申请实施例还提供了一种计算机可读存储介质。该计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,该指令指示计算设备执行测试用例生成方法。
需要说明的是,本申请所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的调用链等都是在充分授权的情况下获取的。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。例如,在不脱离各种所述示例的范围的情况下,第一接口可以被称为第二接口,并且类似地,第二接口可以被称为第一接口。第一接口和第二接口都可以是接口,并且在某些情况下,可以是单独且不同的接口。
本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上,例如,多个接口是指两个或两个以上的接口。
以上描述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以程序结构信息的形式实现。该程序结构信息包括一个或多个程序指令。在计算设备上加载和执行该程序指令时,全部或部分地产生按照本申请实施例中的流程或功能。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (15)

1.一种测试用例生成方法,其特征在于,所述方法包括:
基于对被测系统的页面所实施的目标操作的操作标识,获取所述目标操作的多个调用链,所述调用链指示所述目标操作所调用的多个接口;
基于各个所述调用链中首层接口的历史请求数据和历史响应数据,生成所述目标操作的测试用例,所述测试用例用于对所述被测系统中所述目标操作所调用的多个接口进行测试。
2.根据权利要求1所述的方法,其特征在于,所述调用链包括所述目标操作的操作标识和所述调用链的调用链标识。
3.根据权利要求1所述的方法,其特征在于,所述基于各个所述调用链中首层接口的历史请求数据和历史响应数据,生成所述目标操作的测试用例,包括:
基于各个所述调用链中首层接口的历史请求数据和历史响应数据,生成各个所述调用链中首层接口的测试请求和预期响应;
基于各个所述调用链中首层接口的测试请求和预期响应,生成所述目标操作的测试用例。
4.根据权利要求3所述的方法,其特征在于,所述基于各个所述调用链中首层接口的历史请求数据和历史响应数据,生成各个所述调用链中首层接口的测试请求和预期响应,包括:
将目标调用链中首层接口的历史请求数据中的第一参数替换为第一变量,得到所述目标调用链中首层接口的测试请求,所述目标调用链为多个调用链中任一个调用链;
将所述目标调用链中首层接口的历史响应数据中的第二参数替换为第二变量,得到所述目标调用链中首层接口的预期响应。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:
在识别到目标调用链中存在目标接口不属于所述被测系统的情况下,基于所述目标调用链中所述目标接口的历史请求数据和历史响应数据,在模拟系统中配置所述目标接口的预期响应,所述目标接口为所述目标调用链中除首层接口以外的任一个接口,所述目标调用链为多个调用链中任一个调用链。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述方法还包括:
响应于针对所述测试用例的用例执行请求,执行所述测试用例;
基于所述测试用例和执行所述测试用例的过程中获取到的所述多个接口的请求数据和响应数据,获取所述目标操作的测试结果。
7.一种测试用例生成装置,其特征在于,所述装置包括:
获取模块,用于基于对被测系统的页面所实施的目标操作的操作标识,获取所述目标操作的多个调用链,所述调用链指示所述目标操作所调用的多个接口;
生成模块,用于基于各个所述调用链中首层接口的历史请求数据和历史响应数据,生成所述目标操作的测试用例,所述测试用例用于对所述被测系统中所述目标操作所调用的多个接口进行测试。
8.根据权利要求7所述的装置,其特征在于,所述调用链包括所述目标操作的操作标识和所述调用链的调用链标识。
9.根据权利要求7所述的装置,其特征在于,所述生成模块,包括:
第一生成单元,用于基于各个所述调用链中首层接口的历史请求数据和历史响应数据,生成各个所述调用链中首层接口的测试请求和预期响应;
第二生成单元,用于基于各个所述调用链中首层接口的测试请求和预期响应,生成所述目标操作的测试用例。
10.根据权利要求9所述的装置,其特征在于,所述第一生成单元,用于:
将目标调用链中首层接口的历史请求数据中的第一参数替换为第一变量,得到所述目标调用链中首层接口的测试请求,所述目标调用链为多个调用链中任一个调用链;
将所述目标调用链中首层接口的历史响应数据中的第二参数替换为第二变量,得到所述目标调用链中首层接口的预期响应。
11.根据权利要求7至10中任一项所述的装置,其特征在于,所述装置还包括配置模块,所述配置模块用于:
在识别到目标调用链中存在目标接口不属于所述被测系统的情况下,基于所述目标调用链中所述目标接口的历史请求数据和历史响应数据,在模拟系统中配置所述目标接口的预期响应,所述目标接口为所述目标调用链中除首层接口以外的任一个接口,所述目标调用链为多个调用链中任一个调用链。
12.根据权利要求7至11中任一项所述的装置,其特征在于,所述装置还包括测试用例执行模块,所述测试用例执行模块用于:
响应于针对所述测试用例的用例执行请求,执行所述测试用例;
基于所述测试用例和执行所述测试用例的过程中获取到的所述多个接口的请求数据和响应数据,获取所述目标操作的测试结果。
13.一种计算设备集群,其特征在于,包括至少一个计算设备,每个计算设备包括处理器和存储器;所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行如权利要求1-6中任一项所述的测试用例生成方法。
14.一种包含指令的计算机程序产品,其特征在于,当所述指令被计算设备集群运行时,使得所述计算设备集群执行如权利要求1-6中任一项所述的测试用例生成方法。
15.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备集群执行时,所述计算设备集群执行如权利要求1-6中任一项所述的测试用例生成方法。
CN202211265274.4A 2022-10-17 2022-10-17 测试用例生成方法、装置、计算设备集群及存储介质 Pending CN117931612A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211265274.4A CN117931612A (zh) 2022-10-17 2022-10-17 测试用例生成方法、装置、计算设备集群及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211265274.4A CN117931612A (zh) 2022-10-17 2022-10-17 测试用例生成方法、装置、计算设备集群及存储介质

Publications (1)

Publication Number Publication Date
CN117931612A true CN117931612A (zh) 2024-04-26

Family

ID=90763270

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211265274.4A Pending CN117931612A (zh) 2022-10-17 2022-10-17 测试用例生成方法、装置、计算设备集群及存储介质

Country Status (1)

Country Link
CN (1) CN117931612A (zh)

Similar Documents

Publication Publication Date Title
CN108415832B (zh) 接口自动化测试方法、装置、设备及存储介质
CN108346028B (zh) 一种业务审批处理方法、装置及系统
US10567320B2 (en) Messaging balancing and control on blockchain
US9003478B2 (en) Enforcement of conditional policy attachments
US20210385251A1 (en) System and methods for integrating datasets and automating transformation workflows using a distributed computational graph
CN113779444B (zh) 接口开发方法、零代码引擎和零代码数据接口开发系统
CN110958237A (zh) 一种权限校验的方法和装置
CN109218368A (zh) 实现Http反向代理的方法、装置、电子设备和可读介质
US11546380B2 (en) System and method for creation and implementation of data processing workflows using a distributed computational graph
US20180196647A1 (en) Application Programming Interface Discovery Using Pattern Recognition
CN113449022A (zh) 一种处理业务请求的方法和装置
CN111625464A (zh) 接口的测试方法、装置、存储介质和处理器
CN109582317A (zh) 用于调试寄宿应用的方法和装置
CN111935092B (zh) 一种基于第三方应用的信息交互方法、装置和电子设备
CN112559024A (zh) 一种生成交易码变更列表的方法和装置
CN110049106B (zh) 业务请求处理系统及方法
CN111414154A (zh) 前端开发的方法、装置、电子设备和存储介质
CN113726855B (zh) 服务聚合方法、装置、电子设备以及计算机可读存储介质
CN113535565B (zh) 一种接口用例生成方法、装置、设备和介质
CN117931612A (zh) 测试用例生成方法、装置、计算设备集群及存储介质
CN115374207A (zh) 业务处理方法及装置、电子设备和计算机可读存储介质
CN112783903B (zh) 生成更新日志的方法和装置
CN113742235A (zh) 一种校验代码的方法和装置
CN113778704A (zh) 接口调用方法及装置
CN113592645A (zh) 数据验证的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication