CN117234935B - 基于虚幻引擎的测试方法、装置、电子设备及存储介质 - Google Patents

基于虚幻引擎的测试方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117234935B
CN117234935B CN202311269872.3A CN202311269872A CN117234935B CN 117234935 B CN117234935 B CN 117234935B CN 202311269872 A CN202311269872 A CN 202311269872A CN 117234935 B CN117234935 B CN 117234935B
Authority
CN
China
Prior art keywords
test
user
test user
function
component
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.)
Active
Application number
CN202311269872.3A
Other languages
English (en)
Other versions
CN117234935A (zh
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.)
Chongqing Seres New Energy Automobile Design Institute Co Ltd
Original Assignee
Chongqing Seres New Energy Automobile Design Institute 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 Chongqing Seres New Energy Automobile Design Institute Co Ltd filed Critical Chongqing Seres New Energy Automobile Design Institute Co Ltd
Priority to CN202311269872.3A priority Critical patent/CN117234935B/zh
Publication of CN117234935A publication Critical patent/CN117234935A/zh
Application granted granted Critical
Publication of CN117234935B publication Critical patent/CN117234935B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本申请涉及测试技术领域,提供了一种基于虚幻引擎的测试方法、装置、电子设备及存储介质。该方法包括:在虚幻引擎中,为待测试应用创建测试主流程管理器,主流程管理器为继承于虚幻引擎的命令行基类的类;在主流程管理器的入口函数中创建测试对象,配置实现系统事件的回调函数并设置环境变量;在入口函数中配置循环参数;调用入口函数,基于测试对象、回调函数以及环境变量编译待测试应用得到待测试应用的可执行文件;在虚幻引擎中通过命令行启动可执行文件,基于循环参数调用计时函数,在每次循环中对待测试应用进行测试。该方法能够在虚幻引擎中直接实现应用测试,测试过程可控,覆盖全面,效率高。

Description

基于虚幻引擎的测试方法、装置、电子设备及存储介质
技术领域
本申请涉及测试技术领域,尤其涉及一种基于虚幻引擎的测试方法、装置、电子设备及存储介质。
背景技术
虚幻引擎又称UE(Unreal Engine)引擎,是一个被广泛使用的应用开发引擎。在利用UE引擎完成应用开发后,需要对应用进行测试。目前常见的测试方法包括:人工测试、自动化测试、利用脚本等工具首先进行人工操作,记录点击轨迹然后进行测试以及利用人工智能工具进行图像识别,进而进行测试等。这些测试方法或者效率较低,或者覆盖不全面,或者测试过程不可控。
发明内容
有鉴于此,本申请实施例提供了一种基于虚幻引擎的测试方法、装置、电子设备及存储介质,以解决现有技术中测试效率低的问题。
本申请实施例的第一方面,提供了一种基于虚幻引擎的测试方法,包括:
在虚幻引擎中,为待测试应用创建测试主流程管理器,主流程管理器为继承于虚幻引擎的命令行基类的类;
在主流程管理器的入口函数中创建测试对象,配置实现系统事件的回调函数并设置环境变量;
在入口函数中配置循环参数;
调用入口函数,基于测试对象、回调函数以及环境变量编译待测试应用得到待测试应用的可执行文件;
在虚幻引擎中通过命令行启动可执行文件,基于循环参数调用计时函数,在每次循环中对待测试应用进行测试。
本申请实施例的第二方面,提供了一种基于虚幻引擎的测试装置,包括:
创建模块,被配置为在虚幻引擎中,为待测试应用创建测试主流程管理器,主流程管理器为继承于虚幻引擎的命令行基类的类;
配置模块,被配置为在主流程管理器的入口函数中创建测试对象,配置实现系统事件的回调函数并设置环境变量;
配置模块还被配置为在入口函数中配置循环参数;
编译模块,被配置为调用入口函数,基于测试对象、回调函数以及环境变量编译待测试应用得到待测试应用的可执行文件;
测试模块,被配置为在虚幻引擎中通过命令行启动可执行文件,基于循环参数调用计时函数,在每次循环中对待测试应用进行测试。
本申请实施例的第三方面,提供了一种电子设备,包括存储器、处理器以及存储在存储器中并且可在处理器上运行的计算机程序,该处理器执行计算机程序时实现上述方法的步骤。
本申请实施例的第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
本申请实施例与现有技术相比存在的有益效果是:本申请实施例通过在虚幻引擎中创建主流程管理器,在主流程管理器的入口函数中创建测试对象,配置实现系统事件的回调函数并设置环境变量,在入口函数中配置循环参数,调用入口函数,基于测试对象、回调函数以及环境变量,编译待测试应用得到待测试应用的可执行文件,最后在在虚幻引擎中通过命令行启动可执行文件,基于循环参数调用计时函数,在每次循环中对待测试应用进行测试,能够在虚幻引擎中直接实现应用测试,测试过程可控,覆盖全面,效率高。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本申请实施例的应用场景的场景示意图。
图2是本申请实施例提供的一种基于虚幻引擎的测试方法的流程示意图。
图3是本申请实施例提供管理者之间的通信网结构示意图。
图4是本申请实施例提供的基于循环参数调用计时函数,在每次循环中对待测试应用进行测试的方法的流程示意图。
图5是本申请实施例提供的配置实现系统事件的回调函数的方法的流程示意图。
图6是本申请实施例提供的配置实现系统事件的回调函数的方法的流程示意图。
图7是本申请实施例提供一种基于虚幻引擎的测试方法的流程示意图。
图8是本申请实施例提供一种基于虚幻引擎的测试方法的流程示意图。
图9是本申请实施例提供的一种基于虚幻引擎的测试装置的示意图。
图10是本申请实施例提供的电子设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
下面将结合附图详细说明根据本申请实施例的一种基于虚幻引擎的测试方法和装置。
图1是本申请实施例的应用场景的场景示意图。该应用场景可以包括终端设备1、2和3、服务器4以及网络5。
终端设备1、2和3可以是硬件,也可以是软件。当终端设备1、2和3为硬件时,其可以是具有显示屏且支持与服务器4通信的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等;当终端设备1、2和3为软件时,其可以安装在如上的电子设备中。终端设备1、2和3可以实现为多个软件或软件模块,也可以实现为单个软件或软件模块,本申请实施例对此不作限制。进一步地,终端设备1、2和3上可以安装有各种应用,例如数据处理应用、即时通信工具、社交平台软件、搜索类应用、购物类应用等。
服务器4可以是提供各种服务的服务器,例如,对与其建立通信连接的终端设备发送的请求进行接收的后台服务器,该后台服务器可以对终端设备发送的请求进行接收和分析等处理,并生成处理结果。服务器4可以是一台服务器,也可以是由若干台服务器组成的服务器集群,或者还可以是一个云计算服务中心,本申请实施例对此不作限制。
需要说明的是,服务器4可以是硬件,也可以是软件。当服务器4为硬件时,其可以是为终端设备1、2和3提供各种服务的各种电子设备。当服务器4为软件时,其可以是为终端设备1、2和3提供各种服务的多个软件或软件模块,也可以是为终端设备1、2和3提供各种服务的单个软件或软件模块,本申请实施例对此不作限制。
网络5可以是采用同轴电缆、双绞线和光纤连接的有线网络,也可以是无需布线就能实现各种通信设备互联的无线网络,例如,蓝牙(Bluetooth)、近场通信(Near FieldCommunication,NFC)、红外(Infrared)等,本申请实施例对此不作限制。
被测试用户可以部署于服务器,一个测试用户可以对应一个终端。服务器中可以配置有虚幻引擎,通过在虚幻引擎中模拟出测试用户并对应用进行操作,来实现应用测试。
需要说明的是,终端设备1、2和3、服务器4以及网络5的具体类型、数量和组合可以根据应用场景的实际需求进行调整,本申请实施例对此不作限制。
上文提及,UE引擎是一个被广泛使用的应用开发引擎。例如,可以利用虚幻引擎开发智能驾车模拟系统,该模拟系统可以在普通系统应用中开发实现,并运行于手机或其他终端的桌面;该模拟系统还可以在虚拟现实(Virtual Reality,VR)系统、增强现实(Augmented Reality,AR)系统或者混合显示(Mixed Reality,MR)系统中开发实现。在该智能驾车模拟系统中,用户可以执行登录、行为、传送到虚拟场景、和其他用户加好友、购车、发送聊天消息、进行赛车竞赛、组队出游、进行车控、基于空中下载技术(Over-the-AirTechnology,OTA)的升级等操作。同时,开发完成的智能驾车模拟系统可以应用的方式部署于各类终端,以供用户使用。
在利用UE引擎完成该智能驾车模拟系统应用开发后,需要对该应用进行测试。通过对模拟用户进行的一系列操作进行测试,可以对应用的功能和性能进行评估,进而为应用的迭代、改进提供依据。其中,模拟用户进行的一系列操作可以是:登录、行为、传送到虚拟场景、互加好友、购车积分、发送消息(包括群发消息)、开展汽车竞赛、组队出游、进行车控、升级车辆(包括OTA升级和软硬件升级)等。
目前常见的测试方法包括:人工测试、自动化测试、利用脚本等工具首先进行人工操作,记录点击轨迹然后进行测试以及利用人工智能工具进行图像识别,进而进行测试等。这些测试方法或者效率较低,或者覆盖不全面,或者测试过程不可控。
鉴于此,本申请实施例提供了一种基于虚幻引擎的测试方法,通过在虚幻引擎中创建主流程管理器,在主流程管理器的入口函数中创建测试对象,配置实现系统事件的回调函数并设置环境变量,在入口函数中配置循环参数,调用入口函数,基于测试对象、回调函数以及环境变量,编译待测试应用得到待测试应用的可执行文件,最后在在虚幻引擎中通过命令行启动可执行文件,基于循环参数调用计时函数,在每次循环中对待测试应用进行测试,能够在虚幻引擎中直接实现应用测试,测试过程可控,覆盖全面,效率高。
图2是本申请实施例提供的一种基于虚幻引擎的测试方法的流程示意图。图2的基于虚幻引擎的测试方法可以由图1的服务器执行。如图2所示,该基于虚幻引擎的测试方法包括如下步骤:
在步骤S201中,在虚幻引擎中,为待测试应用创建测试主流程管理器。
其中,主流程管理器为继承于虚幻引擎的命令行基类的类。
在步骤S202中,在主流程管理器的入口函数中创建测试对象,配置实现系统事件的回调函数并设置环境变量。
在步骤S203中,在入口函数中配置循环参数。
在步骤S204中,调用入口函数,基于测试对象、回调函数以及环境变量编译待测试应用得到待测试应用的可执行文件。
在步骤S205中,在虚幻引擎中通过命令行启动可执行文件,基于循环参数调用计时函数,在每次循环中对待测试应用进行测试。
通常情况下,基于UE引擎开发应用的操作在正常模式下进行。开发者可以进入UE引擎的“编辑器模式”,通过UE引擎提供的开发窗口进行应用的业务逻辑开发,例如拖动控件、构造地图、导入资产(如地图、车辆信息、用户信息、应用代码)等。UE引擎自动调用自己的入口main函数进行启动,并定时调用自己的计时tick函数,保持程序的正常持续运行,直到程序被退出。其中,main函数是程序的启动函数,程序启动后,main函数中有一个无限的循环,该循环每秒执行固定次数,例如60次,每次循环都会调用UE引擎的tick函数,tick函数让应用可以一直运行下去。
本申请实施例中,该测试方法需要在UE引擎的命令行Commandlet模式下进行。该模式下UE引擎没有开发窗口,开发者可以通过在系统的控制台窗口中输入命令行的方式来启动UE引擎的这项功能。此时,开发者需要手动实现main函数并通过命令行来调用它,并且,在main的无限循环中,需要手动调用UE引擎的tick函数,让应用无限运行下去直到被结束。
本申请实施例中,可以首先在虚幻引擎中,为待测试应用创建测试主流程管理器。其中,主流程管理器为继承于虚幻引擎的命令行基类的类。一示例中,可以在被测试应用的工程下,创建一个测试模块例如文件夹,在其中创建一个主流程管理器。具体的,可以构造一个继承于UE引擎的命令行Commandlet基类的类,类名可以自取,如:“主流程管理器类”,该类即为主流程管理器。进一步的,可以为基类的成员变量commandletname赋值为自定义字符串,如“测试方案”,该字符串即为主流程管理器的名字。更进一步的,还可以重写基类的入口函数main,以使UE引擎在启动测试后调用该main入口函数,从而启动测试程序。
本申请实施例中,可以在主流程管理器的入口函数中创建测试对象,配置实现系统事件的回调函数并设置环境变量。其中,在主流程管理器的入口函数中创建测试对象可以是在main函数中创建测试用户管理者并创建多个测试用户实例,测试用户和管理者的数量由命令行入参决定,具体参见后文详细描述,此处不再赘述。
本申请实施例中,可以在入口函数中配置循环参数。即,可以在main函数中写一个无限while循环,该循环每秒执行固定次数,例如60次。该while循环中可以包括以下内容:对测试用户管理者调用tick函数,以使测试管理者遍历自己维护的测试用户数组,对每个测试用户调用它自己的tick函数;以及调用引擎提供的tick函数,让程序可以无限运行下去,直到被结束。
本申请实施例中,编译待测试应用,得到待测试应用的可执行文件。UE引擎开发的应用可以发布在目前已知的所有主流平台和设备上,如X-BOX、PS、Windows、苹果系产品如iPhone、苹果电脑等等。本方案以Windows平台举例,如果应用在Windows端执行,可以对待测试应用进行编译得到exe可执行文件。该exe执行文件即为待测试应用的执行文件。当进行应用测试操作时,只需要在测试设备的命令行程序中启动exe可执行文件,并加上参数–commandlet=测试工具名字即可。其中,参数“–commandlet=”即前文所述的主流程管理器的名字。
本申请实施例中,可在测试设备的命令行程序中,通过命令行启动可执行文件,基于循环参数调用计时函数,在每次循环中对待测试应用进行测试。其中,命令行的格式可以为“待测试应用工程名.exe –commandlet=测试工具名字 -nullrhi -测试用户个数配置文件=对应文件名 -测试用户的组件配置文件=对应文件名 -测试用户的配置文件=对应文件名 -测试配置文件=对应文件名”。也就是说,命令行的命令行入参可以包括:渲染开关、测试用户个数配置文件、测试用户组件配置文件、测试用户配置文件和测试配置文件。
其中,针对渲染开关入参,由于测试用户不是真实用户,所以通常也不需要渲染功能,测试时可以设置其关闭以提升性能。但是在某些测试用例下,需要模拟真实用户,所以也可以打开这项功能。在UE引擎中,渲染开关默认是开启的,如果需要关闭,可以在命令行中加入-nullrhi。
针对测试用户个数配置文件,其配置了测试用户的分组个数,即管理者的个数,也配置了每个分组下的测试用户个数。需要说明的是,测试对象包括测试用户和管理者,每个管理者包括一个测试用户组,每个测试用户组中至少包括一个测试用户。
针对测试用户组件配置文件,其配置了每个测试用户的具体组件,其中每个测试用户的组件个数和内容可以不同。通常而言,可以先提供一个通用模板,也就是大多数测试用户需要配置的组件,再将少数特殊用户的组件进行具体配置。
针对测试用户配置文件,其配置了每个测试用户的名称和分组名。其中,每个测试用户都有自己的名称,该名称在所有测试运行中都是唯一的。由于该测试方法可以运行多次,间断之后重新启动命令行进行运行,可能需要继续上次未完成的测试。若上次运行的测试用户要继续执行下去,名称可以作为一个测试用户实例的唯一标识。测试用户名称可以是随机生成的字符串,也可以用简单的规则生成。例如,可以用分组名+测试用户在管理者数组中的序列值的方式生成测试用户的名称,如:分组1 _1,分组1 _2,分组1 _3。
进一步的,因为一个管理者管理一个测试用户组,所以分组名也就是管理者的名字。分组名也要求在所有测试运行中唯一。分组名字可以是随机生成的字符串,也可以用简单的规则生成。例如,以其所在领域为名,如:服务器1,服务器2。或者,以其业务逻辑为名,如:VIP用户组,普通用户组。
针对测试配置文件,其配置了本次待测试应用所在的服务器信息,如IP和端口,以及本次测试需要用到的组件相关的内部测试命令,如组队出游请求,攻击指令等。需要说明的是,以上各配置文件可以合并为一个配置文件,也可以拆分为多个。
根据本申请实施例提供的技术方案,通过在虚幻引擎中创建主流程管理器,在主流程管理器的入口函数中创建测试对象,配置实现系统事件的回调函数并设置环境变量,在入口函数中配置循环参数,调用入口函数,基于测试对象、回调函数以及环境变量,编译待测试应用得到待测试应用的可执行文件,最后在在虚幻引擎中通过命令行启动可执行文件,基于循环参数调用计时函数,在每次循环中对待测试应用进行测试,能够在虚幻引擎中直接实现应用测试,测试过程可控,覆盖全面,效率高。
本申请实施例中,测试对象包括测试用户和管理者,每个管理者包括一个测试用户组,每个测试用户组中至少包括一个测试用户。进一步的,创建测试对象包括创建管理者的数量、每个管理者的测试用户组中的测试用户数量、每个测试用户的配置以及每个测试用户的组件配置。测试用户的配置包括测试用户的名称和分组名,测试用户的组件配置包括测试用户需要的功能组件。
多个测试用户可以根据业务需求,被划分为多个分组,每个管理者管理一组测试用户,因此管理者可以有多个。针对每个分组的业务特性,管理者会有自己独有的功能。例如,若一个测试用户的分组是VIP用户,他们拥有对某些地图的自由访问权限,因此这类分组的管理者需要配置某些地图的名单,并设置权限开关。又如,若一个测试用户的分组是新手用户,业务需求规定它们不拥有在群聊频道发言的权利,或不能进入某些地图去驾车,因此这类分组的管理者需要配置某些地图的信息,并设置群聊频道权限开关。
一个分组内的测试用户也可以没有任何业务逻辑的关联,仅仅是因为部署在了同一个领域,领域的意思包括:同一个进程,同一台机器,同一个网络。一个管理者管理一组测试用户,管理者可以有多个,管理者之间的通信是网状结构。管理者之间的通信网结构可以如图3所示。
管理者之间的通信方式包括并不限于:进程间的管道通信、机器之间的网络通信(包括HTTP和SOCKET长连接通信)、局域网之间的通信、依赖第三方商业机构提供的消息队列服务进行通信、等等。采用这种方式,本申请实施例提供的技术方案可以对应用的服务器程序进行极大限度的模拟压力测试,因为测试用户可以自由选择一种部署方式,因此测试用户的数量是可以极大的,且测试的客户端没有性能上的压力。因为多个测试用户可同时部署在进程、机器、各种网络中,部署在同一领域中的测试用户由一个管理者进行管理,管理者之间的通信手段对测试用户是透明的,而用户之间的通信总是可以准确无误的被传递。
本申请实施例中,测试用户由测试用户类实现,每一测试用户对应一个实例。测试用户类维护一个功能组件序列、一个发件箱、一个收件箱以及自身的成员状态属性,其中,功能组件序列中包括测试用户可执行的功能,发件箱包括测试用户发送消息的消息队列,收件箱包括测试用户接收消息的消息队列,成员状态属性包括开始状态、登录中状态和进行中状态。
本申请实施例中,测试用户类的一个实例代表一个模拟的测试用户,可同时生成多个实例进行多用户测试。进一步的,测试用户类可以维护一个功能组件序列,每个功能组件是用户可以执行的一个功能,例如移动,进入地图,加好友,登录等。其中,功能组件序列可以是功能组件数组、链表、队列、栈、集合等。
本申请实施例中,测试用户类还维护一个发件箱,该发件箱为测试用户发送消息的消息队列。当测试用户需要和其他测试用户进行交互时,它将通信的信息封装在一个数据包中,放到自己的发件箱。数据包可称为信件,信件的内容包括具体通信的业务数据,数据包的发送者信息(即发件人)和接收者信息(即收件人)以及其他信息。其中,若具体通信的业务为聊天则业务数据为聊天内容,若具体通信的业务为交易则业务数据为交易的物品,价格,个数等。进一步的,发件人为本测试用户,收件人是其他测试用户或者所有测试用户,或者是一个分组的用户。这部分信息可称为信封。更进一步的,其他信息可以包括发送时间,包的大小,加密信息等。
本申请实施例中,测试用户类还维护一个收件箱,该收件箱为测试用户接收消息的消息队列。
本申请实施例中,测试用户类还维护自身的成员状态属性,这是一个枚举类型的属性,包括开始、登录中和进行中三种状态。当一个测试用户刚被创建出来时,它处于启动场景,状态被设置为开始。当测试用户切换到登录场景,开始登录时,状态被设置为登录中。当测试用户登录成功,切换到应用场景,状态被设置为进行中。当测试用户退出登录,切换到启动场景,状态被设置为开始。
本申请实施例中,测试用户的行为由状态机进行驱动。应用开发的逻辑都是在每次的刷新中去实现的,刷新频率由UE引擎决定,一般为每秒60次左右。测试用户可以在tick函数中实现自己的逻辑,即测试用户可以在tick函数中判断自己当前的状态,根据当前状态决定下一步的操作,操作完成后扭转自己的状态。
图4是本申请实施例提供的基于循环参数调用计时函数,在每次循环中对待测试应用进行测试的方法的流程示意图。如图4所示,该方法包括如下步骤:
在步骤S401中,基于循环参数调用计时函数,触发管理者在计时函数中遍历自己的测试用户数组,对每个测试用户调用计时函数,触发每个测试用户收取收件箱中的信件,并确定每个测试用户的当前状态。
在步骤S402中,基于循环参数调用计时函数,触发管理者在计时函数中遍历自己的测试用户数组,取出测试用户发件箱中的信件并转发。
在步骤S403中,基于循环参数调用计时函数,触发管理者在计时函数中增加或者删除测试用户数组中的测试用户。
上文提及,应用开发的逻辑都是在每次的刷新中去实现的,因此管理者可以在tick函数中去实现自己的逻辑,包括遍历自己的测试用户数组,对每个测试用户实例调用它的tick函数,访问每个测试用户实例的发件箱,取出信件进行转发,以及根据业务需求,动态增加、删除测试用户实例。
具体的,管理者可以基于循环参数调用计时函数,触发管理者在计时函数中遍历自己的测试用户数组,对每个测试用户调用计时函数,触发每个测试用户收取收件箱中的信件,并确定每个测试用户的当前状态。
进一步的,管理者还可以对测试用户数组进行增删操作。具体的,外部程序可以通过调用这个tick函数接口,让管理者对测试用户数组进行增删操作。管理者负责将外部传入的、新建好的测试用户添加到自己的数组中。管理者还可以在删除数组中的用户实例引用后,销毁这个实例所占内存。
更进一步的,管理者还可以管理层测试用户之间的通信,通信包括模拟用户之间的真实聊天、组队、交易等交互。具体的,可以在管理者的tick函数中,管理者会遍历自己的测试用户数组,对每个测试用户调用它自己的tick函数。当测试用户需要和其他测试用户进行交互时,在本次它自己的tick函数中,它将通信的信息封装在一个数据包中、也就是信件放到发件箱中。在管理者的tick函数中,管理者遍历自己的测试用户数组,检查每个测试用户的发件箱,如有信件则由管理者取出信件,解析其信封内容,得到需要投递去的测试用户即收件者信息,收信者可以是一个或多个,管理者将信件放到收信者的收件箱中。测试用户在本次自己的tick函数中,访问自己的收件箱,取出自己的信件并解析。
本申请实施例中,测试用户的组件配置中,包括如下配置:各测试用户的功能组件的数量和种类相同或者不同;和/或各测试用户的功能组件为独立执行或者并行执行;和/或测试用户的组件配置中,各测试用户的功能组件被配置为启用或者不启用;和/或各个功能组件的使用频率;和/或各个功能组件的优先级。
本申请实施例中,根据业务需求,一个测试用户可拥有的功能组件是可配置,测试人员只要把想要测试的功能配置在测试用户上即可。其中,配置的内容可以包括各测试用户的功能组件的数量和种类、各测试用户的功能组件的执行方式、各测试用户的功能组件是否启用、各个功能组件的使用频率以及各个功能组件的优先级。
其中,每个测试用户的组件个数和种类可以相同也可以不同。例如,测试用户A可以拥有登录组件,地图切换组件和加好友组件;测试用户B可以拥有登录组件,积分组件,车控组件和交易组件。
针对每个组件,可配置自己是独立的(exclusive)还是可并行(concurrent)的。如果组件是独立的,则测试用户在执行这个组件时,不能执行其他组件,例如登陆组件、地图切换组件就是独立的。如果组件是可并行的,则测试用户在执行这个组件时,还可以执行其他可并行组件,例如加好友组件,聊天组件,汽车竞赛组件就是可并行的。
针对每个组件,还可以配置它是启用还是不启用。其中,配置是否启动的实现方式可以是:针对不同应用,开发不同的组件库。将一个应用下的所有组件库存放在一个地方,例如服务器端、客户端的硬盘上、客户端的缓存上。如果存在服务器端,则客户端测试方案在启动时,有一个下载所需组件的过程,客户端测试方案通常会将组件下载到程序运行的内存中,因为这样读取是最快的。测试用户维护的组件数组只是所有配置为启动的组件的一个引用,而不是一份全量拷贝。其中引用是指组件代码的首地址,顺着它可以找到实际的代码块并进行调用。测试用户的组件数组中的组件可以配置为启用或不启用。
针对每个组件,可以配置它的使用频率。不同的应用中,每个组件的使用频率是不一样的。比如登录组件,在一次应用生命周期中会使用一次,而汽车竞赛组件和聊天组件是常用的,加好友组件则没有那么频繁,因此为了模拟真实用户行为,每个组件要设置其频率。其中,频率可以理解为当一个组件执行完成后,下一个组件被测试用户调用的几率是多少。频率可以由配置人员根据应用的性质和过往运营经验配置。
针对每个组件,还可以配置它的优先级。不同的应用中,每个组件的优先级是不一样的。在赛车竞技为主的应用中,汽车竞赛组件和组队出游组件优先级较高;在车控为主的应用中,行为组件优先级较高;在购车应用中,积分组件优先级较高。优先级可以由配置人员根据应用的性质和过往运营经验配置。
以上各类配置可以通过提供配置文件如XML、文本等方式进行配置,也可以通过提供可视化界面如拖拽控件的方式进行配置。例如,可以通过提供可视化界面如拖拽控件的方式进行配置。
具体的配置步骤可以是:将独立的组件代码封装在一起;提供一个可视化界面,一个矩形代表一种组件代码,左侧界面提供所有组件的矩形,这是待配置项;右侧界面是空白的,可以拖入待配置项;当配置人员将矩形从左边界面拖动到右侧界面,则代表对测试用户加入了一个组件;如果将矩形从右侧界面移除,则代表对测试用户删除了一个组件;当配置人员点击确认按钮后,将所有矩形代表的组件代码按矩形所在位置组合在一起,形成一系列代码。此外,还可以根据业务需要,将一个大的组件的代码进行拆分,形成小的组件代码。小的组件也可以通过矩形在界面上进行表示、被配置人员拖拽、生成代码。
本申请实施例中,功能组件包括登录组件、行为组件、地图切换组件、加好友组件、积分组件、发送消息组件、汽车竞赛组件、组队出游组件、车控组件和升级组件中的至少之一。其中,每个组件就是一个测试用户可以执行的功能。如前,每个组件都有一个tick函数,这是提供给外部调用的接口,tick函数中就是写的该组件的逻辑。
本申请实施例中,登录组件包括登入功能和登出功能。其中,登入采用如下方式进行测试:基于循环参数调用计时函数,触发管理者在计时函数中遍历自己的测试用户数组,对每个测试用户调用计时函数;测试用户在计时函数中,调用登录组件的计时函数;在登录组件的计时函数中,调用测试用户的进入登录场景函数,确定测试用户的当前状态为登录中状态;随机延迟特定时长后,调用测试用户的登录函数,执行测试用户登录操作,并基于预设登录成功概率确定用户登录是否成功;响应于登录成功,通过登录函数发送登录请求,接收服务器应答;响应于登录不成功,设置测试用户的状态为开始状态。
具体的,可以在测试用户的tick函数中,调用登录组件的tick函数,在其中写步骤:判断测试用户的当前状态,如果为开始,则去登录,如果为已登录,则去应用场景,如果为进行中,则调用自己的函数;去登录。登录的具体逻辑为:调用UE引擎的进入登录场景函数,并设置测试用户当前状态为“登录中”,对比真实用户理解就是,用户现在看到了登录界面。然后随机延迟n秒后,n为正整数,调用测试用户的登录函数,对比真实用户理解就是,用户输入好了账号,点击了去登录按钮。其中,随机延迟n秒的意义在于避免数据拥堵,因为如果不进行延迟,则所有测试用户都在同一时间去登录,会对服务器和测试客户端造成性能压力,也不合理,因为所有真实用户不是在同一时间去登录的。
接下来,在登录函数对服务器发送实际的登录请求之前,设置一个成功率,如30%;成功率由业务需求决定,也可以根据测试效果或者测试客户端的机器性能动态调整。设置登录成功率的意义也在于避免数据拥堵。如果本次登录没有成功,设置测试用户的状态为“开始”。如果本次登录成功,则让登录函数对服务器发送实际的登录请求,等待服务器应答。在服务器给予响应、连接成功后,UE引擎会发送建立连接成功的广播通知。登录组件接受并处理这个通知。判断通知是否是发给自己的,如果不是给自己的,丢弃;如果是给自己的,调用使用应用函数,并设置测试用户当前状态为“进行中”。
本申请实施例中,登出功能可以采用如下方式进行测试:响应于测试用户发送登出指示,调用登出函数,发送登出请求至服务器;响应于接收到服务器的确定相应,断开与服务器的连接,设置测试用户的状态为开始状态,并清理和释放已使用的应用资源。
也就是说,当测试用户登出,可以调用登出函数,服务器给予响应后,断开和服务器之间的连接,清理相关资源例如图片、配置文件等,并设置测试用户当前状态为“开始”。
本申请实施例中,行为组件可以采用如下方式进行测试:在组件配置中,配置多个行为资产,每一行为资产对应测试用户的一种行为;调用行为资产或行为资产组合,模拟测试用户在应用中的行为。
具体的,行为组件的tick函数逻辑为,模拟用户的键盘输入:上下左右(例如WSAD键的按下),实现测试用户的上下左右移动。UE引擎可以提供各种资产,实际是UE引擎提供的代码,调用其对应的资产,即可完成对应的功能。例如:模拟用户左右移动,就调用其“左右移动资产”;模拟用户前后移动,就调用其“前后移动资产”;模拟用户鼠标输入,就调用其“鼠标资产”。
本申请实施例中,地图切换组件可以采用如下方式进行测试:在虚幻引擎中进行远程进程调用,调用时携带目的地坐标;接收服务器发送的专用服务器,将虚幻引擎的地图切换至专用服务器,并同步用户数据。其中,专用服务器由服务器基于目的地坐标和服务器中的原型进程确定。
在应用中,测试用户会在不同的地图中切换。例如从一个地图切换到新地图。该地图切换组件的tick函数逻辑,即用户从一个地图切换至新地图的实现逻辑为,客户端进行远程进程调用(Remote Procedure Call,RPC)调用,其携带的数据为需要切换到的目的地坐标;当服务器收到调用后,服务器生成一个在z坐标上无限长的线,并寻找该线和地图模型重合的点,将该点确定为用户(actor)当前的位置并更新摄像视角;在应用运行的服务器上运行着一个名为原型(prototype)的进程,它会通过缓存数据库跟调度服务器进行交互,调度服务器可以通知到prototype;prototype调用服务器中Linux操作系统的fork函数,创建新的专用服务器(Dedicated Server,DS),该DS为UE引擎的一个模拟服务器端;新的DS会去缓存服务器将自己注册,并通知调度服务器;调度服务器将这个DS分配给客户端;客户端接受到分配消息后,将自己的地图切换到新的DS上,并同步用户数据等,即完成了切换到新地图的过程。
本申请实施例中,加好友组件可以采用如下方式进行测试:发送加好友名单组至服务器,加好友名单组中包括一个或多个随机待测试用户;在虚幻引擎中调用加好友测试命令,对加好友名单组中的待测试用户执行加好友操作。
也就是说,加好友组件的tick函数逻辑为,向被测试应用的服务器请求一组随机的用户名单;调用应用的加好友测试命令,对用户名单的好友进行逐个添加。
本申请实施例中,积分组件可以采用如下方式进行测试:调用测试命令,为测试用户分配外观和装备;调用应用的积分接口,将积分属性添加至测试用户;基于积分属性的参数(如积分值、积分等级等)重新计算所述测试用户的购买力评估值。
积分组件的tick函数逻辑为,模拟输入被测试应用提供的内部测试命令,给测试用户分配积分;调用积分接口,将积分属性添加至测试用户;积分将参与后继购车计算。
本申请实施例中,发送消息组件可以采用如下方式进行测试:获取待发送的广播消息,广播消息包括消息发送者标识、发送内容、发送频道中的至少一项;调用测试命令,对广播消息进行广播。即,可以调用被测试应用提供的内部测试命令,传入对应参数如发送者发送的话语,频道等,进行广播。
本申请实施例中,汽车竞赛组件可以采用如下方式进行测试:获取测试用户的等级;调用测试命令,确定与测试用户的绑定车辆匹配的汽车竞赛对象参数;基于汽车竞赛对象参数生成目标汽车竞赛对象,或者基于汽车竞赛对象参数在已有汽车竞赛对象组中确定目标汽车竞赛对象;调用测试命令,向测试用户发送比赛指令,并调用车控组件和所述目标汽车竞赛对象进行汽车竞赛,直至获取比赛结果;响应于目标汽车竞赛对象被击败,调用测试命令,收集目标参考汽车对象的行车数据并添加至测试用户。汽车竞赛对象可以是其他测试用户或者赛车,也可以是应用提供的参考对象,如示例车、示例车手等。
也就是说,汽车竞赛组件的tick函数逻辑为,调用被测试应用提供的内部测试命令,传入和当前测试用户等级匹配的参数,生成一个模板汽车竞赛对象,例如一个赛车手,或不生成一个赛车手,而是在地图上随机选择一个赛车手;调用被测试应用提供的内部测试命令,对测试用户下达比赛指令,并调用车控组件,直到比赛出结果;比赛完成后,调用被测试应用提供的内部测试命令,收集收集参考汽车对象的行车数据并添加至所述测试用户。
本申请实施例中,组队出游组件可以采用如下方式进行测试:向服务器请求并获取测试用户的用户列表;从用户列表中选择一个或者多个用户,调用测试命令,发送组队出游请求;接收一个或者多个用户发送的组队出游请求响应信息。其中,组队出游请求响应信息由一个或者多个用户,调用测试命令根据预设应答概率确定,预设应答概率包括预设接收概率和/或预设拒绝概率。
也就是说,组队出游组件的tick函数逻辑为,向被测试应用的服务器请求测试用户的用户列表数据;从测试用户的好友列表中选取一个到多个用户,调用被测试应用提供的内部测试命令,发送组队出游请求;测试用户会接受到服务器发送的组队出游请求,调用被测试应用提供的内部测试命令,根据预设的几率,接受或拒绝。
本申请实施例中,车控组件可以采用如下方式进行测试:在组件配置中,配置多个按键资产,每一按键资产对应应用的一种车控按键;调用按键资产或按键资产组合,模拟测试用户在应用中的车控操作,执行对应的车控。
也就是说,车控可以通过模拟用户按键来完成,首先获取被测试应用的技能按钮列表,例如A是开空调,B是关车门,等等,然后调用UE提供的“按键资产”,模拟对应的按钮,执行车控。
本申请实施例中,升级组件可以采用如下方式进行测试:调用测试命令,升级测试用户的级别;和/或调用测试命令,将车辆升级所需的零件配置下发至测试用户;和/或调用测试命令,升级测试用户的车辆或者测试用户的角色级别。
具体的,升级分为用户升级、车辆升级、角色升级。其中,用户升级可以通过调用被测试应用提供的内部测试命令,直接升级用户的驾车技能的级数实现。车辆升级和角色升级可以通过调用被测试应用提供的内部测试命令,将所需零件配置下发到测试用户的所绑车辆中实现,或者通过调用被测试应用提供的内部测试命令,直接升级车辆或角色的级数实现。
本申请实施例中,实现系统事件的回调函数包括加载完成worldchanged函数,worldchanged函数在场景加载完成后被虚幻引擎调用。
图5是本申请实施例提供的配置实现系统事件的回调函数的方法的流程示意图,如图5所示,该方法包括如下步骤:
在步骤S501中,管理者遍历自己的测试用户组,调用每个测试用户的计时函数。
在步骤S502中,接收每个测试用户返回的当前场景的唯一标识,基于唯一标识确定每个测试用户场景。
在步骤S503中,基于场景设置每个测试用户的状态。
本申请实施例中,管理者可以遍历自己的测试用户组,调用每个测试用户的计时函数,并接收每个测试用户返回的当前场景的唯一标识,基于唯一标识确定每个测试用户场景,最后基于场景设置每个测试用户的状态。
具体的,本申请实施例提供的技术方案中包括三类场景:初始化场景,即普通用户进入应用时看到的第一个场景;登录场景,即普通用户登录看到的场景,包括登录界面,登录中界面,登录完成界面;以及应用场景,例如新手地图,一个城市的场景,地图。
当这些场景加载完成时,UE系统会调用worldchanged函数,worldchanged函数的回调逻辑为,管理者遍历自己的测试用户数组,调用每个测试用户的tick函数;接收当前场景的唯一标识,通过它判断目前测试用户处于哪个场景中,从而设置测试用户的状态,若为初始化场景,则设置用户状态为“开始”,若为登录场景,则设置用户状态为“登录中”,若为应用场景,则设置用户状态为“进行中”。
本申请实施例中,实现系统事件的回调函数还包括网络状态失败networkfailure函数,networkfailure函数在网络状态变为未连接时被虚幻引擎调用。
图6是本申请实施例提供的配置实现系统事件的回调函数的方法的流程示意图,如图6所示,该方法包括如下步骤:
在步骤S601中,管理者遍历自己的测试用户组,将每个测试用户的状态设置为初始状态。
在步骤S602中,清理和释放已使用的应用资源。
本申请实施例中,管理者可以遍历自己的测试用户组,将每个测试用户的状态设置为初始状态,并清理和释放已使用的应用资源。
也就是说,在当前网络状态变成未连接时,UE系统会检测到,并调用该networkfailure函数,该worldchanged函数的回调逻辑为,管理者遍历自己的测试用户数组,将每个测试用户的状态置为初始,并清理和释放应用中时使用的相关资源。
本申请实施例中,环境变量包括客户端判断环境变量、服务器判断环境变量、编辑器判断环境变量和退出判断环境变量。
具体的,在测试时可以将环境变量GIsClient设置为false。其中,GIsClient的含义是指目前运行的UE是否为一个客户端,如果值为true代表是客户端,false则不是。在测试环境下,需要将GIsClient设置为false。
进一步的,在测试时还可以将环境变量GIsServer设置为false。其中,GIsServer的含义是指目前运行的UE是否为一个服务器,如果值为true代表是服务器,false则不是。在测试环境下,需要将GIsServer设置为false。
更进一步的,在测试时还可以将环境变量GIsEditor设置为true。其中,GIsEditor的含义是指目前运行的UE是否为一个编辑器,如果值为true代表是编译器,false则不是。在测试环境下,需要使用编辑器进行操作,因此需要将GIsEditor设置为true。
同时,在测试时还可以将环境变量GIsRequestExit设置为false。其中,GIsRequestExit的含义是指是否申请退出,它的默认值为true。
图7是本申请实施例提供一种基于虚幻引擎的测试方法的流程示意图。其中,图7所示实施例中的步骤S701至步骤S705与图2所示实施例中的步骤S201至步骤S205基本相同,此处不再赘述。如图7所示,该方法还包括如下步骤:
在步骤S706中,生成测试报告。
其中,测试报告包括业务相关统计数据和业务无关统计数据。
本申请实施例中,在测试完成后,还可以基于测试数据生成测试报告。其中,测试报告包括业务相关统计数据和业务无关统计数据。
本申请实施例中,业务相关统计数据可以包括等级分布、积分分布和卡点检测。其中,等级分布是指,当测试用例运行一段时间后,各个测试用户的等级会不同,由此可得到所有用户的等级分布情况,从而检测等级配置系统是否有误。例如:测试用户仅靠开车漫游就成为了满级用户,说明等级分配系统存在bug,需整改。积分分布是指,当测试用例运行一段时间后,各个测试用户的积分会不同,由此可得到所有用户的积分分布情况,从而检测积分分配系统是否有误。例如:测试用户仅靠车控操作就取得了很大数量的积分,或者达到了很高的积分等级,说明积分分配系统存在bug,需整改。卡点检测是指,当测试用例运行一段时间后,各个测试用户在地图上的分布是随机的,离散的,由此可得到由此可得到所有用户的漫游分布情况,从而检测地图或任务分配系统或用户成长线配置是否存在错误。例如:某个地图上的点聚集了大量测试用户,则这个地方可能地图存在bug,可能是一个卡点(用户行车到这里就被卡住了出不去),需整改。又如:某个地图或者建筑物处聚集了大量测试用户,则这个行车任务可能存在bug,可能是某个任务让用户到了这里,却进行不下去,需整改。
业务无关统计数据可以包括服务器和客户端的CPU使用情况、服务器和客户端的内存占用情况、收/发的数据包的平均数量、崩溃情况、服务器最多能承受多少测试用户同时在线的准确数据以及网络延迟情况。
具体的,服务器和客户端的CPU使用情况是指,由于在测试时已知在单位时间长度内,同时运行的测试用户个数,因此,可以统计到在上述条件下,服务器、客户端的CPU的使用情况。进一步的,根据统计报告可预测出,在这个数量体积的正常用户下,服务器需要提供多大的算力支持,以及可预测出单个用户使用本应用所需的设备配置。
服务器和客户端的内存占用情况是指,由于在测试时已知在单位时间长度内,同时运行的测试用户个数,因此,可以统计到在上述条件下,服务器、客户端的内存的使用情况。进一步的,根据统计报告可预测出,在这个数量体积的正常用户下,服务器需要提供多大的内存支持,以及可预测出单个用户使用本应用所需的配置属性。
收/发的数据包的平均数量是指,由于在测试时已知在单位时间长度内,同时运行的测试用户个数,因此,可以统计到在上述条件下,当单个测试用户在正常使用应用的情况下收到、发送的数据包的数量、大小,本次测试总共收到、发送的数据包的数量、大小以及平均每人收到、发送的数据包的数量、大小。根据统计报告可以预测出正常用户在一段时间内流量使用量,从而对应用公司购买流量提供了有意义的指导意见。
崩溃情况是指,由于每个测试用户都用一个独立的线程进行运行,当线程产生崩溃,本申请实施例提供的测试方法利用操作系统相关工具进行记录,从而得到崩溃的所有信息,包括调用栈,崩溃时间,从而得到崩溃的具体原因,便于应用解决崩溃问题,实现0崩溃。
服务器最多能承受多少测试用户同时在线的准确数据是指,由于本申请实施例提供的测试方法通过命令行执行,而命令行可以用Shell脚本执行,因此可以写一段Shell脚本程序,随时灵活调整命令行参数中的测试用户个数。这样通过改变测试用户个数对服务器进行压力测试,得出服务器最多能承受多少测试用户同时在线的准确数据。
网络延迟情况是指,本申请实施例提供的测试方法可以统计一个数据包从客户服发出到服务器收到并回复的时间段,这就是网络延迟。通过统计它,可以了解到应用的服务端响应速度,高延迟的服务或模块要进行整改。
图8是本申请实施例提供一种基于虚幻引擎的测试方法的流程示意图。如图8所示,该方法可以首先部署代码;然后运行命令行启动工具,以使主流程管理器开始工作;主流程管理器首先进入main函数,main函数中预先配置了实现系统时间的回调函数,并设置了环境变量,创建了测试用户实例和管理者实例;main函数中还包括循环函数,可以在测试期间无限循环,以每秒60次左右的频率调用逻辑;在每次循环中,管理者调用tick函数,管理者管理多个测试用户,每个测试用户调用tick函数进行测试;每个测试用户具有一个或多个组件,一个组件独立调用tick函数进行测试,或者多个并行组件调用tick函数执行测试;在测试完成后,主流程管理器生成测试报告。
根据本申请实施例提供的技术方案,能够实现对应用的白盒测试,几乎能涵盖所有测试分支;在应用引擎上进行的测试开发,能利用到针对该引擎的所有特性,并能发现该引擎上所开发的应用的特有bug;通过组件组合的形式,有逻辑性的模拟真实用户操作;通过分组用户管理的实施,可将测试用户部署在不同领域的客户端上,仍可进行自由通信;测试功能可根据配置随时增加/减少,数量没有限制,测试范围广的同时,测试针对性很强。
根据本申请实施例提供的技术方案,通过在应用工程下建立测试模块,并用UE引擎提供的commandlet模式启动该模块,将该模块的启动过程进行自定义控制,并建立测试用户对应的类,模拟用户间的通信,模拟用户的各项应用行为,能够达到以下技术效果:
1、模拟多个用户的具体应用行为的测试,将应用具有的功能拆分为组件的形式并支持动态配置。对于每个模拟测试用户,可根据业务需求添加/删除具体行为的功能组件。
2、通过用户管理器对用户进行两种维度的分组,实现多客户端并行部署和无障碍通信;并支持不同模拟测试用户之间模拟真实用户之间的交流。
3、通过动态配置增加、删除用户个数对应用性能进行压力测试和评估。
4、生成有针对性的统计评估报告,有助于预测应用运营维护所需的资源。
上述所有可选技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图9是本申请实施例提供的一种基于虚幻引擎的测试装置的示意图。如图9所示,该基于虚幻引擎的测试装置包括:
创建模块901,被配置为在虚幻引擎中,为待测试应用创建测试主流程管理器,主流程管理器为继承于虚幻引擎的命令行基类的类;
配置模块902,被配置为在主流程管理器的入口函数中创建测试对象,配置实现系统事件的回调函数并设置环境变量;
配置模块902还被配置为在入口函数中配置循环参数;
编译模块903,被配置为调用入口函数,基于测试对象、回调函数以及环境变量编译待测试应用得到待测试应用的可执行文件;
测试模块904,被配置为在虚幻引擎中通过命令行启动可执行文件,基于循环参数调用计时函数,在每次循环中对待测试应用进行测试。
根据本申请实施例提供的技术方案,通过在虚幻引擎中创建主流程管理器,在主流程管理器的入口函数中创建测试对象,配置实现系统事件的回调函数并设置环境变量,在入口函数中配置循环参数,调用入口函数,基于测试对象、回调函数以及环境变量,编译待测试应用得到待测试应用的可执行文件,最后在在虚幻引擎中通过命令行启动可执行文件,基于循环参数调用计时函数,在每次循环中对待测试应用进行测试,能够在虚幻引擎中直接实现针对应用的全面测试,测试过程可控,覆盖全面,效率高。
本申请实施例中,测试对象包括测试用户和管理者,每个管理者包括一个测试用户组,每个测试用户组中至少包括一个测试用户;创建测试对象包括创建管理者的数量、每个管理者的测试用户组中的测试用户数量、每个测试用户的配置以及每个测试用户的组件配置;其中,测试用户的配置包括测试用户的名称和分组名,测试用户的组件配置包括测试用户需要的功能组件。
本申请实施例中,测试用户由测试用户类实现,每一测试用户对应一个实例;测试用户类维护一个功能组件序列、一个发件箱、一个收件箱以及自身的成员状态属性,其中,功能组件序列中包括测试用户可执行的功能,发件箱包括测试用户发送消息的消息队列,收件箱包括测试用户接收消息的消息队列,成员状态属性包括开始状态、登录中状态和进行中状态。
本申请实施例中,基于循环参数调用计时函数,在每次循环中对待测试应用进行测试,包括:基于循环参数调用计时函数,触发管理者在计时函数中遍历自己的测试用户数组,对每个测试用户调用计时函数,触发每个测试用户收取收件箱中的信件,并确定每个测试用户的当前状态;和/或基于循环参数调用计时函数,触发管理者在计时函数中遍历自己的测试用户数组,取出测试用户发件箱中的信件并转发;和/或基于循环参数调用计时函数,触发管理者在计时函数中增加或者删除测试用户数组中的测试用户。
本申请实施例中,测试用户的组件配置中,包括如下配置:各测试用户的功能组件的数量和种类相同或者不同;和/或各测试用户的功能组件为独立执行或者并行执行;和/或测试用户的组件配置中,各测试用户的功能组件被配置为启用或者不启用;和/或各个功能组件的使用频率;和/或各个功能组件的优先级。
本申请实施例中,功能组件包括登录组件、行为组件、地图切换组件、加好友组件、积分组件、发送消息组件、汽车竞赛组件、组队出游组件、车控组件和升级组件中的至少之一。
本申请实施例中,登录组件包括登入功能和登出功能,登入采用如下方式进行测试:基于循环参数调用计时函数,触发管理者在计时函数中遍历自己的测试用户数组,对每个测试用户调用计时函数;测试用户在计时函数中,调用登录组件的计时函数;在登录组件的计时函数中,调用测试用户的进入登录场景函数,确定测试用户的当前状态为登录中状态;随机延迟特定时长后,调用测试用户的登录函数,执行测试用户登录操作,并基于预设登录成功概率确定用户登录是否成功;响应于登录成功,通过登录函数发送登录请求,接收服务器应答;响应于登录不成功,设置测试用户的状态为开始状态;登出功能采用如下方式进行测试:响应于测试用户发送登出指示,调用登出函数,发送登出请求至服务器;响应于接收到服务器的确定相应,断开与服务器的连接,设置测试用户的状态为开始状态,并清理和释放已使用的应用资源。
本申请实施例中,行为组件采用如下方式进行测试:在组件配置中,配置多个行为资产,每一行为资产对应测试用户的一种行为;调用行为资产或行为资产组合,模拟测试用户在应用中的行为。
本申请实施例中,地图切换组件采用如下方式进行测试:在虚幻引擎中进行远程进程调用,调用时携带目的地坐标;接收服务器发送的专用服务器,将虚幻引擎的地图切换至专用服务器,并同步用户数据;其中,专用服务器由服务器基于目的地坐标和服务器中的原型进程确定。
本申请实施例中,加好友组件采用如下方式进行测试:发送加好友名单组至服务器,加好友名单组中包括一个或多个随机待测试用户;在虚幻引擎中调用加好友测试命令,对加好友名单组中的待测试用户执行加好友操作。
本申请实施例中,积分组件采用如下方式进行测试:调用测试命令,为测试用户分配购车所需积分;调用应用的积分接口,将所述积分属性添加至所述测试用户;基于所述积分属性的参数重新计算所述测试用户的购买力评估值。
本申请实施例中,发送消息组件采用如下方式进行测试:获取待发送的广播消息,广播消息包括消息发送者标识、发送内容、发送频道中的至少一项;调用测试命令,对广播消息进行广播。
本申请实施例中,汽车竞赛组件采用如下方式进行测试:获取测试用户的等级;调用测试命令,确定与所述测试用户所绑车辆匹配的汽车竞赛对象参数;基于所述汽车竞赛对象参数生成目标汽车竞赛对象,或者基于所述汽车竞赛对象参数在已有竞赛组中确定目标汽车竞赛对象;调用测试命令,向所述测试用户发送比赛指令,并调用车控组件和所述目标汽车竞赛对象进行汽车竞赛,直至获取比赛结果;响应于所述目标汽车竞赛对象被击败,调用测试命令,收集所述目标参考汽车对象的行车数据并添加至所述测试用户,帮助测试用户改进自身车技。
本申请实施例中,组队出游组件采用如下方式进行测试:向服务器请求并获取测试用户的用户列表;从用户列表中选择一个或者多个用户,调用测试命令,发送组队出游请求;接收一个或者多个用户发送的组队出游请求响应信息;其中,组队出游请求响应信息由一个或者多个用户,调用测试命令根据预设应答概率确定,预设应答概率包括预设接收概率和/或预设拒绝概率。
本申请实施例中,车控组件采用如下方式进行测试:在组件配置中,配置多个按键资产,每一按键资产对应应用的一种车控按键;调用按键资产或按键资产组合,模拟测试用户在应用中的车控操作,执行对应的车控。
本申请实施例中,升级组件采用如下方式进行测试:调用测试命令,升级测试用户的级别;和/或调用测试命令,将车辆升级所需的零件配置下发至测试用户;和/或调用测试命令,升级测试用户的车辆或者测试用户的角色级别。
本申请实施例中,实现系统事件的回调函数包括加载完成函数;加载完成函数在场景加载完成后被虚幻引擎调用,配置实现系统事件的回调函数包括:管理者遍历自己的测试用户组,调用每个测试用户的计时函数;接收每个测试用户返回的当前场景的唯一标识,基于唯一标识确定每个测试用户场景;基于场景设置每个测试用户的状态。
本申请实施例中,实现系统事件的回调函数还包括网络状态失败函数;网络状态失败函数在网络状态变为未连接时被虚幻引擎调用,配置实现系统事件的回调函数包括:管理者遍历自己的测试用户组,将每个测试用户的状态设置为初始状态;清理和释放已使用的应用资源。
本申请实施例中,环境变量包括客户端判断环境变量、服务器判断环境变量、编辑器判断环境变量和退出判断环境变量。
本申请实施例中,命令行的命令行入参包括:渲染开关、测试用户个数配置文件、测试用户组件配置文件、测试用户配置文件和测试配置文件。
本申请实施例中,该装置还包括:生成模块905,被配置为生成测试报告;其中,测试报告包括业务相关统计数据和业务无关统计数据。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
图10是本申请实施例提供的电子设备的示意图。如图10所示,该实施例的电子设备10包括:处理器1001、存储器1002以及存储在该存储器1002中并且可在处理器1001上运行的计算机程序1003。处理器1001执行计算机程序1003时实现上述各个方法实施例中的步骤。或者,处理器1001执行计算机程序1003时实现上述各装置实施例中各模块/单元的功能。
电子设备10可以是桌上型计算机、笔记本、掌上电脑及云端服务器等电子设备。电子设备10可以包括但不仅限于处理器1001和存储器1002。本领域技术人员可以理解,图10仅仅是电子设备10的示例,并不构成对电子设备10的限定,可以包括比图示更多或更少的部件,或者不同的部件。
处理器1001可以是中央处理单元(Central Processing Unit,CPU),也可以是其它通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
存储器1002可以是电子设备10的内部存储单元,例如,电子设备10的硬盘或内存。存储器1002也可以是电子设备10的外部存储设备,例如,电子设备10上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。存储器1002还可以既包括电子设备10的内部存储单元也包括外部存储设备。存储器1002用于存储计算机程序以及电子设备所需的其它程序和数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可以存储在计算机可读存储介质中,该计算机程序在被处理器执行时,可以实现上述各个方法实施例的步骤。计算机程序可以包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电载波信号、电信信号以及软件分发介质等。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (24)

1.一种基于虚幻引擎的测试方法,其特征在于,所述方法包括:
在所述虚幻引擎中,为待测试应用创建测试主流程管理器,所述主流程管理器为继承于虚幻引擎的命令行基类的类;
在所述主流程管理器的入口函数中创建测试对象,配置实现系统事件的回调函数并设置环境变量,其中,所述测试对象包括测试用户和管理者,每个管理者包括一个测试用户组,每个测试用户组中至少包括一个测试用户;
在所述入口函数中配置循环参数;
调用所述入口函数,基于所述测试对象、回调函数以及环境变量编译所述待测试应用得到所述待测试应用的可执行文件;
在所述虚幻引擎中通过命令行启动所述可执行文件,基于所述循环参数调用计时函数,在每次循环中对所述待测试应用进行测试。
2.根据权利要求1所述的方法,其特征在于,所述创建测试对象包括创建管理者的数量、每个管理者的测试用户组中的测试用户数量、每个测试用户的配置以及每个测试用户的组件配置;
其中,所述测试用户的配置包括测试用户的名称和分组名,测试用户的组件配置包括测试用户需要的功能组件。
3.根据权利要求2所述的方法,其特征在于,所述测试用户由测试用户类实现,每一测试用户对应一个实例;
所述测试用户类维护一个功能组件序列、一个发件箱、一个收件箱以及自身的成员状态属性,其中,所述功能组件序列中包括测试用户可执行的功能,所述发件箱包括测试用户发送消息的消息队列,所述收件箱包括测试用户接收消息的消息队列,所述成员状态属性包括开始状态、登录中状态和进行中状态。
4. 根据权利要求3所述的方法,其特征在于,所述基于所述循环参数调用计时函数,在每次循环中对所述待测试应用进行测试,包括:
基于所述循环参数调用计时函数,触发管理者在所述计时函数中遍历自己的测试用户数组,对每个测试用户调用所述计时函数,触发每个测试用户收取收件箱中的信件,并确定每个测试用户的当前状态;和/或
基于所述循环参数调用计时函数,触发管理者在所述计时函数中遍历自己的测试用户数组,取出测试用户发件箱中的信件并转发;和/或
基于所述循环参数调用计时函数,触发管理者在所述计时函数中增加或者删除所述测试用户数组中的测试用户。
5. 根据权利要求2所述的方法,其特征在于,所述测试用户的组件配置中,包括如下配置:
各测试用户的功能组件的数量和种类相同或者不同;和/或
各测试用户的功能组件为独立执行或者并行执行;和/或
所述测试用户的组件配置中,各测试用户的功能组件被配置为启用或者不启用;和/或
各个功能组件的使用频率;和/或
各个功能组件的优先级。
6.根据权利要求2所述的方法,其特征在于,所述功能组件包括登录组件、行为组件、地图切换组件、加好友组件、积分组件、发送消息组件、汽车竞赛组件、组队出游组件、车控组件和升级组件中的至少之一。
7.根据权利要求6所述的方法,其特征在于,所述登录组件包括登入功能和登出功能,所述登入采用如下方式进行测试:
基于所述循环参数调用计时函数,触发管理者在所述计时函数中遍历自己的测试用户数组,对每个测试用户调用所述计时函数;
所述测试用户在所述计时函数中,调用所述登录组件的计时函数;
在所述登录组件的计时函数中,调用测试用户的进入登录场景函数,确定所述测试用户的当前状态为登录中状态;
随机延迟特定时长后,调用测试用户的登录函数,执行测试用户登录操作,并基于预设登录成功概率确定用户登录是否成功;
响应于登录成功,通过所述登录函数发送登录请求,接收服务器应答;
响应于登录不成功,设置所述测试用户的状态为开始状态;
所述登出功能采用如下方式进行测试:
响应于测试用户发送登出指示,调用登出函数,发送登出请求至服务器;
响应于接收到服务器的确定响应,断开与服务器的连接,设置所述测试用户的状态为开始状态,并清理和释放已使用的应用资源。
8.根据权利要求6所述的方法,其特征在于,所述行为组件采用如下方式进行测试:
在所述组件配置中,配置多个行为资产,每一行为资产对应测试用户的一种行为;
调用所述行为资产或行为资产组合,模拟测试用户在应用中的行为。
9.根据权利要求6所述的方法,其特征在于,所述地图切换组件采用如下方式进行测试:
在所述虚幻引擎中进行远程进程调用,调用时携带目的地坐标;
接收服务器发送的专用服务器,将所述虚幻引擎的地图切换至所述专用服务器,并同步用户数据;
其中,所述专用服务器由所述服务器基于目的地坐标和服务器中的原型进程确定。
10.根据权利要求6所述的方法,其特征在于,所述加好友组件采用如下方式进行测试:
从服务器请求加好友名单组,所述加好友名单组中包括一个或多个随机待测试用户;
在所述虚幻引擎中调用加好友测试命令,对所述加好友名单组中的待测试用户执行加好友操作。
11.根据权利要求6所述的方法,其特征在于,所述积分组件采用如下方式进行测试:
调用测试命令,为测试用户分配购车所需积分;
调用应用的积分接口,将所述积分属性添加至所述测试用户;
基于所述积分属性的参数重新计算所述测试用户的购买力评估值。
12.根据权利要求6所述的方法,其特征在于,所述发送消息组件采用如下方式进行测试:
获取待发送的广播消息,所述广播消息包括消息发送者标识、发送内容、发送频道中的至少一项;
调用测试命令,对所述广播消息进行广播。
13.根据权利要求6所述的方法,其特征在于,所述汽车竞赛组件采用如下方式进行测试:
获取测试用户的等级;
调用测试命令,确定与所述测试用户所绑车辆匹配的汽车竞赛对象参数;
基于所述汽车竞赛对象参数生成目标汽车竞赛对象,或者基于所述汽车竞赛对象参数在已有竞赛组中确定目标汽车竞赛对象;
调用测试命令,向所述测试用户发送比赛指令,并调用车控组件和所述目标汽车竞赛对象进行汽车竞赛,直至获取比赛结果;
响应于所述目标汽车竞赛对象被击败,调用测试命令,收集目标参考汽车对象的行车数据并添加至所述测试用户,帮助测试用户改进自身车技。
14.根据权利要求6所述的方法,其特征在于,所述组队出游组件采用如下方式进行测试:
向服务器请求并获取测试用户的用户列表;
从所述用户列表中选择一个或者多个用户,调用测试命令,发送组队出游请求;
接收所述一个或者多个用户发送的组队出游请求响应信息;
其中,所述组队出游请求响应信息由所述一个或者多个用户,调用测试命令根据预设应答概率确定,所述预设应答概率包括预设接收概率和/或预设拒绝概率。
15.根据权利要求6所述的方法,其特征在于,所述车控组件采用如下方式进行测试:
在所述组件配置中,配置多个按键资产,每一按键资产对应应用的一种车控按键;
调用所述按键资产或按键资产组合,模拟测试用户在应用中的车控操作,执行对应的车控。
16. 根据权利要求6所述的方法,其特征在于,所述升级组件采用如下方式进行测试:
调用测试命令,升级测试用户的级别;和/或
调用测试命令,将车辆升级所需的零件配置下发至测试用户;和/或
调用测试命令,升级测试用户的车辆或者测试用户的角色级别。
17.根据权利要求2所述的方法,其特征在于,所述实现系统事件的回调函数包括加载完成函数;
所述加载完成函数在场景加载完成后被所述虚幻引擎调用,所述配置实现系统事件的回调函数包括:
管理者遍历自己的测试用户组,调用每个测试用户的计时函数;
接收每个测试用户返回的当前场景的唯一标识,基于所述唯一标识确定每个测试用户所述场景;
基于所述场景设置每个测试用户的状态。
18.根据权利要求17所述的方法,其特征在于,所述实现系统事件的回调函数还包括网络状态失败函数;
所述网络状态失败函数在网络状态变为未连接时被所述虚幻引擎调用,所述配置实现系统事件的回调函数包括:
管理者遍历自己的测试用户组,将每个测试用户的状态设置为初始状态;
清理和释放已使用的应用资源。
19.根据权利要求1所述的方法,其特征在于,所述环境变量包括客户端判断环境变量、服务器判断环境变量、编辑器判断环境变量和退出判断环境变量。
20.根据权利要求1所述的方法,其特征在于,所述命令行的命令行入参包括:渲染开关、测试用户个数配置文件、测试用户组件配置文件、测试用户配置文件和测试配置文件。
21.根据权利要求1至20中的任意一项所述的方法,其特征在于,所述方法还包括:
生成测试报告;
其中,所述测试报告包括业务相关统计数据和业务无关统计数据。
22.一种基于虚幻引擎的测试装置,其特征在于,包括:
创建模块,被配置为在所述虚幻引擎中,为待测试应用创建测试主流程管理器,所述主流程管理器为继承于虚幻引擎的命令行基类的类;
配置模块,被配置为在所述主流程管理器的入口函数中创建测试对象,配置实现系统事件的回调函数并设置环境变量,其中,所述测试对象包括测试用户和管理者,每个管理者包括一个测试用户组,每个测试用户组中至少包括一个测试用户;
所述配置模块还被配置为在所述入口函数中配置循环参数;
编译模块,被配置为调用所述入口函数,基于所述测试对象、回调函数以及环境变量编译所述待测试应用得到所述待测试应用的可执行文件;
测试模块,被配置为在所述虚幻引擎中通过命令行启动所述可执行文件,基于所述循环参数调用计时函数,在每次循环中对所述待测试应用进行测试。
23.一种电子设备,包括存储器、处理器以及存储在所述存储器中并且可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至21中任一项所述方法的步骤。
24.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至21中任一项所述方法的步骤。
CN202311269872.3A 2023-09-28 2023-09-28 基于虚幻引擎的测试方法、装置、电子设备及存储介质 Active CN117234935B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311269872.3A CN117234935B (zh) 2023-09-28 2023-09-28 基于虚幻引擎的测试方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311269872.3A CN117234935B (zh) 2023-09-28 2023-09-28 基于虚幻引擎的测试方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN117234935A CN117234935A (zh) 2023-12-15
CN117234935B true CN117234935B (zh) 2024-05-14

Family

ID=89098118

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311269872.3A Active CN117234935B (zh) 2023-09-28 2023-09-28 基于虚幻引擎的测试方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117234935B (zh)

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105204988A (zh) * 2014-06-30 2015-12-30 北京安兔兔科技有限公司 电子设备游戏性能的测试方法及系统
CN105204980A (zh) * 2014-05-26 2015-12-30 腾讯科技(深圳)有限公司 一种虚幻引擎软件的测试方法,及测试设备
US10282280B1 (en) * 2018-03-29 2019-05-07 Electronic Arts Inc. Automated scalable video game testing system
CN110275836A (zh) * 2019-06-27 2019-09-24 深圳市腾讯信息技术有限公司 虚幻引擎应用的安全测试方法、装置及存储介质
US10430921B1 (en) * 2019-02-19 2019-10-01 Umajin Inc. Multi-user application system environment engine
CN112318513A (zh) * 2020-11-05 2021-02-05 达闼机器人有限公司 一种机器人技能调试方法、装置、存储介质及电子设备
CN112988304A (zh) * 2021-03-25 2021-06-18 腾讯科技(深圳)有限公司 一种操作方式的记录方法、装置、电子设备和存储介质
CN113018870A (zh) * 2021-04-17 2021-06-25 腾讯科技(深圳)有限公司 一种数据处理方法、装置及计算机可读存储介质
CN114185773A (zh) * 2021-11-19 2022-03-15 腾讯数码(天津)有限公司 程序测试方法、装置、电子设备和计算机可读存储介质
CN114191822A (zh) * 2021-11-19 2022-03-18 腾讯科技(深圳)有限公司 一种测试方法、装置、计算机设备、存储介质和产品
CN114490375A (zh) * 2022-01-24 2022-05-13 腾讯科技(深圳)有限公司 应用程序的性能测试方法、装置、设备及存储介质
CN114937121A (zh) * 2022-04-26 2022-08-23 深圳市商汤科技有限公司 仿真测试方法及装置、电子设备和存储介质
DE202022106107U1 (de) * 2022-10-31 2022-11-10 Mohan Sellappa Gounder System zur Prüfung von automatisierten Fahrsystemen der Stufe 3 (ADS)
CN115510454A (zh) * 2022-10-12 2022-12-23 网易(杭州)网络有限公司 游戏测试方法、装置、电子设备及存储介质
CN115525563A (zh) * 2022-10-19 2022-12-27 北京字跳网络技术有限公司 一种测试方法、装置、计算机设备和存储介质
WO2023280409A1 (de) * 2021-07-08 2023-01-12 Dspace Gmbh Virtuelle testumgebung für ein fahrassistenzsystem mit spieltheoretisch modellierten verkehrsteilnehmern

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040230404A1 (en) * 2002-08-19 2004-11-18 Messmer Richard Paul System and method for optimizing simulation of a discrete event process using business system data
US11237948B2 (en) * 2017-07-26 2022-02-01 Lionbridge Technologies, Llc Rendering engine component abstraction system
US11010510B2 (en) * 2019-04-30 2021-05-18 Disney Enterprises, Inc. Soft-real-time hub providing data transport for processor-in-the-loop (PIL) simulations

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105204980A (zh) * 2014-05-26 2015-12-30 腾讯科技(深圳)有限公司 一种虚幻引擎软件的测试方法,及测试设备
CN105204988A (zh) * 2014-06-30 2015-12-30 北京安兔兔科技有限公司 电子设备游戏性能的测试方法及系统
US10282280B1 (en) * 2018-03-29 2019-05-07 Electronic Arts Inc. Automated scalable video game testing system
US10430921B1 (en) * 2019-02-19 2019-10-01 Umajin Inc. Multi-user application system environment engine
CN110275836A (zh) * 2019-06-27 2019-09-24 深圳市腾讯信息技术有限公司 虚幻引擎应用的安全测试方法、装置及存储介质
CN112318513A (zh) * 2020-11-05 2021-02-05 达闼机器人有限公司 一种机器人技能调试方法、装置、存储介质及电子设备
CN112988304A (zh) * 2021-03-25 2021-06-18 腾讯科技(深圳)有限公司 一种操作方式的记录方法、装置、电子设备和存储介质
CN113018870A (zh) * 2021-04-17 2021-06-25 腾讯科技(深圳)有限公司 一种数据处理方法、装置及计算机可读存储介质
WO2023280409A1 (de) * 2021-07-08 2023-01-12 Dspace Gmbh Virtuelle testumgebung für ein fahrassistenzsystem mit spieltheoretisch modellierten verkehrsteilnehmern
CN114185773A (zh) * 2021-11-19 2022-03-15 腾讯数码(天津)有限公司 程序测试方法、装置、电子设备和计算机可读存储介质
CN114191822A (zh) * 2021-11-19 2022-03-18 腾讯科技(深圳)有限公司 一种测试方法、装置、计算机设备、存储介质和产品
CN114490375A (zh) * 2022-01-24 2022-05-13 腾讯科技(深圳)有限公司 应用程序的性能测试方法、装置、设备及存储介质
CN114937121A (zh) * 2022-04-26 2022-08-23 深圳市商汤科技有限公司 仿真测试方法及装置、电子设备和存储介质
CN115510454A (zh) * 2022-10-12 2022-12-23 网易(杭州)网络有限公司 游戏测试方法、装置、电子设备及存储介质
CN115525563A (zh) * 2022-10-19 2022-12-27 北京字跳网络技术有限公司 一种测试方法、装置、计算机设备和存储介质
DE202022106107U1 (de) * 2022-10-31 2022-11-10 Mohan Sellappa Gounder System zur Prüfung von automatisierten Fahrsystemen der Stufe 3 (ADS)

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
基于GNSS硬件在环的多源融合定位高逼真仿真方法;夏宋鹏程;裴凌;朱一帆;邹丹平;陈新;陈雷;;中国惯性技术学报;20200415(02);全文 *
基于Unity3D的"魔域"手机游戏客户端的设计与实现;王鹏;中国优秀硕士学位论文全文数据库;20180715(第2018/07期);I138-1270 *
自动驾驶整车在环仿真平台研究及模拟实现;马志成;王立;李志斌;;汽车实用技术;20200215(03);全文 *

Also Published As

Publication number Publication date
CN117234935A (zh) 2023-12-15

Similar Documents

Publication Publication Date Title
US10999317B2 (en) Blockchain tracking of virtual universe traversal results
CN111726399B (zh) Docker容器安全访问方法及装置
CN110399307A (zh) 一种测试方法、测试平台及目标服务器
CN109995877A (zh) 信息推送方法和装置
CN112784989B (zh) 推理系统、推理方法、电子设备及计算机存储介质
CN108023808A (zh) 应用程序中的消息分发方法及装置
CN111345008B (zh) 移动边缘主机服务通知方法和装置
US9218212B2 (en) Pairing physical devices to virtual devices to create an immersive environment
CN110035004A (zh) 一种用户名片分享方法、好友添加方法和相关装置
CN106851779A (zh) 一种识别接入点和热点的方法及移动终端
CN111163130A (zh) 一种网络服务系统及其数据传输方法
CN104253869A (zh) 一种黑名单共享方法、更新方法及装置
CN112346751B (zh) 应用程序的安装方法、装置、电子设备和存储介质
CN109862078A (zh) 客户端登录方法、装置和系统、存储介质及电子装置
CN106358065A (zh) 一种多媒体信息处理方法和系统
CN105553831A (zh) 消息投放方法和系统
CN110535755A (zh) 一种删除会话消息的方法与设备
CN117234935B (zh) 基于虚幻引擎的测试方法、装置、电子设备及存储介质
CN111683372B (zh) 属性信息的处理方法、装置、处理器及终端
CN111580883A (zh) 应用程序启动方法、装置、计算机系统和介质
CN116560691A (zh) 一种数据处理方法、装置、计算机设备以及可读存储介质
CN107864488B (zh) 一种基站业务自动测试的方法、装置及系统
KR20210002979A (ko) 알림 프리셋을 이용한 알림 처리 방법 및 장치
CN110493120A (zh) 一种用于发送设备操作指令的方法与设备
CN114979128A (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
GR01 Patent grant
GR01 Patent grant